This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Patch, committed] Re: [Patch, Fortran] PR 34495 - Add -std=f95/f2003 diagnostics for real/float ...


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]