aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gfortran.dg/pr97095.f27
-rw-r--r--gcc/tree-vect-loop.c2
2 files changed, 28 insertions, 1 deletions
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;