mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-18 13:34:04 +00:00
Add the AddLandingPadInfo function.
AddLandingPadInfo takes a landingpad instruction and grabs all of the information from it that it needs for EH table generation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136429 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3d8b15ea70
commit
e963a3814f
@ -220,6 +220,11 @@ void AddCatchInfo(const CallInst &I,
|
||||
void CopyCatchInfo(const BasicBlock *SuccBB, const BasicBlock *LPad,
|
||||
MachineModuleInfo *MMI, FunctionLoweringInfo &FLI);
|
||||
|
||||
/// AddLandingPadInfo - Extract the exception handling information from the
|
||||
/// landingpad instruction and add them to the specified machine module info.
|
||||
void AddLandingPadInfo(const LandingPadInst &I, MachineModuleInfo &MMI,
|
||||
MachineBasicBlock *MBB);
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif
|
||||
|
@ -454,3 +454,37 @@ void llvm::CopyCatchInfo(const BasicBlock *SuccBB, const BasicBlock *LPad,
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//--------- NEW EH - Begin ---------
|
||||
|
||||
/// AddLandingPadInfo - Extract the exception handling information from the
|
||||
/// landingpad instruction and add them to the specified machine module info.
|
||||
void llvm::AddLandingPadInfo(const LandingPadInst &I, MachineModuleInfo &MMI,
|
||||
MachineBasicBlock *MBB) {
|
||||
MMI.addPersonality(MBB, I.getPersonalityFn());
|
||||
|
||||
if (I.isCleanup())
|
||||
MMI.addCleanup(MBB);
|
||||
|
||||
for (unsigned i = 0, e = I.getNumClauses(); i != e; ) {
|
||||
switch (I.getClauseType(i)) {
|
||||
case LandingPadInst::Catch:
|
||||
MMI.addCatchTypeInfo(MBB, dyn_cast<GlobalVariable>(I.getClauseValue(i)));
|
||||
++i;
|
||||
break;
|
||||
case LandingPadInst::Filter: {
|
||||
// Add filters in a list.
|
||||
SmallVector<const GlobalVariable*, 4> FilterList;
|
||||
do {
|
||||
FilterList.push_back(cast<GlobalVariable>(I.getClauseValue(i)));
|
||||
++i;
|
||||
} while (i != e && I.getClauseType(i) == LandingPadInst::Filter);
|
||||
|
||||
MMI.addFilterTypeInfo(MBB, FilterList);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------- NEW EH - End ---------
|
||||
|
Loading…
x
Reference in New Issue
Block a user