In case where a fir.global might be duplicated in an inner module (gpu.module), the conversion pattern will be applied on the module and the gpu module version of the global and try to generate multiple comdat with the same symbol name. This is what we have in the implementation of CUDA Fortran. Just check for the presence of the `ComdatSelectorOp` before creating a new one.
15 lines
468 B
Plaintext
15 lines
468 B
Plaintext
// RUN: fir-opt %s --fir-to-llvm-ir="target=x86_64-unknown-linux-gnu" | FileCheck %s
|
|
// RUN: fir-opt %s --fir-to-llvm-ir="target=x86_64-pc-windows-msvc" | FileCheck %s
|
|
|
|
fir.global linkonce_odr @global_linkonce_odr constant : i32 {
|
|
%0 = arith.constant 0 : i32
|
|
fir.has_value %0 : i32
|
|
}
|
|
|
|
llvm.comdat @__llvm_comdat {
|
|
llvm.comdat_selector @global_linkonce_odr any
|
|
}
|
|
|
|
// CHECK-LABEL: llvm.comdat @__llvm_comdat
|
|
// CHECK: llvm.comdat_selector @global_linkonce_odr any
|