| /* Verify zero initialization for array, union, and structure type automatic variables. */ |
| /* { dg-do compile } */ |
| /* { dg-options "-ftrivial-auto-var-init=zero -fdump-tree-gimple" } */ |
| |
| struct S |
| { |
| int f1; |
| float f2; |
| char f3[20]; |
| }; |
| |
| union U |
| { |
| char u1[5]; |
| int u2; |
| float u3; |
| }; |
| |
| double result; |
| |
| double foo() |
| { |
| int temp1[3]; |
| double temp2[3]; |
| struct S temp3; |
| union U temp4; |
| |
| result = temp1[2] + temp2[1] + temp3.f2 + temp4.u3; |
| return result; |
| } |
| |
| /* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(12, 2, 0\\)" "gimple" } } */ |
| /* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(24, 2, 0\\)" "gimple" } } */ |
| /* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(28, 2, 0\\)" "gimple" } } */ |
| /* { dg-final { scan-tree-dump "temp4 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" } } */ |