@@ -176,3 +176,32 @@ void foo7() {
176
176
// OGCG: store float %[[TMP_A]], ptr %[[C_REAL_PTR]], align 4
177
177
// OGCG: store float 2.000000e+00, ptr %[[C_IMAG_PTR]], align 4
178
178
179
+ void foo8 () {
180
+ double _Complex c = 2 .00i;
181
+ }
182
+
183
+ // CIR: %[[COMPLEX:.*]] = cir.const #cir.const_complex<#cir.fp<0.000000e+00> : !cir.double, #cir.fp<2.000000e+00> : !cir.double> : !cir.complex<!cir.double>
184
+
185
+ // LLVM: %[[COMPLEX:.*]] = alloca { double, double }, i64 1, align 8
186
+ // LLVM: store { double, double } { double 0.000000e+00, double 2.000000e+00 }, ptr %[[COMPLEX]], align 8
187
+
188
+ // OGCG: %[[COMPLEX:.*]] = alloca { double, double }, align 8
189
+ // OGCG: %[[C_REAL_PTR:.*]] = getelementptr inbounds nuw { double, double }, ptr %[[COMPLEX]], i32 0, i32 0
190
+ // OGCG: %[[C_IMAG_PTR:.*]] = getelementptr inbounds nuw { double, double }, ptr %[[COMPLEX]], i32 0, i32 1
191
+ // OGCG: store double 0.000000e+00, ptr %[[C_REAL_PTR]], align 8
192
+ // OGCG: store double 2.000000e+00, ptr %[[C_IMAG_PTR]], align 8
193
+
194
+ void foo14 () {
195
+ int _Complex c = 2i;
196
+ }
197
+
198
+ // CIR: %[[COMPLEX:.*]] = cir.const #cir.const_complex<#cir.int<0> : !s32i, #cir.int<2> : !s32i> : !cir.complex<!s32i>
199
+
200
+ // LLVM: %[[COMPLEX:.*]] = alloca { i32, i32 }, i64 1, align 4
201
+ // LLVM: store { i32, i32 } { i32 0, i32 2 }, ptr %[[COMPLEX]], align 4
202
+
203
+ // OGCG: %[[COMPLEX:.*]] = alloca { i32, i32 }, align 4
204
+ // OGCG: %[[C_REAL_PTR:.*]] = getelementptr inbounds nuw { i32, i32 }, ptr %[[COMPLEX]], i32 0, i32 0
205
+ // OGCG: %[[C_IMAG_PTR:.*]] = getelementptr inbounds nuw { i32, i32 }, ptr %[[COMPLEX]], i32 0, i32 1
206
+ // OGCG: store i32 0, ptr %[[C_REAL_PTR]], align 4
207
+ // OGCG: store i32 2, ptr %[[C_IMAG_PTR]], align 4
0 commit comments