diff options
author | Janus Weil <janus@gcc.gnu.org> | 2011-11-06 22:36:54 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2011-11-06 22:36:54 +0100 |
commit | eaee02a520c7d5619c310cb43ffc5a58c89ccdc7 (patch) | |
tree | 5c2b289cb9d0de3d7f37994ef9efba47a95760a8 /gcc/fortran | |
parent | 9965f21f9ce932dd77935cd0375085571e8dffa0 (diff) | |
download | gcc-eaee02a520c7d5619c310cb43ffc5a58c89ccdc7.zip gcc-eaee02a520c7d5619c310cb43ffc5a58c89ccdc7.tar.gz gcc-eaee02a520c7d5619c310cb43ffc5a58c89ccdc7.tar.bz2 |
gfortran.h (gfc_extend_expr): Modified prototype.
2011-11-06 Janus Weil <janus@gcc.gnu.org>
* gfortran.h (gfc_extend_expr): Modified prototype.
* interface.c (gfc_extend_expr): Return 'match' instead of 'gfc_try'.
Remove argument 'real_error'.
* resolve.c (resolve_operator): Modified call to 'gfc_extend_expr'.
From-SVN: r181044
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/gfortran.h | 2 | ||||
-rw-r--r-- | gcc/fortran/interface.c | 23 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 7 |
4 files changed, 20 insertions, 19 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b5c8bed..7076112 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2011-11-06 Janus Weil <janus@gcc.gnu.org> + + * gfortran.h (gfc_extend_expr): Modified prototype. + * interface.c (gfc_extend_expr): Return 'match' instead of 'gfc_try'. + Remove argument 'real_error'. + * resolve.c (resolve_operator): Modified call to 'gfc_extend_expr'. + 2011-11-06 Andrew MacLeod <amacleod@redhat.com> Aldy Hernandez <aldyh@redhat.com> diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index b869ca3..17ebd58 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -2831,7 +2831,7 @@ void gfc_procedure_use (gfc_symbol *, gfc_actual_arglist **, locus *); void gfc_ppc_use (gfc_component *, gfc_actual_arglist **, locus *); gfc_symbol *gfc_search_interface (gfc_interface *, int, gfc_actual_arglist **); -gfc_try gfc_extend_expr (gfc_expr *, bool *); +match gfc_extend_expr (gfc_expr *); void gfc_free_formal_arglist (gfc_formal_arglist *); gfc_try gfc_extend_assign (gfc_code *, gfc_namespace *); gfc_try gfc_add_interface (gfc_symbol *); diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 19ede06..90d98c7 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -3221,12 +3221,11 @@ build_compcall_for_operator (gfc_expr* e, gfc_actual_arglist* actual, with the operator. This subroutine builds an actual argument list corresponding to the operands, then searches for a compatible interface. If one is found, the expression node is replaced with - the appropriate function call. - real_error is an additional output argument that specifies if FAILURE - is because of some real error and not because no match was found. */ + the appropriate function call. We use the 'match' enum to specify + whether a replacement has been made or not, or if an error occurred. */ -gfc_try -gfc_extend_expr (gfc_expr *e, bool *real_error) +match +gfc_extend_expr (gfc_expr *e) { gfc_actual_arglist *actual; gfc_symbol *sym; @@ -3240,7 +3239,6 @@ gfc_extend_expr (gfc_expr *e, bool *real_error) actual = gfc_get_actual_arglist (); actual->expr = e->value.op.op1; - *real_error = false; gname = NULL; if (e->value.op.op2 != NULL) @@ -3344,16 +3342,16 @@ gfc_extend_expr (gfc_expr *e, bool *real_error) result = gfc_resolve_expr (e); if (result == FAILURE) - *real_error = true; + return MATCH_ERROR; - return result; + return MATCH_YES; } /* Don't use gfc_free_actual_arglist(). */ free (actual->next); free (actual); - return FAILURE; + return MATCH_NO; } /* Change the expression node to a function call. */ @@ -3366,12 +3364,9 @@ gfc_extend_expr (gfc_expr *e, bool *real_error) e->user_operator = 1; if (gfc_resolve_expr (e) == FAILURE) - { - *real_error = true; - return FAILURE; - } + return MATCH_ERROR; - return SUCCESS; + return MATCH_YES; } diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 30f5f55..ab251b5 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -4034,11 +4034,10 @@ resolve_operator (gfc_expr *e) bad_op: { - bool real_error; - if (gfc_extend_expr (e, &real_error) == SUCCESS) + match m = gfc_extend_expr (e); + if (m == MATCH_YES) return SUCCESS; - - if (real_error) + if (m == MATCH_ERROR) return FAILURE; } |