https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77400
Bug ID: 77400 Summary: fortran compfails on random_seed(PUT) if seed size is less than 33 Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: saguryev.gnu at gmail dot com CC: aivchenk at gmail dot com, saguryev.gnu at gmail dot com, unassigned at gcc dot gnu.org Target Milestone: --- Starting from 12th Aug 2016, fortran compfails on random_seed(PUT=seed) as follows if seed size is less than 33 (with expected size 12 which had been working so far as long as in release branches) : sh-4.3$ gfortran ttt2.f90 -o ttt2 ttt2.f90:14:30: call random_seed (PUT=seed) 1 Error: Size of 'put' argument of 'random_seed' intrinsic at (1) too small (24/33) It's interesting that random_seed(SIZE=.. ) still report that expected seed size is 12, not 33. The problem was brought in by r239356, probably in this place: --- gcc/fortran/check.c (revision 239355) +++ gcc/fortran/check.c (revision 239356) @@ -5527,17 +5527,15 @@ ...... + part of the state too. */ + seed_size = 128 / gfc_default_integer_kind + 1; ...... if (gfc_array_size (put, &put_size) - && mpz_get_ui (put_size) < kiss_size) + && mpz_get_ui (put_size) < seed_size) Full test: sh-4.3$ cat ttt2.f90 program random_seed_test ! integer, dimension (34) :: seed integer, dimension (24) :: seed integer :: s real * 8 :: r seed=0 seed(2)=12 seed(3)=235 call random_seed (size=s ) print *, 'Random seed() size == ', s call random_seed (PUT=seed) call random_number (r) ! print *, seed print *, r end <EOR>