MachinePostDominators.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. //===- MachinePostDominators.cpp -Machine Post Dominator Calculation ------===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. //
  10. // This file implements simple dominator construction algorithms for finding
  11. // post dominators on machine functions.
  12. //
  13. //===----------------------------------------------------------------------===//
  14. #include "llvm/CodeGen/MachinePostDominators.h"
  15. using namespace llvm;
  16. char MachinePostDominatorTree::ID = 0;
  17. //declare initializeMachinePostDominatorTreePass
  18. INITIALIZE_PASS(MachinePostDominatorTree, "machinepostdomtree",
  19. "MachinePostDominator Tree Construction", true, true)
  20. MachinePostDominatorTree::MachinePostDominatorTree() : MachineFunctionPass(ID) {
  21. initializeMachinePostDominatorTreePass(*PassRegistry::getPassRegistry());
  22. DT = new DominatorTreeBase<MachineBasicBlock>(true); //true indicate
  23. // postdominator
  24. }
  25. FunctionPass *
  26. MachinePostDominatorTree::createMachinePostDominatorTreePass() {
  27. return new MachinePostDominatorTree();
  28. }
  29. bool
  30. MachinePostDominatorTree::runOnMachineFunction(MachineFunction &F) {
  31. DT->recalculate(F);
  32. return false;
  33. }
  34. MachinePostDominatorTree::~MachinePostDominatorTree() {
  35. delete DT;
  36. }
  37. void
  38. MachinePostDominatorTree::getAnalysisUsage(AnalysisUsage &AU) const {
  39. AU.setPreservesAll();
  40. MachineFunctionPass::getAnalysisUsage(AU);
  41. }
  42. void
  43. MachinePostDominatorTree::print(llvm::raw_ostream &OS, const Module *M) const {
  44. DT->print(OS);
  45. }