Skip to content

Commit 2b33e62

Browse files
committed
[DebugInfo][test] Fix tests for LLVM 19 compatibility
Upstream LLVM has eliminated debug intrinsics like @llvm.dbg.value() and @llvm.dbg.declare(), and replaced them with DPValue objects that are printed as #dbg_value() and #dbg_declare(). This patch modifies the FileCheck patterns in the tests to match, and make them require the "llvm-19" feature.
1 parent 1d69d8d commit 2b33e62

17 files changed

+261
-177
lines changed

test/debug_info/allocatable_arr_param.f90

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
1-
!RUN: %flang -gdwarf-4 -S -emit-llvm %s -o - | FileCheck %s
2-
3-
!CHECK-LABEL: define void @callee_
4-
!CHECK: call void @llvm.dbg.declare(metadata ptr %"array$p", metadata [[DLOC:![0-9]+]]
5-
!CHECK-NEXT: call void @llvm.dbg.declare(metadata ptr %"array$p", metadata [[ALLOCATED:![0-9]+]]
6-
!CHECK-NEXT: call void @llvm.dbg.declare(metadata ptr %"array$sd", metadata [[ARRAY:![0-9]+]], metadata !DIExpression())
7-
!CHECK: [[ARRAY]] = !DILocalVariable(name: "array",
8-
!CHECK-SAME: arg: 2,
9-
!CHECK-SAME: type: [[TYPE:![0-9]+]]
10-
!CHECK: [[TYPE]] = !DICompositeType(tag: DW_TAG_array_type,
11-
!CHECK-SAME: dataLocation: [[DLOC]], allocated: [[ALLOCATED]]
1+
! Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
2+
! See https://llvm.org/LICENSE.txt for license information.
3+
! SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
4+
5+
! REQUIRES: llvm-19
6+
! RUN: %flang -gdwarf-4 -S -emit-llvm %s -o - | FileCheck %s
7+
8+
! CHECK-LABEL: define void @callee_
9+
! CHECK: #dbg_declare(ptr %"array$p", [[DLOC:![0-9]+]]
10+
! CHECK-NEXT: #dbg_declare(ptr %"array$p", [[ALLOCATED:![0-9]+]]
11+
! CHECK-NEXT: #dbg_declare(ptr %"array$sd", [[ARRAY:![0-9]+]], !DIExpression()
12+
! CHECK: [[ARRAY]] = !DILocalVariable(name: "array",
13+
! CHECK-SAME: arg: 2,
14+
! CHECK-SAME: type: [[TYPE:![0-9]+]]
15+
! CHECK: [[TYPE]] = !DICompositeType(tag: DW_TAG_array_type,
16+
! CHECK-SAME: dataLocation: [[DLOC]], allocated: [[ALLOCATED]]
1217

1318
subroutine callee (array)
1419
integer, allocatable :: array(:, :)

test/debug_info/assumed_rank.f90

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,41 @@
1-
!Check debug info generation for assumed rank arrays with DWARF5 and lower.
1+
! Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
2+
! See https://llvm.org/LICENSE.txt for license information.
3+
! SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
24

3-
!RUN: %flang -gdwarf-4 -S -emit-llvm %s -o - | FileCheck %s --check-prefix=DWARF4
4-
!RUN: %flang -gdwarf-5 -S -emit-llvm %s -o - | FileCheck %s --check-prefix=DWARF5
5+
! REQUIRES: llvm-19
6+
! RUN: %flang -gdwarf-4 -S -emit-llvm %s -o - | FileCheck %s --check-prefix=DWARF4
7+
! RUN: %flang -gdwarf-5 -S -emit-llvm %s -o - | FileCheck %s --check-prefix=DWARF5
58

6-
!DWARF4: call void @llvm.dbg.value(metadata ptr %ararray, metadata [[DLOC:![0-9]+]], metadata !DIExpression())
7-
!DWARF4: !DILocalVariable(name: "ararray"
8-
!DWARF4-SAME: arg: 2
9-
!DWARF4-SAME: type: [[ARTYPE:![0-9]+]])
10-
!DWARF4: [[ARTYPE]] = !DICompositeType(tag: DW_TAG_array_type, baseType: !{{[0-9]+}}, size: {{[0-9]+}}, align: {{[0-9]+}}, elements: [[ELEMS:![0-9]+]], dataLocation: [[DLOC:![0-9]+]])
11-
!DWARF4: [[ELEMS]] = !{[[ELEM1:![0-9]+]], [[ELEM2:![0-9]+]], [[ELEM3:![0-9]+]], [[ELEM4:![0-9]+]], [[ELEM5:![0-9]+]], [[ELEM6:![0-9]+]], [[ELEM7:![0-9]+]]}
12-
!DWARF4: [[ELEM1]] = !DISubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 80, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 120, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 112, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
13-
!DWARF4: [[ELEM2]] = !DISubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 128, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 168, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 160, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
14-
!DWARF4: [[ELEM3]] = !DISubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 176, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 216, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 208, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
15-
!DWARF4: [[ELEM4]] = !DISubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 224, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 264, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 256, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
16-
!DWARF4: [[ELEM5]] = !DISubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 272, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 312, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 304, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
17-
!DWARF4: [[ELEM6]] = !DISubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 320, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 360, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 352, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
18-
!DWARF4: [[ELEM7]] = !DISubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 368, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 408, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 400, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
9+
! Check debug info generation for assumed rank arrays with DWARF5 and lower.
1910

2011

21-
!DWARF5: call void @llvm.dbg.value(metadata ptr %ararray, metadata [[DLOC:![0-9]+]], metadata !DIExpression())
22-
!DWARF5: !DILocalVariable(name: "ararray"
23-
!DWARF5-SAME: arg: 2
24-
!DWARF5-SAME: type: [[ARTYPE:![0-9]+]])
25-
!DWARF5: [[ARTYPE]] = !DICompositeType(tag: DW_TAG_array_type, baseType: !{{[0-9]+}}, size: {{[0-9]+}}, align: {{[0-9]+}}, elements: [[ELEMS:![0-9]+]], dataLocation: [[DLOC:![0-9]+]], rank: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 8, DW_OP_deref, DW_OP_constu, 7, DW_OP_and))
26-
!DWARF5: [[ELEMS]] = !{[[ELEM1:![0-9]+]]}
27-
!DWARF5: [[ELEM1]] = !DIGenericSubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_over, DW_OP_constu, 48, DW_OP_mul, DW_OP_plus_uconst, 80, DW_OP_plus, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_over, DW_OP_constu, 48, DW_OP_mul, DW_OP_plus_uconst, 120, DW_OP_plus, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_over, DW_OP_constu, 48, DW_OP_mul, DW_OP_plus_uconst, 112, DW_OP_plus, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
12+
! DWARF4: #dbg_value(ptr %ararray, [[DLOC:![0-9]+]], !DIExpression()
13+
! DWARF4: distinct !DISubprogram(name: "sub"
14+
! DWARF4-SAME: retainedNodes: [[RETAINS:![0-9]+]]
15+
! DWARF4: [[RETAINS]] = !{{{![0-9]+}}, [[DLOC:![0-9]+]]}
16+
! DWARF4: [[DLOC]] = !DILocalVariable(name: "ararray",
17+
! DWARF4-SAME: arg: 2,
18+
! DWARF4-SAME: type: [[ARTYPE:![0-9]+]])
19+
! DWARF4: [[ARTYPE]] = !DICompositeType(tag: DW_TAG_array_type, baseType: !{{[0-9]+}}, size: {{[0-9]+}}, align: {{[0-9]+}}, elements: [[ELEMS:![0-9]+]], dataLocation: [[DLOC:![0-9]+]])
20+
! DWARF4: [[ELEMS]] = !{[[ELEM1:![0-9]+]], [[ELEM2:![0-9]+]], [[ELEM3:![0-9]+]], [[ELEM4:![0-9]+]], [[ELEM5:![0-9]+]], [[ELEM6:![0-9]+]], [[ELEM7:![0-9]+]]}
21+
! DWARF4: [[ELEM1]] = !DISubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 80, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 120, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 112, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
22+
! DWARF4: [[ELEM2]] = !DISubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 128, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 168, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 160, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
23+
! DWARF4: [[ELEM3]] = !DISubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 176, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 216, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 208, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
24+
! DWARF4: [[ELEM4]] = !DISubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 224, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 264, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 256, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
25+
! DWARF4: [[ELEM5]] = !DISubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 272, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 312, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 304, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
26+
! DWARF4: [[ELEM6]] = !DISubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 320, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 360, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 352, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
27+
! DWARF4: [[ELEM7]] = !DISubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 368, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 408, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 400, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
28+
29+
! DWARF5: #dbg_value(ptr %ararray, [[DLOC:![0-9]+]], !DIExpression()
30+
! DWARF5: distinct !DISubprogram(name: "sub"
31+
! DWARF5-SAME: retainedNodes: [[RETAINS:![0-9]+]]
32+
! DWARF5: [[RETAINS]] = !{{{![0-9]+}}, [[DLOC:![0-9]+]]}
33+
! DWARF5: [[DLOC]] = !DILocalVariable(name: "ararray",
34+
! DWARF5-SAME: arg: 2,
35+
! DWARF5-SAME: type: [[ARTYPE:![0-9]+]])
36+
! DWARF5: [[ARTYPE]] = !DICompositeType(tag: DW_TAG_array_type, baseType: !{{[0-9]+}}, size: {{[0-9]+}}, align: {{[0-9]+}}, elements: [[ELEMS:![0-9]+]], dataLocation: [[DLOC:![0-9]+]], rank: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 8, DW_OP_deref, DW_OP_constu, 7, DW_OP_and))
37+
! DWARF5: [[ELEMS]] = !{[[ELEM1:![0-9]+]]}
38+
! DWARF5: [[ELEM1]] = !DIGenericSubrange(lowerBound: !DIExpression(DW_OP_push_object_address, DW_OP_over, DW_OP_constu, 48, DW_OP_mul, DW_OP_plus_uconst, 80, DW_OP_plus, DW_OP_deref), upperBound: !DIExpression(DW_OP_push_object_address, DW_OP_over, DW_OP_constu, 48, DW_OP_mul, DW_OP_plus_uconst, 120, DW_OP_plus, DW_OP_deref), stride: !DIExpression(DW_OP_push_object_address, DW_OP_over, DW_OP_constu, 48, DW_OP_mul, DW_OP_plus_uconst, 112, DW_OP_plus, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
2839

2940
subroutine sub(ararray)
3041
real :: ararray(..)

test/debug_info/assumed_shape.f90

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
1-
!RUN: %flang -g -S -emit-llvm %s -o - | FileCheck %s
1+
! Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
2+
! See https://llvm.org/LICENSE.txt for license information.
3+
! SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
24

3-
!CHECK: call void @llvm.dbg.declare(metadata ptr %assume, metadata [[ASSUME:![0-9]+]], metadata !DIExpression())
4-
!CHECK: [[TYPE:![0-9]+]] = !DICompositeType(tag: DW_TAG_array_type, baseType: {{![0-9]+}}, size: 32, align: 32, elements: [[ELEMS:![0-9]+]])
5-
!CHECK: [[ELEMS]] = !{[[ELEM1:![0-9]+]], [[ELEM2:![0-9]+]], [[ELEM3:![0-9]+]], [[ELEM4:![0-9]+]]
6-
!CHECK: [[ELEM1]] = !DISubrange(lowerBound: 1, upperBound: 5)
7-
!CHECK: [[ELEM2]] = !DISubrange(lowerBound: 1, upperBound: [[N1:![0-9]+]])
8-
!CHECK: [[N1]] = distinct !DILocalVariable
9-
!CHECK: [[ELEM3]] = !DISubrange(lowerBound: [[N2:![0-9]+]], upperBound: 9)
10-
!CHECK: [[N2]] = distinct !DILocalVariable
11-
!CHECK: [[ELEM4]] = !DISubrange(lowerBound: [[N3:![0-9]+]], upperBound: [[N4:![0-9]+]])
12-
!CHECK: [[N3]] = distinct !DILocalVariable
13-
!CHECK: [[N4]] = distinct !DILocalVariable
5+
! REQUIRES: llvm-19
6+
! RUN: %flang -g -S -emit-llvm %s -o - | FileCheck %s
7+
8+
! CHECK: #dbg_declare(ptr %assume, [[ASSUME:![0-9]+]], !DIExpression()
9+
! CHECK: [[TYPE:![0-9]+]] = !DICompositeType(tag: DW_TAG_array_type, baseType: {{![0-9]+}}, size: 32, align: 32, elements: [[ELEMS:![0-9]+]])
10+
! CHECK: [[ELEMS]] = !{[[ELEM1:![0-9]+]], [[ELEM2:![0-9]+]], [[ELEM3:![0-9]+]], [[ELEM4:![0-9]+]]
11+
! CHECK: [[ELEM1]] = !DISubrange(lowerBound: 1, upperBound: 5)
12+
! CHECK: [[ELEM2]] = !DISubrange(lowerBound: 1, upperBound: [[N1:![0-9]+]])
13+
! CHECK: [[N1]] = distinct !DILocalVariable
14+
! CHECK: [[ELEM3]] = !DISubrange(lowerBound: [[N2:![0-9]+]], upperBound: 9)
15+
! CHECK: [[N2]] = distinct !DILocalVariable
16+
! CHECK: [[ELEM4]] = !DISubrange(lowerBound: [[N3:![0-9]+]], upperBound: [[N4:![0-9]+]])
17+
! CHECK: [[N3]] = distinct !DILocalVariable
18+
! CHECK: [[N4]] = distinct !DILocalVariable
1419
subroutine sub(assume,n1,n2,n3,n4)
1520
integer(kind=4) :: assume(5,n1,n2:9,n3:n4)
1621
assume(1,1,1,1) = 7

test/debug_info/assumed_shape_non_contiguous.f90

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
1-
!RUN: %flang -g -S -emit-llvm %s -o - | FileCheck %s
2-
3-
!CHECK: call void @llvm.dbg.value(metadata ptr %array, metadata [[ARRAYDL:![0-9]+]], metadata !DIExpression())
4-
!CHECK: call void @llvm.dbg.declare(metadata ptr %"array$sd", metadata [[ARRAY:![0-9]+]], metadata !DIExpression())
5-
!CHECK-LABEL: distinct !DICompileUnit(language: DW_LANG_Fortran90,
6-
!CHECK: [[ARRAY]] = !DILocalVariable(name: "array"
7-
!CHECK-SAME: arg: 3
8-
!CHECK-SAME: type: [[TYPE:![0-9]+]])
9-
!CHECK: [[TYPE]] = !DICompositeType(tag: DW_TAG_array_type, baseType: {{![0-9]+}}, size: 32, align: 32, elements: [[ELEM:![0-9]+]], dataLocation: [[ARRAYDL]])
10-
!CHECK: [[ELEM]] = !{[[ELEM1:![0-9]+]], [[ELEM2:![0-9]+]]}
11-
!CHECK: [[ELEM1]] = !DISubrange(count: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 88, DW_OP_deref), lowerBound: 1, stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 112, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
12-
!CHECK: [[ELEM2]] = !DISubrange(count: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 136, DW_OP_deref), lowerBound: 1, stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 160, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
1+
! Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
2+
! See https://llvm.org/LICENSE.txt for license information.
3+
! SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
4+
5+
! REQUIRES: llvm-19
6+
! RUN: %flang -g -S -emit-llvm %s -o - | FileCheck %s
7+
8+
! CHECK: #dbg_value(ptr %array, [[ARRAYDL:![0-9]+]], !DIExpression()
9+
! CHECK: #dbg_declare(ptr %"array$sd", [[ARRAY:![0-9]+]], !DIExpression()
10+
! CHECK-LABEL: distinct !DICompileUnit(language: DW_LANG_Fortran90,
11+
! CHECK: [[ARRAY]] = !DILocalVariable(name: "array"
12+
! CHECK-SAME: arg: 3
13+
! CHECK-SAME: type: [[TYPE:![0-9]+]])
14+
! CHECK: [[TYPE]] = !DICompositeType(tag: DW_TAG_array_type, baseType: {{![0-9]+}}, size: 32, align: 32, elements: [[ELEM:![0-9]+]], dataLocation: [[ARRAYDL]])
15+
! CHECK: [[ELEM]] = !{[[ELEM1:![0-9]+]], [[ELEM2:![0-9]+]]}
16+
! CHECK: [[ELEM1]] = !DISubrange(count: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 88, DW_OP_deref), lowerBound: 1, stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 112, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
17+
! CHECK: [[ELEM2]] = !DISubrange(count: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 136, DW_OP_deref), lowerBound: 1, stride: !DIExpression(DW_OP_push_object_address, DW_OP_plus_uconst, 160, DW_OP_deref, DW_OP_push_object_address, DW_OP_plus_uconst, 24, DW_OP_deref, DW_OP_mul))
1318

1419
subroutine show (message, array)
1520
character (len=*) :: message

test/debug_info/assumed_size_array.f90

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
1-
!RUN: %flang -g -S -emit-llvm %s -o - | FileCheck %s
1+
! Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
2+
! See https://llvm.org/LICENSE.txt for license information.
3+
! SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
24

3-
!CHECK: call void @llvm.dbg.declare(metadata ptr %array1, metadata [[ARRAY1:![0-9]+]], metadata !DIExpression())
4-
!CHECK: call void @llvm.dbg.declare(metadata ptr %array2, metadata [[ARRAY2:![0-9]+]], metadata !DIExpression())
5-
!CHECK: [[TYPE1:![0-9]+]] = !DICompositeType(tag: DW_TAG_array_type, baseType: {{![0-9]+}}, align: 32, elements: [[ELEMS1:![0-9]+]])
6-
!CHECK: [[ELEMS1]] = !{[[ELEM11:![0-9]+]]}
7-
!CHECK: [[ELEM11]] = !DISubrange(lowerBound: 1)
8-
!CHECK: [[TYPE2:![0-9]+]] = !DICompositeType(tag: DW_TAG_array_type, baseType: {{![0-9]+}}, align: 32, elements: [[ELEMS2:![0-9]+]])
9-
!CHECK: [[ELEMS2]] = !{[[ELEM21:![0-9]+]], [[ELEM22:![0-9]+]]}
10-
!CHECK: [[ELEM21]] = !DISubrange(lowerBound: 4, upperBound: 9)
11-
!CHECK: [[ELEM22]] = !DISubrange(lowerBound: 10)
12-
!CHECK: [[ARRAY1]] = !DILocalVariable(name: "array1"
13-
!CHECK-SAME: type: [[TYPE1]]
14-
!CHECK: [[ARRAY2]] = !DILocalVariable(name: "array2"
15-
!CHECK-SAME: type: [[TYPE2]]
5+
! REQUIRES: llvm-19
6+
! RUN: %flang -g -S -emit-llvm %s -o - | FileCheck %s
7+
8+
! CHECK: #dbg_declare(ptr %array1, [[ARRAY1:![0-9]+]], !DIExpression()
9+
! CHECK: #dbg_declare(ptr %array2, [[ARRAY2:![0-9]+]], !DIExpression()
10+
! CHECK: [[TYPE1:![0-9]+]] = !DICompositeType(tag: DW_TAG_array_type, baseType: {{![0-9]+}}, align: 32, elements: [[ELEMS1:![0-9]+]])
11+
! CHECK: [[ELEMS1]] = !{[[ELEM11:![0-9]+]]}
12+
! CHECK: [[ELEM11]] = !DISubrange(lowerBound: 1)
13+
! CHECK: [[TYPE2:![0-9]+]] = !DICompositeType(tag: DW_TAG_array_type, baseType: {{![0-9]+}}, align: 32, elements: [[ELEMS2:![0-9]+]])
14+
! CHECK: [[ELEMS2]] = !{[[ELEM21:![0-9]+]], [[ELEM22:![0-9]+]]}
15+
! CHECK: [[ELEM21]] = !DISubrange(lowerBound: 4, upperBound: 9)
16+
! CHECK: [[ELEM22]] = !DISubrange(lowerBound: 10)
17+
! CHECK: [[ARRAY1]] = !DILocalVariable(name: "array1"
18+
! CHECK-SAME: type: [[TYPE1]]
19+
! CHECK: [[ARRAY2]] = !DILocalVariable(name: "array2"
20+
! CHECK-SAME: type: [[TYPE2]]
1621
subroutine sub (array1, array2)
1722
integer :: array1 (*)
1823
integer :: array2 (4:9, 10:*)

test/debug_info/byval-name.f90

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,27 @@
1-
!RUN: %flang -g -S -emit-llvm %s -o - | FileCheck %s
1+
! Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
2+
! See https://llvm.org/LICENSE.txt for license information.
3+
! SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
24

3-
!Verify the IR contains _V_ (flang)convention naming and the
4-
! operation using them are well formed.
5-
!CHECK: sub_(i32 [[PREFIXED_ARG_NAME:%_V_arg_abc.arg]])
6-
!CHECK: [[PREFIXED_LOCAL_NAME:%_V_arg_abc.addr]] = alloca i32, align 4
7-
!CHECK: call void @llvm.dbg.declare(metadata ptr [[PREFIXED_LOCAL_NAME]]
8-
!CHECK: store i32 [[PREFIXED_ARG_NAME]], ptr [[PREFIXED_LOCAL_NAME]], align 4
5+
! REQUIRES: llvm-19
6+
! RUN: %flang -g -S -emit-llvm %s -o - | FileCheck %s
97

10-
!Verify the DebugInfo metadata contains prefix _V_ truncated names.
11-
!CHECK: DILocalVariable(name: "arg_abc"
12-
!CHECK-NOT: DILocalVariable(name: "_V_arg_abc"
8+
! Verify that the IR contains "_V_" (Flang's naming convention for byval
9+
! parameters) and that the operation using them are well-formed.
10+
11+
! CHECK: sub_(i32 [[PREFIXED_ARG_NAME:%_V_arg_abc.arg]])
12+
! CHECK: [[PREFIXED_LOCAL_NAME:%_V_arg_abc.addr]] = alloca i32, align 4
13+
! CHECK: #dbg_declare(ptr [[PREFIXED_LOCAL_NAME]]
14+
! CHECK: store i32 [[PREFIXED_ARG_NAME]], ptr [[PREFIXED_LOCAL_NAME]], align 4
15+
16+
! Verify that the names in the DebugInfo metadata have dropped the "_V_" prefix.
17+
18+
! CHECK-NOT: DILocalVariable(name: "_V_arg_abc"
19+
! CHECK-COUNT-2: DILocalVariable(name: "arg_abc"
20+
! CHECK-NOT: DILocalVariable(name: "_V_arg_abc"
1321

1422
subroutine sub(arg_abc)
15-
integer,value :: arg_abc
16-
integer :: abc_local
17-
abc_local = arg_abc
18-
print*, arg_abc
23+
integer, value :: arg_abc
24+
integer :: abc_local
25+
abc_local = arg_abc
26+
print *, arg_abc
1927
end subroutine

0 commit comments

Comments
 (0)