[Mlir-commits] [mlir] 74c2c04 - [MLIR][LLVM] Add weak_odr to allowed linkage for alias (#132840)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Tue Mar 25 10:46:06 PDT 2025


Author: Bruno Cardoso Lopes
Date: 2025-03-25T10:46:02-07:00
New Revision: 74c2c049d12cf9c2aa1ce8bcf16048f4a084dd90

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

LOG: [MLIR][LLVM] Add weak_odr to allowed linkage for alias (#132840)

I missed this when originally introduced the feature (note the verifier
message already contains it), this fixes a small bug.

Added: 
    

Modified: 
    mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
    mlir/test/Dialect/LLVMIR/alias.mlir
    mlir/test/Target/LLVMIR/Import/alias.ll

Removed: 
    


################################################################################
diff  --git a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
index 309cee6429af8..18a70cc64628f 100644
--- a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
+++ b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
@@ -2646,6 +2646,7 @@ LogicalResult AliasOp::verify() {
   case Linkage::Internal:
   case Linkage::Private:
   case Linkage::Weak:
+  case Linkage::WeakODR:
   case Linkage::Linkonce:
   case Linkage::LinkonceODR:
   case Linkage::AvailableExternally:

diff  --git a/mlir/test/Dialect/LLVMIR/alias.mlir b/mlir/test/Dialect/LLVMIR/alias.mlir
index 807843a27e6fa..efba248534862 100644
--- a/mlir/test/Dialect/LLVMIR/alias.mlir
+++ b/mlir/test/Dialect/LLVMIR/alias.mlir
@@ -26,23 +26,23 @@ llvm.mlir.alias external @_ZTV1D : !llvm.struct<(array<3 x ptr>)> {
 
 // -----
 
-llvm.mlir.global external @zed(42 : i32) : i32
+llvm.mlir.global weak_odr @zed(42 : i32) : i32
 
-llvm.mlir.alias external @foo : i32 {
+llvm.mlir.alias weak_odr @foo : i32 {
   %0 = llvm.mlir.addressof @zed : !llvm.ptr
   llvm.return %0 : !llvm.ptr
 }
 
-llvm.mlir.alias external @foo2 : i16 {
+llvm.mlir.alias weak_odr @foo2 : i16 {
   %0 = llvm.mlir.addressof @zed : !llvm.ptr
   llvm.return %0 : !llvm.ptr
 }
 
-// CHECK: llvm.mlir.alias external @foo : i32 {
+// CHECK: llvm.mlir.alias weak_odr @foo : i32 {
 // CHECK:   %[[ADDR:.*]] = llvm.mlir.addressof @zed : !llvm.ptr
 // CHECK:   llvm.return %[[ADDR]] : !llvm.ptr
 // CHECK: }
-// CHECK: llvm.mlir.alias external @foo2 : i16 {
+// CHECK: llvm.mlir.alias weak_odr @foo2 : i16 {
 // CHECK:   %[[ADDR:.*]] = llvm.mlir.addressof @zed : !llvm.ptr
 // CHECK:   llvm.return %[[ADDR]] : !llvm.ptr
 // CHECK: }

diff  --git a/mlir/test/Target/LLVMIR/Import/alias.ll b/mlir/test/Target/LLVMIR/Import/alias.ll
index 23eaecb9c9fa7..7015d120a7252 100644
--- a/mlir/test/Target/LLVMIR/Import/alias.ll
+++ b/mlir/test/Target/LLVMIR/Import/alias.ll
@@ -62,6 +62,13 @@ entry:
 
 ; // -----
 
+ at glob.private2 = private constant [32 x i32] zeroinitializer
+ at glob2 = weak_odr hidden alias [32 x i32], inttoptr (i64 add (i64 ptrtoint (ptr @glob.private2 to i64), i64 1234) to ptr)
+
+; CHECK: llvm.mlir.alias weak_odr hidden @glob2 {dso_local} : !llvm.array<32 x i32> {
+
+; // -----
+
 @g1 = private global i32 0
 @g2 = internal constant ptr @a1
 @g3 = internal constant ptr @a2


        


More information about the Mlir-commits mailing list