diff options
| author | Vlad Tsyrklevich <vlad@tsyrklevich.net> | 2018-04-20 01:36:48 +0000 |
|---|---|---|
| committer | Vlad Tsyrklevich <vlad@tsyrklevich.net> | 2018-04-20 01:36:48 +0000 |
| commit | 230b256783e567266d9f07787c4fc1c5a667d227 (patch) | |
| tree | e7f8637719a7bb92038774d6cd52c3cde7ebd178 /llvm/test/Transforms | |
| parent | a59aacf52bf36ec8f2dd5b2395107f13d018cb0d (diff) | |
| download | bcm5719-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.ll | 16 | ||||
| -rw-r--r-- | llvm/test/Transforms/ThinLTOBitcodeWriter/symver.ll | 22 |
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"} |

