re PR target/69255 (ICE on x86_64-linux-gnu in "emit_move_insn")
authorJakub Jelinek <jakub@gcc.gnu.org>
Tue, 6 Sep 2016 20:30:57 +0000 (22:30 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 6 Sep 2016 20:30:57 +0000 (22:30 +0200)
PR target/69255
* config/i386/i386.c (ix86_expand_builtin): For builtin with
unsupported or unknown ISA, use expand_call.

* gcc.target/i386/pr69255-1.c: New test.
* gcc.target/i386/pr69255-2.c: New test.
* gcc.target/i386/pr69255-3.c: New test.

From-SVN: r240014

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr69255-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr69255-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr69255-3.c [new file with mode: 0644]

index e23891e51552fc76dd374f597fe5eb4d5c1ffe9e..7fb021201f6dd8ef4d9992034e3c1f6fd590a7bf 100644 (file)
@@ -1,3 +1,9 @@
+2016-09-06  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/69255
+       * config/i386/i386.c (ix86_expand_builtin): For builtin with
+       unsupported or unknown ISA, use expand_call.
+
 2016-09-06  Martin Liska  <mliska@suse.cz>
 
        PR gcov-profile/77378
index dc92f9be53bb48b969a59a6e1e16e9bb2b010a0f..016082941da8137d11ab1a3c37012dbd387a2001 100644 (file)
@@ -36107,7 +36107,7 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
          error ("%qE needs isa option %s", fndecl, opts);
          free (opts);
        }
-      return const0_rtx;
+      return expand_call (exp, target, ignore);
     }
 
   switch (fcode)
index 4e24658c99384033a4f6adc9cafa8e19557bb130..607742084a89b644e371e8582656cd6a04d46f61 100644 (file)
@@ -1,4 +1,11 @@
-2016-09-06 Martin Sebor  <msebor@redhat.com>
+2016-09-06  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/69255
+       * gcc.target/i386/pr69255-1.c: New test.
+       * gcc.target/i386/pr69255-2.c: New test.
+       * gcc.target/i386/pr69255-3.c: New test.
+
+2016-09-06  Martin Sebor  <msebor@redhat.com>
 
        PR c/77336
        * gcc.dg/format/miss-7.c: New test.
diff --git a/gcc/testsuite/gcc.target/i386/pr69255-1.c b/gcc/testsuite/gcc.target/i386/pr69255-1.c
new file mode 100644 (file)
index 0000000..7a666d3
--- /dev/null
@@ -0,0 +1,17 @@
+/* PR target/69255 */
+/* { dg-do compile } */
+/* { dg-options "-msse4 -mno-avx" } */
+
+#pragma GCC target "avx512vl"
+#pragma GCC target "no-avx512vl"
+__attribute__ ((__vector_size__ (32))) long long a;
+__attribute__ ((__vector_size__ (16))) int b;
+
+void
+foo (const long long *p)
+{
+  a = __builtin_ia32_gather3siv4di (a, p, b, 1, 1);    /* { dg-error "needs isa option -m32 -mavx512vl" } */
+}
+
+/* { dg-warning "AVX vector return without AVX enabled changes the ABI" "" { target *-*-* } 13 } */
+/* { dg-warning "AVX vector argument without AVX enabled changes the ABI" "" { target *-*-* } 13 } */
diff --git a/gcc/testsuite/gcc.target/i386/pr69255-2.c b/gcc/testsuite/gcc.target/i386/pr69255-2.c
new file mode 100644 (file)
index 0000000..28eb57b
--- /dev/null
@@ -0,0 +1,17 @@
+/* PR target/69255 */
+/* { dg-do compile } */
+/* { dg-options "-msse4 -mno-avx" } */
+
+#pragma GCC target "avx512vl"
+#pragma GCC target ""
+__attribute__ ((__vector_size__ (32))) long long a;
+__attribute__ ((__vector_size__ (16))) int b;
+
+void
+foo (const long long *p)
+{
+  __builtin_ia32_gather3siv4di (a, p, b, 1, 1);                /* { dg-error "needs isa option -m32 -mavx512vl" } */
+}
+
+/* { dg-warning "AVX vector return without AVX enabled changes the ABI" "" { target *-*-* } 13 } */
+/* { dg-warning "AVX vector argument without AVX enabled changes the ABI" "" { target *-*-* } 13 } */
diff --git a/gcc/testsuite/gcc.target/i386/pr69255-3.c b/gcc/testsuite/gcc.target/i386/pr69255-3.c
new file mode 100644 (file)
index 0000000..41fb4a2
--- /dev/null
@@ -0,0 +1,17 @@
+/* PR target/69255 */
+/* { dg-do compile } */
+/* { dg-options "-msse4 -mno-avx" } */
+
+#pragma GCC target "avx512vl"
+#pragma GCC target ""
+__attribute__ ((__vector_size__ (32))) long long a;
+__attribute__ ((__vector_size__ (16))) int b;
+
+void
+foo (const long long *p, __attribute__ ((__vector_size__ (32))) long long *q)
+{
+  *q = __builtin_ia32_gather3siv4di (a, p, b, 1, 1);   /* { dg-error "needs isa option -m32 -mavx512vl" } */
+}
+
+/* { dg-warning "AVX vector return without AVX enabled changes the ABI" "" { target *-*-* } 13 } */
+/* { dg-warning "AVX vector argument without AVX enabled changes the ABI" "" { target *-*-* } 13 } */