20 #define DEBUG_TYPE "funclet-layout"
41 "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;
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
char & FuncletLayoutID
This pass lays out funclets contiguously.
INITIALIZE_PASS(FuncletLayout,"funclet-layout","Contiguously Lay Out Funclets", false, false) bool FuncletLayout
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
void initializeFuncletLayoutPass(PassRegistry &)
static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang","erlang-compatible garbage collector")
DenseMap< const MachineBasicBlock *, int > getFuncletMembership(const MachineFunction &MF)
MachineFunctionProperties & set(Property P)
iterator find(const KeyT &Val)
LLVM_NODISCARD bool empty() const
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
static GCMetadataPrinterRegistry::Add< OcamlGCMetadataPrinter > Y("ocaml","ocaml 3.10-compatible collector")
Properties which a MachineFunction may have at a given point in time.