96 Worklist.
push_back({EntryBlock, EntryBlock});
98 while (!Worklist.
empty()) {
103 dbgs() <<
"Visiting " << Visiting->
getName() <<
", " 106 if (VisitingHead->isEHPad()) {
119 <<
"\' to block \'" << Visiting->
getName()
124 if (
auto *CatchRet = dyn_cast<CatchReturnInst>(Terminator)) {
125 Value *ParentPad = CatchRet->getCatchSwitchParentPad();
126 if (isa<ConstantTokenNone>(ParentPad))
127 SuccColor = EntryBlock;
129 SuccColor = cast<Instruction>(ParentPad)->
getParent();
This class represents lattice values for constants.
void push_back(const T &Elt)
const Instruction * getTerminator() const LLVM_READONLY
Returns the terminator instruction if the block is well formed or null if the block is not well forme...
TinyPtrVector - This class is specialized for cases where there are normally 0 or 1 element in a vect...
#define DEBUG_WITH_TYPE(TYPE, X)
DEBUG_WITH_TYPE macro - This macro should be used by passes to emit debug information.
bool canSimplifyInvokeNoUnwind(const Function *F)
LLVM_NODISCARD LLVM_ATTRIBUTE_ALWAYS_INLINE R Default(T Value)
const BasicBlock & getEntryBlock() const
A switch()-like statement whose cases are string literals.
const Instruction * getFirstNonPHI() const
Returns a pointer to the first instruction in this block that is not a PHINode instruction.
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)
const Value * stripPointerCasts() const
Strip off pointer casts, all-zero GEPs, and aliases.
#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()
raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
LLVM_ATTRIBUTE_ALWAYS_INLINE StringSwitch & Case(StringLiteral S, T Value)
This file provides various utilities for inspecting and working with the control flow graph in LLVM I...
LLVM_NODISCARD bool empty() const
StringRef getName() const
Return a constant reference to the value's name.
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.
Constant * getPersonalityFn() const
Get the personality function associated with this function.
succ_range successors(Instruction *I)
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.