137 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; RUN: llvm-link -S %t/2.ll %t/2-aux.ll -o - | FileCheck %s --check-prefix=CHECK24 5;; A private linkage variable can be copied.6; RUN: llvm-link -S %t/3.ll %t/3-aux.ll -o - | FileCheck %s --check-prefix=CHECK37 8;--- 1.ll9; CHECK: @foo = global i8 0, comdat10 11; CHECK: define void @zed() {12; CHECK: call void @bar()13; CHECK: ret void14; CHECK: }15 16; CHECK: declare void @bar()17 18$foo = comdat any19@foo = global i8 0, comdat20 21;--- 1-aux.ll22$foo = comdat any23@foo = global i8 1, comdat24define void @zed() {25 call void @bar()26 ret void27}28define void @bar() comdat($foo) {29 ret void30}31 32;--- 2.ll33$c1 = comdat any34 35@v1 = weak_odr global i32 42, comdat($c1)36define weak_odr i32 @f1(ptr) comdat($c1) {37bb10:38 br label %bb1139bb11:40 ret i32 4241}42 43@r11 = global ptr @v144@r12 = global ptr @f145 46@a11 = alias i32, ptr @v147@a12 = alias i16, ptr @v148 49@a13 = alias i32 (ptr), ptr @f150@a14 = alias i16, ptr @f151@a15 = alias i16, ptr @a1452 53; CHECK2: $c1 = comdat any54; CHECK2: $c2 = comdat any55 56; CHECK2-DAG: @will_be_undefined = external global i3257 58; CHECK2-DAG: @v1 = weak_odr global i32 42, comdat($c1)59 60; CHECK2-DAG: @r11 = global ptr @v1{{$}}61; CHECK2-DAG: @r12 = global ptr @f1{{$}}62 63; CHECK2-DAG: @r21 = global ptr @v1{{$}}64; CHECK2-DAG: @r22 = global ptr @f1{{$}}65 66; CHECK2-DAG: @v1.1 = internal global i32 41, comdat($c2)67 68; CHECK2-DAG: @a11 = alias i32, ptr @v1{{$}}69; CHECK2-DAG: @a12 = alias i16, ptr @v170 71; CHECK2-DAG: @a13 = alias i32 (ptr), ptr @f1{{$}}72; CHECK2-DAG: @a14 = alias i16, ptr @f173 74; CHECK2-DAG: @a21 = alias i32, ptr @v1.1{{$}}75; CHECK2-DAG: @a22 = alias i16, ptr @v1.176 77; CHECK2-DAG: @a23 = alias i32 (ptr), ptr @f1.2{{$}}78; CHECK2-DAG: @a24 = alias i16, ptr @f1.279 80; CHECK2: define weak_odr protected i32 @f1(ptr %0) comdat($c1) {81; CHECK2-NEXT: bb10:82; CHECK2-NEXT: br label %bb11{{$}}83; CHECK2: bb11:84; CHECK2-NEXT: ret i32 4285; CHECK2-NEXT: }86 87; CHECK2: define internal i32 @f1.2(ptr %this) comdat($c2) {88; CHECK2-NEXT: bb20:89; CHECK2-NEXT: store ptr %this, ptr null90; CHECK2-NEXT: br label %bb2191; CHECK2: bb21:92; CHECK2-NEXT: ret i32 4193; CHECK2-NEXT: }94 95;--- 2-aux.ll96$c2 = comdat any97$c1 = comdat any98 99; This is only present in this file. The linker will keep $c1 from the first100; file and this will be undefined.101@will_be_undefined = global i32 1, comdat($c1)102@use = global ptr @will_be_undefined103 104@v1 = weak_odr global i32 41, comdat($c2)105define weak_odr protected i32 @f1(ptr %this) comdat($c2) {106bb20:107 store ptr %this, ptr null108 br label %bb21109bb21:110 ret i32 41111}112 113@r21 = global ptr @v1114@r22 = global ptr @f1115 116@a21 = alias i32, ptr @v1117@a22 = alias i16, ptr @v1118 119@a23 = alias i32(ptr), ptr @f1120@a24 = alias i16, ptr @f1121@a25 = alias i16, ptr @a24122 123;--- 3.ll124; CHECK3: @bar = global i32 0, comdat($a1)125; CHECK3: @baz = private global i32 42, comdat($a1)126; CHECK3: @a1 = internal alias i32, ptr @baz127$a1 = comdat any128@bar = global i32 0, comdat($a1)129 130;--- 3-aux.ll131$a1 = comdat any132@baz = private global i32 42, comdat($a1)133@a1 = internal alias i32, ptr @baz134define ptr @abc() {135 ret ptr @a1136}137