2018-08-21 18:59:50 +08:00
|
|
|
# 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
|
[mir] Serialize DILocation inline when not possible to use a metadata reference
Summary:
Sometimes MIR-level passes create DILocations that were not present in the
LLVM-IR. For example, it may merge two DILocations together to produce a
DILocation that points to line 0.
Previously, the address of these DILocations were printed which prevented the
MIR from being read back into LLVM. With this patch, DILocations will use
metadata references where possible and fall back on serializing them inline like so:
MOV32mr %stack.0.x.addr, 1, _, 0, _, %0, debug-location !DILocation(line: 1, scope: !15)
Reviewers: aprantl, vsk, arphaman
Reviewed By: aprantl
Subscribers: probinson, llvm-commits
Tags: #debug-info
Differential Revision: https://reviews.llvm.org/D55243
llvm-svn: 349035
2018-12-13 22:25:27 +08:00
|
|
|
# CHECK-SAME: debug-location [[DL1:!DILocation([^)]+)]]
|
2018-08-21 18:59:50 +08:00
|
|
|
# CHECK-NEXT: L2_loadri_io $r1, 0, debug-location [[DL1]]
|
[mir] Serialize DILocation inline when not possible to use a metadata reference
Summary:
Sometimes MIR-level passes create DILocations that were not present in the
LLVM-IR. For example, it may merge two DILocations together to produce a
DILocation that points to line 0.
Previously, the address of these DILocations were printed which prevented the
MIR from being read back into LLVM. With this patch, DILocations will use
metadata references where possible and fall back on serializing them inline like so:
MOV32mr %stack.0.x.addr, 1, _, 0, _, %0, debug-location !DILocation(line: 1, scope: !15)
Reviewers: aprantl, vsk, arphaman
Reviewed By: aprantl
Subscribers: probinson, llvm-commits
Tags: #debug-info
Differential Revision: https://reviews.llvm.org/D55243
llvm-svn: 349035
2018-12-13 22:25:27 +08:00
|
|
|
# CHECK-NEXT: L2_loadri_io $r1, 0, debug-location [[DL2:!DILocation([^)]+)]]
|
2018-08-21 18:59:50 +08:00
|
|
|
|
|
|
|
# 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
|