[analyzer] Check that an ObjCIvarRefExpr's base is non-null even as an lvalue.
authorJordan Rose <jordan_rose@apple.com>
Sat, 22 Sep 2012 01:24:38 +0000 (01:24 +0000)
committerJordan Rose <jordan_rose@apple.com>
Sat, 22 Sep 2012 01:24:38 +0000 (01:24 +0000)
commit1d64a498557507acf03f8de026ac07b662303305
tree759c7def09dfbc2d0355e5ae09bbc2a535d91e96
parent04dcb7235f279306376be64a525311c322f90c7e
[analyzer] Check that an ObjCIvarRefExpr's base is non-null even as an lvalue.

Like with struct fields, we want to catch cases like this early,
so that we can produce better diagnostics and path notes:

  PointObj *p = nil;
  int *px = &p->_x; // should warn here
  *px = 1;

llvm-svn: 164442
clang/lib/StaticAnalyzer/Checkers/DereferenceChecker.cpp
clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp
clang/test/Analysis/ivars.m
clang/test/Analysis/misc-ps.m
clang/test/Analysis/null-deref-path-notes.m [new file with mode: 0644]