This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[Fortran, Patch] PR33862 - Support .ftn/.FTN file extension and use CPP for .FOR
- From: Tobias Burnus <burnus at net-b dot de>
- To: "'fortran at gcc dot gnu dot org'" <fortran at gcc dot gnu dot org>, gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Sat, 27 Oct 2007 16:19:21 +0200
- Subject: [Fortran, Patch] PR33862 - Support .ftn/.FTN file extension and use CPP for .FOR
:ADDPATCH fortran:
This patch adds support for .ftn to gfortran, which is treated as
fixed-form Fortran source code. ".FTN" is fixed-form plus preprocessor
(in line with other vendors). I also changed .FOR to use the
preprocessor to be in line with g95, ifort, sunf95, openf95.
I also added .for (and .ftn) to the info page.
Built and currently regression testing on x86-64/Linux (still running).
OK (unless regtest fails)?
Tobias
2007-10-27 Tobias Burnus <burnus@net-b.de>
PR fortran/33862
* lang-specs.h: Support .ftn and .FTN extension, use CPP for .FOR.
* options.c (form_from_filename): Support .ftn extension.
* gfortran.texi: Document support of .for and .ftn file extension.
Index: gcc/fortran/lang-specs.h
===================================================================
--- gcc/fortran/lang-specs.h (Revision 129678)
+++ gcc/fortran/lang-specs.h (Arbeitskopie)
@@ -21,6 +21,8 @@
for the f95 language. */
{".F", "@f77-cpp-input", 0, 0, 0},
+{".FOR", "@f77-cpp-input", 0, 0, 0},
+{".FTN", "@f77-cpp-input", 0, 0, 0},
{".fpp", "@f77-cpp-input", 0, 0, 0},
{".FPP", "@f77-cpp-input", 0, 0, 0},
{"@f77-cpp-input",
@@ -45,6 +47,6 @@
%{!nostdinc:-fintrinsic-modules-path finclude%s} %{!fsyntax-only:%(invoke_as)}}", 0, 0, 0},
{".f", "@f77", 0, 0, 0},
{".for", "@f77", 0, 0, 0},
-{".FOR", "@f77", 0, 0, 0},
+{".ftn", "@f77", 0, 0, 0},
{"@f77", "%{!E:f951 %i %{!ffree-form:-ffixed-form} %(cc1_options) %{J*} %{I*}\
%{!nostdinc:-fintrinsic-modules-path finclude%s} %{!fsyntax-only:%(invoke_as)}}", 0, 0, 0},
Index: gcc/fortran/options.c
===================================================================
--- gcc/fortran/options.c (Revision 129678)
+++ gcc/fortran/options.c (Arbeitskopie)
@@ -161,6 +161,9 @@ form_from_filename (const char *filename
".for", FORM_FIXED}
,
{
+ ".ftn", FORM_FIXED}
+ ,
+ {
"", FORM_UNKNOWN}
}; /* sentinel value */
Index: gcc/fortran/gfortran.texi
===================================================================
--- gcc/fortran/gfortran.texi (Revision 129678)
+++ gcc/fortran/gfortran.texi (Arbeitskopie)
@@ -368,11 +368,11 @@ the relevant compiler front-end program
Fortran) for each file in the source code, and then calls the assembler
and linker as appropriate to produce the compiled output. In a copy of
GCC which has been compiled with Fortran language support enabled,
-@command{gcc} will recognize files with @file{.f}, @file{.f90}, @file{.f95},
-and @file{.f03} extensions as Fortran source code, and compile it
-accordingly. A @command{gfortran} driver program is also provided,
-which is identical to @command{gcc} except that it automatically links
-the Fortran runtime libraries into the compiled program.
+@command{gcc} will recognize files with @file{.f}, @file{.for}, @file{.ftn},
+@file{.f90}, @file{.f95}, and @file{.f03} extensions as Fortran source code,
+and compile it accordingly. A @command{gfortran} driver program is also
+provided, which is identical to @command{gcc} except that it automatically
+links the Fortran runtime libraries into the compiled program.
This manual specifically documents the Fortran front end, which handles
the programming language's syntax and semantics. The aspects of GCC
@@ -399,10 +399,11 @@ through a C preprocessor (CPP; sometimes
FPP) to allow for conditional compilation. In case of GNU Fortran
this is the GNU C Preprocessor in the traditional mode. On systems with
case-preserving file names, the preprocessor is automatically invoked if the
-file extension is @code{.F}, @code{.F90}, @code{.F95} or @code{.F03};
-otherwise use for fixed-format code the option @code{-x f77-cpp-input}
-and for free-format code @code{-x f95-cpp-input}. Invocation of the
-preprocessor can be suppressed using @code{-x f77} or @code{-x f95}.
+file extension is @code{.F}, @code{.FOR}, @code{.FTN}, @code{.F90},
+@code{.F95} or @code{.F03}; otherwise use for fixed-format code the option
+@code{-x f77-cpp-input} and for free-format code @code{-x f95-cpp-input}.
+Invocation of the preprocessor can be suppressed using @code{-x f77} or
+@code{-x f95}.
If the GNU Fortran invoked the preprocessor, @code{__GFORTRAN__}
is defined and @code{__GNUC__}, @code{__GNUC_MINOR__} and