mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-10 18:59:52 +08:00
final.c (shorten_branches): Don't add an alignment for loops that have no label inside.
* final.c (shorten_branches): Don't add an alignment for loops that have no label inside. From-SVN: r28517
This commit is contained in:
parent
45fa5f9f14
commit
edd6ede777
@ -1,3 +1,8 @@
|
||||
Wed Aug 4 20:45:04 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
* final.c (shorten_branches): Don't add an alignment for loops
|
||||
that have no label inside.
|
||||
|
||||
Wed Aug 4 16:39:24 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* builtins.c (expand_builtin_memcmp, expand_builtin_strcmp): Wrap
|
||||
|
32
gcc/final.c
32
gcc/final.c
@ -1113,18 +1113,32 @@ shorten_branches (first)
|
||||
&& NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_BEG)
|
||||
{
|
||||
rtx label;
|
||||
int nest = 0;
|
||||
|
||||
/* Search for the label that starts the loop.
|
||||
Don't skip past the end of the loop, since that could
|
||||
lead to putting an alignment where it does not belong.
|
||||
However, a label after a nested (non-)loop would be OK. */
|
||||
for (label = insn; label; label = NEXT_INSN (label))
|
||||
if (GET_CODE (label) == CODE_LABEL)
|
||||
{
|
||||
log = LOOP_ALIGN (insn);
|
||||
if (max_log < log)
|
||||
{
|
||||
max_log = log;
|
||||
max_skip = LOOP_ALIGN_MAX_SKIP;
|
||||
}
|
||||
{
|
||||
if (GET_CODE (label) == NOTE
|
||||
&& NOTE_LINE_NUMBER (label) == NOTE_INSN_LOOP_BEG)
|
||||
nest++;
|
||||
else if (GET_CODE (label) == NOTE
|
||||
&& NOTE_LINE_NUMBER (label) == NOTE_INSN_LOOP_END
|
||||
&& --nest == 0)
|
||||
break;
|
||||
}
|
||||
else if (GET_CODE (label) == CODE_LABEL)
|
||||
{
|
||||
log = LOOP_ALIGN (insn);
|
||||
if (max_log < log)
|
||||
{
|
||||
max_log = log;
|
||||
max_skip = LOOP_ALIGN_MAX_SKIP;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user