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

Thomas Koenig <tkoenig at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
                 CC|                            |pault at gcc dot gnu.org,
                   |                            |tkoenig at gcc dot gnu.org
   Last reconfirmed|                            |2020-04-14
             Status|UNCONFIRMED                 |NEW

--- Comment #2 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
(In reply to martin from comment #0)
> The following code (compiled without any options) prints "15000, 10000" for
> the second call to foo, instead of the expected "20000, 10000". The first
> call to foo gives the expected result. This is also reproducible with
> gfortran-10 branch.
> 
> This code is a variation of the one reported in bug 93918 to further
> understand temporary array creation.
> 
> program array_temps
> implicit none
> 
> type :: tt
>    integer :: u = 1
>    integer :: v = 2
> end type tt
> 
> type(tt), dimension(:), pointer :: r
> integer :: n
> integer, dimension(:), pointer :: p
> 
> allocate(r(1:n))

This test case does not define n.

Assuming you want to write n=10000 in there,
I concur that the output should be as you describe.

I assume that the span is not used correctly in the
function.

The test case works if you do

p => r(:)%v

instead of the call to get().

Reply via email to