Hi Sandra!

Commenting on just one single item:

On 2022-09-14T11:32:11-0600, Sandra Loosemore <san...@codesourcery.com> wrote:
> --- a/gcc/omp-simd-clone.cc
> +++ b/gcc/omp-simd-clone.cc

>  void
>  expand_simd_clones (struct cgraph_node *node)
>  {
> -  tree attr = lookup_attribute ("omp declare simd",
> -                             DECL_ATTRIBUTES (node->decl));
> -  if (attr == NULL_TREE
> -      || node->inlined_to
> +  tree attr;
> +  bool error_p = true;
> +
> +  if (node->inlined_to
>        || lookup_attribute ("noclone", DECL_ATTRIBUTES (node->decl)))
>      return;
>
> +  attr = lookup_attribute ("omp declare simd",
> +                        DECL_ATTRIBUTES (node->decl));
> +
> +  /* See if we can add an "omp declare simd" directive implicitly
> +     before giving up.  */
> +  /* FIXME: OpenACC "#pragma acc routine" translates into
> +     "omp declare target", but appears also to have some other effects
> +     that conflict with generating SIMD clones, causing ICEs.  So don't
> +     do this if we've got OpenACC instead of OpenMP.  */

Uh, ICEs...  (But I suppose this processing is not relevant for OpenACC
'routine's.)

However, OpenACC and OpenMP support may be active at the same time...

> +  if (attr == NULL_TREE
> +      && flag_openmp_target_simd_clone && !flag_openacc)

..., so '!flag_openacc' is not the right check here.  Instead you'd do
'!oacc_get_fn_attrib (DECL_ATTRIBUTES (node->decl))' (untested) or
similar.

> +    {
> +      attr = mark_auto_simd_clone (node);
> +      error_p = false;
> +    }
> +  if (attr == NULL_TREE)
> +    return;


Grüße
 Thomas
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 
München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas 
Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht 
München, HRB 106955

Reply via email to