This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/20874] elemental function ought to be scalar
- From: "fxcoudert at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 19 Jun 2006 22:11:19 -0000
- Subject: [Bug fortran/20874] elemental function ought to be scalar
- References: <bug-20874-6642@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #2 from fxcoudert at gcc dot gnu dot org 2006-06-19 22:11 -------
Regarding your patch:
+ /* An elemental function is required to return a scalar 12.7.1 */
+ if (sym->attr.elemental && sym->attr.function
+ && sym->as && sym->as->rank)
I'm not sure why the condition sym->as->rank is needed (and if you decide to
include it, I'd prefer the explicit (sym->as->rank > 0)); elsewhere in
resolve.c, I read:
if (gfc_elemental (proc))
{
if (sym->as != NULL)
{
gfc_error
("Argument '%s' of elemental procedure at %L must be scalar",
sym->name, &sym->declared_at);
continue;
}
which makes me think that simply having as != NULL is enough to know that it's
not a scalar.
One more thing: reading the lines after the code I pasted above reminds me that
we should check that an elemental function doesn't return a pointer. Could it
be along these lines?:
+ if (sym->attr.elemental && sym->attr.function
+ && sym->result->attr.pointer)
+ ...
--
fxcoudert at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |fxcoudert at gcc dot gnu dot
| |org
Known to fail| |4.2.0 4.1.2
Last reconfirmed|2005-12-31 20:03:28 |2006-06-19 22:11:19
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20874