https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101826

--- Comment #3 from Abdul Basit Ijaz <abdul.b.ijaz at intel dot com> ---
Using gfortran 14.1.0 result in debug info similar to @rguenth comment. This
debug information still result in <incomplete type> in gdb. Can someone please
confirm about missing DWARF here as this is causing the incomplete type. If
issue will be fixed in GFortran ?. 

0x0000011f:   DW_TAG_structure_type
                DW_AT_declaration       (true)

GFortran document for the argument passing convention of CHAR TYPE arrays also
does not mention about the structure type. In the provided reproducer char type
array has only issue in the subroutine and works fine in the main. So some
details are missing in passing "Char type" as the arguments.

https://gcc.gnu.org/onlinedocs/gfortran/Argument-passing-conventions.html

"arr" character type array in main:
0x000000ae:     DW_TAG_variable
                  DW_AT_name    ("arr")
                  DW_AT_decl_file       ("test.f90")
                  DW_AT_decl_line       (13)
                  DW_AT_decl_column     (0x1f)
                  DW_AT_type    (0x000000bf "string []")
                  DW_AT_location        (DW_OP_fbreg -80)

0x000000bf:   DW_TAG_array_type
                DW_AT_type      (0x000000cf "string ")
                DW_AT_sibling   (0x000000cf)

0x000000c8:     DW_TAG_subrange_type
                  DW_AT_type    (0x0000002f "integer(kind=8)")
                  DW_AT_upper_bound     (5)


0x000000cf:   DW_TAG_string_type
                DW_AT_byte_size (0x0a)

"arr1" char type array as a subroutine argument:

0x000000f3:     DW_TAG_formal_parameter
                  DW_AT_name    ("arr1")
                  DW_AT_type    (0x0000011f "structure ")
                  DW_AT_artificial      (true)
                  DW_AT_location        (DW_OP_fbreg -648, DW_OP_deref)

0x0000011f:   DW_TAG_structure_type
                DW_AT_declaration       (true)

0x00000120:   DW_TAG_array_type
                DW_AT_type      (0x00000133 "string ")
                DW_AT_sibling   (0x00000133)

0x00000129:     DW_TAG_subrange_type
                  DW_AT_type    (0x0000002f "integer(kind=8)")
                  DW_AT_upper_bound     (0x0000010e)

GDB Output:

Breakpoint 2, MAIN__ () at test.f90:17
17        call str_arr (arr)
(gdb) pt arr
type = character*10 (5)
(gdb) p arr
$1 = ('fortranarr', 'fortranarr', 'fortranarr', 'fortranarr', 'fortranarr')
(gdb) c
Continuing.

Breakpoint 1, str_arr (arr1=<incomplete type>, _arr1=10) at test.f90:4
4         print *, arr1
(gdb) pt arr1
type = Type
End Type
(gdb) p arr1
$2 = <incomplete type>
(gdb) info address arr1
Symbol "arr1" is a complex DWARF expression:
     0: DW_OP_fbreg -648
     3: DW_OP_deref
  • [Bug fortran/101826] GFORTRAN: ... abdul.b.ijaz at intel dot com via Gcc-bugs

Reply via email to