diff options
author | Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2007-08-10 22:12:04 +0000 |
---|---|---|
committer | François-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2007-08-10 22:12:04 +0000 |
commit | c8fe94c7ea3debcf5b41cfabfe0ca395b1834da4 (patch) | |
tree | 0df09be0cf775be5c5fc3736c8d20336d1c06fe9 /gcc/fortran/trans-io.c | |
parent | ac2610bf4275ca4edec63ccc0f6ee53309c639c1 (diff) | |
download | gcc-c8fe94c7ea3debcf5b41cfabfe0ca395b1834da4.zip gcc-c8fe94c7ea3debcf5b41cfabfe0ca395b1834da4.tar.gz gcc-c8fe94c7ea3debcf5b41cfabfe0ca395b1834da4.tar.bz2 |
re PR fortran/31270 (print subscript value and array bounds when out-of-bounds error occurs)
PR fortran/31270
* trans.c (gfc_trans_runtime_check): Reorder arguments and
add extra variable arguments. Hand them to the library function.
* trans.h (gfc_trans_runtime_check): Update prototype.
* trans-array.c (gfc_trans_array_bound_check): Issue more
detailled error messages.
(gfc_conv_array_ref): Likewise.
(gfc_conv_ss_startstride): Likewise.
(gfc_trans_dummy_array_bias): Reorder arguments to
gfc_trans_runtime_check.
* trans-expr.c (gfc_conv_substring): Issue more detailled
error messages.
(gfc_conv_function_call): Reorder arguments to gfc_trans_runtime_check.
* trans-stmt.c (gfc_trans_goto): Likewise.
* trans-io.c (set_string): Reorder arguments to
gfc_trans_runtime_check and issue a more detailled error message.
* trans-decl.c (gfc_build_builtin_function_decls): Make
runtime_error and runtime_error_at handle a variable number of
arguments.
* trans-intrinsic.c (gfc_conv_intrinsic_bound): Reorder arguments
to gfc_trans_runtime_check.
(gfc_conv_intrinsic_minmax): Likewise.
(gfc_conv_intrinsic_repeat): Issue more detailled error messages.
* runtime/error.c (runtime_error_at): Add a variable number of
arguments.
* libgfortran.h (runtime_error_at): Update prototype.
From-SVN: r127352
Diffstat (limited to 'gcc/fortran/trans-io.c')
-rw-r--r-- | gcc/fortran/trans-io.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c index 0fa81c8..80646cd 100644 --- a/gcc/fortran/trans-io.c +++ b/gcc/fortran/trans-io.c @@ -653,15 +653,17 @@ set_string (stmtblock_t * block, stmtblock_t * postblock, tree var, if (e->ts.type == BT_INTEGER && e->symtree->n.sym->attr.assign == 1) { char * msg; + tree cond; gfc_conv_label_variable (&se, e); tmp = GFC_DECL_STRING_LEN (se.expr); - tmp = fold_build2 (LT_EXPR, boolean_type_node, - tmp, build_int_cst (TREE_TYPE (tmp), 0)); + cond = fold_build2 (LT_EXPR, boolean_type_node, + tmp, build_int_cst (TREE_TYPE (tmp), 0)); - asprintf(&msg, "Label assigned to variable '%s' is not a format label", - e->symtree->name); - gfc_trans_runtime_check (tmp, msg, &se.pre, &e->where); + asprintf(&msg, "Label assigned to variable '%s' (%%ld) is not a format " + "label", e->symtree->name); + gfc_trans_runtime_check (cond, &se.pre, &e->where, msg, + fold_convert (long_integer_type_node, tmp)); gfc_free (msg); gfc_add_modify_expr (&se.pre, io, |