Fortran code containing preprocessor instructions needed for handling system-specific behaviour is traditionally written to files with the extension .F (rather than .f). The GCC driver would preprocess this file in a first step, writing the intermediate code to a temporary .f file.
The regression (observed with both GCC 4.0.1 (gfortran) and GCC 3.3.6 (g77)) is that the preprocessing stage fails (3.3.6) when any Fortran-specific options are used (e.g. '-Wsurprising' as an option known to both gfortran and g77) or issues a warning about an unrecognized option (4.0.1). This worked in older versions (tested with 3.4.3, 3.3.3, 3.2, 3.0.4). If the code in the .F file does not contain preprocessor instructions, one could explicitly set the language ('-x f77') to force acceptance of the Fortran specific options - but the preprocessor stage is skipped then in all GCC versions, just as if using a .f file name extension. To fix this regression, the preprocessing stage should accept (and ignore) the Fortran-specific options, as it used to be in earlier versions. Not sure if this should be assigned to the preprocessor or the driver component. While 4.0.1 just issues an irritating warning and continues, no Fortran-specific options can be used anymore for .F files to be preprocessed in 3.3.6 (and perhaps 3.4.4, untested). Demonstration script hello.sh (use as 'FC=g77 ./hello.sh' with GCC 3.x.x): #!/bin/sh if [ -z $FC ]; then FC="gfortran" fi set -x cat >hello.f <<EndOfF Program MAIN #ifdef TEST1 Write(*,*) 'Hello, world no. 1' #else Write(*,*) 'Hello, world no. 2' #endif End EndOfF ln -sf hello.f hello.F echo "Without Fortran-specific option compilation works fine:" ${FC} -g -Wall -DTEST1 hello.F -o hello1 ./hello1 ${FC} -g -Wall hello.F -o hello2 ./hello2 echo "Both gfortran and g77 version 3.3.6 (perhaps also 3.4.4?) fail/complain" echo " with Fortran-specific options while older g77 version are OK:" ${FC} -g -Wall -Wsurprising hello.F -o hello echo "When setting the language explicitly, the preprocessor is skipped:" ${FC} -g -Wall -Wsurprising -x f77 hello.F -o hello -- Summary: [gfortran & g77] Regression compiling Fortran code with preprocessor instructions Product: gcc Version: 4.0.1 Status: UNCONFIRMED Severity: normal Priority: P2 Component: driver AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: Konrad dot Bernloehr at mpi-hd dot mpg dot de CC: gcc-bugs at gcc dot gnu dot org GCC target triplet: i586-mandriva-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23532