fre 2021-10-29 klockan 21:17 -0400 skrev Ronald S. Bultje: > 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.
Maybe we should upgrade to C11 then? This gives us access to more useful language features. Type-generic expressions look very useful /Tomas _______________________________________________ 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".