diff options
Diffstat (limited to 'llvm/test')
21 files changed, 79 insertions, 43 deletions
diff --git a/llvm/test/Bitcode/thinlto-summary-local-5.0.ll b/llvm/test/Bitcode/thinlto-summary-local-5.0.ll new file mode 100644 index 00000000000..cbc48d23df3 --- /dev/null +++ b/llvm/test/Bitcode/thinlto-summary-local-5.0.ll @@ -0,0 +1,22 @@ +; Bitcode compatibility test for dso_local flag in thin-lto summaries. +; Checks that older bitcode summaries without the dso_local op are still +; properly parsed and don't set GlobalValues as dso_local. + +; RUN: llvm-dis < %s.bc | FileCheck %s +; RUN: llvm-bcanalyzer -dump %s.bc | FileCheck %s --check-prefix=BCAN + +define void @foo() { +;CHECK-DAG:define void @foo() + ret void +} + +@bar = global i32 0 +;CHECK-DAG: @bar = global i32 0 + +@baz = alias i32, i32* @bar +;CHECK-DAG: @bar = global i32 0 + +;BCAN: <SOURCE_FILENAME +;BCAN-NEXT: <GLOBALVAR {{.*}} op7=0/> +;BCAN-NEXT: <FUNCTION {{.*}} op16=0/> +;BCAN-NEXT: <ALIAS {{.*}} op9=0/> diff --git a/llvm/test/Bitcode/thinlto-summary-local-5.0.ll.bc b/llvm/test/Bitcode/thinlto-summary-local-5.0.ll.bc Binary files differnew file mode 100644 index 00000000000..8dc7ca0a74b --- /dev/null +++ b/llvm/test/Bitcode/thinlto-summary-local-5.0.ll.bc diff --git a/llvm/test/LTO/Resolution/X86/comdat-mixed-lto.ll b/llvm/test/LTO/Resolution/X86/comdat-mixed-lto.ll index f6ee22e4161..d6022c64351 100644 --- a/llvm/test/LTO/Resolution/X86/comdat-mixed-lto.ll +++ b/llvm/test/LTO/Resolution/X86/comdat-mixed-lto.ll @@ -17,7 +17,7 @@ ; would clash with the copy from this module. ; RUN: llvm-dis %t3.0.0.preopt.bc -o - | FileCheck %s ; CHECK: define internal void @__cxx_global_var_init() section ".text.startup" { -; CHECK: define available_externally void @testglobfunc() section ".text.startup" { +; CHECK: define available_externally dso_local void @testglobfunc() section ".text.startup" { ; ModuleID = 'comdat-mixed-lto.o' source_filename = "comdat-mixed-lto.cpp" diff --git a/llvm/test/LTO/Resolution/X86/comdat.ll b/llvm/test/LTO/Resolution/X86/comdat.ll index 60d082b3e0f..94f28384231 100644 --- a/llvm/test/LTO/Resolution/X86/comdat.ll +++ b/llvm/test/LTO/Resolution/X86/comdat.ll @@ -70,14 +70,14 @@ bb11: ; CHECK-DAG: @a23 = alias i32 (i8*), i32 (i8*)* @f1.2{{$}} ; CHECK-DAG: @a24 = alias i16, bitcast (i32 (i8*)* @f1.2 to i16*) -; CHECK: define weak_odr i32 @f1(i8*) comdat($c1) { +; CHECK: define weak_odr dso_local i32 @f1(i8*) comdat($c1) { ; CHECK-NEXT: bb10: ; CHECK-NEXT: br label %bb11{{$}} ; CHECK: bb11: ; CHECK-NEXT: ret i32 42 ; CHECK-NEXT: } -; CHECK: define internal i32 @f1.2(i8* %this) comdat($c2) { +; CHECK: define internal dso_local i32 @f1.2(i8* %this) comdat($c2) { ; CHECK-NEXT: bb20: ; CHECK-NEXT: store i8* %this, i8** null ; CHECK-NEXT: br label %bb21 diff --git a/llvm/test/LTO/Resolution/X86/commons.ll b/llvm/test/LTO/Resolution/X86/commons.ll index 28bf1ada4a8..8adfb87d6ed 100644 --- a/llvm/test/LTO/Resolution/X86/commons.ll +++ b/llvm/test/LTO/Resolution/X86/commons.ll @@ -4,7 +4,7 @@ ; RUN: llvm-dis -o - %t.out.0.0.preopt.bc | FileCheck %s ; A strong definition should override the common -; CHECK: @x = global i32 42, align 4 +; CHECK: @x = dso_local global i32 42, align 4 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" diff --git a/llvm/test/ThinLTO/X86/deadstrip.ll b/llvm/test/ThinLTO/X86/deadstrip.ll index c19ccb01be3..90de3bb9a32 100644 --- a/llvm/test/ThinLTO/X86/deadstrip.ll +++ b/llvm/test/ThinLTO/X86/deadstrip.ll @@ -18,8 +18,8 @@ ; RUN: -r %t2.bc,_boo,pl \ ; RUN: -r %t2.bc,_dead_func,pl \ ; RUN: -r %t2.bc,_another_dead_func,pl -; RUN: llvm-dis < %t.out.0.3.import.bc | FileCheck %s -; RUN: llvm-dis < %t.out.1.3.import.bc | FileCheck %s --check-prefix=CHECK2 +; RUN: llvm-dis < %t.out.0.3.import.bc | FileCheck %s --check-prefix=LTO2 +; RUN: llvm-dis < %t.out.1.3.import.bc | FileCheck %s --check-prefix=LTO2-CHECK2 ; RUN: llvm-nm %t.out.1 | FileCheck %s --check-prefix=CHECK2-NM ; RUN: llvm-bcanalyzer -dump %t.out.index.bc | FileCheck %s --check-prefix=COMBINED @@ -27,14 +27,14 @@ ; COMBINED-DAG: <COMBINED {{.*}} op2=55 ; Live, Internal ; COMBINED-DAG: <COMBINED {{.*}} op2=39 -; Live, External -; COMBINED-DAG: <COMBINED {{.*}} op2=32 -; COMBINED-DAG: <COMBINED {{.*}} op2=32 -; COMBINED-DAG: <COMBINED {{.*}} op2=32 -; (Dead) -; COMBINED-DAG: <COMBINED {{.*}} op2=0 -; COMBINED-DAG: <COMBINED {{.*}} op2=0 -; COMBINED-DAG: <COMBINED {{.*}} op2=0 +; Live, Local, External +; COMBINED-DAG: <COMBINED {{.*}} op2=96 +; COMBINED-DAG: <COMBINED {{.*}} op2=96 +; COMBINED-DAG: <COMBINED {{.*}} op2=96 +; Local, (Dead) +; COMBINED-DAG: <COMBINED {{.*}} op2=64 +; COMBINED-DAG: <COMBINED {{.*}} op2=64 +; COMBINED-DAG: <COMBINED {{.*}} op2=64 ; Dead-stripping on the index allows to internalize these, ; and limit the import of @baz thanks to early pruning. @@ -45,10 +45,18 @@ ; CHECK: define internal void @bar_internal() ; CHECK: define internal void @dead_func() { ; CHECK-NOT: available_externally {{.*}} @baz() +; LTO2-NOT: available_externally {{.*}} @baz() +; LTO2: @llvm.global_ctors = +; LTO2: define internal void @_GLOBAL__I_a() +; LTO2: define internal dso_local void @bar() { +; LTO2: define internal void @bar_internal() +; LTO2: define internal dso_local void @dead_func() { +; LTO2-NOT: available_externally {{.*}} @baz() ; Make sure we didn't internalize @boo, which is reachable via ; llvm.global_ctors ; CHECK2: define void @boo() +; LTO2-CHECK2: define dso_local void @boo() ; We should have eventually removed @baz since it was internalized and unused ; CHECK2-NM-NOT: _baz @@ -80,7 +88,7 @@ ; We can't internalize @dead_func because of the use in the regular LTO ; partition. -; CHECK-NOTDEAD: define void @dead_func() +; CHECK-NOTDEAD: define dso_local void @dead_func() ; We also can't eliminate @baz because it is in the regular LTO partition ; and called from @dead_func. ; CHECK-NM-NOTDEAD: T _baz diff --git a/llvm/test/ThinLTO/X86/funcimport2.ll b/llvm/test/ThinLTO/X86/funcimport2.ll index 7338f9a9d98..86ce715f4e0 100644 --- a/llvm/test/ThinLTO/X86/funcimport2.ll +++ b/llvm/test/ThinLTO/X86/funcimport2.ll @@ -7,7 +7,7 @@ ; RUN: -r=%t2.bc,_main,plx \ ; RUN: -r=%t2.bc,_foo,l ; RUN: llvm-dis %t.o.1.3.import.bc -o - | FileCheck %s -; CHECK: define available_externally void @foo() +; CHECK: define available_externally dso_local void @foo() ; We shouldn't do any importing at -O0 ; rm -f %t.o.1.3.import.bc @@ -17,7 +17,7 @@ ; RUN: -r=%t2.bc,_main,plx \ ; RUN: -r=%t2.bc,_foo,l ; RUN: llvm-dis %t.o.1.3.import.bc -o - | FileCheck %s --check-prefix=CHECKO0 -; CHECKO0: declare void @foo(...) +; CHECKO0: declare dso_local void @foo(...) target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-apple-macosx10.11.0" diff --git a/llvm/test/ThinLTO/X86/internalize.ll b/llvm/test/ThinLTO/X86/internalize.ll index 867e3e5a00a..f40fbcd4b41 100644 --- a/llvm/test/ThinLTO/X86/internalize.ll +++ b/llvm/test/ThinLTO/X86/internalize.ll @@ -1,4 +1,4 @@ -;; RUN: opt -module-summary %s -o %t1.bc +; RUN: opt -module-summary %s -o %t1.bc ; RUN: llvm-lto -thinlto-action=thinlink -o %t.index.bc %t1.bc ; RUN: llvm-lto -thinlto-action=internalize -thinlto-index %t.index.bc %t1.bc -o - | llvm-dis -o - | FileCheck %s --check-prefix=REGULAR ; RUN: llvm-lto -thinlto-action=internalize -thinlto-index %t.index.bc %t1.bc -o - --exported-symbol=foo | llvm-dis -o - | FileCheck %s --check-prefix=INTERNALIZE @@ -7,7 +7,7 @@ ; RUN: -r=%t1.bc,_foo,pxl \ ; RUN: -r=%t1.bc,_bar,pl \ ; RUN: -r=%t1.bc,_linkonce_func,pl -; RUN: llvm-dis < %t.o.0.2.internalize.bc | FileCheck %s --check-prefix=INTERNALIZE +; RUN: llvm-dis < %t.o.0.2.internalize.bc | FileCheck %s --check-prefix=INTERNALIZE2 ; REGULAR: define void @foo @@ -16,6 +16,9 @@ ; INTERNALIZE: define void @foo ; INTERNALIZE: define internal void @bar ; INTERNALIZE: define internal void @linkonce_func() +; INTERNALIZE2: define dso_local void @foo +; INTERNALIZE2: define internal dso_local void @bar +; INTERNALIZE2: define internal dso_local void @linkonce_func() target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-apple-macosx10.11.0" @@ -29,4 +32,4 @@ define void @bar() { } define linkonce void @linkonce_func() { ret void -}
\ No newline at end of file +} diff --git a/llvm/test/ThinLTO/X86/reference_non_importable.ll b/llvm/test/ThinLTO/X86/reference_non_importable.ll index 5cf225e95de..99b79ce198e 100644 --- a/llvm/test/ThinLTO/X86/reference_non_importable.ll +++ b/llvm/test/ThinLTO/X86/reference_non_importable.ll @@ -22,7 +22,7 @@ target triple = "x86_64-apple-macosx10.11.0" ; We want foo to be imported in the main module! ; RUN: llvm-dis < %t.o.1.3.import.bc | FileCheck %s --check-prefix=IMPORT -; IMPORT: define available_externally i8** @foo() +; IMPORT: define available_externally dso_local i8** @foo() define i8 **@foo() { ret i8 **@b } diff --git a/llvm/test/Transforms/LowerTypeTests/import-unsat.ll b/llvm/test/Transforms/LowerTypeTests/import-unsat.ll index 6cb9b26fb57..b9eb552dd66 100644 --- a/llvm/test/Transforms/LowerTypeTests/import-unsat.ll +++ b/llvm/test/Transforms/LowerTypeTests/import-unsat.ll @@ -7,6 +7,7 @@ ; SUMMARY-NEXT: - Linkage: 0 ; SUMMARY-NEXT: NotEligibleToImport: false ; SUMMARY-NEXT: Live: true +; SUMMARY-NEXT: Local: false ; SUMMARY-NEXT: TypeTests: [ 123 ] ; SUMMARY-NEXT: TypeIdMap: ; SUMMARY-NEXT: typeid1: diff --git a/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp2.ll b/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp2.ll index c1c074e75a7..1751854d448 100644 --- a/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp2.ll +++ b/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp2.ll @@ -22,7 +22,7 @@ ; RUN: llvm-nm %t3.2 | FileCheck %s --check-prefix=NM ; NM: _ZL3barv ; RUN: llvm-dis < %t3.2.2.internalize.bc | FileCheck %s --check-prefix=INTERNALIZE -; INTERNALIZE: define void @_ZL3barv +; INTERNALIZE: define dso_local void @_ZL3barv target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" diff --git a/llvm/test/Transforms/WholeProgramDevirt/import-indir.ll b/llvm/test/Transforms/WholeProgramDevirt/import-indir.ll index 052a3494834..927ee16b370 100644 --- a/llvm/test/Transforms/WholeProgramDevirt/import-indir.ll +++ b/llvm/test/Transforms/WholeProgramDevirt/import-indir.ll @@ -7,6 +7,7 @@ ; SUMMARY-NEXT: - Linkage: 0 ; SUMMARY-NEXT: NotEligibleToImport: false ; SUMMARY-NEXT: Live: true +; SUMMARY-NEXT: Local: false ; SUMMARY-NEXT: TypeTestAssumeVCalls: ; SUMMARY-NEXT: - GUID: 123 ; SUMMARY-NEXT: Offset: 0 diff --git a/llvm/test/tools/gold/X86/asm_undefined2.ll b/llvm/test/tools/gold/X86/asm_undefined2.ll index a170f45a55a..d6ed55a775a 100644 --- a/llvm/test/tools/gold/X86/asm_undefined2.ll +++ b/llvm/test/tools/gold/X86/asm_undefined2.ll @@ -9,10 +9,11 @@ ; RUN: %gold -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold.so \ ; RUN: --plugin-opt=save-temps \ ; RUN: --plugin-opt=thinlto -o %t2 %t.o -; RUN: llvm-dis < %t.o.5.precodegen.bc | FileCheck %s +; RUN: llvm-dis < %t.o.5.precodegen.bc | FileCheck --check-prefix=CHECKTHIN %s ; Check that foo is not internalized ; CHECK: define void @foo +; CHECKTHIN: define dso_local void @foo target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" diff --git a/llvm/test/tools/gold/X86/coff.ll b/llvm/test/tools/gold/X86/coff.ll index 541383ddf51..e3eaa6a928c 100644 --- a/llvm/test/tools/gold/X86/coff.ll +++ b/llvm/test/tools/gold/X86/coff.ll @@ -11,7 +11,7 @@ define void @f() { ret void } -; CHECK: define internal void @g() { +; CHECK: define internal dso_local void @g() { define hidden void @g() { ret void } diff --git a/llvm/test/tools/gold/X86/common.ll b/llvm/test/tools/gold/X86/common.ll index ca506f6dd2d..5d2c5157f69 100644 --- a/llvm/test/tools/gold/X86/common.ll +++ b/llvm/test/tools/gold/X86/common.ll @@ -46,4 +46,4 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" ; RUN: llvm-dis %t3.o -o - | FileCheck --check-prefix=MIXED %s ; Mixed ELF and IR. We keep ours as common so the linker will finish the merge. -; MIXED: @a = common global i16 0, align 8 +; MIXED: @a = common dso_local global i16 0, align 8 diff --git a/llvm/test/tools/gold/X86/emit-llvm.ll b/llvm/test/tools/gold/X86/emit-llvm.ll index 70d244c34ec..9aec93a78f0 100644 --- a/llvm/test/tools/gold/X86/emit-llvm.ll +++ b/llvm/test/tools/gold/X86/emit-llvm.ll @@ -48,14 +48,14 @@ target triple = "x86_64-unknown-linux-gnu" @g8 = external global i32 -; CHECK-DAG: define internal void @f1() +; CHECK-DAG: define internal dso_local void @f1() ; OPT2-NOT: @f1 define hidden void @f1() { ret void } -; CHECK-DAG: define hidden void @f2() -; OPT-DAG: define hidden void @f2() +; CHECK-DAG: define dso_local hidden void @f2() +; OPT-DAG: define dso_local hidden void @f2() define hidden void @f2() { ret void } diff --git a/llvm/test/tools/gold/X86/global_with_section.ll b/llvm/test/tools/gold/X86/global_with_section.ll index 9023e76a4e6..c8291f8ceae 100644 --- a/llvm/test/tools/gold/X86/global_with_section.ll +++ b/llvm/test/tools/gold/X86/global_with_section.ll @@ -40,16 +40,16 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" ; We should not internalize @var_with_section due to section -; CHECK-DAG: @var_with_section = global i32 0, section "some_section" +; CHECK-DAG: @var_with_section = dso_local global i32 0, section "some_section" @var_with_section = global i32 0, section "some_section" ; Confirm via a variable with a non-C identifier section that we are getting ; the expected internalization. -; CHECK-DAG: @var_with_nonC_section = internal global i32 0, section ".nonCsection" +; CHECK-DAG: @var_with_nonC_section = internal dso_local global i32 0, section ".nonCsection" @var_with_nonC_section = global i32 0, section ".nonCsection" ; We should not internalize @deadfunc_with_section due to section -; CHECK-DAG: define void @deadfunc_with_section() section "some_other_section" +; CHECK-DAG: define dso_local void @deadfunc_with_section() section "some_other_section" define void @deadfunc_with_section() section "some_other_section" { call void @deadfunc2_called_from_section() ret void @@ -57,7 +57,7 @@ define void @deadfunc_with_section() section "some_other_section" { ; Confirm via a function with a non-C identifier section that we are getting ; the expected internalization. -; CHECK-DAG: define internal void @deadfunc_with_nonC_section() section ".nonCsection" +; CHECK-DAG: define internal dso_local void @deadfunc_with_nonC_section() section ".nonCsection" define void @deadfunc_with_nonC_section() section ".nonCsection" { call void @deadfunc2_called_from_nonC_section() ret void @@ -65,15 +65,15 @@ define void @deadfunc_with_nonC_section() section ".nonCsection" { ; In RegularLTO mode, where we have combined all the IR, ; @deadfunc2_called_from_section can be internalized. -; CHECK2-REGULARLTO: define internal void @deadfunc2_called_from_section +; CHECK2-REGULARLTO: define internal dso_local void @deadfunc2_called_from_section ; In ThinLTO mode, we can't internalize it as it needs to be preserved ; (due to the access from @deadfunc_with_section which must be preserved), and ; can't be internalized since the reference is from a different module. -; CHECK2-THINLTO: define void @deadfunc2_called_from_section +; CHECK2-THINLTO: define dso_local void @deadfunc2_called_from_section declare void @deadfunc2_called_from_section() ; Confirm when called from a function with a non-C identifier section that we ; are getting the expected internalization. -; CHECK2-REGULARLTO: define internal void @deadfunc2_called_from_nonC_section -; CHECK2-THINLTO: define internal void @deadfunc2_called_from_nonC_section +; CHECK2-REGULARLTO: define internal dso_local void @deadfunc2_called_from_nonC_section +; CHECK2-THINLTO: define internal dso_local void @deadfunc2_called_from_nonC_section declare void @deadfunc2_called_from_nonC_section() diff --git a/llvm/test/tools/gold/X86/parallel.ll b/llvm/test/tools/gold/X86/parallel.ll index 4de694c94c8..7d0e405d5d6 100644 --- a/llvm/test/tools/gold/X86/parallel.ll +++ b/llvm/test/tools/gold/X86/parallel.ll @@ -9,8 +9,8 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -; CHECK-BC0: define void @foo -; CHECK-BC0: declare void @bar +; CHECK-BC0: define dso_local void @foo +; CHECK-BC0: declare dso_local void @bar ; CHECK0-NOT: bar ; CHECK0: T foo ; CHECK0-NOT: bar @@ -19,8 +19,8 @@ define void @foo() { ret void } -; CHECK-BC1: declare void @foo -; CHECK-BC1: define void @bar +; CHECK-BC1: declare dso_local void @foo +; CHECK-BC1: define dso_local void @bar ; CHECK1-NOT: foo ; CHECK1: T bar ; CHECK1-NOT: foo diff --git a/llvm/test/tools/gold/X86/thinlto_linkonceresolution.ll b/llvm/test/tools/gold/X86/thinlto_linkonceresolution.ll index bf2d22a9ef7..c56d6ce2857 100644 --- a/llvm/test/tools/gold/X86/thinlto_linkonceresolution.ll +++ b/llvm/test/tools/gold/X86/thinlto_linkonceresolution.ll @@ -21,7 +21,7 @@ ; confirm the weak linkage directly in the saved opt bitcode files. ; CHECK-NOT: U f ; OPT-NOT: @f() -; OPT2: define weak_odr hidden void @f() +; OPT2: define weak_odr dso_local hidden void @f() target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" diff --git a/llvm/test/tools/gold/X86/thinlto_weak_library.ll b/llvm/test/tools/gold/X86/thinlto_weak_library.ll index 6a04fc0db0e..9e7b4794c65 100644 --- a/llvm/test/tools/gold/X86/thinlto_weak_library.ll +++ b/llvm/test/tools/gold/X86/thinlto_weak_library.ll @@ -24,7 +24,7 @@ ; copy of f() (and didn't simply convert to available_externally, which ; would incorrectly enable inlining). ; RUN: llvm-dis %t2.o.1.promote.bc -o - | FileCheck %s -; CHECK: declare i32 @f() +; CHECK: declare dso_local i32 @f() ; ModuleID = 'thinlto_weak_library.c' source_filename = "thinlto_weak_library.c" diff --git a/llvm/test/tools/gold/X86/visibility.ll b/llvm/test/tools/gold/X86/visibility.ll index 1c70ebf5c46..61f565d2da4 100644 --- a/llvm/test/tools/gold/X86/visibility.ll +++ b/llvm/test/tools/gold/X86/visibility.ll @@ -17,7 +17,7 @@ ; CHECK-NEXT: STV_PROTECTED ; CHECK-NEXT: ] -; IR: define void @foo +; IR: define dso_local void @foo target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" |

