summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2016-12-01 19:32:15 +0000
committerMatthias Braun <matze@braunis.de>2016-12-01 19:32:15 +0000
commitd0ee66c2e9decd064b84399fb81616a01b6d1f22 (patch)
tree915616f68a075b08e13f484add438eb5a6640b7d /llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
parent6c299ca6e769be0ffa075ceb2310113748449ee8 (diff)
downloadbcm5719-llvm-d0ee66c2e9decd064b84399fb81616a01b6d1f22.tar.gz
bcm5719-llvm-d0ee66c2e9decd064b84399fb81616a01b6d1f22.zip
Move most EH from MachineModuleInfo to MachineFunction
Recommitting r288293 with some extra fixes for GlobalISel code. Most of the exception handling members in MachineModuleInfo is actually per function data (talks about the "current function") so it is better to keep it at the function instead of the module. This is a necessary step to have machine module passes work properly. Also: - Rename TidyLandingPads() to tidyLandingPads() - Use doxygen member groups instead of "//===- EH ---"... so it is clear where a group ends. - I had to add an ugly const_cast at two places in the AsmPrinter because the available MachineFunction pointers are const, but the code wants to call tidyLandingPads() in between (markFunctionEnd()/endFunction()). Differential Revision: https://reviews.llvm.org/D27227 llvm-svn: 288405
Diffstat (limited to 'llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp')
-rw-r--r--llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
index 3d686d15fda..ec255b5f0a3 100644
--- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
@@ -448,7 +448,7 @@ bool IRTranslator::translateKnownIntrinsic(const CallInst &CI,
case Intrinsic::eh_typeid_for: {
GlobalValue *GV = ExtractTypeInfo(CI.getArgOperand(0));
unsigned Reg = getOrCreateVReg(CI);
- unsigned TypeID = MIRBuilder.getMF().getMMI().getTypeIDFor(GV);
+ unsigned TypeID = MIRBuilder.getMF().getTypeIDFor(GV);
MIRBuilder.buildConstant(Reg, TypeID);
return true;
}
@@ -541,7 +541,7 @@ bool IRTranslator::translateCall(const User &U) {
bool IRTranslator::translateInvoke(const User &U) {
const InvokeInst &I = cast<InvokeInst>(U);
MachineFunction &MF = MIRBuilder.getMF();
- MachineModuleInfo &MMI = MF.getMMI();
+ MCContext &Context = MF.getContext();
const BasicBlock *ReturnBB = I.getSuccessor(0);
const BasicBlock *EHPadBB = I.getSuccessor(1);
@@ -564,9 +564,9 @@ bool IRTranslator::translateInvoke(const User &U) {
return false;
- // Emit the actual call, bracketed by EH_LABELs so that the MMI knows about
+ // Emit the actual call, bracketed by EH_LABELs so that the MF knows about
// the region covered by the try.
- MCSymbol *BeginSymbol = MMI.getContext().createTempSymbol();
+ MCSymbol *BeginSymbol = Context.createTempSymbol();
MIRBuilder.buildInstr(TargetOpcode::EH_LABEL).addSym(BeginSymbol);
unsigned Res = I.getType()->isVoidTy() ? 0 : getOrCreateVReg(I);
@@ -578,13 +578,13 @@ bool IRTranslator::translateInvoke(const User &U) {
CallLowering::ArgInfo(Res, I.getType()), Args))
return false;
- MCSymbol *EndSymbol = MMI.getContext().createTempSymbol();
+ MCSymbol *EndSymbol = Context.createTempSymbol();
MIRBuilder.buildInstr(TargetOpcode::EH_LABEL).addSym(EndSymbol);
// FIXME: track probabilities.
MachineBasicBlock &EHPadMBB = getOrCreateBB(*EHPadBB),
&ReturnMBB = getOrCreateBB(*ReturnBB);
- MMI.addInvoke(&EHPadMBB, BeginSymbol, EndSymbol);
+ MF.addInvoke(&EHPadMBB, BeginSymbol, EndSymbol);
MIRBuilder.getMBB().addSuccessor(&ReturnMBB);
MIRBuilder.getMBB().addSuccessor(&EHPadMBB);
@@ -596,8 +596,7 @@ bool IRTranslator::translateLandingPad(const User &U) {
MachineBasicBlock &MBB = MIRBuilder.getMBB();
MachineFunction &MF = MIRBuilder.getMF();
- MachineModuleInfo &MMI = MF.getMMI();
- addLandingPadInfo(LP, MMI, MBB);
+ addLandingPadInfo(LP, MBB);
MBB.setIsEHPad();
@@ -619,7 +618,7 @@ bool IRTranslator::translateLandingPad(const User &U) {
// Add a label to mark the beginning of the landing pad. Deletion of the
// landing pad can thus be detected via the MachineModuleInfo.
MIRBuilder.buildInstr(TargetOpcode::EH_LABEL)
- .addSym(MMI.addLandingPad(&MBB));
+ .addSym(MF.addLandingPad(&MBB));
// Mark exception register as live in.
SmallVector<unsigned, 2> Regs;
OpenPOWER on IntegriCloud