92 Worklist.
push_back({EntryBlock, EntryBlock});
94 while (!Worklist.
empty()) {
99 dbgs() <<
"Visiting " << Visiting->
getName() <<
", "
102 if (VisitingHead->isEHPad()) {
115 <<
"\' to block \'" << Visiting->
getName()
120 if (
auto *CatchRet = dyn_cast<CatchReturnInst>(Terminator)) {
121 Value *ParentPad = CatchRet->getCatchSwitchParentPad();
122 if (isa<ConstantTokenNone>(ParentPad))
123 SuccColor = EntryBlock;
125 SuccColor = cast<Instruction>(ParentPad)->
getParent();
void push_back(const T &Elt)
TinyPtrVector - This class is specialized for cases where there are normally 0 or 1 element in a vect...
StringRef getName() const
Return a constant reference to the value's name.
#define DEBUG_WITH_TYPE(TYPE, X)
DEBUG_WITH_TYPE macro - This macro should be used by passes to emit debug information.
Instruction * getFirstNonPHI()
Returns a pointer to the first instruction in this block that is not a PHINode instruction.
LLVM_ATTRIBUTE_ALWAYS_INLINE R Default(const T &Value) const
Constant * getPersonalityFn() const
Get the personality function associated with this function.
bool canSimplifyInvokeNoUnwind(const Function *F)
LLVM_NODISCARD bool empty() const
LLVM_ATTRIBUTE_ALWAYS_INLINE StringSwitch & Case(const char(&S)[N], const T &Value)
A switch()-like statement whose cases are string literals.
Subclasses of this class are all able to terminate a basic block.
LLVM Basic Block Representation.
void push_back(EltTy NewVal)
This file contains the declarations for the subclasses of Constant, which represent the different fla...
EHPersonality classifyEHPersonality(const Value *Pers)
See if the given exception handling personality function is one that we understand.
EHPersonality getDefaultEHPersonality(const Triple &T)
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
Triple - Helper class for working with autoconf configuration names.
Color
A "color", which is either even or odd.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
LLVM_NODISCARD T pop_back_val()
Value * stripPointerCasts()
Strip off pointer casts, all-zero GEPs, and aliases.
const BasicBlock & getEntryBlock() const
raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
TerminatorInst * getTerminator()
Returns the terminator instruction if the block is well formed or null if the block is not well forme...
LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)
StringRef getEHPersonalityName(EHPersonality Pers)
bool isAsynchronousEHPersonality(EHPersonality Pers)
Returns true if this personality function catches asynchronous exceptions.
LLVM Value Representation.
succ_range successors(BasicBlock *BB)
static const Function * getParent(const Value *V)
StringRef - Represent a constant reference to a string, i.e.
DenseMap< BasicBlock *, ColorVector > colorEHFunclets(Function &F)
If an EH funclet personality is in use (see isFuncletEHPersonality), this will recompute which blocks...
bool is_contained(R &&Range, const E &Element)
Wrapper function around std::find to detect if an element exists in a container.