On Mon, Apr 6, 2020 at 8:51 AM Linus König <l...@sig-st.de> wrote:
>
> Hi all,
>
> I'm new to gcc and this is my first patch. The idea is not have another
> resolution of a pointer if an error has occurred previously. I hope this
> meets all the criteria for a patch. In case anything is missing or
> wrong, I'm open to add to or change the patch.

First, thanks for your work.

In principle the patch looks fine. I was surprised that I could find
no other code that uses gfc_symbol::error; however, your usage of it
seems appropriate.

A note about style, there should be spaces between logical operators:

   /* Do not attempt to resolve if error has already been issued.  */
-  if (array&&array->symtree&&array->symtree->n.sym)
+  if (array && array->symtree && array->symtree->n.sym)
     {


Additionally, in simplify.c (simplify_bound) you can see the
surrounding code does not check array or array->symtree->n.sym for
NULL. One can assume this precondition holds and factor the code
slightly simpler. I believe also it is sufficient to check only "if
(array_sym->error)". By the time sym->error is set in
resolve_fl_var_and_proc, sym->resolved must already be set to 1
because this is the first step in resolve_symbol.

diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index 66ed925c10d..84aeafc1e8b 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -4090,6 +4090,7 @@ static gfc_expr *
 simplify_bound (gfc_expr *array, gfc_expr *dim, gfc_expr *kind, int upper)
 {
   gfc_ref *ref;
+  gfc_symbol *array_sym;
   gfc_array_spec *as;
   int d;

@@ -4103,8 +4104,13 @@ simplify_bound (gfc_expr *array, gfc_expr *dim,
gfc_expr *kind, int upper)
       goto done;
     }

+  /* Do not attempt to resolve if error has already been issued.  */
+  array_sym = array->symtree->n.sym;
+  if (array_sym->error)
+    return NULL;
+
   /* Follow any component references.  */
-  as = array->symtree->n.sym->as;
+  as = array_sym->as;
   for (ref = array->ref; ref; ref = ref->next)
     {
       switch (ref->type)


Thanks again for your patch.

---
Fritz Reese

Reply via email to