summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorVlad Tsyrklevich <vlad@tsyrklevich.net>2018-04-20 01:36:48 +0000
committerVlad Tsyrklevich <vlad@tsyrklevich.net>2018-04-20 01:36:48 +0000
commit230b256783e567266d9f07787c4fc1c5a667d227 (patch)
treee7f8637719a7bb92038774d6cd52c3cde7ebd178 /llvm/test/Transforms
parenta59aacf52bf36ec8f2dd5b2395107f13d018cb0d (diff)
downloadbcm5719-llvm-230b256783e567266d9f07787c4fc1c5a667d227.tar.gz
bcm5719-llvm-230b256783e567266d9f07787c4fc1c5a667d227.zip
LowerTypeTests: Propagate symver directives
Summary: This change fixes https://crbug.com/834474, a build failure caused by LowerTypeTests not preserving .symver symbol versioning directives for exported functions. Emit symver information to ThinLTO summary data and then propagate symver directives for exported functions to the merged module. Emitting symver information to the summaries increases the size of intermediate build artifacts for a Chromium build by less than 0.2%. Reviewers: pcc Reviewed By: pcc Subscribers: tejohnson, mehdi_amini, eraman, llvm-commits, eugenis, kcc Differential Revision: https://reviews.llvm.org/D45798 llvm-svn: 330387
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/LowerTypeTests/export-symver.ll16
-rw-r--r--llvm/test/Transforms/ThinLTOBitcodeWriter/symver.ll22
2 files changed, 38 insertions, 0 deletions
diff --git a/llvm/test/Transforms/LowerTypeTests/export-symver.ll b/llvm/test/Transforms/LowerTypeTests/export-symver.ll
new file mode 100644
index 00000000000..e2b58fcbb44
--- /dev/null
+++ b/llvm/test/Transforms/LowerTypeTests/export-symver.ll
@@ -0,0 +1,16 @@
+; RUN: opt -S %s -lowertypetests -lowertypetests-summary-action=export -lowertypetests-read-summary=%S/Inputs/use-typeid1-typeid2.yaml | FileCheck %s
+;
+; CHECK: module asm ".symver exported_and_symver, alias1"
+; CHECK-NOT: .symver exported
+; CHECK-NOT: .symver symver
+
+target triple = "x86_64-unknown-linux"
+
+!cfi.functions = !{!0, !1}
+!symvers = !{!3, !4}
+
+!0 = !{!"exported_and_symver", i8 2, !2}
+!1 = !{!"exported", i8 2, !2}
+!2 = !{i64 0, !"typeid1"}
+!3 = !{!"exported_and_symver", !"alias1"}
+!4 = !{!"symver", !"alias2"}
diff --git a/llvm/test/Transforms/ThinLTOBitcodeWriter/symver.ll b/llvm/test/Transforms/ThinLTOBitcodeWriter/symver.ll
new file mode 100644
index 00000000000..8612f7ea4bd
--- /dev/null
+++ b/llvm/test/Transforms/ThinLTOBitcodeWriter/symver.ll
@@ -0,0 +1,22 @@
+; RUN: opt -thinlto-bc -o %t %s
+; RUN: llvm-modextract -n 1 -o - %t | llvm-dis | FileCheck %s
+
+target triple = "x86_64-unknown-linux-gnu"
+
+module asm ".symver used, used@VER"
+module asm ".symver unused, unused@VER"
+module asm ".symver variable, variable@VER"
+
+declare !type !0 void @used()
+declare !type !0 void @unused()
+@variable = global i32 0
+
+define i32* @use() {
+ call void @used()
+ ret i32* @variable
+}
+
+; CHECK: !symvers = !{![[SYMVER:[0-9]+]]}
+; CHECK: ![[SYMVER]] = !{!"used", !"used@VER"}
+
+!0 = !{i64 0, !"_ZTSFvvE"}
OpenPOWER on IntegriCloud