diff options
author | Stephen Hines <srhines@google.com> | 2014-07-21 00:45:20 -0700 |
---|---|---|
committer | Stephen Hines <srhines@google.com> | 2014-07-21 00:45:20 -0700 |
commit | c6a4f5e819217e1e12c458aed8e7b122e23a3a58 (patch) | |
tree | 81b7dd2bb4370a392f31d332a566c903b5744764 /test/Linker | |
parent | 19c6fbb3e8aaf74093afa08013134b61fa08f245 (diff) | |
download | external_llvm-c6a4f5e819217e1e12c458aed8e7b122e23a3a58.zip external_llvm-c6a4f5e819217e1e12c458aed8e7b122e23a3a58.tar.gz external_llvm-c6a4f5e819217e1e12c458aed8e7b122e23a3a58.tar.bz2 |
Update LLVM for rebase to r212749.
Includes a cherry-pick of:
r212948 - fixes a small issue with atomic calls
Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
Diffstat (limited to 'test/Linker')
-rw-r--r-- | test/Linker/Inputs/PR8300.b.ll | 2 | ||||
-rw-r--r-- | test/Linker/Inputs/alias.ll | 2 | ||||
-rw-r--r-- | test/Linker/Inputs/comdat.ll | 20 | ||||
-rw-r--r-- | test/Linker/Inputs/comdat2.ll | 2 | ||||
-rw-r--r-- | test/Linker/Inputs/comdat3.ll | 2 | ||||
-rw-r--r-- | test/Linker/Inputs/comdat4.ll | 5 | ||||
-rw-r--r-- | test/Linker/Inputs/comdat5.ll | 15 | ||||
-rw-r--r-- | test/Linker/Inputs/cycle.ll | 2 | ||||
-rw-r--r-- | test/Linker/alias.ll | 6 | ||||
-rw-r--r-- | test/Linker/comdat.ll | 32 | ||||
-rw-r--r-- | test/Linker/comdat2.ll | 7 | ||||
-rw-r--r-- | test/Linker/comdat3.ll | 5 | ||||
-rw-r--r-- | test/Linker/comdat4.ll | 5 | ||||
-rw-r--r-- | test/Linker/comdat5.ll | 7 | ||||
-rw-r--r-- | test/Linker/comdat6.ll | 13 | ||||
-rw-r--r-- | test/Linker/comdat7.ll | 9 | ||||
-rw-r--r-- | test/Linker/comdat8.ll | 10 | ||||
-rw-r--r-- | test/Linker/cycle.ll | 7 | ||||
-rw-r--r-- | test/Linker/unnamed-addr1-a.ll | 11 | ||||
-rw-r--r-- | test/Linker/unnamed-addr1-b.ll | 6 |
20 files changed, 154 insertions, 14 deletions
diff --git a/test/Linker/Inputs/PR8300.b.ll b/test/Linker/Inputs/PR8300.b.ll index 362d309..9e538f5 100644 --- a/test/Linker/Inputs/PR8300.b.ll +++ b/test/Linker/Inputs/PR8300.b.ll @@ -1,7 +1,7 @@ %foo = type { [8 x i8] } %bar = type { [9 x i8] } -@zed = alias void (%foo*), void (%bar*)* @xyz +@zed = alias bitcast (void (%bar*)* @xyz to void (%foo*)*) define void @xyz(%bar* %this) { entry: diff --git a/test/Linker/Inputs/alias.ll b/test/Linker/Inputs/alias.ll index b869cae..f379476 100644 --- a/test/Linker/Inputs/alias.ll +++ b/test/Linker/Inputs/alias.ll @@ -1,3 +1,3 @@ @zed = global i32 42 @foo = alias i32* @zed -@foo2 = alias i16, i32* @zed +@foo2 = alias bitcast (i32* @zed to i16*) diff --git a/test/Linker/Inputs/comdat.ll b/test/Linker/Inputs/comdat.ll new file mode 100644 index 0000000..fdcca49 --- /dev/null +++ b/test/Linker/Inputs/comdat.ll @@ -0,0 +1,20 @@ +target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" +target triple = "i686-pc-windows-msvc" + +$foo = comdat largest +@foo = global i64 43, comdat $foo + +define i32 @bar() comdat $foo { + ret i32 43 +} + +$qux = comdat largest +@qux = global i32 13, comdat $qux +@in_unselected_group = global i32 13, comdat $qux + +define i32 @baz() comdat $qux { + ret i32 13 +} + +$any = comdat any +@any = global i64 7, comdat $any diff --git a/test/Linker/Inputs/comdat2.ll b/test/Linker/Inputs/comdat2.ll new file mode 100644 index 0000000..9e18304 --- /dev/null +++ b/test/Linker/Inputs/comdat2.ll @@ -0,0 +1,2 @@ +$foo = comdat largest +@foo = global i64 43, comdat $foo diff --git a/test/Linker/Inputs/comdat3.ll b/test/Linker/Inputs/comdat3.ll new file mode 100644 index 0000000..06f08b9 --- /dev/null +++ b/test/Linker/Inputs/comdat3.ll @@ -0,0 +1,2 @@ +$foo = comdat noduplicates +@foo = global i64 43, comdat $foo diff --git a/test/Linker/Inputs/comdat4.ll b/test/Linker/Inputs/comdat4.ll new file mode 100644 index 0000000..bbfe3f7 --- /dev/null +++ b/test/Linker/Inputs/comdat4.ll @@ -0,0 +1,5 @@ +target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" +target triple = "i686-pc-windows-msvc" + +$foo = comdat samesize +@foo = global i64 42, comdat $foo diff --git a/test/Linker/Inputs/comdat5.ll b/test/Linker/Inputs/comdat5.ll new file mode 100644 index 0000000..800af18 --- /dev/null +++ b/test/Linker/Inputs/comdat5.ll @@ -0,0 +1,15 @@ +target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" +target triple = "i686-pc-windows-msvc" + +%MSRTTICompleteObjectLocator = type { i32, i32, i32, i8*, %MSRTTIClassHierarchyDescriptor* } +%MSRTTIClassHierarchyDescriptor = type { i32, i32, i32, %MSRTTIBaseClassDescriptor** } +%MSRTTIBaseClassDescriptor = type { i8*, i32, i32, i32, i32, i32, %MSRTTIClassHierarchyDescriptor* } +%struct.S = type { i32 (...)** } + +$"\01??_7S@@6B@" = comdat largest + +@"\01??_R4S@@6B@" = external constant %MSRTTICompleteObjectLocator +@some_name = private unnamed_addr constant [2 x i8*] [i8* bitcast (%MSRTTICompleteObjectLocator* @"\01??_R4S@@6B@" to i8*), i8* bitcast (void (%struct.S*, i32)* @"\01??_GS@@UAEPAXI@Z" to i8*)], comdat $"\01??_7S@@6B@" +@"\01??_7S@@6B@" = alias getelementptr([2 x i8*]* @some_name, i32 0, i32 1) + +declare x86_thiscallcc void @"\01??_GS@@UAEPAXI@Z"(%struct.S*, i32) unnamed_addr diff --git a/test/Linker/Inputs/cycle.ll b/test/Linker/Inputs/cycle.ll deleted file mode 100644 index d0eddb6..0000000 --- a/test/Linker/Inputs/cycle.ll +++ /dev/null @@ -1,2 +0,0 @@ -@foo = alias i32* @bar -@bar = weak global i32 0 diff --git a/test/Linker/alias.ll b/test/Linker/alias.ll index 5809a15..bce51ad 100644 --- a/test/Linker/alias.ll +++ b/test/Linker/alias.ll @@ -5,12 +5,12 @@ ; CHECK-DAG: @foo = alias i32* @zed @bar = alias i32* @foo -; CHECK-DAG: @bar = alias i32* @zed +; CHECK-DAG: @bar = alias i32* @foo @foo2 = weak global i32 0 -; CHECK-DAG: @foo2 = alias i16, i32* @zed +; CHECK-DAG: @foo2 = alias bitcast (i32* @zed to i16*) @bar2 = alias i32* @foo2 -; CHECK-DAG: @bar2 = alias i32* @zed +; CHECK-DAG: @bar2 = alias bitcast (i16* @foo2 to i32*) ; CHECK-DAG: @zed = global i32 42 diff --git a/test/Linker/comdat.ll b/test/Linker/comdat.ll new file mode 100644 index 0000000..4d2aef7 --- /dev/null +++ b/test/Linker/comdat.ll @@ -0,0 +1,32 @@ +; RUN: llvm-link %s %p/Inputs/comdat.ll -S -o - | FileCheck %s +target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" +target triple = "i686-pc-windows-msvc" + +$foo = comdat largest +@foo = global i32 42, comdat $foo + +define i32 @bar() comdat $foo { + ret i32 42 +} + +$qux = comdat largest +@qux = global i64 12, comdat $qux + +define i32 @baz() comdat $qux { + ret i32 12 +} + +$any = comdat any +@any = global i64 6, comdat $any + +; CHECK: $qux = comdat largest +; CHECK: $foo = comdat largest +; CHECK: $any = comdat any + +; CHECK: @qux = global i64 12, comdat $qux +; CHECK: @any = global i64 6, comdat $any +; CHECK: @foo = global i64 43, comdat $foo +; CHECK-NOT: @in_unselected_group = global i32 13, comdat $qux + +; CHECK: define i32 @baz() comdat $qux +; CHECK: define i32 @bar() comdat $foo diff --git a/test/Linker/comdat2.ll b/test/Linker/comdat2.ll new file mode 100644 index 0000000..60c3d7c --- /dev/null +++ b/test/Linker/comdat2.ll @@ -0,0 +1,7 @@ +; RUN: not llvm-link %s %p/Inputs/comdat.ll -S -o - 2>&1 | FileCheck %s +target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" +target triple = "i686-pc-windows-msvc" + +$foo = comdat samesize +@foo = global i32 42, comdat $foo +; CHECK: Linking COMDATs named 'foo': invalid selection kinds! diff --git a/test/Linker/comdat3.ll b/test/Linker/comdat3.ll new file mode 100644 index 0000000..f0d9a48 --- /dev/null +++ b/test/Linker/comdat3.ll @@ -0,0 +1,5 @@ +; RUN: not llvm-link %s %p/Inputs/comdat2.ll -S -o - 2>&1 | FileCheck %s + +$foo = comdat largest +@foo = global i32 43, comdat $foo +; CHECK: Linking COMDATs named 'foo': can't do size dependent selection without DataLayout! diff --git a/test/Linker/comdat4.ll b/test/Linker/comdat4.ll new file mode 100644 index 0000000..50c1778 --- /dev/null +++ b/test/Linker/comdat4.ll @@ -0,0 +1,5 @@ +; RUN: not llvm-link %s %p/Inputs/comdat3.ll -S -o - 2>&1 | FileCheck %s + +$foo = comdat noduplicates +@foo = global i64 43, comdat $foo +; CHECK: Linking COMDATs named 'foo': noduplicates has been violated! diff --git a/test/Linker/comdat5.ll b/test/Linker/comdat5.ll new file mode 100644 index 0000000..011fb8c --- /dev/null +++ b/test/Linker/comdat5.ll @@ -0,0 +1,7 @@ +; RUN: not llvm-link %s %p/Inputs/comdat4.ll -S -o - 2>&1 | FileCheck %s +target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" +target triple = "i686-pc-windows-msvc" + +$foo = comdat samesize +@foo = global i32 42, comdat $foo +; CHECK: Linking COMDATs named 'foo': SameSize violated! diff --git a/test/Linker/comdat6.ll b/test/Linker/comdat6.ll new file mode 100644 index 0000000..efa5dfb --- /dev/null +++ b/test/Linker/comdat6.ll @@ -0,0 +1,13 @@ +; RUN: llvm-link %s %p/Inputs/comdat5.ll -S -o - 2>&1 | FileCheck %s +; RUN: llvm-link %p/Inputs/comdat5.ll %s -S -o - 2>&1 | FileCheck %s +target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" +target triple = "i686-pc-windows-msvc" + +%struct.S = type { i32 (...)** } + +$"\01??_7S@@6B@" = comdat largest +@"\01??_7S@@6B@" = linkonce_odr unnamed_addr constant [1 x i8*] [i8* bitcast (void (%struct.S*, i32)* @"\01??_GS@@UAEPAXI@Z" to i8*)], comdat $"\01??_7S@@6B@" + +; CHECK: @"\01??_7S@@6B@" = alias getelementptr inbounds ([2 x i8*]* @some_name, i32 0, i32 1) + +declare x86_thiscallcc void @"\01??_GS@@UAEPAXI@Z"(%struct.S*, i32) unnamed_addr diff --git a/test/Linker/comdat7.ll b/test/Linker/comdat7.ll new file mode 100644 index 0000000..c3ff3f6 --- /dev/null +++ b/test/Linker/comdat7.ll @@ -0,0 +1,9 @@ +; RUN: not llvm-link %s %p/Inputs/comdat5.ll -S -o - 2>&1 | FileCheck %s +target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" +target triple = "i686-pc-windows-msvc" + +$"\01??_7S@@6B@" = comdat largest +define void @"\01??_7S@@6B@"() { + ret void +} +; CHECK: GlobalVariable required for data dependent selection! diff --git a/test/Linker/comdat8.ll b/test/Linker/comdat8.ll new file mode 100644 index 0000000..21669f6 --- /dev/null +++ b/test/Linker/comdat8.ll @@ -0,0 +1,10 @@ +; RUN: not llvm-link %s %p/Inputs/comdat5.ll -S -o - 2>&1 | FileCheck %s +target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" +target triple = "i686-pc-windows-msvc" + +$"\01??_7S@@6B@" = comdat largest +define void @some_name() { + ret void +} +@"\01??_7S@@6B@" = alias i8* inttoptr (i32 ptrtoint (void ()* @some_name to i32) to i8*) +; CHECK: COMDAT key involves incomputable alias size. diff --git a/test/Linker/cycle.ll b/test/Linker/cycle.ll deleted file mode 100644 index 7d9ad2d..0000000 --- a/test/Linker/cycle.ll +++ /dev/null @@ -1,7 +0,0 @@ -; RUN: not llvm-link %s %S/Inputs/cycle.ll 2>&1 | FileCheck %s -; RUN: not llvm-link %S/Inputs/cycle.ll %s 2>&1 | FileCheck %s - -; CHECK: Linking these modules creates an alias cycle - -@foo = weak global i32 0 -@bar = alias i32* @foo diff --git a/test/Linker/unnamed-addr1-a.ll b/test/Linker/unnamed-addr1-a.ll index adaa400..794ae98 100644 --- a/test/Linker/unnamed-addr1-a.ll +++ b/test/Linker/unnamed-addr1-a.ll @@ -21,6 +21,11 @@ define weak void @func-b() unnamed_addr { ret void } @global-f = weak global i32 42 ; CHECK-DAG: @global-f = global i32 42 +@alias-a = weak global i32 42 +; CHECK-DAG: @alias-a = alias i32* @global-f +@alias-b = weak unnamed_addr global i32 42 +; CHECK-DAG: @alias-b = unnamed_addr alias i32* @global-f + declare void @func-c() ; CHECK-DAG: define weak void @func-c() { define weak void @func-d() { ret void } @@ -38,6 +43,12 @@ define weak void @func-e() unnamed_addr { ret void } @global-j = weak global i32 42 ; CHECK-DAG: @global-j = global i32 42 +@alias-c = weak global i32 42 +; CHECK-DAG: @alias-c = alias i32* @global-f +@alias-d = weak unnamed_addr global i32 42 +; CHECK-DAG: @alias-d = alias i32* @global-f + + declare void @func-g() ; CHECK-DAG: define weak void @func-g() { define weak void @func-h() { ret void } diff --git a/test/Linker/unnamed-addr1-b.ll b/test/Linker/unnamed-addr1-b.ll index aa1507b..39a0c8b 100644 --- a/test/Linker/unnamed-addr1-b.ll +++ b/test/Linker/unnamed-addr1-b.ll @@ -6,6 +6,9 @@ @global-e = unnamed_addr global i32 42 @global-f = unnamed_addr global i32 42 +@alias-a = unnamed_addr alias i32* @global-f +@alias-b = unnamed_addr alias i32* @global-f + define weak void @func-c() unnamed_addr { ret void } define weak void @func-d() unnamed_addr { ret void } define weak void @func-e() unnamed_addr { ret void } @@ -15,6 +18,9 @@ define weak void @func-e() unnamed_addr { ret void } @global-i = global i32 42 @global-j = global i32 42 +@alias-c = alias i32* @global-f +@alias-d = alias i32* @global-f + define weak void @func-g() { ret void } define weak void @func-h() { ret void } define weak void @func-i() { ret void } |