Commit 51928907 by Hans-Peter Nilsson Committed by Hans-Peter Nilsson

regmove.c (optimize_reg_copy_1): Do not replace a hard register in an asm.

	* regmove.c (optimize_reg_copy_1): Do not replace a hard register
	in an asm.

From-SVN: r63270
parent 9ac121af
2003-02-22 Hans-Peter Nilsson <hp@axis.com>
* regmove.c (optimize_reg_copy_1): Do not replace a hard register
in an asm.
2003-02-21 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* Makefile.in (ggc-common.o): Depend on $(PARAMS_H)
......
......@@ -433,6 +433,16 @@ optimize_reg_copy_1 (insn, dest, src)
continue;
if (reg_set_p (src, p) || reg_set_p (dest, p)
/* If SRC is an asm-declared register, it must not be replaced
in any asm. Unfortunately, the REG_EXPR tree for the asm
variable may be absent in the SRC rtx, so we can't check the
actual register declaration easily (the asm operand will have
it, though). To avoid complicating the test for a rare case,
we just don't perform register replacement for a hard reg
mentioned in an asm. */
|| (sregno < FIRST_PSEUDO_REGISTER
&& asm_noperands (PATTERN (p)) >= 0
&& reg_overlap_mentioned_p (src, PATTERN (p)))
/* Don't change a USE of a register. */
|| (GET_CODE (PATTERN (p)) == USE
&& reg_overlap_mentioned_p (src, XEXP (PATTERN (p), 0))))
......
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