[Bug fortran/45424] [F08] Add IS_CONTIGUOUS intrinsic

anlauf at gmx dot de gcc-bugzilla@gcc.gnu.org
Thu Dec 27 22:51:00 GMT 2018


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

--- Comment #6 from Harald Anlauf <anlauf at gmx dot de> ---
Created attachment 45292
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45292&action=edit
Update of Tobias' patch to 9-trunk (except for ChangeLog)

I've tried to update Tobias' patch so that it compiles with 9-trunk
and adjusted his testcase so that it uses STOP instead of call abort ().

There's one problem left and one question.

The problem is that I'm getting one failure with the following test:

  implicit none
  real, allocatable :: a(:), b(:,:)
  integer :: k = 0

  allocate(a(5), b(10,10))
  call test (a, .true.)
  call test (b, .true.)
  call test (b(::1,::1), .true.)
  call test (b(::2,::1), .false.)
  call test (b(::1,::2), .false.)  ! This test fails currently
contains
  subroutine test (x, res)
!   type(*), dimension(..), intent(in) :: x  ! Should this be allowed?
    real,    dimension(..), intent(in) :: x
    logical,                intent(in) :: res
    k = k + 1
    if (is_contiguous (x) .eqv. res) return
    print *, "Failure of test", k
    stop "FAIL"
  end subroutine test
end program

Maybe something else needs to be updated.

Furthermore, should type(*), dimension(..) be allowed?  Opinions?
I tend to think so.  Does this need explicit coding as for e.g. SIZEOF,
or are there better ways?


More information about the Gcc-bugs mailing list