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

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Likely "caused" by upping MOVE_MAX and GIMPLE memcpy folding exposing this
type by means of build_nonstandard_integer_type.

We have from that

      D.5177 = MEM <uint512_t> [(char * {ref-all})&x];
      MEM <uint512_t> [(char * {ref-all})digits.0] = D.5177;

and then into-SSA rewriting x as

  _22 = VIEW_CONVERT_EXPR<uint512_t>(x_21(D));
  MEM <uint512_t> [(char * {ref-all})digits.0_20] = _22;

which is eventually folded to a regular conversion by match.pd:4683.  Not
sure if retaining a V_C_E would have helped here.  Maybe lowering should
simply special-case a sign-conversion?

Reply via email to