mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-19 13:03:44 +00:00
compiler plugins, just create const constants once.
This commit is contained in:
@ -202,6 +202,9 @@ static unsigned int inline_instrument(function *fun) {
|
|||||||
basic_block bb;
|
basic_block bb;
|
||||||
unsigned finst_blocks = 0;
|
unsigned finst_blocks = 0;
|
||||||
unsigned fcnt_blocks = 0;
|
unsigned fcnt_blocks = 0;
|
||||||
|
tree one = build_int_cst(unsigned_char_type_node, 1);
|
||||||
|
// tree zero = build_int_cst(unsigned_char_type_node, 0);
|
||||||
|
|
||||||
|
|
||||||
/* Set up global type declarations */
|
/* Set up global type declarations */
|
||||||
tree map_type = build_pointer_type(unsigned_char_type_node);
|
tree map_type = build_pointer_type(unsigned_char_type_node);
|
||||||
@ -284,9 +287,6 @@ static unsigned int inline_instrument(function *fun) {
|
|||||||
|
|
||||||
/* Update bitmap */
|
/* Update bitmap */
|
||||||
|
|
||||||
tree one = build_int_cst(unsigned_char_type_node, 1);
|
|
||||||
// tree zero = build_int_cst(unsigned_char_type_node, 0);
|
|
||||||
|
|
||||||
// gimple_assign <addr_expr, p_6, &map[_2], NULL, NULL>
|
// gimple_assign <addr_expr, p_6, &map[_2], NULL, NULL>
|
||||||
tree map_ptr = create_tmp_var(map_type, "map_ptr");
|
tree map_ptr = create_tmp_var(map_type, "map_ptr");
|
||||||
tree map_ptr2 = create_tmp_var(map_type, "map_ptr2");
|
tree map_ptr2 = create_tmp_var(map_type, "map_ptr2");
|
||||||
|
@ -146,6 +146,9 @@ struct InsTrim : public ModulePass {
|
|||||||
M, Int32Ty, false, GlobalValue::ExternalLinkage, 0, "__afl_prev_loc", 0,
|
M, Int32Ty, false, GlobalValue::ExternalLinkage, 0, "__afl_prev_loc", 0,
|
||||||
GlobalVariable::GeneralDynamicTLSModel, 0, false);
|
GlobalVariable::GeneralDynamicTLSModel, 0, false);
|
||||||
|
|
||||||
|
ConstantInt *Zero = ConstantInt::get(Int8Ty, 0);
|
||||||
|
ConstantInt *One = ConstantInt::get(Int8Ty, 1);
|
||||||
|
|
||||||
u64 total_rs = 0;
|
u64 total_rs = 0;
|
||||||
u64 total_hs = 0;
|
u64 total_hs = 0;
|
||||||
|
|
||||||
@ -368,7 +371,7 @@ struct InsTrim : public ModulePass {
|
|||||||
LoadInst *Counter = IRB.CreateLoad(MapPtrIdx);
|
LoadInst *Counter = IRB.CreateLoad(MapPtrIdx);
|
||||||
Counter->setMetadata(M.getMDKindID("nosanitize"), MDNode::get(C, None));
|
Counter->setMetadata(M.getMDKindID("nosanitize"), MDNode::get(C, None));
|
||||||
|
|
||||||
Value *Incr = IRB.CreateAdd(Counter, ConstantInt::get(Int8Ty, 1));
|
Value *Incr = IRB.CreateAdd(Counter, One);
|
||||||
|
|
||||||
#if LLVM_VERSION_MAJOR < 9
|
#if LLVM_VERSION_MAJOR < 9
|
||||||
if (neverZero_counters_str !=
|
if (neverZero_counters_str !=
|
||||||
@ -390,7 +393,7 @@ struct InsTrim : public ModulePass {
|
|||||||
* Counter + 1 -> {Counter, OverflowFlag}
|
* Counter + 1 -> {Counter, OverflowFlag}
|
||||||
* Counter + OverflowFlag -> Counter
|
* Counter + OverflowFlag -> Counter
|
||||||
*/
|
*/
|
||||||
auto cf = IRB.CreateICmpEQ(Incr, ConstantInt::get(Int8Ty, 0));
|
auto cf = IRB.CreateICmpEQ(Incr, Zero);
|
||||||
auto carry = IRB.CreateZExt(cf, Int8Ty);
|
auto carry = IRB.CreateZExt(cf, Int8Ty);
|
||||||
Incr = IRB.CreateAdd(Incr, carry);
|
Incr = IRB.CreateAdd(Incr, carry);
|
||||||
|
|
||||||
|
@ -150,6 +150,8 @@ bool AFLCoverage::runOnModule(Module &M) {
|
|||||||
M, Int32Ty, false, GlobalValue::ExternalLinkage, 0, "__afl_prev_loc", 0,
|
M, Int32Ty, false, GlobalValue::ExternalLinkage, 0, "__afl_prev_loc", 0,
|
||||||
GlobalVariable::GeneralDynamicTLSModel, 0, false);
|
GlobalVariable::GeneralDynamicTLSModel, 0, false);
|
||||||
#endif
|
#endif
|
||||||
|
ConstantInt *Zero = ConstantInt::get(Int8Ty, 0);
|
||||||
|
ConstantInt *One = ConstantInt::get(Int8Ty, 1);
|
||||||
|
|
||||||
/* Instrument all the things! */
|
/* Instrument all the things! */
|
||||||
|
|
||||||
@ -287,7 +289,7 @@ bool AFLCoverage::runOnModule(Module &M) {
|
|||||||
LoadInst *Counter = IRB.CreateLoad(MapPtrIdx);
|
LoadInst *Counter = IRB.CreateLoad(MapPtrIdx);
|
||||||
Counter->setMetadata(M.getMDKindID("nosanitize"), MDNode::get(C, None));
|
Counter->setMetadata(M.getMDKindID("nosanitize"), MDNode::get(C, None));
|
||||||
|
|
||||||
Value *Incr = IRB.CreateAdd(Counter, ConstantInt::get(Int8Ty, 1));
|
Value *Incr = IRB.CreateAdd(Counter, One);
|
||||||
|
|
||||||
#if LLVM_VERSION_MAJOR < 9
|
#if LLVM_VERSION_MAJOR < 9
|
||||||
if (neverZero_counters_str !=
|
if (neverZero_counters_str !=
|
||||||
@ -331,7 +333,7 @@ bool AFLCoverage::runOnModule(Module &M) {
|
|||||||
*/
|
*/
|
||||||
// this is the solution we choose because llvm9 should do the right
|
// this is the solution we choose because llvm9 should do the right
|
||||||
// thing here
|
// thing here
|
||||||
auto cf = IRB.CreateICmpEQ(Incr, ConstantInt::get(Int8Ty, 0));
|
auto cf = IRB.CreateICmpEQ(Incr, Zero);
|
||||||
auto carry = IRB.CreateZExt(cf, Int8Ty);
|
auto carry = IRB.CreateZExt(cf, Int8Ty);
|
||||||
Incr = IRB.CreateAdd(Incr, carry);
|
Incr = IRB.CreateAdd(Incr, carry);
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user