[Mlir-commits] [mlir] b75162c - [mlir][LLVM] Put personality pointer in program address space (#230848)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Tue Oct 13 05:00:29 PDT 2026


Author: Arseniy Obolenskiy
Date: 2026-10-13T14:00:23+02:00
New Revision: b75162cdab1bcb55003d2420339a387b231bb57a

URL: https://github.com/llvm/llvm-project/commit/b75162cdab1bcb55003d2420339a387b231bb57a
DIFF: https://github.com/llvm/llvm-project/commit/b75162cdab1bcb55003d2420339a387b231bb57a.diff

LOG: [mlir][LLVM] Put personality pointer in program address space (#230848)

Avoid crashes on targets where functions are not in address space 0, for
example, it is required for `noexcept` functions crash fix in CIR

Added: 
    

Modified: 
    mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
    mlir/test/Target/LLVMIR/llvmir.mlir

Removed: 
    


################################################################################
diff  --git a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
index 4757a4ca432197..07b9d683d309d2 100644
--- a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
@@ -1697,7 +1697,8 @@ LogicalResult ModuleTranslation::convertOneFunction(LLVMFuncOp func) {
 
   // Check the personality and set it.
   if (func.getPersonality()) {
-    llvm::Type *ty = llvm::PointerType::getUnqual(llvmFunc->getContext());
+    llvm::Type *ty = llvm::PointerType::get(
+        llvmContext, llvmModule->getDataLayout().getProgramAddressSpace());
     if (llvm::Constant *pfunc = getLLVMConstant(ty, func.getPersonalityAttr(),
                                                 func.getLoc(), *this))
       llvmFunc->setPersonalityFn(pfunc);

diff  --git a/mlir/test/Target/LLVMIR/llvmir.mlir b/mlir/test/Target/LLVMIR/llvmir.mlir
index 09e23700fa5d1a..bb8bcc32d933e3 100644
--- a/mlir/test/Target/LLVMIR/llvmir.mlir
+++ b/mlir/test/Target/LLVMIR/llvmir.mlir
@@ -1819,6 +1819,18 @@ llvm.func @invoke_phis() -> i32 attributes { personality = @__gxx_personality_v0
 
 // -----
 
+module attributes {llvm.data_layout = "P4"} {
+  llvm.func @__gxx_personality_v0(...) -> i32
+
+  // CHECK-LABEL: @personality_program_as
+  // CHECK-SAME: personality ptr addrspace(4) @__gxx_personality_v0
+  llvm.func @personality_program_as() attributes { personality = @__gxx_personality_v0 } {
+    llvm.return
+  }
+}
+
+// -----
+
 // CHECK-LABEL: @hasGCFunction
 // CHECK-SAME: gc "statepoint-example"
 llvm.func @hasGCFunction() attributes { garbageCollector = "statepoint-example" } {


        


More information about the Mlir-commits mailing list