On Sat, Jan 16, 2021 at 07:19:51PM +0000, Kwok Cheung Yeung wrote:
> > I think you don't need this loop, instead you could just check
> >             if (bitmap_bit_p (&generic_head, DECL_UID (detach_decl))
> >                 || bitmap_bit_p (&firstprivate_head, DECL_UID (detach_decl))
> >                 || bitmap_bit_p (&lastprivate_head, DECL_UID (detach_decl)))
> > 
> 
> I think the main problem with this is that you cannot then point to the
> location of the offending data-sharing clause. Given a task construct with
> 'detach(x) shared(x)', I would tend to think of the 'shared(x)' as being the
> incorrect part here, and so would want the error to point to it. Unless you
> have any objections, I am inclined to keep this as it is?

Ok.  As detach clause is at most one, the loop is acceptable, but we
certainly would want to avoid O(n^2) complexities in number of clauses.

> I've tried this diff:
> 
>         case OMP_CLAUSE_DETACH:
> -         decl = OMP_CLAUSE_DECL (c);
> -         goto do_notice;
> +         flags = GOVD_FIRSTPRIVATE | GOVD_SEEN;
> +         goto do_add;
> 
> and just asserted that a suitable firstprivate clause is found in
> finish_taskreg_scan, and it seems to work fine :-).

Yeah, that should DTRT.
> 
> > > +  #pragma omp task detach (x) detach (y) /* { dg-error "there can be at 
> > > most one 'detach' clause in a task construct" } */
> > 
> > It would be on a task construct rather than in a task construct, but the
> > common wording for this diagnostics is
> > "too many %qs clauses", "detach"
> > Please use that wording.
> 
> Done, though I don't see the point of using a %qs format code with a
> constant string here...

Helping translators.
They already have the "too many %qs clauses" string to translate (and many
have translated it already), the detach word shouldn't be translated, and we
don't want them to translate
"too many %<detach%> clauses"
"too many %<if%> clauses"
"too many %<schedule%> clauses"
...

> 
> I have applied your other suggestions, and have retested the gomp.exp and
> libgomp tests. The full testrun started yesterday showed no regressions. If
> you have no further issues then I will commit this later tonight ahead of
> stage4.

LGTM, thanks.

        Jakub

Reply via email to