testsuite: Add compat.exp testcase for most common zero width bitfld ABI passing [PR102024]
On Tue, Mar 22, 2022 at 05:51:58PM +0100, Jakub Jelinek via Gcc wrote: > I guess it would be nice to include the testcases we are talking about, > like { float x; int : 0; float y; } and { float x; int : 0; } and > { int : 0; float x; } into compat.exp testsuite so that we see ABI > differences in compat testing. Here is a patch that does that. It uses the struct-layout-1* framework, but isn't generated because we don't want in this case pseudo-random structure layouts, but particular ones we know cause or could cause problems on some targets. If other problematic cases are discovered, we can add further ones. Tested on x86_64-linux with: make check-gcc check-g++ RUNTESTFLAGS='ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ compat.exp=pr102*' and with make check-gcc check-g++ RUNTESTFLAGS='compat.exp=pr102*' The former as expected has: FAIL: gcc.dg/compat/pr102024 c_compat_x_tst.o-c_compat_y_alt.o execute FAIL: gcc.dg/compat/pr102024 c_compat_x_alt.o-c_compat_y_tst.o execute fails because on x86_64 we've changed the C ABI but kept the C++ ABI here. E.g. on rs6000 it should be the g++.dg such tests to fail (all assuming the alt gcc/g++ is GCC 4.5 through 11). 2022-03-24 Jakub Jelinek <jakub@redhat.com> PR target/102024 * gcc.dg/compat/pr102024_main.c: New test. * gcc.dg/compat/pr102024_test.h: New test. * gcc.dg/compat/pr102024_x.c: New test. * gcc.dg/compat/pr102024_y.c: New test. * g++.dg/compat/pr102024_main.C: New test. * g++.dg/compat/pr102024_test.h: New test. * g++.dg/compat/pr102024_x.C: New test. * g++.dg/compat/pr102024_y.C: New test.
This commit is contained in:
parent
8698ff67cd
commit
568377743e
8 changed files with 102 additions and 0 deletions
26
gcc/testsuite/g++.dg/compat/pr102024_main.C
Normal file
26
gcc/testsuite/g++.dg/compat/pr102024_main.C
Normal file
|
@ -0,0 +1,26 @@
|
|||
/* { dg-require-effective-target int32plus } */
|
||||
/* { dg-options "-Wno-abi" } */
|
||||
/* { dg-options "-mno-mmx -Wno-abi" { target i?86-*-* x86_64-*-* } } */
|
||||
/* { dg-options "-fno-common" { target hppa*-*-hpux* powerpc*-*-darwin* } } */
|
||||
/* { dg-options "-mno-mmx -fno-common -Wno-abi" { target i?86-*-darwin* x86_64-*-darwin* } } */
|
||||
/* { dg-options "-mno-base-addresses" { target mmix-*-* } } */
|
||||
/* { dg-options "-mlongcalls -mtext-section-literals" { target xtensa*-*-* } } */
|
||||
|
||||
#include "struct-layout-1.h"
|
||||
|
||||
#define TX(n, type, attrs, fields, ops) extern void test##n (void);
|
||||
#include "pr102024_test.h"
|
||||
#undef TX
|
||||
|
||||
int main (void)
|
||||
{
|
||||
#define TX(n, type, attrs, fields, ops) test##n ();
|
||||
#include "pr102024_test.h"
|
||||
#undef TX
|
||||
if (fails)
|
||||
{
|
||||
fflush (stdout);
|
||||
abort ();
|
||||
}
|
||||
exit (0);
|
||||
}
|
6
gcc/testsuite/g++.dg/compat/pr102024_test.h
Normal file
6
gcc/testsuite/g++.dg/compat/pr102024_test.h
Normal file
|
@ -0,0 +1,6 @@
|
|||
T(0,float a;int:0;float b;,F(0,a,42.0f,43.125f)F(0,b,-17.5f,35.75f))
|
||||
T(1,float a;int:0;,F(1,a,1.0f,17.125f))
|
||||
T(2,int:0;float a;,F(2,a,2.25f,16.5f))
|
||||
T(3,double a;long long:0;double b;,F(3,a,42.0,43.125)F(3,b,-17.5,35.75))
|
||||
T(4,double a;long long:0;,F(4,a,1.0,17.125))
|
||||
T(5,long long:0;double a;,F(5,a,2.25,16.5))
|
11
gcc/testsuite/g++.dg/compat/pr102024_x.C
Normal file
11
gcc/testsuite/g++.dg/compat/pr102024_x.C
Normal file
|
@ -0,0 +1,11 @@
|
|||
/* { dg-options "-w -Wno-abi" } */
|
||||
/* { dg-options "-w -mno-mmx -Wno-abi" { target i?86-*-* x86_64-*-* } } */
|
||||
/* { dg-options "-w -fno-common" { target hppa*-*-hpux* powerpc*-*-darwin* } } */
|
||||
/* { dg-options "-w -mno-mmx -fno-common -Wno-abi" { target i?86-*-darwin* x86_64-*-darwin* } } */
|
||||
/* { dg-options "-w -mno-base-addresses" { target mmix-*-* } } */
|
||||
/* { dg-options "-w -mlongcalls -mtext-section-literals" { target xtensa*-*-* } } */
|
||||
|
||||
#include "struct-layout-1_x1.h"
|
||||
#include "pr102024_test.h"
|
||||
#include "struct-layout-1_x2.h"
|
||||
#include "pr102024_test.h"
|
11
gcc/testsuite/g++.dg/compat/pr102024_y.C
Normal file
11
gcc/testsuite/g++.dg/compat/pr102024_y.C
Normal file
|
@ -0,0 +1,11 @@
|
|||
/* { dg-options "-w -Wno-abi" } */
|
||||
/* { dg-options "-w -mno-mmx -Wno-abi" { target i?86-*-* x86_64-*-* } } */
|
||||
/* { dg-options "-w -fno-common" { target hppa*-*-hpux* powerpc*-*-darwin* } } */
|
||||
/* { dg-options "-w -mno-mmx -fno-common -Wno-abi" { target i?86-*-darwin* x86_64-*-darwin* } } */
|
||||
/* { dg-options "-w -mno-base-addresses" { target mmix-*-* } } */
|
||||
/* { dg-options "-w -mlongcalls -mtext-section-literals" { target xtensa*-*-* } } */
|
||||
|
||||
#include "struct-layout-1_y1.h"
|
||||
#include "pr102024_test.h"
|
||||
#include "struct-layout-1_y2.h"
|
||||
#include "pr102024_test.h"
|
22
gcc/testsuite/gcc.dg/compat/pr102024_main.c
Normal file
22
gcc/testsuite/gcc.dg/compat/pr102024_main.c
Normal file
|
@ -0,0 +1,22 @@
|
|||
/* { dg-require-effective-target int32plus } */
|
||||
/* { dg-options "-Wno-abi" } */
|
||||
/* { dg-options "-mno-mmx -Wno-abi" { target i?86-*-* x86_64-*-* } } */
|
||||
/* { dg-options "-fno-common" { target hppa*-*-hpux* powerpc*-*-darwin* } } */
|
||||
/* { dg-options "-mno-mmx -fno-common -Wno-abi" { target i?86-*-darwin* x86_64-*-darwin* } } */
|
||||
/* { dg-options "-mno-base-addresses" { target mmix-*-* } } */
|
||||
/* { dg-options "-mlongcalls -mtext-section-literals" { target xtensa*-*-* } } */
|
||||
/* { dg-prune-output ".*-Wno-abi.*" } */
|
||||
/* { dg-prune-output ".*Offset of packed bit-field.*" } */
|
||||
#include "struct-layout-1.h"
|
||||
|
||||
#define TX(n, type, attrs, fields, ops) extern void test##n (void);
|
||||
#include "pr102024_test.h"
|
||||
#undef TX
|
||||
|
||||
int main (void)
|
||||
{
|
||||
#define TX(n, type, attrs, fields, ops) test##n ();
|
||||
#include "pr102024_test.h"
|
||||
#undef TX
|
||||
exit (fails != 0);
|
||||
}
|
6
gcc/testsuite/gcc.dg/compat/pr102024_test.h
Normal file
6
gcc/testsuite/gcc.dg/compat/pr102024_test.h
Normal file
|
@ -0,0 +1,6 @@
|
|||
T(0,float a;int:0;float b;,F(0,a,42.0f,43.125f)F(0,b,-17.5f,35.75f))
|
||||
T(1,float a;int:0;,F(1,a,1.0f,17.125f))
|
||||
T(2,int:0;float a;,F(2,a,2.25f,16.5f))
|
||||
T(3,double a;long long:0;double b;,F(3,a,42.0,43.125)F(3,b,-17.5,35.75))
|
||||
T(4,double a;long long:0;,F(4,a,1.0,17.125))
|
||||
T(5,long long:0;double a;,F(5,a,2.25,16.5))
|
10
gcc/testsuite/gcc.dg/compat/pr102024_x.c
Normal file
10
gcc/testsuite/gcc.dg/compat/pr102024_x.c
Normal file
|
@ -0,0 +1,10 @@
|
|||
/* { dg-options "-w -Wno-abi" } */
|
||||
/* { dg-options "-w -mno-mmx -Wno-abi" { target i?86-*-* x86_64-*-* } } */
|
||||
/* { dg-options "-w -fno-common" { target hppa*-*-hpux* powerpc*-*-darwin* } } */
|
||||
/* { dg-options "-w -mno-mmx -fno-common -Wno-abi" { target i?86-*-darwin* x86_64-*-darwin* } } */
|
||||
/* { dg-options "-w -mno-base-addresses" { target mmix-*-* } } */
|
||||
/* { dg-options "-w -mlongcalls -mtext-section-literals" { target xtensa*-*-* } } */
|
||||
#include "struct-layout-1_x1.h"
|
||||
#include "pr102024_test.h"
|
||||
#include "struct-layout-1_x2.h"
|
||||
#include "pr102024_test.h"
|
10
gcc/testsuite/gcc.dg/compat/pr102024_y.c
Normal file
10
gcc/testsuite/gcc.dg/compat/pr102024_y.c
Normal file
|
@ -0,0 +1,10 @@
|
|||
/* { dg-options "-w -Wno-abi" } */
|
||||
/* { dg-options "-w -mno-mmx -Wno-abi" { target i?86-*-* x86_64-*-* } } */
|
||||
/* { dg-options "-w -fno-common" { target hppa*-*-hpux* powerpc*-*-darwin* } } */
|
||||
/* { dg-options "-w -mno-mmx -fno-common -Wno-abi" { target i?86-*-darwin* x86_64-*-darwin* } } */
|
||||
/* { dg-options "-w -mno-base-addresses" { target mmix-*-* } } */
|
||||
/* { dg-options "-w -mlongcalls -mtext-section-literals" { target xtensa*-*-* } } */
|
||||
#include "struct-layout-1_y1.h"
|
||||
#include "pr102024_test.h"
|
||||
#include "struct-layout-1_y2.h"
|
||||
#include "pr102024_test.h"
|
Loading…
Add table
Reference in a new issue