[llvm-dev] [GlobalISel] A Proposal for global instruction selection

Philip Reames via llvm-dev llvm-dev at lists.llvm.org
Thu Nov 19 11:27:58 PST 2015

Having a distinction between integers and pointers preserved into MI 
would be quite useful for garbage collection as well.  We currently have 
a lowering phase (RewriteStatepointsForGC) which effectively rewrites 
operations of references (i.e. managed pointers) so that they can be 
treated as integers throughout the rest of the pipeline.  If we could 
retain the distinction further back through the backend, it would both 
simply a lot of code and likely let us generate better code (spilling, 
etc..) around safepoints.


On 11/19/2015 10:07 AM, Quentin Colombet via llvm-dev wrote:
>> On Nov 19, 2015, at 9:50 AM, David Chisnall <David.Chisnall at cl.cam.ac.uk> wrote:
>> On 19 Nov 2015, at 17:49, Quentin Colombet <qcolombet at apple.com> wrote:
>>> I must miss something, but I don’t get what is the problem of lower the pointer to actual integer.
>> Pointers, in our architecture, are not integers.
> Thanks for the clarifications.
> So what you’re saying is that a inttoptr instruction is not a no-op on your architecture, is that right?
> Or it can be a no-op only if the consumer of the pointer values can be done on the pointer register bank?
> Don’t know if that helps, but note that the registers are not typed, they just have size. The operations are typed.
> I am trying to understand the constraint to see how that would fit in the framework. That being said, anything that you could do in SDag should be possible as well in the new framework.
> Cheers,
> -Quentin
>> David
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

More information about the llvm-dev mailing list