From: Richard Guenther Date: Mon, 2 Mar 2009 11:52:15 +0000 (+0000) Subject: re PR middle-end/39318 (internal compiler error: verify_stmts failed) X-Git-Tag: releases/gcc-4.4.0~387 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6dfb529ce2820d176b3f4c637a23544998377e39;p=thirdparty%2Fgcc.git re PR middle-end/39318 (internal compiler error: verify_stmts failed) 2009-03-02 Richard Guenther Ira Rosen PR tree-optimization/39318 * tree-vect-transform.c (vectorizable_call): Transfer the EH region information to the vectorized statement. Co-Authored-By: Ira Rosen From-SVN: r144541 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 012e8087e6ac..18ebfbf0ea1e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-03-02 Richard Guenther + Ira Rosen + + PR tree-optimization/39318 + * tree-vect-transform.c (vectorizable_call): Transfer the EH region + information to the vectorized statement. + 2009-03-01 Uros Bizjak * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b1afa603960b..239c9e4aacc1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2009-03-02 Richard Guenther + Ira Rosen + + PR tree-optimization/39318 + * gfortran.dg/vect/pr39318.f90: New test. + 2009-03-01 Jan Hubicka * gcc.dg/debug/dwarf2/ipa-cp1.c: New testcase. diff --git a/gcc/testsuite/gfortran.dg/vect/pr39318.f90 b/gcc/testsuite/gfortran.dg/vect/pr39318.f90 new file mode 100644 index 000000000000..9e58a17b5269 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/vect/pr39318.f90 @@ -0,0 +1,21 @@ +! { dg-do compile } +! { dg-options "-c -fopenmp -fexceptions -O2 -ftree-vectorize" } + + subroutine adw_trajsp (F_u,i0,in,j0,jn) + implicit none + real F_u(*) + integer i0,in,j0,jn + integer n,i,j + real*8 xsin(i0:in,j0:jn) +!$omp parallel do private(xsin) + do j=j0,jn + do i=i0,in + xsin(i,j) = sqrt(F_u(n)) + end do + end do +!$omp end parallel do + return + end + +! { dg-final { cleanup-tree-dump "vect" } } + diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c index abb33e251acc..5f9884f00104 100644 --- a/gcc/tree-vect-transform.c +++ b/gcc/tree-vect-transform.c @@ -3450,6 +3450,10 @@ vectorizable_call (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt) VEC_free (tree, heap, vargs); + /* Update the exception handling table with the vector stmt if necessary. */ + if (maybe_clean_or_replace_eh_stmt (stmt, *vec_stmt)) + gimple_purge_dead_eh_edges (gimple_bb (stmt)); + /* The call in STMT might prevent it from being removed in dce. We however cannot remove it here, due to the way the ssa name it defines is mapped to the new definition. So just replace