<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/92391>92391</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
DW_AT_NAME is incorrect for Fortran functions compiled by flang
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang:codegen
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DavidSpickett
</td>
</tr>
</table>
<pre>
I compiled this example:
```
integer function my_square(x)
implicit none
integer, intent(in) :: x
my_square = x * x
end function my_square
program hello
print *, my_square(2)
end program hello
```
Because I wanted to see what lldb would think of it, but it couldn't break on `my_square` when I compiled it with flang, but it could when I used gfortran.
Looking at the DWARF, the DW_AT_NAME for flang includes an `_` on the end.
Gfortran 9.4.0:
```
0x000000bc: DW_TAG_subprogram
DW_AT_external (true)
DW_AT_name ("my_square")
DW_AT_decl_file ("/tmp/test.f90")
DW_AT_decl_line (1)
DW_AT_linkage_name ("my_square_")
DW_AT_type (0x0000006d "integer(kind=4)")
DW_AT_low_pc (0x000000000000091c)
DW_AT_high_pc (0x0000000000000948)
DW_AT_frame_base (DW_OP_call_frame_cfa)
DW_AT_GNU_all_call_sites (true)
```
Flang (built from 7d81062352f75cf328d91d4900af52c1842b950e):
```
0x0000002a: DW_TAG_subprogram
DW_AT_low_pc (0x0000000000001fa4)
DW_AT_high_pc (0x0000000000001fc0)
DW_AT_frame_base (DW_OP_reg31 WSP)
DW_AT_linkage_name ("my_square_")
DW_AT_name ("my_square_")
DW_AT_decl_file ("/tmp/test.f90")
DW_AT_decl_line (1)
DW_AT_type (0x0000009c "integer")
DW_AT_external (true)
```
I think flang is mistakenly using the DW_AT_linkage_name for DW_AT_name.
The workaround is to break on `my_square_`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0Vt-PozYQ_mucl9FFYPIDHnjINc1qpfZ66m21j8jYA7gxNrXNJfvfVwY2v5ptTpVqrdgQZr4ZvvlmJsw5WWvEnCw_k-V2xnrfGJtv2XcpvnWS79H7WWnEW_4M3LSdVCjAN9IBHlnbKSTJhkRbEm3IKpr-hlupPdZooeo199JoaN8K91fPLBKaHgnNRjOQbacklx600Th9BwCTO6E_DR-1JzSVmtAMQsBkA8cp6snjhA8k2cIRCD0ZoRb38rgA6KypLWuhQaXMO2ZnpfYBJ2RxmT49pR-Q7_jecDFePyNnvUN4hgPTPtBowCHCoWEelBIlHEyvBnb1HkwF0ofAZe9BeuDhmSZ07aG0yPZgNJBVdE5rFcGhQQ0XdZIeDtI3UCmm61usd-veoYC6MtZbpueXCf9izF7qGpgH3yBsXze_7wLKeFNsXoovm19_hsrYMQJIzVUv0AEbcitCTkYP9qjFFfbTFBCy-WIefSSi6BgNp-Sh5BCivmyeCteXE-lTqcZs8OjRaqYACE297fGsspsz2mvW4nhPaEoovSjxucKTrUCuikoqnGwJ3fm2C1d0fl5l0Uc-SurBJ36QjJJ6z2ock7rJp7gCv-vu37rzu7zTthJAKD21UrqXWpBkuwhYDxGVORQdv4SbThbzB66NrJsPfBfpA9_KshaLkrmBhe1r8dvXgjOlpge8Yg8Anr78UQT7wclJj-4fcrjbnrtBwoSmZS-Vh8qaFtYijaMVTZa0Wi95ldBUZLFYZFHEqiXlcbqgZbaMBuQHEqYsSPgjAf9bBa5rOp64Yotbub2zftecR7fmF0TDSTkj3xbrJIbXb19vfa5Eeq9zfkCp_1Hg_3sDDh10wVzGr5rnUX6n4fNDYnuepvw0Nx200nm2R63eoHdh6J6H7BXpYdieebwaqS8NwsHYPbOm1yKAenN_V4TBPJ-JPBFZkrEZ5vE6XqarOKN01uQJj9IkTlcoqnWUIheswjWuF-WSppyuy5nMaUQX0TJexTS0wLwsKVtWgmWx4AlbrMgiwpZJNVfqezs3tp5J53rMM5pk8UyxEpUbfnBQOq6mZMONwBp14Hm5ndk8eH4q-9qRRaSk8-6M5aVXmF8sIOnC5jHWIvcDQbtpt7zvfHdeieXbyPmstypvvO9caFy6I3RXS9_05ZybltBdiDb9-9RZ8ydyT-hueA1H6G54k78DAAD__5NKpDI">