[clang] [CIR] Upstream global initialization for ComplexType (PR #141369)

Henrich Lauko via cfe-commits cfe-commits at lists.llvm.org
Sun May 25 05:53:59 PDT 2025


================
@@ -577,12 +577,31 @@ mlir::Attribute ConstantEmitter::tryEmitPrivate(const APValue &value,
   case APValue::Union:
     cgm.errorNYI("ConstExprEmitter::tryEmitPrivate struct or union");
     return {};
-  case APValue::FixedPoint:
   case APValue::ComplexInt:
-  case APValue::ComplexFloat:
+  case APValue::ComplexFloat: {
+    mlir::Type desiredType = cgm.convertType(destType);
+    cir::ComplexType complexType =
+        mlir::dyn_cast<cir::ComplexType>(desiredType);
+
+    mlir::Type compelxElemTy = complexType.getElementType();
+    if (isa<cir::IntType>(compelxElemTy)) {
+      llvm::APSInt real = value.getComplexIntReal();
+      llvm::APSInt imag = value.getComplexIntImag();
+      return builder.getAttr<cir::ConstComplexAttr>(
+          complexType, builder.getAttr<cir::IntAttr>(compelxElemTy, real),
----------------
xlauko wrote:

```suggestion
          complexType, builder.getAttr<cir::IntAttr>(complexElemTy, real),
```

https://github.com/llvm/llvm-project/pull/141369


More information about the cfe-commits mailing list