clang API Documentation

AnalysisManager.cpp
Go to the documentation of this file.
00001 //===-- AnalysisManager.cpp -------------------------------------*- C++ -*-===//
00002 //
00003 //                     The LLVM Compiler Infrastructure
00004 //
00005 // This file is distributed under the University of Illinois Open Source
00006 // License. See LICENSE.TXT for details.
00007 //
00008 //===----------------------------------------------------------------------===//
00009 
00010 #include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h"
00011 
00012 using namespace clang;
00013 using namespace ento;
00014 
00015 void AnalysisManager::anchor() { }
00016 
00017 AnalysisManager::AnalysisManager(ASTContext &ctx, DiagnosticsEngine &diags,
00018                                  const LangOptions &lang,
00019                                  PathDiagnosticConsumer *pd,
00020                                  StoreManagerCreator storemgr,
00021                                  ConstraintManagerCreator constraintmgr, 
00022                                  CheckerManager *checkerMgr,
00023                                  unsigned maxnodes, unsigned maxvisit,
00024                                  bool vizdot, bool vizubi,
00025                                  AnalysisPurgeMode purge,
00026                                  bool eager, bool trim,
00027                                  bool useUnoptimizedCFG,
00028                                  bool addImplicitDtors, bool addInitializers,
00029                                  bool eagerlyTrimEGraph,
00030                                  AnalysisIPAMode ipa,
00031                                  unsigned inlineMaxStack,
00032                                  unsigned inlineMaxFunctionSize,
00033                                  AnalysisInliningMode IMode,
00034                                  bool NoRetry)
00035   : AnaCtxMgr(useUnoptimizedCFG, addImplicitDtors, addInitializers),
00036     Ctx(ctx), Diags(diags), LangOpts(lang), PD(pd),
00037     CreateStoreMgr(storemgr), CreateConstraintMgr(constraintmgr),
00038     CheckerMgr(checkerMgr), 
00039     AScope(ScopeDecl), MaxNodes(maxnodes), MaxVisit(maxvisit),
00040     VisualizeEGDot(vizdot), VisualizeEGUbi(vizubi), PurgeDead(purge),
00041     EagerlyAssume(eager), TrimGraph(trim),
00042     EagerlyTrimEGraph(eagerlyTrimEGraph),
00043     IPAMode(ipa),
00044     InlineMaxStackDepth(inlineMaxStack),
00045     InlineMaxFunctionSize(inlineMaxFunctionSize),
00046     InliningMode(IMode),
00047     NoRetryExhausted(NoRetry)
00048 {
00049   AnaCtxMgr.getCFGBuildOptions().setAllAlwaysAdd();
00050 }
00051 
00052 AnalysisManager::AnalysisManager(ASTContext &ctx, DiagnosticsEngine &diags,
00053                                  AnalysisManager &ParentAM)
00054   : AnaCtxMgr(ParentAM.AnaCtxMgr.getUseUnoptimizedCFG(),
00055               ParentAM.AnaCtxMgr.getCFGBuildOptions().AddImplicitDtors,
00056               ParentAM.AnaCtxMgr.getCFGBuildOptions().AddInitializers),
00057     Ctx(ctx), Diags(diags),
00058     LangOpts(ParentAM.LangOpts), PD(ParentAM.getPathDiagnosticConsumer()),
00059     CreateStoreMgr(ParentAM.CreateStoreMgr),
00060     CreateConstraintMgr(ParentAM.CreateConstraintMgr),
00061     CheckerMgr(ParentAM.CheckerMgr),
00062     AScope(ScopeDecl),
00063     MaxNodes(ParentAM.MaxNodes),
00064     MaxVisit(ParentAM.MaxVisit),
00065     VisualizeEGDot(ParentAM.VisualizeEGDot),
00066     VisualizeEGUbi(ParentAM.VisualizeEGUbi),
00067     PurgeDead(ParentAM.PurgeDead),
00068     EagerlyAssume(ParentAM.EagerlyAssume),
00069     TrimGraph(ParentAM.TrimGraph),
00070     EagerlyTrimEGraph(ParentAM.EagerlyTrimEGraph),
00071     IPAMode(ParentAM.IPAMode),
00072     InlineMaxStackDepth(ParentAM.InlineMaxStackDepth),
00073     InlineMaxFunctionSize(ParentAM.InlineMaxFunctionSize),
00074     InliningMode(ParentAM.InliningMode),
00075     NoRetryExhausted(ParentAM.NoRetryExhausted)
00076 {
00077   AnaCtxMgr.getCFGBuildOptions().setAllAlwaysAdd();
00078 }