44 lines · plain
1; RUN: rm -rf %t && split-file %s %t2; RUN: llvm-link -S %t/1.ll %t/1-aux.ll -o - | FileCheck %s3 4;--- 1.ll5; In 1-aux.ll a function not in the $foo comdat (zed) references an6; internal function in the comdat $foo.7; The IR would be ilegal on ELF ("relocation refers to discarded section"),8; but COFF linkers seem to just duplicate the comdat.9 10$foo = comdat any11@foo = internal global i8 0, comdat12define ptr @bar() {13 ret ptr @foo14}15 16; CHECK: $foo = comdat any17 18; CHECK: @foo = internal global i8 0, comdat19; CHECK: @foo.1 = internal global i8 1, comdat($foo)20 21; CHECK: define ptr @bar() {22; CHECK-NEXT: ret ptr @foo23; CHECK-NEXT: }24 25; CHECK: define ptr @zed() {26; CHECK-NEXT: call void @bax()27; CHECK-NEXT: ret ptr @foo.128; CHECK-NEXT: }29 30; CHECK: define internal void @bax() comdat($foo) {31; CHECK-NEXT: ret void32; CHECK-NEXT: }33 34;--- 1-aux.ll35$foo = comdat any36@foo = internal global i8 1, comdat37define ptr @zed() {38 call void @bax()39 ret ptr @foo40}41define internal void @bax() comdat($foo) {42 ret void43}44