summaryrefslogtreecommitdiff
path: root/gcc/fortran/arith.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-26 06:07:52 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-26 06:07:52 +0000
commitf2d4ef3bdd2219d7e19030a5432942f45529bfc2 (patch)
tree888872234485cb430569f6f616fdcf7a056f67a7 /gcc/fortran/arith.c
parentd45005b7c92c981fc0b44eac0e1799203a685c6f (diff)
downloadgcc-f2d4ef3bdd2219d7e19030a5432942f45529bfc2.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86608 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/arith.c')
-rw-r--r--gcc/fortran/arith.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/gcc/fortran/arith.c b/gcc/fortran/arith.c
index 5f558139401..ec19682df62 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);