summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-01-10 04:16:31 +0000
committerChris Lattner <sabre@nondot.org>2008-01-10 04:16:31 +0000
commitf171482a665002dfba28452228590fa5ed1ab846 (patch)
tree7b187147836895b4e0b9cc85a7a1c59e26925eb2 /llvm
parentd445b8813fb8bf13d0aad890dfa1cb867400c68c (diff)
downloadbcm5719-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.cpp17
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;
}
OpenPOWER on IntegriCloud