-Revert parts of 84326 and 84411. Distinquishing between fixed and non-fixed

stack slots and giving them different PseudoSourceValue's did not fix the
problem of post-alloc scheduling miscompiling llvm itself.
- Apply Dan's conservative workaround by assuming any non fixed stack slots can
alias other memory locations. This means a load from spill slot #1 cannot 
move above a store of spill slot #2. 
- Enable post-alloc scheduling for x86 at optimization leverl Default and above.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84424 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng
2009-10-18 18:16:27 +00:00
parent 20270c9093
commit ff89dcb06f
15 changed files with 93 additions and 93 deletions
+2 -4
View File
@@ -466,10 +466,8 @@ void StackSlotColoring::RewriteInstruction(MachineInstr *MI, int OldFI,
// Update the memory references. This changes the MachineMemOperands
// directly. They may be in use by multiple instructions, however all
// instructions using OldFI are being rewritten to use NewFI.
const Value *OldSV = MFI->isFixedObjectIndex(OldFI)
? PseudoSourceValue::getFixedStack(OldFI) : PseudoSourceValue::getStack();
const Value *NewSV = MFI->isFixedObjectIndex(NewFI)
? PseudoSourceValue::getFixedStack(NewFI) : PseudoSourceValue::getStack();
const Value *OldSV = PseudoSourceValue::getFixedStack(OldFI);
const Value *NewSV = PseudoSourceValue::getFixedStack(NewFI);
for (MachineInstr::mmo_iterator I = MI->memoperands_begin(),
E = MI->memoperands_end(); I != E; ++I)
if ((*I)->getValue() == OldSV)