diff options
Diffstat (limited to 'lib/Target/SparcV9/SparcV9TargetMachine.cpp')
-rw-r--r-- | lib/Target/SparcV9/SparcV9TargetMachine.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/Target/SparcV9/SparcV9TargetMachine.cpp b/lib/Target/SparcV9/SparcV9TargetMachine.cpp index b026ccd67a..a4556d161d 100644 --- a/lib/Target/SparcV9/SparcV9TargetMachine.cpp +++ b/lib/Target/SparcV9/SparcV9TargetMachine.cpp @@ -84,15 +84,16 @@ void InsertPrologEpilogCode::InsertPrologCode(Method* method) void InsertPrologEpilogCode::InsertEpilogCode(Method* method) { - for (Method::iterator I=method->begin(), E=method->end(); I != E; ++I) - if ((*I)->getTerminator()->getOpcode() == Instruction::Ret) + for (Method::iterator I=method->begin(), E=method->end(); I != E; ++I) { + Instruction *TermInst = (Instruction*)(*I)->getTerminator(); + if (TermInst->getOpcode() == Instruction::Ret) { BasicBlock* exitBB = *I; unsigned N = GetInstructionsForEpilog(exitBB, Target, minstrVec); MachineCodeForBasicBlock& bbMvec = exitBB->getMachineInstrVec(); MachineCodeForInstruction &termMvec = - MachineCodeForInstruction::get(exitBB->getTerminator()); + MachineCodeForInstruction::get(TermInst); // Remove the NOPs in the delay slots of the return instruction const MachineInstrInfo &mii = Target.getInstrInfo(); @@ -115,6 +116,7 @@ void InsertPrologEpilogCode::InsertEpilogCode(Method* method) // Append the epilog code to the end of the basic block. bbMvec.push_back(minstrVec[0]); } + } } |