From: Richard Guenther Date: Fri, 9 Jul 2010 10:05:27 +0000 (+0000) Subject: re PR fortran/44882 (Bogus types in references with mismatched commons) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ca1316d24a741f22841116540ed1c4ed41733246;p=gcc.git re PR fortran/44882 (Bogus types in references with mismatched commons) 2010-07-09 Richard Guenther PR tree-optimization/44882 * tree-vect-stmts.c (vectorizable_store): Do not assert alias sets do conflict. (vectorizable_load): Likewise. * gfortran.dg/pr44882.f90: New testcase. From-SVN: r161990 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a5d4ceb4978..4666f4cbed0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-07-09 Richard Guenther + + PR tree-optimization/44882 + * tree-vect-stmts.c (vectorizable_store): Do not assert alias + sets do conflict. + (vectorizable_load): Likewise. + 2010-07-09 Bernd Schmidt PR target/40657 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 71906e60a9a..6a42b4e5660 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-07-09 Richard Guenther + + PR tree-optimization/44882 + * gfortran.dg/pr44882.f90: New testcase. + 2010-07-09 Bernd Schmidt PR target/40657 diff --git a/gcc/testsuite/gfortran.dg/pr44882.f90 b/gcc/testsuite/gfortran.dg/pr44882.f90 new file mode 100644 index 00000000000..ac22459dc08 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr44882.f90 @@ -0,0 +1,14 @@ +! { dg-do compile } +! { dg-options "-O3 -ffast-math -funroll-loops -w" } + + SUBROUTINE TRUDGE(KDIR) +! There is a type mismatch here for TRUPAR which caused an ICE + COMMON /TRUPAR/ DR(10),V(10,10) + DO 110 I=1,NDIR + 110 DR(I)=V(I,JDIR) + END + SUBROUTINE TRUSRC(LEAVE) + IMPLICIT DOUBLE PRECISION (A-H,O-Z) + COMMON /TRUPAR/ DX(10),V(10,10) + END + diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index bf9ae73a30b..e0ae55904da 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -3372,11 +3372,6 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, data_ref = build2 (MISALIGNED_INDIRECT_REF, vectype, dataref_ptr, tmis); } - /* If accesses through a pointer to vectype do not alias the original - memory reference we have a problem. This should never happen. */ - gcc_assert (alias_sets_conflict_p (get_alias_set (data_ref), - get_alias_set (gimple_assign_lhs (stmt)))); - /* Arguments are ready. Create the new vector stmt. */ new_stmt = gimple_build_assign (data_ref, vec_oprnd); vect_finish_stmt_generation (stmt, new_stmt, gsi); @@ -3822,10 +3817,6 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, default: gcc_unreachable (); } - /* If accesses through a pointer to vectype do not alias the original - memory reference we have a problem. This should never happen. */ - gcc_assert (alias_sets_conflict_p (get_alias_set (data_ref), - get_alias_set (gimple_assign_rhs1 (stmt)))); vec_dest = vect_create_destination_var (scalar_dest, vectype); new_stmt = gimple_build_assign (vec_dest, data_ref); new_temp = make_ssa_name (vec_dest, new_stmt);