Skip to content

Commit 74c2c04

Browse files
[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.
1 parent 3573065 commit 74c2c04

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2646,6 +2646,7 @@ LogicalResult AliasOp::verify() {
26462646
case Linkage::Internal:
26472647
case Linkage::Private:
26482648
case Linkage::Weak:
2649+
case Linkage::WeakODR:
26492650
case Linkage::Linkonce:
26502651
case Linkage::LinkonceODR:
26512652
case Linkage::AvailableExternally:

mlir/test/Dialect/LLVMIR/alias.mlir

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,23 @@ llvm.mlir.alias external @_ZTV1D : !llvm.struct<(array<3 x ptr>)> {
2626

2727
// -----
2828

29-
llvm.mlir.global external @zed(42 : i32) : i32
29+
llvm.mlir.global weak_odr @zed(42 : i32) : i32
3030

31-
llvm.mlir.alias external @foo : i32 {
31+
llvm.mlir.alias weak_odr @foo : i32 {
3232
%0 = llvm.mlir.addressof @zed : !llvm.ptr
3333
llvm.return %0 : !llvm.ptr
3434
}
3535

36-
llvm.mlir.alias external @foo2 : i16 {
36+
llvm.mlir.alias weak_odr @foo2 : i16 {
3737
%0 = llvm.mlir.addressof @zed : !llvm.ptr
3838
llvm.return %0 : !llvm.ptr
3939
}
4040

41-
// CHECK: llvm.mlir.alias external @foo : i32 {
41+
// CHECK: llvm.mlir.alias weak_odr @foo : i32 {
4242
// CHECK: %[[ADDR:.*]] = llvm.mlir.addressof @zed : !llvm.ptr
4343
// CHECK: llvm.return %[[ADDR]] : !llvm.ptr
4444
// CHECK: }
45-
// CHECK: llvm.mlir.alias external @foo2 : i16 {
45+
// CHECK: llvm.mlir.alias weak_odr @foo2 : i16 {
4646
// CHECK: %[[ADDR:.*]] = llvm.mlir.addressof @zed : !llvm.ptr
4747
// CHECK: llvm.return %[[ADDR]] : !llvm.ptr
4848
// CHECK: }

mlir/test/Target/LLVMIR/Import/alias.ll

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,13 @@ entry:
6262

6363
; // -----
6464

65+
@glob.private2 = private constant [32 x i32] zeroinitializer
66+
@glob2 = weak_odr hidden alias [32 x i32], inttoptr (i64 add (i64 ptrtoint (ptr @glob.private2 to i64), i64 1234) to ptr)
67+
68+
; CHECK: llvm.mlir.alias weak_odr hidden @glob2 {dso_local} : !llvm.array<32 x i32> {
69+
70+
; // -----
71+
6572
@g1 = private global i32 0
6673
@g2 = internal constant ptr @a1
6774
@g3 = internal constant ptr @a2

0 commit comments

Comments
 (0)