aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/execute/20181120-1.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/execute/20181120-1.c')
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20181120-1.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/20181120-1.c b/gcc/testsuite/gcc.c-torture/execute/20181120-1.c
new file mode 100644
index 00000000000..da3d4552a2f
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20181120-1.c
@@ -0,0 +1,28 @@
+/* PR rtl-optimization/85925 */
+/* { dg-require-effective-target int32plus } */
+/* Testcase by <sudi@gcc.gnu.org> */
+
+int a, c, d;
+volatile int b;
+int *e = &d;
+
+union U1 {
+ unsigned f0;
+ unsigned f1 : 15;
+};
+volatile union U1 u = { 0x4030201 };
+
+int main (void)
+{
+ for (c = 0; c <= 1; c++) {
+ union U1 f = {0x4030201};
+ if (c == 1)
+ b;
+ *e = f.f1;
+ }
+
+ if (d != u.f1)
+ __builtin_abort ();
+
+ return 0;
+}