mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-09-30 04:56:49 +00:00
Add an ivar that maps a landing pad's EH symbol to the call sites that may jump
to the landing pad. This will be used by the back-end to generate the jump tables for dispatching the arriving longjmp in sjlj eh. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141224 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6f500541ea
commit
84fb7dd09e
@ -119,6 +119,10 @@ class MachineModuleInfo : public ImmutablePass {
|
|||||||
/// information in the current function.
|
/// information in the current function.
|
||||||
std::vector<LandingPadInfo> LandingPads;
|
std::vector<LandingPadInfo> LandingPads;
|
||||||
|
|
||||||
|
/// LPadToCallSiteMap - Map a landing pad's EH symbol to the call site
|
||||||
|
/// indexes.
|
||||||
|
DenseMap<MCSymbol*, SmallVector<unsigned, 4> > LPadToCallSiteMap;
|
||||||
|
|
||||||
/// CallSiteMap - Map of invoke call site index values to associated begin
|
/// CallSiteMap - Map of invoke call site index values to associated begin
|
||||||
/// EH_LABEL for the current function.
|
/// EH_LABEL for the current function.
|
||||||
DenseMap<MCSymbol*, unsigned> CallSiteMap;
|
DenseMap<MCSymbol*, unsigned> CallSiteMap;
|
||||||
@ -327,6 +331,16 @@ public:
|
|||||||
return LandingPads;
|
return LandingPads;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// setCallSiteLandingPad - Map the landing pad's EH symbol to the call
|
||||||
|
/// site indexes.
|
||||||
|
void setCallSiteLandingPad(MCSymbol *Sym, ArrayRef<unsigned> Sites);
|
||||||
|
|
||||||
|
/// getCallSiteLandingPad - Get the call site indexes for a landing pad EH
|
||||||
|
/// symbol.
|
||||||
|
SmallVectorImpl<unsigned> &getCallSiteLandingPad(MCSymbol *Sym) {
|
||||||
|
return LPadToCallSiteMap[Sym];
|
||||||
|
}
|
||||||
|
|
||||||
/// setCallSiteBeginLabel - Map the begin label for a call site.
|
/// setCallSiteBeginLabel - Map the begin label for a call site.
|
||||||
void setCallSiteBeginLabel(MCSymbol *BeginLabel, unsigned Site) {
|
void setCallSiteBeginLabel(MCSymbol *BeginLabel, unsigned Site) {
|
||||||
CallSiteMap[BeginLabel] = Site;
|
CallSiteMap[BeginLabel] = Site;
|
||||||
|
@ -499,6 +499,14 @@ void MachineModuleInfo::TidyLandingPads(DenseMap<MCSymbol*, uintptr_t> *LPMap) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// setCallSiteLandingPad - Map the landing pad's EH symbol to the call site
|
||||||
|
/// indexes.
|
||||||
|
void MachineModuleInfo::setCallSiteLandingPad(MCSymbol *Sym,
|
||||||
|
ArrayRef<unsigned> Sites) {
|
||||||
|
for (unsigned I = 0, E = Sites.size(); I != E; ++I)
|
||||||
|
LPadToCallSiteMap[Sym].push_back(Sites[I]);
|
||||||
|
}
|
||||||
|
|
||||||
/// getTypeIDFor - Return the type id for the specified typeinfo. This is
|
/// getTypeIDFor - Return the type id for the specified typeinfo. This is
|
||||||
/// function wide.
|
/// function wide.
|
||||||
unsigned MachineModuleInfo::getTypeIDFor(const GlobalVariable *TI) {
|
unsigned MachineModuleInfo::getTypeIDFor(const GlobalVariable *TI) {
|
||||||
|
Loading…
Reference in New Issue
Block a user