! { dg-do run }
! { dg-options "-fcheck=all" }
!
! PR fortran/71194
!
! Contributed by T Kondic
!
program ice
implicit none
integer, parameter :: pa=10, pb=20
complex, target :: a(pa*pb)
real, pointer:: ptr(:,:) =>null()
integer :: i, j, cnt
logical :: negative

  do i = 1, size(a)
    a(i) = cmplx(i,-i)
  end do

  ! Was ICEing before with bounds checks
  ptr(1:pa*2,1:pb) => conv2real(a)

  negative = .false.
  cnt = 1
  do i = 1, ubound(ptr,dim=2)
    do j = 1, ubound(ptr,dim=1)
      if (negative) then
        if (-cnt /= ptr(j, i)) STOP 1
        cnt = cnt + 1
        negative = .false.
      else
        if (cnt /= ptr(j, i)) STOP 2
        negative = .true.
      end if
    end do 
  end do

contains
  function conv2real(carr)
    use, intrinsic :: iso_c_binding
    ! returns real pointer to a complex array
    complex, contiguous, intent(inout), target  :: carr(:)
    real,contiguous,pointer :: conv2real(:)
    call c_f_pointer(c_loc(carr),conv2real,[size(carr)*2])
  end function conv2real
end program
