This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[gomp4, trunk] Two simd fixes


Hi!

This patch fixes two issues I found on the pr58392.c testcase:
1) we weren't copying decl attributes, so e.g. inside #pragma omp parallel
"omp simd array" temporary arrays lost their attribute and weren't
adjusted because of that
2) DR_ALIGNED_TO wasn't reset after resetting DR_OFFSET on simd lane access
DRs, which resulted in the vectorizer trying to peel for alignment on those.
Those are always automatic vars that can be just aligned more.

Ok?

2013-09-16  Jakub Jelinek  <jakub@redhat.com>

	* omp-low.c (copy_var_decl): Copy DECL_ATTRIBUTES.
	* tree-vect-data-refs.c (vect_analyze_data_refs): For
	simd_lane_access drs, update also DR_ALIGNED_TO.

--- gcc/omp-low.c.jj	2013-09-16 10:08:43.000000000 +0200
+++ gcc/omp-low.c	2013-09-16 15:25:31.683903448 +0200
@@ -888,6 +888,7 @@ copy_var_decl (tree var, tree name, tree
   TREE_NO_WARNING (copy) = TREE_NO_WARNING (var);
   TREE_USED (copy) = 1;
   DECL_SEEN_IN_BIND_EXPR_P (copy) = 1;
+  DECL_ATTRIBUTES (copy) = DECL_ATTRIBUTES (var);
 
   return copy;
 }
--- gcc/tree-vect-data-refs.c.jj	2013-09-13 16:48:28.000000000 +0200
+++ gcc/tree-vect-data-refs.c	2013-09-16 14:47:56.500538758 +0200
@@ -3039,6 +3039,9 @@ again:
 				    {
 				      DR_OFFSET (newdr) = ssize_int (0);
 				      DR_STEP (newdr) = step;
+				      DR_ALIGNED_TO (newdr)
+					= size_int (highest_pow2_factor
+							(DR_OFFSET (newdr)));
 				      dr = newdr;
 				      simd_lane_access = true;
 				    }

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]