PR 78534, 83704 Large character lengths
commitbdfec5bf2e5a054d51d2673fce8a7b6d975f3d32
authorjb <jb@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Jan 2018 13:31:08 +0000 (22 13:31 +0000)
committerjb <jb@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Jan 2018 13:31:08 +0000 (22 13:31 +0000)
treef3d3d61b5081f8526d7ce8cd08c24e54cd76f230
parentc56f248db68c5cf32895b791280aa6258595a8a2
PR 78534, 83704 Large character lengths

This patch fixes various parts of the code to use a larger type than
int for the character length. Depending on the situation,
HOST_WIDE_INT, size_t, or gfc_charlen_t is appropriate.

Regtested on x86_64-pc-linux-gnu and i686-pc-linux-gnu.

gcc/fortran/ChangeLog:

2018-01-22  Janne Blomqvist  <jb@gcc.gnu.org>

PR 78534
PR 83704
* arith.c (gfc_arith_concat): Use size_t for string length.
(gfc_compare_string): Likewise.
(gfc_compare_with_Cstring): Likewise.
* array.c (gfc_resolve_character_array_constructor): Use
HOST_WIDE_INT, gfc_mpz_get_hwi.
* check.c (gfc_check_fe_runtime_error): Use size_t.
* data.c (create_character_initializer): Use HOST_WIDE_INT,
gfc_extract_hwi.
* decl.c (gfc_set_constant_character_len): Use gfc_charlen_t.
(add_init_expr_to_sym): Use HOST_WIDE_INT.
* expr.c (gfc_build_init_expr): Use HOST_WIDE_INT,
gfc_extract_hwi.
(gfc_apply_init): Likewise.
* match.h (gfc_set_constant_character_len): Update prototype.
* primary.c (match_string_constant): Use size_t.
* resolve.c (resolve_ordinary_assign): Use HOST_WIDE_INT,
gfc_mpz_get_hwi.
* simplify.c (init_result_expr): Likewise.
(gfc_simplify_len_trim): Use size_t.
* target-memory.c (gfc_encode_character): Use size_t.
(gfc_target_encode_expr): Use HOST_WIDE_INT, gfc_mpz_get_hwi.
(interpret_array): Use size_t.
(gfc_interpret_character): Likewise.
* target-memory.h (gfc_encode_character): Update prototype.
(gfc_interpret_character): Likewise.
(gfc_target_interpret_expr): Likewise.
* trans-const.c (gfc_build_string_const): Use size_t for length
argument.
(gfc_build_wide_string_const): Likewise.
* trans-const.h (gfc_build_string_const): Likewise.
(gfc_build_wide_string_const): Likewise.

2018-01-22  Janne Blomqvist  <jb@gcc.gnu.org>

PR 78534
PR 83704
* gfortran.dg/string_1.f90: Remove printing the length.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256944 138bc75d-0d04-0410-961f-82ee72b054a4
17 files changed:
gcc/fortran/ChangeLog
gcc/fortran/arith.c
gcc/fortran/array.c
gcc/fortran/check.c
gcc/fortran/data.c
gcc/fortran/decl.c
gcc/fortran/expr.c
gcc/fortran/match.h
gcc/fortran/primary.c
gcc/fortran/resolve.c
gcc/fortran/simplify.c
gcc/fortran/target-memory.c
gcc/fortran/target-memory.h
gcc/fortran/trans-const.c
gcc/fortran/trans-const.h
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/string_1.f90