20#define DEBUG_TYPE "funclet-layout"
33 MachineFunctionProperties::Property::NoVRegs);
38char FuncletLayout::ID = 0;
41 "Contiguously Lay Out Funclets",
false,
false)
49 if (FuncletMembership.
empty())
53 auto FuncletX = FuncletMembership.
find(&
X);
54 auto FuncletY = FuncletMembership.
find(&
Y);
55 assert(FuncletX != FuncletMembership.
end());
56 assert(FuncletY != FuncletMembership.
end());
57 return FuncletX->second < FuncletY->second;
static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang", "erlang-compatible garbage collector")
static GCMetadataPrinterRegistry::Add< OcamlGCMetadataPrinter > Y("ocaml", "ocaml 3.10-compatible collector")
#define INITIALIZE_PASS(passName, arg, name, cfg, analysis)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
iterator find(const_arg_type_t< KeyT > Val)
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
virtual bool runOnMachineFunction(MachineFunction &MF)=0
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformat...
virtual MachineFunctionProperties getRequiredProperties() const
Properties which a MachineFunction may have at a given point in time.
MachineFunctionProperties & set(Property P)
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
This is an optimization pass for GlobalISel generic memory operations.
char & FuncletLayoutID
This pass lays out funclets contiguously.
void initializeFuncletLayoutPass(PassRegistry &)
DenseMap< const MachineBasicBlock *, int > getEHScopeMembership(const MachineFunction &MF)