[Bug fortran/32760] [4.3 Regression] Error defining subroutine named PRINT
burnus at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Fri Feb 1 09:35:00 GMT 2008
------- Comment #28 from burnus at gcc dot gnu dot org 2008-02-01 09:34 -------
> > A fix for the PR
> > This is regtesting as I write. It fixes the first three PRs but not that of
> > comment #25.
I'm not so happy about the != '(' in:
+ /* These are definitive indicators that this is a variable. */
else if (gfc_peek_char () != '(' || sym->ts.type != BT_UNKNOWN
As "integer, .... ::" shows, != '(' is not a bullet-proof sign for a
variable. (I should not complain too loudly, however, as I have written that
part.)
+ else if (sym->ns == gfc_current_ns->parent
+ && sym->ts.type == BT_UNKNOWN)
+ break;
I think you can have:
else if (sym->ns == gfc_current_ns->parent
&& (sym->ts.type == BT_UNKNOWN || sym->attr.pointer
|| sym->as != NULL))
As the following can also not be a procedure name:
module m
pointer p
dimension d(4)
contains
...
(A procedure can have a pointer attribute or be a vector but this is already
taken care of by: "if(sym->attr.external || sym->attr.procedure ||
sym->attr.function || sym->attr.subroutine) flavor = FL_PROCEDURE;")
Thanks for looking into this.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32760
More information about the Gcc-bugs
mailing list