[clang] [CIR] Upstream TypeInfo attribute (PR #159426)
Henrich Lauko via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 18 22:17:29 PDT 2025
================
@@ -521,6 +522,21 @@ mlir::Value CIRAttrToValue::visitCirAttr(cir::GlobalViewAttr globalAttr) {
llvm_unreachable("Expecting pointer or integer type for GlobalViewAttr");
}
+// TypeInfoAttr visitor.
+mlir::Value CIRAttrToValue::visitCirAttr(cir::TypeInfoAttr typeinfoAttr) {
+ mlir::Type llvmTy = converter->convertType(typeinfoAttr.getType());
+ mlir::Location loc = parentOp->getLoc();
+ mlir::Value result = mlir::LLVM::UndefOp::create(rewriter, loc, llvmTy);
+
+ for (auto [idx, elt] : llvm::enumerate(typeinfoAttr.getData())) {
+ mlir::Value init = visit(elt);
+ result =
+ mlir::LLVM::InsertValueOp::create(rewriter, loc, result, init, idx);
+ }
+
+ return result;
+}
----------------
xlauko wrote:
```suggestion
mlir::Value CIRAttrToValue::visitCirAttr(cir::TypeInfoAttr typeInfoAttr) {
mlir::Type llvmTy = converter->convertType(typeInfoAttr.getType());
mlir::Location loc = parentOp->getLoc();
mlir::Value result = mlir::LLVM::UndefOp::create(rewriter, loc, llvmTy);
for (auto [idx, elt] : llvm::enumerate(typeInfoAttr.getData())) {
mlir::Value init = visit(elt);
result =
mlir::LLVM::InsertValueOp::create(rewriter, loc, result, init, idx);
}
return result;
}
```
https://github.com/llvm/llvm-project/pull/159426
More information about the cfe-commits
mailing list