mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-28 14:36:34 +00:00
If CPSR is modified but the def is dead, then it's ok to fold the load / store.
llvm-svn: 77182
This commit is contained in:
parent
674c4d47b9
commit
657ef082f0
@ -681,7 +681,7 @@ foldMemoryOperandImpl(MachineFunction &MF, MachineInstr *MI,
|
||||
MachineInstr *NewMI = NULL;
|
||||
if (Opc == ARM::MOVr || Opc == ARM::t2MOVr) {
|
||||
// If it is updating CPSR, then it cannot be folded.
|
||||
if (MI->getOperand(4).getReg() != ARM::CPSR) {
|
||||
if (MI->getOperand(4).getReg() != ARM::CPSR || MI->getOperand(4).isDead()) {
|
||||
unsigned Pred = MI->getOperand(2).getImm();
|
||||
unsigned PredReg = MI->getOperand(3).getReg();
|
||||
if (OpNum == 0) { // move -> store
|
||||
@ -771,6 +771,7 @@ ARMBaseInstrInfo::foldMemoryOperandImpl(MachineFunction &MF,
|
||||
MachineInstr* MI,
|
||||
const SmallVectorImpl<unsigned> &Ops,
|
||||
MachineInstr* LoadMI) const {
|
||||
// FIXME
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -782,7 +783,7 @@ ARMBaseInstrInfo::canFoldMemoryOperand(const MachineInstr *MI,
|
||||
unsigned Opc = MI->getOpcode();
|
||||
if (Opc == ARM::MOVr || Opc == ARM::t2MOVr) {
|
||||
// If it is updating CPSR, then it cannot be folded.
|
||||
return MI->getOperand(4).getReg() != ARM::CPSR;
|
||||
return MI->getOperand(4).getReg() != ARM::CPSR ||MI->getOperand(4).isDead();
|
||||
} else if (Opc == ARM::FCPYS || Opc == ARM::FCPYD) {
|
||||
return true;
|
||||
} else if (Opc == ARM::VMOVD || Opc == ARM::VMOVQ) {
|
||||
|
Loading…
Reference in New Issue
Block a user