[LLVMdev] getMinimalPhysRegClass

reed kotler rkotler at mips.com
Mon May 14 14:46:26 PDT 2012


On 05/14/2012 02:42 PM, Jakob Stoklund Olesen wrote:
> On May 14, 2012, at 2:28 PM, reed kotler wrote:
>
>> I'm not using getMinimalPhysRegClass. Some target independent code is using it.
> Probably PEI.
>
>> It makes trouble for us and I would like to submit a patch to make it a virtual function so that I can override it and make it meaningful for Mips, as long as this method still exists.
>>
>> I want to add another register class for Mips16 and don't want to define a Mips16 set of registers because in reality there is no such thing; MIPS16 is an application extension that can exist for either Mips32 or Mips64 which uses a different instruction encoding.
>>
>> When I'm compiling for -mips23 -nomips16 I don't want the mips16 register class being passed to any functions which take such a register class parameter.
>>
>> As it is right now, it sees mips16 as the minimal size class and passes it when I'm compiling for -mips32 -nomips16
> The ARM tGPR register class is the same. It has no business showing up in non-Thumb code, but it is completely harmless when it does.
>
> My best advice to you is don't try to swim upstream. The Liskov substitution principle for register classes is deeply ingrained in the LLVM register allocators.
>
> /jakob
>
What is the danger of overriding the getMinimalPhysRegClass ?

Well, now if it's being changed I have to change my version too.

But with MIPS, we have no register subclasses so I can just return the 
one I want with no
danger of it interfering.

The other approach is to just ignore the register class parameter which 
is not much different
than overriding the virtual function, if getMinimalPhysRegClass where a 
virtual function.




More information about the llvm-dev mailing list