diff options
Diffstat (limited to 'gcc/testsuite/gcc.target/i386')
21 files changed, 157 insertions, 40 deletions
diff --git a/gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c b/gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c index d9b861221f7..e5a8473abd4 100644 --- a/gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c +++ b/gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -mtune=generic -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c b/gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c index 6f3ce1f0db9..3843932f4f7 100644 --- a/gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c +++ b/gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -mtune=generic -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc/testsuite/gcc.target/i386/cet-intrin-3.c b/gcc/testsuite/gcc.target/i386/cet-intrin-3.c index bcd7203fdb4..b98c1e928d5 100644 --- a/gcc/testsuite/gcc.target/i386/cet-intrin-3.c +++ b/gcc/testsuite/gcc.target/i386/cet-intrin-3.c @@ -10,24 +10,22 @@ unsigned int f1 () { - unsigned int x = 0; - return _rdsspd (x); + return _get_ssp (); } void f3 (unsigned int _a) { - _incsspd (_a); + _inc_ssp (_a); } #ifdef __x86_64__ unsigned long long f2 () { - unsigned long long x = 0; - return _rdsspq (x); + return _get_ssp (); } void f4 (unsigned int _a) { - _incsspq (_a); + _inc_ssp (_a); } #endif diff --git a/gcc/testsuite/gcc.target/i386/cet-intrin-4.c b/gcc/testsuite/gcc.target/i386/cet-intrin-4.c index 437a4cd690c..86957b2eebe 100644 --- a/gcc/testsuite/gcc.target/i386/cet-intrin-4.c +++ b/gcc/testsuite/gcc.target/i386/cet-intrin-4.c @@ -5,27 +5,4 @@ /* { dg-final { scan-assembler "incssp\[dq]\[ \t]+(%|)\[re]di" { target { ! ia32 } } } } */ #include <immintrin.h> - -unsigned int f1 () -{ - unsigned int x = 0; - return _rdsspd (x); -} - -void f3 (unsigned int _a) -{ - _incsspd (_a); -} - -#ifdef __x86_64__ -unsigned long long f2 () -{ - unsigned long long x = 0; - return _rdsspq (x); -} - -void f4 (unsigned int _a) -{ - _incsspq (_a); -} -#endif +#include "cet-intrin-3.c" diff --git a/gcc/testsuite/gcc.target/i386/cet-rdssp-1.c b/gcc/testsuite/gcc.target/i386/cet-rdssp-1.c index fb50ff43504..6cd24f63384 100644 --- a/gcc/testsuite/gcc.target/i386/cet-rdssp-1.c +++ b/gcc/testsuite/gcc.target/i386/cet-rdssp-1.c @@ -5,18 +5,18 @@ void _exit(int status) __attribute__ ((__noreturn__)); #ifdef __x86_64__ # define incssp(x) __builtin_ia32_incsspq (x) -# define rdssp(x) __builtin_ia32_rdsspq (x) +# define rdssp() __builtin_ia32_rdsspq () #else # define incssp(x) __builtin_ia32_incsspd (x) -# define rdssp(x) __builtin_ia32_rdsspd (x) +# define rdssp() __builtin_ia32_rdsspd () #endif static void __attribute__ ((noinline, noclone)) test (unsigned long frames) { - unsigned long ssp = 0; - ssp = rdssp (ssp); + unsigned long ssp; + ssp = rdssp (); if (ssp != 0) { unsigned long tmp = frames; diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-17.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-17.c index 1be4922fd53..faf304c3303 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-17.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-17.c @@ -51,7 +51,7 @@ void test_strcpy (void) void test_strcat (int n) { - strcat (a, a + 3); /* { dg-warning ".strcat\.chkp. accessing 0 or more bytes at offsets 0 and 3 may overlap 1 byte" } */ + strcat (a, a + 3); /* { dg-warning ".strcat\.chkp. accessing 4 or more bytes at offsets 0 and 3 may overlap 1 byte at offset 3" } */ } void test_strncat (int n) diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-11.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-11.c new file mode 100644 index 00000000000..afa89ff227b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-11.c @@ -0,0 +1,7 @@ +/* { dg-do compile { target { ! x32 } } } */ +/* { dg-options "-O2 -mindirect-branch=thunk-extern -fcf-protection -mcet -fcheck-pointer-bounds -mmpx" } */ + +void +bar (void) +{ /* { dg-error "'-mindirect-branch=thunk-extern', '-fcf-protection=branch' and '-fcheck-pointer-bounds' are not compatible" } */ +} diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-12.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-12.c new file mode 100644 index 00000000000..d456973ee6d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-12.c @@ -0,0 +1,7 @@ +/* { dg-do compile { target { ! x32 } } } */ +/* { dg-options "-O2 -mindirect-branch=thunk -fcf-protection -mcet -fcheck-pointer-bounds -mmpx" } */ + +void +bar (void) +{ +} diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-12.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-12.c new file mode 100644 index 00000000000..24a1a08a3ca --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-12.c @@ -0,0 +1,8 @@ +/* { dg-do compile { target { ! x32 } } } */ +/* { dg-options "-O2 -mindirect-branch=keep -fcf-protection -mcet -fcheck-pointer-bounds -mmpx" } */ + +__attribute__ ((indirect_branch("thunk-extern"))) +void +bar (void) +{ /* { dg-error "'-mindirect-branch=thunk-extern', '-fcf-protection=branch' and '-fcheck-pointer-bounds' are not compatible" } */ +} diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-13.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-13.c new file mode 100644 index 00000000000..ff2fccae935 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-13.c @@ -0,0 +1,8 @@ +/* { dg-do compile { target { ! x32 } } } */ +/* { dg-options "-O2 -mindirect-branch=keep -fcf-protection -mcet -fcheck-pointer-bounds -mmpx" } */ + +__attribute__ ((indirect_branch("thunk-inline"))) +void +bar (void) +{ +} diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-14.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-14.c new file mode 100644 index 00000000000..669e56d7726 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-14.c @@ -0,0 +1,14 @@ +/* { dg-do compile { target *-*-linux* } } */ +/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic -fplt -mindirect-branch=keep -fcf-protection -mcet" } */ + +extern void (*bar) (void); + +__attribute__ ((indirect_branch("thunk-extern"))) +void +foo (void) +{ + bar (); +} + +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ +/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_indirect_thunk_nt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-15.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-15.c new file mode 100644 index 00000000000..c033fb23879 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-15.c @@ -0,0 +1,14 @@ +/* { dg-do compile { target *-*-linux* } } */ +/* { dg-options "-O2 -mindirect-branch-register -mfunction-return=keep -fno-pic -fplt -mindirect-branch=keep -fcf-protection -mcet" } */ + +extern void (*bar) (void); + +__attribute__ ((indirect_branch("thunk-extern"))) +void +foo (void) +{ + bar (); +} + +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ +/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_indirect_thunk_nt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-16.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-16.c new file mode 100644 index 00000000000..0244edf53b7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-16.c @@ -0,0 +1,13 @@ +/* { dg-do compile { target *-*-linux* } } */ +/* { dg-options "-O2 -mindirect-branch-register -mfunction-return=keep -fno-pic -fplt -mindirect-branch=keep -fcf-protection -mcet" } */ + +extern void (*bar) (void) __attribute__((nocf_check)); + +__attribute__ ((indirect_branch("thunk-extern"))) +void +foo (void) +{ + bar (); +} + +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_nt_(r|e)" } } */ diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-10.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-10.c new file mode 100644 index 00000000000..2a982ab69f8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-10.c @@ -0,0 +1,12 @@ +/* { dg-do compile { target *-*-linux* } } */ +/* { dg-options "-O2 -mindirect-branch-register -mfunction-return=keep -fno-pic -fplt -mindirect-branch=thunk-extern -fcf-protection -mcet" } */ + +extern void (*bar) (void) __attribute__((nocf_check)); + +void +foo (void) +{ + bar (); +} + +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_nt_(r|e)" } } */ diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-8.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-8.c new file mode 100644 index 00000000000..30d12cc0711 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-8.c @@ -0,0 +1,13 @@ +/* { dg-do compile { target *-*-linux* } } */ +/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic -fplt -mindirect-branch=thunk-extern -fcf-protection -mcet" } */ + +extern void (*bar) (void); + +void +foo (void) +{ + bar (); +} + +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ +/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_indirect_thunk_nt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-9.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-9.c new file mode 100644 index 00000000000..d714b0155df --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-9.c @@ -0,0 +1,13 @@ +/* { dg-do compile { target *-*-linux* } } */ +/* { dg-options "-O2 -mindirect-branch-register -mfunction-return=keep -fno-pic -fplt -mindirect-branch=thunk-extern -fcf-protection -mcet" } */ + +extern void (*bar) (void); + +void +foo (void) +{ + bar (); +} + +/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ +/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_indirect_thunk_nt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr57193.c b/gcc/testsuite/gcc.target/i386/pr57193.c index ef209c9d211..5c6d7e495de 100644 --- a/gcc/testsuite/gcc.target/i386/pr57193.c +++ b/gcc/testsuite/gcc.target/i386/pr57193.c @@ -1,5 +1,5 @@ -/* { dg-do compile { target { ! ia32 } } } */ -/* { dg-options "-O2 -march=x86-64" } */ +/* { dg-do compile } */ +/* { dg-options "-O2 -msse2 -mno-sse3 -mtune=generic" } */ /* { dg-final { scan-assembler-times "movdqa" 2 } } */ #include <emmintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/pr70023.c b/gcc/testsuite/gcc.target/i386/pr70023.c new file mode 100644 index 00000000000..5f6d138f28a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr70023.c @@ -0,0 +1,15 @@ +/* { dg-do compile { target int128 } } */ +/* { dg-options "-O -fno-sched-critical-path-heuristic -fschedule-insns -mavx -m8bit-idiv" } */ + +typedef int v8si __attribute__ ((vector_size (32))); +typedef __int128 i128; + +i128 +foo(int u16_0, int u64_0, i128 u128_0, i128 u128_1, v8si v32u32_0, v8si v32u32_1, v8si v32u64_1) +{ + v32u32_0[6] <<= u128_1 & 31; + v32u32_0 &= (v8si){v32u64_1[2], v32u32_1[6], 0xc5a661b, 0, 2}; + u128_1 += 0x16fe7853d732; + v32u32_1 /= (v8si){v32u32_0[5], u128_1, 0x92d} | 1; + return u128_0 + v32u32_1[1]; +} diff --git a/gcc/testsuite/gcc.target/i386/pr84146.c b/gcc/testsuite/gcc.target/i386/pr84146.c index ba9b6336c0d..a14baa47532 100644 --- a/gcc/testsuite/gcc.target/i386/pr84146.c +++ b/gcc/testsuite/gcc.target/i386/pr84146.c @@ -1,6 +1,6 @@ /* PR target/84146 */ /* { dg-do compile } */ -/* { dg-options "-O2 -g -mcet -fcf-protection=full" } */ +/* { dg-options "-O2 -g -mcet -fcf-protection=full -fcompare-debug" } */ int __setjmp (void **); void *buf[64]; diff --git a/gcc/testsuite/gcc.target/i386/pr84310-2.c b/gcc/testsuite/gcc.target/i386/pr84310-2.c new file mode 100644 index 00000000000..e39a421e8d2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr84310-2.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -malign-loops=16" } */ +/* { dg-warning "is obsolete" "" { target *-*-* } 0 } */ + +void +c (void) +{ + for (;;) + ; +} diff --git a/gcc/testsuite/gcc.target/i386/pr84310.c b/gcc/testsuite/gcc.target/i386/pr84310.c new file mode 100644 index 00000000000..f82327e45f3 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr84310.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -falign-functions=100000" } */ +/* { dg-error "is not between 0 and 65536" "" { target *-*-* } 0 } */ + +void +test_func (void) +{ +} |