diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-10-30 22:08:11 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-10-30 22:08:11 +0000 |
commit | 2cc546db188d5e4d4537681cab3d52781125518c (patch) | |
tree | 82d4b69f91bc14eebc0663452c579b100a270633 /test/CodeGen/X86 | |
parent | 1d36113c05e611c0fba9b872b5f03eca9848bd69 (diff) | |
download | external_llvm-2cc546db188d5e4d4537681cab3d52781125518c.zip external_llvm-2cc546db188d5e4d4537681cab3d52781125518c.tar.gz external_llvm-2cc546db188d5e4d4537681cab3d52781125518c.tar.bz2 |
Produce .weak_def_can_be_hidden for some linkonce_odr values
With this patch llvm produces a weak_def_can_be_hidden for linkonce_odr
if they are also unnamed_addr or don't have their address taken.
There is not a lot of documentation about .weak_def_can_be_hidden, but
from the old discussion about linkonce_odr_auto_hide and the name of
the directive this looks correct: these symbols can be hidden.
Testing this with the ld64 in Xcode 5 linking clang reduces the number of
exported symbols from 21053 to 19049.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193718 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86')
-rw-r--r-- | test/CodeGen/X86/weak_def_can_be_hidden.ll | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/CodeGen/X86/weak_def_can_be_hidden.ll b/test/CodeGen/X86/weak_def_can_be_hidden.ll new file mode 100644 index 0000000..f78f357 --- /dev/null +++ b/test/CodeGen/X86/weak_def_can_be_hidden.ll @@ -0,0 +1,26 @@ +; RUN: llc -mtriple=x86_64-apple-darwin -O0 < %s | FileCheck %s + +@v1 = linkonce_odr global i32 32 +; CHECK: .globl _v1 +; CHECK: .weak_def_can_be_hidden _v1 + +define i32 @f1() { + %x = load i32 * @v1 + ret i32 %x +} + +@v2 = linkonce_odr global i32 32 +; CHECK: .globl _v2 +; CHECK: .weak_definition _v2 + +@v3 = linkonce_odr unnamed_addr global i32 32 +; CHECK: .globl _v3 +; CHECK: .weak_def_can_be_hidden _v3 + +define i32* @f2() { + ret i32* @v2 +} + +define i32* @f3() { + ret i32* @v3 +} |