diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.dg/pr39226.c')
-rw-r--r-- | gcc-4.9/gcc/testsuite/gcc.dg/pr39226.c | 34 |
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; +} |