Re: [gomp4.1] fold ordered depend(sink) clauses

2015-07-31 Thread Jakub Jelinek
On Fri, Jul 31, 2015 at 11:48:01AM -0700, Aldy Hernandez wrote: > commit 92e33750f31c7954b8a92763d20630f4e1af9b6b > Author: Aldy Hernandez > Date: Wed Jul 29 13:39:06 2015 -0700 > > * wide-int.h (wi::gcd): New. > * gimplify.c (struct gimplify_omp_ctx): Rename iter_vars to > lo

Re: [gomp4.1] fold ordered depend(sink) clauses

2015-07-31 Thread Aldy Hernandez
On 07/31/2015 09:38 AM, Jakub Jelinek wrote: On Thu, Jul 30, 2015 at 07:27:51PM -0700, Aldy Hernandez wrote: +static gimple +gimplify_omp_ordered (tree expr, gimple_seq body) +{ + tree c, decls; + int failures = 0; + unsigned int i; + + if (gimplify_omp_ctxp) +for (c = OMP_ORDERED_CLAUSE

Re: [gomp4.1] fold ordered depend(sink) clauses

2015-07-31 Thread Jakub Jelinek
On Thu, Jul 30, 2015 at 07:27:51PM -0700, Aldy Hernandez wrote: > +static gimple > +gimplify_omp_ordered (tree expr, gimple_seq body) > +{ > + tree c, decls; > + int failures = 0; > + unsigned int i; > + > + if (gimplify_omp_ctxp) > +for (c = OMP_ORDERED_CLAUSES (expr); c; c = OMP_CLAUSE_CH

Re: [gomp4.1] fold ordered depend(sink) clauses

2015-07-30 Thread Aldy Hernandez
On 07/30/2015 03:01 AM, Jakub Jelinek wrote: On Wed, Jul 29, 2015 at 04:48:23PM -0700, Aldy Hernandez wrote: @@ -7490,8 +7503,12 @@ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p) == TREE_VEC_LENGTH (OMP_FOR_COND (for_stmt))); gcc_assert (TREE_VEC_LENGTH (OMP_FOR_INIT (for_s

Re: [gomp4.1] fold ordered depend(sink) clauses

2015-07-30 Thread Jakub Jelinek
On Wed, Jul 29, 2015 at 04:48:23PM -0700, Aldy Hernandez wrote: > @@ -7490,8 +7503,12 @@ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p) > == TREE_VEC_LENGTH (OMP_FOR_COND (for_stmt))); >gcc_assert (TREE_VEC_LENGTH (OMP_FOR_INIT (for_stmt)) > == TREE_VEC_LENGTH (OMP_F

[gomp4.1] fold ordered depend(sink) clauses

2015-07-29 Thread Aldy Hernandez
The attached patch canonicalizes sink dependence clauses into one folded clause if possible (as discussed in the paper "Expressing DOACROSS Loop Dependences in OpenMP"). The basic algorithm is to create a sink vector whose first element is the GCD of all the first elements, and whose remaining