summaryrefslogtreecommitdiffstats
path: root/llvm/include
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2015-09-28 23:56:30 +0000
committerReid Kleckner <rnk@google.com>2015-09-28 23:56:30 +0000
commitc71d6275ca727a6d534dd5ee4602e315702e8054 (patch)
tree7e0ea578cfcd1ce4cd7fd0504c96746204d87ca1 /llvm/include
parent525c013921e98a89ebcc0e3ee57300cd6d1a2963 (diff)
downloadbcm5719-llvm-c71d6275ca727a6d534dd5ee4602e315702e8054.tar.gz
bcm5719-llvm-c71d6275ca727a6d534dd5ee4602e315702e8054.zip
[WinEH] Fix ip2state table emission with funclets
Previously we were hijacking the old LandingPadInfo data structures to communicate our state numbers. Now we don't need that anymore. llvm-svn: 248763
Diffstat (limited to 'llvm/include')
-rw-r--r--llvm/include/llvm/CodeGen/WinEHFuncInfo.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/include/llvm/CodeGen/WinEHFuncInfo.h b/llvm/include/llvm/CodeGen/WinEHFuncInfo.h
index 0f947812a01..ac19ddf86bd 100644
--- a/llvm/include/llvm/CodeGen/WinEHFuncInfo.h
+++ b/llvm/include/llvm/CodeGen/WinEHFuncInfo.h
@@ -28,6 +28,7 @@ class GlobalVariable;
class InvokeInst;
class IntrinsicInst;
class LandingPadInst;
+class MCExpr;
class MCSymbol;
class MachineBasicBlock;
class Value;
@@ -160,15 +161,18 @@ struct WinEHTryBlockMapEntry {
struct WinEHFuncInfo {
DenseMap<const Instruction *, int> EHPadStateMap;
+ DenseMap<MCSymbol *, std::pair<int, MCSymbol *>> InvokeToStateMap;
SmallVector<WinEHUnwindMapEntry, 4> UnwindMap;
SmallVector<WinEHTryBlockMapEntry, 4> TryBlockMap;
SmallVector<SEHUnwindMapEntry, 4> SEHUnwindMap;
- SmallVector<std::pair<MCSymbol *, int>, 4> IPToStateList;
int UnwindHelpFrameIdx = INT_MAX;
int UnwindHelpFrameOffset = -1;
int getLastStateNumber() const { return UnwindMap.size() - 1; }
+ void addIPToStateRange(const BasicBlock *PadBB, MCSymbol *InvokeBegin,
+ MCSymbol *InvokeEnd);
+
/// localescape index of the 32-bit EH registration node. Set by
/// WinEHStatePass and used indirectly by SEH filter functions of the parent.
int EHRegNodeEscapeIndex = INT_MAX;
OpenPOWER on IntegriCloud