https://gcc.gnu.org/g:5f2ac8c5ea3ebbb8c48bfd4070b6cd8580395e85

commit r16-6572-g5f2ac8c5ea3ebbb8c48bfd4070b6cd8580395e85
Author: Jakub Jelinek <[email protected]>
Date:   Thu Jan 8 10:37:20 2026 +0100

    testsuite: Fix up pr123319.c [PR123319]
    
    The testcase committed as gcc.dg/pr123319.c was x86_64 specific due to
    immintrin.h include and use of _mm_avg_pu8 & __m64.  Furthermore, it
    failed even on ia32 due to using SSE ISA stuff without -msse.
    
    The following patch fixes that by moving that test to gcc.target/i386/,
    adding -msse, adding comment with PR number, adding -msse to dg-options
    and adding a new generic test written by Andrew Pinski as gcc.dg/pr123319.c.
    
    Tested on x86_64-linux with
    make check-gcc RUNTESTFLAGS='--target_board=unix\{-m32,-m32/-mno-sse,-m64\} 
dg.exp=pr123319.c i386.exp=pr123319.c'
    both with current cc1 and cc1 from 2 days ago where everything ICEd.
    
    2026-01-08  Jakub Jelinek  <[email protected]>
                Andrew Pinski  <[email protected]>
    
            PR tree-optimization/123319
            * gcc.dg/pr123319.c: Replace test with target independent one.  Move
            previous test to ...
            * gcc.target/i386/pr123319.c: ... here.  Add comment with PR number,
            add -msse to dg-options, move immintrin.h include right after 
stdint.h
            include.

Diff:
---
 gcc/testsuite/gcc.dg/pr123319.c          | 110 ++++++++-----------------------
 gcc/testsuite/gcc.target/i386/pr123319.c |  90 +++++++++++++++++++++++++
 2 files changed, 118 insertions(+), 82 deletions(-)

diff --git a/gcc/testsuite/gcc.dg/pr123319.c b/gcc/testsuite/gcc.dg/pr123319.c
index a60f2de22d6e..125216b89e43 100644
--- a/gcc/testsuite/gcc.dg/pr123319.c
+++ b/gcc/testsuite/gcc.dg/pr123319.c
@@ -1,89 +1,35 @@
-/* { dg-do compile } */
-/* { dg-options "-O3 -w -Wno-psabi" } */
+/* PR tree-optimization/123319 */
+/* { dg-do compile { target int32plus } } */
+/* { dg-options "-O3" } */
 
-#include <stdint.h>
-#define BS_VEC(type, num) type __attribute__((vector_size(num * sizeof(type))))
-#define BITCAST(T, F, arg)                                                     
\
-    (union {                                                                   
\
-        F src;                                                                 
\
-        T dst                                                                  
\
-    }){ arg }                                                                  
\
-        .dst
-#include <immintrin.h>
-#define BARRIER_v8u8(x) (BS_VEC(uint8_t, 8)) _mm_avg_pu8((__m64)x, (__m64)x)
-uint64_t BS_CHECKSUM_ARR[];
-BS_VEC(int8_t, 16) backsmith_pure_2(BS_VEC(int32_t, 8));
-BS_VEC(uint16_t, 4)
-backsmith_pure_0(BS_VEC(uint8_t, 4), int16_t, int64_t BS_ARG_2)
+signed char b, c[4];
+void foo (void);
+
+void
+bar (long e)
 {
-    int8_t BS_VAR_1;
-    BS_VEC(uint8_t, 16) BS_VAR_4[7];
-    if (BS_ARG_2)
-    {
-        if ((uint16_t)BS_ARG_2)
-            for (uint16_t BS_INC_0;;)
-                __builtin_convertvector(
-                    __builtin_shufflevector(BS_VAR_4[BS_INC_0],
-                                            BS_VAR_4[BS_INC_0], 8, 4, 5, 8),
-                    BS_VEC(uint16_t, 4));
-        BS_VAR_1 = __builtin_convertvector(
-            __builtin_shufflevector((BS_VEC(uint8_t, 8)){}, BARRIER_v8u8({}), 
4,
-                                    10, 2, 1),
-            BS_VEC(int8_t, 4))[BS_ARG_2];
-        uint16_t BS_TEMP_11 = BS_VAR_1;
-        return (BS_VEC(uint16_t, 4)){ BS_TEMP_11 };
-    }
-    __builtin_convertvector(__builtin_shufflevector((BS_VEC(uint8_t, 8)){},
-                                                    (BS_VEC(uint8_t, 8)){}, 2,
-                                                    6, 4, 4),
-                            BS_VEC(uint16_t, 4));
+  if (e) {
+    if ((short) e)
+      for (;;)
+        ;
+    foo ();
+    b = c[e];
+  }
 }
-static int32_t *func_31(int32_t *, uint64_t);
-uint16_t func_1()
+
+static void
+baz (long e)
 {
-    BITCAST(
-        int64_t, BS_VEC(int16_t, 4),
-        (__builtin_convertvector(
-             __builtin_shufflevector((BS_VEC(uint32_t, 4)){},
-                                     (BS_VEC(uint32_t, 4)){}, 0, 3, 3, 0, 2, 7,
-                                     2, 5, 3, 5, 0, 4, 0, 1, 1, 7, 1, 0, 6, 7,
-                                     6, 3, 4, 6, 3, 3, 1, 7, 3, 6, 0, 0),
-             BS_VEC(int16_t, 32)),
-         __builtin_convertvector(
-             __builtin_shufflevector(
-                 backsmith_pure_0((BS_VEC(uint8_t, 4)){}, 0,
-                                  BITCAST(int64_t, BS_VEC(int32_t, 2), )),
-                 backsmith_pure_0(
-                     (BS_VEC(uint8_t, 4)){}, 0,
-                     BITCAST(int64_t, BS_VEC(int32_t, 2),
-                             __builtin_convertvector(
-                                 __builtin_shufflevector(
-                                     backsmith_pure_2(__builtin_convertvector(
-                                         (BS_VEC(int64_t, 8)){},
-                                         BS_VEC(int32_t, 8))),
-                                     backsmith_pure_2(__builtin_convertvector(
-                                         (BS_VEC(int64_t, 8)){},
-                                         BS_VEC(int32_t, 8))),
-                                     9, 2),
-                                 BS_VEC(int32_t, 2)))),
-                 3, 7, 5, 5, 1, 0, 2, 1, 1, 4, 6, 4, 5, 1, 5, 6, 1, 0, 1, 6, 4,
-                 1, 2, 3, 1, 1, 1, 0, 7, 2, 5, 1),
-             BS_VEC(int16_t, 32)),
-         1));
-    int32_t l_969;
-    int8_t l_1016 = 1;
-    func_31(&l_969, l_1016);
-    __builtin_convertvector((BS_VEC(int32_t, 32)){}, BS_VEC(int16_t, 32)),
-        __builtin_convertvector((BS_VEC(int32_t, 2)){}, BS_VEC(uint8_t, 2));
-    int l_572 = 2558744285;
-    func_31(0, l_572);
+  bar (e);
 }
-int32_t *func_31(int32_t *, uint64_t p_33)
+
+int g;
+
+void
+qux ()
 {
-    uint64_t LOCAL_CHECKSUM;
-    backsmith_pure_0(
-        __builtin_convertvector((BS_VEC(int32_t, 4)){}, BS_VEC(uint8_t, 4)),
-        20966, p_33);
-    for (uint32_t BS_TEMP_215; BS_TEMP_215;)
-        BS_CHECKSUM_ARR[6] += LOCAL_CHECKSUM;
+  bar (g);
+  baz (1);
+  int h = 2558744285;
+  baz (h);
 }
diff --git a/gcc/testsuite/gcc.target/i386/pr123319.c 
b/gcc/testsuite/gcc.target/i386/pr123319.c
new file mode 100644
index 000000000000..b43cfc0f484b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr123319.c
@@ -0,0 +1,90 @@
+/* PR tree-optimization/123319 */
+/* { dg-do compile } */
+/* { dg-options "-O3 -w -Wno-psabi -msse" } */
+
+#include <stdint.h>
+#include <immintrin.h>
+#define BS_VEC(type, num) type __attribute__((vector_size(num * sizeof(type))))
+#define BITCAST(T, F, arg)                                                     
\
+    (union {                                                                   
\
+        F src;                                                                 
\
+        T dst                                                                  
\
+    }){ arg }                                                                  
\
+        .dst
+#define BARRIER_v8u8(x) (BS_VEC(uint8_t, 8)) _mm_avg_pu8((__m64)x, (__m64)x)
+uint64_t BS_CHECKSUM_ARR[];
+BS_VEC(int8_t, 16) backsmith_pure_2(BS_VEC(int32_t, 8));
+BS_VEC(uint16_t, 4)
+backsmith_pure_0(BS_VEC(uint8_t, 4), int16_t, int64_t BS_ARG_2)
+{
+    int8_t BS_VAR_1;
+    BS_VEC(uint8_t, 16) BS_VAR_4[7];
+    if (BS_ARG_2)
+    {
+        if ((uint16_t)BS_ARG_2)
+            for (uint16_t BS_INC_0;;)
+                __builtin_convertvector(
+                    __builtin_shufflevector(BS_VAR_4[BS_INC_0],
+                                            BS_VAR_4[BS_INC_0], 8, 4, 5, 8),
+                    BS_VEC(uint16_t, 4));
+        BS_VAR_1 = __builtin_convertvector(
+            __builtin_shufflevector((BS_VEC(uint8_t, 8)){}, BARRIER_v8u8({}), 
4,
+                                    10, 2, 1),
+            BS_VEC(int8_t, 4))[BS_ARG_2];
+        uint16_t BS_TEMP_11 = BS_VAR_1;
+        return (BS_VEC(uint16_t, 4)){ BS_TEMP_11 };
+    }
+    __builtin_convertvector(__builtin_shufflevector((BS_VEC(uint8_t, 8)){},
+                                                    (BS_VEC(uint8_t, 8)){}, 2,
+                                                    6, 4, 4),
+                            BS_VEC(uint16_t, 4));
+}
+static int32_t *func_31(int32_t *, uint64_t);
+uint16_t func_1()
+{
+    BITCAST(
+        int64_t, BS_VEC(int16_t, 4),
+        (__builtin_convertvector(
+             __builtin_shufflevector((BS_VEC(uint32_t, 4)){},
+                                     (BS_VEC(uint32_t, 4)){}, 0, 3, 3, 0, 2, 7,
+                                     2, 5, 3, 5, 0, 4, 0, 1, 1, 7, 1, 0, 6, 7,
+                                     6, 3, 4, 6, 3, 3, 1, 7, 3, 6, 0, 0),
+             BS_VEC(int16_t, 32)),
+         __builtin_convertvector(
+             __builtin_shufflevector(
+                 backsmith_pure_0((BS_VEC(uint8_t, 4)){}, 0,
+                                  BITCAST(int64_t, BS_VEC(int32_t, 2), )),
+                 backsmith_pure_0(
+                     (BS_VEC(uint8_t, 4)){}, 0,
+                     BITCAST(int64_t, BS_VEC(int32_t, 2),
+                             __builtin_convertvector(
+                                 __builtin_shufflevector(
+                                     backsmith_pure_2(__builtin_convertvector(
+                                         (BS_VEC(int64_t, 8)){},
+                                         BS_VEC(int32_t, 8))),
+                                     backsmith_pure_2(__builtin_convertvector(
+                                         (BS_VEC(int64_t, 8)){},
+                                         BS_VEC(int32_t, 8))),
+                                     9, 2),
+                                 BS_VEC(int32_t, 2)))),
+                 3, 7, 5, 5, 1, 0, 2, 1, 1, 4, 6, 4, 5, 1, 5, 6, 1, 0, 1, 6, 4,
+                 1, 2, 3, 1, 1, 1, 0, 7, 2, 5, 1),
+             BS_VEC(int16_t, 32)),
+         1));
+    int32_t l_969;
+    int8_t l_1016 = 1;
+    func_31(&l_969, l_1016);
+    __builtin_convertvector((BS_VEC(int32_t, 32)){}, BS_VEC(int16_t, 32)),
+        __builtin_convertvector((BS_VEC(int32_t, 2)){}, BS_VEC(uint8_t, 2));
+    int l_572 = 2558744285;
+    func_31(0, l_572);
+}
+int32_t *func_31(int32_t *, uint64_t p_33)
+{
+    uint64_t LOCAL_CHECKSUM;
+    backsmith_pure_0(
+        __builtin_convertvector((BS_VEC(int32_t, 4)){}, BS_VEC(uint8_t, 4)),
+        20966, p_33);
+    for (uint32_t BS_TEMP_215; BS_TEMP_215;)
+        BS_CHECKSUM_ARR[6] += LOCAL_CHECKSUM;
+}

Reply via email to