mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 19:12:56 +02:00
HexagonOptAddrMode::changeStore - fix null dereference warning (PR43463)
As detailed on PR43463, this fixes a static analyzer null dereference warning by sinking Changed = true into the if() blocks where the MIB is actually created. I did a quick check that suggested that one of those if() blocks is always guaranteed to be hit (so we could change it to if-else), but this seems like a safer approach Differential Revision: https://reviews.llvm.org/D73883
This commit is contained in:
parent
9c81e3d7cc
commit
539b0b67e9
@ -561,6 +561,7 @@ bool HexagonOptAddrMode::changeStore(MachineInstr *OldMI, MachineOperand ImmOp,
|
||||
MIB.add(ImmOp);
|
||||
MIB.add(OldMI->getOperand(3));
|
||||
OpStart = 4;
|
||||
Changed = true;
|
||||
} else if (HII->getAddrMode(*OldMI) == HexagonII::BaseImmOffset) {
|
||||
short NewOpCode = HII->changeAddrMode_io_abs(*OldMI);
|
||||
assert(NewOpCode >= 0 && "Invalid New opcode\n");
|
||||
@ -570,10 +571,8 @@ bool HexagonOptAddrMode::changeStore(MachineInstr *OldMI, MachineOperand ImmOp,
|
||||
MIB.addGlobalAddress(GV, Offset, ImmOp.getTargetFlags());
|
||||
MIB.add(OldMI->getOperand(2));
|
||||
OpStart = 3;
|
||||
Changed = true;
|
||||
}
|
||||
Changed = true;
|
||||
LLVM_DEBUG(dbgs() << "[Changing]: " << *OldMI << "\n");
|
||||
LLVM_DEBUG(dbgs() << "[TO]: " << *MIB << "\n");
|
||||
} else if (ImmOpNum == 1 && OldMI->getOperand(2).getImm() == 0) {
|
||||
short NewOpCode = HII->changeAddrMode_rr_io(*OldMI);
|
||||
assert(NewOpCode >= 0 && "Invalid New opcode\n");
|
||||
@ -582,12 +581,14 @@ bool HexagonOptAddrMode::changeStore(MachineInstr *OldMI, MachineOperand ImmOp,
|
||||
MIB.add(ImmOp);
|
||||
OpStart = 3;
|
||||
Changed = true;
|
||||
}
|
||||
if (Changed) {
|
||||
LLVM_DEBUG(dbgs() << "[Changing]: " << *OldMI << "\n");
|
||||
LLVM_DEBUG(dbgs() << "[TO]: " << *MIB << "\n");
|
||||
}
|
||||
if (Changed)
|
||||
|
||||
for (unsigned i = OpStart; i < OpEnd; ++i)
|
||||
MIB.add(OldMI->getOperand(i));
|
||||
}
|
||||
|
||||
return Changed;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user