From 512d321defbe449500d6f70fcbeac606dd87a5af Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 28 May 2012 16:28:00 +0200 Subject: [PATCH] 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 --- gcc/testsuite/ChangeLog | 5 +++ gcc/testsuite/c-c++-common/torture/pr53505.c | 42 ++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 gcc/testsuite/c-c++-common/torture/pr53505.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4d6b6ffe141..5dca2c1fadc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-05-28 Jakub Jelinek + + PR tree-optimization/53505 + * c-c++-common/torture/pr53505.c: New test. + 2012-05-27 Nathan Sidwell * 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 00000000000..922711025ca --- /dev/null +++ b/gcc/testsuite/c-c++-common/torture/pr53505.c @@ -0,0 +1,42 @@ +/* PR tree-optimization/53505 */ +/* { dg-do run } */ + +#include + +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; +} -- 2.30.2