aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2008-11-28 11:30:45 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2008-11-28 11:30:45 +0000
commit249ae8f0a575818f49824aeb49231fe223620960 (patch)
tree68dd930f61412514572441d49c8eb1bc411ee25c
parent60d6f5d8bd96638ce23c180b7a0d98de0c724c12 (diff)
downloadgcc-249ae8f0a575818f49824aeb49231fe223620960.zip
gcc-249ae8f0a575818f49824aeb49231fe223620960.tar.gz
gcc-249ae8f0a575818f49824aeb49231fe223620960.tar.bz2
re PR tree-optimization/37955 (internal compiler error: in vectorizable_store, at tree-vect-transform.c:5447)
2008-11-28 Richard Guenther <rguenther@suse.de> 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
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr37742-3.c17
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr37955.c19
-rw-r--r--gcc/tree-vect-transform.c10
5 files changed, 51 insertions, 10 deletions
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 <rguenther@suse.de>
+
+ 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 <rguenther@suse.de>
* 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 <rguenther@suse.de>
+
+ 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 <jakub@redhat.com>
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);