------- Comment #3 from burnus at gcc dot gnu dot org  2009-08-04 16:09 -------
Thomas, as you know a bit about the array descriptor, can you have a look? The
problem seems to be in libgfortran/intrinsics/iso_c_binding.c's c_f_pointer*

Simplified test case:
One:  1  2 -1 -2
Two:  1  2  2 -1  
           ^^^^^

The dump is trival:
      D.1581 = (void *) &table;
      D.1582 = D.1581;
      set_table (&D.1582);
and
    c_f_pointer_i4 (*cptr, &table_tmp, &parm.1);

Thus the issue must be in
    c_f_pointer_i4


program main
   use iso_c_binding, only: c_ptr, c_loc, c_f_pointer
   implicit none
   integer, dimension(2,1,2), target :: table
   table = reshape ( (/ 1,2,-1,-2/), (/2,1,2/))
!   print '(a,12i3)', "One:", table
   call set_table (c_loc (table))
contains
   subroutine set_table (cptr)
     type(c_ptr), intent(in) :: cptr
     integer, dimension(:,:,:), pointer :: table_tmp
     call c_f_pointer (cptr, table_tmp, (/2,1,2/))
!     print '(a,12i3)', "Two:", table_tmp
   end subroutine set_table
end program main


-- 

burnus at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |burnus at gcc dot gnu dot
                   |                            |org, tkoenig at gcc dot gnu
                   |                            |dot org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
  GCC build triplet|4.5.0 Ref. svn r150253      |
   GCC host triplet|Linux 32bit, 64bit, MAC OS X|
 GCC target triplet|gcc, gfortran 4.3.2, 4.4.0, |
                   |4.5.0                       |
           Keywords|                            |wrong-code
      Known to fail|                            |4.5.0 4.4.0 4.3.2
   Last reconfirmed|0000-00-00 00:00:00         |2009-08-04 16:09:45
               date|                            |
            Summary|[4.5.0,4.4.0,4.3.2]         |Conversion problem for  f-
                   |conversion problem for  f-  |allocatable -> cptr -> fptr
                   |allocatable -> cptr -> fptr |-> f-allocatable
                   |-> f-allocatable            |


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

Reply via email to