resolve.c (resolve_procedure_interface): Copy 'is_bind_c' attribute.
authorJanus Weil <janus@gcc.gnu.org>
Thu, 11 Nov 2010 21:44:15 +0000 (22:44 +0100)
committerJanus Weil <janus@gcc.gnu.org>
Thu, 11 Nov 2010 21:44:15 +0000 (22:44 +0100)
2010-11-11  Janus Weil  <janus@gcc.gnu.org>

* resolve.c (resolve_procedure_interface): Copy 'is_bind_c' attribute.

2010-11-11  Janus Weil  <janus@gcc.gnu.org>

* gfortran.dg/proc_decl_24.f90: New.

From-SVN: r166623

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/proc_decl_24.f90 [new file with mode: 0644]

index 1478f9a..ebabcb7 100644 (file)
@@ -1,3 +1,7 @@
+2010-11-11  Janus Weil  <janus@gcc.gnu.org>
+
+       * resolve.c (resolve_procedure_interface): Copy 'is_bind_c' attribute.
+
 2010-11-10  Joseph Myers  <joseph@codesourcery.com>
 
        * trans-array.c (gfc_trans_deferred_array): Use "front-end"
index 2c9d6f6..1f5630d 100644 (file)
@@ -176,6 +176,7 @@ resolve_procedure_interface (gfc_symbol *sym)
       sym->attr.recursive = ifc->attr.recursive;
       sym->attr.always_explicit = ifc->attr.always_explicit;
       sym->attr.ext_attr |= ifc->attr.ext_attr;
+      sym->attr.is_bind_c = ifc->attr.is_bind_c;
       /* Copy array spec.  */
       sym->as = gfc_copy_array_spec (ifc->as);
       if (sym->as)
index 3156601..bac2400 100644 (file)
@@ -1,3 +1,7 @@
+2010-11-11  Janus Weil  <janus@gcc.gnu.org>
+
+       * gfortran.dg/proc_decl_24.f90: New.
+
 2010-11-11  Nicola Pero  <nicola.pero@meta-innovation.com>
 
        * objc.dg/property/at-property-20.m: New.
diff --git a/gcc/testsuite/gfortran.dg/proc_decl_24.f90 b/gcc/testsuite/gfortran.dg/proc_decl_24.f90
new file mode 100644 (file)
index 0000000..01cbb7c
--- /dev/null
@@ -0,0 +1,22 @@
+! { dg-do compile }
+!
+! Contributed by James van Buskirk
+!
+! http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/44d572766bce0e6f/
+
+  use iso_c_binding
+  implicit none
+
+  abstract interface
+    subroutine all_subs(x,y) bind(C)
+      use iso_c_binding
+      real(c_float) :: x,y
+    end subroutine all_subs
+  end  interface
+
+  procedure(all_subs) :: sub
+  type(C_FUNPTR) :: s
+
+  s = c_funloc (sub)
+
+end