<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 07/14/2015 09:13 PM, Pete Cooper
      wrote:<br>
    </div>
    <blockquote
      cite="mid:F50A68AB-69AC-4B6B-8807-4A7123CC3E6F@apple.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <br class="">
      <div>
        <blockquote type="cite" class="">
          <div class="">On Jul 14, 2015, at 8:53 PM, Philip Reames <<a
              moz-do-not-send="true"
              href="mailto:listmail@philipreames.com" class="">listmail@philipreames.com</a>>
            wrote:</div>
          <br class="Apple-interchange-newline">
          <div class="">
            <meta content="text/html; charset=windows-1252"
              http-equiv="Content-Type" class="">
            <div bgcolor="#FFFFFF" text="#000000" class="">
              <div class="moz-cite-prefix">On 07/14/2015 05:07 PM, Pete
                Cooper wrote:<br class="">
              </div>
              <blockquote
                cite="mid:A220B0A8-FB1B-4699-BE55-158426214869@apple.com"
                type="cite" class="">
                <meta http-equiv="Content-Type" content="text/html;
                  charset=windows-1252" class="">
                <br class="">
                <div class="">
                  <blockquote type="cite" class="">
                    <div class="">On Jul 14, 2015, at 4:48 PM, Reid
                      Kleckner <<a moz-do-not-send="true"
                        href="mailto:rnk@google.com" class="">rnk@google.com</a>>
                      wrote:</div>
                    <br class="Apple-interchange-newline">
                    <div class="">
                      <div dir="ltr" class="">This sounds more like a
                        use case for metadata. Can we attach metadata to
                        function arguments, or does that not work
                        currently?</div>
                    </div>
                  </blockquote>
                  We can’t, no.</div>
                <div class=""><br class="">
                </div>
                <div class="">I have an out of tree patch which allows
                  metadata in AttributeSets.  This would also
                  potentially also work here.</div>
                <div class=""><br class="">
                </div>
                <div class="">However, depending on the number of unique
                  strings/metadata in AttributeSets, this could get
                  large.  I don’t think we’ve ever had more that a few
                  unique AttributeSets in an entire module.  If you have
                  too many different strings then you could have a
                  significant number of sets which could get slow.</div>
                <div class=""><br class="">
                </div>
                <div class="">Metadata attached to the function or the
                  function arguments is likely to scale better than
                  strings/metadata in the AttributeSets, but I guess it
                  all depends on whether many are even needed.</div>
              </blockquote>
              As far as I can tell, the string attributes on function
              parameters is already "supposed to work".  We support it
              in bytecode.  We even support serialization of the
              attributes.  It's just the parsing that's broken.  I don't
              have any problem with an eventual move towards supporting
              metadata on arguments, but does anyone object to landing
              the current patches?  Whether we believe that the use case
              motivating the patch is better represented by metadata or
              not, having the deserialization support seems like a clear
              improvement.  <br class="">
            </div>
          </div>
        </blockquote>
        No objection from me.  Seems like an arbitrary restriction for
        it to currently work on everything other than arguments.</div>
      <div><br class="">
      </div>
      <div>If you or anyone else wants the metadata in attribute sets,
        we can have another discussion for that.  My use cases were tbaa
        on arguments and range metadata, but there could easily be
        others.</div>
    </blockquote>
    I would be happy to see this happen.  I'm not sure that "in
    attribute sets" is quite the right framing here, but being able to
    use metadata in all the places we use attributes seems like a
    reasonable design goal.  (Actually, we should enumerate that list to
    make sure it still seems reasonable.)  This might also give us a way
    to migrate some of our existing attributes which are really just
    optimization hints.  (i.e. nonnull, dereferenceable)<br>
    <br>
    <br>
    <blockquote
      cite="mid:F50A68AB-69AC-4B6B-8807-4A7123CC3E6F@apple.com"
      type="cite">
      <div><br class="">
      </div>
      <div>Cheers,</div>
      <div>Pete<br class="">
        <blockquote type="cite" class="">
          <div class="">
            <div bgcolor="#FFFFFF" text="#000000" class=""> <br
                class="">
              As a side note, I can't find any mention of the string
              attribute functionality in the LangRef or ExtendingLLVM. 
              Seems like it might be time to add something about the
              capability for extension.  We should probably also
              *explicitly* reserve the entire namespace of possible
              keywords for future LLVM in tree enhancements.  <br
                class="">
              <br class="">
              Philip<br class="">
              <blockquote
                cite="mid:A220B0A8-FB1B-4699-BE55-158426214869@apple.com"
                type="cite" class="">
                <div class="">
                  <blockquote type="cite" class="">
                    <div class="">
                      <div class="gmail_extra"><br class="">
                        <div class="gmail_quote">On Mon, Jul 13, 2015 at
                          7:42 AM, Artur Pilipenko <span dir="ltr"
                            class=""><<a moz-do-not-send="true"
                              href="mailto:apilipenko@azulsystems.com"
                              target="_blank" class="">apilipenko@azulsystems.com</a>></span>
                          wrote:<br class="">
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            <div style="word-wrap:break-word" class="">
                              Hi,
                              <div class=""><br class="">
                                <div class=""><span class="">
                                    <blockquote type="cite" class="">
                                      <div class="">On 13 Jul 2015, at
                                        15:59, Hal Finkel <<a
                                          moz-do-not-send="true"
                                          href="mailto:hfinkel@anl.gov"
                                          target="_blank" class="">hfinkel@anl.gov</a>>

                                        wrote:</div>
                                      <br class="">
                                      <div class=""><span
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important"
                                          class="">----- Original
                                          Message -----</span><br
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"
                                          class="">
                                        <blockquote type="cite"
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"
                                          class=""> From: "Artur
                                          Pilipenko" <<a
                                            moz-do-not-send="true"
                                            href="mailto:apilipenko@azulsystems.com"
                                            target="_blank" class="">apilipenko@azulsystems.com</a>><br
                                            class="">
                                          To:<span class=""> </span><a
                                            moz-do-not-send="true"
                                            href="mailto:llvmdev@cs.uiuc.edu"
                                            target="_blank" class="">llvmdev@cs.uiuc.edu</a><br
                                            class="">
                                          Cc: "Hal Finkel" <<a
                                            moz-do-not-send="true"
                                            href="mailto:hfinkel@anl.gov"
                                            target="_blank" class="">hfinkel@anl.gov</a>><br
                                            class="">
                                          Sent: Monday, July 13, 2015
                                          6:45:35 AM<br class="">
                                          Subject: String attributes for
                                          function arguments and return
                                          values<br class="">
                                          <br class="">
                                          Hi,<br class="">
                                          <br class="">
                                          I’d like to support string
                                          attributes on function
                                          arguments and<br class="">
                                          return values. We are going to
                                          use them in our tree to
                                          express<br class="">
                                          higher level language types.<br
                                            class="">
                                        </blockquote>
                                        <br
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"
                                          class="">
                                        <span
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important"
                                          class="">How do you expect to
                                          use this information? Will you
                                          need the inliner to do
                                          something special with these?</span><br
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"
                                          class="">
                                      </div>
                                    </blockquote>
                                  </span> Type information is required
                                  for Java specific optimizations, like
                                  devirtualization, subtype check
                                  optimizations, etc. There are no plans
                                  to upstream them, because they are too
                                  specific to Java.</div>
                                <div class=""><br class="">
                                </div>
                                <div class="">W.r.t inlining I don’t
                                  think that these attributes will
                                  require any special handling.</div>
                                <span class="HOEnZb"><font class=""
                                    color="#888888">
                                    <div class=""><br class="">
                                    </div>
                                  </font></span>
                                <div class=""><span class="HOEnZb"><font
                                      class="" color="#888888">Artur</font></span>
                                  <div class="">
                                    <div class="h5"><br class="">
                                      <blockquote type="cite" class="">
                                        <div class=""><br
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"
                                            class="">
                                          <span
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important"
                                            class="">Thanks again,</span><br
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"
                                            class="">
                                          <span
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important"
                                            class="">Hal</span><br
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"
                                            class="">
                                          <br
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"
                                            class="">
                                          <blockquote type="cite"
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"
                                            class=""> <br class="">
                                            Internally attributes
                                            framework have everything to
                                            do this, it’s even<br
                                              class="">
                                            possible to generate string
                                            attributes via API right
                                            now:<br class="">
                                            Function *function;<br
                                              class="">
function->setAttributes(function->getAttributes().addAttribute(context,<br
                                              class="">
                                            i, "attribute"));<br
                                              class="">
                                            But because it’s not
                                            supported in LLParser if you
                                            dump the function<br
                                              class="">
                                            and try to parse it back it
                                            will fail. I have a patch to
                                            fix this<br class="">
                                            problem:<br class="">
                                            <a moz-do-not-send="true"
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D11058&d=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=QxcZ1dQY-4Fptsg8J_QZvUH5zX3_zJfFtYe_mFFV434&s=yDXYh5H5eycn3Yn6A7bDimwo8jVbqaGav2FdRRIz0lg&e="
                                              target="_blank" class="">http://reviews.llvm.org/D11058</a><br
                                              class="">
                                            I consider this part as a
                                            bug fix for existing
                                            functionality.<br class="">
                                            <br class="">
                                            The second patch is to add
                                            accessors to string
                                            attributes to Argument<br
                                              class="">
                                            and Function classes:<br
                                              class="">
                                            <a moz-do-not-send="true"
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D10872&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=x-SxyqtoLVC9ndWtSNBJBeyYQml3MZ2Ch4L_B4Hc3Yg&s=a-NOt0poEqPq0I1bAMlsGTKRbxjviviAhMjJ41PNN2Y&e="
                                              target="_blank" class="">http://reviews.llvm.org/D10872</a><br
                                              class="">
                                            This part is optional
                                            because there no code in
                                            upstream will make use<br
                                              class="">
                                            of it. But if we support
                                            string attributes syntax it
                                            makes sense to<br class="">
                                            provide API support as well.<br
                                              class="">
                                            <br class="">
                                            Does anyone have any
                                            objections?<br class="">
                                            <br class="">
                                            Thanks,<br class="">
                                            Artur<br class="">
                                            <br class="">
                                            <br class="">
                                            <br class="">
                                          </blockquote>
                                          <br
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"
                                            class="">
                                          <span
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important"
                                            class="">--<span class=""> </span></span><br
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"
                                            class="">
                                          <span
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important"
                                            class="">Hal Finkel</span><br
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"
                                            class="">
                                          <span
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important"
                                            class="">Assistant
                                            Computational Scientist</span><br
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"
                                            class="">
                                          <span
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important"
                                            class="">Leadership
                                            Computing Facility</span><br
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"
                                            class="">
                                          <span
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important"
                                            class="">Argonne National
                                            Laboratory</span></div>
                                      </blockquote>
                                    </div>
                                  </div>
                                </div>
                                <br class="">
                              </div>
                            </div>
                            <br class="">
_______________________________________________<br class="">
                            LLVM Developers mailing list<br class="">
                            <a moz-do-not-send="true"
                              href="mailto:LLVMdev@cs.uiuc.edu" class="">LLVMdev@cs.uiuc.edu</a> 
                                   <a moz-do-not-send="true"
                              href="http://llvm.cs.uiuc.edu/"
                              rel="noreferrer" target="_blank" class="">http://llvm.cs.uiuc.edu</a><br
                              class="">
                            <a moz-do-not-send="true"
                              href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev"
                              rel="noreferrer" target="_blank" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br
                              class="">
                            <br class="">
                          </blockquote>
                        </div>
                        <br class="">
                      </div>
                      _______________________________________________<br
                        class="">
                      LLVM Developers mailing list<br class="">
                      <a moz-do-not-send="true"
                        href="mailto:LLVMdev@cs.uiuc.edu" class="">LLVMdev@cs.uiuc.edu</a>
                              <a moz-do-not-send="true"
                        href="http://llvm.cs.uiuc.edu/" class="">http://llvm.cs.uiuc.edu</a><br
                        class="">
                      <a moz-do-not-send="true"
                        href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev"
                        class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br
                        class="">
                    </div>
                  </blockquote>
                </div>
                <br class="">
                <br class="">
                <fieldset class="mimeAttachmentHeader"></fieldset>
                <br class="">
                <pre class="" wrap="">_______________________________________________
LLVM Developers mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://llvm.cs.uiuc.edu/">http://llvm.cs.uiuc.edu</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a>
</pre>
              </blockquote>
              <br class="">
            </div>
          </div>
        </blockquote>
      </div>
      <br class="">
    </blockquote>
    <br>
  </body>
</html>