]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gfortran.h (gfc_extend_expr): Modified prototype.
authorJanus Weil <janus@gcc.gnu.org>
Sun, 6 Nov 2011 21:36:54 +0000 (22:36 +0100)
committerJanus Weil <janus@gcc.gnu.org>
Sun, 6 Nov 2011 21:36:54 +0000 (22:36 +0100)
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

gcc/fortran/ChangeLog
gcc/fortran/gfortran.h
gcc/fortran/interface.c
gcc/fortran/resolve.c

index b5c8bedba284eb8105ccba9ccc17ef35bb087efa..707611242c65121e3146862f36a5e88b7d097235 100644 (file)
@@ -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>
 
index b869ca353defcd4588e8c21da0d6b4fdf7898f15..17ebd58e50fbe434fec92cef9ddd7b32ebcde1e1 100644 (file)
@@ -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 *);
index 19ede06cf55346fac463204c8ba2a05c7862e52e..90d98c759ddfff45d229f0d39e08f37d19cf4176 100644 (file)
@@ -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;
 }
 
 
index 30f5f55e21434dd90474fc9d66c2317786f997ad..ab251b57e7001fd13103efdf1fe96ce0fd5428ad 100644 (file)
@@ -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;
   }