[PATCH] Add testcase for PR tree-optimization/88739
Richard Biener
rguenther@suse.de
Fri Feb 8 18:59:00 GMT 2019
On February 8, 2019 7:22:48 PM GMT+01:00, Jakub Jelinek <jakub@redhat.com> wrote:
>Hi!
>
>The following testcase distilled from
>https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88739#c0
>aborts on s390x-linux when compiled with trunk -O2 with r268332
>reverted (or
>e.g. with -O2 and gcc 7.x) and succeeds with trunk -O2, or -O0 with any
>of
>those compilers. Tested also on x86_64-linux with -m32/-m64 make
>check.
>
>Ok for trunk?
OK and thanks for the testcase!
Richard.
>2019-02-08 Jakub Jelinek <jakub@redhat.com>
>
> PR tree-optimization/88739
> * gcc.c-torture/execute/pr88739.c: New test.
>
>--- gcc/testsuite/gcc.c-torture/execute/pr88739.c.jj 2019-01-27
>12:44:12.526219828 +0100
>+++ gcc/testsuite/gcc.c-torture/execute/pr88739.c 2019-02-08
>18:48:25.880556579 +0100
>@@ -0,0 +1,59 @@
>+/* PR tree-optimization/88739 */
>+#if __SIZEOF_SHORT__ == 2 && __SIZEOF_INT__ == 4 && __CHAR_BIT__ == 8
>+struct A
>+{
>+ unsigned int a, b, c;
>+ unsigned int d : 30;
>+ unsigned int e : 2;
>+};
>+
>+union U
>+{
>+ struct A f;
>+ unsigned int g[4];
>+ unsigned short h[8];
>+ unsigned char i[16];
>+};
>+volatile union U v = { .f.d = 0x4089 };
>+
>+__attribute__((noipa)) void
>+bar (int x)
>+{
>+ static int i;
>+ switch (i++)
>+ {
>+ case 0: if (x != v.f.d) __builtin_abort (); break;
>+ case 1: if (x != v.f.e) __builtin_abort (); break;
>+ case 2: if (x != v.g[3]) __builtin_abort (); break;
>+ case 3: if (x != v.h[6]) __builtin_abort (); break;
>+ case 4: if (x != v.h[7]) __builtin_abort (); break;
>+ default: __builtin_abort (); break;
>+ }
>+}
>+
>+void
>+foo (unsigned int x)
>+{
>+ union U u;
>+ u.f.d = x >> 2;
>+ u.f.e = 0;
>+ bar (u.f.d);
>+ bar (u.f.e);
>+ bar (u.g[3]);
>+ bar (u.h[6]);
>+ bar (u.h[7]);
>+}
>+
>+int
>+main ()
>+{
>+ foo (0x10224);
>+ return 0;
>+}
>+#else
>+int
>+main ()
>+{
>+ return 0;
>+}
>+#endif
>
> Jakub
More information about the Gcc-patches
mailing list