rsmith added inline comments.

================
Comment at: clang/lib/Sema/SemaCast.cpp:734
 void CastOperation::CheckDynamicCast() {
+  CheckNoDerefRAII noderef_check(*this);
+
----------------
Please use UpperCamelCase for local variables.


================
Comment at: clang/lib/Sema/SemaCast.cpp:2557-2558
           return;
+        CheckNoDeref(Self, SrcExpr.get()->getType(), ResultType,
+                     OpRange.getBegin());
       }
----------------
Should we be checking this for a C-style cast?  You previously said  you were 
going to turn off the checks for C-style casts. Did you change your mind on 
that?


================
Comment at: clang/lib/Sema/SemaCast.cpp:2982
 
+  CheckNoDeref(*this, Op.SrcExpr.get()->getType(), Op.ResultType, LPLoc);
+
----------------
As above, should we be checking this for a C-style cast? (It also looks like 
we're doing this check twice in C++.)


================
Comment at: clang/lib/Sema/SemaInit.cpp:8182-8184
+            // Do not check static casts here because they are checked earlier
+            // in Sema::ActOnCXXNamedCast()
+            if (!Kind.isStaticCast()) {
----------------
leonardchan wrote:
> leonardchan wrote:
> > rsmith wrote:
> > > Are there any `static_cast` cases that don't get here? I'm also a little 
> > > surprised that `static_cast` would get here but the `static_cast` 
> > > interpretation of a C-style or functional cast would not.
> > I'll double check on this. The reason I added this here was because the 
> > cast in `static_cast_from_same_ptr_type()` triggered 2 of the 
> > `warn_noderef_to_dereferenceable_pointer` warnings and one of them was 
> > triggered here.
> Yeah it seems the `int *a = static_cast<int *>(x);` case in 
> `cast_from_void_ptr()` is an example of a static_cast that doesn't go through 
> here.
I see, this is only reached for the part of `static_cast` that considers 
implicit conversion sequences. OK.

I expect there's similar overlap for all the other kinds of cast too. Should we 
be suppressing this check for *all* casts, given that we perform the check in 
`SemaCast` instead?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77836/new/

https://reviews.llvm.org/D77836



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to