mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-27 15:22:29 +00:00
b0731963da
Machine programs need a definition of each vreg before reaching a use (the definition may come from an IMPLICIT_DEF instruction). This class of errors is not detected by the MachineVerifier because of efficiency concerns. LiveRangeCalc used to report these problems, make it do that again (followup to r279625). Also use report_fatal_error() instead of llvm_unreachable() as the error reporting is only present in asserts build anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281914 91177308-0d34-0410-b5e6-96231b3b80d8
32 lines
710 B
YAML
32 lines
710 B
YAML
# RUN: not llc -march=x86 -run-pass liveintervals -o - %s 2>&1 | FileCheck %s
|
|
# REQUIRES: asserts
|
|
|
|
--- |
|
|
define void @func() { ret void }
|
|
...
|
|
---
|
|
# Liveness calculation should detect that we do not have a definition for vreg0
|
|
# on all paths; In this example a def for vreg0 is missing when jumping from
|
|
# bb.0 to bb.3.
|
|
#
|
|
# CHECK: Use of %vreg0 does not have a corresponding definition on every path
|
|
# CHECK: ERROR: Use not jointly dominated by defs.
|
|
name: func
|
|
registers:
|
|
- { id: 0, class: gr32 }
|
|
body: |
|
|
bb.0:
|
|
successors: %bb.2, %bb.3
|
|
JG_1 %bb.2, implicit %eflags
|
|
JMP_1 %bb.3
|
|
|
|
bb.2:
|
|
successors: %bb.3
|
|
%0 = IMPLICIT_DEF
|
|
JMP_1 %bb.3
|
|
|
|
bb.3:
|
|
%eax = COPY %0
|
|
RETQ %eax
|
|
...
|