]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/71389 (ICE on trunk gcc on ivybridge target (df_refs_verify))
authorUros Bizjak <uros@gcc.gnu.org>
Tue, 7 Jun 2016 16:01:50 +0000 (18:01 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Tue, 7 Jun 2016 16:01:50 +0000 (18:01 +0200)
PR target/71389
* config/i386/i386.c (ix86_avx256_split_vector_move_misalign):
Copy op1 RTX to avoid invalid sharing.
(ix86_expand_vector_move_misalign): Ditto.

testsuite/ChangeLog:

PR target/71389
* g++.dg/pr71389.C: New test.

From-SVN: r237179

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/pr71389.C [new file with mode: 0644]

index 49e0f89a75e292be039e31054f2b3585a9f9b906..108ac653d4fc19a0392ba785237b1bc856bcf2ee 100644 (file)
@@ -1,3 +1,10 @@
+2016-06-07  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/71389
+       * config/i386/i386.c (ix86_avx256_split_vector_move_misalign):
+       Copy op1 RTX to avoid invalid sharing.
+       (ix86_expand_vector_move_misalign): Ditto.
+
 2016-06-05  Uros Bizjak  <ubizjak@gmail.com>
 
        Backport from mainline
 
        Backport from mainline
        2015-11-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
-                   Bernd Schmidt  <bschmidt@redhat.com>
+                   Bernd Schmidt  <bschmidt@redhat.com>
 
        PR rtl-optimization/67226
        * calls.c (store_one_arg): Take into account
 
        Backport from mainline
        2015-11-24  Bernd Schmidt <bschmidt@redhat.com>
-                   Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+                   Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        PR rtl-optimization/68194
        PR rtl-optimization/68328
 
        Backport from mainline r222205
        2015-04-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
-                   Jakub Jelinek  <jakub@redhat.com>
+                   Jakub Jelinek  <jakub@redhat.com>
 
        PR target/65787
        * config/rs6000/rs6000.c (rtx_is_swappable_p): Ensure that a
index 20ad2cd0999d591db4ad08f5f4ae3b74f8d80fe8..733e3bdbdf49a00bbde42e1c1587b5c8649a418e 100644 (file)
@@ -17024,7 +17024,7 @@ ix86_avx256_split_vector_move_misalign (rtx op0, rtx op1)
          m = adjust_address (op0, mode, 0);
          emit_insn (extract (m, op1, const0_rtx));
          m = adjust_address (op0, mode, 16);
-         emit_insn (extract (m, op1, const1_rtx));
+         emit_insn (extract (m, copy_rtx (op1), const1_rtx));
        }
       else
        emit_insn (store_unaligned (op0, op1));
@@ -17332,7 +17332,7 @@ ix86_expand_vector_move_misalign (enum machine_mode mode, rtx operands[])
              m = adjust_address (op0, V2SFmode, 0);
              emit_insn (gen_sse_storelps (m, op1));
              m = adjust_address (op0, V2SFmode, 8);
-             emit_insn (gen_sse_storehps (m, op1));
+             emit_insn (gen_sse_storehps (m, copy_rtx (op1)));
            }
        }
     }
index f896f6bf3fa92fcfad0b47f04e8863d990014b5d..9d0cb20f03b9202e05917b03c170f29400690a30 100644 (file)
@@ -1,3 +1,8 @@
+2016-06-07  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/71389
+       * g++.dg/pr71389.C: New test.
+
 2016-05-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        Backport from trunk.
diff --git a/gcc/testsuite/g++.dg/pr71389.C b/gcc/testsuite/g++.dg/pr71389.C
new file mode 100644 (file)
index 0000000..023abe1
--- /dev/null
@@ -0,0 +1,23 @@
+// { dg-do compile { target i?86-*-* x86_64-*-* } }
+// { dg-options "-std=c++11 -O3 -march=ivybridge" }
+
+#include <functional>
+
+extern int le_s6, le_s9, le_s11;
+long foo_v14[16][16];
+
+void fn1() {
+  std::array<std::array<int, 16>, 16> v13;
+  for (; le_s6;)
+    for (int k1 = 2; k1 < 4; k1 = k1 + 1) {
+      for (int n1 = 0; n1 < le_s9; n1 = 8) {
+        *foo_v14[6] = 20923310;
+        for (int i2 = n1; i2 < n1 + 8; i2 = i2 + 1)
+          v13.at(5).at(i2 + 6 - n1) = 306146921;
+      }
+
+      for (int l2 = 0; l2 < le_s11; l2 = l2 + 1)
+          *(l2 + v13.at(5).begin()) = 306146921;
+    }
+  v13.at(le_s6 - 4);
+}