mirror of
https://github.com/RPCS3/llvm.git
synced 2025-03-05 00:59:19 +00:00

On MachO platforms that use subsections-via-symbols dead code stripping will drop prefix data. Unfortunately there is no great way to convey the relationship between a function and its prefix data to the linker. We are forced to use a bit of a hack: we give the prefix data it’s own symbol, and mark the actual function entry an .alt_entry. Patch by Moritz Angermann! Differential Revision: https://reviews.llvm.org/D30770 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297804 91177308-0d34-0410-b5e6-96231b3b80d8
30 lines
624 B
LLVM
30 lines
624 B
LLVM
; RUN: llc < %s -mtriple=x86_64-apple-darwin | FileCheck --check-prefix=MACHO %s
|
|
; RUN: llc < %s -mtriple=x86_64-pc-linux | FileCheck --check-prefix=ELF %s
|
|
|
|
@i = linkonce_odr global i32 1
|
|
|
|
; MACHO: ltmp0:
|
|
; MACHO-NEXT: .long 1
|
|
; MACHO-NEXT: .alt_entry _f
|
|
; MACHO-NEXT: _f:
|
|
; ELF: .type f,@function
|
|
; ELF-NEXT: .long 1
|
|
; ELF-NEXT: # 0x1
|
|
; ELF-NEXT: f:
|
|
define void @f() prefix i32 1 {
|
|
ret void
|
|
}
|
|
|
|
; MACHO: ltmp1:
|
|
; MACHO-NEXT: .quad _i
|
|
; MACHO-NEXT: .alt_entry _g
|
|
; MACHO-NEXT: _g:
|
|
; ELF: .type g,@function
|
|
; ELF-NEXT: .quad i
|
|
; ELF-NEXT: g:
|
|
define void @g() prefix i32* @i {
|
|
ret void
|
|
}
|
|
|
|
; MACHO: .subsections_via_symbols
|