diff --git a/llvm/lib/FuzzMutate/IRMutator.cpp b/llvm/lib/FuzzMutate/IRMutator.cpp --- a/llvm/lib/FuzzMutate/IRMutator.cpp +++ b/llvm/lib/FuzzMutate/IRMutator.cpp @@ -224,10 +224,10 @@ case Instruction::Mul: case Instruction::Sub: case Instruction::Shl: - Modifications.push_back([&Inst]() { Inst.setHasNoSignedWrap(true); }); - Modifications.push_back([&Inst]() { Inst.setHasNoSignedWrap(false); }); - Modifications.push_back([&Inst]() { Inst.setHasNoUnsignedWrap(true); }); - Modifications.push_back([&Inst]() { Inst.setHasNoUnsignedWrap(false); }); + Modifications.push_back( + [&Inst]() { Inst.setHasNoSignedWrap(!Inst.hasNoSignedWrap()); }); + Modifications.push_back( + [&Inst]() { Inst.setHasNoUnsignedWrap(!Inst.hasNoUnsignedWrap()); }); break; case Instruction::ICmp: CI = cast(&Inst); @@ -240,8 +240,8 @@ // Add inbound flag. case Instruction::GetElementPtr: GEP = cast(&Inst); - Modifications.push_back([GEP]() { GEP->setIsInBounds(true); }); - Modifications.push_back([GEP]() { GEP->setIsInBounds(false); }); + Modifications.push_back( + [GEP]() { GEP->setIsInBounds(!GEP->isInBounds()); }); break; // Add exact flag. case Instruction::UDiv: