https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104497
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- Interestingly the C++ frontend handles the COND_EXPR like (void) (VIEW_CONVERT_EXPR<int[4]>(y)[i] = (i & 1) != 0 ? VIEW_CONVERT_EXPR<int[4]>(inv)[i] : VIEW_CONVERT_EXPR<int[4]>(src)[i]) >>>>>; avoiding this issue.