From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1666) id 50D513B8A406; Fri, 11 Jun 2021 11:35:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 50D513B8A406 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Richard Biener To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-1387] tree-optimization/101026 - fix SLP re-association X-Act-Checkin: gcc X-Git-Author: Richard Biener X-Git-Refname: refs/heads/master X-Git-Oldrev: 4bdcdd8fa8d7659e5a19a930cf2f0332127f8a46 X-Git-Newrev: fbd8a8041292f2ec2c22be43c8d3e74b37b2bc88 Message-Id: <20210611113539.50D513B8A406@sourceware.org> Date: Fri, 11 Jun 2021 11:35:39 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Jun 2021 11:35:39 -0000 https://gcc.gnu.org/g:fbd8a8041292f2ec2c22be43c8d3e74b37b2bc88 commit r12-1387-gfbd8a8041292f2ec2c22be43c8d3e74b37b2bc88 Author: Richard Biener Date: Fri Jun 11 13:33:17 2021 +0200 tree-optimization/101026 - fix SLP re-association Since we cannot yet encode the operation in the SLP node itself but need a representative stmt require an existing one for now to avoid the need to build a fake GIMPLE stmt. 2021-06-11 Richard Biener PR tree-optimization/101026 * tree-vect-slp.c (vect_build_slp_tree_2): Make sure we have a representative for the associated chain nodes. * gfortran.dg/pr101026.f: New testcase. Diff: --- gcc/testsuite/gfortran.dg/pr101026.f | 11 +++++++++++ gcc/tree-vect-slp.c | 4 +++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/gfortran.dg/pr101026.f b/gcc/testsuite/gfortran.dg/pr101026.f new file mode 100644 index 00000000000..9576d8802ca --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr101026.f @@ -0,0 +1,11 @@ +! { dg-do compile } +! { dg-options "-Ofast -frounding-math" } + SUBROUTINE PASSB4 (CC,CH) + DIMENSION CC(IDO,4,L1), CH(IDO,L1,*) + DO 103 I=2,IDO,2 + TI4 = CC0-CC(I,4,K) + CI4 = TI1-TI4 + CH(I-1,K,4) = CI4 + CH(I,K,4) = CI4 + 103 CONTINUE + END diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index 6237a61ffd4..897bd6f37b9 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -1860,7 +1860,9 @@ vect_build_slp_tree_2 (vec_info *vinfo, slp_tree node, chains.quick_push (chain.copy ()); chain.truncate (0); } - if (chains.length () == group_size) + if (chains.length () == group_size + /* We cannot yet use SLP_TREE_CODE to communicate the operation. */ + && op_stmt_info) { /* Now we have a set of chains with the same length. */ /* 1. pre-sort according to def_type and operation. */