diff options
author | Janus Weil <janus@gcc.gnu.org> | 2009-06-19 10:11:21 +0200 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2009-06-19 10:11:21 +0200 |
commit | 7e9c61e83e48581f9808b3796f474094aa58e3ce (patch) | |
tree | 26ce7c12125bf366fb5485bdb30e225cbcfca713 /gcc/testsuite | |
parent | dd26af706356004ab4a02b4f42a9f1a3b1e8bfbf (diff) | |
download | gcc-7e9c61e83e48581f9808b3796f474094aa58e3ce.zip gcc-7e9c61e83e48581f9808b3796f474094aa58e3ce.tar.gz gcc-7e9c61e83e48581f9808b3796f474094aa58e3ce.tar.bz2 |
re PR fortran/40450 ([F03] procedure pointer as actual argument)
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.
From-SVN: r148690
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/proc_ptr_20.f90 | 42 |
2 files changed, 47 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 540f408..7ddc758 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-06-19 Janus Weil <janus@gcc.gnu.org> + + PR fortran/40450 + * gfortran.dg/proc_ptr_20.f90: New. + 2009-06-18 H.J. Lu <hongjiu.lu@intel.com> PR target/40470 diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_20.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_20.f90 new file mode 100644 index 0000000..79c9ba8 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/proc_ptr_20.f90 @@ -0,0 +1,42 @@ +! { dg-do run } +! +! PR 40450: [F03] procedure pointer as actual argument +! +! Contributed by John McFarland <john.mcfarland@swri.org> + +MODULE m + ABSTRACT INTERFACE + SUBROUTINE sub() + END SUBROUTINE sub + END INTERFACE + +CONTAINS + + SUBROUTINE passf(f2) + PROCEDURE(sub), POINTER:: f2 + CALL callf(f2) + END SUBROUTINE passf + + SUBROUTINE callf(f3) + PROCEDURE(sub), POINTER :: f3 + PRINT*, 'calling f' + CALL f3() + END SUBROUTINE callf +END MODULE m + + +PROGRAM prog + USE m + PROCEDURE(sub), POINTER :: f1 + f1 => s + CALL passf(f1) + +CONTAINS + + SUBROUTINE s + PRINT*, 'sub' + END SUBROUTINE s +END PROGRAM prog + +! { dg-final { cleanup-modules "m" } } + |