summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorZhongxing Xu <xuzhongxing@gmail.com>2010-05-18 00:28:37 +0000
committerZhongxing Xu <xuzhongxing@gmail.com>2010-05-18 00:28:37 +0000
commitb013b0bc042912a090f2c5b9a5c5da998d523b71 (patch)
treea9bb2c448334163f930768c4e56156aff450cc18 /clang/lib
parent0dd05fb1675d72c3bb2a31a06fde53cb13db675d (diff)
downloadbcm5719-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.cpp3
-rw-r--r--clang/lib/Frontend/AnalysisConsumer.cpp2
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp1
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);
}
OpenPOWER on IntegriCloud