[llvm-dev] Allowing virtual registers after register allocation

Krzysztof Parzyszek via llvm-dev llvm-dev at lists.llvm.org
Thu Dec 10 09:47:02 PST 2015

On 12/10/2015 11:39 AM, Hal Finkel via llvm-dev wrote:
> But there is lots of code that assumes that it can iterate over all physical registers in some class. My thought had been that you don't want to introduce infinite physical register sets because this assumption of enumerability is broken (as is the assumption that the size does not dynamically change). Thoughts?

The post-RA code may not be free from assumptions that all virtual 
registers are gone.  For example, such code may not handle subregisters, 
since PhysReg:Sub can always be collapsed to another physical register. 
  For virtual registers, there is no such guarantee.

I think it would be a lot clearer if we introduced infinite register 
classes, with all the properties of physical registers (except those 
obviously related to finiteness).  Having virtual registers after RA 
sounds like a huge hack.


Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, 
hosted by The Linux Foundation

More information about the llvm-dev mailing list