1; RUN: mlir-translate -import-llvm -split-input-file %s | FileCheck %s 2 3; CHECK: llvm.comdat @__llvm_global_comdat { 4; CHECK: llvm.comdat_selector @foo any 5$foo = comdat any 6; CHECK: } 7 8; CHECK: llvm.mlir.global external @foo(42 : i64) comdat(@__llvm_global_comdat::@foo) 9@foo = global i64 42, comdat 10; CHECK: llvm.mlir.global external @bar(42 : i64) comdat(@__llvm_global_comdat::@foo) 11@bar = global i64 42, comdat($foo) 12 13; // ----- 14 15; CHECK: llvm.comdat @__llvm_global_comdat { 16; CHECK: llvm.comdat_selector @foo any 17$foo = comdat any 18; CHECK: } 19 20 21; CHECK: llvm.func @foo() comdat(@__llvm_global_comdat::@foo) 22define void @foo() comdat { 23 ret void 24} 25; CHECK: llvm.func @bar() comdat(@__llvm_global_comdat::@foo) 26define void @bar() comdat($foo) { 27 ret void 28} 29 30; // ----- 31 32; CHECK: llvm.comdat @__llvm_global_comdat { 33; CHECK: llvm.comdat_selector @exact exactmatch 34$exact = comdat exactmatch 35; CHECK: llvm.comdat_selector @largest largest 36$largest = comdat largest 37; CHECK: llvm.comdat_selector @nodedup nodeduplicate 38$nodedup = comdat nodeduplicate 39; CHECK: llvm.comdat_selector @same samesize 40$same = comdat samesize 41; CHECK: } 42 43@exact = global i64 42, comdat 44@largest = global i64 42, comdat 45@nodedup = global i64 42, comdat 46@same = global i64 42, comdat 47 48; // ----- 49 50; Verify a global comdat operation is only created if there are comdats to import. 51; CHECK-NOT: llvm.comdat 52; CHECK: llvm.mlir.global external @foobar 53; CHECK-NOT: llvm.comdat 54@foobar = global i64 42 55