| /* PR c/105131 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-Wall -fno-short-enums" } */ |
| |
| enum E { E1 = -1, E2 = 0, E3 = 1 }; |
| |
| int foo(void); /* { dg-message "previous declaration" } */ |
| enum E foo(void) { return E2; } /* { dg-warning "conflicting types" } */ |
| |
| void bar(int); /* { dg-message "previous declaration" } */ |
| void bar(enum E); /* { dg-warning "conflicting types" } */ |
| |
| extern int arr[10]; /* { dg-message "previous declaration" } */ |
| extern enum E arr[10]; /* { dg-warning "conflicting types" } */ |
| |
| extern int i; /* { dg-message "previous declaration" } */ |
| extern enum E i; /* { dg-warning "conflicting types" } */ |
| |
| extern int *p; /* { dg-message "previous declaration" } */ |
| extern enum E *p; /* { dg-warning "conflicting types" } */ |
| |
| enum E foo2(void) { return E2; } /* { dg-message "previous definition" } */ |
| int foo2(void); /* { dg-warning "conflicting types" } */ |
| |
| void bar2(enum E); /* { dg-message "previous declaration" } */ |
| void bar2(int); /* { dg-warning "conflicting types" } */ |
| |
| extern enum E arr2[10]; /* { dg-message "previous declaration" } */ |
| extern int arr2[10]; /* { dg-warning "conflicting types" } */ |
| |
| extern enum E i2; /* { dg-message "previous declaration" } */ |
| extern int i2; /* { dg-warning "conflicting types" } */ |
| |
| extern enum E *p2; /* { dg-message "previous declaration" } */ |
| extern int *p2; /* { dg-warning "conflicting types" } */ |
| |
| enum F { F1 = -1, F2, F3 } __attribute__ ((__packed__)); |
| |
| enum F fn1(void); /* { dg-message "previous declaration" } */ |
| signed char fn1(void); /* { dg-warning "conflicting types" } */ |
| |
| signed char fn2(void); /* { dg-message "previous declaration" } */ |
| enum F fn2(void); /* { dg-warning "conflicting types" } */ |