Commit 4d450e9a by Richard Earnshaw Committed by Richard Earnshaw

re PR rtl-optimization/10592 ([arm] caller-save incorrectly handles a reloaded SET_DEST operand)

PR optimization/10592
* caller-save.c (mark_referenced_regs): Don't short-circuit a reg
or subreg in SET_DEST if it isn't a hard register.

From-SVN: r74747
parent 77e86c91
2003-12-17 Richard Earnshaw <rearnsha@arm.com>
PR optimization/10592
* caller-save.c (mark_referenced_regs): Don't short-circuit a reg
or subreg in SET_DEST if it isn't a hard register.
2003-12-17 David Edelsohn <edelsohn@gnu.org> 2003-12-17 David Edelsohn <edelsohn@gnu.org>
* collect2.c (main): Add -fno-profile-arcs -fno-test-coverage * collect2.c (main): Add -fno-profile-arcs -fno-test-coverage
......
...@@ -568,8 +568,10 @@ mark_referenced_regs (rtx x) ...@@ -568,8 +568,10 @@ mark_referenced_regs (rtx x)
{ {
x = SET_DEST (x); x = SET_DEST (x);
code = GET_CODE (x); code = GET_CODE (x);
if (code == REG || code == PC || code == CC0 if ((code == REG && REGNO (x) < FIRST_PSEUDO_REGISTER)
|| code == PC || code == CC0
|| (code == SUBREG && GET_CODE (SUBREG_REG (x)) == REG || (code == SUBREG && GET_CODE (SUBREG_REG (x)) == REG
&& REGNO (SUBREG_REG (x)) < FIRST_PSEUDO_REGISTER
/* If we're setting only part of a multi-word register, /* If we're setting only part of a multi-word register,
we shall mark it as referenced, because the words we shall mark it as referenced, because the words
that are not being set should be restored. */ that are not being set should be restored. */
......
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