diff options
Diffstat (limited to 'llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp')
-rw-r--r-- | llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp index f138a7c3e2f..f8b2a52cd50 100644 --- a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp +++ b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp @@ -392,26 +392,20 @@ bool HexagonMCChecker::checkRegistersReadOnly() { } bool HexagonMCChecker::registerUsed(MCInst const &Inst, unsigned Register) { - if (HexagonMCInstrInfo::isDuplex(MCII, Inst)) { - if (registerUsed(*Inst.getOperand(0).getInst(), Register) || - registerUsed(*Inst.getOperand(1).getInst(), Register)) + unsigned Defs = HexagonMCInstrInfo::getDesc(MCII, Inst).getNumDefs(); + for (unsigned j = Defs, n = Inst.getNumOperands(); j < n; ++j) { + MCOperand const &Operand = Inst.getOperand(j); + if (Operand.isReg() && Operand.getReg() == Register) return true; - } else { - unsigned Defs = HexagonMCInstrInfo::getDesc(MCII, Inst).getNumDefs(); - for (unsigned j = Defs, n = Inst.getNumOperands(); j < n; ++j) { - MCOperand const &Operand = Inst.getOperand(j); - if (Operand.isReg() && Operand.getReg() == Register) - return true; - } } return false; } bool HexagonMCChecker::registerUsed(unsigned Register) { - auto Range = HexagonMCInstrInfo::bundleInstructions(MCB); - return std::any_of(Range.begin(), Range.end(), [&](MCOperand const &Operand) { - return registerUsed(*Operand.getInst(), Register); - }); + for (auto const &I: HexagonMCInstrInfo::bundleInstructions(MCII, MCB)) + if (registerUsed(I, Register)) + return true; + return false; } void HexagonMCChecker::checkRegisterCurDefs() { |