Hi! As we have no short testcase for PR53438, I've committed the following testcase as obvious to trunk and 4.7.
2012-05-28 Jakub Jelinek <ja...@redhat.com> PR tree-optimization/53505 * c-c++-common/torture/pr53505.c: New test. --- gcc/testsuite/c-c++-common/torture/pr53505.c.jj 2012-05-28 16:20:13.927753639 +0200 +++ gcc/testsuite/c-c++-common/torture/pr53505.c 2012-05-28 16:20:52.832528256 +0200 @@ -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; +} Jakub