<div dir="ltr">I completely agree with David and Philip here.<div><br></div><div>I think for the use case you are outlining, an addrspacecast is the correct IR model -- you're specifically saying that it is OK in this case to turn a pointer from addrspace 0 into one for addrspace N because N is your "managed pointer" set that can be *either* a GC-pointer or a non-GC-pointer. You might need N to be a distinct address space from the one used for GC-pointers and to have similar casts emitted by the frontend. What the FE is saying is that this is an *acceptable* transition of addrspace, because your language and runtime semantics have provided for it. I think the proper way to say that is with a cast.</div><div><br></div><div><br></div><div>I want to re-iterate though that there might be very reasonable uses for an addrspace alloca to handle very different use cases such as modeling different memory hierarchies. Those use cases have only been tangentially discussed, so I don't feel like I have enough context to really comment on them in any detail, and that entire discussion should probably be had on a separate thread.</div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Aug 28, 2015 at 1:55 AM David Chisnall <<a href="mailto:David.Chisnall@cl.cam.ac.uk">David.Chisnall@cl.cam.ac.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 28 Aug 2015, at 01:42, Swaroop Sridhar <<a href="mailto:Swaroop.Sridhar@microsoft.com" target="_blank">Swaroop.Sridhar@microsoft.com</a>> wrote:<br>
><br>
> David: As I replied to some other messages on this thread, the intention is not<br>
> To garbage-collect stack locations, or the keep them alive beyond the stack's<br>
> natural lifetime.<br>
<br>
In that case, I think what you want to do can be represented by a stack allocation followed by an address space cast to AS 1 and pass that to the statepoint and then do an AS cast back after the statepoint.<br>
<br>
David<br>
<br>
</blockquote></div>