aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJanne Blomqvist <jb@gcc.gnu.org>2019-02-14 23:33:29 +0200
committerJanne Blomqvist <jb@gcc.gnu.org>2019-02-14 23:33:29 +0200
commit66086032120c6cfca41e48a510c2389b887d559b (patch)
treed2f035d8f7f33b8b0f90911eeb12b4204955d513
parent2f2b8e4054f5b84594a9b113e409e73480f2ebdf (diff)
downloadgcc-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
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/gfortran.h2
-rw-r--r--gcc/fortran/invoke.texi5
-rw-r--r--gcc/fortran/options.c2
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_: