| /* This testcase ICEd because statement expression type was set, but was not |
| as used. */ |
| |
| struct A { |
| unsigned int a, b, c; |
| }; |
| |
| extern void abort (void); |
| extern void exit (int); |
| |
| struct A bar (void) |
| { |
| return (struct A) { 176, 52, 31 }; |
| } |
| |
| void baz (struct A *a) |
| { |
| if (a->a != 176 || a->b != 52 || a->c != 31) |
| abort (); |
| } |
| |
| int main () |
| { |
| struct A d; |
| |
| d = ({ { bar (); } }); /* { dg-error "void value" } */ |
| d = ({ if (1) { bar (); } }); /* { dg-error "void value" } */ |
| d = ({ while (0) { bar (); } }); /* { dg-error "void value" } */ |
| d = ({ do { bar (); } while (0); }); /* { dg-error "void value" } */ |
| baz (&d); |
| exit (0); |
| } |