When preprocessing Fortran code (ie when cc1 is called with -lang-fortran) we should define a __GFORTRAN__ macro. Here's a patch that does just that:
Index: c-common.h =================================================================== --- c-common.h (revision 124116) +++ c-common.h (working copy) @@ -254,6 +254,9 @@ #define c_dialect_cxx() (c_language & clk_cxx) #define c_dialect_objc() (c_language & clk_objc) +/* FXC */ +extern bool lang_fortran; + /* Information about a statement tree. */ struct stmt_tree_s GTY(()) { Index: c-cppbuiltin.c =================================================================== --- c-cppbuiltin.c (revision 124116) +++ c-cppbuiltin.c (working copy) @@ -569,6 +569,9 @@ if (flag_openmp) cpp_define (pfile, "_OPENMP=200505"); + if (lang_fortran) + cpp_define (pfile, "__GFORTRAN__=1"); + builtin_define_type_sizeof ("__SIZEOF_INT__", integer_type_node); builtin_define_type_sizeof ("__SIZEOF_LONG__", long_integer_type_node); builtin_define_type_sizeof ("__SIZEOF_LONG_LONG__", Index: c-opts.c =================================================================== --- c-opts.c (revision 124116) +++ c-opts.c (working copy) @@ -73,7 +73,7 @@ static bool verbose; /* If -lang-fortran seen. */ -static bool lang_fortran = false; +bool lang_fortran = false; /* Dependency output file. */ static const char *deps_file; -- Summary: __GFORTRAN__ preprocessor macro Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: driver AssignedTo: fxcoudert at gcc dot gnu dot org ReportedBy: fxcoudert at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31694