https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119930
Jason Merrill <jason at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|c++ |tree-optimization --- Comment #13 from Jason Merrill <jason at gcc dot gnu.org> --- (In reply to Sam James from comment #10) > It goes back to r15-5595-g27778979c9a1e3 (i.e. > -fno-assume-sane-operators-new-delete works). Ah, you mean -fno-assume-sane-operators-new-delete makes the testcase succeed, as indeed it does; I initially read that as a description of the commit. Looking at the difference in tree dumps, modref1 is notably different with that flag. It looks like initializing the coroutineA capture in coroutineB is discarded with -fassume-sane: + - Analyzing store: D.9530.__coroutine_A + - Read-only or local, ignoring. and so when we call coroutineB op() and it tries to resume coroutineA, the pointer to it is missing. Changing component to tree-optimization.