| /* PR middle-end/19874 */ |
| 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); |
| |
| E |
| foo (struct S *s) |
| { |
| if (s->a != s->b) |
| abort (); |
| if (s->c != C) |
| abort (); |
| return s->d; |
| } |
| |
| 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; |
| if (foo (s) != D) |
| abort (); |
| exit (0); |
| } |
| |