[PATCH] D144064: [-Wunsafe-buffer-usage] Match unsafe pointers being casted to bool or participating in pointer subtractions
Artem Dergachev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 8 14:27:49 PST 2023
NoQ added a comment.
Looks great overall!
================
Comment at: clang/lib/Analysis/UnsafeBufferUsage.cpp:156
+ // 2. the operand of a cast-to-(Integer or Boolean) operation; or
+ // 3. the operand of a pointer subtraction operation; or
+ // 4. the operand of a pointer comparison operation; or
----------------
malavikasamak wrote:
> malavikasamak wrote:
> > I don't understand why we are special handling only pointer subtraction here. Won't pointer addition be also considered UPC? If so, can we just add it to this patch.
> Never mind. It looks like pointer addition is not even legal and subtraction is a special case.
I think this is about operations between two pointers, like `p - q`. You can subtract a pointer from a pointer (it gives you the distance between points in memory) but you can't add a pointer to a pointer (it makes no sense).
But yeah, could be clarified.
================
Comment at: clang/lib/Analysis/UnsafeBufferUsage.cpp:175-178
+ allOf(hasLHS(hasPointerType()),
+ hasRHS(hasPointerType())),
+ eachOf(hasLHS(InnerMatcher),
+ hasRHS(InnerMatcher)));
----------------
Tabs vs. spaces.
================
Comment at: clang/test/SemaCXX/warn-unsafe-buffer-usage-fixits-addressof-arraysubscript.cpp:88
+
+// CHECK-NOT: fix-it:"{{.*}}":{
[[clang::unsafe_buffer_usage]]
----------------
I think the original CHECK-NOT was better because it allows you to write more tests below it. It's good to have individual test cases self-contained and not affect the rest of the file.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D144064/new/
https://reviews.llvm.org/D144064
More information about the cfe-commits
mailing list