https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94717
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Eric Botcazou from comment #3) > > The compiler is apparently not prepared for new trapping loads. Fixing... > > No, just a missing check on landing pads: > > index a6687cd9c98..4ab8e0250ab 100644 > --- a/gcc/gimple-ssa-store-merging.c > +++ b/gcc/gimple-ssa-store-merging.c > @@ -2680,6 +2680,7 @@ imm_store_chain_info::coalesce_immediate_stores () > p[3] = data; > using the bswap framework. */ > if (info->bitpos == merged_store->start + merged_store->width > + && info->lp_nr == merged_store->lp_nr > && merged_store->stores.length () == 1 > && merged_store->stores[0]->ins_stmt != NULL > && info->ins_stmt != NULL) Shouldn't that be done in try_coalesce_bswap instead? Because checking lp_nr above will only make sure it is the same between merged_store and the first store after it, but we are trying to coalesce often more than that. By checking it in try_coalesce_bswap, in the first loop in that function, it will verify all stores.