diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index fe816b719f4699ff3f5ffd3560005c4933d4830f..5c2b184d6d0680e7be22bd125987b6d74cb528b8 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2007-01-26  Tobias Burnus  <burnus@net-b.de>
+
+	* lang-specs.h: Add support for .f03 and .F03 extensions.
+	* gfortran.texi: Document .f03 extension.
+	* options.c (form_from_filename): Recognize .f03.
+
 2007-01-25  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
 
 	PR fortran/30437
diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi
index 133a6ea0bfc35d709192cd7ef10fdbbe902762e4..08fa011d55bee897df4a9607306367a62984281b 100644
--- a/gcc/fortran/gfortran.texi
+++ b/gcc/fortran/gfortran.texi
@@ -367,8 +367,8 @@ the relevant compiler front-end program (e.g., @command{f951} for
 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}, and
-@file{.f95} extensions as Fortran source code, and compile it
+@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.
diff --git a/gcc/fortran/lang-specs.h b/gcc/fortran/lang-specs.h
index 56e55a1517f36e80dad7f2fcae3df76ae6fe1347..5f005c5433ae96d0191f4b166dd7a3c3ad2a3c71 100644
--- a/gcc/fortran/lang-specs.h
+++ b/gcc/fortran/lang-specs.h
@@ -18,6 +18,7 @@ This file is licensed under the GPL.  */
       -fpreprocessed %{!nostdinc:-fintrinsic-modules-path finclude%s} %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
 {".F90", "@f95-cpp-input", 0, 0, 0},
 {".F95", "@f95-cpp-input", 0, 0, 0},
+{".F03", "@f95-cpp-input", 0, 0, 0},
 {"@f95-cpp-input",
   "cc1 -E -lang-fortran -traditional-cpp -D_LANGUAGE_FORTRAN %(cpp_options) \
       %{E|M|MM:%(cpp_debug_options)}\
@@ -26,6 +27,7 @@ This file is licensed under the GPL.  */
       -fpreprocessed %{!nostdinc:-fintrinsic-modules-path finclude%s} %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
 {".f90", "@f95", 0, 0, 0},
 {".f95", "@f95", 0, 0, 0},
+{".f03", "@f95", 0, 0, 0},
 {"@f95", "%{!E:f951 %i %(cc1_options) %{J*} %{I*}\
          %{!nostdinc:-fintrinsic-modules-path finclude%s} %{!fsyntax-only:%(invoke_as)}}", 0, 0, 0},
 {".f",   "@f77", 0, 0, 0},
diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
index 056ba33ff6df7b7638d993d8d88a42a247fb3f3f..4a00cea28a7e00fb295d576895fc159a46848e9a 100644
--- a/gcc/fortran/options.c
+++ b/gcc/fortran/options.c
@@ -136,6 +136,9 @@ form_from_filename (const char *filename)
     ".f95", FORM_FREE}
     ,
     {
+    ".f03", FORM_FREE}
+    ,
+    {
     ".f", FORM_FIXED}
     ,
     {
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a2c5b133a102ed3024d97630563a4f17271c1d7f..0151c80216f8778fe19a2e7290dd5fe67712cdfd 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2007-01-26  Tobias Burnus  <burnus@net-b.de>
+
+	* gfortran.dg/gomp/gomp.exp: Support .f03 extension.
+	* gfortran.dg/vect/vect.exp: Ditto.
+	* gfortran.dg/dg.exp: Ditto.
+	* gfortran.fortran-torture/execute/execute.exp: Ditto.
+	* gfortran.fortran-torture/compile/compile.exp: Ditto.
+
 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
 	* gcc.dg/builtins-20.c: Add more cases.
diff --git a/gcc/testsuite/gfortran.dg/dg.exp b/gcc/testsuite/gfortran.dg/dg.exp
index a6991f9f147b88e483218aea207f889f6a6388be..efa7b7d866219efce58a85bcef4b31dfad788bd8 100644
--- a/gcc/testsuite/gfortran.dg/dg.exp
+++ b/gcc/testsuite/gfortran.dg/dg.exp
@@ -30,7 +30,7 @@ dg-init
 
 # Main loop.
 gfortran-dg-runtest [lsort \
-       [glob -nocomplain $srcdir/$subdir/*.\[fF\]{,90,95} ] ] $DEFAULT_FFLAGS
+       [glob -nocomplain $srcdir/$subdir/*.\[fF\]{,90,95,03} ] ] $DEFAULT_FFLAGS
 
 gfortran-dg-runtest [lsort \
        [glob -nocomplain $srcdir/$subdir/g77/*.\[fF\] ] ] $DEFAULT_FFLAGS
diff --git a/gcc/testsuite/gfortran.dg/gomp/gomp.exp b/gcc/testsuite/gfortran.dg/gomp/gomp.exp
index 99689a29956155977c0ca320cc7b18576ade87d1..185bc3da596d9351e35f3c2cf66475e1fa4a81e1 100644
--- a/gcc/testsuite/gfortran.dg/gomp/gomp.exp
+++ b/gcc/testsuite/gfortran.dg/gomp/gomp.exp
@@ -12,7 +12,7 @@ dg-init
 
 # Main loop.
 gfortran-dg-runtest [lsort \
-       [find $srcdir/$subdir *.\[fF\]{,90,95} ] ] " -fopenmp"
+       [find $srcdir/$subdir *.\[fF\]{,90,95,03} ] ] " -fopenmp"
 
 # All done.
 dg-finish
diff --git a/gcc/testsuite/gfortran.dg/vect/vect.exp b/gcc/testsuite/gfortran.dg/vect/vect.exp
index 7f1ec2d7ce1ca44dd507db275f5acfc5d7487b3a..9f3a54f66282e30e8836b17f746930f5d4c17c87 100644
--- a/gcc/testsuite/gfortran.dg/vect/vect.exp
+++ b/gcc/testsuite/gfortran.dg/vect/vect.exp
@@ -90,7 +90,7 @@ proc check_effective_target_lp64_or_vect_no_align { } {
 dg-init
 
 # Main loop.
-gfortran-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[fF\]{,90,95} ]] $DEFAULT_VECTCFLAGS
+gfortran-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[fF\]{,90,95,03} ]] $DEFAULT_VECTCFLAGS
 
 # Clean up.
 set dg-do-what-default ${save-dg-do-what-default}
diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/compile.exp b/gcc/testsuite/gfortran.fortran-torture/compile/compile.exp
index 94a8d6d81eeed8118b50b248ea52ce70f6452387..2bc76bf27436441bb840db0db923e2c9de1b1059 100644
--- a/gcc/testsuite/gfortran.fortran-torture/compile/compile.exp
+++ b/gcc/testsuite/gfortran.fortran-torture/compile/compile.exp
@@ -53,3 +53,9 @@ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.f95]] {
     fortran-torture $testcase
 }
 
+foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.f03]] {
+    if ![runtest_file_p $runtests $testcase] then {
+	continue
+    }
+    fortran-torture $testcase
+}
diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/execute.exp b/gcc/testsuite/gfortran.fortran-torture/execute/execute.exp
index 940059a1709c06eb1cdfb74614baeb90796260c9..3aea0c06d52a21184a2f6cdf98e5bfb760922700 100644
--- a/gcc/testsuite/gfortran.fortran-torture/execute/execute.exp
+++ b/gcc/testsuite/gfortran.fortran-torture/execute/execute.exp
@@ -57,3 +57,9 @@ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.f95]] {
     fortran-torture-execute $testcase
 }
 
+foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.f03]] {
+    if ![runtest_file_p $runtests $testcase] then {
+	continue
+    }
+    fortran-torture-execute $testcase
+}
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index e0e21298dfac28f983b267fd3228a62bdd154875..68f67d40c13fbd793064182db397ccd395a20866 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,7 @@
+2007-01-26  Tobias Burnus  <burnus@net-b.de>
+
+	* testsuite/libgomp.fortran/fortran.exp: Support .f03 extension.
+
 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
 
 	PR middle-end/30494
diff --git a/libgomp/testsuite/libgomp.fortran/fortran.exp b/libgomp/testsuite/libgomp.fortran/fortran.exp
index e7ee746c282ca4b8b8447a0b5f5c0a074fc94422..bf95aab000d615a309a867a8156491d99ceea663 100644
--- a/libgomp/testsuite/libgomp.fortran/fortran.exp
+++ b/libgomp/testsuite/libgomp.fortran/fortran.exp
@@ -10,7 +10,7 @@ dg-init
 if [file exists "${blddir}/${lang_test_file}"] {
 
     # Gather a list of all tests.
-    set tests [lsort [find $srcdir/$subdir *.\[fF\]{,90,95}]]
+    set tests [lsort [find $srcdir/$subdir *.\[fF\]{,90,95,03}]]
 
     # Main loop.
     gfortran-dg-runtest $tests ""