From: Alexandre Oliva Date: Fri, 4 Sep 2009 19:03:49 +0000 (+0000) Subject: re PR debug/41225 (VTA: internal compiler error: in vect_stmt_relevant_p, at tree... X-Git-Tag: releases/gcc-4.5.0~3669 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3157b0c242844c97a2469591543208013cfc8a9c;p=thirdparty%2Fgcc.git re PR debug/41225 (VTA: internal compiler error: in vect_stmt_relevant_p, at tree-vect-stmts.c:150) gcc/ChangeLog: PR debug/41225 * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses. gcc/testsuite/ChangeLog: PR debug/41225 * gfortran.dg/pr41225.f90: New. From-SVN: r151438 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b871f580cd15..902f7fc39ef1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-09-04 Alexandre Oliva + + PR debug/41225 + * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses. + 2009-09-04 Alexandre Oliva PR target/41252 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ee774b13d30b..7da08f9247a6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-09-04 Alexandre Oliva + + PR debug/41225 + * gfortran.dg/pr41225.f90: New. + 2009-09-04 Alexandre Oliva * gcc.dg/guality/guality.h: Include stdint.h. Drop unnecessary diff --git a/gcc/testsuite/gfortran.dg/pr41225.f90 b/gcc/testsuite/gfortran.dg/pr41225.f90 new file mode 100644 index 000000000000..54daf4d1e246 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr41225.f90 @@ -0,0 +1,20 @@ +! { dg-do compile } +! { dg-options "-O2 -ffast-math -funroll-loops -ftree-vectorize -g" } + SUBROUTINE block_15_1_1_1(kbd,kbc,kad,kac,pbd,pbc,pad,pac,prim,scale) + INTEGER, PARAMETER :: dp=8 + REAL(KIND=dp) :: kbd(1*1), kbc(1*1), kad(15*1), kac(15*1), pbd(1*1), & + pbc(1*1), pad(15*1), pac(15*1), prim(15*1*1*1), scale + INTEGER :: ma, mb, mc, md, p_index + DO md = 1,1 + DO mc = 1,1 + DO mb = 1,1 + DO ma = 1,15 + p_index=p_index+1 + tmp = scale*prim(p_index) + ks_bd = ks_bd + tmp* pac((mc-1)*15+ma) + END DO + kbd((md-1)*1+mb) = kbd((md-1)*1+mb) - ks_bd + END DO + END DO + END DO + END SUBROUTINE block_15_1_1_1 diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 0a2ab19a232e..7e45123faff8 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -145,6 +145,9 @@ vect_stmt_relevant_p (gimple stmt, loop_vec_info loop_vinfo, if (vect_print_dump_info (REPORT_DETAILS)) fprintf (vect_dump, "vec_stmt_relevant_p: used out of loop."); + if (is_gimple_debug (USE_STMT (use_p))) + continue; + /* We expect all such uses to be in the loop exit phis (because of loop closed form) */ gcc_assert (gimple_code (USE_STMT (use_p)) == GIMPLE_PHI);