diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/execute/20050119-1.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20050119-1.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/20050119-1.c b/gcc/testsuite/gcc.c-torture/execute/20050119-1.c new file mode 100644 index 000000000..55f33a065 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20050119-1.c @@ -0,0 +1,37 @@ +/* PR c/19342 */ +typedef enum { A, B, C, D } E; + +struct S { + E __attribute__ ((mode (__byte__))) a; + E __attribute__ ((mode (__byte__))) b; + E __attribute__ ((mode (__byte__))) c; + E __attribute__ ((mode (__byte__))) d; +}; + +extern void abort (void); +extern void exit (int); + +void +foo (struct S *s) +{ + if (s->a != s->b) + abort (); + if (s->c != C) + abort (); +} + +int +main (void) +{ + struct S s[2]; + s[0].a = B; + s[0].b = B; + s[0].c = C; + s[0].d = D; + s[1].a = D; + s[1].b = C; + s[1].c = B; + s[1].d = A; + foo (s); + exit (0); +} |