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

Attachment: signature.asc
Description: PGP signature

Reply via email to