unroll.c (loop_iterations): Give up on jumps with null JUMP_LABEL while scanning for multiple back edges.
2001-12-01 Olivier Hainque <hainque@act-europe.fr> * unroll.c (loop_iterations): Give up on jumps with null JUMP_LABEL while scanning for multiple back edges. From-SVN: r47510
This commit is contained in:
parent
8a155ecc2a
commit
a22455dfa1
@ -1,3 +1,8 @@
|
||||
2001-12-01 Olivier Hainque <hainque@act-europe.fr>
|
||||
|
||||
* unroll.c (loop_iterations): Give up on jumps with null JUMP_LABEL
|
||||
while scanning for multiple back edges.
|
||||
|
||||
2001-12-01 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
|
||||
|
||||
* ginclude/ppc-asm.h (JUMP_TARGET): New macro.
|
||||
|
35
gcc/unroll.c
35
gcc/unroll.c
@ -3551,18 +3551,31 @@ loop_iterations (loop)
|
||||
|
||||
do
|
||||
{
|
||||
if (GET_CODE (temp) == JUMP_INSN
|
||||
/* Previous unrolling may have generated new insns not covered
|
||||
by the uid_luid array. */
|
||||
&& INSN_UID (JUMP_LABEL (temp)) < max_uid_for_loop
|
||||
/* Check if we jump back into the loop body. */
|
||||
&& INSN_LUID (JUMP_LABEL (temp)) > INSN_LUID (loop->top)
|
||||
&& INSN_LUID (JUMP_LABEL (temp)) < INSN_LUID (loop->cont))
|
||||
if (GET_CODE (temp) == JUMP_INSN)
|
||||
{
|
||||
if (loop_dump_stream)
|
||||
fprintf (loop_dump_stream,
|
||||
"Loop iterations: Loop has multiple back edges.\n");
|
||||
return 0;
|
||||
/* There are some kinds of jumps we can't deal with easily. */
|
||||
if (JUMP_LABEL (temp) == 0)
|
||||
{
|
||||
if (loop_dump_stream)
|
||||
fprintf
|
||||
(loop_dump_stream,
|
||||
"Loop iterations: Jump insn has null JUMP_LABEL.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (/* Previous unrolling may have generated new insns not
|
||||
covered by the uid_luid array. */
|
||||
INSN_UID (JUMP_LABEL (temp)) < max_uid_for_loop
|
||||
/* Check if we jump back into the loop body. */
|
||||
&& 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);
|
||||
|
Loading…
Reference in New Issue
Block a user