On Thu, 17 Apr 2025, Sam James wrote:
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -14649,12 +14649,14 @@ Enabled at levels @option{-O2}, @option{-O3},
> @option{-Os}.
> @item -fstrict-aliasing
> Allow the compiler to assume the strictest aliasing rules applicable to
> the language being compiled. For C (and C++), this activates
> -optimizations based on the type of expressions. In particular, an
> -object of one type is assumed never to reside at the same address as an
> -object of a different type, unless the types are almost the same. For
> -example, an @code{unsigned int} can alias an @code{int}, but not a
> -@code{void*} or a @code{double}. A character type may alias any other
> -type.
> +optimizations based on the type of expressions. In particular, accessing
> +an object of one type via an expression of a different type is not allowed,
> +unless the types are @dfn{compatible types}, differ in signedness or
Maybe say "differ only in signedness..." (adding 'only') for clarity? No need
to post a v3 with just that change, I cannot review/approve it (but fwiw it
looks good to me).
Thank you.
Alexander
> +qualifiers, or the expression has a character type. Accessing scalar
> +objects via a corresponding vector type is also allowed.
> +
> +For example, an @code{unsigned int} can alias an @code{int}, but not a
> +@code{void*} or a @code{double}. A character type may alias any other type.
>
> @anchor{Type-punning}Pay special attention to code like this:
> @smallexample
>
> base-commit: 7b9d8d43154efcb56cee1787e3267183dd6a372e
>