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