diff options
author | Jeff Law <law@gcc.gnu.org> | 1996-04-08 14:31:32 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1996-04-08 14:31:32 -0600 |
commit | b24884cd276925828c7e35e12b9e407ad32a1e70 (patch) | |
tree | e96c29160d302b92c3cb56fc3f8220e61a404cdd /gcc/flow.c | |
parent | 3066b88a9f1415d86d6b7ef05cd95e1e9e1f1f4c (diff) | |
download | gcc-b24884cd276925828c7e35e12b9e407ad32a1e70.zip gcc-b24884cd276925828c7e35e12b9e407ad32a1e70.tar.gz gcc-b24884cd276925828c7e35e12b9e407ad32a1e70.tar.bz2 |
flow.c (find_auto_inc): Also make sure there aren't any sets of the incremented register between the...
* flow.c (find_auto_inc): Also make sure there aren't
any sets of the incremented register between the memory
reference and increment insn.
From-SVN: r11682
Diffstat (limited to 'gcc/flow.c')
-rw-r--r-- | gcc/flow.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -2231,7 +2231,11 @@ find_auto_inc (needed, x, insn) else if (GET_CODE (q) == REG /* PREV_INSN used here to check the semi-open interval [insn,incr). */ - && ! reg_used_between_p (q, PREV_INSN (insn), incr)) + && ! reg_used_between_p (q, PREV_INSN (insn), incr) + /* We must also check for sets of q as q may be + a call clobbered hard register and there may + be a call between PREV_INSN (insn) and incr. */ + && ! reg_set_between_p (q, PREV_INSN (insn), incr)) { /* We have *p followed sometime later by q = p+size. Both p and q must be live afterward, |