<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>Done: <a class="moz-txt-link-freetext" href="https://reviews.llvm.org/D30448">https://reviews.llvm.org/D30448</a><br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 02/27/2017 10:32 PM, Victor Leschuk
      via llvm-commits wrote:<br>
    </div>
    <blockquote
      cite="mid:4a5b5004-1e02-ff44-22a0-a702e22956e5@accesssoftek.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <p>Ok than, will fix, provide tests and submit to phab.<br>
      </p>
      <br>
      <div class="moz-cite-prefix">On 02/27/2017 10:21 PM, Eric
        Christopher wrote:<br>
      </div>
      <blockquote
cite="mid:CALehDX4QoE5ry2ueaX+D1nSwUTQHP9Z9wkK60sc1096PtvWJDg@mail.gmail.com"
        type="cite">
        <div dir="ltr">FWIW I agree completely with Dave here. We should
          show the constness of the data explicitly in the dump.
          <div><br>
          </div>
          <div>Thanks!</div>
          <div><br>
          </div>
          <div>-eric</div>
        </div>
        <br>
        <div class="gmail_quote">
          <div dir="ltr">On Mon, Feb 27, 2017 at 11:13 AM David Blaikie
            <<a moz-do-not-send="true"
              href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>>
            wrote:<br>
          </div>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div dir="ltr" class="gmail_msg">I tend to think it's more
              legible if we include the values there, even if no bytes
              were required to produce them. I don't generally look at
              the abbreviations when reading a dump & expect to see
              the data in the debug_info/debug_types output.<br
                class="gmail_msg">
              <br class="gmail_msg">
              ( <a moz-do-not-send="true"
                class="m_3395721182541375228GWVZpf
                m_3395721182541375228gW gmail_msg"
                id="m_3395721182541375228IloFPc-3"
                href="mailto:aprantl@apple.com" target="_blank">+Adrian
                Prantl</a>  <a moz-do-not-send="true"
                class="m_3395721182541375228GWVZpf
                m_3395721182541375228gW gmail_msg"
                id="m_3395721182541375228IloFPc-2"
                href="mailto:echristo@gmail.com" target="_blank">+Eric
                Christopher</a> in case they've got thoughts on the
              subject)</div>
            <div dir="ltr" class="gmail_msg"><br class="gmail_msg">
              <br class="gmail_msg">
              <div class="gmail_quote gmail_msg">
                <div dir="ltr" class="gmail_msg">On Mon, Feb 27, 2017 at
                  11:09 AM Victor Leschuk <<a moz-do-not-send="true"
                    href="mailto:vleschuk@accesssoftek.com"
                    class="gmail_msg" target="_blank">vleschuk@accesssoftek.com</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">
                  <div bgcolor="#FFFFFF" text="#000000"
                    class="gmail_msg">
                    <p class="gmail_msg">Yeah, I see, I was wrong. I
                      agree that we need to make behavior uniform here.
                      However I still think we shouldn't include the
                      data which is not really present into dump. It
                      seems more logical for me to not print
                      flag_present values either.</p>
                    <p class="gmail_msg">What do you think?</p>
                  </div>
                  <div bgcolor="#FFFFFF" text="#000000"
                    class="gmail_msg">
                    <div
                      class="m_3395721182541375228m_-1917743091071114938moz-cite-prefix
                      gmail_msg">On 02/27/2017 09:54 PM, David Blaikie
                      wrote:<br class="gmail_msg">
                    </div>
                    <blockquote type="cite" class="gmail_msg">
                      <div dir="ltr" class="gmail_msg"><br
                          class="gmail_msg">
                        <br class="gmail_msg">
                        <div class="gmail_quote gmail_msg">
                          <div dir="ltr" class="gmail_msg">On Mon, Feb
                            27, 2017 at 10:30 AM Victor Leschuk <<a
                              moz-do-not-send="true"
                              href="mailto:vleschuk@accesssoftek.com"
                              class="gmail_msg" target="_blank">vleschuk@accesssoftek.com</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">
                            <div bgcolor="#FFFFFF" text="#000000"
                              class="gmail_msg">
                              <p class="gmail_msg">I think flag_present
                                and implicit_const attributes shouldn't
                                be treated as similar here: flag_present
                                attributes physically do have a record
                                in .debug_info section,</p>
                            </div>
                          </blockquote>
                          <div class="gmail_msg"><br class="gmail_msg">
                            I think one of us is confused, because my
                            understanding is that flag_present
                            attributes do not have any bit/bytes in the
                            debug_info representation.<br
                              class="gmail_msg">
                            <br class="gmail_msg">
                            To take the same example as before and look
                            at the assembly:<br class="gmail_msg">
                            <br class="gmail_msg">
                            this is the debug_info assembly for that
                            subprogram:<br class="gmail_msg">
                            <font class="gmail_msg" face="monospace"><br
                                class="gmail_msg">
                            </font>
                            <div class="gmail_msg"><font
                                class="gmail_msg" face="monospace">     
                                  .byte   2                       #
                                Abbrev [2] 0x2a:0x19 DW_TAG_subprogram</font></div>
                            <div class="gmail_msg"><font
                                class="gmail_msg" face="monospace">     
                                  .quad   .Lfunc_begin0           #
                                DW_AT_low_pc</font></div>
                            <div class="gmail_msg"><font
                                class="gmail_msg" face="monospace">     
                                  .long   .Lfunc_end0-.Lfunc_begin0 #
                                DW_AT_high_pc</font></div>
                            <div class="gmail_msg"><font
                                class="gmail_msg" face="monospace">     
                                  .byte   1                       #
                                DW_AT_frame_base</font></div>
                            <div class="gmail_msg"><font
                                class="gmail_msg" face="monospace">     
                                  .byte   86</font></div>
                            <div class="gmail_msg"><font
                                class="gmail_msg" face="monospace">     
                                  .long   .Linfo_string3          #
                                DW_AT_linkage_name</font></div>
                            <div class="gmail_msg"><font
                                class="gmail_msg" face="monospace">     
                                  .long   .Linfo_string4          #
                                DW_AT_name</font></div>
                            <div class="gmail_msg"><font
                                class="gmail_msg" face="monospace">     
                                  .byte   1                       #
                                DW_AT_decl_file</font></div>
                            <div class="gmail_msg"><font
                                class="gmail_msg" face="monospace">     
                                  .byte   1                       #
                                DW_AT_decl_line</font></div>
                            <div class="gmail_msg"><font
                                class="gmail_msg" face="monospace">     
                                                                  #
                                DW_AT_external</font></div>
                            <div class="gmail_msg"><font
                                class="gmail_msg" face="monospace">     
                                  .byte   0                       # End
                                Of Children Mark</font></div>
                            <br class="gmail_msg">
                            Note that no bytes were produced for the
                            DW_AT_external (using DW_FORM_flag_present
                            in the abbrev) attribute.<br
                              class="gmail_msg">
                            <br class="gmail_msg">
                            From the DWARF4 spec:<br class="gmail_msg">
                            <br class="gmail_msg">
                            "A flag is represented explicitly as a
                            single byte of data (DW_FORM_flag) or
                            implicitly (DW_FORM_flag_present). In the
                            first case, if the flag has value zero, it
                            indicates the absence of the attribute; if
                            the flag has a non-zero value, it indicates
                            the presence of the attribute. In the second
                            case, the attribute is implicitly indicated
                            as present, and no value is encoded in the
                            debugging information entry itself."<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">
                            <div bgcolor="#FFFFFF" text="#000000"
                              class="gmail_msg">
                              <p class="gmail_msg"> while implicit_const
                                attributes are not physically mentioned
                                there.  Printing implicit_const values
                                when dumping .debug_info can be more
                                convenient for reader but it will
                                actually violate the definition of dump.
                                When dumping section contents we expect
                                to see what is actually there, don't we?<br
                                  class="gmail_msg">
                              </p>
                            </div>
                            <div bgcolor="#FFFFFF" text="#000000"
                              class="gmail_msg"> <br class="gmail_msg">
                              <div
class="m_3395721182541375228m_-1917743091071114938m_-7804286437102967308moz-cite-prefix
                                gmail_msg">On 02/27/2017 09:04 PM, David
                                Blaikie wrote:<br class="gmail_msg">
                              </div>
                              <blockquote type="cite" class="gmail_msg">
                                <div dir="ltr" class="gmail_msg"><br
                                    class="gmail_msg">
                                  <br class="gmail_msg">
                                  <div class="gmail_quote gmail_msg">
                                    <div dir="ltr" class="gmail_msg">On
                                      Mon, Feb 27, 2017 at 10:00 AM
                                      Victor Leschuk <<a
                                        moz-do-not-send="true"
                                        href="mailto:vleschuk@accesssoftek.com"
                                        class="gmail_msg"
                                        target="_blank">vleschuk@accesssoftek.com</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">
                                      <div bgcolor="#FFFFFF"
                                        text="#000000" class="gmail_msg">
                                        <p class="gmail_msg"><br
                                            class="gmail_msg">
                                        </p>
                                        <br class="gmail_msg">
                                        <div
class="m_3395721182541375228m_-1917743091071114938m_-7804286437102967308m_-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 class="gmail_msg"><br
                                        class="gmail_msg">
                                      Looks to me like it is:<br
                                        class="gmail_msg">
                                      <br class="gmail_msg">
                                      dumping debug info for this code:
                                      void f1() { }<br class="gmail_msg">
                                      <br class="gmail_msg">
                                      produces this:<br
                                        class="gmail_msg">
                                      <br class="gmail_msg">
                                      <font class="gmail_msg"
                                        face="monospace">  .debug_abbrev
                                        contents:<br class="gmail_msg">
                                          ...<br class="gmail_msg">
                                      </font>
                                      <div class="gmail_msg"><font
                                          class="gmail_msg"
                                          face="monospace">  [2]
                                          DW_TAG_subprogram  
                                          DW_CHILDREN_no</font></div>
                                      <div class="gmail_msg"><font
                                          class="gmail_msg"
                                          face="monospace">          ...</font></div>
                                      <div class="gmail_msg"><font
                                          class="gmail_msg"
                                          face="monospace">         
                                          DW_AT_external
                                           DW_FORM_flag_present<br
                                            class="gmail_msg">
                                          <br class="gmail_msg">
                                            .debug_info contents:<br
                                            class="gmail_msg">
                                            ...<br class="gmail_msg">
                                            0x0000002a:  
                                          DW_TAG_subprogram [2]<br
                                            class="gmail_msg">
                                                            ...<br
                                            class="gmail_msg">
                                                           
                                          DW_AT_external
                                          [DW_FORM_flag_present] (true)</font></div>
                                      <br class="gmail_msg">
                                    </div>
                                    <div class="gmail_msg">I would
                                      expect similar behavior for
                                      const_value - that the attribute
                                      and its constant value is printed
                                      in the debug_info dump.<br
                                        class="gmail_msg">
                                      <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">
                                      <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
                                                moz-do-not-send="true"
                                                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
                                                moz-do-not-send="true"
                                                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
                                                moz-do-not-send="true"
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 moz-do-not-send="true"
href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg"
                                                target="_blank">llvm-commits@lists.llvm.org</a><br
                                                class="gmail_msg">
                                              <a moz-do-not-send="true"
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_3395721182541375228m_-1917743091071114938m_-7804286437102967308m_-7636712434836838175moz-signature gmail_msg" cols="72">-- 
Best Regards,
Victor</pre>
                                      </div>
                                    </blockquote>
                                  </div>
                                </div>
                              </blockquote>
                              <br class="gmail_msg">
                            </div>
                            <div bgcolor="#FFFFFF" text="#000000"
                              class="gmail_msg">
                              <pre class="m_3395721182541375228m_-1917743091071114938m_-7804286437102967308moz-signature gmail_msg" cols="72">-- 
Best Regards,
Victor</pre>
                            </div>
                          </blockquote>
                        </div>
                      </div>
                    </blockquote>
                    <br class="gmail_msg">
                  </div>
                  <div bgcolor="#FFFFFF" text="#000000"
                    class="gmail_msg">
                    <pre class="m_3395721182541375228m_-1917743091071114938moz-signature gmail_msg" cols="72">-- 
Best Regards,
Victor</pre>
                  </div>
                </blockquote>
              </div>
            </div>
          </blockquote>
        </div>
      </blockquote>
      <br>
      <pre class="moz-signature" cols="72">-- 
Best Regards,
Victor</pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
llvm-commits mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a>
</pre>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Best Regards,
Victor</pre>
  </body>
</html>