<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>