https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106654
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #2) > On the C++ frontend side I'd simply handle > > [[assume(expr)]] > > as if 'expr' were in a lambda -> bool with everything captured by value. ... because it seems (ick!) void foo() { int i = 0; [[assume(++i == 1)]]; if (i != 0) std::abort (); } needs to work. We couldn't let that ++i "escape" to GENERIC/GIMPLE, even when protected with if (.IFN_ASSUME ()) it would create ugly PHIs.