public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/94578] New: Incorrect assignment of RESHAPE() result to a Fortran pointer
@ 2020-04-13 13:46 howisjw at hotmail dot com
  2020-04-13 13:53 ` [Bug fortran/94578] " howisjw at hotmail dot com
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: howisjw at hotmail dot com @ 2020-04-13 13:46 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 94578
           Summary: Incorrect assignment of RESHAPE() result to a Fortran
                    pointer
           Product: gcc
           Version: 8.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: howisjw at hotmail dot com
  Target Milestone: ---

The other day, I tried to compile a large Fortran code using gcc 8.3.0. In the
code the reshape function is used and the resulting is assigned to a Fortran
pointer. The results are not what I expected to be. I am not sure if it a bug
or if I do something which is not according to the latest Fortran standard. I
created a simple program (see below) to demostrate the problem. 

If I use the tmp array, like

  tmp     = reshape(source=array2d, shape=shape(array1d))
  array1d = tmp

it all works. I have the impression that under-the-hood the result of the
reshape function is stored in array1d using a some kind of memory copy. This
works fine if array1d is contiguous in memory. However, if array1d is a Fortran
pointer (my case) do not have to be contiguous in memory.


program bug_reshape
  implicit none

  type :: value_and_derivatives
     real(kind=8) :: x,s,t,st,ss,tt
     logical      :: up_to_date
  end type value_and_derivatives

  type :: tsolution
     type(value_and_derivatives) :: x, y
  end type tsolution

  type(tsolution), dimension(3*4), target :: solution

  ! Locals
  integer                                            :: i, j
  type(value_and_derivatives), dimension(3,4)        :: array2d
  type(value_and_derivatives), dimension(:), pointer :: array1d
  type(value_and_derivatives), dimension(3*4)        :: tmp

  array1d => solution%x

  do j=1,4
     do i=1,3
        array2d(i,j) = value_and_derivatives(i*j, i, j, 0.1*i*j, 0.1*i, 0.1*j,
.true.)
     end do
  end do
  array1d = reshape(source=array2d, shape=shape(array1d))

  print*,"--- array2d ---"
  do j=1,4
     do i=1,3
        print '(2(i1,1x),6(e15.7,1x),l)',i,j,array2d(i,j)
     end do
  end do

  print*,"--- array1d ---"
  do i=1,12
     print '(i1,1x,6(e15.7,1x),l)',i,array1d(i)
  end do
end program bug_reshape

Jan-Willem

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug fortran/94578] Incorrect assignment of RESHAPE() result to a Fortran pointer
  2020-04-13 13:46 [Bug fortran/94578] New: Incorrect assignment of RESHAPE() result to a Fortran pointer howisjw at hotmail dot com
@ 2020-04-13 13:53 ` howisjw at hotmail dot com
  2020-04-13 13:56 ` howisjw at hotmail dot com
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: howisjw at hotmail dot com @ 2020-04-13 13:53 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from Jan-Willem Blokland <howisjw at hotmail dot com> ---
Below are the results of the test program. The results of array1d should have
been identical to array2d.

 --- array2d ---
1 1   0.1000000E+01   0.1000000E+01   0.1000000E+01   0.1000000E+00  
0.1000000E+00   0.1000000E+00 T
2 1   0.2000000E+01   0.2000000E+01   0.1000000E+01   0.2000000E+00  
0.2000000E+00   0.1000000E+00 T
3 1   0.3000000E+01   0.3000000E+01   0.1000000E+01   0.3000000E+00  
0.3000000E+00   0.1000000E+00 T
1 2   0.2000000E+01   0.1000000E+01   0.2000000E+01   0.2000000E+00  
0.1000000E+00   0.2000000E+00 T
2 2   0.4000000E+01   0.2000000E+01   0.2000000E+01   0.4000000E+00  
0.2000000E+00   0.2000000E+00 T
3 2   0.6000000E+01   0.3000000E+01   0.2000000E+01   0.6000000E+00  
0.3000000E+00   0.2000000E+00 T
1 3   0.3000000E+01   0.1000000E+01   0.3000000E+01   0.3000000E+00  
0.1000000E+00   0.3000000E+00 T
2 3   0.6000000E+01   0.2000000E+01   0.3000000E+01   0.6000000E+00  
0.2000000E+00   0.3000000E+00 T
3 3   0.9000000E+01   0.3000000E+01   0.3000000E+01   0.9000000E+00  
0.3000000E+00   0.3000000E+00 T
1 4   0.4000000E+01   0.1000000E+01   0.4000000E+01   0.4000000E+00  
0.1000000E+00   0.4000000E+00 T
2 4   0.8000000E+01   0.2000000E+01   0.4000000E+01   0.8000000E+00  
0.2000000E+00   0.4000000E+00 T
3 4   0.1200000E+02   0.3000000E+01   0.4000000E+01   0.1200000E+01  
0.3000000E+00   0.4000000E+00 T
 --- array1d ---
1   0.1000000E+01   0.1000000E+01   0.1000000E+01   0.1000000E+00  
0.1000000E+00   0.1000000E+00 T
2   0.3000000E+01   0.3000000E+01   0.1000000E+01   0.3000000E+00  
0.3000000E+00   0.1000000E+00 T
3   0.4000000E+01   0.2000000E+01   0.2000000E+01   0.4000000E+00  
0.2000000E+00   0.2000000E+00 T
4   0.3000000E+01   0.1000000E+01   0.3000000E+01   0.3000000E+00  
0.1000000E+00   0.3000000E+00 T
5   0.9000000E+01   0.3000000E+01   0.3000000E+01   0.9000000E+00  
0.3000000E+00   0.3000000E+00 T
6   0.8000000E+01   0.2000000E+01   0.4000000E+01   0.8000000E+00  
0.2000000E+00   0.4000000E+00 T
7   0.6930324-309   0.6953253-309   0.6953253-309   0.6930324-309  
0.6930226-309   0.6930324-309 T
8   0.6930324-309   0.3952525-322   0.1096251-314   0.0000000E+00  
0.1712892-316   0.2302373-314 T
9   0.4940656-323   0.0000000E+00   0.4940656-323   0.6930324-309  
0.6930324-309   0.3102445-313 T
*   0.6930324-309   0.6930324-309   0.6930324-309   0.0000000E+00  
0.4940656-323   0.6930324-309 T
*   0.0000000E+00   0.6930324-309   0.4940656-323   0.0000000E+00  
0.4646021-309   0.6930324-309 T
*   0.6930324-309   0.6930324-309   0.4940656-323   0.3575029-316  
0.2964394-322   0.4171992-308 T

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug fortran/94578] Incorrect assignment of RESHAPE() result to a Fortran pointer
  2020-04-13 13:46 [Bug fortran/94578] New: Incorrect assignment of RESHAPE() result to a Fortran pointer howisjw at hotmail dot com
  2020-04-13 13:53 ` [Bug fortran/94578] " howisjw at hotmail dot com
@ 2020-04-13 13:56 ` howisjw at hotmail dot com
  2020-04-14 15:05 ` tkoenig at gcc dot gnu.org
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: howisjw at hotmail dot com @ 2020-04-13 13:56 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Jan-Willem Blokland <howisjw at hotmail dot com> ---
Created attachment 48259
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48259&action=edit
Program bug_reshape

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug fortran/94578] Incorrect assignment of RESHAPE() result to a Fortran pointer
  2020-04-13 13:46 [Bug fortran/94578] New: Incorrect assignment of RESHAPE() result to a Fortran pointer howisjw at hotmail dot com
  2020-04-13 13:53 ` [Bug fortran/94578] " howisjw at hotmail dot com
  2020-04-13 13:56 ` howisjw at hotmail dot com
@ 2020-04-14 15:05 ` tkoenig at gcc dot gnu.org
  2020-04-14 15:08 ` tkoenig at gcc dot gnu.org
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: tkoenig at gcc dot gnu.org @ 2020-04-14 15:05 UTC (permalink / raw)
  To: gcc-bugs

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

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

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

--- Comment #3 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
The span field is either not set correctly, or it is
ignored during the RESHAPE.

I'll look a little further...

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug fortran/94578] Incorrect assignment of RESHAPE() result to a Fortran pointer
  2020-04-13 13:46 [Bug fortran/94578] New: Incorrect assignment of RESHAPE() result to a Fortran pointer howisjw at hotmail dot com
                   ` (2 preceding siblings ...)
  2020-04-14 15:05 ` tkoenig at gcc dot gnu.org
@ 2020-04-14 15:08 ` tkoenig at gcc dot gnu.org
  2020-04-16 14:21 ` tkoenig at gcc dot gnu.org
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: tkoenig at gcc dot gnu.org @ 2020-04-14 15:08 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
Looks like span is not handled in reshape (at all).

It will be interesting to see how other intrinsics
such as maxloc and just about everything else
handles this.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug fortran/94578] Incorrect assignment of RESHAPE() result to a Fortran pointer
  2020-04-13 13:46 [Bug fortran/94578] New: Incorrect assignment of RESHAPE() result to a Fortran pointer howisjw at hotmail dot com
                   ` (3 preceding siblings ...)
  2020-04-14 15:08 ` tkoenig at gcc dot gnu.org
@ 2020-04-16 14:21 ` tkoenig at gcc dot gnu.org
  2020-04-16 14:24 ` tkoenig at gcc dot gnu.org
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: tkoenig at gcc dot gnu.org @ 2020-04-16 14:21 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
Somewhat smaller test case:

program main
  implicit none
  type foo
     integer :: x, y
  end type foo
  integer :: i
  integer, dimension (2,2) :: array2d
  integer, dimension(:), pointer :: array1d
  type(foo), dimension(2*2), target :: solution
  data array2d /1,2,3,4/
  array1d => solution%x
  print *,array2d
  array1d = reshape (source=array2d, shape=shape(array1d))
  print *,array1d
end program main

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug fortran/94578] Incorrect assignment of RESHAPE() result to a Fortran pointer
  2020-04-13 13:46 [Bug fortran/94578] New: Incorrect assignment of RESHAPE() result to a Fortran pointer howisjw at hotmail dot com
                   ` (4 preceding siblings ...)
  2020-04-16 14:21 ` tkoenig at gcc dot gnu.org
@ 2020-04-16 14:24 ` tkoenig at gcc dot gnu.org
  2020-04-17  7:02 ` howisjw at hotmail dot com
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: tkoenig at gcc dot gnu.org @ 2020-04-16 14:24 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
Also wrong:

program main
  implicit none
  type foo
     integer :: x, y
  end type foo
  integer :: i
  integer, dimension (2,2) :: array2d
  integer, dimension(:), pointer :: array1d
  type(foo), dimension(2*2), target :: solution
  data array2d /1,3,2,4/
  array1d => solution%x
  array1d = reshape (source=array2d, shape=shape(array1d))
  print *,maxval(array2d)
  print *,maxval(array1d)
end program main

prints

           4
           2

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug fortran/94578] Incorrect assignment of RESHAPE() result to a Fortran pointer
  2020-04-13 13:46 [Bug fortran/94578] New: Incorrect assignment of RESHAPE() result to a Fortran pointer howisjw at hotmail dot com
                   ` (5 preceding siblings ...)
  2020-04-16 14:24 ` tkoenig at gcc dot gnu.org
@ 2020-04-17  7:02 ` howisjw at hotmail dot com
  2020-04-17 14:16 ` tkoenig at gcc dot gnu.org
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: howisjw at hotmail dot com @ 2020-04-17  7:02 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from Jan-Willem Blokland <howisjw at hotmail dot com> ---
Thanks for verifying my case. Your test makes me wonder which intrinsics are
effected in this and other versions of gfortran. Furthermore, I assume it also
happens when you pass the pointer to subroutine or function (see example
below). This would be more difficult to debug. Fortunately, for my case the
pointer assignment and the usage of the intrinsic where in the same
function/subroutine.

program main
  implicit none
  type foo
     integer :: x, y
  end type foo
  integer :: i
  integer, dimension (2,2) :: array2d
  integer, dimension(:), pointer :: array1d
  type(foo), dimension(2*2), target :: solution
  data array2d /1,3,2,4/
  array1d => solution%x
  array1d = reshape (source=array2d, shape=shape(array1d))
  print *,maxval(array2d)
  call printMaxval(array1d)
end program main

subroutine printMaxval(array1d)
  implicit none
  integer, dimension(:), intent(in) :: array1d

  print*,maxval(array1d)
end subroutine

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug fortran/94578] Incorrect assignment of RESHAPE() result to a Fortran pointer
  2020-04-13 13:46 [Bug fortran/94578] New: Incorrect assignment of RESHAPE() result to a Fortran pointer howisjw at hotmail dot com
                   ` (6 preceding siblings ...)
  2020-04-17  7:02 ` howisjw at hotmail dot com
@ 2020-04-17 14:16 ` tkoenig at gcc dot gnu.org
  2020-04-17 15:17 ` tkoenig at gcc dot gnu.org
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: tkoenig at gcc dot gnu.org @ 2020-04-17 14:16 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #8 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
The bug appears to affect intrinsics only, for example this

program main
  implicit none
  type foo
     integer :: x, y
  end type foo
  integer, dimension(:), pointer :: bp
  type (foo), dimension(4), target :: b
  data b%x /1,2,3,4/
  data b%y /-1,-2,-3,-4/
  bp => b%x
  bp = x()
  print *,bp
contains
  function x()
    integer, dimension(4) :: x
    x = [11,12,13,14]
  end function x
end program main

works as expected (and creates an array temporary).

Let's see what we can do here, if this should be solved on the
library side or if we should just insert a temporary array here...

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug fortran/94578] Incorrect assignment of RESHAPE() result to a Fortran pointer
  2020-04-13 13:46 [Bug fortran/94578] New: Incorrect assignment of RESHAPE() result to a Fortran pointer howisjw at hotmail dot com
                   ` (7 preceding siblings ...)
  2020-04-17 14:16 ` tkoenig at gcc dot gnu.org
@ 2020-04-17 15:17 ` tkoenig at gcc dot gnu.org
  2020-04-25 10:29 ` cvs-commit at gcc dot gnu.org
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: tkoenig at gcc dot gnu.org @ 2020-04-17 15:17 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #9 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
Here's what a solution could look like. I am not really sure that this
is the way to go, there may be some corner cases (pointer to an
argument which was passed as a transposed argument?) which this
might get wrong.

diff --git a/libgfortran/generated/maxval_i4.c
b/libgfortran/generated/maxval_i4.c
index abad45b50ae..3a9ed436956 100644
--- a/libgfortran/generated/maxval_i4.c
+++ b/libgfortran/generated/maxval_i4.c
@@ -50,6 +50,7 @@ maxval_i4 (gfc_array_i4 * const restrict retarray,
   index_type delta;
   index_type dim;
   int continue_loop;
+  int ret_factor;

   /* Make dim zero based to avoid confusion.  */
   rank = GFC_DESCRIPTOR_RANK (array) - 1;
@@ -112,6 +113,7 @@ maxval_i4 (gfc_array_i4 * const restrict retarray,
          return;

        }
+      ret_factor = 1;
     }
   else
     {
@@ -124,12 +126,16 @@ maxval_i4 (gfc_array_i4 * const restrict retarray,
       if (unlikely (compile_options.bounds_check))
        bounds_ifunction_return ((array_t *) retarray, extent,
                                 "return value", "MAXVAL");
+      if (retarray->span != 0)
+       ret_factor = retarray->span / sizeof(GFC_INTEGER_4);
+      else
+       ret_factor = 1;
     }

   for (n = 0; n < rank; n++)
     {
       count[n] = 0;
-      dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
+      dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n) * ret_factor;
       if (extent[n] <= 0)
        return;
     }

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug fortran/94578] Incorrect assignment of RESHAPE() result to a Fortran pointer
  2020-04-13 13:46 [Bug fortran/94578] New: Incorrect assignment of RESHAPE() result to a Fortran pointer howisjw at hotmail dot com
                   ` (8 preceding siblings ...)
  2020-04-17 15:17 ` tkoenig at gcc dot gnu.org
@ 2020-04-25 10:29 ` cvs-commit at gcc dot gnu.org
  2020-04-27  9:42 ` howisjw at hotmail dot com
  2020-04-27 16:57 ` tkoenig at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-04-25 10:29 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #10 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Thomas Kथà¤nig <tkoenig@gcc.gnu.org>:

https://gcc.gnu.org/g:cf3f7b309ffdd888fdd85048ac9b4bcdc2713a45

commit r10-7960-gcf3f7b309ffdd888fdd85048ac9b4bcdc2713a45
Author: Thomas König <tkoenig@gcc.gnu.org>
Date:   Sat Apr 25 12:28:15 2020 +0200

    Fix PR 94578.

    Our intrinsics do not handle spans on their return values (yet),
    so this creates a temporary for subref array pointers.

    2020-04-25  Thomas Koenig  <tkoenig@gcc.gnu.org>

            PR fortran/94578
            * trans-expr.c (arrayfunc_assign_needs_temporary): If the
            LHS is a subref pointer, we also need a temporary.

    2020-04-25  Thomas Koenig  <tkoenig@gcc.gnu.org>

            PR fortran/94578
            * gfortran.dg/pointer_assign_14.f90: New test.
            * gfortran.dg/pointer_assign_15.f90: New test.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug fortran/94578] Incorrect assignment of RESHAPE() result to a Fortran pointer
  2020-04-13 13:46 [Bug fortran/94578] New: Incorrect assignment of RESHAPE() result to a Fortran pointer howisjw at hotmail dot com
                   ` (9 preceding siblings ...)
  2020-04-25 10:29 ` cvs-commit at gcc dot gnu.org
@ 2020-04-27  9:42 ` howisjw at hotmail dot com
  2020-04-27 16:57 ` tkoenig at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: howisjw at hotmail dot com @ 2020-04-27  9:42 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #11 from Jan-Willem Blokland <howisjw at hotmail dot com> ---
If you make use of an temporary variable, it sounds like you will do an
additional memory copy. Therefore, I am wondering what the performance impact
will be. Naively, I would think the span solution would be faster. 

I must admit, I do realize I say this all without knowing the current
implementation. So you should read my question/comment as fix the issue and
later worry about making the fix as fast as possible. From my personal
experience, making it fast is easily said than done. I am already happy that
you looking into this issue and try to solve it.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug fortran/94578] Incorrect assignment of RESHAPE() result to a Fortran pointer
  2020-04-13 13:46 [Bug fortran/94578] New: Incorrect assignment of RESHAPE() result to a Fortran pointer howisjw at hotmail dot com
                   ` (10 preceding siblings ...)
  2020-04-27  9:42 ` howisjw at hotmail dot com
@ 2020-04-27 16:57 ` tkoenig at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: tkoenig at gcc dot gnu.org @ 2020-04-27 16:57 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=93114

--- Comment #12 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
(In reply to Jan-Willem Blokland from comment #11)
> If you make use of an temporary variable, it sounds like you will do an
> additional memory copy. Therefore, I am wondering what the performance
> impact will be. Naively, I would think the span solution would be faster. 

You are quite correct, but an optimized fix will take far more time
than is available until a release candidate for gcc 10 comes out
and all development is frozen.  I'd rather have correct code on gcc 10.

I will revisit this later as part of PR 93114.

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2020-04-27 16:57 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-13 13:46 [Bug fortran/94578] New: Incorrect assignment of RESHAPE() result to a Fortran pointer howisjw at hotmail dot com
2020-04-13 13:53 ` [Bug fortran/94578] " howisjw at hotmail dot com
2020-04-13 13:56 ` howisjw at hotmail dot com
2020-04-14 15:05 ` tkoenig at gcc dot gnu.org
2020-04-14 15:08 ` tkoenig at gcc dot gnu.org
2020-04-16 14:21 ` tkoenig at gcc dot gnu.org
2020-04-16 14:24 ` tkoenig at gcc dot gnu.org
2020-04-17  7:02 ` howisjw at hotmail dot com
2020-04-17 14:16 ` tkoenig at gcc dot gnu.org
2020-04-17 15:17 ` tkoenig at gcc dot gnu.org
2020-04-25 10:29 ` cvs-commit at gcc dot gnu.org
2020-04-27  9:42 ` howisjw at hotmail dot com
2020-04-27 16:57 ` tkoenig at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).