1! { dg-do compile }
2! { dg-options "-fdump-tree-original" }
3!
4! PR fortran/56907
5!
6subroutine sub(xxx, yyy)
7  use iso_c_binding
8  implicit none
9  integer, target, contiguous :: xxx(:)
10  integer, target             :: yyy(:)
11  type(c_ptr) :: ptr1, ptr2, ptr3, ptr4
12  ptr1 = c_loc (xxx)
13  ptr2 = c_loc (xxx(5:))
14  ptr3 = c_loc (yyy)
15  ptr4 = c_loc (yyy(5:))
16end
17! { dg-final { scan-tree-dump-not " _gfortran_internal_pack" "original" } }
18! { dg-final { scan-tree-dump-times "parm.\[0-9\]+.data = \\(void .\\) &\\(.xxx.\[0-9\]+\\)\\\[0\\\];" 1 "original" } }
19! { dg-final { scan-tree-dump-times "parm.\[0-9\]+.data = \\(void .\\) &\\(.xxx.\[0-9\]+\\)\\\[D.\[0-9\]+ \\* 4\\\];" 1 "original" } }
20! { dg-final { scan-tree-dump-times "parm.\[0-9\]+.data = \\(void .\\) &\\(.yyy.\[0-9\]+\\)\\\[0\\\];" 1 "original" } }
21! { dg-final { scan-tree-dump-times "parm.\[0-9\]+.data = \\(void .\\) &\\(.yyy.\[0-9\]+\\)\\\[D.\[0-9\]+ \\* 4\\\];" 1 "original" } }
22
23! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = parm.\[0-9\]+.data;\[^;]+ptr\[1-4\] = D.\[0-9\]+;" 4 "original" } }
24! { dg-final { cleanup-tree-dump "original" } }
25