================
@@ -909,3 +909,46 @@ void foo33(__builtin_va_list a) {
// OGCG: %[[B_IMAG_PTR:.*]] = getelementptr inbounds nuw { float, float },
ptr %[[B_ADDR]], i32 0, i32 1
// OGCG: store float %[[RESULT_REAL]], ptr %[[B_REAL_PTR]], align 4
// OGCG: store float %[[RESULT_IMAG]], ptr %[[B_IMAG_PTR]], align 4
+
+void foo34(float _Complex a) {}
+
+// CIR: %[[A_ADDR:.*]] = cir.alloca !cir.complex<!cir.float>,
!cir.ptr<!cir.complex<!cir.float>>, ["a", init]
+// CIR: cir.store %{{.*}}, %[[A_ADDR]] : !cir.complex<!cir.float>,
!cir.ptr<!cir.complex<!cir.float>>
+
+// LLVM: %[[A_ADDR:.*]] = alloca { float, float }, i64 1, align 4
+// LLVM: store { float, float } %{{.*}}, ptr %[[A_ADDR]], align 4
----------------
andykaylor wrote:
Without calling convention lowering, any complex arguments are likely to be
wrong. I'm not sure there's any value in lowering such arguments to LLVM IR
before we've handled the calling convention part. Is there any way we can
detect that and emit an error?
https://github.com/llvm/llvm-project/pull/156236
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits