diff options
author | Wei Guozhi <carrot@google.com> | 2011-09-20 00:57:39 +0000 |
---|---|---|
committer | Wei Guozhi <carrot@gcc.gnu.org> | 2011-09-20 00:57:39 +0000 |
commit | 0323000245b73d7cd6e0935e71b3348963569ac1 (patch) | |
tree | 21b7fbaa80d5949dc07beda56cbbe7ef812c4ea6 /gcc | |
parent | e31f8881c864e39c97de9522c12c74be80fac087 (diff) | |
download | gcc-0323000245b73d7cd6e0935e71b3348963569ac1.zip gcc-0323000245b73d7cd6e0935e71b3348963569ac1.tar.gz gcc-0323000245b73d7cd6e0935e71b3348963569ac1.tar.bz2 |
re PR rtl-optimization/49452 (comp-goto-2.c regresses in testing)
PR rtl-optimization/49452
* postreload.c (reload_combine): Invalidate use information when across
volatile insn.
From-SVN: r178995
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/postreload.c | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ade9a4b..1f2a714 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-09-20 Wei Guozhi <carrot@google.com> + + PR rtl-optimization/49452 + * postreload.c (reload_combine): Invalidate use information when across + volatile insn. + 2011-09-19 Maxim Kuvyrkov <maxim@codesourcery.com> * haifa-sched.c (has_edge_p, prev_non_location_insn, check_cfg): diff --git a/gcc/postreload.c b/gcc/postreload.c index 0e50d85..8994366 100644 --- a/gcc/postreload.c +++ b/gcc/postreload.c @@ -1312,7 +1312,8 @@ reload_combine (void) is and then later disable any optimization that would cross it. */ if (LABEL_P (insn)) last_label_ruid = reload_combine_ruid; - else if (BARRIER_P (insn)) + else if (BARRIER_P (insn) + || (INSN_P (insn) && volatile_insn_p (PATTERN (insn)))) for (r = 0; r < FIRST_PSEUDO_REGISTER; r++) if (! fixed_regs[r]) reg_state[r].use_index = RELOAD_COMBINE_MAX_USES; |