1! { dg-do compile }
2! { dg-options "-fdump-tree-original" }
3!
4subroutine test()
5  implicit none
6  integer :: i0, i1, i2, i3, i4
7  i0 = kind(STORAGE_SIZE(5))
8  i1 = kind(STORAGE_SIZE(5, kind=1))
9  i2 = kind(STORAGE_SIZE(5, kind=2))
10  i3 = kind(STORAGE_SIZE(5, kind=4))
11  i4 = kind(STORAGE_SIZE(5, kind=8))
12end subroutine test
13
14subroutine test2(x)
15  implicit none
16  class(*) :: x
17  integer :: j0, j1, j2, j3, j4
18  integer(1) :: k1
19  integer(2) :: k2
20  j0 = kind(STORAGE_SIZE(x))
21  j1 = kind(STORAGE_SIZE(x, kind=1))
22  j2 = kind(STORAGE_SIZE(x, kind=2))
23  j3 = kind(STORAGE_SIZE(x, kind=4))
24  j4 = kind(STORAGE_SIZE(x, kind=8))
25
26  k1 = STORAGE_SIZE(x, kind=1)
27  k2 = STORAGE_SIZE(x, kind=2)
28end subroutine test2
29
30! { dg-final { scan-tree-dump-times "i0 = 4;" 1 "original" } }
31! { dg-final { scan-tree-dump-times "i1 = 1;" 1 "original" } }
32! { dg-final { scan-tree-dump-times "i2 = 2;" 1 "original" } }
33! { dg-final { scan-tree-dump-times "i3 = 4;" 1 "original" } }
34! { dg-final { scan-tree-dump-times "i4 = 8;" 1 "original" } }
35! { dg-final { scan-tree-dump-times "j0 = 4;" 1 "original" } }
36
37! { dg-final { scan-tree-dump-times "j1 = 1;" 1 "original" } }
38! { dg-final { scan-tree-dump-times "j2 = 2;" 1 "original" } }
39! { dg-final { scan-tree-dump-times "j3 = 4;" 1 "original" } }
40! { dg-final { scan-tree-dump-times "j4 = 8;" 1 "original" } }
41
42! { dg-final { scan-tree-dump-times "k1 = \\(integer\\(kind=1\\)\\)" 1 "original" } }
43! { dg-final { scan-tree-dump-times "k2 = \\(integer\\(kind=2\\)\\)" 1 "original" } }
44! { dg-final { cleanup-tree-dump "original" } }
45