summaryrefslogtreecommitdiffstats
path: root/gcc/fortran/trans-expr.c
diff options
context:
space:
mode:
authorjanus <janus@138bc75d-0d04-0410-961f-82ee72b054a4>2009-06-19 08:11:21 +0000
committerjanus <janus@138bc75d-0d04-0410-961f-82ee72b054a4>2009-06-19 08:11:21 +0000
commit4651cfdd2a606b212f95ff6df53510acc9e054c6 (patch)
tree26ce7c12125bf366fb5485bdb30e225cbcfca713 /gcc/fortran/trans-expr.c
parentb32505d2db52f08ca11aaa82215bb89804d51c13 (diff)
downloadppe42-gcc-4651cfdd2a606b212f95ff6df53510acc9e054c6.tar.gz
ppe42-gcc-4651cfdd2a606b212f95ff6df53510acc9e054c6.zip
2009-06-19 Janus Weil <janus@gcc.gnu.org>
PR fortran/40450 * trans-expr.c (gfc_conv_procedure_call): Only add an extra addr_expr to a procedure pointer actual argument, if it is not itself a dummy arg. 2009-06-19 Janus Weil <janus@gcc.gnu.org> PR fortran/40450 * gfortran.dg/proc_ptr_20.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148690 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/trans-expr.c')
-rw-r--r--gcc/fortran/trans-expr.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index a4d00df7fa7..765c04f57c5 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -2646,7 +2646,9 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
if (fsym && e->expr_type != EXPR_NULL
&& ((fsym->attr.pointer
&& fsym->attr.flavor != FL_PROCEDURE)
- || fsym->attr.proc_pointer))
+ || (fsym->attr.proc_pointer
+ && !(e->expr_type == EXPR_VARIABLE
+ && e->symtree->n.sym->attr.dummy))))
{
/* Scalar pointer dummy args require an extra level of
indirection. The null pointer already contains
OpenPOWER on IntegriCloud