From 896fec24c8ef59b3520f5ded69dcd5bcf643c1f9 Mon Sep 17 00:00:00 2001 From: qing zhao <qing.zhao@oracle.com> Date: Fri, 17 Sep 2021 10:33:47 -0700 Subject: [PATCH] testsuite: Fix gcc.target/i386/auto-init-* tests. This set of tests failed on many different combination of -march, -mtune. some of them failed with -fstack-protestor-all, or -mno-sse. And the pattern matches are also different on lp64 or ia32. The reason for these failures is that the RTL or assembly level patten matches are only valid for -march=x86-64 -mtune=generic. We restrict the testing only for -march=x86-64 and -mtune=generic. Also add -fno-stack-protector or -msse for some of the testing cases. gcc/testsuite/ChangeLog: 2021-09-17 qing zhao <qing.zhao@oracle.com> * gcc.target/i386/auto-init-1.c: Restrict the testing only for -march=x86-64 and -mtune=generic. Add -fno-stack-protector. * gcc.target/i386/auto-init-2.c: Restrict the testing only for -march=x86-64 and -mtune=generic -msse. * gcc.target/i386/auto-init-3.c: Likewise. * gcc.target/i386/auto-init-4.c: Likewise. * gcc.target/i386/auto-init-5.c: Different pattern match for lp64 and ia32. * gcc.target/i386/auto-init-6.c: Restrict the testing only for -march=x86-64 and -mtune-generic -msse. Add -fno-stack-protector. * gcc.target/i386/auto-init-7.c: Likewise. * gcc.target/i386/auto-init-8.c: Restrict the testing only for -march=x86-64 and -mtune=generic -msse.. * gcc.target/i386/auto-init-padding-1.c: Likewise. * gcc.target/i386/auto-init-padding-10.c: Likewise. * gcc.target/i386/auto-init-padding-11.c: Likewise. * gcc.target/i386/auto-init-padding-12.c: Likewise. * gcc.target/i386/auto-init-padding-2.c: Likewise. * gcc.target/i386/auto-init-padding-3.c: Restrict the testing only for -march=x86-64. Different pattern match for lp64 and ia32. * gcc.target/i386/auto-init-padding-4.c: Restrict the testing only for -march=x86-64 and -mtune-generic -msse. * gcc.target/i386/auto-init-padding-5.c: Likewise. * gcc.target/i386/auto-init-padding-6.c: Likewise. * gcc.target/i386/auto-init-padding-7.c: Restrict the testing only for -march=x86-64 and -mtune-generic -msse. Add -fno-stack-protector. * gcc.target/i386/auto-init-padding-8.c: Likewise. * gcc.target/i386/auto-init-padding-9.c: Restrict the testing only for -march=x86-64. Different pattern match for lp64 and ia32. --- gcc/testsuite/gcc.target/i386/auto-init-1.c | 2 +- gcc/testsuite/gcc.target/i386/auto-init-2.c | 8 +++++--- gcc/testsuite/gcc.target/i386/auto-init-3.c | 5 +++-- gcc/testsuite/gcc.target/i386/auto-init-4.c | 10 ++++++---- gcc/testsuite/gcc.target/i386/auto-init-5.c | 5 +++-- gcc/testsuite/gcc.target/i386/auto-init-6.c | 2 +- gcc/testsuite/gcc.target/i386/auto-init-7.c | 2 +- gcc/testsuite/gcc.target/i386/auto-init-8.c | 2 +- gcc/testsuite/gcc.target/i386/auto-init-padding-1.c | 2 +- gcc/testsuite/gcc.target/i386/auto-init-padding-10.c | 2 +- gcc/testsuite/gcc.target/i386/auto-init-padding-11.c | 2 +- gcc/testsuite/gcc.target/i386/auto-init-padding-12.c | 2 +- gcc/testsuite/gcc.target/i386/auto-init-padding-2.c | 2 +- gcc/testsuite/gcc.target/i386/auto-init-padding-3.c | 8 +++++--- gcc/testsuite/gcc.target/i386/auto-init-padding-4.c | 2 +- gcc/testsuite/gcc.target/i386/auto-init-padding-5.c | 2 +- gcc/testsuite/gcc.target/i386/auto-init-padding-6.c | 2 +- gcc/testsuite/gcc.target/i386/auto-init-padding-7.c | 5 +++-- gcc/testsuite/gcc.target/i386/auto-init-padding-8.c | 7 +++---- gcc/testsuite/gcc.target/i386/auto-init-padding-9.c | 7 +++++-- 20 files changed, 45 insertions(+), 34 deletions(-) diff --git a/gcc/testsuite/gcc.target/i386/auto-init-1.c b/gcc/testsuite/gcc.target/i386/auto-init-1.c index b7690df24060..3391be1fba7a 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-1.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-1.c @@ -1,6 +1,6 @@ /* Verify zero initialization for integer and pointer type automatic variables. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=zero -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=zero -fdump-rtl-expand -fno-stack-protector -march=x86-64 -mtune=generic" } */ #ifndef __cplusplus # define bool _Bool diff --git a/gcc/testsuite/gcc.target/i386/auto-init-2.c b/gcc/testsuite/gcc.target/i386/auto-init-2.c index e76fc2565168..b23f733a4037 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-2.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-2.c @@ -1,6 +1,6 @@ /* Verify pattern initialization for integer and pointer type automatic variables. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand -march=x86-64 -mtune=generic -msse" } */ #ifndef __cplusplus # define bool _Bool @@ -31,6 +31,8 @@ void foo() /* { dg-final { scan-rtl-dump-times "0xfffffffffffffffe" 2 "expand" } } */ /* { dg-final { scan-rtl-dump-times "0xfffffffffffffefe" 1 "expand" } } */ -/* { dg-final { scan-rtl-dump-times "0xfffffffffefefefe" 2 "expand" } } */ -/* { dg-final { scan-rtl-dump-times "0xfefefefefefefefe" 3 "expand" } } */ +/* { dg-final { scan-rtl-dump-times "0xfffffffffefefefe" 2 "expand" { target lp64 } } } */ +/* { dg-final { scan-rtl-dump-times "0xfefefefefefefefe" 3 "expand" { target lp64 } } } */ +/* { dg-final { scan-rtl-dump-times "0xfffffffffefefefe" 4 "expand" { target ia32 } } } */ +/* { dg-final { scan-rtl-dump-times "0xfefefefefefefefe" 1 "expand" { target ia32 } } } */ diff --git a/gcc/testsuite/gcc.target/i386/auto-init-3.c b/gcc/testsuite/gcc.target/i386/auto-init-3.c index 300ddfb34f11..df317616db36 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-3.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-3.c @@ -1,6 +1,6 @@ /* Verify zero initialization for floating point type automatic variables. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=zero" } */ +/* { dg-options "-ftrivial-auto-var-init=zero -march=x86-64 -mtune=generic" } */ long double result; @@ -14,4 +14,5 @@ long double foo() return result; } -/* { dg-final { scan-assembler-times "pxor\t\\\%xmm0, \\\%xmm0" 3 } } */ +/* { dg-final { scan-assembler-times "pxor\t\\\%xmm0, \\\%xmm0" 3 { target lp64 } } } */ +/* { dg-final { scan-assembler-times "fldz" 3 { target ia32} } } */ diff --git a/gcc/testsuite/gcc.target/i386/auto-init-4.c b/gcc/testsuite/gcc.target/i386/auto-init-4.c index abe0b7e46a07..554a2c57eb67 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-4.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-4.c @@ -1,6 +1,6 @@ /* Verify pattern initialization for floating point type automatic variables. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand -march=x86-64 -mtune=generic -msse" } */ long double result; @@ -14,7 +14,9 @@ long double foo() return result; } -/* { dg-final { scan-rtl-dump-times "0xfffffffffefefefe" 1 "expand" } } */ -/* { dg-final { scan-rtl-dump-times "\\\[0xfefefefefefefefe\\\]" 1 "expand" } } */ -/* { dg-final { scan-rtl-dump-times "0xfffffffffffffffe\\\]\\\) repeated x16" 1 "expand" } } */ +/* { dg-final { scan-rtl-dump-times "0xfffffffffefefefe" 1 "expand" { target lp64 } } } */ +/* { dg-final { scan-rtl-dump-times "\\\[0xfefefefefefefefe\\\]" 1 "expand" { target lp64 } } } */ +/* { dg-final { scan-rtl-dump-times "0xfffffffffffffffe\\\]\\\) repeated x16" 1 "expand" { target lp64 } } } */ +/* { dg-final { scan-rtl-dump-times "0xfffffffffefefefe" 2 "expand" { target ia32 } } } */ +/* { dg-final { scan-rtl-dump-times "\\\[0xfefefefefefefefe\\\]" 2 "expand" { target ia32 } } } */ diff --git a/gcc/testsuite/gcc.target/i386/auto-init-5.c b/gcc/testsuite/gcc.target/i386/auto-init-5.c index b2e708c52893..27d971f8cf11 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-5.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-5.c @@ -1,6 +1,6 @@ /* Verify zero initialization for complex type automatic variables. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=zero -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=zero" } */ _Complex long double result; @@ -15,6 +15,7 @@ _Complex long double foo() return result; } -/* { dg-final { scan-assembler-times "\\.long\t0" 14 } } */ +/* { dg-final { scan-assembler-times "\\.long\t0" 14 { target lp64 } } } */ +/* { dg-final { scan-assembler-times "\\.long\t0" 12 { target ia32 } } } */ diff --git a/gcc/testsuite/gcc.target/i386/auto-init-6.c b/gcc/testsuite/gcc.target/i386/auto-init-6.c index c79c039c2e98..f75081edce45 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-6.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-6.c @@ -1,6 +1,6 @@ /* Verify pattern initialization for complex type automatic variables. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand -march=x86-64 -mtune=generic -msse" } */ _Complex long double result; diff --git a/gcc/testsuite/gcc.target/i386/auto-init-7.c b/gcc/testsuite/gcc.target/i386/auto-init-7.c index 011437965deb..7e32576d5909 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-7.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-7.c @@ -1,6 +1,6 @@ /* Verify zero initialization for array, union, and structure type automatic variables. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=zero -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=zero -fdump-rtl-expand -march=x86-64 -mtune=generic -fno-stack-protector -msse" } */ struct S { diff --git a/gcc/testsuite/gcc.target/i386/auto-init-8.c b/gcc/testsuite/gcc.target/i386/auto-init-8.c index 28fbeb7eece2..666ee14d2bc9 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-8.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-8.c @@ -1,6 +1,6 @@ /* Verify pattern initialization for array, union, and structure type automatic variables. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand -march=x86-64 -mtune=generic -msse" } */ struct S { diff --git a/gcc/testsuite/gcc.target/i386/auto-init-padding-1.c b/gcc/testsuite/gcc.target/i386/auto-init-padding-1.c index a238b8b4cf58..149a04f5b02b 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-padding-1.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-padding-1.c @@ -1,7 +1,7 @@ /* Verify zero initialization for structure type automatic variables with padding. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=zero -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=zero -fdump-rtl-expand -march=x86-64 -mtune=generic -msse" } */ struct test_aligned { int internal1; diff --git a/gcc/testsuite/gcc.target/i386/auto-init-padding-10.c b/gcc/testsuite/gcc.target/i386/auto-init-padding-10.c index 3fc6b0729825..1125bcf0df15 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-padding-10.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-padding-10.c @@ -1,7 +1,7 @@ /* Verify pattern initialization for array type with structure element with padding. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand -march=x86-64 -mtune=generic -msse" } */ struct test_trailing_hole { int one; diff --git a/gcc/testsuite/gcc.target/i386/auto-init-padding-11.c b/gcc/testsuite/gcc.target/i386/auto-init-padding-11.c index cc982b980f6f..4f90ad21ebf5 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-padding-11.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-padding-11.c @@ -1,7 +1,7 @@ /* Verify zero initialization for union type with structure field with padding. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=zero -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=zero -fdump-rtl-expand -march=x86-64 -mtune=generic -msse" } */ struct test_trailing_hole { int one; diff --git a/gcc/testsuite/gcc.target/i386/auto-init-padding-12.c b/gcc/testsuite/gcc.target/i386/auto-init-padding-12.c index 0fbdb6c046d7..21a1ee2f185a 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-padding-12.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-padding-12.c @@ -1,7 +1,7 @@ /* Verify pattern initialization for union type with structure field with padding. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand -march=x86-64 -mtune=generic -msse" } */ struct test_trailing_hole { int one; diff --git a/gcc/testsuite/gcc.target/i386/auto-init-padding-2.c b/gcc/testsuite/gcc.target/i386/auto-init-padding-2.c index 5739aa16b114..483b79ace6c8 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-padding-2.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-padding-2.c @@ -1,7 +1,7 @@ /* Verify pattern initialization for structure type automatic variables with padding. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand -march=x86-64 -mtune=generic -msse" } */ struct test_aligned { int internal1; diff --git a/gcc/testsuite/gcc.target/i386/auto-init-padding-3.c b/gcc/testsuite/gcc.target/i386/auto-init-padding-3.c index 8a6d764b9fa4..220a9f26348c 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-padding-3.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-padding-3.c @@ -1,7 +1,7 @@ /* Verify zero initialization for nested structure type automatic variables with padding. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=zero" } */ +/* { dg-options "-ftrivial-auto-var-init=zero -march=x86-64" } */ struct test_aligned { unsigned internal1; @@ -24,7 +24,9 @@ int foo () } /* { dg-final { scan-assembler "movl\t\\\$0," } } */ -/* { dg-final { scan-assembler "movl\t\\\$16," } } */ -/* { dg-final { scan-assembler "rep stosq" } } */ +/* { dg-final { scan-assembler "movl\t\\\$16," { target lp64 } } } */ +/* { dg-final { scan-assembler "rep stosq" { target lp64 } } } */ +/* { dg-final { scan-assembler "movl\t\\\$32," { target ia32 } } } */ +/* { dg-final { scan-assembler "rep stosl" { target ia32 } } } */ diff --git a/gcc/testsuite/gcc.target/i386/auto-init-padding-4.c b/gcc/testsuite/gcc.target/i386/auto-init-padding-4.c index d7be32617e44..2908b3ff7166 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-padding-4.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-padding-4.c @@ -1,7 +1,7 @@ /* Verify pattern initialization for nested structure type automatic variables with padding. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand -march=x86-64 -mtune=generic -msse" } */ struct test_aligned { unsigned internal1; diff --git a/gcc/testsuite/gcc.target/i386/auto-init-padding-5.c b/gcc/testsuite/gcc.target/i386/auto-init-padding-5.c index 569b09aef239..e17a621e6f47 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-padding-5.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-padding-5.c @@ -1,7 +1,7 @@ /* Verify zero initialization for structure type automatic variables with tail padding. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=zero -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=zero -fdump-rtl-expand -march=x86-64 -mtune=generic -msse" } */ struct test_trailing_hole { char *one; diff --git a/gcc/testsuite/gcc.target/i386/auto-init-padding-6.c b/gcc/testsuite/gcc.target/i386/auto-init-padding-6.c index 4e0b6142134f..754f8afeedfd 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-padding-6.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-padding-6.c @@ -1,7 +1,7 @@ /* Verify pattern initialization for structure type automatic variables with tail padding. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand" } */ +/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand -march=x86-64 -mtune=generic -msse" } */ struct test_trailing_hole { char *one; diff --git a/gcc/testsuite/gcc.target/i386/auto-init-padding-7.c b/gcc/testsuite/gcc.target/i386/auto-init-padding-7.c index b5abffb0fc66..c136e1cffc40 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-padding-7.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-padding-7.c @@ -1,7 +1,7 @@ /* Verify zero initialization for structure type automatic variables with padding and has explicit initialization. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=zero" } */ +/* { dg-options "-ftrivial-auto-var-init=zero -fdump-rtl-expand -march=x86-64 -mtune=generic -msse -fno-stack-protector" } */ struct test_trailing_hole { int one; @@ -17,6 +17,7 @@ int foo () return var.four; } -/* { dg-final { scan-assembler-times "movq\t\\\$0," 2 } } */ +/* { dg-final { scan-rtl-dump-times "const_int 0 \\\[0\\\]\\\) repeated x16" 1 "expand" { target ia32 } } } */ +/* { dg-final { scan-rtl-dump-times "const_int 0 \\\[0\\\]\\\)" 1 "expand" { target lp64 } } } */ diff --git a/gcc/testsuite/gcc.target/i386/auto-init-padding-8.c b/gcc/testsuite/gcc.target/i386/auto-init-padding-8.c index 66591cff4488..45baa3c01a34 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-padding-8.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-padding-8.c @@ -1,7 +1,7 @@ /* Verify pattern initialization for structure type automatic variables with padding and has explicit initialization. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=pattern" } */ +/* { dg-options "-ftrivial-auto-var-init=pattern -fdump-rtl-expand -march=x86-64 -mtune=generic -msse -fno-stack-protector" } */ struct test_trailing_hole { int one; @@ -17,6 +17,5 @@ int foo () return var.four; } -/* { dg-final { scan-assembler-times "movq\t\\\$0," 2 } } */ - - +/* { dg-final { scan-rtl-dump-times "const_int 0 \\\[0\\\]\\\) repeated x16" 1 "expand" { target ia32 } } } */ +/* { dg-final { scan-rtl-dump-times "const_int 0 \\\[0\\\]\\\)" 1 "expand" { target lp64 } } } */ diff --git a/gcc/testsuite/gcc.target/i386/auto-init-padding-9.c b/gcc/testsuite/gcc.target/i386/auto-init-padding-9.c index 1ff900f95b98..eafa3272dab1 100644 --- a/gcc/testsuite/gcc.target/i386/auto-init-padding-9.c +++ b/gcc/testsuite/gcc.target/i386/auto-init-padding-9.c @@ -1,7 +1,7 @@ /* Verify zero initialization for array type with structure element with padding. */ /* { dg-do compile } */ -/* { dg-options "-ftrivial-auto-var-init=zero" } */ +/* { dg-options "-ftrivial-auto-var-init=zero -march=x86-64" } */ struct test_trailing_hole { int one; @@ -19,4 +19,7 @@ int foo () } /* { dg-final { scan-assembler "movl\t\\\$0," } } */ -/* { dg-final { scan-assembler "rep stosq" } } */ +/* { dg-final { scan-assembler "movl\t\\\$20," { target lp64} } } */ +/* { dg-final { scan-assembler "rep stosq" { target lp64 } } } */ +/* { dg-final { scan-assembler "movl\t\\\$40," { target ia32} } } */ +/* { dg-final { scan-assembler "rep stosl" { target ia32 } } } */ -- GitLab