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:
Olivier Hainque 2001-12-01 13:04:16 +01:00 committed by Franz Sirl
parent 8a155ecc2a
commit a22455dfa1
2 changed files with 29 additions and 11 deletions

View File

@ -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.

View File

@ -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);