On Wed, Nov 19, 2014 at 08:52:40PM +0100, Bernd Schmidt wrote: > Another change that's required is (something like) the following. For ptx, > we need to know whether to output something as a .func (callable from ptx > code) or a .kernel (callable from the host). That means we need to mark the > kernel functions somehow in omp-low.c, and the following does that by way of > a new attribute (already recognized by the nvptx backend).
I think Richard's and Honza's preference in this case is a flag in cgraph_node instead of an attribute. > * omp-low.c (create_omp_child_function): Tag entrypoint > functions with a special attribute. > > diff --git a/gcc/omp-low.c b/gcc/omp-low.c > index 42ba317..8408025 100644 > --- a/gcc/omp-low.c > +++ b/gcc/omp-low.c > @@ -2228,6 +2228,12 @@ create_omp_child_function (omp_context *ctx, bool > task_copy) > break; > } > } > + if (cgraph_node::get_create (decl)->offloadable > + && !lookup_attribute ("omp declare target", > + DECL_ATTRIBUTES (current_function_decl))) > + DECL_ATTRIBUTES (decl) > + = tree_cons (get_identifier ("omp target entrypoint"), > + NULL_TREE, DECL_ATTRIBUTES (decl)); > > t = build_decl (DECL_SOURCE_LOCATION (decl), > RESULT_DECL, NULL_TREE, void_type_node); Jakub