1! { dg-do compile }
2! { dg-require-effective-target ilp32 }
3!
4subroutine foo(i)
5  implicit none
6  integer, intent(in) :: i
7  character(len=i) :: s
8
9  s = ''
10  print *, s(1:2_8**32_8+3_8) ! { dg-error "too large" }
11  print *, s(2_8**32_8+3_8:2_8**32_8+4_8) ! { dg-error "too large" }
12  print *, len(s(1:2_8**32_8+3_8)) ! { dg-error "too large" }
13  print *, len(s(2_8**32_8+3_8:2_8**32_8+4_8)) ! { dg-error "too large" }
14
15  print *, s(2_8**32_8+3_8:1)
16  print *, s(2_8**32_8+4_8:2_8**32_8+3_8)
17  print *, len(s(2_8**32_8+3_8:1))
18  print *, len(s(2_8**32_8+4_8:2_8**32_8+3_8))
19
20end subroutine
21