emit-rtl.c (try_split): Avoid infinite loop if the split results in a sequence that contains the...

* emit-rtl.c (try_split): Avoid infinite loop if the split
	results in a sequence that contains the original insn.

From-SVN: r33143
This commit is contained in:
Clinton Popetz 2000-04-14 00:41:31 +00:00 committed by Clinton Popetz
parent 460f6b7194
commit 4b5e8abe18
2 changed files with 14 additions and 1 deletions

View File

@ -1,3 +1,8 @@
Thu Apr 13 19:39:56 2000 Clinton Popetz <cpopetz@cygnus.com>
* emit-rtl.c (try_split): Avoid infinite loop if the split
results in a sequence that contains the original insn.
2000-04-13 Andreas Jaeger <aj@suse.de>
* config/mips/mips.c (expand_block_move): Pass alignment

View File

@ -2336,10 +2336,18 @@ try_split (pat, trial, last)
it, in turn, will be split (SFmode on the 29k is an example). */
if (GET_CODE (seq) == SEQUENCE)
{
int i;
/* Avoid infinite loop if any insn of the result matches
the original pattern. */
for (i = 0; i < XVECLEN (seq, 0); i++)
if (GET_CODE (XVECEXP (seq, 0, i)) == INSN
&& rtx_equal_p (PATTERN (XVECEXP (seq, 0, i)), pat))
return trial;
/* If we are splitting a JUMP_INSN, look for the JUMP_INSN in
SEQ and copy our JUMP_LABEL to it. If JUMP_LABEL is non-zero,
increment the usage count so we don't delete the label. */
int i;
if (GET_CODE (trial) == JUMP_INSN)
for (i = XVECLEN (seq, 0) - 1; i >= 0; i--)