On Thu, 24 Mar 2022, Jakub Jelinek wrote: > 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). > > Ok for trunk?
OK. Richard. > 2022-03-24 Jakub Jelinek <ja...@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. > > --- gcc/testsuite/gcc.dg/compat/pr102024_main.c.jj 2022-03-24 > 10:56:13.283921666 +0100 > +++ gcc/testsuite/gcc.dg/compat/pr102024_main.c 2022-03-24 > 11:20:36.186978012 +0100 > @@ -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); > +} > --- gcc/testsuite/gcc.dg/compat/pr102024_test.h.jj 2022-03-24 > 10:56:16.137880896 +0100 > +++ gcc/testsuite/gcc.dg/compat/pr102024_test.h 2022-03-24 > 11:12:43.616742282 +0100 > @@ -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)) > --- gcc/testsuite/gcc.dg/compat/pr102024_x.c.jj 2022-03-24 > 10:56:18.957840614 +0100 > +++ gcc/testsuite/gcc.dg/compat/pr102024_x.c 2022-03-24 11:21:09.975494401 > +0100 > @@ -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" > --- gcc/testsuite/gcc.dg/compat/pr102024_y.c.jj 2022-03-24 > 10:56:21.893798677 +0100 > +++ gcc/testsuite/gcc.dg/compat/pr102024_y.c 2022-03-24 11:21:17.288389732 > +0100 > @@ -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" > --- gcc/testsuite/g++.dg/compat/pr102024_main.C.jj 2022-03-24 > 10:56:13.283921666 +0100 > +++ gcc/testsuite/g++.dg/compat/pr102024_main.C 2022-03-24 > 11:30:15.822681715 +0100 > @@ -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); > +} > --- gcc/testsuite/g++.dg/compat/pr102024_test.h.jj 2022-03-24 > 10:56:16.137880896 +0100 > +++ gcc/testsuite/g++.dg/compat/pr102024_test.h 2022-03-24 > 11:12:43.616742282 +0100 > @@ -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)) > --- gcc/testsuite/g++.dg/compat/pr102024_x.C.jj 2022-03-24 > 10:56:18.957840614 +0100 > +++ gcc/testsuite/g++.dg/compat/pr102024_x.C 2022-03-24 11:30:21.470600878 > +0100 > @@ -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" > --- gcc/testsuite/g++.dg/compat/pr102024_y.C.jj 2022-03-24 > 10:56:21.893798677 +0100 > +++ gcc/testsuite/g++.dg/compat/pr102024_y.C 2022-03-24 11:30:26.078534922 > +0100 > @@ -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" > > > Jakub > > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Ivo Totev; HRB 36809 (AG Nuernberg)