[PATCH] D48866: [clang-tidy] Add incorrect-pointer-cast checker

Balázs Benics via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jun 4 05:57:06 PDT 2019


steakhal added a comment.

In D48866#1527540 <https://reviews.llvm.org/D48866#1527540>, @lebedev.ri wrote:

> In D48866#1527506 <https://reviews.llvm.org/D48866#1527506>, @steakhal wrote:
>
> > The problem with the `-Wcast-align` is that it will only fire for C-style bitcast expressions, not for `reinterpret_cast` ones. example <https://godbolt.org/z/cm3S96>
> >  Does anyone know why is that behavior?
>
>
> Because `reinterpret_cast` is by definition allowed to perform these casts, so it is assumed that no warning should be issued.
>  This part of the check i look forward to.


I still don't understand why should `-Wcast-align` issue warning only for c-style casts. What is the difference in the given example? What are the related paragraphs in the standard?
I assume in the example we violated the basic.lval/11 <http://eel.is/c++draft/basic.lval#11> paragraph, so neither of those pointers are safely dereferencable.

In case we are casting from **char* ** we don't know what is the **dynamic type** of the object (same with std::byte, void * etc.). From my point of view the style of the cast is not important in this case, only the fact that both are performing bitcasts.
Have I missed something?


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

https://reviews.llvm.org/D48866





More information about the cfe-commits mailing list