diff options
Diffstat (limited to 'gcc/fortran/trans-expr.c')
-rw-r--r-- | gcc/fortran/trans-expr.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 2258ce6..e4953f6 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -1100,10 +1100,12 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym, if (argss == gfc_ss_terminator) { gfc_conv_expr_reference (&parmse, arg->expr); - if (formal && formal->sym->attr.pointer) + if (formal && formal->sym->attr.pointer + && arg->expr->expr_type != EXPR_NULL) { /* Scalar pointer dummy args require an extra level of - indirection. */ + indirection. The null pointer already contains + this level of indirection. */ parmse.expr = gfc_build_addr_expr (NULL, parmse.expr); } } |