]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-optimization/117875 - missed SLP vectorization
authorRichard Biener <rguenther@suse.de>
Mon, 20 Jan 2025 13:25:31 +0000 (14:25 +0100)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 20 Jan 2025 14:48:48 +0000 (15:48 +0100)
There's a discrepancy in SLP vs non-SLP vectorization that SLP build
does not handle plain SSA copies (which should have been elimiated
earlier).  But this now bites back since non-SLP happily handles them,
causing a regression with --param vect-force-slp=1 which is now default,
resulting in a big performance regression in 456.hmmer.

So the following restores parity between SLP and non-SLP here, defering
the missed copy elimination to later (PR118565).

PR tree-optimization/117875
* tree-vect-slp.cc (vect_build_slp_tree_1): Handle SSA copies.

gcc/tree-vect-slp.cc

index 1d8e62e2fc19156b12c4139fd1b9859e42b334fd..5d9a206f8f584f1fcf0d05cbeda7b9a9b13ec0f7 100644 (file)
@@ -1522,7 +1522,8 @@ vect_build_slp_tree_1 (vec_info *vinfo, unsigned char *swap,
              && TREE_CODE_CLASS (tree_code (rhs_code)) != tcc_comparison
              && rhs_code != VIEW_CONVERT_EXPR
              && rhs_code != CALL_EXPR
-             && rhs_code != BIT_FIELD_REF)
+             && rhs_code != BIT_FIELD_REF
+             && rhs_code != SSA_NAME)
            {
              if (dump_enabled_p ())
                dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,