fixup
diff --git a/enzyme/Enzyme/CacheUtility.cpp b/enzyme/Enzyme/CacheUtility.cpp index 836bb64..7041523 100644 --- a/enzyme/Enzyme/CacheUtility.cpp +++ b/enzyme/Enzyme/CacheUtility.cpp
@@ -263,13 +263,17 @@ // https://github.com/llvm/llvm-project/pull/78199 if (auto addrec = dyn_cast<SCEVAddRecExpr>(S)) { if (addrec->getLoop()->getHeader() == Header) { - if (auto add_or_mul = dyn_cast<BinaryOperator>(NewIV)) { + if (auto add_or_mul = dyn_cast<BinaryOperator>(NewIV)) + if (add_or_mul->getOpcode() == Instruction::Add || add_or_mul->getOpcode() == Instruction::Mul) + { if (addrec->getNoWrapFlags(llvm::SCEV::FlagNUW)) add_or_mul->setHasNoUnsignedWrap(true); if (addrec->getNoWrapFlags(llvm::SCEV::FlagNSW)) add_or_mul->setHasNoSignedWrap(true); for (int i=0; i<2; i++) { - if (auto mul = dyn_cast<BinaryOperator>(add_or_mul->getOperand(i))) { + if (auto mul = dyn_cast<BinaryOperator>(add_or_mul->getOperand(i))) + if (mul->getOpcode() == Instruction::Add || mul->getOpcode() == Instruction::Mul) + { if (addrec->getNoWrapFlags(llvm::SCEV::FlagNUW)) mul->setHasNoUnsignedWrap(true); if (addrec->getNoWrapFlags(llvm::SCEV::FlagNSW))