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?