https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79402

Paul Thomas <pault at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2017-02-07
                 CC|                            |pault at gcc dot gnu.org
           Assignee|unassigned at gcc dot gnu.org      |pault at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Paul Thomas <pault at gcc dot gnu.org> ---
Dear Stefano (and Chris),

I can confirm that the bug is there on the latest 7.0.1. This is the
minimum testcase that exhibits the problem.

module mod
  interface myfun
    module function fun1(n) result(y)
      integer,  intent(in)    :: n
      real, dimension(n)  :: y
    end function fun1
  end interface myfun

end module mod

submodule (mod) submod
contains
  module procedure fun1

  end procedure fun1
end submodule

It appears that 'n' doesn't get treated as a dummy for reasons that I
do not see right now.

Bizarrely, this works perfectly and might be a good workaround for
you, omitting the 'source' part of the allocate, if you are assigning
to y somewhere else:

module mod
  interface myfun
    module function fun1(n) result(y)
      integer,  intent(in)    :: n
      real, allocatable, dimension(:)  :: y
    end function fun1
  end interface myfun

end module mod

submodule (mod) submod
contains
  module procedure fun1
    allocate (y(n), source = [(float(i), i = 1,n)])
  end procedure fun1
end submodule

  use mod
  print *, fun1(5)
end

I don't feel much like a 'superhero' right now:-( I have spent the last month
moving between countries and have only just got set up to do anything
gfortran-ish in the last 24 hours.

Thanks

Paul

Reply via email to