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 /libgfortran | |
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 'libgfortran')
-rw-r--r-- | libgfortran/ChangeLog | 7 | ||||
-rw-r--r-- | libgfortran/libgfortran.h | 4 | ||||
-rw-r--r-- | libgfortran/runtime/error.c | 10 |
3 files changed, 17 insertions, 4 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index b77eeef..46f7282 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,5 +1,12 @@ 2007-08-10 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + PR fortran/31270 + * runtime/error.c (runtime_error_at): Add a variable number of + arguments. + * libgfortran.h (runtime_error_at): Update prototype. + +2007-08-10 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + PR fortran/32933 * intrinsics/associated.c: Change return type of associated into a C int. diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h index ce6d621..c32b5a3 100644 --- a/libgfortran/libgfortran.h +++ b/libgfortran/libgfortran.h @@ -599,8 +599,8 @@ extern void runtime_error (const char *, ...) __attribute__ ((noreturn, format (printf, 1, 2))); iexport_proto(runtime_error); -extern void runtime_error_at (const char *, const char *) -__attribute__ ((noreturn)); +extern void runtime_error_at (const char *, const char *, ...) + __attribute__ ((noreturn, format (printf, 2, 3))); iexport_proto(runtime_error_at); extern void internal_error (st_parameter_common *, const char *) diff --git a/libgfortran/runtime/error.c b/libgfortran/runtime/error.c index 4dda227..3512ab4 100644 --- a/libgfortran/runtime/error.c +++ b/libgfortran/runtime/error.c @@ -267,11 +267,17 @@ iexport(runtime_error); * run time error generated by the front end compiler. */ void -runtime_error_at (const char *where, const char *message) +runtime_error_at (const char *where, const char *message, ...) { + va_list ap; + recursion_check (); st_printf ("%s\n", where); - st_printf ("Fortran runtime error: %s\n", message); + st_printf ("Fortran runtime error: "); + va_start (ap, message); + st_vprintf (message, ap); + va_end (ap); + st_printf ("\n"); sys_exit (2); } iexport(runtime_error_at); |