Hi,

The error message was fixed by Harald in:

commit fb132276d173907d575ea61fda3b846a9bc6e456
Author: Harald Anlauf <anl...@gmx.de>
Date:   2025-03-28 20:31:08 +0100

    Fortran: fix spelling of flag -fallow-invalid-boz
         gcc/fortran/ChangeLog:
                 * check.cc (gfc_invalid_boz): Correct spelling of compiler 
flag in
            hint to -fallow-invalid-boz.


>>> Third, and the main point of this email I guess, is that the
>>> porting-to page should mention this:
>>> https://www.gnu.org/software/gcc/gcc-10/porting_to.html

The changes page for gcc 10 
(https://www.gnu.org/software/gcc/gcc-10/changes.html) says:

"The handling of a BOZ literal constant has been reworked to provide better 
conformance to the Fortran 2008 and 2018 standards. In these Fortran standards, 
a BOZ literal constant is a typeless and kindless entity. As a part of the 
rework, documented and undocumented extensions to the Fortran standard now emit 
errors during compilation. Some of these extensions are permitted with the 
-fallow-invalid-boz option, which degrades the error to a warning and the code 
is compiled as with older gfortran."

BOZ handling was quite inconsistent in early days, and was simplified and 
clarified. Some cases are indeed no longer accepted, but there was really a lot 
of weird old code out there. They should be relatively easy to fix.

If I am not mistaken, the standard way to write your code:

    fcn = x * '0100'X

is

    fcn = x * int(z’0100')


Best,
FX

Reply via email to