[PATCH] D114718: [analyzer] Implement a new checker for Strict Aliasing Rule.
Denys Petrov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Dec 22 09:10:47 PST 2021
ASDenysPetrov updated this revision to Diff 395881.
ASDenysPetrov added a comment.
Added more tests for records (classes, structs, unions). Improved `AccessInferrer`. Removed support of cast kinds such as `DerivedToBase` and `BaseToDerived`, since they are not implied in //[[ https://eel.is/c++draft/basic.lval#11 | C++20 7.2.1 p11 [basic.lval] ]]// paragraph.
TODO: White tests for multi-level casts, e.g.:
T1 a; // a
auto* b = (T2*)&a; // {a, T2}
auto* c = (T3*)b; // {{a, T2}, T3}
auto* d = (T4*)c; // {{{a, T2}, T3}, T4}
auto e = *d;
TODO: Fix case with `loc::ConcreteInt`, e.g.:
T1 *a = nullptr; // 0 loc
auto* b = (T2*)&a; // 0 loc
auto c = *d; // We are not able to detect an original type and aliased type from 0loc.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D114718/new/
https://reviews.llvm.org/D114718
Files:
clang/include/clang/StaticAnalyzer/Checkers/Checkers.td
clang/lib/StaticAnalyzer/Checkers/CMakeLists.txt
clang/lib/StaticAnalyzer/Checkers/StrictAliasingChecker.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/cv.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/enam-ptr-to-scalar.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/enam-var-to-scalar.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/enum-ptr-to-enum.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/enum-ptr-to-record.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/enum-var-to-enum.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/enum-var-to-record.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/enums.h
clang/test/Analysis/Checkers/StrictAliasingChecker/record-ptr-to-enum.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/record-ptr-to-record.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/record-ptr-to-scalar.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/record-var-to-enum.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/record-var-to-record.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/record-var-to-scalar.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/records.h
clang/test/Analysis/Checkers/StrictAliasingChecker/scalar-ptr-to-enum.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/scalar-ptr-to-record.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/scalar-ptr-to-scalar.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/scalar-var-to-enum.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/scalar-var-to-record.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/scalar-var-to-scalar.cpp
clang/test/Analysis/Checkers/StrictAliasingChecker/typedef.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D114718.395881.patch
Type: text/x-patch
Size: 187913 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20211222/dfc821f9/attachment-0001.bin>
More information about the cfe-commits
mailing list