20#define DEBUG_TYPE "funclet-layout"
35char FuncletLayout::ID = 0;
38 "Contiguously Lay Out Funclets",
false,
false)
46 if (FuncletMembership.
empty())
50 auto FuncletX = FuncletMembership.
find(&
X);
51 auto FuncletY = FuncletMembership.
find(&
Y);
52 assert(FuncletX != FuncletMembership.
end());
53 assert(FuncletY != FuncletMembership.
end());
54 return FuncletX->second < FuncletY->second;
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
#define INITIALIZE_PASS(passName, arg, name, cfg, analysis)
static TableGen::Emitter::Opt Y("gen-skeleton-entry", EmitSkeleton, "Generate example skeleton entry")
static TableGen::Emitter::OptClass< SkeletonEmitter > X("gen-skeleton-class", "Generate example skeleton class")
iterator find(const_arg_type_t< KeyT > Val)
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
Properties which a MachineFunction may have at a given point in time.
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI char & FuncletLayoutID
This pass lays out funclets contiguously.
DenseMap< const MachineBasicBlock *, int > getEHScopeMembership(const MachineFunction &MF)