[analyzer] Enable cfg-temporary-dtors by default.
Don't enable c++-temp-dtor-inlining by default yet, due to this reference counting pointe problem. Otherwise the new mode seems stable and allows us to incrementally fix C++ problems in much less hacky ways. Differential Revision: https://reviews.llvm.org/D43804 llvm-svn: 326461
This commit is contained in:
parent
503fdea3cb
commit
61199443fe
|
@ -193,7 +193,7 @@ bool AnalyzerOptions::getBooleanOption(Optional<bool> &V, StringRef Name,
|
|||
bool AnalyzerOptions::includeTemporaryDtorsInCFG() {
|
||||
return getBooleanOption(IncludeTemporaryDtorsInCFG,
|
||||
"cfg-temporary-dtors",
|
||||
/* Default = */ false);
|
||||
/* Default = */ true);
|
||||
}
|
||||
|
||||
bool AnalyzerOptions::includeImplicitDtorsInCFG() {
|
||||
|
@ -251,7 +251,7 @@ bool AnalyzerOptions::mayInlineCXXSharedPtrDtor() {
|
|||
bool AnalyzerOptions::mayInlineCXXTemporaryDtors() {
|
||||
return getBooleanOption(InlineCXXTemporaryDtors,
|
||||
"c++-temp-dtor-inlining",
|
||||
/*Default=*/true);
|
||||
/*Default=*/false);
|
||||
}
|
||||
|
||||
bool AnalyzerOptions::mayInlineObjCMethod() {
|
||||
|
|
|
@ -16,7 +16,7 @@ void foo() {
|
|||
// CHECK-NEXT: cfg-lifetime = false
|
||||
// CHECK-NEXT: cfg-loopexit = false
|
||||
// CHECK-NEXT: cfg-rich-constructors = true
|
||||
// CHECK-NEXT: cfg-temporary-dtors = false
|
||||
// CHECK-NEXT: cfg-temporary-dtors = true
|
||||
// CHECK-NEXT: exploration_strategy = unexplored_first_queue
|
||||
// CHECK-NEXT: faux-bodies = true
|
||||
// CHECK-NEXT: graph-trim-interval = 1000
|
||||
|
|
|
@ -13,7 +13,7 @@ void foo() {
|
|||
class Foo {
|
||||
public:
|
||||
~Foo() {}
|
||||
void baz();
|
||||
void baz() { Foo(); }
|
||||
void bar() { const Foo &f = Foo(); }
|
||||
void foo() { bar(); }
|
||||
};
|
||||
|
@ -23,13 +23,14 @@ public:
|
|||
// CHECK-NEXT: c++-inlining = destructors
|
||||
// CHECK-NEXT: c++-shared_ptr-inlining = false
|
||||
// CHECK-NEXT: c++-stdlib-inlining = true
|
||||
// CHECK-NEXT: c++-temp-dtor-inlining = false
|
||||
// CHECK-NEXT: c++-template-inlining = true
|
||||
// CHECK-NEXT: cfg-conditional-static-initializers = true
|
||||
// CHECK-NEXT: cfg-implicit-dtors = true
|
||||
// CHECK-NEXT: cfg-lifetime = false
|
||||
// CHECK-NEXT: cfg-loopexit = false
|
||||
// CHECK-NEXT: cfg-rich-constructors = true
|
||||
// CHECK-NEXT: cfg-temporary-dtors = false
|
||||
// CHECK-NEXT: cfg-temporary-dtors = true
|
||||
// CHECK-NEXT: experimental-enable-naive-ctu-analysis = false
|
||||
// CHECK-NEXT: exploration_strategy = unexplored_first_queue
|
||||
// CHECK-NEXT: faux-bodies = true
|
||||
|
@ -48,4 +49,4 @@ public:
|
|||
// CHECK-NEXT: unroll-loops = false
|
||||
// CHECK-NEXT: widen-loops = false
|
||||
// CHECK-NEXT: [stats]
|
||||
// CHECK-NEXT: num-entries = 28
|
||||
// CHECK-NEXT: num-entries = 29
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_analyze_cc1 -analyze -analyzer-checker core -analyzer-config cfg-temporary-dtors=true -analyzer-output=text -verify %s
|
||||
// RUN: %clang_analyze_cc1 -analyze -analyzer-checker core -analyzer-config cfg-temporary-dtors=true,c++-temp-dtor-inlining=true -analyzer-output=text -verify %s
|
||||
|
||||
namespace test_simple_temporary {
|
||||
class C {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -analyze -analyzer-checker=debug.DumpCFG -analyzer-config cfg-lifetime=true,cfg-rich-constructors=false -analyzer-config cfg-implicit-dtors=false %s > %t 2>&1
|
||||
// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -analyze -analyzer-checker=debug.DumpCFG -analyzer-config cfg-lifetime=true,cfg-temporary-dtors=false,cfg-rich-constructors=false -analyzer-config cfg-implicit-dtors=false %s > %t 2>&1
|
||||
// RUN: FileCheck --input-file=%t %s
|
||||
|
||||
extern bool UV;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// RUN: %clang_analyze_cc1 -Wno-unused -std=c++11 -analyzer-checker=core,debug.ExprInspection -verify %s
|
||||
// RUN: %clang_analyze_cc1 -Wno-unused -std=c++11 -analyzer-checker=core,debug.ExprInspection -analyzer-config cfg-temporary-dtors=true -DTEMPORARIES -verify %s
|
||||
// RUN: %clang_analyze_cc1 -Wno-unused -std=c++11 -analyzer-checker=core,debug.ExprInspection -analyzer-config cfg-temporary-dtors=false -verify %s
|
||||
// RUN: %clang_analyze_cc1 -Wno-unused -std=c++11 -analyzer-checker=core,debug.ExprInspection -analyzer-config cfg-temporary-dtors=true,c++-temp-dtor-inlining=true -DTEMPORARIES -verify %s
|
||||
|
||||
void clang_analyzer_eval(bool);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config cfg-temporary-dtors=false -verify -w -std=c++03 %s
|
||||
// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config cfg-temporary-dtors=false -verify -w -std=c++11 %s
|
||||
// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -DTEMPORARY_DTORS -verify -w -analyzer-config cfg-temporary-dtors=true %s -std=c++11
|
||||
// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -DTEMPORARY_DTORS -verify -w -analyzer-config cfg-temporary-dtors=true,c++-temp-dtor-inlining=true %s -std=c++11
|
||||
|
||||
extern bool clang_analyzer_eval(bool);
|
||||
extern bool clang_analyzer_warnIfReached();
|
||||
|
|
Loading…
Reference in New Issue