Open
Description
Consider the following example code.
subroutine foo(str1)
character(len=5) :: str1
print *, str1
end subroutine
program test
integer(8) :: length
length = 5
call foo('flang')
end program test
When stopped at line 3 (print *, str1), here is what GDB shows
(gdb) info args
No arguments.
(gdb) ptype foo
type = void (void)
(gdb) info locals
str1 = 'flang'
The debug info is describing str1
as local and not argument. This makes function type wrong too.
This seems to happen because our detection of arguments depends on the memRef
of the fir.declare being directly pointing at the BlockArgument
. If there is any intermediate nodes like in this case (fir.unboxchar, fir.emboxchar
) then this detection fails.