mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-05 11:57:07 +00: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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128888 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8439747236
commit
b793bc1cca
@ -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…
x
Reference in New Issue
Block a user