Don't make something with an autoinc an equivalencing insn (PR69752).
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 15 Feb 2016 12:04:13 +0000 (12:04 +0000)
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 15 Feb 2016 12:04:13 +0000 (12:04 +0000)
PR rtl-optimization/69752
* ira.c (update_equiv_regs): When looking for more than a single SET,
also take other side effects into account.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233423 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/ira.c

index 45f7b6e..a50c207 100644 (file)
@@ -1,3 +1,9 @@
+2016-02-15  Bernd Schmidt  <bschmidt@redhat.com>
+
+       PR rtl-optimization/69752
+       * ira.c (update_equiv_regs): When looking for more than a single SET,
+       also take other side effects into account.
+
 2016-02-15  Marcin Koƛcielnicki  <koriakin@0x04.net>
 
        * config/s390/s390.c (s390_function_profiler): Add a new sequence
index 81d1d33..6b4a104 100644 (file)
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -3392,7 +3392,8 @@ update_equiv_regs (void)
 
          /* If this insn contains more (or less) than a single SET,
             only mark all destinations as having no known equivalence.  */
-         if (set == NULL_RTX)
+         if (set == NULL_RTX
+             || side_effects_p (SET_SRC (set)))
            {
              note_stores (PATTERN (insn), no_equiv, NULL);
              continue;