summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorTeresa Johnson <tejohnson@google.com>2016-12-15 23:50:06 +0000
committerTeresa Johnson <tejohnson@google.com>2016-12-15 23:50:06 +0000
commit19f2aa78910110a580c1bba80a0b39596be71879 (patch)
treeac054eae8178703a49ddd43e582229269be8fc40 /llvm/test
parent67e979e086a6d452f0d69183b3cfc8ac74b3cf2e (diff)
downloadbcm5719-llvm-19f2aa78910110a580c1bba80a0b39596be71879.tar.gz
bcm5719-llvm-19f2aa78910110a580c1bba80a0b39596be71879.zip
[ThinLTO] Thin link efficiency improvement: don't re-export globals (NFC)
Summary: We were reinvoking exportGlobalInModule numerous times redundantly. No need to re-export globals referenced by a global that was already imported from its module. This resulted in a large speedup in the thin link for a big application, particularly when importing aggressiveness was cranked up. Reviewers: mehdi_amini Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D27687 llvm-svn: 289896
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/ThinLTO/X86/Inputs/export.ll10
-rw-r--r--llvm/test/ThinLTO/X86/export.ll26
2 files changed, 36 insertions, 0 deletions
diff --git a/llvm/test/ThinLTO/X86/Inputs/export.ll b/llvm/test/ThinLTO/X86/Inputs/export.ll
new file mode 100644
index 00000000000..cab8591fd9f
--- /dev/null
+++ b/llvm/test/ThinLTO/X86/Inputs/export.ll
@@ -0,0 +1,10 @@
+target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-apple-macosx10.11.0"
+
+define i32 @main() #0 {
+entry:
+ call void @callstaticfunc()
+ ret i32 0
+}
+
+declare void @callstaticfunc()
diff --git a/llvm/test/ThinLTO/X86/export.ll b/llvm/test/ThinLTO/X86/export.ll
new file mode 100644
index 00000000000..cb87ddd063e
--- /dev/null
+++ b/llvm/test/ThinLTO/X86/export.ll
@@ -0,0 +1,26 @@
+; Do setup work for all below tests: generate bitcode and combined index
+; RUN: opt -module-summary %s -o %t1.bc
+; RUN: opt -module-summary %p/Inputs/export.ll -o %t2.bc
+; RUN: llvm-lto -thinlto-action=thinlink -o %t3.bc %t1.bc %t2.bc
+
+; Ensure statics are promoted/renamed correctly from this file.
+; RUN: llvm-lto -thinlto-action=promote %t1.bc -thinlto-index=%t3.bc -o - | llvm-dis -o - | FileCheck %s
+; CHECK-DAG: @staticvar.llvm.0 = hidden global
+; CHECK-DAG: define hidden void @staticfunc.llvm.0
+
+target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-apple-macosx10.11.0"
+
+@staticvar = internal global i32 1, align 4
+
+define void @callstaticfunc() #0 {
+entry:
+ call void @staticfunc()
+ ret void
+}
+
+define internal void @staticfunc() #0 {
+entry:
+ %0 = load i32, i32* @staticvar, align 4
+ ret void
+}
OpenPOWER on IntegriCloud