On Fri, Nov 27, 2015 at 12:42:09PM +0100, Tom de Vries wrote: > --- a/gcc/omp-low.c > +++ b/gcc/omp-low.c > @@ -1366,10 +1366,12 @@ build_sender_ref (tree var, omp_context *ctx) > return build_sender_ref ((splay_tree_key) var, ctx); > } > > -/* Add a new field for VAR inside the structure CTX->SENDER_DECL. */ > +/* Add a new field for VAR inside the structure CTX->SENDER_DECL. If > + BASE_POINTERS_RESTRICT, declare the field with restrict. */ > > static void > -install_var_field (tree var, bool by_ref, int mask, omp_context *ctx) > +install_var_field_1 (tree var, bool by_ref, int mask, omp_context *ctx, > + bool base_pointers_restrict)
Ugh, why the renaming? Just use default argument: bool base_pointers_restrict = false > +/* As install_var_field_1, but with base_pointers_restrict == false. */ > + > +static void > +install_var_field (tree var, bool by_ref, int mask, omp_context *ctx) > +{ > + install_var_field_1 (var, by_ref, mask, ctx, false); > +} And avoid the wrapper. > /* Instantiate decls as necessary in CTX to satisfy the data sharing > - specified by CLAUSES. */ > + specified by CLAUSES. If BASE_POINTERS_RESTRICT, install var field with > + restrict. */ > > static void > -scan_sharing_clauses (tree clauses, omp_context *ctx) > +scan_sharing_clauses_1 (tree clauses, omp_context *ctx, > + bool base_pointers_restrict) Likewise. Otherwise LGTM, but I'm worried if this isn't related in any way to PR68640 and might not make things worse. Jakub