From 0ac168a1cd87bfefee6f8ebad245080cfe16fc1d Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Fri, 23 Mar 2012 11:34:32 +0000 Subject: re PR tree-optimization/52678 (internal compiler error: in vect_update_ivs_after_vectorizer, at tree-vect-loop-manip.c:1842) 2012-03-23 Richard Guenther PR tree-optimization/52678 * tree-vectorizer.h (struct _stmt_vec_info): Add loop_phi_evolution_part member. (STMT_VINFO_LOOP_PHI_EVOLUTION_PART): New define. * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Initialize STMT_VINFO_LOOP_PHI_EVOLUTION_PART. * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Use the cached evolution part and the PHI nodes value from the loop preheader edge instead of re-analyzing the evolution. * gfortran.dg/pr52678.f: New testcase. From-SVN: r185734 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/pr52678.f | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/pr52678.f (limited to 'gcc/testsuite') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 549cf5b..a6b6424 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2012-03-23 Richard Guenther + PR tree-optimization/52678 + * gfortran.dg/pr52678.f: New testcase. + +2012-03-23 Richard Guenther + PR tree-optimization/52638 * g++.dg/torture/pr52638.C: New testcase. diff --git a/gcc/testsuite/gfortran.dg/pr52678.f b/gcc/testsuite/gfortran.dg/pr52678.f new file mode 100644 index 0000000..8d0cd47 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr52678.f @@ -0,0 +1,18 @@ +! { dg-do compile } +! { dg-options "-O -ftree-vectorize" } + SUBROUTINE OpenAD_set_ref_state(DRF, RHOFACF, RHOFACC) + real(8) DRF(1 : 15) + real(8) RHOFACF(1 : 16) + real(8) RHOFACC(1 : 15) + integer, dimension(:), allocatable :: oad_it + integer :: oad_it_ptr + INTEGER(8) OpenAD_Symbol_188 + INTEGER(4) K + OpenAD_Symbol_188 = 0 + DO K = 2, 15, 1 + RHOFACF(INT(K)) = ((RHOFACC(K) * DRF(K + (-1)) + RHOFACC(K + + + (-1)) * DRF(K)) /(DRF(K) + DRF(K + (-1)))) + OpenAD_Symbol_188 = (INT(OpenAD_Symbol_188) + INT(1)) + END DO + oad_it(oad_it_ptr) = OpenAD_Symbol_188 + end subroutine OpenAD_set_ref_state -- cgit v1.1