! PR tree-optimization/46985
! { dg-do compile }
! { dg-options "-O -ftree-pre -ftree-vrp -fno-tree-ccp -fno-tree-dominator-opts -fno-tree-fre" }

  type :: t
    integer :: i
  end type t
  type(t), target :: tar(2) = (/t(2), t(4)/)
  integer, pointer :: ptr(:)
  ptr => tar%i
  call foo (ptr)
contains
  subroutine foo (arg)
    integer :: arg(:)
    arg = arg - 1
  end subroutine
end