Hi Thomas,

On Fri, Oct 29, 2021 at 9:12 AM Tomas Härdin <tjop...@acc.umu.se> wrote:

> tor 2021-10-28 klockan 21:09 +0200 skrev Paul B Mahol:
> > +    const uint16_t *src = (const uint16_t *)ssrc;
>
> This is not -fstrict-aliasing safe
>

I don't believe that is correct. It's true we're not allowed to cast
between two clashing types to access the same pointer (memory location),
but the C standard would appear to make an exception for byte types.

Quoted from https://stackoverflow.com/a/99010/4726410 because I'm too lazy
to dig through the standard:

"The types that C 2011 6.5 7 allows an lvalue to access are:
- a type compatible with the effective type of the object,
- a qualified version of a type compatible with the effective type of the
object,
- a type that is the signed or unsigned type corresponding to the effective
type of the object,
- a type that is the signed or unsigned type corresponding to a qualified
version of the effective type of the object,
- an aggregate or union type that includes one of the aforementioned types
among its members (including, recursively, a member of a subaggregate or
contained union), or
- a character type."

uint8_t is a variant of the character (aka byte) type, and so the cast
would not seem to violate strict aliasing rules.

Ronald
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to