unroll.c (loop_iterations): Extend check for multiple back edges.
2001-10-08 Franz Sirl <Franz.Sirl-kernel@lauterbach.com> * unroll.c (loop_iterations): Extend check for multiple back edges. From-SVN: r46099
This commit is contained in:
parent
0bdf7869bf
commit
9d1e9f93a9
|
@ -1,3 +1,7 @@
|
|||
2001-10-08 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
|
||||
|
||||
* unroll.c (loop_iterations): Extend check for multiple back edges.
|
||||
|
||||
2001-10-08 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* langhooks.h: New file.
|
||||
|
|
21
gcc/unroll.c
21
gcc/unroll.c
|
@ -3519,6 +3519,27 @@ loop_iterations (loop)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* If there are multiple conditionalized loop exit tests, they may jump
|
||||
back to differing CODE_LABELs. */
|
||||
if (loop->top && loop->cont)
|
||||
{
|
||||
rtx temp = PREV_INSN (last_loop_insn);
|
||||
|
||||
do
|
||||
{
|
||||
if (GET_CODE (temp) == JUMP_INSN
|
||||
&& INSN_LUID (JUMP_LABEL (temp)) > INSN_LUID (loop->top)
|
||||
&& INSN_LUID (JUMP_LABEL (temp)) < INSN_LUID (loop->cont))
|
||||
{
|
||||
if (loop_dump_stream)
|
||||
fprintf (loop_dump_stream,
|
||||
"Loop iterations: Loop has multiple back edges.\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
while ((temp = PREV_INSN (temp)) != loop->cont);
|
||||
}
|
||||
|
||||
/* Find the iteration variable. If the last insn is a conditional
|
||||
branch, and the insn before tests a register value, make that the
|
||||
iteration variable. */
|
||||
|
|
Loading…
Reference in New Issue