aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.dg/pr39226.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.dg/pr39226.c')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr39226.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr39226.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr39226.c
new file mode 100644
index 000000000..3d336360a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr39226.c
@@ -0,0 +1,34 @@
+/* PR target/39226 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+/* { dg-options "-O2 -mtune=cell -mminimal-toc" { target { powerpc*-*-* && lp64 } } } */
+
+#if (__SIZEOF_INT__ == 2)
+struct A
+{
+ char *a;
+ unsigned int b : 1;
+ unsigned int c : 15;
+};
+#else
+struct A
+{
+ char *a;
+ unsigned int b : 1;
+ unsigned int c : 31;
+};
+#endif
+
+struct B
+{
+ struct A *d;
+};
+
+void
+foo (struct B *x, unsigned long y)
+{
+ if (x->d[y].c)
+ return;
+ if (x->d[y].b)
+ x->d[y].a = 0;
+}