diff options
| author | Serge Rogatch <srogatch@accesssoftek.com> | 2017-01-25 20:21:49 +0000 |
|---|---|---|
| committer | Serge Rogatch <srogatch@accesssoftek.com> | 2017-01-25 20:21:49 +0000 |
| commit | bc2d34394d1ff0edbf410fbd862173c932a3cb04 (patch) | |
| tree | 47d5b2c37a3572188ab7864174389f254da65dcb /llvm/test | |
| parent | 071aded6ee196fa7c052da4bd23df86ef1391d94 (diff) | |
| download | bcm5719-llvm-bc2d34394d1ff0edbf410fbd862173c932a3cb04.tar.gz bcm5719-llvm-bc2d34394d1ff0edbf410fbd862173c932a3cb04.zip | |
[XRay][AArch64] More staging for tail call support in XRay on AArch64 - in LLVM
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
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/AArch64/xray-tail-call-sled.ll | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/AArch64/xray-tail-call-sled.ll b/llvm/test/CodeGen/AArch64/xray-tail-call-sled.ll new file mode 100644 index 00000000000..6ada3ce8d55 --- /dev/null +++ b/llvm/test/CodeGen/AArch64/xray-tail-call-sled.ll @@ -0,0 +1,69 @@ +; 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
|

