[gcc r16-6572] testsuite: Fix up pr123319.c [PR123319]
Jakub Jelinek
jakub@gcc.gnu.org
Thu Jan 8 09:41:52 GMT 2026
https://gcc.gnu.org/g:5f2ac8c5ea3ebbb8c48bfd4070b6cd8580395e85
commit r16-6572-g5f2ac8c5ea3ebbb8c48bfd4070b6cd8580395e85
Author: Jakub Jelinek <jakub@redhat.com>
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 <jakub@redhat.com>
Andrew Pinski <andrew.pinski@oss.qualcomm.com>
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;
+}
More information about the Gcc-cvs
mailing list