[llvm] 0f9b1c8 - [FuzzMutate] Correct type cast and add unit test for FCmp
Peter Rong via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 25 17:28:06 PDT 2023
Author: Peter Rong
Date: 2023-04-25T17:28:01-07:00
New Revision: 0f9b1c8872ef0bb041b301f9932d3f0be180f425
URL: https://github.com/llvm/llvm-project/commit/0f9b1c8872ef0bb041b301f9932d3f0be180f425
DIFF: https://github.com/llvm/llvm-project/commit/0f9b1c8872ef0bb041b301f9932d3f0be180f425.diff
LOG: [FuzzMutate] Correct type cast and add unit test for FCmp
This revision fixes an incorrect type cast from Instruction to ICmpInstr, which should have been to FCmpInstr instead. It turns out that StrategiesTest.cpp was missing a test case for InstModificationIRStrategy and FCmp, which is also now implemented in this revision. After this revision, [[ https://reviews.llvm.org/D148854 | llvm-stress in D148854 ]] no longer crashes randomly.
Reviewed By: Peter
Differential Revision: https://reviews.llvm.org/D148972
Added:
Modified:
llvm/lib/FuzzMutate/IRMutator.cpp
llvm/unittests/FuzzMutate/StrategiesTest.cpp
Removed:
################################################################################
diff --git a/llvm/lib/FuzzMutate/IRMutator.cpp b/llvm/lib/FuzzMutate/IRMutator.cpp
index 2d6c83e49a81..b896e3ca93fc 100644
--- a/llvm/lib/FuzzMutate/IRMutator.cpp
+++ b/llvm/lib/FuzzMutate/IRMutator.cpp
@@ -243,7 +243,7 @@ void InstModificationIRStrategy::mutate(Instruction &Inst,
break;
case Instruction::FCmp:
- CI = cast<FCmpInst>(&Inst);
+ CI = cast<ICmpInst>(&Inst);
for (unsigned p = CmpInst::FIRST_FCMP_PREDICATE;
p <= CmpInst::LAST_FCMP_PREDICATE; p++) {
Modifications.push_back(
diff --git a/llvm/unittests/FuzzMutate/StrategiesTest.cpp b/llvm/unittests/FuzzMutate/StrategiesTest.cpp
index 1de027c43e49..5b87b9c6a7b8 100644
--- a/llvm/unittests/FuzzMutate/StrategiesTest.cpp
+++ b/llvm/unittests/FuzzMutate/StrategiesTest.cpp
@@ -245,31 +245,6 @@ TEST(InstModificationIRStrategyTest, ICmp) {
EXPECT_TRUE(FoundNE);
}
-TEST(InstModificationIRStrategyTest, FCmp) {
- LLVMContext Ctx;
- StringRef Source = "\n\
- define i1 @test(float %x) {\n\
- %a = fcmp oeq float %x, 10.0\n\
- ret i1 %a\n\
- }";
-
- auto Mutator = createMutator<InstModificationIRStrategy>();
- ASSERT_TRUE(Mutator);
-
- auto M = parseAssembly(Source.data(), Ctx);
- auto &F = *M->begin();
- CmpInst *CI = cast<CmpInst>(&*F.begin()->begin());
- ASSERT_TRUE(M && !verifyModule(*M, &errs()));
- bool FoundONE = false;
- for (int i = 0; i < 100; ++i) {
- Mutator->mutateModule(*M, Seed + i, Source.size(), Source.size() + 100);
- EXPECT_TRUE(!verifyModule(*M, &errs()));
- FoundONE |= CI->getPredicate() == CmpInst::FCMP_ONE;
- }
-
- EXPECT_TRUE(FoundONE);
-}
-
TEST(InstModificationIRStrategyTest, GEP) {
LLVMContext Ctx;
StringRef Source = "\n\
More information about the llvm-commits
mailing list