diff mbox

[fortran,F03] Spurious "requires DTIO" reported against namelist statement

Message ID c843a6f9-ec37-6be2-ee17-ae81a2b01bdc@charter.net
State New
Headers show

Commit Message

Jerry DeLisle Dec. 6, 2016, 2:24 a.m. UTC
The attached patch removes one error message and updates several test cases.

I split alloc_comp_constraint_1.f90 into two cases with the addition of 
alloc_comp_constraint_7.f90. One gets different error messages depending on 
which standard is invoked, f95 or f2003.

I will do an appropriate Changelog for testsuite.

Regression tested on linux-x86_64, OK for trunk?

Regards,

Jerry

2016-12-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/78659
	* resolve.c (resolve_fl_namelist): Remove unneeded error.

Comments

Paul Richard Thomas Dec. 6, 2016, 8:34 a.m. UTC | #1
Hi Jerry,

OK for trunk - thanks.

Paul

On 6 December 2016 at 03:24, Jerry DeLisle <jvdelisle@charter.net> wrote:
> The attached patch removes one error message and updates several test cases.

>

> I split alloc_comp_constraint_1.f90 into two cases with the addition of

> alloc_comp_constraint_7.f90. One gets different error messages depending on

> which standard is invoked, f95 or f2003.

>

> I will do an appropriate Changelog for testsuite.

>

> Regression tested on linux-x86_64, OK for trunk?

>

> Regards,

>

> Jerry

>

> 2016-12-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

>

>         PR fortran/78659

>         * resolve.c (resolve_fl_namelist): Remove unneeded error.




-- 
If you're walking down the right path and you're willing to keep
walking, eventually you'll make progress.

Barack Obama
diff mbox

Patch

diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 7bc9f5f5..e4ea10f2 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -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;
 	}
     }
 
diff --git a/gcc/testsuite/gfortran.dg/alloc_comp_constraint_1.f90 b/gcc/testsuite/gfortran.dg/alloc_comp_constraint_1.f90
index eb1b1058..e1715256 100644
--- a/gcc/testsuite/gfortran.dg/alloc_comp_constraint_1.f90
+++ b/gcc/testsuite/gfortran.dg/alloc_comp_constraint_1.f90
@@ -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
index 00000000..35b8e1f0
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/alloc_comp_constraint_7.f90
@@ -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
diff --git a/gcc/testsuite/gfortran.dg/namelist_34.f90 b/gcc/testsuite/gfortran.dg/namelist_34.f90
index 94327710..be8f49f7 100644
--- a/gcc/testsuite/gfortran.dg/namelist_34.f90
+++ b/gcc/testsuite/gfortran.dg/namelist_34.f90
@@ -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
diff --git a/gcc/testsuite/gfortran.dg/namelist_63.f90 b/gcc/testsuite/gfortran.dg/namelist_63.f90
index 02101740..de27b82d 100644
--- a/gcc/testsuite/gfortran.dg/namelist_63.f90
+++ b/gcc/testsuite/gfortran.dg/namelist_63.f90
@@ -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