diff --git a/include/llvm/CodeGen/RegisterScavenging.h b/include/llvm/CodeGen/RegisterScavenging.h index 65fdaea1047..4a82fc5ef63 100644 --- a/include/llvm/CodeGen/RegisterScavenging.h +++ b/include/llvm/CodeGen/RegisterScavenging.h @@ -46,14 +46,13 @@ public: /// Init - Initialize the states. /// - void init(); + void init(MachineBasicBlock *mbb = NULL); /// Reset - Discard previous states and re-initialize the states given for /// the specific basic block. void reset(MachineBasicBlock *mbb) { - MBB = mbb; clear(); - init(); + init(mbb); } /// forward / backward - Move the internal MBB iterator and update register diff --git a/lib/CodeGen/RegisterScavenging.cpp b/lib/CodeGen/RegisterScavenging.cpp index 0f980a71236..6856511bcee 100644 --- a/lib/CodeGen/RegisterScavenging.cpp +++ b/lib/CodeGen/RegisterScavenging.cpp @@ -25,7 +25,10 @@ #include "llvm/ADT/STLExtras.h" using namespace llvm; -void RegScavenger::init() { +void RegScavenger::init(MachineBasicBlock *mbb) { + if (mbb) + MBB = mbb; + const MachineFunction &MF = *MBB->getParent(); const TargetMachine &TM = MF.getTarget(); const MRegisterInfo *RegInfo = TM.getRegisterInfo();