diff options
| author | janus <janus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-06-19 08:11:21 +0000 |
|---|---|---|
| committer | janus <janus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-06-19 08:11:21 +0000 |
| commit | 4651cfdd2a606b212f95ff6df53510acc9e054c6 (patch) | |
| tree | 26ce7c12125bf366fb5485bdb30e225cbcfca713 /gcc/fortran/trans-expr.c | |
| parent | b32505d2db52f08ca11aaa82215bb89804d51c13 (diff) | |
| download | ppe42-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.c | 4 |
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 |

