regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if SRC->DEST replacement failed anyway.

2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>

	* regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
	SRC->DEST replacement failed anyway.

From-SVN: r123323
This commit is contained in:
Andreas Krebbel 2007-03-29 06:57:42 +00:00 committed by Andreas Krebbel
parent 4beb5c4bd1
commit 040f69ebaa
2 changed files with 13 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2007-03-29 Andreas Krebbel <krebbel1@de.ibm.com>
* regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
SRC->DEST replacement failed anyway.
2007-03-28 Mike Stump <mrs@apple.com>
* config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.

View File

@ -471,15 +471,15 @@ optimize_reg_copy_1 (rtx insn, rtx dest, rtx src)
if (sregno < FIRST_PSEUDO_REGISTER
&& reg_mentioned_p (dest, PATTERN (q)))
failed = 1;
/* Attempt to replace all uses. */
else if (!validate_replace_rtx (src, dest, q))
failed = 1;
/* Replace all uses and make sure that the register
isn't still present. */
else if (validate_replace_rtx (src, dest, q)
&& (sregno >= FIRST_PSEUDO_REGISTER
|| ! reg_overlap_mentioned_p (src,
PATTERN (q))))
;
else
/* If this succeeded, but some part of the register
is still present, undo the replacement. */
else if (sregno < FIRST_PSEUDO_REGISTER
&& reg_overlap_mentioned_p (src, PATTERN (q)))
{
validate_replace_rtx (dest, src, q);
failed = 1;