DominanceFrontier.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //===- DominanceFrontier.cpp - Dominance Frontier 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. #include "llvm/Analysis/DominanceFrontier.h"
  10. #include "llvm/Analysis/DominanceFrontierImpl.h"
  11. using namespace llvm;
  12. namespace llvm {
  13. template class DominanceFrontierBase<BasicBlock>;
  14. template class ForwardDominanceFrontierBase<BasicBlock>;
  15. }
  16. char DominanceFrontier::ID = 0;
  17. INITIALIZE_PASS_BEGIN(DominanceFrontier, "domfrontier",
  18. "Dominance Frontier Construction", true, true)
  19. INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
  20. INITIALIZE_PASS_END(DominanceFrontier, "domfrontier",
  21. "Dominance Frontier Construction", true, true)
  22. DominanceFrontier::DominanceFrontier()
  23. : FunctionPass(ID),
  24. Base() {
  25. initializeDominanceFrontierPass(*PassRegistry::getPassRegistry());
  26. }
  27. void DominanceFrontier::releaseMemory() {
  28. Base.releaseMemory();
  29. }
  30. bool DominanceFrontier::runOnFunction(Function &) {
  31. releaseMemory();
  32. Base.analyze(getAnalysis<DominatorTreeWrapperPass>().getDomTree());
  33. return false;
  34. }
  35. void DominanceFrontier::getAnalysisUsage(AnalysisUsage &AU) const {
  36. AU.setPreservesAll();
  37. AU.addRequired<DominatorTreeWrapperPass>();
  38. }
  39. void DominanceFrontier::print(raw_ostream &OS, const Module *) const {
  40. Base.print(OS);
  41. }
  42. #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
  43. void DominanceFrontier::dump() const {
  44. print(dbgs());
  45. }
  46. #endif