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