Untabified and resubmitted: Patch to gfortran PR13742
Steven Bosscher
stevenb@suse.de
Wed May 5 11:52:00 GMT 2004
On Wednesday 05 May 2004 09:42, Victor Leikehman wrote:
> @@ -179,13 +180,18 @@ static tree
> build_equiv_decl (tree union_type, bool is_init)
> {
> tree decl;
> +
> + if (is_init)
> + {
> + decl = gfc_create_var (union_type, "equiv");
> + TREE_STATIC (decl) = 1;
> + return decl;
> + }
> +
> decl = build_decl (VAR_DECL, NULL, union_type);
> DECL_ARTIFICIAL (decl) = 1;
>
> - if (is_init)
> - DECL_COMMON (decl) = 0;
> - else
> - DECL_COMMON (decl) = 1;
> + DECL_COMMON (decl) = 1;
This put all EQUIVALENCE decls in '.common', I doubt we really want that.
> if (sym)
> - decl = build_common_decl (sym, union_type, is_init);
> + {
> + if (is_init)
> + gfc_error ("Variables in COMMON block should not"
> + " have initializers");
Is there a way to get this error to the front end?
The idea always was to have the front end handle all errors/warnings,
and have the backend generate code iff no errors were found.
> + if (h->sym->value)
> + {
> + if (h->offset < offset)
> + gfc_error ("Unsupported form of initialization"
> + " of EQUIVALENCEd variables");
This should use sorry().
> + /* Sanity check */
> + for (t = CONSTRUCTOR_ELTS (ctor); t; t = TREE_CHAIN (t))
> + {
> + tree field = TREE_PURPOSE (t);
> + assert (TREE_CODE (field) == FIELD_DECL);
> + }
This can be wrapped in #ifdef ENABLE_CHECKING/#endif.
Gr.
Steven
More information about the Fortran
mailing list