diff options
author | Chris Lattner <sabre@nondot.org> | 2008-01-10 04:16:31 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-01-10 04:16:31 +0000 |
commit | f171482a665002dfba28452228590fa5ed1ab846 (patch) | |
tree | 7b187147836895b4e0b9cc85a7a1c59e26925eb2 /llvm | |
parent | d445b8813fb8bf13d0aad890dfa1cb867400c68c (diff) | |
download | bcm5719-llvm-f171482a665002dfba28452228590fa5ed1ab846.tar.gz bcm5719-llvm-f171482a665002dfba28452228590fa5ed1ab846.zip |
verify that the frame index is immutable before remat'ing (still disabled)
or being side-effect free.
llvm-svn: 45816
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/Target/X86/X86InstrInfo.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp index c7313288605..26ab7d2d0a4 100644 --- a/llvm/lib/Target/X86/X86InstrInfo.cpp +++ b/llvm/lib/Target/X86/X86InstrInfo.cpp @@ -749,10 +749,11 @@ bool X86InstrInfo::isReallyTriviallyReMaterializable(MachineInstr *MI) const { // values. #if 0 // FIXME: This is disabled due to a remat bug. rdar://5671644 - MachineFunction *MF = MI->getParent()->getParent(); - if (MI->getOperand(1).isFI() && - MF->getFrameInfo()->isFixedObjectIndex(MI->getOperand(1).getIndex())) - return true; + if (MI->getOperand(1).isFI()) { + const MachineFrameInfo &MFI=*MI->getParent()->getParent()->getFrameInfo(); + int Idx = MI->getOperand(1).getIndex(); + return MFI.isFixedObjectIndex(Idx) && MFI.isImmutableObjectIndex(Idx); + } #endif return false; @@ -805,9 +806,11 @@ bool X86InstrInfo::isReallySideEffectFree(MachineInstr *MI) const { // invariant across the whole function, because we don't redefine argument // values. MachineFunction *MF = MI->getParent()->getParent(); - if (MI->getOperand(1).isFI() && - MF->getFrameInfo()->isFixedObjectIndex(MI->getOperand(1).getIndex())) - return true; + if (MI->getOperand(1).isFI()) { + const MachineFrameInfo &MFI = *MF->getFrameInfo(); + int Idx = MI->getOperand(1).getIndex(); + return MFI.isFixedObjectIndex(Idx) && MFI.isImmutableObjectIndex(Idx); + } return false; } |