diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2014-12-03 05:22:32 +0000 |
|---|---|---|
| committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2014-12-03 05:22:32 +0000 |
| commit | 2f470c62cba90ca47f3aead9b0344c4c183dd6be (patch) | |
| tree | 8ac7809e72a0d78f76b439cd758d7d2beb29920b /llvm | |
| parent | 691ae3d65762f0de3e3bb916c75db5430bf4146d (diff) | |
| download | bcm5719-llvm-2f470c62cba90ca47f3aead9b0344c4c183dd6be.tar.gz bcm5719-llvm-2f470c62cba90ca47f3aead9b0344c4c183dd6be.zip | |
R600/SI: Fix suspicious indexing
The loop is over the operands of an instruction, and checks the
register with the sub reg index of the dest register. This probably
meant to be checking the sub reg index of the same operand.
llvm-svn: 223205
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Target/R600/SIFixSGPRCopies.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/llvm/lib/Target/R600/SIFixSGPRCopies.cpp b/llvm/lib/Target/R600/SIFixSGPRCopies.cpp index c7a16f4c387..d90f09d3cd6 100644 --- a/llvm/lib/Target/R600/SIFixSGPRCopies.cpp +++ b/llvm/lib/Target/R600/SIFixSGPRCopies.cpp @@ -219,11 +219,13 @@ bool SIFixSGPRCopies::runOnMachineFunction(MachineFunction &MF) { case AMDGPU::PHI: { DEBUG(dbgs() << "Fixing PHI: " << MI); - for (unsigned i = 1; i < MI.getNumOperands(); i+=2) { - unsigned Reg = MI.getOperand(i).getReg(); - const TargetRegisterClass *RC = inferRegClassFromDef(TRI, MRI, Reg, - MI.getOperand(0).getSubReg()); - MRI.constrainRegClass(Reg, RC); + for (unsigned i = 1; i < MI.getNumOperands(); i += 2) { + const MachineOperand &Op = MI.getOperand(i); + unsigned Reg = Op.getReg(); + const TargetRegisterClass *RC + = inferRegClassFromDef(TRI, MRI, Reg, Op.getSubReg()); + + MRI.constrainRegClass(Op.getReg(), RC); } unsigned Reg = MI.getOperand(0).getReg(); const TargetRegisterClass *RC = inferRegClassFromUses(TRI, MRI, Reg, |

