AMDGPU: Fix dangling references introduced by r263982

Fixes Valgrind errors on the test cases that were reported as failing
by buildbots.

llvm-svn: 264000
This commit is contained in:
Nicolai Haehnle 2016-03-21 22:54:02 +00:00
parent 901de03fe2
commit 0a33abdfd2
1 changed files with 5 additions and 3 deletions

View File

@ -184,14 +184,16 @@ char SIWholeQuadMode::scanInstructions(const MachineFunction &MF,
void SIWholeQuadMode::propagateInstruction(const MachineInstr &MI,
std::vector<WorkItem>& Worklist) {
const MachineBasicBlock &MBB = *MI.getParent();
InstrInfo &II = Instructions[&MI];
InstrInfo II = Instructions[&MI]; // take a copy to prevent dangling references
BlockInfo &BI = Blocks[&MBB];
// Control flow-type instructions that are followed by WQM computations
// must themselves be in WQM.
if ((II.OutNeeds & StateWQM) && !(II.Needs & StateWQM) &&
(MI.isBranch() || MI.isTerminator() || MI.getOpcode() == AMDGPU::SI_KILL))
(MI.isBranch() || MI.isTerminator() || MI.getOpcode() == AMDGPU::SI_KILL)) {
Instructions[&MI].Needs = StateWQM;
II.Needs = StateWQM;
}
// Propagate to block level
BI.Needs |= II.Needs;
@ -253,7 +255,7 @@ void SIWholeQuadMode::propagateInstruction(const MachineInstr &MI,
void SIWholeQuadMode::propagateBlock(const MachineBasicBlock &MBB,
std::vector<WorkItem>& Worklist) {
BlockInfo &BI = Blocks[&MBB];
BlockInfo BI = Blocks[&MBB]; // take a copy to prevent dangling references
// Propagate through instructions
if (!MBB.empty()) {