llvm-mirror/test/CodeGen/AArch64/prefixdata.ll
Peter Collingbourne 9f57d9fa95 Ensure that prefix data is preserved with subsections-via-symbols
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
2017-03-15 04:18:16 +00:00

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