summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp15
-rw-r--r--clang/test/Analysis/Inputs/expected-plists/cxx-for-range.cpp.plist4
-rw-r--r--clang/test/Analysis/diagnostics/no-store-func-path-notes.cpp2
-rw-r--r--clang/test/Analysis/inner-pointer.cpp12
-rw-r--r--clang/test/Analysis/use-after-move.cpp2
5 files changed, 21 insertions, 14 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp b/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
index c45b5195821..db7559b10b0 100644
--- a/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
+++ b/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
@@ -2323,10 +2323,17 @@ bool ConditionBRVisitor::printValue(const Expr *CondVarExpr, raw_ostream &Out,
if (!IsAssuming)
IntValue = getConcreteIntegerValue(CondVarExpr, N);
- if (IsAssuming || !IntValue.hasValue())
- Out << (TookTrue ? "not equal to 0" : "0");
- else
- Out << *IntValue.getValue();
+ if (IsAssuming || !IntValue.hasValue()) {
+ if (Ty->isBooleanType())
+ Out << (TookTrue ? "true" : "false");
+ else
+ Out << (TookTrue ? "not equal to 0" : "0");
+ } else {
+ if (Ty->isBooleanType())
+ Out << (IntValue.getValue()->getBoolValue() ? "true" : "false");
+ else
+ Out << *IntValue.getValue();
+ }
return true;
}
diff --git a/clang/test/Analysis/Inputs/expected-plists/cxx-for-range.cpp.plist b/clang/test/Analysis/Inputs/expected-plists/cxx-for-range.cpp.plist
index 5be7d0adb96..f6bfc87db57 100644
--- a/clang/test/Analysis/Inputs/expected-plists/cxx-for-range.cpp.plist
+++ b/clang/test/Analysis/Inputs/expected-plists/cxx-for-range.cpp.plist
@@ -829,9 +829,9 @@
</array>
</array>
<key>extended_message</key>
- <string>&apos;fail&apos; is 1</string>
+ <string>&apos;fail&apos; is true</string>
<key>message</key>
- <string>&apos;fail&apos; is 1</string>
+ <string>&apos;fail&apos; is true</string>
</dict>
<dict>
<key>kind</key><string>control</string>
diff --git a/clang/test/Analysis/diagnostics/no-store-func-path-notes.cpp b/clang/test/Analysis/diagnostics/no-store-func-path-notes.cpp
index 39b7dd9e492..c2a3d648018 100644
--- a/clang/test/Analysis/diagnostics/no-store-func-path-notes.cpp
+++ b/clang/test/Analysis/diagnostics/no-store-func-path-notes.cpp
@@ -102,7 +102,7 @@ struct C {
C(int pX, int pY, bool Flag) {
x = pX;
- if (Flag) // expected-note{{Assuming 'Flag' is not equal to 0}}
+ if (Flag) // expected-note{{Assuming 'Flag' is true}}
// expected-note@-1{{Taking true branch}}
return; // expected-note{{Returning without writing to 'this->y'}}
y = pY;
diff --git a/clang/test/Analysis/inner-pointer.cpp b/clang/test/Analysis/inner-pointer.cpp
index 81b750d7e5d..f4646c20fc2 100644
--- a/clang/test/Analysis/inner-pointer.cpp
+++ b/clang/test/Analysis/inner-pointer.cpp
@@ -38,9 +38,9 @@ void deref_after_scope_char(bool cond) {
std::string s;
const char *c2 = s.c_str();
if (cond) {
- // expected-note@-1 {{Assuming 'cond' is not equal to 0}}
+ // expected-note@-1 {{Assuming 'cond' is true}}
// expected-note@-2 {{Taking true branch}}
- // expected-note@-3 {{Assuming 'cond' is 0}}
+ // expected-note@-3 {{Assuming 'cond' is false}}
// expected-note@-4 {{Taking false branch}}
consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
// expected-note@-1 {{Inner pointer of container used after re/deallocation}}
@@ -73,9 +73,9 @@ void deref_after_scope_wchar_t(bool cond) {
std::wstring s;
const wchar_t *c2 = s.c_str();
if (cond) {
- // expected-note@-1 {{Assuming 'cond' is not equal to 0}}
+ // expected-note@-1 {{Assuming 'cond' is true}}
// expected-note@-2 {{Taking true branch}}
- // expected-note@-3 {{Assuming 'cond' is 0}}
+ // expected-note@-3 {{Assuming 'cond' is false}}
// expected-note@-4 {{Taking false branch}}
consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
// expected-note@-1 {{Inner pointer of container used after re/deallocation}}
@@ -122,9 +122,9 @@ void multiple_symbols(bool cond) {
std::string s2;
const char *c2 = s2.c_str();
if (cond) {
- // expected-note@-1 {{Assuming 'cond' is not equal to 0}}
+ // expected-note@-1 {{Assuming 'cond' is true}}
// expected-note@-2 {{Taking true branch}}
- // expected-note@-3 {{Assuming 'cond' is 0}}
+ // expected-note@-3 {{Assuming 'cond' is false}}
// expected-note@-4 {{Taking false branch}}
consume(c1); // expected-warning {{Inner pointer of container used after re/deallocation}}
// expected-note@-1 {{Inner pointer of container used after re/deallocation}}
diff --git a/clang/test/Analysis/use-after-move.cpp b/clang/test/Analysis/use-after-move.cpp
index e58301df8b5..c25f4393cdf 100644
--- a/clang/test/Analysis/use-after-move.cpp
+++ b/clang/test/Analysis/use-after-move.cpp
@@ -395,7 +395,7 @@ void uniqueTest(bool cond) {
A b;
b = std::move(a); // peaceful-note {{Object 'a' is moved}}
- if (cond) { // peaceful-note {{Assuming 'cond' is not equal to 0}}
+ if (cond) { // peaceful-note {{Assuming 'cond' is true}}
// peaceful-note@-1 {{Taking true branch}}
a.foo(); // peaceful-warning {{Method called on moved-from object 'a'}}
// peaceful-note@-1 {{Method called on moved-from object 'a'}}
OpenPOWER on IntegriCloud