mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
9f57d9fa95
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 llvm-svn: 297804
30 lines
628 B
LLVM
30 lines
628 B
LLVM
; RUN: llc < %s -mtriple=aarch64-apple-darwin | FileCheck --check-prefix=MACHO %s
|
|
; RUN: llc < %s -mtriple=aarch64-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: .word 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: .xword i
|
|
; ELF-NEXT: g:
|
|
define void @g() prefix i32* @i {
|
|
ret void
|
|
}
|
|
|
|
; MACHO: .subsections_via_symbols
|