diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-11-24 20:35:59 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-11-24 20:35:59 +0000 |
commit | d8e637eecfd9e7bbcf3b6a1f7d2c072f4ab9dea5 (patch) | |
tree | 93be7b4f78ee02b27956f29e9aa2f48b964a3c0d /test/Linker/testlink.ll | |
parent | cd64acece255107a0dff11cb0046425182c41972 (diff) |
Pass the .ll files to llvm-link directly. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222681 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Linker/testlink.ll')
-rw-r--r-- | test/Linker/testlink.ll | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/test/Linker/testlink.ll b/test/Linker/testlink.ll new file mode 100644 index 00000000000..a24d67f7e55 --- /dev/null +++ b/test/Linker/testlink.ll @@ -0,0 +1,99 @@ +; RUN: llvm-link %s %S/Inputs/testlink.ll -S | FileCheck %s + +; CHECK: %Ty2 = type { %Ty1* } +; CHECK: %Ty1 = type { %Ty2* } +%Ty1 = type opaque +%Ty2 = type { %Ty1* } + +; CHECK: %intlist = type { %intlist*, i32 } +%intlist = type { %intlist*, i32 } + +; The uses of intlist in the other file should be remapped. +; CHECK-NOT: {{%intlist.[0-9]}} + +; CHECK: %VecSize = type { <5 x i32> } +; CHECK: %VecSize.{{[0-9]}} = type { <10 x i32> } +%VecSize = type { <5 x i32> } + +%Struct1 = type opaque +@S1GV = external global %Struct1* + + +@GVTy1 = external global %Ty1* +@GVTy2 = global %Ty2* null + + +; This should stay the same +; CHECK: @MyIntList = global %intlist { %intlist* null, i32 17 } +@MyIntList = global %intlist { %intlist* null, i32 17 } + + +; Nothing to link here. + +; CHECK: @0 = external global i32 +@0 = external global i32 +; CHECK: @Inte = global i32 1 +@Inte = global i32 1 + +; Intern1 is intern in both files, rename testlink2's. +; CHECK: @Intern1 = internal constant i32 42 +@Intern1 = internal constant i32 42 + +; This should get renamed since there is a definition that is non-internal in +; the other module. +; CHECK: @Intern2{{[0-9]+}} = internal constant i32 792 +@Intern2 = internal constant i32 792 + + +; CHECK: @MyVarPtr = linkonce global { i32* } { i32* @MyVar } +@MyVarPtr = linkonce global { i32* } { i32* @MyVar } + +; CHECK: @MyVar = global i32 4 +@MyVar = external global i32 + +; Take value from other module. +; CHECK: AConst = constant i32 1234 +@AConst = linkonce constant i32 123 + +; Renamed version of Intern1. +; CHECK: @Intern1{{[0-9]+}} = internal constant i32 52 + + +; Globals linked from testlink2. +; CHECK: @Intern2 = constant i32 12345 + +; CHECK: @MyIntListPtr = constant +; CHECK: @1 = constant i32 412 + + +declare i32 @foo(i32) + +declare void @print(i32) + +define void @main() { + %v1 = load i32* @MyVar + call void @print(i32 %v1) + %idx = getelementptr %intlist* @MyIntList, i64 0, i32 1 + %v2 = load i32* %idx + call void @print(i32 %v2) + %1 = call i32 @foo(i32 5) + %v3 = load i32* @MyVar + call void @print(i32 %v3) + %v4 = load i32* %idx + call void @print(i32 %v4) + ret void +} + +define internal void @testintern() { + ret void +} + +define internal void @Testintern() { + ret void +} + +define void @testIntern() { + ret void +} + +declare void @VecSizeCrash(%VecSize) |