llvm/mlir/test/Target/LLVMIR/comdat.mlir

// RUN: mlir-translate -mlir-to-llvmir %s | FileCheck %s

llvm.comdat @__llvm_comdat {
  // CHECK-DAG: $[[ANY:.*]] = comdat any
  llvm.comdat_selector @any any
  // CHECK-DAG: $[[EXACT:.*]] = comdat exactmatch
  llvm.comdat_selector @exactmatch exactmatch
  // CHECK-DAG: $[[LARGEST:.*]] = comdat largest
  llvm.comdat_selector @largest largest
  // CHECK-DAG: $[[NODEDUP:.*]] = comdat nodeduplicate
  llvm.comdat_selector @nodeduplicate nodeduplicate
  // CHECK-DAG: $[[SAME:.*]] = comdat samesize
  llvm.comdat_selector @samesize samesize
}

// CHECK: @any = internal constant i64 1, comdat
llvm.mlir.global internal constant @any(1 : i64) comdat(@__llvm_comdat::@any) : i64
// CHECK: @any_global = internal constant i64 1, comdat($[[ANY]])
llvm.mlir.global internal constant @any_global(1 : i64) comdat(@__llvm_comdat::@any) : i64
// CHECK: @exact_global = internal constant i64 1, comdat($[[EXACT]])
llvm.mlir.global internal constant @exact_global(1 : i64) comdat(@__llvm_comdat::@exactmatch) : i64
// CHECK: @largest_global = internal constant i64 1, comdat($[[LARGEST]])
llvm.mlir.global internal constant @largest_global(1 : i64) comdat(@__llvm_comdat::@largest) : i64

// CHECK: define void @nodeduplicate() comdat
llvm.func @nodeduplicate() comdat(@__llvm_comdat::@nodeduplicate) { llvm.return }
// CHECK: define void @nodeduplicate_func() comdat($[[NODEDUP]])
llvm.func @nodeduplicate_func() comdat(@__llvm_comdat::@nodeduplicate) { llvm.return }
// CHECK: define void @samesize_func() comdat($[[SAME]])
llvm.func @samesize_func() comdat(@__llvm_comdat::@samesize) { llvm.return }