llvm-project/llvm/test/CodeGen/Generic/live-debug-vars-undef-use.mir
Jack Andersen f108c7f59d [GlobalISel] Allow DBG_VALUE to use undefined vregs before LiveDebugValues.
Expanding on D109750.

Since `DBG_VALUE` instructions have final register validity determined in
`LDVImpl::handleDebugValue`, there is no apparent reason to immediately prune
unused register operands as their defs are erased. Consequently, this renders
`MachineInstr::eraseFromParentAndMarkDBGValuesForRemoval` moot; gaining a
substantial performance improvement.

The only necessary changes involve making relevant passes consider invalid
DBG_VALUE vregs uses as valid.

Reviewed By: MatzeB

Differential Revision: https://reviews.llvm.org/D112852
2021-12-05 15:55:59 -05:00

27 lines
571 B
YAML

# RUN: llc -verify-machineinstrs -run-pass=livedebugvars -o - %s | FileCheck %s
# REQUIRES: aarch64-registered-target
--- |
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
target triple = "aarch64--"
define i64 @test() { ret i64 0 }
...
---
name: test
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: gpr64 }
body: |
bb.0:
; CHECK-LABEL: bb.0
; CHECK-NEXT: %1:gpr64(s64) = G_CONSTANT i64 0
; CHECK-NEXT: RET %1(s64)
DBG_VALUE %0, $noreg, $noreg, $noreg, $noreg
%1(s64) = G_CONSTANT i64 0
RET %1
...