; RUN: rm -rf %t && split-file %s %t ; RUN: llvm-link -S %t/1.ll %t/1-aux.ll -o - | FileCheck %s ; RUN: llvm-link -S %t/2.ll %t/2-aux.ll -o - | FileCheck %s --check-prefix=CHECK2 ;--- 1.ll $c = comdat any @v = global i32 0, comdat ($c) ; CHECK: @v = global i32 0, comdat($c) ; CHECK: @v3 = external global i32 ; CHECK: @v2 = external dllexport global i32 ;--- 1-aux.ll $c = comdat any @v2 = weak dllexport global i32 0, comdat ($c) define ptr @f2() { ret ptr @v2 } @v3 = weak alias i32, ptr @v2 define ptr @f3() { ret ptr @v3 } ;--- 2.ll ;; Check that a private global variable from a non-prevailing comdat group is ;; converted into 'available_externally' and excluded from the comdat group. ; CHECK2: $__profc_foo = comdat any ; CHECK2: @llvm.compiler.used = appending global [2 x ptr] [ptr @__profd_foo.[[SUFFIX:[0-9]+]], ptr @__profd_foo] ; CHECK2: @__profd_foo.[[SUFFIX]] = private global ptr @__profc_foo, comdat($__profc_foo) ; CHECK2: @__profc_foo = linkonce_odr global i64 1, comdat ; CHECK2: @__profd_foo = available_externally dso_local global ptr @__profc_foo{{$}} $__profc_foo = comdat any @__profc_foo = linkonce_odr global i64 1, comdat @__profd_foo = private global ptr @__profc_foo, comdat($__profc_foo) @llvm.compiler.used = appending global [1 x ptr] [ ptr @__profd_foo ] define ptr @bar() { ret ptr @__profc_foo } ;--- 2-aux.ll $__profc_foo = comdat any @__profc_foo = linkonce_odr global i64 1, comdat @__profd_foo = private global ptr @__profc_foo, comdat($__profc_foo) @llvm.compiler.used = appending global [1 x ptr] [ ptr @__profd_foo ] define ptr @baz() { ret ptr @__profc_foo }