diff options
| author | Richard Henderson <rth@redhat.com> | 2004-08-25 23:07:52 -0700 |
|---|---|---|
| committer | Richard Henderson <rth@gcc.gnu.org> | 2004-08-25 23:07:52 -0700 |
| commit | e7a2d5fb772b33ef161b201d579b6d58c5fb1ed1 (patch) | |
| tree | 888872234485cb430569f6f616fdcf7a056f67a7 /gcc/fortran/arith.c | |
| parent | 1249691bab4f13ceb72ec2a535a0fc9a37818161 (diff) | |
| download | gcc-e7a2d5fb772b33ef161b201d579b6d58c5fb1ed1.zip gcc-e7a2d5fb772b33ef161b201d579b6d58c5fb1ed1.tar.gz gcc-e7a2d5fb772b33ef161b201d579b6d58c5fb1ed1.tar.bz2 | |
arith.c (gfc_validate_kind): Add may_fail argument; abort if false and we don't validate the kind.
* arith.c (gfc_validate_kind): Add may_fail argument; abort if
false and we don't validate the kind.
(gfc_check_integer_range, gfc_check_real_range): Update to match.
* check.c (kind_check): Likewise.
* decl.c (gfc_match_old_kind_spec, gfc_match_kind_spec): Likewise.
(match_char_spec, match_logical_spec): Likewise.
* gfortran.h (gfc_validate_kind): Likewise.
* options.c (gfc_handle_option): Likewise.
* primary.c (match_integer_constant, match_real_constant,
match_string_constant, match_logical_constant,
match_const_complex_part): Likewise.
* simplify.c (get_kind, gfc_simplify_bit_size, gfc_simplify_digits,
gfc_simplify_epsilon, gfc_simplify_huge, gfc_simplify_ibclr,
gfc_simplify_ibset, gfc_simplify_ishft, gfc_simplify_ishftc,
gfc_simplify_maxexponent, gfc_simplify_minexponent,
gfc_simplify_nearest, gfc_simplify_not, gfc_simplify_precision,
gfc_simplify_radix, gfc_simplify_range, gfc_simplify_rrspacing,
gfc_simplify_scale, gfc_simplify_spacing, gfc_simplify_tan,
gfc_simplify_tiny): Likewise.
* trans-intrinsic.c (gfc_conv_intrinsic_aint, gfc_conv_intrinsic_mod,
gfc_conv_intrinsic_minmaxloc, gfc_conv_intrinsic_minmaxval,
prepare_arg_info): Likewise.
From-SVN: r86608
Diffstat (limited to 'gcc/fortran/arith.c')
| -rw-r--r-- | gcc/fortran/arith.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/gcc/fortran/arith.c b/gcc/fortran/arith.c index 5f55813..ec19682 100644 --- a/gcc/fortran/arith.c +++ b/gcc/fortran/arith.c @@ -526,7 +526,7 @@ validate_character (int kind) type. */ int -gfc_validate_kind (bt type, int kind) +gfc_validate_kind (bt type, int kind, bool may_fail) { int rc; @@ -550,6 +550,9 @@ gfc_validate_kind (bt type, int kind) gfc_internal_error ("gfc_validate_kind(): Got bad type"); } + if (!may_fail && rc < 0) + gfc_internal_error ("gfc_validate_kind(): Got bad kind"); + return rc; } @@ -563,10 +566,7 @@ gfc_check_integer_range (mpz_t p, int kind) arith result; int i; - i = validate_integer (kind); - if (i == -1) - gfc_internal_error ("gfc_check_integer_range(): Bad kind"); - + i = gfc_validate_kind (BT_INTEGER, kind, false); result = ARITH_OK; if (mpz_cmp (p, gfc_integer_kinds[i].min_int) < 0 @@ -588,9 +588,7 @@ gfc_check_real_range (mpfr_t p, int kind) mpfr_t q; int i; - i = validate_real (kind); - if (i == -1) - gfc_internal_error ("gfc_check_real_range(): Bad kind"); + i = gfc_validate_kind (BT_REAL, kind, false); gfc_set_model (p); mpfr_init (q); |
