[analyzer] Enforce super-region classes for various memory regions.
authorArtem Dergachev <artem.dergachev@gmail.com>
Thu, 13 Apr 2017 09:56:07 +0000 (09:56 +0000)
committerArtem Dergachev <artem.dergachev@gmail.com>
Thu, 13 Apr 2017 09:56:07 +0000 (09:56 +0000)
commit6dd11048f53f3352a5501a506c54a5e5d40e3d19
treed06efb5f1368b45b780798f4e3426fd421db8bde
parentd4998b0344b4cd647950f3f3ac2a23d3aadfd4e8
[analyzer] Enforce super-region classes for various memory regions.

We now check the type of the super-region pointer for most SubRegion classes
in compile time; some checks are run-time though.

This is an API-breaking change (we now require explicit casts to specific region
sub-classes), but in practice very few checkers are affected.

Differential Revision: https://reviews.llvm.org/D26838

llvm-svn: 300189
clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.cpp
clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp
clang/lib/StaticAnalyzer/Core/MemRegion.cpp
clang/lib/StaticAnalyzer/Core/RegionStore.cpp
clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
clang/lib/StaticAnalyzer/Core/Store.cpp