https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80119
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- We build the CLEANUP_EXPR as <<cleanup_point 0 && (i = 4) != 0>> and later cp_fold_r folds it to <<cleanup_point 0>> without simplifying further (fold-const.c does nothing to cleanup_point). So the C++ FE somehow misses stripping of CLEANUP_EXPRs around bits w/o side-effects.