[Reassociate][NFC] Use an appropriate dyn_cast for BinaryOperator

In D129523, it was noted that there is are some questionable naked casts
from Instruction to BinaryOperator, which could be addressed by doing a
dyn_cast directly to BinaryOperator, avoiding the need for the later cast.
This cleans up that casting.

Reviewed By: nikic, spatel, RKSimon

Differential Revision: https://reviews.llvm.org/D130448
This commit is contained in:
Warren Ristow 2022-07-25 10:24:43 -07:00
parent fc93ba061a
commit 3bbd380a5b
1 changed files with 9 additions and 9 deletions

View File

@ -154,20 +154,20 @@ static bool hasFPAssociativeFlags(Instruction *I) {
/// Return true if V is an instruction of the specified opcode and if it
/// only has one use.
static BinaryOperator *isReassociableOp(Value *V, unsigned Opcode) {
auto *I = dyn_cast<Instruction>(V);
if (I && I->hasOneUse() && I->getOpcode() == Opcode)
if (!isa<FPMathOperator>(I) || hasFPAssociativeFlags(I))
return cast<BinaryOperator>(I);
auto *BO = dyn_cast<BinaryOperator>(V);
if (BO && BO->hasOneUse() && BO->getOpcode() == Opcode)
if (!isa<FPMathOperator>(BO) || hasFPAssociativeFlags(BO))
return BO;
return nullptr;
}
static BinaryOperator *isReassociableOp(Value *V, unsigned Opcode1,
unsigned Opcode2) {
auto *I = dyn_cast<Instruction>(V);
if (I && I->hasOneUse() &&
(I->getOpcode() == Opcode1 || I->getOpcode() == Opcode2))
if (!isa<FPMathOperator>(I) || hasFPAssociativeFlags(I))
return cast<BinaryOperator>(I);
auto *BO = dyn_cast<BinaryOperator>(V);
if (BO && BO->hasOneUse() &&
(BO->getOpcode() == Opcode1 || BO->getOpcode() == Opcode2))
if (!isa<FPMathOperator>(BO) || hasFPAssociativeFlags(BO))
return BO;
return nullptr;
}