X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;ds=sidebyside;f=lib%2FCodeGen%2FScheduleDAGEmit.cpp;h=770f5bbbdbb1d8d98a1bc4f4700a998ec9a96214;hb=e6f350d7558f2db6c39c0a9fc8beafb796d9919a;hp=d10d670d346634a9ea5744516339541e5d77de23;hpb=54e4c36a7349e94a84773afb56eccd4ca65b49e9;p=oota-llvm.git diff --git a/lib/CodeGen/ScheduleDAGEmit.cpp b/lib/CodeGen/ScheduleDAGEmit.cpp index d10d670d346..770f5bbbdbb 100644 --- a/lib/CodeGen/ScheduleDAGEmit.cpp +++ b/lib/CodeGen/ScheduleDAGEmit.cpp @@ -29,14 +29,14 @@ using namespace llvm; void ScheduleDAG::AddMemOperand(MachineInstr *MI, const MachineMemOperand &MO) { - MI->addMemOperand(*MF, MO); + MI->addMemOperand(MF, MO); } void ScheduleDAG::EmitNoop() { - TII->insertNoop(*BB, BB->end()); + TII->insertNoop(*BB, InsertPos); } -void ScheduleDAG::EmitCrossRCCopy(SUnit *SU, +void ScheduleDAG::EmitPhysRegCopy(SUnit *SU, DenseMap &VRBaseMap) { for (SUnit::const_pred_iterator I = SU->Preds.begin(), E = SU->Preds.end(); I != E; ++I) { @@ -49,13 +49,12 @@ void ScheduleDAG::EmitCrossRCCopy(SUnit *SU, unsigned Reg = 0; for (SUnit::const_succ_iterator II = SU->Succs.begin(), EE = SU->Succs.end(); II != EE; ++II) { - if (I->getReg()) { - Reg = I->getReg(); + if (II->getReg()) { + Reg = II->getReg(); break; } } - assert(I->getReg() && "Unknown physical register!"); - TII->copyRegToReg(*BB, BB->end(), Reg, VRI->second, + TII->copyRegToReg(*BB, InsertPos, Reg, VRI->second, SU->CopyDstRC, SU->CopySrcRC); } else { // Copy from physical register. @@ -64,7 +63,7 @@ void ScheduleDAG::EmitCrossRCCopy(SUnit *SU, bool isNew = VRBaseMap.insert(std::make_pair(SU, VRBase)).second; isNew = isNew; // Silence compiler warning. assert(isNew && "Node emitted out of order - early"); - TII->copyRegToReg(*BB, BB->end(), VRBase, I->getReg(), + TII->copyRegToReg(*BB, InsertPos, VRBase, I->getReg(), SU->CopyDstRC, SU->CopySrcRC); } break;