|
19 | 19 | // CIR-DAG: !rec_CycleEnd = !cir.record<struct "CycleEnd" {!cir.ptr<!cir.record<struct "CycleStart" {!cir.ptr<!cir.record<struct "CycleMiddle" {!cir.ptr<!cir.record<struct "CycleEnd">>}>>}>>}>
|
20 | 20 | // CIR-DAG: !rec_CycleMiddle = !cir.record<struct "CycleMiddle" {!cir.ptr<!rec_CycleEnd>}>
|
21 | 21 | // CIR-DAG: !rec_CycleStart = !cir.record<struct "CycleStart" {!cir.ptr<!rec_CycleMiddle>}>
|
| 22 | +// CIR-DAG: !rec_IncompleteArray = !cir.record<struct "IncompleteArray" {!cir.array<!s32i x 0>}> |
22 | 23 | // LLVM-DAG: %struct.CompleteS = type { i32, i8 }
|
23 | 24 | // LLVM-DAG: %struct.OuterS = type { %struct.InnerS, i32 }
|
24 | 25 | // LLVM-DAG: %struct.InnerS = type { i32, i8 }
|
|
30 | 31 | // LLVM-DAG: %struct.CycleStart = type { ptr }
|
31 | 32 | // LLVM-DAG: %struct.CycleMiddle = type { ptr }
|
32 | 33 | // LLVM-DAG: %struct.CycleEnd = type { ptr }
|
| 34 | +// LLVM-DAG: %struct.IncompleteArray = type { [0 x i32] } |
33 | 35 | // OGCG-DAG: %struct.CompleteS = type { i32, i8 }
|
34 | 36 | // OGCG-DAG: %struct.OuterS = type { %struct.InnerS, i32 }
|
35 | 37 | // OGCG-DAG: %struct.InnerS = type { i32, i8 }
|
|
41 | 43 | // OGCG-DAG: %struct.CycleStart = type { ptr }
|
42 | 44 | // OGCG-DAG: %struct.CycleMiddle = type { ptr }
|
43 | 45 | // OGCG-DAG: %struct.CycleEnd = type { ptr }
|
| 46 | +// OGCG-DAG: %struct.IncompleteArray = type { [0 x i32] } |
44 | 47 |
|
45 | 48 | struct CompleteS {
|
46 | 49 | int a;
|
@@ -149,6 +152,16 @@ struct CycleEnd {
|
149 | 152 | // LLVM-DAG: @end = global %struct.CycleEnd zeroinitializer
|
150 | 153 | // OGCG-DAG: @end = global %struct.CycleEnd zeroinitializer
|
151 | 154 |
|
| 155 | +struct IncompleteArray { |
| 156 | + int array[]; |
| 157 | +} incomplete; |
| 158 | + |
| 159 | +// CIR: cir.global external @incomplete = #cir.zero : !rec_IncompleteArray |
| 160 | + |
| 161 | +// LLVM-DAG: global %struct.IncompleteArray zeroinitializer |
| 162 | + |
| 163 | +// OGCG-DAG: global %struct.IncompleteArray zeroinitializer |
| 164 | + |
152 | 165 | void f(void) {
|
153 | 166 | struct IncompleteS *p;
|
154 | 167 | }
|
@@ -313,3 +326,4 @@ void f6(struct CycleStart *start) {
|
313 | 326 | // OGCG: %[[MIDDLE:.*]] = getelementptr inbounds nuw %struct.CycleStart, ptr %{{.*}}, i32 0, i32 0
|
314 | 327 | // OGCG: %[[END:.*]] = getelementptr inbounds nuw %struct.CycleMiddle, ptr %{{.*}}, i32 0, i32 0
|
315 | 328 | // OGCG: %[[START2:.*]] = getelementptr inbounds nuw %struct.CycleEnd, ptr %{{.*}}, i32 0, i32 0
|
| 329 | + |
0 commit comments