[clang] [CIR] Implement ARM-specific lowering for method pointers (PR #196592)

Erich Keane via cfe-commits cfe-commits at lists.llvm.org
Mon May 11 06:14:56 PDT 2026


================
@@ -341,14 +356,14 @@ void LowerItaniumCXXABI::lowerGetMethod(
   // points to a virtual function.
   mlir::Value methodPtrField =
       cir::ExtractMemberOp::create(locBuilder, ptrdiffCIRTy, loweredMethod, 0);
-  mlir::Value virtualBit =
-      cir::AndOp::create(rewriter, op.getLoc(), methodPtrField, ptrdiffOne);
-  mlir::Value isVirtual;
+  mlir::Value virtualBit;
   if (useARMMethodPtrABI)
-    llvm_unreachable("ARM method ptr abi NYI");
+    virtualBit = cir::AndOp::create(locBuilder, rawAdj, ptrdiffOne);
   else
-    isVirtual = cir::CmpOp::create(locBuilder, cir::CmpOpKind::eq, virtualBit,
-                                   ptrdiffOne);
+    virtualBit =
+        cir::AndOp::create(rewriter, op.getLoc(), methodPtrField, ptrdiffOne);
----------------
erichkeane wrote:

Why does this one get a location, but the one above doesn't? 

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


More information about the cfe-commits mailing list