clang API Documentation
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 }