https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97291
--- Comment #1 from Alexander Monakov <amonakov at gcc dot gnu.org> --- Reshuffling statements and piling up extra abstraction doesn't help solve the core issue that GIMPLE passes can duplicate any basic block, but basic blocks of SIMT loop epilogue should be protected from that. More generally, arbitrary duplication demonstrably causes miscompilation even without SIMT: PR 80053.