112 lines · plain
1; RUN: llvm-link %s %S/Inputs/testlink.ll -S | FileCheck %s2 3; CHECK: %Ty1.1 = type { ptr }4; CHECK: %Ty2 = type { ptr, ptr }5%Ty1 = type opaque6%Ty2 = type { ptr, ptr }7 8; CHECK: %intlist = type { ptr, i32 }9%intlist = type { ptr, i32 }10 11; The uses of intlist in the other file should be remapped.12; CHECK-NOT: {{%intlist.[0-9]}}13 14; CHECK: %VecSize = type { <5 x i32> }15; CHECK: %VecSize.{{[0-9]}} = type { <10 x i32> }16%VecSize = type { <5 x i32> }17 18%Struct1 = type opaque19@S1GV = external global %Struct120 21 22@GVTy1 = external global %Ty123@GVTy2 = global %Ty2 { ptr null, ptr null }24 25 26; This should stay the same27; CHECK-DAG: @MyIntList = global %intlist { ptr null, i32 17 }28@MyIntList = global %intlist { ptr null, i32 17 }29 30 31; Nothing to link here.32 33; CHECK-DAG: @0 = external global i3234@0 = external global i3235 36define ptr @use0() {37 ret ptr @038}39 40; CHECK-DAG: @Inte = global i32 141@Inte = global i32 142 43; Intern1 is intern in both files, rename testlink2's.44; CHECK-DAG: @Intern1 = internal constant i32 4245@Intern1 = internal constant i32 4246 47@UseIntern1 = global ptr @Intern148 49; This should get renamed since there is a definition that is non-internal in50; the other module.51; CHECK-DAG: @Intern2.{{[0-9]+}} = internal constant i32 79252@Intern2 = internal constant i32 79253 54@UseIntern2 = global ptr @Intern255 56; CHECK-DAG: @MyVarPtr = linkonce global { ptr } { ptr @MyVar }57@MyVarPtr = linkonce global { ptr } { ptr @MyVar }58 59@UseMyVarPtr = global ptr @MyVarPtr60 61; CHECK-DAG: @MyVar = global i32 462@MyVar = external global i3263 64; Take value from other module.65; CHECK-DAG: AConst = constant i32 123466@AConst = linkonce constant i32 12367 68; Renamed version of Intern1.69; CHECK-DAG: @Intern1.{{[0-9]+}} = internal constant i32 5270 71 72; Globals linked from testlink2.73; CHECK-DAG: @Intern2 = constant i32 1234574 75; CHECK-DAG: @MyIntListPtr = constant76; CHECK-DAG: @1 = constant i32 41277 78 79declare i32 @foo(i32)80 81declare void @print(i32)82 83define void @main() {84 %v1 = load i32, ptr @MyVar85 call void @print(i32 %v1)86 %idx = getelementptr %intlist, ptr @MyIntList, i64 0, i32 187 %v2 = load i32, ptr %idx88 call void @print(i32 %v2)89 %1 = call i32 @foo(i32 5)90 %v3 = load i32, ptr @MyVar91 call void @print(i32 %v3)92 %v4 = load i32, ptr %idx93 call void @print(i32 %v4)94 ret void95}96 97define internal void @testintern() {98 ret void99}100 101define internal void @Testintern() {102 ret void103}104 105define void @testIntern() {106 ret void107}108 109define void @VecSizeCrash(%VecSize) {110 ret void111}112