diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-10-12 16:44:22 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-10-12 16:44:22 +0000 |
commit | 99c1d13e526c2979669d2b8ea0e22c311229f384 (patch) | |
tree | cdb2bdaf5f512d56c18ce68d1b7e2e6ac703a74a /llvm/lib | |
parent | a1566a414a5ec991d1d18b9b57971298ccb8699d (diff) | |
download | bcm5719-llvm-99c1d13e526c2979669d2b8ea0e22c311229f384.tar.gz bcm5719-llvm-99c1d13e526c2979669d2b8ea0e22c311229f384.zip |
[WinEH] Remove CatchObjRecoverIdx
CatchObjRecoverIdx was used for the old scheme, it is no longer
relevant.
llvm-svn: 250065
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/WinException.cpp | 17 | ||||
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/CodeGen/WinEHPrepare.cpp | 1 |
3 files changed, 5 insertions, 15 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/WinException.cpp b/llvm/lib/CodeGen/AsmPrinter/WinException.cpp index f6945b1d1fb..86e6881e892 100644 --- a/llvm/lib/CodeGen/AsmPrinter/WinException.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/WinException.cpp @@ -146,8 +146,7 @@ void WinException::endFunction(const MachineFunction *MF) { } } -/// Retreive the MCSymbol for a GlobalValue or MachineBasicBlock. GlobalValues -/// are used in the old WinEH scheme, and they will be removed eventually. +/// Retreive the MCSymbol for a GlobalValue or MachineBasicBlock. static MCSymbol *getMCSymbolForMBB(AsmPrinter *Asm, const MachineBasicBlock *MBB) { if (!MBB) @@ -275,7 +274,6 @@ const MCExpr *WinException::create32bitRef(const MCSymbol *Value) { const MCExpr *WinException::create32bitRef(const Value *V) { if (!V) return MCConstantExpr::create(0, Asm->OutContext); - // FIXME: Delete the GlobalValue case once the new IR is fully functional. if (const auto *GV = dyn_cast<GlobalValue>(V)) return create32bitRef(Asm->getSymbol(GV)); return create32bitRef(MMI->getAddrLabelSymbol(cast<BasicBlock>(V))); @@ -649,16 +647,10 @@ void WinException::emitCXXFrameHandler3Table(const MachineFunction *MF) { OS.EmitLabel(HandlerMapXData); for (const WinEHHandlerType &HT : TBME.HandlerArray) { // Get the frame escape label with the offset of the catch object. If - // the index is -1, then there is no catch object, and we should emit an - // offset of zero, indicating that no copy will occur. + // the index is INT_MAX, then there is no catch object, and we should + // emit an offset of zero, indicating that no copy will occur. const MCExpr *FrameAllocOffsetRef = nullptr; - if (HT.CatchObjRecoverIdx >= 0) { - MCSymbol *FrameAllocOffset = - Asm->OutContext.getOrCreateFrameAllocSymbol( - FuncLinkageName, HT.CatchObjRecoverIdx); - FrameAllocOffsetRef = MCSymbolRefExpr::create( - FrameAllocOffset, MCSymbolRefExpr::VK_None, Asm->OutContext); - } else if (HT.CatchObj.FrameIndex != INT_MAX) { + if (HT.CatchObj.FrameIndex != INT_MAX) { int Offset = getFrameIndexOffset(HT.CatchObj.FrameIndex); // For 32-bit, the catch object offset is relative to the end of the // EH registration node. For 64-bit, it's relative to SP at the end of @@ -681,7 +673,6 @@ void WinException::emitCXXFrameHandler3Table(const MachineFunction *MF) { OS.EmitValue(create32bitRef(HandlerSym), 4); // Handler if (shouldEmitPersonality) { - // With the new IR, this is always 16 + 8 + getMaxCallFrameSize(). // Keep this in sync with X86FrameLowering::emitPrologue. int ParentFrameOffset = 16 + 8 + MF->getFrameInfo()->getMaxCallFrameSize(); diff --git a/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp b/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp index b0d81030931..f33e7cb0dce 100644 --- a/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp @@ -297,7 +297,7 @@ void FunctionLoweringInfo::set(const Function &fn, MachineFunction &mf, // Map all BB references in the WinEH data to MBBs. for (WinEHTryBlockMapEntry &TBME : EHInfo.TryBlockMap) { for (WinEHHandlerType &H : TBME.HandlerArray) { - if (H.CatchObjRecoverIdx == -2 && H.CatchObj.Alloca) { + if (H.CatchObj.Alloca) { assert(StaticAllocaMap.count(H.CatchObj.Alloca)); H.CatchObj.FrameIndex = StaticAllocaMap[H.CatchObj.Alloca]; } else { diff --git a/llvm/lib/CodeGen/WinEHPrepare.cpp b/llvm/lib/CodeGen/WinEHPrepare.cpp index 3872879cd74..56648538f98 100644 --- a/llvm/lib/CodeGen/WinEHPrepare.cpp +++ b/llvm/lib/CodeGen/WinEHPrepare.cpp @@ -194,7 +194,6 @@ static void addTryBlockMapEntry(WinEHFuncInfo &FuncInfo, int TryLow, HT.TypeDescriptor = cast<GlobalVariable>(TypeInfo->stripPointerCasts()); HT.Adjectives = cast<ConstantInt>(CPI->getArgOperand(1))->getZExtValue(); HT.Handler = CPI->getParent(); - HT.CatchObjRecoverIdx = -2; if (isa<ConstantPointerNull>(CPI->getArgOperand(2))) HT.CatchObj.Alloca = nullptr; else |