http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58970
--- Comment #17 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- struct T { unsigned char b : 8; unsigned char s : 1; }; struct S { char x; struct T t[1]; }; void function(int x, struct S *p) { if (x == -1) p->t[x].s = 0; } another test case. so this is possible...