https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70321
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 38057 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38057&action=edit gcc6-pr70321.patch I'm afraid for GCC 6.x we can't do much more than attached patch, which improves the generated code, but there is no combiner post RA that would improve it even more. For GCC 6.x, I think it is out of question to move STV pass somewhere else. For stage1, I wonder if it can't move earlier, say before the combiner. If it could, then we could split the TARGET_STV patterns that weren't changed into vector insns, and let the combiner deal with that. Is there a reason why it is done after the combiner now?