compiler plugins, just create const constants once.
MODIFY
gcc_plugin/afl-gcc-pass.so.cc
gcc_plugin/afl-gcc-pass.so.cc
@@ -202,6 +202,9 @@ static unsigned int inline_instrument(function *fun) {
basic_block bb;
unsigned finst_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 */
tree map_type = build_pointer_type(unsigned_char_type_node);
@@ -284,9 +287,6 @@ static unsigned int inline_instrument(function *fun) {
/* 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>
tree map_ptr = create_tmp_var(map_type, "map_ptr");
tree map_ptr2 = create_tmp_var(map_type, "map_ptr2");

MODIFY
llvm_mode/LLVMInsTrim.so.cc
llvm_mode/LLVMInsTrim.so.cc
@@ -146,6 +146,9 @@ struct InsTrim : public ModulePass {
M, Int32Ty, false, GlobalValue::ExternalLinkage, 0, "__afl_prev_loc", 0,
GlobalVariable::GeneralDynamicTLSModel, 0, false);
+ ConstantInt *Zero = ConstantInt::get(Int8Ty, 0);
+ ConstantInt *One = ConstantInt::get(Int8Ty, 1);
+
u64 total_rs = 0;
u64 total_hs = 0;
@@ -368,7 +371,7 @@ struct InsTrim : public ModulePass {
LoadInst *Counter = IRB.CreateLoad(MapPtrIdx);
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 (neverZero_counters_str !=
@@ -390,7 +393,7 @@ struct InsTrim : public ModulePass {
* Counter + 1 -> {Counter, OverflowFlag}
* Counter + OverflowFlag -> Counter
*/
- auto cf = IRB.CreateICmpEQ(Incr, ConstantInt::get(Int8Ty, 0));
+ auto cf = IRB.CreateICmpEQ(Incr, Zero);
auto carry = IRB.CreateZExt(cf, Int8Ty);
Incr = IRB.CreateAdd(Incr, carry);

MODIFY
llvm_mode/afl-llvm-pass.so.cc
llvm_mode/afl-llvm-pass.so.cc
@@ -150,6 +150,8 @@ bool AFLCoverage::runOnModule(Module &M) {
M, Int32Ty, false, GlobalValue::ExternalLinkage, 0, "__afl_prev_loc", 0,
GlobalVariable::GeneralDynamicTLSModel, 0, false);
#endif
+ ConstantInt *Zero = ConstantInt::get(Int8Ty, 0);
+ ConstantInt *One = ConstantInt::get(Int8Ty, 1);
/* Instrument all the things! */
@@ -287,7 +289,7 @@ bool AFLCoverage::runOnModule(Module &M) {
LoadInst *Counter = IRB.CreateLoad(MapPtrIdx);
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 (neverZero_counters_str !=
@@ -331,7 +333,7 @@ bool AFLCoverage::runOnModule(Module &M) {
*/
// this is the solution we choose because llvm9 should do the right
// thing here
- auto cf = IRB.CreateICmpEQ(Incr, ConstantInt::get(Int8Ty, 0));
+ auto cf = IRB.CreateICmpEQ(Incr, Zero);
auto carry = IRB.CreateZExt(cf, Int8Ty);
Incr = IRB.CreateAdd(Incr, carry);
/*

compiler plugins, just create const constants once.