Commit 218aa620 by Jan Hubicka Committed by Jan Hubicka

optabs.c (emit_no_conflict_block, [...]): Avoid nesting of libcall regions.

	* optabs.c (emit_no_conflict_block, emit_libcall_block): Avoid nesting
	of libcall regions.

From-SVN: r51477
parent e27a4eaf
Wed Mar 27 23:11:35 CET 2002 Jan Hubicka <jh@suse.cz>
* optabs.c (emit_no_conflict_block, emit_libcall_block): Avoid nesting
of libcall regions.
Wed Mar 27 22:54:14 CET 2002 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> Wed Mar 27 22:54:14 CET 2002 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
* cfgrtl.c (merge_blocks_nomove): Use set_block_for_insn instead of * cfgrtl.c (merge_blocks_nomove): Use set_block_for_insn instead of
......
...@@ -2739,11 +2739,18 @@ emit_no_conflict_block (insns, target, op0, op1, equiv) ...@@ -2739,11 +2739,18 @@ emit_no_conflict_block (insns, target, op0, op1, equiv)
these from the list. */ these from the list. */
for (insn = insns; insn; insn = next) for (insn = insns; insn; insn = next)
{ {
rtx set = 0; rtx set = 0, note;
int i; int i;
next = NEXT_INSN (insn); next = NEXT_INSN (insn);
/* Some ports (cris) create an libcall regions at their own. We must
avoid any potential nesting of LIBCALLs. */
if ((note = find_reg_note (insn, REG_LIBCALL, NULL)) != NULL)
remove_note (insn, note);
if ((note = find_reg_note (insn, REG_RETVAL, NULL)) != NULL)
remove_note (insn, note);
if (GET_CODE (PATTERN (insn)) == SET || GET_CODE (PATTERN (insn)) == USE if (GET_CODE (PATTERN (insn)) == SET || GET_CODE (PATTERN (insn)) == USE
|| GET_CODE (PATTERN (insn)) == CLOBBER) || GET_CODE (PATTERN (insn)) == CLOBBER)
set = PATTERN (insn); set = PATTERN (insn);
...@@ -2906,6 +2913,14 @@ emit_libcall_block (insns, target, result, equiv) ...@@ -2906,6 +2913,14 @@ emit_libcall_block (insns, target, result, equiv)
for (insn = insns; insn; insn = next) for (insn = insns; insn; insn = next)
{ {
rtx set = single_set (insn); rtx set = single_set (insn);
rtx note;
/* Some ports (cris) create an libcall regions at their own. We must
avoid any potential nesting of LIBCALLs. */
if ((note = find_reg_note (insn, REG_LIBCALL, NULL)) != NULL)
remove_note (insn, note);
if ((note = find_reg_note (insn, REG_RETVAL, NULL)) != NULL)
remove_note (insn, note);
next = NEXT_INSN (insn); next = NEXT_INSN (insn);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment