diff options
author | Pat Haugen <pthaugen@us.ibm.com> | 2011-02-11 20:52:55 +0000 |
---|---|---|
committer | Pat Haugen <pthaugen@gcc.gnu.org> | 2011-02-11 20:52:55 +0000 |
commit | 3f82421f9c460408f21dc8a68079957aada10c0e (patch) | |
tree | 7fab30b82e8b3e6630893a048325c907c25d1e18 /gcc/postreload.c | |
parent | f33d8408d08064367b0f8d9d29c46dbd1585f95e (diff) | |
download | gcc-3f82421f9c460408f21dc8a68079957aada10c0e.zip gcc-3f82421f9c460408f21dc8a68079957aada10c0e.tar.gz gcc-3f82421f9c460408f21dc8a68079957aada10c0e.tar.bz2 |
re PR rtl-optimization/47614 (cpu2000 benchmark 301.apsi fails with revision 169782)
PR rtl-optimization/47614
* rtl.h (check_for_inc_dec): Declare.
* dse.c (check_for_inc_dec): Externalize...
* postreload.c (reload_cse_simplify): ...use it before deleting stmt.
(reload_cse_simplify_operands): Don't simplify opnds with side effects.
* testsuite/gfortran.dg/pr47614.f: New.
From-SVN: r170059
Diffstat (limited to 'gcc/postreload.c')
-rw-r--r-- | gcc/postreload.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/postreload.c b/gcc/postreload.c index 5cd26a7..a423410 100644 --- a/gcc/postreload.c +++ b/gcc/postreload.c @@ -112,6 +112,7 @@ reload_cse_simplify (rtx insn, rtx testreg) if (REG_P (value) && ! REG_FUNCTION_VALUE_P (value)) value = 0; + check_for_inc_dec (insn); delete_insn_and_edges (insn); return; } @@ -163,6 +164,7 @@ reload_cse_simplify (rtx insn, rtx testreg) if (i < 0) { + check_for_inc_dec (insn); delete_insn_and_edges (insn); /* We're done with this insn. */ return; @@ -476,6 +478,8 @@ reload_cse_simplify_operands (rtx insn, rtx testreg) continue; } #endif /* LOAD_EXTEND_OP */ + if (side_effects_p (op)) + continue; v = cselib_lookup (op, recog_data.operand_mode[i], 0, VOIDmode); if (! v) continue; |