Skip to content

[flang][debug] Wrong function signature with CHARACTER arguments. #112886

Open
@abidh

Description

@abidh

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.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions