summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/Hexagon
diff options
context:
space:
mode:
authorBjorn Pettersson <bjorn.a.pettersson@ericsson.com>2018-08-21 10:59:50 +0000
committerBjorn Pettersson <bjorn.a.pettersson@ericsson.com>2018-08-21 10:59:50 +0000
commitd378a39603566404cf098329b368a6fe390016a9 (patch)
tree37b9b51ccebfc298a36d5e590d1b8ccbd62248f3 /llvm/test/CodeGen/Hexagon
parent2e4067226bd243e384e71ae45de1275969e7dfe2 (diff)
downloadbcm5719-llvm-d378a39603566404cf098329b368a6fe390016a9.tar.gz
bcm5719-llvm-d378a39603566404cf098329b368a6fe390016a9.zip
Change how finalizeBundle selects debug location for the BUNDLE instruction
Summary: Previously a BUNDLE instruction inherited the DebugLoc from the first instruction in the bundle, even if that DebugLoc had no DILocation. With this commit this is changed into selecting the first DebugLoc that has a DILocation, by searching among the bundled instructions. The idea is to reduce amount of bundles that are lacking debug locations. Reviewers: #debug-info, JDevlieghere Reviewed By: JDevlieghere Subscribers: JDevlieghere, mattd, llvm-commits Differential Revision: https://reviews.llvm.org/D50639 llvm-svn: 340267
Diffstat (limited to 'llvm/test/CodeGen/Hexagon')
-rw-r--r--llvm/test/CodeGen/Hexagon/packetize-debug-loc.mir58
1 files changed, 58 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/Hexagon/packetize-debug-loc.mir b/llvm/test/CodeGen/Hexagon/packetize-debug-loc.mir
new file mode 100644
index 00000000000..9bcc5ba0693
--- /dev/null
+++ b/llvm/test/CodeGen/Hexagon/packetize-debug-loc.mir
@@ -0,0 +1,58 @@
+# RUN: llc -march=hexagon -run-pass hexagon-packetizer %s -o - | FileCheck %s
+
+##############################################################################
+# This test case is not really hexagon specific, but we use hexagon to get
+# bundling.
+#
+# The goal is to verify that the BUNDLE instruction is getting the first
+# non-empty debug location among the bundled instructions.
+##############################################################################
+
+--- |
+ define void @test() { ret void }
+
+ !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "llvm", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, retainedTypes: !3)
+ !1 = distinct !DISubprogram(name: "test", scope: !3, file: !3, line: 1, type: !2, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0)
+ !2 = !DISubroutineType(types: !3)
+ !3 = !{null}
+ !5 = !DILocation(line: 126, column: 9, scope: !2)
+ !6 = !DILocation(line: 321, column: 4, scope: !2)
+
+...
+---
+name: test
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $r1
+ $r2 = L2_loadri_io $r1, 0, debug-location !5
+ $r3 = L2_loadri_io $r1, 0, debug-location !6
+
+ $r4 = L2_loadri_io $r1, 0
+ $r5 = L2_loadri_io $r1, 0, debug-location !5
+
+ $r6 = L2_loadri_io $r1, 0, debug-location !6
+ $r7 = L2_loadri_io $r1, 0
+
+ $r8 = L2_loadri_io $r1, 0
+ $r9 = L2_loadri_io $r1, 0
+...
+
+# CHECK-LABEL: name: test
+
+# CHECK: BUNDLE
+# CHECK-SAME: debug-location [[DL1:[0-9x<>]+]]
+# CHECK-NEXT: L2_loadri_io $r1, 0, debug-location [[DL1]]
+# CHECK-NEXT: L2_loadri_io $r1, 0, debug-location [[DL2:[0-9x<>]+]]
+
+# CHECK: BUNDLE
+# CHECK-SAME: debug-location [[DL1]]
+# CHECK-NEXT: L2_loadri_io $r1, 0{{$}}
+# CHECK-NEXT: L2_loadri_io $r1, 0, debug-location [[DL1]]
+
+# CHECK: BUNDLE
+# CHECK-SAME: debug-location [[DL2]]
+# CHECK-NEXT: L2_loadri_io $r1, 0, debug-location [[DL2]]
+
+# No debug-location printouts expected for the last bundle
+# CHECK-NOT: debug-location
OpenPOWER on IntegriCloud