xref: /llvm-project/flang/test/Integration/debug-ptr-type.f90 (revision 1094ee71da533929cebb7ce98fd2665c924387a7)
1! RUN: %flang_fc1 -emit-llvm -debug-info-kind=standalone %s -o - | FileCheck  %s
2
3subroutine ff(n, m)
4  implicit none
5  integer i, j, m, n
6  real(4), pointer :: par(:, :)
7  integer, pointer :: psc
8  integer, pointer :: par2(:)
9  character(len=16), pointer :: pstr
10  real(4), target :: ar(4, 5)
11  integer, target :: sc
12  integer, target, allocatable :: ar2(:)
13  character(len=:), target, allocatable :: str
14
15  str = 'Hello'
16  pstr => str
17  allocate(ar2(4))
18  par2 => ar2
19  do i=1,5
20    do j=1,4
21    ar(j,i) = 0.1
22    par2(j) = j
23    end do
24  end do
25  sc = 3
26  psc => sc
27  par => ar
28
29  print *, sc
30  print *, ar
31  print *, ar2
32  print *, str
33  print *, psc
34  print *, par
35  print *, par2
36  print *, pstr
37end subroutine ff
38
39
40! CHECK-DAG: ![[INT_TY:[0-9]+]] = !DIBasicType(name: "integer"{{.*}})
41! CHECK-DAG: ![[ELEMS1:[0-9]+]] = !{!{{[0-9]+}}}
42! CHECK-DAG: !DILocalVariable(name: "par"{{.*}}type: ![[ARR_TY1:[0-9]+]])
43! CHECK-DAG: ![[ARR_TY1]] = !DICompositeType(tag: DW_TAG_array_type{{.*}}elements: ![[ELEMS2:[0-9]+]], dataLocation: !DIExpression(DW_OP_push_object_address, DW_OP_deref), associated: !DIExpression(DW_OP_push_object_address, DW_OP_deref, DW_OP_lit0, DW_OP_ne))
44! CHECK-DAG: ![[ELEMS2]] = !{![[ELEM21:[0-9]+]], ![[ELEM22:[0-9]+]]}
45! CHECK-DAG: ![[ELEM21]] = !DISubrange(count: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref), lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
46! CHECK-DAG: ![[ELEM22]] = !DISubrange(count: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref), lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, {{[0-9]+}}, DW_OP_deref))
47! CHECK-DAG: !DILocalVariable(name: "par2"{{.*}}type: ![[ARR_TY2:[0-9]+]])
48! CHECK-DAG: ![[ARR_TY2]] = !DICompositeType(tag: DW_TAG_array_type{{.*}}, elements: ![[ELEMS1]], dataLocation: !DIExpression(DW_OP_push_object_address, DW_OP_deref), associated: !DIExpression(DW_OP_push_object_address, DW_OP_deref, DW_OP_lit0, DW_OP_ne))
49! CHECK-DAG: !DILocalVariable(name: "psc"{{.*}}type: ![[PTR_TY:[0-9]+]])
50! CHECK-DAG: ![[PTR_TY]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: ![[INT_TY]]{{.*}})
51