aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtlanal.c
diff options
context:
space:
mode:
authorMichael Hayes <m.hayes@elec.canterbury.ac.nz>1999-03-15 01:52:49 +0000
committerMichael Hayes <m.hayes@gcc.gnu.org>1999-03-15 01:52:49 +0000
commit2dfa9a87f6860348995b47f2432f851e3ce4d6f2 (patch)
tree7fe0df0111a98b6f7af1daa0cbded32b22f3ac51 /gcc/rtlanal.c
parent7ae575286e5c6b27aa69f2d6d80b0497dbfabd10 (diff)
downloadgcc-2dfa9a87f6860348995b47f2432f851e3ce4d6f2.zip
gcc-2dfa9a87f6860348995b47f2432f851e3ce4d6f2.tar.gz
gcc-2dfa9a87f6860348995b47f2432f851e3ce4d6f2.tar.bz2
rtlanal.c (auto_inc_p): New function.
* rtlanal.c (auto_inc_p): New function. * rtl.h (auto_inc_p): Prototype it. * reload1.c (add_auto_inc_notes): New function. (reload): Strip REG_INC notes and call add_auto_inc_notes for each insn to restore them correctly. From-SVN: r25774
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r--gcc/rtlanal.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index d061273..8347849 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -2235,3 +2235,27 @@ regno_use_in (regno, x)
return NULL_RTX;
}
+
+
+/* Return 1 if X is an autoincrement side effect and the register is
+ not the stack pointer. */
+int
+auto_inc_p (x)
+ rtx x;
+{
+ switch (GET_CODE (x))
+ {
+ case PRE_INC:
+ case POST_INC:
+ case PRE_DEC:
+ case POST_DEC:
+ case PRE_MODIFY:
+ case POST_MODIFY:
+ /* There are no REG_INC notes for SP. */
+ if (XEXP (x, 0) != stack_pointer_rtx)
+ return 1;
+ default:
+ break;
+ }
+ return 0;
+}