[llvm-dev] Misuse of MRI.getRegClass in multiple target's FastIsel code
Craig Topper via llvm-dev
llvm-dev at lists.llvm.org
Fri Sep 23 08:31:05 PDT 2016
Yeah I just noticed that. Thanks!
On Fri, Sep 23, 2016 at 8:30 AM, Krzysztof Parzyszek via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> MachineRegisterInfo::getRegClass does take a virtual register and returns
> the TargetRegisterClass of that register. You're thinking about
> On 9/23/2016 10:20 AM, Craig Topper via llvm-dev wrote:
>> This code or subtle variations of it appears in multiple targets. It
>> tries to convert from a register to a register class using getRegClass,
>> but getRegClass is really supposed to take a register class enum value
>> and get the register class object for it. It doesn't convert a register
>> to a class. In fact there's not always a single or canonical class for a
>> given register.
>> What is the right way to do this?
>> unsigned SrcReg = Reg + VA.getValNo();
>> unsigned DestReg = VA.getLocReg();
>> // Avoid a cross-class copy. This is very unlikely.
>> if (!MRI.getRegClass(SrcReg)->contains(DestReg))
>> return false;
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted
> by The Linux Foundation
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev