| // PR c++/35315 |
| |
| typedef union { int i; } U __attribute__((transparent_union)); |
| |
| static void foo(U) {} |
| static void foo(int) {} |
| |
| void bar() |
| { |
| foo(0); |
| } |
| |
| typedef union U1 { int i; } U2 __attribute__((transparent_union)); // { dg-warning "ignored" } |
| |
| static void foo2(U1) {} // { dg-message "previously defined" } |
| static void foo2(U2) {} // { dg-error "redefinition" } |
| |
| void bar2(U1 u1, U2 u2) |
| { |
| foo2(u1); |
| foo2(u2); |
| } |
| |
| // PR c++/36410 |
| struct A |
| { |
| typedef union |
| { |
| int i; |
| } B __attribute__((transparent_union)); |
| }; |
| |
| void foo(A::B b) |
| { |
| b.i; |
| } |