! { dg-do run } ! ! PR fortran/61138 ! Wrong code with pointer-bounds remapping ! ! Contributed by Tobias Burnus implicit none integer, target :: tgt(10) integer, target, allocatable :: tgt2(:) integer, pointer :: ptr(:) tgt = [1,2,3,4,5,6,7,8,9,10] tgt2 = [1,2,3,4,5,6,7,8,9,10] ptr(-5:) => tgt(5:) ! Okay if (size(ptr) /= 6 .or. lbound(ptr,1) /= -5) STOP 1 if (any (ptr /= [5,6,7,8,9,10])) STOP 2 ptr(-5:) => tgt2(5:) ! wrongly associates the whole array print '(*(i4))', size(ptr), lbound(ptr) print '(*(i4))', ptr if (size(ptr) /= 6 .or. lbound(ptr,1) /= -5) STOP 3 if (any (ptr /= [5,6,7,8,9,10])) STOP 4 end