brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · d8940a4 Raw
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