diff options
author | hexcoder- <heiko@hexco.de> | 2019-09-23 22:25:44 +0200 |
---|---|---|
committer | hexcoder- <heiko@hexco.de> | 2019-09-23 22:25:44 +0200 |
commit | 149b7d9ee8310fbd23b8da162b467403967725d4 (patch) | |
tree | ae359005f6d6d51f9b0abff40057819d80250ad8 | |
parent | d13592aea0553b18ecf5366a260b3d5d3fe91764 (diff) | |
download | afl++-149b7d9ee8310fbd23b8da162b467403967725d4.tar.gz |
bugfix for optimization
-rw-r--r-- | llvm_mode/split-compares-pass.so.cc | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/llvm_mode/split-compares-pass.so.cc b/llvm_mode/split-compares-pass.so.cc index b6d16331..e97c2e7b 100644 --- a/llvm_mode/split-compares-pass.so.cc +++ b/llvm_mode/split-compares-pass.so.cc @@ -585,29 +585,32 @@ size_t SplitComparesTransform::splitFPCompares(Module &M) { m_e1 = BinaryOperator::Create(Instruction::And, t_e1, ConstantInt::get(t_e1->getType(), mask_exponent)); signequal_bb->getInstList().insert(signequal_bb->getTerminator()->getIterator(), m_e0); signequal_bb->getInstList().insert(signequal_bb->getTerminator()->getIterator(), m_e1); + } else { + m_e0 = t_e0; + m_e1 = t_e1; } /* compare the exponents of the operands */ Instruction *icmp_exponent_result; switch (FcmpInst->getPredicate()) { case CmpInst::FCMP_OEQ: icmp_exponent_result = - CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_EQ, t_e0, t_e1); + CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_EQ, m_e0, m_e1); break; case CmpInst::FCMP_ONE: case CmpInst::FCMP_UNE: icmp_exponent_result = - CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_NE, t_e0, t_e1); + CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_NE, m_e0, m_e1); break; case CmpInst::FCMP_OGT: Instruction *icmp_exponent; icmp_exponent = - CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_UGT, t_e0, t_e1); + CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_UGT, m_e0, m_e1); signequal_bb->getInstList().insert(signequal_bb->getTerminator()->getIterator(), icmp_exponent); icmp_exponent_result = BinaryOperator::Create(Instruction::Xor, icmp_exponent, t_s0); break; case CmpInst::FCMP_OLT: icmp_exponent = - CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_ULT, t_e0, t_e1); + CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_ULT, m_e0, m_e1); signequal_bb->getInstList().insert(signequal_bb->getTerminator()->getIterator(), icmp_exponent); icmp_exponent_result = BinaryOperator::Create(Instruction::Xor, icmp_exponent, t_s0); break; |