mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-29 23:12:55 +01:00
bdb3c4f195
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. llvm-svn: 193718
27 lines
480 B
LLVM
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
|
|
}
|