diff options
author | Jordan Rose <jordan_rose@apple.com> | 2012-08-15 21:56:23 +0000 |
---|---|---|
committer | Jordan Rose <jordan_rose@apple.com> | 2012-08-15 21:56:23 +0000 |
commit | 83e4049d391be0725605d54b4dbc6d7e72365a6f (patch) | |
tree | 4a3c3b4cc607ba1651c52ffac1fbdfd967b4ca93 /llvm/lib/Transforms/Utils | |
parent | b32f3d5230536d79d33692ec61d7f8c96dfe2812 (diff) | |
download | bcm5719-llvm-83e4049d391be0725605d54b4dbc6d7e72365a6f.tar.gz bcm5719-llvm-83e4049d391be0725605d54b4dbc6d7e72365a6f.zip |
[analyzer] If we call a C++ method on an object, assume it's non-null.
This is analogous to our handling of pointer dereferences: if we
dereference a pointer that may or may not be null, we assume it's non-null
from then on.
While some implementations of C++ (including ours) allow you to call a
non-virtual method through a null pointer of object type, it is technically
disallowed by the C++ standard, and should not prune out any real paths in
practice.
[class.mfct.non-static]p1: A non-static member function may be called
for an object of its class type, or for an object of a class derived
from its class type...
(a null pointer value does not refer to an object)
We can also make the same assumption about function pointers.
llvm-svn: 161992
Diffstat (limited to 'llvm/lib/Transforms/Utils')
0 files changed, 0 insertions, 0 deletions