https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105373
--- Comment #17 from Avi Kivity <avi at scylladb dot com> --- This was apparently fixed by 58a7b1e354530d8dfe7d8fb859c8b8b5a9140f1f. At least, I no longer observe copying of __old4 in gimple. Instead, I see addresses taken, and if I squint I can see that object properly destroyed later on. I can't test on my full-scale program due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056. I note that one of the duplicates is titled "When constructing object, calling function and performing co_await in same statement, temporary is erroneously moved trivially", which is exactly what this PR is about, so it can be safely marked as a duplicate as well. Please consider backporting https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99576, this is a subtle code generation bug.