Produce .weak_def_can_be_hidden for some linkonce_odr values
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 30 Oct 2013 22:08:11 +0000 (22:08 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 30 Oct 2013 22:08:11 +0000 (22:08 +0000)
commit2cc546db188d5e4d4537681cab3d52781125518c
tree82d4b69f91bc14eebc0663452c579b100a270633
parent1d36113c05e611c0fba9b872b5f03eca9848bd69
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
include/llvm/CodeGen/AsmPrinter.h
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
test/CodeGen/X86/weak_def_can_be_hidden.ll [new file with mode: 0644]