re PR tree-optimization/58472 (gomp4: ICE in in vectorizable_store, at tree-vect...
authorJakub Jelinek <jakub@redhat.com>
Thu, 19 Sep 2013 16:56:40 +0000 (18:56 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 19 Sep 2013 16:56:40 +0000 (18:56 +0200)
PR tree-optimization/58472
* tree-vect-stmts.c (vectorizable_store, vectorizable_load): For
simd_lane_access set inv_p = false.
* omp-low.c (lower_rec_input_clauses): Set TREE_NO_WARNING on
the simduid magic VAR_DECL.

* c-c++-common/gomp/pr58472.c: New test.

From-SVN: r202748

gcc/ChangeLog
gcc/omp-low.c
gcc/tree-vect-stmts.c

index acf941874b91635b5692a99125ef40aa1372d9d8..1a12eda9188d4f3924970edd378c0a6db4a5e0e0 100644 (file)
@@ -1,3 +1,11 @@
+2013-09-19  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/58472
+       * tree-vect-stmts.c (vectorizable_store, vectorizable_load): For
+       simd_lane_access set inv_p = false.
+       * omp-low.c (lower_rec_input_clauses): Set TREE_NO_WARNING on
+       the simduid magic VAR_DECL.
+
 2013-09-19  Jan Hubicka  <jh@suse.cz>
 
        * i386.c (generic_memcpy, generic_memset): Fix 32bit template.
index 304ea363600af1b2fb994bd2c85b54f1b2d9f795..fa9aca49a3aa76d380eea73b3cf34d607dcc6170 100644 (file)
@@ -2775,6 +2775,9 @@ lower_rec_input_clauses (tree clauses, gimple_seq *ilist, gimple_seq *dlist,
   if (lane)
     {
       tree uid = create_tmp_var (ptr_type_node, "simduid");
+      /* Don't want uninit warnings on simduid, it is always uninitialized,
+        but we use it not for the value, but for the DECL_UID only.  */
+      TREE_NO_WARNING (uid) = 1;
       gimple g
        = gimple_build_call_internal (IFN_GOMP_SIMD_LANE, 1, uid);
       gimple_call_set_lhs (g, lane);
index 135eb300ef10e47b9e324d14f426b3cea52f68ad..fcea4d0654b41b61c0dc003bc3db8740b67b23aa 100644 (file)
@@ -4182,6 +4182,7 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
              dataref_ptr = unshare_expr (DR_BASE_ADDRESS (first_dr));
              dataref_offset = build_int_cst (reference_alias_ptr_type
                                              (DR_REF (first_dr)), 0);
+             inv_p = false;
            }
          else
            dataref_ptr
@@ -5077,6 +5078,7 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
              dataref_ptr = unshare_expr (DR_BASE_ADDRESS (first_dr));
              dataref_offset = build_int_cst (reference_alias_ptr_type
                                              (DR_REF (first_dr)), 0);
+             inv_p = false;
            }
          else
            dataref_ptr