mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-10 09:11:34 +00:00
commit
2106738d6b
@ -463,8 +463,9 @@ bool SplitComparesTransform::simplifyOrEqualsCompare(CmpInst *IcmpInst,
|
||||
#else
|
||||
ReplaceInstWithInst(IcmpInst->getParent()->getInstList(), ii, PN);
|
||||
#endif
|
||||
|
||||
worklist.push_back(icmp_np);
|
||||
if (new_pred == CmpInst::ICMP_SGT || new_pred == CmpInst::ICMP_SLT) {
|
||||
simplifySignedCompare(icmp_np, M, worklist);
|
||||
}
|
||||
worklist.push_back(icmp_eq);
|
||||
|
||||
return true;
|
||||
@ -740,18 +741,22 @@ bool SplitComparesTransform::splitCompare(CmpInst *cmp_inst, Module &M,
|
||||
CmpInst *icmp_inv_cmp = nullptr;
|
||||
BasicBlock *inv_cmp_bb =
|
||||
BasicBlock::Create(C, "inv_cmp", end_bb->getParent(), end_bb);
|
||||
if (pred == CmpInst::ICMP_UGT || pred == CmpInst::ICMP_SGT ||
|
||||
pred == CmpInst::ICMP_UGE || pred == CmpInst::ICMP_SGE) {
|
||||
if (pred == CmpInst::ICMP_UGT) {
|
||||
|
||||
icmp_inv_cmp = CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_ULT,
|
||||
op0_high, op1_high);
|
||||
|
||||
} else {
|
||||
} else if (pred == CmpInst::ICMP_ULT) {
|
||||
|
||||
icmp_inv_cmp = CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_UGT,
|
||||
op0_high, op1_high);
|
||||
|
||||
}
|
||||
else {
|
||||
// Never gonna appen
|
||||
if (!be_quiet)
|
||||
fprintf(stderr, "Error: split-compare: Equals or signed not removed: %d\n", pred);
|
||||
}
|
||||
|
||||
#if LLVM_MAJOR >= 16
|
||||
icmp_inv_cmp->insertInto(inv_cmp_bb, inv_cmp_bb->end());
|
||||
|
Loading…
x
Reference in New Issue
Block a user