diff options
author | Janne Blomqvist <jb@gcc.gnu.org> | 2012-05-14 22:39:23 +0300 |
---|---|---|
committer | Janne Blomqvist <jb@gcc.gnu.org> | 2012-05-14 22:39:23 +0300 |
commit | 80b91c0b39e7d65e3d89e49b5bf2ec40927f5a33 (patch) | |
tree | 1b4a3a8d4b65ec8d0a88de4f00b90d28ce493090 /gcc/fortran/trans-decl.c | |
parent | f62866740b93747b2d3f1dd4d4637e6890e0fa22 (diff) | |
download | gcc-80b91c0b39e7d65e3d89e49b5bf2ec40927f5a33.zip gcc-80b91c0b39e7d65e3d89e49b5bf2ec40927f5a33.tar.gz gcc-80b91c0b39e7d65e3d89e49b5bf2ec40927f5a33.tar.bz2 |
PR 52428 Range checking when reading integer values.
gcc/fortran ChangeLog:
2012-05-14 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/52428
* gfortran.texi: Update _gfortran_set_options documentation.
* invoke.texi: Remove runtime behavior description of
-fno-range-check.
* trans-decl.c (create_main_function): Don't pass the range-check
setting to the library.
libgfortran ChangeLog:
2012-05-14 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/52428
* io/io.h (max_value): Rename to si_max, remove second argument.
* io/list_read.c (convert_integer): Use unsigned types when
parsing the digits, set max value depending on the sign.
* io/read.c (max_value): Rename to si_max, remove second argument,
simplify.
(read_decimal): Set max value depending on sign, always check
overflow.
(read_radix): Calculate max unsigned value directly.
* libgfortran.h (struct compile_options_t): Remove range_check
field.
* runtime/compile_options.c (set_options): Skip handling
options[7].
(init_compile_options): Don't set removed field.
gcc/testsuite ChangeLog:
2012-05-14 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/52428
* gfortran.dg/int_range_io_1.f90: New test.
From-SVN: r187478
Diffstat (limited to 'gcc/fortran/trans-decl.c')
-rw-r--r-- | gcc/fortran/trans-decl.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 1354ad0..0480f95 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -5039,12 +5039,17 @@ create_main_function (tree fndecl) build_int_cst (integer_type_node, (gfc_option.rtcheck & GFC_RTCHECK_BOUNDS))); + /* TODO: This is the -frange-check option, which no longer affects + library behavior; when bumping the library ABI this slot can be + reused for something else. As it is the last element in the + array, we can instead leave it out altogether. CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (integer_type_node, gfc_option.flag_range_check)); + */ array_type = build_array_type (integer_type_node, - build_index_type (size_int (7))); + build_index_type (size_int (6))); array = build_constructor (array_type, v); TREE_CONSTANT (array) = 1; TREE_STATIC (array) = 1; @@ -5059,7 +5064,7 @@ create_main_function (tree fndecl) tmp = build_call_expr_loc (input_location, gfor_fndecl_set_options, 2, - build_int_cst (integer_type_node, 8), var); + build_int_cst (integer_type_node, 7), var); gfc_add_expr_to_block (&body, tmp); } |