jump.c (duplicate_loop_exit_test): Do not duplicate the loop exit test if the exit code has an insn with ASM_OPERANDS.

* jump.c (duplicate_loop_exit_test): Do not duplicate the loop exit
        test if the exit code has an insn with ASM_OPERANDS.

From-SVN: r21017
This commit is contained in:
Jeffrey A Law 1998-07-08 23:37:50 +00:00 committed by Jeff Law
parent a550815273
commit 752e74f910
2 changed files with 10 additions and 1 deletions

View File

@ -1,5 +1,8 @@
Wed Jul 8 21:43:14 1998 Jeffrey A Law (law@cygnus.com)
* jump.c (duplicate_loop_exit_test): Do not duplicate the loop exit
test if the exit code has an insn with ASM_OPERANDS.
* i386/cygwin32.h (STDIO_PROTO): Fix typo.
* m32r.h (STDIO_PROTO): Fix typo.

View File

@ -2380,6 +2380,11 @@ duplicate_loop_exit_test (loop_start)
is a NOTE_INSN_LOOP_BEG because this means we have a nested loop
is a NOTE_INSN_BLOCK_{BEG,END} because duplicating these notes
are not valid
We also do not do this if we find an insn with ASM_OPERANDS. While
this restriction should not be necessary, copying an insn with
ASM_OPERANDS can confuse asm_noperands in some cases.
Also, don't do this if the exit code is more than 20 insns. */
@ -2422,7 +2427,8 @@ duplicate_loop_exit_test (loop_start)
case INSN:
if (++num_insns > 20
|| find_reg_note (insn, REG_RETVAL, NULL_RTX)
|| find_reg_note (insn, REG_LIBCALL, NULL_RTX))
|| find_reg_note (insn, REG_LIBCALL, NULL_RTX)
|| asm_noperands (PATTERN (insn)))
return 0;
break;
default: