-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
+12 -3
View File
@@ -106,10 +106,19 @@ static const Value *getUnderlyingObjectForInstr(const MachineInstr *MI) {
return 0;
V = getUnderlyingObject(V);
if (!isa<PseudoSourceValue>(V) && !isIdentifiedObject(V))
return 0;
if (const PseudoSourceValue *PSV = dyn_cast<PseudoSourceValue>(V)) {
// For now, ignore PseudoSourceValues which may alias LLVM IR values
// because the code that uses this function has no way to cope with
// such aliases.
if (PSV->isAliased())
return 0;
return V;
}
return V;
if (isIdentifiedObject(V))
return V;
return 0;
}
void ScheduleDAGInstrs::StartBlock(MachineBasicBlock *BB) {