diff options
author | Zhongxing Xu <xuzhongxing@gmail.com> | 2010-05-18 00:28:37 +0000 |
---|---|---|
committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2010-05-18 00:28:37 +0000 |
commit | b013b0bc042912a090f2c5b9a5c5da998d523b71 (patch) | |
tree | a9bb2c448334163f930768c4e56156aff450cc18 /clang/lib | |
parent | 0dd05fb1675d72c3bb2a31a06fde53cb13db675d (diff) | |
download | bcm5719-llvm-b013b0bc042912a090f2c5b9a5c5da998d523b71.tar.gz bcm5719-llvm-b013b0bc042912a090f2c5b9a5c5da998d523b71.zip |
Add option '-analyzer-max-loop', which specifies the maximum
number of times the analyzer will go through a loop.
llvm-svn: 104007
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Checker/GRExprEngine.cpp | 3 | ||||
-rw-r--r-- | clang/lib/Frontend/AnalysisConsumer.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 1 |
3 files changed, 3 insertions, 3 deletions
diff --git a/clang/lib/Checker/GRExprEngine.cpp b/clang/lib/Checker/GRExprEngine.cpp index e9f42b46400..24176586728 100644 --- a/clang/lib/Checker/GRExprEngine.cpp +++ b/clang/lib/Checker/GRExprEngine.cpp @@ -1017,9 +1017,8 @@ void GRExprEngine::VisitLValue(Expr* Ex, ExplodedNode* Pred, bool GRExprEngine::ProcessBlockEntrance(CFGBlock* B, const ExplodedNode *Pred, GRBlockCounter BC) { - return BC.getNumVisited(Pred->getLocationContext()->getCurrentStackFrame(), - B->getBlockID()) < 3; + B->getBlockID()) < AMgr.getMaxLoop(); } //===----------------------------------------------------------------------===// diff --git a/clang/lib/Frontend/AnalysisConsumer.cpp b/clang/lib/Frontend/AnalysisConsumer.cpp index df74eadaa0a..6a4727929e7 100644 --- a/clang/lib/Frontend/AnalysisConsumer.cpp +++ b/clang/lib/Frontend/AnalysisConsumer.cpp @@ -174,7 +174,7 @@ public: Mgr.reset(new AnalysisManager(*Ctx, PP.getDiagnostics(), PP.getLangOptions(), PD, CreateStoreMgr, CreateConstraintMgr, - Opts.MaxNodes, + Opts.MaxNodes, Opts.MaxLoop, Opts.VisualizeEGDot, Opts.VisualizeEGUbi, Opts.PurgeDead, Opts.EagerlyAssume, Opts.TrimGraph, Opts.InlineCall)); diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index dca607e3cb5..65d2f06c6c6 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -798,6 +798,7 @@ static void ParseAnalyzerArgs(AnalyzerOptions &Opts, ArgList &Args, Args.hasArg(OPT_analyzer_experimental_internal_checks); Opts.TrimGraph = Args.hasArg(OPT_trim_egraph); Opts.MaxNodes = getLastArgIntValue(Args, OPT_analyzer_max_nodes,150000,Diags); + Opts.MaxLoop = getLastArgIntValue(Args, OPT_analyzer_max_loop, 3, Diags); Opts.InlineCall = Args.hasArg(OPT_analyzer_inline_call); } |