aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2008-11-21 21:19:34 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2008-11-21 21:19:34 +0000
commit0e51e769b52cb4c91339a0eef5fa6a70c0ee2dde (patch)
treea1ca0a56e67cbb52b3a6103157469400ab09d65a /gcc
parent015e1120e863d3273513a5f9db1a85119b4eb701 (diff)
downloadgcc-0e51e769b52cb4c91339a0eef5fa6a70c0ee2dde.zip
gcc-0e51e769b52cb4c91339a0eef5fa6a70c0ee2dde.tar.gz
gcc-0e51e769b52cb4c91339a0eef5fa6a70c0ee2dde.tar.bz2
caller-save.c (insert_one_insn): Take into account REG_INC notes for the liveness computation of the new insn.
* caller-save.c (insert_one_insn): Take into account REG_INC notes for the liveness computation of the new insn. From-SVN: r142099
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/caller-save.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fc1f691..1f0b3fc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2008-11-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * caller-save.c (insert_one_insn): Take into account REG_INC notes
+ for the liveness computation of the new insn.
+
2008-11-21 DJ Delorie <dj@redhat.com>
* config/stormy16/stormy16.md (movqi_internal, movhi_internal):
diff --git a/gcc/caller-save.c b/gcc/caller-save.c
index 2d0925a..002f760 100644
--- a/gcc/caller-save.c
+++ b/gcc/caller-save.c
@@ -1216,10 +1216,12 @@ insert_one_insn (struct insn_chain *chain, int before_p, int code, rtx pat)
/* ??? It would be nice if we could exclude the already / still saved
registers from the live sets. */
COPY_REG_SET (&new_chain->live_throughout, &chain->live_throughout);
- /* Registers that die in CHAIN->INSN still live in the new insn. */
+ /* Registers that die in CHAIN->INSN still live in the new insn.
+ Likewise for those which are autoincremented or autodecremented. */
for (link = REG_NOTES (chain->insn); link; link = XEXP (link, 1))
{
- if (REG_NOTE_KIND (link) == REG_DEAD)
+ enum reg_note kind = REG_NOTE_KIND (link);
+ if (kind == REG_DEAD || kind == REG_INC)
{
rtx reg = XEXP (link, 0);
int regno, i;