diff options
author | Daniel Kraft <d@domob.eu> | 2008-10-09 09:28:22 +0200 |
---|---|---|
committer | Daniel Kraft <domob@gcc.gnu.org> | 2008-10-09 09:28:22 +0200 |
commit | a3d3c0f5fa9cd88e6285f60c593cb753cc53d4c2 (patch) | |
tree | d9580ac4df12f19afd82891b682e7616c40bfac2 /gcc/fortran/error.c | |
parent | cdb148c194bac4a574cb77ee2522e418b9681860 (diff) | |
download | gcc-a3d3c0f5fa9cd88e6285f60c593cb753cc53d4c2.zip gcc-a3d3c0f5fa9cd88e6285f60c593cb753cc53d4c2.tar.gz gcc-a3d3c0f5fa9cd88e6285f60c593cb753cc53d4c2.tar.bz2 |
re PR fortran/35723 (Can't use run-time array element in character declaration)
2008-10-09 Daniel Kraft <d@domob.eu>
PR fortran/35723
* gfortran.h (gfc_suppress_error): Removed from header.
(gfc_push_suppress_errors), (gfc_pop_suppress_errors): New methods.
* array.c (gfc_array_size): Use new gfc_push/pop_suppress_errors
instead of directly changing gfc_suppress_error.
* intrinsic.c (gfc_intrinsic_func_interface): Ditto.
(gfc_intrinsic_sub_interface): Ditto.
* error.c (suppress_errors): Made static from `gfc_suppress_error'.
(gfc_push_suppress_errors), (gfc_pop_suppress_errors): New methods.
(gfc_notify_std), (gfc_error): Use new static name of global.
* expr.c (check_arglist), (check_references): New methods.
(check_restricted): Check arglists and references of EXPR_FUNCTIONs
and EXPR_VARAIBALEs, respectively. Allow PARAMETER symbols.
2008-10-09 Daniel Kraft <d@domob.eu>
PR fortran/35723
* gfortran.dg/restricted_expression_1.f90: New test.
* gfortran.dg/restricted_expression_2.f90: New test.
* gfortran.dg/restricted_expression_3.f90: New test.
From-SVN: r141001
Diffstat (limited to 'gcc/fortran/error.c')
-rw-r--r-- | gcc/fortran/error.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/gcc/fortran/error.c b/gcc/fortran/error.c index 7a5fbd3..a7005e9 100644 --- a/gcc/fortran/error.c +++ b/gcc/fortran/error.c @@ -30,13 +30,33 @@ along with GCC; see the file COPYING3. If not see #include "flags.h" #include "gfortran.h" -int gfc_suppress_error = 0; +static int suppress_errors = 0; static int terminal_width, buffer_flag, errors, warnings; static gfc_error_buf error_buffer, warning_buffer, *cur_error_buffer; +/* Go one level deeper suppressing errors. */ + +void +gfc_push_suppress_errors (void) +{ + gcc_assert (suppress_errors >= 0); + ++suppress_errors; +} + + +/* Leave one level of error suppressing. */ + +void +gfc_pop_suppress_errors (void) +{ + gcc_assert (suppress_errors > 0); + --suppress_errors; +} + + /* Per-file error initialization. */ void @@ -764,7 +784,7 @@ gfc_notify_std (int std, const char *nocmsgid, ...) if ((gfc_option.allow_std & std) != 0 && !warning) return SUCCESS; - if (gfc_suppress_error) + if (suppress_errors) return warning ? SUCCESS : FAILURE; cur_error_buffer = warning ? &warning_buffer : &error_buffer; @@ -850,7 +870,7 @@ gfc_error (const char *nocmsgid, ...) { va_list argp; - if (gfc_suppress_error) + if (suppress_errors) return; error_buffer.flag = 1; |