summaryrefslogtreecommitdiff
path: root/lib/CodeGen/MachineVerifier.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-08-02 16:36:47 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-08-02 16:36:47 +0000
commite2b83ab056836067e2c86ef22223a4c29fe267ce (patch)
treef0b8958b61d67b64aa67ba60dad7fc30f64861a7 /lib/CodeGen/MachineVerifier.cpp
parent28897ca434892340f2e188a0331db92d5899409b (diff)
downloadllvm-e2b83ab056836067e2c86ef22223a4c29fe267ce.tar.gz
llvm-e2b83ab056836067e2c86ef22223a4c29fe267ce.tar.bz2
llvm-e2b83ab056836067e2c86ef22223a4c29fe267ce.tar.xz
Avoid creating dangling physreg live ranges during DCE.
LiveRangeEdit::eliminateDeadDefs() can delete a dead instruction that reads unreserved physregs. This would leave the corresponding regunit live interval dangling because we don't have shrinkToUses() for physical registers. Fix this problem by turning the instruction into a KILL instead of deleting it. This happens in a landing pad in test/CodeGen/X86/2012-05-19-CoalescerCrash.ll: %vreg27<def,dead> = COPY %EDX<kill>; GR32:%vreg27 becomes: KILL %EDX<kill> An upcoming fix to the machine verifier will catch problems like this by verifying regunit live intervals. This fixes PR13498. I am not including the test case from the PR since we already have one exposing the problem once the verifier is fixed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161182 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/MachineVerifier.cpp')
0 files changed, 0 insertions, 0 deletions