From 06b7bd61f4986b18766977530417bf489f8d5578 Mon Sep 17 00:00:00 2001 From: George Karpenkov Date: Tue, 27 Feb 2018 01:31:56 +0000 Subject: [PATCH] [analyzer] Switch the default exploration strategy to priority queue based on coverage After the investigation it seems safe to flip the switch. Differential Revision: https://reviews.llvm.org/D43782 llvm-svn: 326157 --- clang/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp | 2 +- clang/test/Analysis/MisusedMovedObject.cpp | 2 +- clang/test/Analysis/analyzer-config.c | 4 ++-- clang/test/Analysis/analyzer-config.cpp | 4 ++-- clang/test/Analysis/loop-unrolling.cpp | 5 +++++ 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/clang/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp b/clang/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp index c01e531..dcc5de4 100644 --- a/clang/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp +++ b/clang/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp @@ -60,7 +60,7 @@ AnalyzerOptions::getExplorationStrategy() { if (ExplorationStrategy == ExplorationStrategyKind::NotSet) { StringRef StratStr = Config - .insert(std::make_pair("exploration_strategy", "dfs")) + .insert(std::make_pair("exploration_strategy", "unexplored_first_queue")) .first->second; ExplorationStrategy = llvm::StringSwitch(StratStr) diff --git a/clang/test/Analysis/MisusedMovedObject.cpp b/clang/test/Analysis/MisusedMovedObject.cpp index 132a65d..c566d42 100644 --- a/clang/test/Analysis/MisusedMovedObject.cpp +++ b/clang/test/Analysis/MisusedMovedObject.cpp @@ -474,7 +474,7 @@ void differentBranchesTest(int i) { // A variation on the theme above. { A a; - a.foo() > 0 ? a.foo() : A(std::move(a)).foo(); // expected-note {{Assuming the condition is false}} expected-note {{'?' condition is false}} + a.foo() > 0 ? a.foo() : A(std::move(a)).foo(); // expected-note {{Assuming the condition is true}} expected-note {{'?' condition is true}} } // Same thing, but with a switch statement. { diff --git a/clang/test/Analysis/analyzer-config.c b/clang/test/Analysis/analyzer-config.c index 78868a5..13c4870 100644 --- a/clang/test/Analysis/analyzer-config.c +++ b/clang/test/Analysis/analyzer-config.c @@ -1,5 +1,5 @@ // RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 %s -o /dev/null -analyzer-checker=core,osx.cocoa,debug.ConfigDumper -analyzer-max-loop 34 > %t 2>&1 -// RUN: FileCheck --input-file=%t %s +// RUN: FileCheck --input-file=%t %s --match-full-lines void bar() {} void foo() { @@ -17,7 +17,7 @@ void foo() { // CHECK-NEXT: cfg-loopexit = false // CHECK-NEXT: cfg-rich-constructors = true // CHECK-NEXT: cfg-temporary-dtors = false -// CHECK-NEXT: exploration_strategy = dfs +// CHECK-NEXT: exploration_strategy = unexplored_first_queue // CHECK-NEXT: faux-bodies = true // CHECK-NEXT: graph-trim-interval = 1000 // CHECK-NEXT: inline-lambdas = true diff --git a/clang/test/Analysis/analyzer-config.cpp b/clang/test/Analysis/analyzer-config.cpp index 9b94974..46336ff 100644 --- a/clang/test/Analysis/analyzer-config.cpp +++ b/clang/test/Analysis/analyzer-config.cpp @@ -1,5 +1,5 @@ // RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 %s -o /dev/null -analyzer-checker=core,osx.cocoa,debug.ConfigDumper -analyzer-max-loop 34 > %t 2>&1 -// RUN: FileCheck --input-file=%t %s +// RUN: FileCheck --input-file=%t %s --match-full-lines void bar() {} void foo() { @@ -30,7 +30,7 @@ public: // CHECK-NEXT: cfg-loopexit = false // CHECK-NEXT: cfg-rich-constructors = true // CHECK-NEXT: cfg-temporary-dtors = false -// CHECK-NEXT: exploration_strategy = dfs +// CHECK-NEXT: exploration_strategy = unexplored_first_queue // CHECK-NEXT: faux-bodies = true // CHECK-NEXT: graph-trim-interval = 1000 // CHECK-NEXT: inline-lambdas = true diff --git a/clang/test/Analysis/loop-unrolling.cpp b/clang/test/Analysis/loop-unrolling.cpp index 844d1f1..cd5e9ef 100644 --- a/clang/test/Analysis/loop-unrolling.cpp +++ b/clang/test/Analysis/loop-unrolling.cpp @@ -1,4 +1,5 @@ // RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config unroll-loops=true,cfg-loopexit=true -verify -std=c++11 %s +// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config unroll-loops=true,cfg-loopexit=true,exploration_strategy=dfs -verify -std=c++11 -DDFS=1 %s void clang_analyzer_numTimesReached(); void clang_analyzer_warnIfReached(); @@ -234,7 +235,11 @@ int simple_known_bound_loop() { int simple_unknown_bound_loop() { for (int i = 2; i < getNum(); i++) { +#ifdef DFS clang_analyzer_numTimesReached(); // expected-warning {{10}} +#else + clang_analyzer_numTimesReached(); // expected-warning {{13}} +#endif } return 0; } -- 2.7.4