This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/34342] BOZ extensions not diagnosed as such with -std=f95
- From: "burnus at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 6 Dec 2007 12:15:53 -0000
- Subject: [Bug fortran/34342] BOZ extensions not diagnosed as such with -std=f95
- References: <bug-34342-13404@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #2 from burnus at gcc dot gnu dot org 2007-12-06 12:15 -------
Created an attachment (id=14702)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14702&action=view)
Draft patch for further BOZ diagnostic
The attached patch shows how one could implement:
- Error for initializing non-integers in DATA statements
(invalid Fortran 2003/95)
- Print a warning for real(BOZ), dble(BOZ) etc., which are interpreted
different then required by Fortran 2003.
Missing:
- "REAL(BOZ)" does not print a warning, only "REAL(BOZ, kind)" works as
for the former, gfc_simplify_real is not called. I need to find out what
route is taken for REAL() and INT().
- The "boz == true" needs to be "falsed" as some point, esp. after "int(BOZ)"
it shall not be present.
(In principle, the warning could be replaced by a TRANSFER, which might be
enough to get Fortran 2003 BOZ working.)
Also missing:
a) As soon as there is Fortran 2003 BOZ support, one needs to modify
match_boz_constant. Currently, it gives with -std=f* an error if a BOZ is used
outside DATA; in Fortran 2003 this is allowed in REAL() etc., but not
elsewhere.
b) One may think of treating
real_variable = BOZ
as
real_variable = real(BOZ)
instead of as
real_variable = int(BOZ)
But one has to think of how to handle
real_variable = 0.0 + BOZ
real_variable = 0 + BOZ
etc. in this case. I think other compilers tread only "lhs = BOZ" as real BOZ
and lhs = expression(BOZ) as integer BOZ, but one should do some tests to
confirm this and state clearly in
http://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
how BOZ are treated.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34342