Let Expr::HasSideEffects() return false for NULL, bool literals, this, and nullptr.
Fixes PR13413, -Wunused-private-field now warns on unused fields initialized to NULL. llvm-svn: 160541
This commit is contained in:
parent
3a8bdb5677
commit
9035951409
|
@ -2340,6 +2340,12 @@ public:
|
|||
return Visit(E->getSubExpr());
|
||||
}
|
||||
bool VisitUnaryOperator(const UnaryOperator *E) { return Visit(E->getSubExpr()); }
|
||||
bool VisitGNUNullExpr(const GNUNullExpr *E) { return false; }
|
||||
bool VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *E) { return false; }
|
||||
bool VisitCXXThisExpr(const CXXThisExpr *E) { return false; }
|
||||
bool VisitCXXNullPtrLiteralExpr(const CXXNullPtrLiteralExpr *E) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Has side effects if any element does.
|
||||
bool VisitInitListExpr(const InitListExpr *E) {
|
||||
|
|
|
@ -16,7 +16,7 @@ struct foo {
|
|||
[NSString string];
|
||||
}
|
||||
}
|
||||
~foo(){ s; }
|
||||
~foo(){ }
|
||||
private:
|
||||
foo(foo const &);
|
||||
foo &operator=(foo const &);
|
||||
|
|
|
@ -209,3 +209,13 @@ union S {
|
|||
unsigned char Data[8];
|
||||
};
|
||||
} // namespace anonymous_structs_unions
|
||||
|
||||
namespace pr13413 {
|
||||
class A {
|
||||
A() : p_(__null), b_(false), a_(this), p2_(nullptr) {}
|
||||
void* p_; // expected-warning{{private field 'p_' is not used}}
|
||||
bool b_; // expected-warning{{private field 'b_' is not used}}
|
||||
A* a_; // expected-warning{{private field 'a_' is not used}}
|
||||
void* p2_; // expected-warning{{private field 'p2_' is not used}}
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue