summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/namelist_42.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/namelist_42.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_42.f9048
1 files changed, 48 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/namelist_42.f90 b/gcc/testsuite/gfortran.dg/namelist_42.f90
new file mode 100644
index 000000000..f15914ff1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/namelist_42.f90
@@ -0,0 +1,48 @@
+! { dg-do run { target fd_truncate } }
+! { dg-add-options ieee }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
+!
+! PR fortran/34427
+!
+! Check that namelists and the real values Inf, NaN, Infinity
+! properly coexist.
+!
+ PROGRAM TEST
+ IMPLICIT NONE
+ real , DIMENSION(11) ::foo
+ integer :: infinity
+ NAMELIST /nl/ foo
+ NAMELIST /nl/ infinity
+ foo = -1.0
+ infinity = -1
+
+ open (10, status="scratch")
+! Works:
+ write (10,*) " &nl foo = 5, 5, 5, nan, infinity, infinity "
+ write (10,*)
+ write (10,*) " = 1, /"
+ rewind (10)
+ READ (10, NML = nl)
+ close (10)
+
+ if(infinity /= 1) call abort()
+ if(any(foo(1:3) /= [5.0, 5.0, 5.0]) .or. .not.isnan(foo(4)) &
+ .or. foo(5) <= huge(foo) .or. any(foo(6:11) /= -1.0)) &
+ call abort()
+! Works too:
+ foo = -1.0
+ infinity = -1
+
+ open (10, status="scratch")
+ rewind (10)
+ write (10,'(a)') "&nl foo = 5, 5, 5, nan, infinity, infinity"
+ write (10,'(a)') "=1,/"
+ rewind (10)
+ READ (10, NML = nl)
+ CLOSE (10)
+
+ if(infinity /= 1) call abort()
+ if(any(foo(1:3) /= [5.0, 5.0, 5.0]) .or. .not.isnan(foo(4)) &
+ .or. foo(5) <= huge(foo) .or. any(foo(6:11) /= -1.0)) &
+ call abort()
+ END PROGRAM TEST