diff options
author | Janne Blomqvist <jb@gcc.gnu.org> | 2019-02-14 23:33:29 +0200 |
---|---|---|
committer | Janne Blomqvist <jb@gcc.gnu.org> | 2019-02-14 23:33:29 +0200 |
commit | 66086032120c6cfca41e48a510c2389b887d559b (patch) | |
tree | d2f035d8f7f33b8b0f90911eeb12b4204955d513 /gcc | |
parent | 2f2b8e4054f5b84594a9b113e409e73480f2ebdf (diff) | |
download | gcc-66086032120c6cfca41e48a510c2389b887d559b.zip gcc-66086032120c6cfca41e48a510c2389b887d559b.tar.gz gcc-66086032120c6cfca41e48a510c2389b887d559b.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/gfortran.h | 2 | ||||
-rw-r--r-- | gcc/fortran/invoke.texi | 5 | ||||
-rw-r--r-- | gcc/fortran/options.c | 2 |
4 files changed, 14 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index bcf885e..3a8c00d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +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> PR fortran/88248 diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index 0a0fef8..526897c 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -2681,7 +2681,7 @@ typedef struct int flag_preprocessed; int flag_d_lines; int flag_init_integer; - int flag_init_integer_value; + long flag_init_integer_value; int flag_init_logical; int flag_init_character; char flag_init_character_value; diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index 0e0c2bc..a5d8196 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -1779,6 +1779,11 @@ use @option{-finit-real=snan}; note, however, that compile-time optimizations may convert them into quiet NaN and that trapping 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 silence warnings that would have been emitted by @option{-Wuninitialized} for the affected local variables. diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c index 4e55ade..f2a0151 100644 --- a/gcc/fortran/options.c +++ b/gcc/fortran/options.c @@ -708,7 +708,7 @@ gfc_handle_option (size_t scode, const char *arg, HOST_WIDE_INT value, case OPT_finit_integer_: 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; case OPT_finit_character_: |