forked from OSchip/llvm-project
R600/SI: Don't copy flags when extracting subreg
This was resulting in use of a register after a kill. For some reason this showed up as a problem in many tests when moving the SIFixSGPRCopies pass closer to instruction selection. llvm-svn: 222175
This commit is contained in:
parent
6f679785f4
commit
7480a0e163
|
@ -1281,13 +1281,15 @@ unsigned SIInstrInfo::buildExtractSubReg(MachineBasicBlock::iterator MI,
|
|||
// value so we don't need to worry about merging its subreg index with the
|
||||
// SubIdx passed to this function. The register coalescer should be able to
|
||||
// eliminate this extra copy.
|
||||
BuildMI(*MI->getParent(), MI, MI->getDebugLoc(), get(TargetOpcode::COPY),
|
||||
NewSuperReg)
|
||||
.addOperand(SuperReg);
|
||||
MachineBasicBlock *MBB = MI->getParent();
|
||||
DebugLoc DL = MI->getDebugLoc();
|
||||
|
||||
BuildMI(*MBB, MI, DL, get(TargetOpcode::COPY), NewSuperReg)
|
||||
.addReg(SuperReg.getReg(), 0, SuperReg.getSubReg());
|
||||
|
||||
BuildMI(*MBB, MI, DL, get(TargetOpcode::COPY), SubReg)
|
||||
.addReg(NewSuperReg, 0, SubIdx);
|
||||
|
||||
BuildMI(*MI->getParent(), MI, MI->getDebugLoc(), get(TargetOpcode::COPY),
|
||||
SubReg)
|
||||
.addReg(NewSuperReg, 0, SubIdx);
|
||||
return SubReg;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue