[PATCH] D121120: [clang-tidy] New check for safe usage of `std::optional` and like types.
Yitzhak Mandelbaum via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu May 5 13:15:48 PDT 2022
ymandel marked 3 inline comments as done.
ymandel added inline comments.
================
Comment at: clang-tools-extra/clang-tidy/bugprone/UncheckedOptionalAccessCheck.cpp:84
+ if (!BlockToOutputState ||
+ BlockToOutputState->size() <= Context->getCFG().getExit().getBlockID())
+ return;
----------------
xazax.hun wrote:
> xazax.hun wrote:
> > Could the size of the vector ever be wrong? Should this be an assert instead?
> Whoops, after the update this comment is out of place, now it supposed to be on line 60.
Based on my reading, it is a rare, but possible condition. Basically, we need code where the exit block is unreachable, which I believe can happen in weird cases like:
```
while(true) {...}
```
https://godbolt.org/z/rfEnfaWTv -- notice the lack of predecessors for the exit block.
See the code here, which follows the ordering of the blocks and doesn't force blocks to be processed:
https://github.com/llvm/llvm-project/blob/main/clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp#L337-L364
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D121120/new/
https://reviews.llvm.org/D121120
More information about the cfe-commits
mailing list