[patch, fortran] Fix PR 92004, restore Lapack compilation
Tobias Burnus
tobias@codesourcery.com
Tue Oct 8 21:41:00 GMT 2019
Hi Thomas,
On 10/6/19 5:26 PM, Thomas Koenig wrote:
> +/* Under certain conditions, a scalar actual argument can be passed
> + to an array dummy argument - see F2018, 15.5.2.4, clause 14. This
> + functin returns true for these conditions so that an error or
function ("o" missing); I think it is not clause 14 but paragraph 14.
> + warning for this can be suppressed later. */
> +
> +bool
> +maybe_dummy_array_arg (gfc_expr *e)
> +{
> + gfc_symbol *s;
> +
> + if (e->rank > 0)
> + return false;
> +
> + if (e->ts.type == BT_CHARACTER && e->ts.kind == 1)
> + return true;
> +
> + if (e->expr_type != EXPR_VARIABLE)
> + return false;
What about PARAMETER? :-)
> + s = e->symtree->n.sym;
> + if (s->as == NULL)
> + return false;
This looks wrong. You also want to permit dt%array(1) â but not dt(1)%scalar
> + if (s->ts.type == BT_CLASS || s->as->type == AS_ASSUMED_SHAPE
> + || s->attr.pointer)
> + return false;
dt%foo â again, "foo" can be an allocatable of polymorphic type or a
pointer, but at least, it cannot be of assumed shape.
Otherwise it looks good at a glance.
Tobias
More information about the Fortran
mailing list