Add a query to tell if a landing pad has a catch-all.

llvm-svn: 177675
This commit is contained in:
Bill Wendling 2013-03-21 23:01:03 +00:00
parent 0d7d62e4b2
commit d254ab2298
2 changed files with 10 additions and 0 deletions

View File

@ -2230,6 +2230,9 @@ public:
/// to determine what type of clause this is.
Value *getClause(unsigned Idx) const { return OperandList[Idx + 1]; }
/// hasCatchAll - Return 'true' if this landing pad has a catch-all.
bool hasCatchAll() const;
/// isCatch - Return 'true' if the clause and index Idx is a catch clause.
bool isCatch(unsigned Idx) const {
return !isa<ArrayType>(OperandList[Idx + 1]->getType());

View File

@ -256,6 +256,13 @@ void LandingPadInst::addClause(Value *Val) {
OperandList[OpNo] = Val;
}
bool LandingPadInst::hasCatchAll() const {
for (unsigned I = 0, E = getNumClauses(); I != E; ++I)
if (isCatch(I) && isa<ConstantPointerNull>(getClause(I)))
return true;
return false;
}
//===----------------------------------------------------------------------===//
// CallInst Implementation
//===----------------------------------------------------------------------===//