https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105674
--- Comment #2 from anlauf at gcc dot gnu.org --- Reduced testcase, rank 1, no pointer or target needed: program test implicit none integer, dimension(4) :: dim_1 = 42 print*, 'lbound', lbound(dim_1), 'ubound', ubound(dim_1) print*, '' print *, "call assumed_rank( dim_1 )" call assumed_rank( dim_1 ) print *, "call assumed_rank((dim_1))" call assumed_rank((dim_1)) contains subroutine assumed_rank(dataset) integer, intent(in), dimension(..) :: dataset print*, 'outside select rank' print*, 'lbound', lbound(dataset), 'ubound', ubound(dataset) select rank (dataset) rank (1) print*, 'inside select rank' print*, 'lbound', lbound(dataset), 'ubound', ubound(dataset) end select print*, '' end subroutine assumed_rank end program test This prints: lbound 1 ubound 4 call assumed_rank( dim_1 ) outside select rank lbound 1 ubound 4 inside select rank lbound 1 ubound 4 call assumed_rank((dim_1)) outside select rank lbound 1 ubound 4 inside select rank lbound 0 ubound 3