re PR tree-optimization/37955 (internal compiler error: in vectorizable_store, at...
authorRichard Guenther <rguenther@suse.de>
Fri, 28 Nov 2008 11:30:45 +0000 (11:30 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 28 Nov 2008 11:30:45 +0000 (11:30 +0000)
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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr37742-3.c [new file with mode: 0644]
gcc/testsuite/gcc.c-torture/compile/pr37955.c [new file with mode: 0644]
gcc/tree-vect-transform.c

index aaba646..615aad2 100644 (file)
@@ -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
index 9a760c5..d02f289 100644 (file)
@@ -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 (file)
index 0000000..541bd42
--- /dev/null
@@ -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 (file)
index 0000000..1ac0246
--- /dev/null
@@ -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;
+    }
+}
+
index 1e7538a..18c22e7 100644 (file)
@@ -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);