Commit 66086032 by Janne Blomqvist

PR 81552 Improve and document -flag-init-integer

Make the option handling code parse the -flag-init-integer value as a
C long type, allowing a larger range on systems where long is a larger
type than int.  Document the behavior.

Regtested on x86_64-pc-linux-gnu, committed as obvious.

2019-02-14  Janne Blomqvist  <jb@gcc.gnu.org>

        PR fortran/81552
        * gfortran.h (gfc_option_t): Make flag_init_integer_value a long.
        * options.c (gfc_handle_option): Use strtol instead of atoi.
        * invoke.texi: Document -finit-integer behavior in more detail

From-SVN: r268906
parent 2f2b8e40
2019-02-14 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/81552
* gfortran.h (gfc_option_t): Make flag_init_integer_value a long.
* options.c (gfc_handle_option): Use strtol instead of atoi.
* invoke.texi: Document -finit-integer behavior in more detail.
2019-02-14 Harald Anlauf <anlauf@gmx.de> 2019-02-14 Harald Anlauf <anlauf@gmx.de>
PR fortran/88248 PR fortran/88248
......
...@@ -2681,7 +2681,7 @@ typedef struct ...@@ -2681,7 +2681,7 @@ typedef struct
int flag_preprocessed; int flag_preprocessed;
int flag_d_lines; int flag_d_lines;
int flag_init_integer; int flag_init_integer;
int flag_init_integer_value; long flag_init_integer_value;
int flag_init_logical; int flag_init_logical;
int flag_init_character; int flag_init_character;
char flag_init_character_value; char flag_init_character_value;
......
...@@ -1779,6 +1779,11 @@ use @option{-finit-real=snan}; note, however, that compile-time ...@@ -1779,6 +1779,11 @@ use @option{-finit-real=snan}; note, however, that compile-time
optimizations may convert them into quiet NaN and that trapping optimizations may convert them into quiet NaN and that trapping
needs to be enabled (e.g. via @option{-ffpe-trap}). needs to be enabled (e.g. via @option{-ffpe-trap}).
The @option{-finit-integer} option will parse the value into an
integer of type @code{INTEGER(kind=C_LONG)} on the host. Said value
is then assigned to the integer variables in the Fortran code, which
might result in wraparound if the value is too large for the kind.
Finally, note that enabling any of the @option{-finit-*} options will Finally, note that enabling any of the @option{-finit-*} options will
silence warnings that would have been emitted by @option{-Wuninitialized} silence warnings that would have been emitted by @option{-Wuninitialized}
for the affected local variables. for the affected local variables.
......
...@@ -708,7 +708,7 @@ gfc_handle_option (size_t scode, const char *arg, HOST_WIDE_INT value, ...@@ -708,7 +708,7 @@ gfc_handle_option (size_t scode, const char *arg, HOST_WIDE_INT value,
case OPT_finit_integer_: case OPT_finit_integer_:
gfc_option.flag_init_integer = GFC_INIT_INTEGER_ON; gfc_option.flag_init_integer = GFC_INIT_INTEGER_ON;
gfc_option.flag_init_integer_value = atoi (arg); gfc_option.flag_init_integer_value = strtol (arg, NULL, 10);
break; break;
case OPT_finit_character_: case OPT_finit_character_:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment