[PATCH] D127746: [clang][dataflow] Convert `PointeeLoc` of PointerValue from reference to pointer. This allows PointeeLoc to be empty in the case of `nullptr`
Stanislav Gatev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 14 10:27:10 PDT 2022
sgatev added inline comments.
================
Comment at: clang/include/clang/Analysis/FlowSensitive/Value.h:189
public:
- explicit PointerValue(StorageLocation &PointeeLoc)
+ explicit PointerValue(StorageLocation *PointeeLoc)
: Value(Kind::Pointer), PointeeLoc(PointeeLoc) {}
----------------
Can you please document when this can be null?
================
Comment at: clang/lib/Analysis/FlowSensitive/Transfer.cpp:266-267
- auto &Loc = Env.createStorageLocation(*S);
- Env.setStorageLocation(*S, Loc);
- Env.setValue(Loc, Env.takeOwnership(std::make_unique<ReferenceValue>(
- SubExprVal->getPointeeLoc())));
+ // If PointeeLoc is null, then we are dereferencing a nullptr, skip
+ // creating a value for the dereference
+ if (auto *PointeeLoc = SubExprVal->getPointeeLoc()) {
----------------
Can you please add a test for this?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D127746/new/
https://reviews.llvm.org/D127746
More information about the cfe-commits
mailing list