| /* PR c/60257 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-Wc++-compat -Woverride-init" } */ |
| /* { dg-prune-output ".*near initialization for.*" } */ |
| |
| enum E1 { A }; |
| enum E2 { B }; |
| |
| struct S |
| { |
| enum E1 e: 3; |
| }; |
| |
| struct S s[] = |
| { |
| { B } /* { dg-warning "5:enum conversion in initialization is invalid in C\[+\]\[+\]" } */ |
| }; |
| |
| union U { |
| int i; |
| long long int l; |
| }; |
| |
| struct R { |
| int a; |
| }; |
| |
| void |
| foo (int i) |
| { |
| union U u = { .i = ++i, .l = 1 }; /* { dg-warning "32:initialized field with side-effects overwritten" } */ |
| union U u2 = { .i = 1, .l = 3 }; /* { dg-warning "31:initialized field overwritten" } */ |
| int a[] = { i++, [0] = 1 }; /* { dg-warning "26:initialized field with side-effects overwritten" } */ |
| int a2[] = { i, [0] = 1 }; /* { dg-warning "25:initialized field overwritten" } */ |
| struct R r = { 1, .a = 2 }; /* { dg-warning "26:initialized field overwritten" } */ |
| struct R r2 = { ++i, .a = 2 }; /* { dg-warning "29:initialized field with side-effects overwritten" } */ |
| } |