From 249ae8f0a575818f49824aeb49231fe223620960 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Fri, 28 Nov 2008 11:30:45 +0000 Subject: [PATCH] re PR tree-optimization/37955 (internal compiler error: in vectorizable_store, at tree-vect-transform.c:5447) 2008-11-28 Richard Guenther PR tree-optimization/37955 PR tree-optimization/37742 * tree-vect-transform.c (vectorizable_store): Remove assert for compatible aliases. (vectorizable_load): Likewise. * gcc.c-torture/compile/pr37955.c: New testcase. * gcc.c-torture/compile/pr37742-3.c: Likewise. From-SVN: r142257 --- gcc/ChangeLog | 8 ++++++++ gcc/testsuite/ChangeLog | 7 +++++++ gcc/testsuite/gcc.c-torture/compile/pr37742-3.c | 17 +++++++++++++++++ gcc/testsuite/gcc.c-torture/compile/pr37955.c | 19 +++++++++++++++++++ gcc/tree-vect-transform.c | 10 ---------- 5 files changed, 51 insertions(+), 10 deletions(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr37742-3.c create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr37955.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aaba646..615aad2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2008-11-28 Richard Guenther + + PR tree-optimization/37955 + PR tree-optimization/37742 + * tree-vect-transform.c (vectorizable_store): Remove assert for + compatible aliases. + (vectorizable_load): Likewise. + 2008-11-27 Richard Guenther * tree-ssa-structalias.c (intra_create_variable_infos): Make diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9a760c5..d02f289 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2008-11-28 Richard Guenther + + PR tree-optimization/37955 + PR tree-optimization/37742 + * gcc.c-torture/compile/pr37955.c: New testcase. + * gcc.c-torture/compile/pr37742-3.c: Likewise. + 2008-11-28 Jakub Jelinek PR testsuite/38261 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37742-3.c b/gcc/testsuite/gcc.c-torture/compile/pr37742-3.c new file mode 100644 index 0000000..541bd42 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr37742-3.c @@ -0,0 +1,17 @@ +void matmul_i4 (int * __restrict dest_y, + const int * __restrict abase, + const int * __restrict bbase_y, + int count, int xcount, int ycount, int aystride) +{ + int x, y, n; + const int * __restrict abase_n; + int bbase_yn; + for (y = 0; y < ycount; y++) + for (n = 0; n < count; n++) { + abase_n = abase + n*aystride; + bbase_yn = bbase_y[n]; + for (x = 0; x < xcount; x++) + dest_y[x] += abase_n[x] * bbase_yn; + } +} + diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37955.c b/gcc/testsuite/gcc.c-torture/compile/pr37955.c new file mode 100644 index 0000000..1ac0246 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr37955.c @@ -0,0 +1,19 @@ +typedef struct +{ + enum { NotConnected = 0 } conn_state; + unsigned int conn_hndl; +} AEP_CONNECTION_ENTRY; + +static AEP_CONNECTION_ENTRY aep_app_conn_table[256]; + +void aep_mod_exp (void) +{ + int count; + + for (count = 0; count < 256; count++) + { + aep_app_conn_table[count].conn_state = NotConnected; + aep_app_conn_table[count].conn_hndl = 0; + } +} + diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c index 1e7538a..18c22e7 100644 --- a/gcc/tree-vect-transform.c +++ b/gcc/tree-vect-transform.c @@ -5440,11 +5440,6 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, vec_oprnd = VEC_index (tree, result_chain, i); data_ref = build_fold_indirect_ref (dataref_ptr); - /* If accesses through a pointer to vectype do not alias the original - memory reference we have a problem. This should never happen. */ - gcc_assert (get_alias_set (data_ref) == get_alias_set (gimple_assign_lhs (stmt)) - || alias_set_subset_of (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); @@ -6668,11 +6663,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 (get_alias_set (data_ref) == get_alias_set (gimple_assign_rhs1 (stmt)) - || alias_set_subset_of (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); -- 2.7.4