http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51244
--- Comment #66 from Oleg Endo <olegendo at gcc dot gnu.org> --- Created attachment 30689 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30689&action=edit WIP RTL pass Just wanted to give an update on the issue. I've been writing an SH specific RTL pass that handles those multiple BB cases as a replacement for the splitter in *cbranch_t pattern. Basically it tries to combine comparisons and T bit cstores before cbranches across multiple blocks. There are still quite some open issues and some copy pasta to be folded, but the pass can already eliminate the test cases mentioned before. Moreover, it also optimizes DImode comparisons and can utilize SH2A's nott instruction better. In order to get good results, the pass has to be run twice. I've developed this against rev. 201282 so it also needs some adaptation for the new passes stuff that's been done recently on trunk. Kaz, the "WIP status" aside, would you be OK with something like that?