diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/noncompile/20020207-1.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/noncompile/20020207-1.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/noncompile/20020207-1.c b/gcc/testsuite/gcc.dg/noncompile/20020207-1.c new file mode 100644 index 000000000..945eb1b1b --- /dev/null +++ b/gcc/testsuite/gcc.dg/noncompile/20020207-1.c @@ -0,0 +1,32 @@ +/* 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); +} |