[patch, fortran] Dimension of a function result as host association does not work (PR29916)

Tobias Burnus burnus@net-b.de
Tue Nov 21 00:07:00 GMT 2006


:ADDPATCH fortran:

As Macro Restelli found out, gfortran does not accept the following
valid code:

integer :: n
contains
  function internal_f()
    real :: internal_f(n) ! Variable 'n' cannot appear in the expression
at (1)
    internal_f = 2
  end function internal_f
end

The attached patch by Paul fixes this.
I added the test case, regtested on x86_64-unknown-linux-gnu and added
the changelog.

Ok for the trunk and after a week or so for 4.2?

Tobias


Paul Thomas wrote in PR29916:
> This is nearly identical to PR23446, which I fixed.  It was therefore and easy
> job to extend the principle of host associated variables in dummy specification
> expressions to those of array-valued functions.
>
> I bolstered up the test for both by insisting that not only the
> gfc_is_formal_arg flag being set but that the symbol should be in the current
> namespace.  If this seems odd, remember that contained procedures' symbols are
> found in their parent's namespace.
>
> I have checked that host_dummy_index_1.f90 works OK but have not regtested yet.
>   It is possible that ENTRYs are messed up but I have not checked this.
>
> I am 1000km from my workstation right now and will be there for some 10 days
> yet.  I have not managed to penetrate the firewalls(x4!) here with svn+ssh and
> so can commit nothing.  If you are moved to do so, please take the fix and make
> it fly. Otherwise, I'll do it when I get home.
>   

fortran/
2006-11-21  Paul Thomas  <pault@gcc.gnu.org>

    PR fortran/29916
    * resolve.c (resolve_symbol): Allow host-associated variables
      in the specification expression of an array-valued function.
    * expr.c (check_restricted): Accept host-associated dummy
      array indices.

testsuite/
2006-11-21  Paul Thomas  <pault@gcc.gnu.org>

    PR fortran/29916
    * gfortran.dg/host_dummy_index_1.f90: Added additional test.



More information about the Gcc-patches mailing list