public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Jakub Jelinek <jakub@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org
Subject: [gcc r12-7798] testsuite: Add compat.exp testcase for most common zero width bitfld ABI passing [PR102024]
Date: Thu, 24 Mar 2022 11:25:44 +0000 (GMT)	[thread overview]
Message-ID: <20220324112544.648BE3858C2C@sourceware.org> (raw)

https://gcc.gnu.org/g:568377743e22c1377d0aaa1ac9113da3ff1b6bd4

commit r12-7798-g568377743e22c1377d0aaa1ac9113da3ff1b6bd4
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Thu Mar 24 12:25:15 2022 +0100

    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.

Diff:
---
 gcc/testsuite/g++.dg/compat/pr102024_main.C | 26 ++++++++++++++++++++++++++
 gcc/testsuite/g++.dg/compat/pr102024_test.h |  6 ++++++
 gcc/testsuite/g++.dg/compat/pr102024_x.C    | 11 +++++++++++
 gcc/testsuite/g++.dg/compat/pr102024_y.C    | 11 +++++++++++
 gcc/testsuite/gcc.dg/compat/pr102024_main.c | 22 ++++++++++++++++++++++
 gcc/testsuite/gcc.dg/compat/pr102024_test.h |  6 ++++++
 gcc/testsuite/gcc.dg/compat/pr102024_x.c    | 10 ++++++++++
 gcc/testsuite/gcc.dg/compat/pr102024_y.c    | 10 ++++++++++
 8 files changed, 102 insertions(+)

diff --git a/gcc/testsuite/g++.dg/compat/pr102024_main.C b/gcc/testsuite/g++.dg/compat/pr102024_main.C
new file mode 100644
index 00000000000..83965c824fd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/pr102024_main.C
@@ -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);
+}
diff --git a/gcc/testsuite/g++.dg/compat/pr102024_test.h b/gcc/testsuite/g++.dg/compat/pr102024_test.h
new file mode 100644
index 00000000000..d8f4103f63c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/pr102024_test.h
@@ -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))
diff --git a/gcc/testsuite/g++.dg/compat/pr102024_x.C b/gcc/testsuite/g++.dg/compat/pr102024_x.C
new file mode 100644
index 00000000000..d56ae25d426
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/pr102024_x.C
@@ -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"
diff --git a/gcc/testsuite/g++.dg/compat/pr102024_y.C b/gcc/testsuite/g++.dg/compat/pr102024_y.C
new file mode 100644
index 00000000000..385f4c563f2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/pr102024_y.C
@@ -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"
diff --git a/gcc/testsuite/gcc.dg/compat/pr102024_main.c b/gcc/testsuite/gcc.dg/compat/pr102024_main.c
new file mode 100644
index 00000000000..8aa78da2ddf
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/compat/pr102024_main.c
@@ -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);
+}
diff --git a/gcc/testsuite/gcc.dg/compat/pr102024_test.h b/gcc/testsuite/gcc.dg/compat/pr102024_test.h
new file mode 100644
index 00000000000..d8f4103f63c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/compat/pr102024_test.h
@@ -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))
diff --git a/gcc/testsuite/gcc.dg/compat/pr102024_x.c b/gcc/testsuite/gcc.dg/compat/pr102024_x.c
new file mode 100644
index 00000000000..de207520d24
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/compat/pr102024_x.c
@@ -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"
diff --git a/gcc/testsuite/gcc.dg/compat/pr102024_y.c b/gcc/testsuite/gcc.dg/compat/pr102024_y.c
new file mode 100644
index 00000000000..a3f8396dfcf
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/compat/pr102024_y.c
@@ -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"


                 reply	other threads:[~2022-03-24 11:25 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220324112544.648BE3858C2C@sourceware.org \
    --to=jakub@gcc.gnu.org \
    --cc=gcc-cvs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).