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;
}
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;
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}}
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}}
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}}
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'}}