------- 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