I see a strange initialization problem.  If I pass some function 'g' as an
argument fo another function 'wrap', I will get a bus error.  If I call 'g'
from main before passing it as an argument, the code works correctly.  In the
sample code, removing the two commented lines causes the call to 'wrap' to
work; leaving the comments produces the bus error.  Sample code:

    function wrap(x0, f) result(w)
        real(8), intent(in):: x0
        real(8):: w
        interface
            function f(x) result(r)
                real(8), intent(in):: x
                real(8):: r
            end function f
        end interface
        w = f(x0)
        return
    end function wrap

    function g(y) result(s)
        real(8), intent(in):: y
        real(8):: s
        s = y * y
        return
    end function g

    program m
        real(8):: b
        !b = g(2.0d00)
        !print *, 'g(2.0d00) = ', b
        b = wrap(3.0d00, g)
        print *, 'wrap(3.0d00, g) = ', b
    end program m


-- 
           Summary: dummy procedure problem
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: danp57 at optonline dot net
 GCC build triplet: i?86-mac-darwin
  GCC host triplet: i?86-mac-darwin
GCC target triplet: i?86-mac-darwin


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32620

Reply via email to