This comes from https://github.com/llvm/llvm-project/issues/58459 but I find it is not related to coroutines after I reduce it. Reproducer: https://godbolt.org/z/TGefxv5e5 From the generated code, we can see the call to `DoAnotherThing()` is elided incorrectly. And if we change the return type of `operator++`, we can find the problem is gone: https://godbolt.org/z/TGefxv5e5 While I tagged `codegen`, I feel like this is a frontend issue. CC people since I know not so many people subscribed to the `c++` tag: @AaronBallman @cor3ntin @Endilll @erichkeane