re PR fortran/52295 (Allow internal procedure in generic interfaces)
authorTobias Burnus <burnus@net-b.de>
Sat, 18 Feb 2012 12:31:42 +0000 (13:31 +0100)
committerTobias Burnus <burnus@gcc.gnu.org>
Sat, 18 Feb 2012 12:31:42 +0000 (13:31 +0100)
2012-02-18  Tobias Burnus  <burnus@net-b.de>

        PR fortran/52295
        * interface.c (check_interface0): Internal procs in
        generic interfaces are allowed in Fortran 2008.

2012-02-18  Tobias Burnus  <burnus@net-b.de>

        PR fortran/52295
        * gfortran.dg/interface_35.f90: Use -std=f2003.
        * gfortran.dg/proc_ptr_comp_20.f90: Remove dg-warning.
        * gfortran.dg/interface_assignment_4.f90: Ditto.
        * gfortran.dg/bessel_1.f90: Ditto.
        * gfortran.dg/func_result_6.f90: Ditto.
        * gfortran.dg/hypot_1.f90: Ditto.
        * gfortran.dg/proc_ptr_comp_21.f90: Ditto.

From-SVN: r184372

gcc/fortran/ChangeLog
gcc/fortran/interface.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/bessel_1.f90
gcc/testsuite/gfortran.dg/func_result_6.f90
gcc/testsuite/gfortran.dg/hypot_1.f90
gcc/testsuite/gfortran.dg/interface_35.f90
gcc/testsuite/gfortran.dg/interface_assignment_4.f90
gcc/testsuite/gfortran.dg/proc_ptr_comp_20.f90
gcc/testsuite/gfortran.dg/proc_ptr_comp_21.f90

index d88120b2b5ae2552011e0aa6efe56902fa39944f..f6b54d7767f3c0a71b27cbc31b8e6fb35d0feec8 100644 (file)
@@ -1,3 +1,9 @@
+2012-02-18  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/52295
+       * interface.c (check_interface0): Internal procs in
+       generic interfaces are allowed in Fortran 2008.
+
 2012-02-17  Tobias Burnus  <burnus@net-b.de>
            Roland Stigge  <stigge@antcom.de>
 
index 16a2be9c9bb4c78f8aba58920f2a61bf8a01214f..e1f0cb6b2f8f62e03c0ef5425b28ea3efbfe8d01 100644 (file)
@@ -1292,9 +1292,10 @@ check_interface0 (gfc_interface *p, const char *interface_name)
          return 1;
        }
 
+      /* F2003, C1207. F2008, C1207.  */
       if (p->sym->attr.proc == PROC_INTERNAL
-         && gfc_notify_std (GFC_STD_GNU, "Extension: Internal procedure '%s' "
-                            "in %s at %L", p->sym->name, interface_name,
+         && gfc_notify_std (GFC_STD_F2008, "Fortran 2008: Internal procedure "
+                            "'%s' in %s at %L", p->sym->name, interface_name,
                             &p->sym->declared_at) == FAILURE)
        return 1;
     }
index 1c813f1800239c5b7afc63dbb2da9c7277fde24d..8c66e09ee7106c5bf528e0c00bbf2ca105d0c862 100644 (file)
@@ -1,3 +1,14 @@
+2012-02-18  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/52295
+       * gfortran.dg/interface_35.f90: Use -std=f2003.
+       * gfortran.dg/proc_ptr_comp_20.f90: Remove dg-warning.
+       * gfortran.dg/interface_assignment_4.f90: Ditto.
+       * gfortran.dg/bessel_1.f90: Ditto.
+       * gfortran.dg/func_result_6.f90: Ditto.
+       * gfortran.dg/hypot_1.f90: Ditto.
+       * gfortran.dg/proc_ptr_comp_21.f90: Ditto.
+
 2012-02-17  Tobias Burnus  <burnus@net-b.de>
 
        PR translation/52232
index fb1e19beef54818ec1fc95e715ec75566bd51c70..728c5ce49caa8d88b702cea787a8fe0982c9c414 100644 (file)
@@ -26,11 +26,11 @@ program test
   call check(bessel_yn (3,x4), bessel_yn (3,1.9_4))
 
 contains
-  subroutine check_r4 (a, b) ! { dg-warning "Extension: Internal procedure" }
+  subroutine check_r4 (a, b)
     real(kind=4), intent(in) :: a, b
     if (abs(a - b) > 1.e-5 * abs(b)) call abort
   end subroutine
-  subroutine check_r8 (a, b) ! { dg-warning "Extension: Internal procedure" }
+  subroutine check_r8 (a, b)
     real(kind=8), intent(in) :: a, b
     if (abs(a - b) > 1.e-7 * abs(b)) call abort
   end subroutine
index e8347be587d592a2aad3a112aad9b1b0cf97553f..e64a2ef7abc83262b826ade5c4e5f7f50da55984 100644 (file)
@@ -63,7 +63,7 @@ if (ptr /= 2) call abort()
 bar = gen()
 if (ptr /= 77) call abort()
 contains
-  function foo() ! { dg-warning "Extension: Internal procedure .foo. in generic interface" }
+  function foo()
     integer, allocatable :: foo(:)
     allocate(foo(2))
     foo = [33, 77]
index 0c1c6e2ae17e3c850d32a4a8ee1fe76d21c72c43..59022fab93ca23150555d3e5ca882eded7add29b 100644 (file)
@@ -18,11 +18,11 @@ program test
   call check(hypot(x4,y4), hypot(1.9_4,-2.1_4))
 
 contains
-  subroutine check_r4 (a, b) ! { dg-warning "Extension: Internal procedure" }
+  subroutine check_r4 (a, b)
     real(kind=4), intent(in) :: a, b
     if (abs(a - b) > 1.e-5 * abs(b)) call abort
   end subroutine
-  subroutine check_r8 (a, b) ! { dg-warning "Extension: Internal procedure" }
+  subroutine check_r8 (a, b)
     real(kind=8), intent(in) :: a, b
     if (abs(a - b) > 1.e-7 * abs(b)) call abort
   end subroutine
index 20aa4af786d2bbac44baddb61f69980da9ae4a08..eb4de12c1bd394cf8a02744563eef2e439257e3e 100644 (file)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-std=f2008" }
+! { dg-options "-std=f2003" }
 !
 ! PR fortran/48112 (module_m)
 ! PR fortran/48279 (sidl_string_array, s_Hard)
@@ -70,7 +70,7 @@ contains
     integer, intent(in) :: a
   end subroutine
 
-  integer function get1 (s) ! { dg-error "Extension: Internal procedure .get1. in generic interface .get." }
+  integer function get1 (s) ! { dg-error "Fortran 2008: Internal procedure .get1. in generic interface .get." }
     integer :: s
   end function
 
index d55af2905d50d98330f1629939a662f8e760f45f..535e88425498838c7d4a4acbd83a3558c4fea4ec 100644 (file)
@@ -16,7 +16,7 @@
 
 contains
 
-  subroutine op_assign_VS_CH (var, exp) ! { dg-warning "Extension: Internal procedure" }
+  subroutine op_assign_VS_CH (var, exp)
     type(varying_string), intent(out) :: var
     character(LEN=*), intent(in)      :: exp
   end subroutine
index e38e6545370d369616688772332a902c65e350dd..3cad7dfa66b924272a7036eb1e4a5e425498b4be 100644 (file)
@@ -35,12 +35,12 @@ o1%ppc => o2%ppc  ! { dg-error "Type/rank mismatch" }
 
 contains
 
-  real function f1(a,b) ! { dg-warning "Extension: Internal procedure" }
+  real function f1(a,b)
     real,intent(in) :: a,b
     f1 = a + b
   end function
 
-  integer function f2(a,b) ! { dg-warning "Extension: Internal procedure" }
+  integer function f2(a,b)
     real,intent(in) :: a,b
     f2 = a - b
   end function
index a21916bc844cc8fecfa3cce69498ed5bfca165ad..c000896d549ee5b995829836ef197990f3bb8593 100644 (file)
@@ -19,7 +19,7 @@
 
 contains
 
-  elemental subroutine op_assign (str, ch) ! { dg-warning "Extension: Internal procedure" }
+  elemental subroutine op_assign (str, ch)
     type(nf_t), intent(out) :: str
     character(len=*), intent(in) :: ch
   end subroutine