mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-23 04:52:54 +02:00
4980df796e
Summary: This patch prepares more for tail call support in XRay. Until the logging part supports tail calls, this is just staging, so it seems LLVM part is mostly ready with this patch. Related: https://reviews.llvm.org/D28948 (compiler-rt) Reviewers: dberris, rengolin Reviewed By: dberris Subscribers: llvm-commits, iid_iunknown, aemerson Differential Revision: https://reviews.llvm.org/D28947 llvm-svn: 293080
70 lines
1.8 KiB
LLVM
70 lines
1.8 KiB
LLVM
; RUN: llc -filetype=asm -o - -mtriple=aarch64-linux-gnu < %s | FileCheck %s
|
|
|
|
define i32 @callee() nounwind noinline uwtable "function-instrument"="xray-always" {
|
|
; CHECK: .p2align 2
|
|
; CHECK-LABEL: .Lxray_sled_0:
|
|
; CHECK-NEXT: b #32
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-LABEL: .Ltmp0:
|
|
ret i32 0
|
|
; CHECK-NEXT: mov w0, wzr
|
|
; CHECK-NEXT: .p2align 2
|
|
; CHECK-LABEL: .Lxray_sled_1:
|
|
; CHECK-NEXT: b #32
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-LABEL: .Ltmp1:
|
|
; CHECK-NEXT: ret
|
|
}
|
|
; CHECK: .p2align 4
|
|
; CHECK-NEXT: .xword .Lxray_synthetic_0
|
|
; CHECK-NEXT: .section xray_instr_map,{{.*}}
|
|
; CHECK-LABEL: Lxray_synthetic_0:
|
|
; CHECK: .xword .Lxray_sled_0
|
|
; CHECK: .xword .Lxray_sled_1
|
|
|
|
define i32 @caller() nounwind noinline uwtable "function-instrument"="xray-always" {
|
|
; CHECK: .p2align 2
|
|
; CHECK-LABEL: .Lxray_sled_2:
|
|
; CHECK-NEXT: b #32
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-LABEL: .Ltmp2:
|
|
; CHECK: .p2align 2
|
|
; CHECK-LABEL: .Lxray_sled_3:
|
|
; CHECK-NEXT: b #32
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: nop
|
|
; CHECK-LABEL: .Ltmp3:
|
|
%retval = tail call i32 @callee()
|
|
; CHECK: b callee
|
|
ret i32 %retval
|
|
}
|
|
; CHECK: .p2align 4
|
|
; CHECK-NEXT: .xword .Lxray_synthetic_1
|
|
; CHECK-NEXT: .section xray_instr_map,{{.*}}
|
|
; CHECK-LABEL: Lxray_synthetic_1:
|
|
; CHECK: .xword .Lxray_sled_2
|
|
; CHECK: .xword .Lxray_sled_3
|