From 3ea069da14c5f6276ae26d2109e9ae0765c09199 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Fri, 18 Sep 2020 11:34:31 +0200 Subject: [PATCH] tree-optimization/97095 - fix typo in vectorizable_live_operation This fixes a typo introduced with the last change and not noticed because those vectorizer access macros are not type safe ... 2020-09-18 Richard Biener PR tree-optimization/97095 * tree-vect-loop.c (vectorizable_live_operation): Get the SLP vector type from the correct object. * gfortran.dg/pr97095.f: New testcase. --- gcc/testsuite/gfortran.dg/pr97095.f | 27 +++++++++++++++++++++++++++ gcc/tree-vect-loop.c | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/pr97095.f diff --git a/gcc/testsuite/gfortran.dg/pr97095.f b/gcc/testsuite/gfortran.dg/pr97095.f new file mode 100644 index 0000000..0b86e8b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr97095.f @@ -0,0 +1,27 @@ +! { dg-do compile } +! { dg-options "-O2 -ftree-vectorize" } + subroutine gen3delem(nel,ial,ifix,xta,xnoref,dd,jact,nelshell) + real*8 xnoref(3),xta(3,100),xn1(3,100) + if(nel.gt.0) then + do j=1,nel + enddo + do + enddo + endif + do + if(ifix.eq.0) then + do j=nelshell,nel + if(ial(j).eq.0) then + endif + enddo + endif + do j=nelshell,nel + enddo + do j=1,3 + xnoref(j)=xnoref(j)/dd + enddo + xn1(2,jact)=xnoref(3)*xta(1,jact)-xnoref(1)*xta(3,jact) + xn1(3,jact)=xnoref(1)*xta(2,jact)-xnoref(2)*xta(1,jact) + call foo(xn1) + enddo + end diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 3021be3..b1a6e15 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -8045,7 +8045,7 @@ vectorizable_live_operation (vec_info *vinfo, imm_use_iterator imm_iter; tree lhs, lhs_type, bitsize, vec_bitsize; tree vectype = (slp_node - ? SLP_TREE_VECTYPE (SLP_TREE_REPRESENTATIVE (slp_node)) + ? SLP_TREE_VECTYPE (slp_node) : STMT_VINFO_VECTYPE (stmt_info)); poly_uint64 nunits = TYPE_VECTOR_SUBPARTS (vectype); int ncopies; -- 2.7.4