[llvm-dev] Misuse of MRI.getRegClass in multiple target's FastIsel code
Krzysztof Parzyszek via llvm-dev
llvm-dev at lists.llvm.org
Fri Sep 23 08:30:01 PDT 2016
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
More information about the llvm-dev