https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66119

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.  We expand from

  <bb 2>:
  a$data_13 = MEM[(struct Vec2 *)&a];
  a$32$data_14 = MEM[(struct Vec2 *)&a + 32B];
  b = b;
  v2_15 = MEM[(struct Vec2 *)&b];
  v2$32_16 = MEM[(struct Vec2 *)&b + 32B];
  _7 = a$32$data_14 + v2$32_16;
  _10 = a$data_13 + v2_15;
  MEM[(struct Vec2 *)&<retval>] = _10;
  MEM[(struct Vec2 *)&<retval> + 32B] = _7;
  return <retval>;

in GCC 5 (note the b = b assignment) while 4.9 sees

  <bb 2>:
  a$data_4 = MEM[(struct Vec2 *)&a];
  a$32$data_13 = MEM[(struct Vec2 *)&a + 32B];
  v2_14 = MEM[(struct Vec2 *)&b];
  v2$32_15 = MEM[(struct Vec2 *)&b + 32B];
  _7 = a$32$data_13 + v2$32_15;
  _10 = a$data_4 + v2_14;
  MEM[(struct Vec2 *)&<retval>] = _10;
  MEM[(struct Vec2 *)&<retval> + 32B] = _7;
  return <retval>;

Reply via email to