diff options
author | Jakub Jelinek <jakub@redhat.com> | 2012-05-28 16:28:00 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2012-05-28 16:28:00 +0200 |
commit | 512d321defbe449500d6f70fcbeac606dd87a5af (patch) | |
tree | 705c5e9ac7105ab5214d070f0ada83823307ebee | |
parent | 5d497b05fe68fe4561909a3c1fbfb559e93cc4bb (diff) | |
download | gcc-512d321defbe449500d6f70fcbeac606dd87a5af.zip gcc-512d321defbe449500d6f70fcbeac606dd87a5af.tar.gz gcc-512d321defbe449500d6f70fcbeac606dd87a5af.tar.bz2 |
re PR c++/53505 (bitfield with bool type generated broken object file)
PR tree-optimization/53505
* c-c++-common/torture/pr53505.c: New test.
From-SVN: r187931
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/torture/pr53505.c | 42 |
2 files changed, 47 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4d6b6ff..5dca2c1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-05-28 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/53505 + * c-c++-common/torture/pr53505.c: New test. + 2012-05-27 Nathan Sidwell <nathan@acm.org> * gcc.dg/stmt-expr-4.c: New. diff --git a/gcc/testsuite/c-c++-common/torture/pr53505.c b/gcc/testsuite/c-c++-common/torture/pr53505.c new file mode 100644 index 0000000..9227110 --- /dev/null +++ b/gcc/testsuite/c-c++-common/torture/pr53505.c @@ -0,0 +1,42 @@ +/* PR tree-optimization/53505 */ +/* { dg-do run } */ + +#include <stdbool.h> + +struct A +{ + unsigned int a; + unsigned char c1, c2; + bool b1 : 1; + bool b2 : 1; + bool b3 : 1; +}; + +void +foo (const struct A *x, int y) +{ + int s = 0, i; + for (i = 0; i < y; ++i) + { + const struct A a = x[i]; + s += a.b1 ? 1 : 0; + } + if (s != 0) + __builtin_abort (); +} + +int +main () +{ + struct A x[100]; + int i; + __builtin_memset (x, -1, sizeof (x)); + for (i = 0; i < 100; i++) + { + x[i].b1 = false; + x[i].b2 = false; + x[i].b3 = false; + } + foo (x, 100); + return 0; +} |