re PR fortran/78659 ([F03] Spurious "requires DTIO" reported against namelist statement)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Tue, 6 Dec 2016 17:13:31 +0000 (17:13 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Tue, 6 Dec 2016 17:13:31 +0000 (17:13 +0000)
2016-12-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/78659
* resolve.c (resolve_fl_namelist): Remove unneeded error.
PR fortran/78659
* gfortran.dg/alloc_comp_constraint_1.f90: Update test.
* gfortran.dg/alloc_comp_constraint_7.f90: New test.
* gfortran.dg/namelist_34.f90: Update test.
* gfortran.dg/namelist_63.f90: Update test.

From-SVN: r243308

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/alloc_comp_constraint_1.f90
gcc/testsuite/gfortran.dg/alloc_comp_constraint_7.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/namelist_34.f90
gcc/testsuite/gfortran.dg/namelist_63.f90

index baef2d3ce477a21573ca11404cd25a0f3c56867d..14bf4f9619ee2b301654242facc3b36c00140c4f 100644 (file)
@@ -1,3 +1,8 @@
+2016-12-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/78659
+       * resolve.c (resolve_fl_namelist): Remove unneeded error.
+
 2016-12-06  Andre Vehreschild  <vehre@gcc.gnu.org>
 
        PR fortran/78226
index 7bc9f5f5b6f86d6f7b5593e4268a5839733b9c39..e4ea10f27bccff034d9f5bc4ac5d59fc4233543f 100644 (file)
@@ -13900,15 +13900,7 @@ resolve_fl_namelist (gfc_symbol *sym)
                               "or POINTER components", nl->sym->name,
                               sym->name, &sym->declared_at))
            return false;
-
-         if (!dtio)
-           {
-             gfc_error ("NAMELIST object %qs in namelist %qs at %L has "
-                       "ALLOCATABLE or POINTER components and thus requires "
-                       "a defined input/output procedure", nl->sym->name,
-                       sym->name, &sym->declared_at);
-             return false;
-           }
+         return true;
        }
     }
 
index c7664e8b8f080dbbaecaa056915677474940c9fb..b293dcf9518892c33858245fb348e2f51136450c 100644 (file)
@@ -1,3 +1,11 @@
+2016-12-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/78659
+       * gfortran.dg/alloc_comp_constraint_1.f90: Update test.
+       * gfortran.dg/alloc_comp_constraint_7.f90: New test.
+       * gfortran.dg/namelist_34.f90: Update test.
+       * gfortran.dg/namelist_63.f90: Update test.
+
 2016-12-06  Robert Suchanek  <robert.suchanek@imgtec.com>
 
        * gcc.target/mips/msa-builtins-err.c: New test.
index eb1b1058713e095804a27236b571e35bd7a9b4a4..e1715256f4f4f98101de06e0f7fde39480d2899e 100644 (file)
@@ -1,5 +1,6 @@
 ! { dg-do compile }
-! Check that we don't allow IO or NAMELISTs with types with allocatable
+! { dg-options -std=f2003 }
+! Check that we don't allow IO of NAMELISTs with types with allocatable
 ! components (PR 20541)
 program main
 
@@ -13,8 +14,8 @@ program main
 
     type(foo) :: a
     type(bar) :: b
-    namelist /blah/ a ! { dg-error "has ALLOCATABLE or POINTER components and thus requires a defined input/output" }
-
+    namelist /blah/ a  ! This is allowed under F2003, but not F95
+    ! The following require User Defined Derived Type I/O procedures.
     write (*, *) a  ! { dg-error "cannot have ALLOCATABLE components" }
 
     read (*, *) b  ! { dg-error "cannot have ALLOCATABLE components" }
diff --git a/gcc/testsuite/gfortran.dg/alloc_comp_constraint_7.f90 b/gcc/testsuite/gfortran.dg/alloc_comp_constraint_7.f90
new file mode 100644 (file)
index 0000000..35b8e1f
--- /dev/null
@@ -0,0 +1,19 @@
+! { dg-do compile }
+! { dg-options -std=f95 }
+! Check that we don't allow types with allocatable
+program main
+
+    type :: foo
+        integer :: k
+        integer, allocatable :: x(:) ! { dg-error "Fortran 2003: ALLOCATABLE" }
+    end type foo
+
+    type :: bar
+        type(foo) :: x
+    end type bar
+
+    type(foo) :: a
+    type(bar) :: b
+    namelist /blah/ a
+
+end program main
index 94327710d38f5c649bbf12db9c6216337604b282..be8f49f71e457d0d704feec3281bd0ef7c70786a 100644 (file)
@@ -1,7 +1,7 @@
 ! { dg-do compile }
-!
+! { dg-options -std=f95 }
 ! PR fortran/32905 - accepts types with ultimate POINTER components
-!
+! updated for PR78659
 MODULE types
   type :: tp3
     real :: x
@@ -22,7 +22,7 @@ MODULE nml
 USE types
    type(tp1) :: t1
    type(tp3) :: t3
-
-   namelist /a/ t1    ! { dg-error "has ALLOCATABLE or POINTER components and thus requires a defined input/output" }
-   namelist /b/ t3    ! { dg-error "has ALLOCATABLE or POINTER components and thus requires a defined input/output" }
+! The following are allowed under f2003.
+   namelist /a/ t1    ! { dg-error "with ALLOCATABLE or POINTER components" }
+   namelist /b/ t3    ! { dg-error "with ALLOCATABLE or POINTER components" }
 END MODULE
index 0210174031fbe2dd19f1bb96df6c943ca9c69a1e..de27b82d52fafcd7d90d3427a809df8d314e0030 100644 (file)
@@ -1,6 +1,6 @@
 ! { dg-do compile }
-!
-! PR fortran/45530
+! { dg-options -std=f95 }
+! PR fortran/45530, updated for PR78659
 !
 ! Contributed by david.sagan@gmail.com
 !
@@ -24,5 +24,6 @@ type region_struct
 end type
 
 type (c_struct) curve(10)
-namelist / params / curve ! { dg-error "ALLOCATABLE or POINTER components and thus requires a defined input/output" }
+! The following is allowed with f2003.
+namelist / params / curve ! { dg-error "ALLOCATABLE or POINTER components" }
 end program