[PATCH] D37874: [TwoAddressInstructionPass] When prepending COPYs when processing tied operands, take the register class constraint from the instruction operands not the register we're copying.
Craig Topper via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 14 17:37:03 PDT 2017
craig.topper added inline comments.
================
Comment at: lib/CodeGen/TwoAddressInstructionPass.cpp:1521-1522
MIB.addReg(RegB, 0, SubRegB);
- const TargetRegisterClass *RC = MRI->getRegClass(RegB);
+ const TargetRegisterClass *RC = TII->getRegClass(MI->getDesc(), SrcIdx, TRI,
+ *MF);
if (SubRegB) {
----------------
arsenm wrote:
> craig.topper wrote:
> > arsenm wrote:
> > > Can't this now fail if the instruction uses an unknown register class operand?
> > Can you give an example? I'm not very familiar with some of this stuff.
> You can define an instruction operand with an unknown register class, e.g. PATCHPOINT uses this:
> let OutOperandList = (outs unknown:$dst);
>
> Similarly variable_ops instructions don't have statically known register classes from the operand definition.
How likely is that to be used on a tied operand?
https://reviews.llvm.org/D37874
More information about the llvm-commits
mailing list