mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
2cc546db18
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
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
|
|
}
|