This is the mail archive of the
fortran@gcc.gnu.org
mailing list for the GNU Fortran project.
[Patch, committed] Re: [Patch, Fortran] PR 34495 - Add -std=f95/f2003 diagnostics for real/float ...
- From: Tobias Burnus <burnus at net-b dot de>
- To: Manfred Schwarb <manfred99 at gmx dot ch>
- Cc: fortran at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Mon, 17 Dec 2007 12:26:07 +0100
- Subject: [Patch, committed] Re: [Patch, Fortran] PR 34495 - Add -std=f95/f2003 diagnostics for real/float ...
- References: <476595CB.1040803@net-b.de> <20071217085102.295110@gmx.net>
Manfred Schwarb wrote:
>> Additionally, FLOAT and SNGL were marked as GFC_STD_F77, they are G77
>> extensions and should thus be marked as GFC_STD_GNU
> FLOAT and SNGL are very much standard Fortran77, they are mentioned
> in every single fortran77 textbook I have. Additionally, they are
> correctly listed in the g77 manual
> [listed as "Intrinsic groups: (standard FORTRAN 77)"].
>
I thought I check the Fortran 95/2003 standard carefully, but obviously
I missed it. They are only listed in "13.6 Specific names for standard
intrinsic functions" (Fortran 2003); they are not even listed in the index.
Thanks for pointing out and sorry for my mistake.
However, there is something good in this mistake:
a) The gfortran documentation was wrong (now fixed)
b) FLOAT and SNGL allow with -std=f2003/f95 more types/kinds for the
argument than the Fortran standard; I filled a bug:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34505
I committed (Rev. 131007) now the following patch as obvious after
bootstapping and doing check-gfortran/libgomp check on x86-64-linux. I
also did a "make pdf".
Tobias
Index: gcc/testsuite/ChangeLog
===================================================================
--- gcc/testsuite/ChangeLog (Revision 131006)
+++ gcc/testsuite/ChangeLog (Arbeitskopie)
@@ -1,3 +1,8 @@
+2007-12-17 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/initialization_16.f90: Update as FLOAT/SNGL are
+ part of Fortran 77/95/2003.
+
2007-12-17 Dorit Nuzman <dorit@il.ibm.com>
PR tree-optimization/34445
Index: gcc/testsuite/gfortran.dg/initialization_16.f90
===================================================================
--- gcc/testsuite/gfortran.dg/initialization_16.f90 (Revision 131004)
+++ gcc/testsuite/gfortran.dg/initialization_16.f90 (Arbeitskopie)
@@ -9,7 +9,7 @@
implicit none
real, parameter :: r1 = real(33) ! { dg-error "Fortran 2003: Function 'real' as initialization expression" }
real, parameter :: r2 = dble(33) ! { dg-error "Fortran 2003: Function 'dble' as initialization expression" }
- real, parameter :: r4 = cmplx(33,33)! { dg-error "Fortran 2003: Function 'cmplx' as initialization expression" }
- print *, sngl(1.0d0) ! { dg-error "not included in the selected standard" }
- print *, float(1.0) ! { dg-error "not included in the selected standard" }
+ complex, parameter :: z = cmplx(33,33)! { dg-error "Fortran 2003: Function 'cmplx' as initialization expression" }
+ real, parameter :: r4 = sngl(3.d0) ! { dg-error "Fortran 2003: Function 'sngl' as initialization expression" }
+ real, parameter :: r5 = float(33) ! { dg-error "Fortran 2003: Function 'float' as initialization expression" }
end program main
Index: gcc/fortran/intrinsic.c
===================================================================
--- gcc/fortran/intrinsic.c (Revision 131004)
+++ gcc/fortran/intrinsic.c (Arbeitskopie)
@@ -2047,11 +2047,11 @@
gfc_check_fn_c, gfc_simplify_realpart, gfc_resolve_realpart,
a, BT_UNKNOWN, dr, REQUIRED);
- add_sym_1 ("float", GFC_ISYM_REAL, CLASS_ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_GNU,
+ add_sym_1 ("float", GFC_ISYM_REAL, CLASS_ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F77,
gfc_check_i, gfc_simplify_float, NULL,
a, BT_INTEGER, di, REQUIRED);
- add_sym_1 ("sngl", GFC_ISYM_REAL, CLASS_ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_GNU,
+ add_sym_1 ("sngl", GFC_ISYM_REAL, CLASS_ELEMENTAL, ACTUAL_NO, BT_REAL, dr, GFC_STD_F77,
NULL, gfc_simplify_sngl, NULL,
a, BT_REAL, dd, REQUIRED);
Index: gcc/fortran/gfortran.texi
===================================================================
--- gcc/fortran/gfortran.texi (Revision 131004)
+++ gcc/fortran/gfortran.texi (Arbeitskopie)
@@ -1101,8 +1101,8 @@
and @code{CMPLX}; the result is the same as if the integer BOZ
literal had been converted by @code{TRANSFER} to, respectively,
@code{real}, @code{double precision}, @code{integer} or @code{complex}.
-The GNU Fortran intrinsic procedure @code{FLOAT}, @code{DFLOAT},
-@code{COMPLEX} and @code{DCMPLX} are treated alike.
+As GNU Fortran extension the intrinsic procedures @code{FLOAT},
+@code{DFLOAT}, @code{COMPLEX} and @code{DCMPLX} are treated alike.
As an extension, GNU Fortran allows hexadecimal BOZ literal constants to
be specified using the @code{X} prefix, in addition to the standard
Index: gcc/fortran/ChangeLog
===================================================================
--- gcc/fortran/ChangeLog (Revision 131004)
+++ gcc/fortran/ChangeLog (Arbeitskopie)
@@ -1,3 +1,10 @@
+2007-12-17 Tobias Burnus <burnus@net-b.de>
+
+ * intrinsic.c (add_functions): Undo change; mark float and
+ sngl as STD_F77.
+ * intrinsic.texi (FLOAT, SNGL): Change standard to F77 or later.
+ * gfortran.texi (BOZ): Make note about FLOAT etc. clearer.
+
2007-12-16 Tobias Burnus <burnus@net-b.de>
PR fortran/34495
Index: gcc/fortran/intrinsic.texi
===================================================================
--- gcc/fortran/intrinsic.texi (Revision 131004)
+++ gcc/fortran/intrinsic.texi (Arbeitskopie)
@@ -3850,7 +3850,7 @@
@code{FLOAT(I)} converts the integer @var{I} to a default real value.
@item @emph{Standard}:
-GNU extension
+F77 and later
@item @emph{Class}:
Elemental function
@@ -9700,7 +9700,7 @@
that is specific to one type for @var{A}.
@item @emph{Standard}:
-GNU extension
+F77 and later
@item @emph{Class}:
Elemental function