The goal of this series is to make vector pattern statements
less special compared to normal bb statements, and thus make
them easier to work with.  It picks up the tail end of:

  https://gcc.gnu.org/ml/gcc-patches/2018-07/msg01821.html

Patch 08/11 from that series turned out to be wrong, for the
reason shown by a test in 3/6.  The new series also contains a
couple of other bug fixes and three new patches (1/6, 2/6 and 6/6).

A side benefit is that it becomes as easy for the vectoriser to
do its own DCE as it is to do the half-DCE it currently does (4/6).
This might make:

          PUSH_INSERT_PASSES_WITHIN (pass_vectorize)
              NEXT_PASS (pass_dce);
          POP_INSERT_PASSES ()

redundant -- I can experiment with that as a follow-on if the
series is OK.

The series is a prerequisite to supporting extending loads and
truncating stores.

Tested on aarch64-linux-gnu (with and without SVE), aarch64_be-elf
and x86_64-linux-gnu.  Also tested on SPEC2k6 and SPEC2017 for
SVE and x86_64-linux-gnu.

Richard

Reply via email to