On Sun, Jun 16, 2024 at 12:33 AM Martin Uecker <muec...@gwdg.de> wrote:
>
>
> I think it should not warn about:
>
> char *x;
> *(char * volatile *)&x;
>
> as this is regular qualifier adding and this is
> a bug in GCC.
>

I can file a bug if it is indeed one.

> I would guess it looks at all qualifiers added at
> all level but should ignore the one on the first level.
>
> Martin

It looks to me like handle_warn_cast_qual() does ignore qualifiers at
the outermost level, but it is only examining the cast itself (so e.g.
it will not complain about cast from char ** to char ** volatile).

If by first level, you mean the level after the outermost, that would
solve my issue, but I'm unsure if it provides the originally intended
warnings.  On the other hand, there is also currently no warning for a
cast from char const ** to char const * const *.  Maybe this was
likewise intended to be accepted as "regular qualifier adding".

If you mean in the context of the larger expression which dereferences
the outer pointer, this seems more clearly not dangerous, but glancing
through the code, I'm not sure if we have that context where the warning
is generated.

Ryan

Reply via email to