This PR generates dwarf to extract the information about the arrays from
descriptor. The DWARF needs the offset of the fields like `lower_bound`
and `extent`. The getComponentOffset has been added to calculate
them which pushes the issue of host and target data size into
getDescFieldTypeModel.
As we use data layout now, some tests needed to be adjusted to have a
dummy data layout to avoid failure.
With this change in place, GDB is able show the assumed shape arrays
correctly.
subroutine ff(n, m, arr)
integer n, m
integer :: arr(:, :)
print *, arr
do i = 1, n
do j = 1, m
arr(j, i) = (i * 5) + j + 10
end do
end do
print *, arr
end subroutine ff
Breakpoint 1, ff (n=4, m=3, arr=...) at test1.f90:13
13 print *, arr
(gdb) p arr
$1 = ((6, 7, 8, 9) (11, 12, 13, 14) (16, 17, 18, 19))
(gdb) ptype arr
type = integer (4,3)
(gdb) c
Continuing.
6 7 8 9 11 12 13 14 16 17 18 19
24 lines
760 B
Plaintext
24 lines
760 B
Plaintext
|
|
// RUN: fir-opt --add-debug-info --mlir-print-debuginfo %s | FileCheck %s
|
|
// REQUIRES: system-linux
|
|
|
|
// Test that there is only one FileAttribute generated for multiple functions
|
|
// in the same file.
|
|
module attributes {dlti.dl_spec = #dlti.dl_spec<>} {
|
|
func.func @_QPs1() {
|
|
return loc(#loc2)
|
|
} loc(#loc1)
|
|
func.func @_QPs2() {
|
|
return loc(#loc2)
|
|
} loc(#loc1)
|
|
func.func @_QQmain() {
|
|
return loc(#loc3)
|
|
} loc(#loc1)
|
|
} loc(#loc)
|
|
#loc = loc("/home/user01/llvm-project/build_release/simple.f90":0:0)
|
|
#loc1 = loc("/home/user01/llvm-project/build_release/simple.f90":1:1)
|
|
#loc2 = loc("/home/user01/llvm-project/build_release/simple.f90":2:1)
|
|
#loc3 = loc("/home/user01/llvm-project/build_release/simple.f90":3:1)
|
|
|
|
// CHECK-COUNT-1: #llvm.di_file
|