<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Mon, Feb 27, 2017 at 10:00 AM Victor Leschuk <<a href="mailto:vleschuk@accesssoftek.com">vleschuk@accesssoftek.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000" class="gmail_msg">
    <p class="gmail_msg"><br class="gmail_msg">
    </p>
    <br class="gmail_msg">
    <div class="m_-7636712434836838175moz-cite-prefix gmail_msg">On 02/27/2017 08:04 PM, David Blaikie
      wrote:<br class="gmail_msg">
    </div>
    <blockquote type="cite" class="gmail_msg">
      
      <div dir="ltr" class="gmail_msg">Skipping these values doesn't seem to be correct -
        in the case of flag_present, I think the value is still rendered
        in the dump, is it not?</div>
    </blockquote></div><div bgcolor="#FFFFFF" text="#000000" class="gmail_msg">
    Do you mean that the value is somehow mentioned in .debug_info
    section? It is not.</div></blockquote><div><br>Looks to me like it is:<br><br>dumping debug info for this code: void f1() { }<br><br>produces this:<br><br><font face="monospace">  .debug_abbrev contents:<br>  ...<br></font><div><font face="monospace">  [2] DW_TAG_subprogram   DW_CHILDREN_no</font></div><div><font face="monospace">          ...</font></div><div><font face="monospace">          DW_AT_external  DW_FORM_flag_present<br><br>  .debug_info contents:<br>  ...<br>  0x0000002a:   DW_TAG_subprogram [2]<br>                  ...<br>                  DW_AT_external [DW_FORM_flag_present] (true)</font></div><br></div><div>I would expect similar behavior for const_value - that the attribute and its constant value is printed in the debug_info dump.<br><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000" class="gmail_msg"><br class="gmail_msg">
    <blockquote type="cite" class="gmail_msg">
      <div dir="ltr" class="gmail_msg"> I would expect the same for implicit_const values.
        (also, this needs test coverage either way)</div>
    </blockquote></div><div bgcolor="#FFFFFF" text="#000000" class="gmail_msg">
    Yes, you are correct. I will create tests when we decide what's
    right behavior here. <br class="gmail_msg">
    <br class="gmail_msg">
    I think skipping is correct here: we are dumping .debug_info data
    based on attributes stored in AbbrevDecl, this code was based on
    assumption that every attribute has representation in .debug_info
    section, that was before implicit_const form was introduced.</div><div bgcolor="#FFFFFF" text="#000000" class="gmail_msg"><br class="gmail_msg">
    <blockquote type="cite" class="gmail_msg"><br class="gmail_msg">
      <div class="gmail_quote gmail_msg">
        <div dir="ltr" class="gmail_msg">On Sat, Feb 25, 2017 at 5:27 AM Victor Leschuk
          via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a>>
          wrote:<br class="gmail_msg">
        </div>
        <blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author:
          vleschuk<br class="gmail_msg">
          Date: Sat Feb 25 07:15:57 2017<br class="gmail_msg">
          New Revision: 296253<br class="gmail_msg">
          <br class="gmail_msg">
          URL: <a href="http://llvm.org/viewvc/llvm-project?rev=296253&view=rev" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=296253&view=rev</a><br class="gmail_msg">
          Log:<br class="gmail_msg">
          [DebugInfo] Skip implicit_const attributes when dumping
          .debug_info. NFC.<br class="gmail_msg">
          <br class="gmail_msg">
          When dumping .debug_info section we loop through all
          attributes mentioned in<br class="gmail_msg">
          .debug_abbrev section and dump values using
          DWARFFormValue::extractValue().<br class="gmail_msg">
          We need to skip implicit_const attributes here as their values
          are not<br class="gmail_msg">
          really located in .debug_info but directly in .debug_abbrev.
          This patch fixes<br class="gmail_msg">
          triggered assert() in DWARFFormValue::extractValue() caused by
          trying to<br class="gmail_msg">
          access implicit_const values from .debug_info.<br class="gmail_msg">
          <br class="gmail_msg">
          Modified:<br class="gmail_msg">
              llvm/trunk/lib/DebugInfo/DWARF/DWARFDie.cpp<br class="gmail_msg">
          <br class="gmail_msg">
          Modified: llvm/trunk/lib/DebugInfo/DWARF/DWARFDie.cpp<br class="gmail_msg">
          URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFDie.cpp?rev=296253&r1=296252&r2=296253&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFDie.cpp?rev=296253&r1=296252&r2=296253&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
          --- llvm/trunk/lib/DebugInfo/DWARF/DWARFDie.cpp (original)<br class="gmail_msg">
          +++ llvm/trunk/lib/DebugInfo/DWARF/DWARFDie.cpp Sat Feb 25
          07:15:57 2017<br class="gmail_msg">
          @@ -329,6 +329,12 @@ void DWARFDie::dump(raw_ostream &OS,
          uns<br class="gmail_msg">
          <br class="gmail_msg">
                   // Dump all data in the DIE for the attributes.<br class="gmail_msg">
                   for (const auto &AttrSpec :
          AbbrevDecl->attributes()) {<br class="gmail_msg">
          +          if (AttrSpec.Form == DW_FORM_implicit_const) {<br class="gmail_msg">
          +            // We are dumping .debug_info section ,<br class="gmail_msg">
          +            // implicit_const attribute values are not really
          stored here,<br class="gmail_msg">
          +            // but in .debug_abbrev section. So we just skip
          such attrs.<br class="gmail_msg">
          +            continue;<br class="gmail_msg">
          +          }<br class="gmail_msg">
                     dumpAttribute(OS, *this, &offset,
          AttrSpec.Attr, AttrSpec.Form,<br class="gmail_msg">
                                   Indent);<br class="gmail_msg">
                   }<br class="gmail_msg">
          <br class="gmail_msg">
          <br class="gmail_msg">
          _______________________________________________<br class="gmail_msg">
          llvm-commits mailing list<br class="gmail_msg">
          <a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br class="gmail_msg">
          <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="gmail_msg">
        </blockquote>
      </div>
    </blockquote>
    <br class="gmail_msg">
    </div><div bgcolor="#FFFFFF" text="#000000" class="gmail_msg"><pre class="m_-7636712434836838175moz-signature gmail_msg" cols="72">-- 
Best Regards,
Victor</pre>
  </div></blockquote></div></div>