Hi! On Fri, 9 Jan 2015 16:37:00 +0100, Tom de Vries <tom_devr...@mentor.com> wrote: > For the oacc kernels patch series I need a fortran builtin with fn spec > attribute (as mentioned here: > https://gcc.gnu.org/ml/gcc/2014-12/msg00001.html ). > > Attached patch adds a function gfc_define_builtin_with_spec that allows me to > define such a builtin. > > At this point there's no user yet in trunk, so I've declared it unused. > > Bootstrapped and reg-tested on x86_64. > > OK for stage 3 trunk?
Committed to gomp-4_0-branch in r222275: commit ee0a44a49648f1addce78a6765bcbf6a14f237c2 Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue Apr 21 18:24:48 2015 +0000 Add gfc_define_builtin_with_spec gcc/fortran/ * f95-lang.c (gfc_define_builtin_with_spec): New function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@222275 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog.gomp | 4 ++++ gcc/fortran/f95-lang.c | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git gcc/fortran/ChangeLog.gomp gcc/fortran/ChangeLog.gomp index 02a1aeb..8c23900 100644 --- gcc/fortran/ChangeLog.gomp +++ gcc/fortran/ChangeLog.gomp @@ -1,3 +1,7 @@ +2015-04-21 Tom de Vries <t...@codesourcery.com> + + * f95-lang.c (gfc_define_builtin_with_spec): New function. + 2015-01-13 Thomas Schwinge <tho...@codesourcery.com> * trans-openmp.c (gfc_omp_finish_clause, gfc_trans_omp_clauses): diff --git gcc/fortran/f95-lang.c gcc/fortran/f95-lang.c index de9c813..1a14860 100644 --- gcc/fortran/f95-lang.c +++ gcc/fortran/f95-lang.c @@ -39,6 +39,7 @@ along with GCC; see the file COPYING3. If not see #include "wide-int.h" #include "inchash.h" #include "tree.h" +#include "stringpool.h" #include "flags.h" #include "langhooks.h" #include "langhooks-def.h" @@ -600,6 +601,26 @@ gfc_define_builtin (const char *name, tree type, enum built_in_function code, set_builtin_decl (code, decl, true); } +/* Like gfc_define_builtin, but with fn spec attribute FNSPEC. */ + +static void ATTRIBUTE_UNUSED +gfc_define_builtin_with_spec (const char *name, tree fntype, + enum built_in_function code, + const char *library_name, int attr, + const char *fnspec) +{ + if (fnspec) + { + /* Code copied from build_library_function_decl_1. */ + tree attr_args = build_tree_list (NULL_TREE, + build_string (strlen (fnspec), fnspec)); + tree attrs = tree_cons (get_identifier ("fn spec"), + attr_args, TYPE_ATTRIBUTES (fntype)); + fntype = build_type_attribute_variant (fntype, attrs); + } + + gfc_define_builtin (name, fntype, code, library_name, attr); +} #define DO_DEFINE_MATH_BUILTIN(code, name, argtype, tbase) \ gfc_define_builtin ("__builtin_" name "l", tbase##longdouble[argtype], \ Grüße, Thomas
signature.asc
Description: PGP signature