<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <br>
    <div class="moz-cite-prefix">On 05/25/2015 04:50 PM, kelvin farmer
      wrote:<br>
    </div>
    <blockquote
      cite="mid:1636AA4B-F1BF-4C41-A564-4CA7CABBA4C0@gmail.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      Hi,
      <div class=""><br class="">
      </div>
      <div class="">I am looking to utilize LLVM as the backend in an
        existing compiler for a garbage collected language, and have a
        question regarding the current and future support for precise GC
        in LLVM.</div>
    </blockquote>
    Can I ask which language?  I'm always happy to see more languages
    with GC being built on top of LLVM.<br>
    <blockquote
      cite="mid:1636AA4B-F1BF-4C41-A564-4CA7CABBA4C0@gmail.com"
      type="cite">
      <div class=""><br class="">
      </div>
      <div class="">It appears that gc.root is being phased out, with
        with breaking changes such as this: <a moz-do-not-send="true"
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D7004&d=AwMFAg&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=4mbkM2pdFMgJXWqAY5MQmQhlvEsEHXhPH5lOb3ncJZA&s=u-EyZYwFKrFL5fEkSbGflHO1EejyCHkCrJ3x0hj0DWk&e="
          class="">http://reviews.llvm.org/D7004</a></div>
      <div class=""><br class="">
      </div>
      <div class="">Does this mean that gc.statepoint is ready for
        primetime (or will be for 3.7's release)? Also, will gc.root
        still be supported in 3.7 or later? <br>
      </div>
    </blockquote>
    gc.root will be supported through 3.7, and likely through 3.8. 
    While I have made some changes to gc.root, I have tried very hard to
    avoid breaking any use case that I know of.  <br>
    <br>
    I can't honestly tell you that *either* gc.root or gc.statepoint is
    production ready.  Out of the two, I believe gc.statepoint is likely
    to be more stable.  More importantly, there are folks (myself
    included) who are likely to respond to gc.statepoint bugs in a
    fairly prompt manner.  While I will try to look at gc.root bugs, I
    have to admit these are going to be low priority for me.  There is
    no one else in the community actively involved in maintaining
    gc.root either.  <br>
    <br>
    Personally, I would suggest you build on top of gc.statepoint.  In
    particular, start by looking at the PlaceSafepoints and
    RewriteStatepointsForGC utility passes.  <br>
    <br>
    My strong suggestion would be that whichever you pick, make sure
    you're setup to track tip of tree development on a semi regular
    basis.  You *will* find at least a couple of issues along the way
    and you really want to be able to pick up fixes easily.  <br>
    <blockquote
      cite="mid:1636AA4B-F1BF-4C41-A564-4CA7CABBA4C0@gmail.com"
      type="cite">
      <div class=""><br class="">
      </div>
      <div class="">My gut tells me to use statepoints, but after seeing
        a bunch of TODOs in its implementation in trunk (along with the
        docs still describing it as experimental), I'm unsure which
        intrinsics I should be using.</div>
    </blockquote>
    If you have specific TODOs which are concerning, please point them
    out.  Some may just be stale, others might be minor issues.  I can
    give context if you list the specific ones that concern you.  <br>
    <br>
    The experimental part isn't going away for quite a while.  I suspect
    we need to see a merger of patchpoints and statepoints before we're
    really ready to remove the experimental label.  Experimental here
    means "no backwards compatibility guarantees", not "unstable".  <br>
    <br>
    p.s. If you'd like to talk through a tentative design and get a feel
    for where we are in terms of GC support, I'm happy to chat on the
    phone for a bit.  Send me an email off list and we'll setup a call. 
    <br>
    <br>
    Philip<br>
  </body>
</html>