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?

Reply via email to