[clang] [CIR][HIP] Support managed variables (PR #230910)

Arseniy Obolenskiy via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 12 08:56:05 PDT 2026


================
@@ -3287,18 +3296,38 @@ void LoweringPreparePass::buildCUDARegisterVars(cir::CIRBaseBuilderTy &builder,
       llvm_unreachable("Texture registration NYI");
     }
 
-    if (regAttr.getIsManaged())
-      llvm_unreachable("Managed variable registration NYI");
+    // External managed variables are registered by their defining TU.
+    if (regAttr.getIsManaged() && global.isDeclaration())
+      continue;
 
     GlobalOp deviceNameStr = makeConstantString(regAttr.getDeviceSideName());
     mlir::Value deviceName = builder.createBitcast(
         builder.createGetGlobal(deviceNameStr), voidPtrTy);
     mlir::Value hostVar =
         builder.createBitcast(builder.createGetGlobal(global), voidPtrTy);
 
+    llvm::TypeSize size = dataLayout.getTypeAllocSize(global.getSymType());
+
+    if (regAttr.getIsManaged()) {
+      llvm::StringRef name = global.getSymName();
+      assert(name.ends_with(".managed") &&
+             "HIP managed variables not transformed");
----------------
aobolensk wrote:

Yes, see above

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


More information about the cfe-commits mailing list