http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54369
--- Comment #8 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2012-09-01 09:21:19 UTC --- > Looks good, thanks. Please go ahead. Thanks. On which branch(es)? > But how does SPARC do it? sparc_reorg starts: > > /* The only erratum we handle for now is that of the AT697F processor. */ > if (!sparc_fix_at697f) > return; > > /* We need to have the (essentially) final form of the insn stream in order > to properly detect the various hazards. Run delay slot scheduling. */ > if (optimize > 0 && flag_delayed_branch) > dbr_schedule (get_insns ()); > > without any explicit call to cleanup_barriers (which like you say usually > runs after machine_reorg but before delay_slots). Gosh. I didn't remember that sparc_reorg existed... I was referring to the regular pass pipeline, which is almost always used for SPARC. So I found the bug in the MIPS port and you found it in the SPARC port. Time to swap? ;-)