mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
cceb8ca160
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
59 lines
2.0 KiB
YAML
59 lines
2.0 KiB
YAML
# 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:!DILocation([^)]+)]]
|
|
# CHECK-NEXT: L2_loadri_io $r1, 0, debug-location [[DL1]]
|
|
# CHECK-NEXT: L2_loadri_io $r1, 0, debug-location [[DL2:!DILocation([^)]+)]]
|
|
|
|
# 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
|