#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/ADT/SmallBitVector.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/PassRegistry.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/GenericDomTreeConstruction.h"
usingnamespacellvm;
namespace llvm {
#ifdef EXPENSIVE_CHECKS
bool VerifyMachineDomInfo = true;
#else
bool VerifyMachineDomInfo = …;
#endif
}
static cl::opt<bool, true> VerifyMachineDomInfoX(
"verify-machine-dom-info", cl::location(VerifyMachineDomInfo), cl::Hidden,
cl::desc("Verify machine dominator info (time consuming)"));
namespace llvm {
template class DomTreeNodeBase<MachineBasicBlock>;
template class DominatorTreeBase<MachineBasicBlock, false>;
namespace DomTreeBuilder {
template void Calculate<MBBDomTree>(MBBDomTree &DT);
template void CalculateWithUpdates<MBBDomTree>(MBBDomTree &DT, MBBUpdates U);
template void InsertEdge<MBBDomTree>(MBBDomTree &DT, MachineBasicBlock *From,
MachineBasicBlock *To);
template void DeleteEdge<MBBDomTree>(MBBDomTree &DT, MachineBasicBlock *From,
MachineBasicBlock *To);
template void ApplyUpdates<MBBDomTree>(MBBDomTree &DT, MBBDomTreeGraphDiff &,
MBBDomTreeGraphDiff *);
template bool Verify<MBBDomTree>(const MBBDomTree &DT,
MBBDomTree::VerificationLevel VL);
}
}
bool MachineDominatorTree::invalidate(
MachineFunction &, const PreservedAnalyses &PA,
MachineFunctionAnalysisManager::Invalidator &) { … }
AnalysisKey MachineDominatorTreeAnalysis::Key;
MachineDominatorTreeAnalysis::Result
MachineDominatorTreeAnalysis::run(MachineFunction &MF,
MachineFunctionAnalysisManager &) { … }
PreservedAnalyses
MachineDominatorTreePrinterPass::run(MachineFunction &MF,
MachineFunctionAnalysisManager &MFAM) { … }
char MachineDominatorTreeWrapperPass::ID = …;
INITIALIZE_PASS(…)
MachineDominatorTreeWrapperPass::MachineDominatorTreeWrapperPass()
: … { … }
void MachineDominatorTree::calculate(MachineFunction &F) { … }
char &llvm::MachineDominatorsID = …;
bool MachineDominatorTreeWrapperPass::runOnMachineFunction(MachineFunction &F) { … }
void MachineDominatorTreeWrapperPass::releaseMemory() { … }
void MachineDominatorTreeWrapperPass::verifyAnalysis() const { … }
void MachineDominatorTreeWrapperPass::print(raw_ostream &OS,
const Module *) const { … }
void MachineDominatorTree::applySplitCriticalEdges() const { … }