brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.0 KiB · 5a77635 Raw
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