The testcase of PR30668 is miscompiled with -fwhole-file: $> gfortran-svn -Wall -W pr30668.f90 && ./a.out 2.0000000 4 $> gfortran-svn -Wall -W pr30668.f90 -fwhole-file && ./a.out 0.0000000 4
Expected output for the latter: 2.0000000... 8 The dump shows that the kind is properly recognized for the result variable ('-' without -fwhole-file, '+' with): - real(kind=4) D.1505; + real(kind=8) D.1504; but the kind information is not passed on - _gfortran_transfer_real (&dt_parm.1, &D.1505, 4); + _gfortran_transfer_real (&dt_parm.1, &D.1504, 4); i.e. the last argument to gfortran_transfer_real() should be '8' instead. The same holds for - static integer(kind=4) C.1506 = 4; + static integer(kind=4) C.1505 = 4; where the second line should have '8' as well. -- Summary: miscompilation with -fwhole-file Product: gcc Version: 4.5.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dfranke at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39700