https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94625
Bug ID: 94625
Summary: documentation of _gfortran_set_options does not match
implementation
Product: gcc
Version: 9.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libfortran
Assignee: unassigned at gcc dot gnu.org
Reporter: cgw at alum dot mit.edu
Target Milestone: ---
In gcc/fortran/gfortran.texi the documentation for _libgfortran_set_options
describes the OPTIONS argument as follows:
OPTION[0] Allowed standard; can give run-time errors if
e.g. an input-output edit descriptor is invalid
in a given standard. Possible values are
(bitwise or-ed) 'GFC_STD_F77' (1),
'GFC_STD_F95_OBS' (2), 'GFC_STD_F95_DEL' (4),
'GFC_STD_F95' (8), 'GFC_STD_F2003' (16),
'GFC_STD_GNU' (32), 'GFC_STD_LEGACY' (64),
'GFC_STD_F2008' (128), 'GFC_STD_F2008_OBS'
(256), 'GFC_STD_F2008_TS' (512), 'GFC_STD_F2018'
(1024), 'GFC_STD_F2018_OBS' (2048), and
'GFC_STD=F2018_DEL' (4096). Default:
'GFC_STD_F95_OBS | GFC_STD_F95_DEL | GFC_STD_F95
| GFC_STD_F2003 | GFC_STD_F2008 |
GFC_STD_F2008_TS | GFC_STD_F2008_OBS |
GFC_STD_F77 | GFC_STD_F2018 | GFC_STD_F2018_OBS
| GFC_STD_F2018_DEL | GFC_STD_GNU |
GFC_STD_LEGACY'.
OPTION[1] Standard-warning flag; prints a warning to
standard error. Default: 'GFC_STD_F95_DEL |
GFC_STD_LEGACY'.
OPTION[2] If non zero, enable pedantic checking. Default:
off.
OPTION[3] Unused.
OPTION[4] If non zero, enable backtracing on run-time
errors. Default: off. (Default in the
compiler: on.) Note: Installs a signal handler
and requires command-line initialization using
'_gfortran_set_args'.
OPTION[5] If non zero, supports signed zeros. Default:
enabled.
OPTION[6] Enables run-time checking. Possible values are
(bitwise or-ed): GFC_RTCHECK_BOUNDS (1),
GFC_RTCHECK_ARRAY_TEMPS (2),
GFC_RTCHECK_RECURSION (4), GFC_RTCHECK_DO (16),
GFC_RTCHECK_POINTER (32). Default: disabled.
OPTION[7] Unused.
OPTION[8] Show a warning when invoking 'STOP' and 'ERROR
STOP' if a floating-point exception occurred.
Possible values are (bitwise or-ed)
'GFC_FPE_INVALID' (1), 'GFC_FPE_DENORMAL' (2),
'GFC_FPE_ZERO' (4), 'GFC_FPE_OVERFLOW' (8),
'GFC_FPE_UNDERFLOW' (16), 'GFC_FPE_INEXACT'
(32). Default: None (0). (Default in the
compiler: 'GFC_FPE_INVALID | GFC_FPE_DENORMAL |
GFC_FPE_ZERO | GFC_FPE_OVERFLOW |
GFC_FPE_UNDERFLOW'.)
Unless I'm misunderstanding, _libgfortran_set_options is the public name for a
function defined as set_options in libgfortran/runtime/compile_options.c
void
set_options (int num, int options[])
{
if (num >= 1)
compile_options.warn_std = options[0];
if (num >= 2)
compile_options.allow_std = options[1];
if (num >= 3)
compile_options.pedantic = options[2];
if (num >= 4)
compile_options.backtrace = options[3];
if (num >= 5)
compile_options.sign_zero = options[4];
if (num >= 6)
compile_options.bounds_check = options[5];
if (num >= 7)
compile_options.fpe_summary = options[6];
Note that the the first two options - `warn` and `allow` - seem to be reversed,
and unused elements 3 and 7 seem to have been removed, as also borne out by
libgfortran/ChangeLog-2016: * runtime/compile_options.c (set_options):
Remove unused elements.