[Bug fortran/47349] missing warning: Actual argument contains too few elements
janus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Feb 7 21:07:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47349
--- Comment #2 from janus at gcc dot gnu.org 2011-02-07 21:05:04 UTC ---
The patch in comment #1 produces a couple of regressions. The following should
take care of most of them:
Index: gcc/fortran/interface.c
===================================================================
--- gcc/fortran/interface.c (revision 169891)
+++ gcc/fortran/interface.c (working copy)
@@ -1887,7 +1887,7 @@ get_expr_storage_size (gfc_expr *e)
else if (ref->type == REF_ARRAY && ref->u.ar.type == AR_ELEMENT
&& e->expr_type == EXPR_VARIABLE)
{
- if (e->symtree->n.sym->as->type == AS_ASSUMED_SHAPE
+ if (ref->u.ar.as->type == AS_ASSUMED_SHAPE
|| e->symtree->n.sym->attr.pointer)
{
elements = 1;
@@ -1916,8 +1916,6 @@ get_expr_storage_size (gfc_expr *e)
- mpz_get_si (ref->u.ar.as->lower[i]->value.integer));
}
}
- else
- return 0;
}
if (substrlen)
@@ -2107,9 +2105,9 @@ compare_actual_formal (gfc_actual_arglist **ap, gf
actual_size = get_expr_storage_size (a->expr);
formal_size = get_sym_storage_size (f->sym);
- if (actual_size != 0
- && actual_size < formal_size
- && a->expr->ts.type != BT_PROCEDURE)
+ if (actual_size != 0 && actual_size < formal_size
+ && a->expr->ts.type != BT_PROCEDURE
+ && f->sym->attr.flavor != FL_PROCEDURE)
{
if (a->expr->ts.type == BT_CHARACTER && !f->sym->as && where)
gfc_warning ("Character length of actual argument shorter "
More information about the Gcc-bugs
mailing list