summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerge Rogatch <srogatch@accesssoftek.com>2017-01-19 20:24:23 +0000
committerSerge Rogatch <srogatch@accesssoftek.com>2017-01-19 20:24:23 +0000
commitf83d2a25bfe611b46fe9bdaa4e6cbac505e52eed (patch)
tree9a0cf76ecf30d1808121ac1eee409bf931a04c21
parent9245e12f95b6eee638d6ced013b91c5ee364e940 (diff)
downloadbcm5719-llvm-f83d2a25bfe611b46fe9bdaa4e6cbac505e52eed.tar.gz
bcm5719-llvm-f83d2a25bfe611b46fe9bdaa4e6cbac505e52eed.zip
[XRay][Arm] Repair XRay table emission on Arm32 and add tests to identify such problem earlier
Summary: Emission of XRay table was occasionally disabled for Arm32, but this bug was not then detected because earlier (also by mistake) testing of XRay was occasionally disabled on 32-bit Arm targets. This patch should fix that problem and detect such problems in the future. This patch is one of a series, see also - https://reviews.llvm.org/D28623 Reviewers: rengolin, dberris Reviewed By: dberris Subscribers: llvm-commits, aemerson, rengolin, dberris, iid_iunknown Differential Revision: https://reviews.llvm.org/D28624 llvm-svn: 292516
-rw-r--r--llvm/lib/Target/ARM/ARMAsmPrinter.cpp3
-rw-r--r--llvm/test/CodeGen/ARM/xray-armv6-attribute-instrumentation.ll6
-rw-r--r--llvm/test/CodeGen/ARM/xray-armv7-attribute-instrumentation.ll6
3 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
index f852805408c..d27e04fccfc 100644
--- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
+++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
@@ -164,6 +164,9 @@ bool ARMAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
// Emit the rest of the function body.
EmitFunctionBody();
+ // Emit the XRay table for this function.
+ emitXRayTable();
+
// If we need V4T thumb mode Register Indirect Jump pads, emit them.
// These are created per function, rather than per TU, since it's
// relatively easy to exceed the thumb branch range within a TU.
diff --git a/llvm/test/CodeGen/ARM/xray-armv6-attribute-instrumentation.ll b/llvm/test/CodeGen/ARM/xray-armv6-attribute-instrumentation.ll
index 8a8c667b2d8..93c3cb14fb7 100644
--- a/llvm/test/CodeGen/ARM/xray-armv6-attribute-instrumentation.ll
+++ b/llvm/test/CodeGen/ARM/xray-armv6-attribute-instrumentation.ll
@@ -23,3 +23,9 @@ define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always"
; CHECK-LABEL: Ltmp1:
; CHECK-NEXT: bx lr
}
+; CHECK: .p2align 4
+; CHECK-NEXT: .long {{.*}}Lxray_synthetic_0
+; CHECK-NEXT: .section {{.*}}xray_instr_map{{.*}}
+; CHECK-LABEL: Lxray_synthetic_0:
+; CHECK: .long {{.*}}Lxray_sled_0
+; CHECK: .long {{.*}}Lxray_sled_1
diff --git a/llvm/test/CodeGen/ARM/xray-armv7-attribute-instrumentation.ll b/llvm/test/CodeGen/ARM/xray-armv7-attribute-instrumentation.ll
index 07852cd6879..d14590b8867 100644
--- a/llvm/test/CodeGen/ARM/xray-armv7-attribute-instrumentation.ll
+++ b/llvm/test/CodeGen/ARM/xray-armv7-attribute-instrumentation.ll
@@ -23,3 +23,9 @@ define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always"
; CHECK-LABEL: Ltmp1:
; CHECK-NEXT: bx lr
}
+; CHECK: .p2align 4
+; CHECK-NEXT: .long {{.*}}Lxray_synthetic_0
+; CHECK-NEXT: .section {{.*}}xray_instr_map{{.*}}
+; CHECK-LABEL: Lxray_synthetic_0:
+; CHECK: .long {{.*}}Lxray_sled_0
+; CHECK: .long {{.*}}Lxray_sled_1
OpenPOWER on IntegriCloud