diff options
author | Michael Hayes <m.hayes@elec.canterbury.ac.nz> | 1999-03-15 01:52:49 +0000 |
---|---|---|
committer | Michael Hayes <m.hayes@gcc.gnu.org> | 1999-03-15 01:52:49 +0000 |
commit | 2dfa9a87f6860348995b47f2432f851e3ce4d6f2 (patch) | |
tree | 7fe0df0111a98b6f7af1daa0cbded32b22f3ac51 /gcc/rtlanal.c | |
parent | 7ae575286e5c6b27aa69f2d6d80b0497dbfabd10 (diff) | |
download | gcc-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.c | 24 |
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; +} |