<div dir="ltr">Hi Gary,<div><br></div><div>Thank you for quick response! </div><div>Since I was working/investigating this, so before filing this bug could you please help me clarify a couple of things? WRT to flang.</div><div><br></div><div>Are their Blocks(Lexical Blocks) even present at ILM or ILI level, because consider the case of *value* removed(pass by reference) flang also emit *DW_TAG_lexical_block* in this case also.</div><div><br></div><div>And these lexical blocks have nearly ranges as the parent subroutine. To be exact high_pc are same, but low_pc of lexical block corresponds to prologue end of the subroutine.</div><div><br></div><div>0x0000002f:   DW_TAG_subprogram<br>                DW_AT_low_pc    (0x0000000000201ae0)<br>                DW_AT_high_pc   (0x0000000000201b75)<br></div><div>0x000000**:   DW_TAG_lexical_block<br>                DW_AT_low_pc    (0x0000000000201a**) -- marking prologue end of subroutine<br>                DW_AT_high_pc   (0x0000000000201b75)<br></div><div><br></div><div>Correct me if I'm wrong here, Fortran Doesn't have lexical scoping? If it doesn't have we may have to strip out the *Lexical Block* creation part, in debug info.</div><div><br></div><div>Regarding bug filing should we create a specific bug WRT to *Lexical block* or a something more generic *unable to retrieve formal parameter in case of pass  by value arguments* or third option will be to keep both of these issues orthogonal to each other.</div><div><br></div><div>Please share your thoughts on this.</div><div><br></div><div>Thank You,</div><div>Sourabh Singh Tomar.</div><div><br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Mar 25, 2020 at 3:47 AM Gary Klimowicz <<a href="mailto:gklimowicz@nvidia.com">gklimowicz@nvidia.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-US">
<div class="gmail-m_5449990642973783547WordSection1">
<p class="MsoNormal">Hi, Sourabh.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">We've confirmed the bug. It can be worked around by removing the VALUE attribute.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Can you file an issue for us on the (current) Flang GitHub site?<u></u><u></u></p>
<p class="MsoNormal"><a href="https://github.com/flang-compiler/flang/issues" target="_blank">https://github.com/flang-compiler/flang/issues</a><u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Thank you.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On 3/24/20, 12:52 PM, "flang-dev on behalf of Sourabh Singh Tomar via flang-dev" <<a href="mailto:flang-dev-bounces@lists.llvm.org" target="_blank">flang-dev-bounces@lists.llvm.org</a> on behalf of
<a href="mailto:flang-dev@lists.llvm.org" target="_blank">flang-dev@lists.llvm.org</a>> wrote:<u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<table border="1" cellpadding="0" style="background:rgb(255,235,156)">
<tbody>
<tr>
<td style="padding:0.75pt">
<p class="MsoNormal"><b><span style="font-size:7.5pt;font-family:Verdana,sans-serif;color:black">External email: Use caution opening links or attachments</span></b><span style="font-size:7.5pt;font-family:Verdana,sans-serif;color:black">
</span><u></u><u></u></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">Hello Everyone, <u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">For a typical Fortran program compiled with flang with -g(debuginfo enabled), I'm noticing *DW_TAG_lexical_block* is getting created as child of the *DW_TAG_subprogram*.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">As a consequence of this debuggers like GDB  is not able to show the arguments of the subprogram.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Program snippet -<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">subroutine sub(foo)<br>
        integer, value :: foo<br>
        print*,foo<br>
      end subroutine<br>
program main<br>
      interface<br>
        subroutine sub(a)<br>
              integer, value :: a<br>
         end subroutine<br>
      end interface<br>
             call sub(11)<br>
 end program<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">--------------------------------<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Snippet from GDB --<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Breakpoint 1, sub () at test.f90:1<br>
1             subroutine sub(foo)<br>
(gdb) info args<br>
No arguments.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">-----------------------------------<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Furthermore, *DW_TAG_formal_parameter* is created as a child of this *DW_TAG_lexical_scope*. Hence GDB is showing arguments of the subprogram as locals variables. <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Snippet DWARF--<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">0x0000002f:   DW_TAG_subprogram<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">DW_AT_name      ("sub")<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> DW_AT_low_pc    (0x00000000004011b0)<br>
 DW_AT_high_pc   (0x0000000000401245<br>
.....<br>
0x00000049:     DW_TAG_lexical_block<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> DW_AT_low_pc    (0x00000000004011b0)<br>
 DW_AT_high_pc   (0x0000000000401245<br>
 ....<br>
0x0000005a:       DW_TAG_formal_parameter<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  DW_AT_name      ("foo")  <u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">0x0000005a:       DW_TAG_variable<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  DW_AT_name      ("foo")  <u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal">...<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">---------------------------------------<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Is this behavior intended ?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Anyone working on this area, Please share your understanding on this!<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">*Please note here that same hierarchy of debug info is also present at LLVM IR level, hence the final DWARF is shared here. <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thank You,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Sourabh.<u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>

<div>
<hr>
</div>
<div>This email message is for the sole use of the intended recipient(s) and may 
contain confidential information.  Any unauthorized review, use, disclosure 
or distribution is prohibited.  If you are not the intended recipient, 
please contact the sender by reply email and destroy all copies of the original 
message. </div>
<div>
<hr>
</div>
</div>

</blockquote></div>