diff options
author | Bjorn Pettersson <bjorn.a.pettersson@ericsson.com> | 2018-08-21 10:59:50 +0000 |
---|---|---|
committer | Bjorn Pettersson <bjorn.a.pettersson@ericsson.com> | 2018-08-21 10:59:50 +0000 |
commit | d378a39603566404cf098329b368a6fe390016a9 (patch) | |
tree | 37b9b51ccebfc298a36d5e590d1b8ccbd62248f3 /llvm/test/CodeGen/Hexagon | |
parent | 2e4067226bd243e384e71ae45de1275969e7dfe2 (diff) | |
download | bcm5719-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.mir | 58 |
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 |