]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/52542 (Procedure with a Bind (C) named interface does not inherit the...
authorTobias Burnus <burnus@net-b.de>
Mon, 12 Mar 2012 09:03:49 +0000 (10:03 +0100)
committerTobias Burnus <burnus@gcc.gnu.org>
Mon, 12 Mar 2012 09:03:49 +0000 (10:03 +0100)
2012-03-12  Tobias Burnus  <burnus@net-b.de>

        PR fortran/52542
        * decl.c (match_procedure_decl): If the interface
        is bind(C), the procedure is as well.

2012-03-12  Tobias Burnus  <burnus@net-b.de>

        PR fortran/52542
        * gfortran.dg/proc_ptr_35.f90: New.

From-SVN: r185215

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

index 2da6551b608b74f337ba41ddbaa57b3a0aea0d20..7a0ec87126656ced79219fe33e28d40134284931 100644 (file)
@@ -1,3 +1,9 @@
+2012-03-12  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/52542
+       * decl.c (match_procedure_decl): If the interface
+       is bind(C), the procedure is as well.
+
 2012-03-10  Steven Bosscher  <steven@gcc.gnu.org>
 
        * convert.c (convert): Fold BOOLEAN_TYPE types to the proper variant.
index 75b8a899c5e298f4ede0aae717854b3a03ee2163..4da21c316e3a0b74c0da30a354adc521e40a9969 100644 (file)
@@ -4855,6 +4855,13 @@ match_procedure_decl (void)
   if (m == MATCH_ERROR)
     return MATCH_ERROR;
 
+  if (proc_if && proc_if->attr.is_bind_c && !current_attr.is_bind_c)
+    {
+      current_attr.is_bind_c = 1;
+      has_name_equals = 0;
+      curr_binding_label = NULL;
+    }
+
   /* Get procedure symbols.  */
   for(num=1;;num++)
     {
index cb5afed9926fcc900dda41f937926b108d266807..cdca21e6555823850badcd78e2e60f22a07f1803 100644 (file)
@@ -1,3 +1,8 @@
+2012-03-12  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/52542
+       * gfortran.dg/proc_ptr_35.f90: New.
+
 2012-03-11  Uros Bizjak  <ubizjak@gmail.com>
 
        PR target/52530
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_35.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_35.f90
new file mode 100644 (file)
index 0000000..b6ca3a6
--- /dev/null
@@ -0,0 +1,16 @@
+! { dg-do compile }
+!
+! PR fortran/52542
+!
+! Ensure that the procedure myproc is Bind(C).
+!
+! Contributed by Mat Cross of NAG
+!
+interface
+  subroutine s() bind(c)
+  end subroutine s
+end interface
+procedure(s) :: myproc
+call myproc()
+end
+! { dg-final { scan-assembler-not "myproc_" } }