mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Ensure all defs referring to a virtual register are marked dead by addRegisterDead().
There can be multiple defs for a single virtual register when they are defining sub-registers. The missing <dead> flag was stopping the inline spiller from eliminating dead code after rematerialization. llvm-svn: 128888
This commit is contained in:
parent
7618e7be93
commit
2bef449b52
@ -1543,13 +1543,8 @@ bool MachineInstr::addRegisterDead(unsigned IncomingReg,
|
||||
continue;
|
||||
|
||||
if (Reg == IncomingReg) {
|
||||
if (!Found) {
|
||||
if (MO.isDead())
|
||||
// The register is already marked dead.
|
||||
return true;
|
||||
MO.setIsDead();
|
||||
Found = true;
|
||||
}
|
||||
MO.setIsDead();
|
||||
Found = true;
|
||||
} else if (hasAliases && MO.isDead() &&
|
||||
TargetRegisterInfo::isPhysicalRegister(Reg)) {
|
||||
// There exists a super-register that's marked dead.
|
||||
|
@ -1,6 +1,10 @@
|
||||
; RUN: llc < %s -mtriple=i386-apple-darwin10 | not grep movaps
|
||||
; RUN: llc < %s -mtriple=i386-apple-darwin10 | FileCheck %s
|
||||
; RUN: llc < %s -mtriple=i386-apple-darwin10 -regalloc=basic | FileCheck %s
|
||||
; rdar://6509240
|
||||
|
||||
; CHECK: os_clock
|
||||
; CHECK-NOT: movaps
|
||||
|
||||
type { %struct.TValue } ; type %0
|
||||
type { %struct.L_Umaxalign, i32, %struct.Node* } ; type %1
|
||||
%struct.CallInfo = type { %struct.TValue*, %struct.TValue*, %struct.TValue*, i32*, i32, i32 }
|
||||
|
Loading…
Reference in New Issue
Block a user