llvm-6502/test/CodeGen/X86/weak_def_can_be_hidden.ll
Rafael Espindola 2cc546db18 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
2013-10-30 22:08:11 +00:00

27 lines
480 B
LLVM

; 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
}