[Bug tree-optimization/88223] [8 Regression] Wrong code for intrinsic memmove
joseph at codesourcery dot com
gcc-bugzilla@gcc.gnu.org
Wed Nov 28 18:04:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88223
--- Comment #10 from joseph at codesourcery dot com <joseph at codesourcery dot com> ---
On Wed, 28 Nov 2018, rguenth at gcc dot gnu.org wrote:
> Hmm, OTOH the C standard specifies that the store to u.b.b makes it the
> u.b the active member and it makes the old contents undefined. That
> would mean when loading u.a.b after the store we cannot rely on the
> exact value we get but at least the bits touched by u.b.b should be
> up-to-date (which is enough to show breakage). I thought about
> using
In my view, storing to u.b.b should be equivalent to loading u.b (a
type-punning operation if u.a was previously the active member), storing
the new value of u.b.b in a copy of the loaded value of u.b, and storing
that result back in u.b (making u.b the active member of u). (So if bits
set in u.a are not padding in u.b, and not part of the space occupied by
u.b.b, they should be preserved.)
More information about the Gcc-bugs
mailing list