Hi Bernhard,

I'm trying to understand your patch.  What does it really try to solve?

PR88009 is closed and seems to have nothing to do with this.

Harald

Am 14.11.21 um 23:17 schrieb Bernhard Reutner-Fischer via Fortran:
Hi!

Amend fix for PR88009 to mark all these class components as artificial.

gcc/fortran/ChangeLog:

         * class.c (gfc_build_class_symbol, generate_finalization_wrapper,
         (gfc_find_derived_vtab, find_intrinsic_vtab): Use stringpool for
         names. Mark internal symbols as artificial.
         * decl.c (gfc_match_decl_type_spec, gfc_match_end): Fix
         indentation.
         (gfc_match_derived_decl): Fix indentation. Check extension level
         before incrementing refs counter.
         * parse.c (parse_derived): Fix style.
         * resolve.c (resolve_global_procedure): Likewise.
         * symbol.c (gfc_check_conflict): Do not ignore artificial symbols.
         (gfc_add_flavor): Reorder condition, cheapest first.
         (gfc_new_symbol, gfc_get_sym_tree,
         generate_isocbinding_symbol): Fix style.
         * trans-expr.c (gfc_trans_subcomponent_assign): Remove
         restriction on !artificial.
         * match.c (gfc_match_equivalence): Special-case CLASS_DATA for
         warnings.

---
gfc_match_equivalence(), too, should not bail-out early on the first
error but should diagnose all errors. I.e. not goto cleanup but set
err=true and continue in order to diagnose all constraints of a
statement. Maybe Sandra or somebody else will eventually find time to
tweak that.

I think it also plugs a very minor leak of name in gfc_find_derived_vtab
so i also tagged it [PR68800]. At least that was the initial
motiviation to look at that spot.
We were doing
-      name = xasprintf ("__vtab_%s", tname);
...
           gfc_set_sym_referenced (vtab);
-         name = xasprintf ("__vtype_%s", tname);

Bootstrapped and regtested without regressions on x86_64-unknown-linux.
Ok for trunk?



Reply via email to