aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2023-11-06 10:58:15 +0800
committerliuhongt <hongtao.liu@intel.com>2023-11-06 18:35:55 +0800
commitf463ef79ddb403570461343ebda0c1aeac85d5bb (patch)
tree3e4643caed9244a064f6c96a8a7bbcf66c0ab7eb
parent3d654f96d4c583c35e4f73aa8f11371730671534 (diff)
downloadgcc-f463ef79ddb403570461343ebda0c1aeac85d5bb.zip
gcc-f463ef79ddb403570461343ebda0c1aeac85d5bb.tar.gz
gcc-f463ef79ddb403570461343ebda0c1aeac85d5bb.tar.bz2
Avoid generating RTL code when d->testing_p.
gcc/ChangeLog: PR target/112393 * config/i386/i386-expand.cc (ix86_expand_vec_perm_vpermt2): Avoid generating RTL code when d->testing_p. gcc/testsuite/ChangeLog: * gcc.target/i386/pr112393.c: New test.
-rw-r--r--gcc/config/i386/i386-expand.cc3
-rw-r--r--gcc/testsuite/gcc.target/i386/pr112393.c20
2 files changed, 23 insertions, 0 deletions
diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc
index 6ae5830..8fad73c 100644
--- a/gcc/config/i386/i386-expand.cc
+++ b/gcc/config/i386/i386-expand.cc
@@ -5245,6 +5245,9 @@ ix86_expand_vec_perm_vpermt2 (rtx target, rtx mask, rtx op0, rtx op1,
if (gen == NULL)
return false;
+ if (d && d->testing_p)
+ return true;
+
/* ix86_expand_vec_perm_vpermt2 is called from both const and non-const
expander, so args are either in d, or in op0, op1 etc. */
if (d)
diff --git a/gcc/testsuite/gcc.target/i386/pr112393.c b/gcc/testsuite/gcc.target/i386/pr112393.c
new file mode 100644
index 0000000..c5c5b95
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr112393.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-mavx512f -Wuninitialized" } */
+typedef _Float16 __attribute__((__vector_size__ (32))) V;
+
+V v;
+
+void
+foo (void)
+{
+ (void) __builtin_shufflevector (v, __builtin_shufflevector (v, (V){},
+ 3, 0, 2, 2,
+ 5, 6, 3, 7, 5,
+ 6, 0, 8, 6, 4,
+ 3, 2, 8, 9, 5,
+ 8, 8, 7, 5, 4,
+ 8, 9, 1, 2, 4,
+ 9, 9, 7),
+ 40, 33);
+}
+