DominanceFrontier.cpp revision 276479
1218885Sdim//===- DominanceFrontier.cpp - Dominance Frontier Calculation -------------===//
2218885Sdim//
3218885Sdim//                     The LLVM Compiler Infrastructure
4218885Sdim//
5218885Sdim// This file is distributed under the University of Illinois Open Source
6218885Sdim// License. See LICENSE.TXT for details.
7218885Sdim//
8218885Sdim//===----------------------------------------------------------------------===//
9218885Sdim
10218885Sdim#include "llvm/Analysis/DominanceFrontier.h"
11276479Sdim#include "llvm/Analysis/DominanceFrontierImpl.h"
12276479Sdim
13218885Sdimusing namespace llvm;
14218885Sdim
15276479Sdimnamespace llvm {
16276479Sdimtemplate class DominanceFrontierBase<BasicBlock>;
17276479Sdimtemplate class ForwardDominanceFrontierBase<BasicBlock>;
18276479Sdim}
19276479Sdim
20218885Sdimchar DominanceFrontier::ID = 0;
21276479Sdim
22218885SdimINITIALIZE_PASS_BEGIN(DominanceFrontier, "domfrontier",
23218885Sdim                "Dominance Frontier Construction", true, true)
24276479SdimINITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
25218885SdimINITIALIZE_PASS_END(DominanceFrontier, "domfrontier",
26218885Sdim                "Dominance Frontier Construction", true, true)
27218885Sdim
28276479SdimDominanceFrontier::DominanceFrontier()
29276479Sdim  : FunctionPass(ID),
30276479Sdim    Base() {
31276479Sdim  initializeDominanceFrontierPass(*PassRegistry::getPassRegistry());
32218885Sdim}
33218885Sdim
34276479Sdimvoid DominanceFrontier::releaseMemory() {
35276479Sdim  Base.releaseMemory();
36276479Sdim}
37234353Sdim
38276479Sdimbool DominanceFrontier::runOnFunction(Function &) {
39276479Sdim  releaseMemory();
40276479Sdim  Base.analyze(getAnalysis<DominatorTreeWrapperPass>().getDomTree());
41276479Sdim  return false;
42276479Sdim}
43218885Sdim
44276479Sdimvoid DominanceFrontier::getAnalysisUsage(AnalysisUsage &AU) const {
45276479Sdim  AU.setPreservesAll();
46276479Sdim  AU.addRequired<DominatorTreeWrapperPass>();
47218885Sdim}
48218885Sdim
49276479Sdimvoid DominanceFrontier::print(raw_ostream &OS, const Module *) const {
50276479Sdim  Base.print(OS);
51218885Sdim}
52218885Sdim
53243830Sdim#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
54276479Sdimvoid DominanceFrontier::dump() const {
55218885Sdim  print(dbgs());
56218885Sdim}
57243830Sdim#endif
58