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