about summary refs log tree commit diff
path: root/instrumentation/afl-llvm-lto-instrumentation.so.cc
diff options
context:
space:
mode:
authorhexcoder- <heiko@hexco.de>2021-04-17 22:32:33 +0200
committerhexcoder- <heiko@hexco.de>2021-04-17 22:32:33 +0200
commitec49c7fbf5b5dd2259ebfd4a92f6aad5b333c328 (patch)
tree5664d9d273bdb02e8d6865cf8b50600df4373365 /instrumentation/afl-llvm-lto-instrumentation.so.cc
parent00e54565ef109a6c697db77b19d1618e37092125 (diff)
downloadafl++-ec49c7fbf5b5dd2259ebfd4a92f6aad5b333c328.tar.gz
Change other LLVM modes to atomic increments
Diffstat (limited to 'instrumentation/afl-llvm-lto-instrumentation.so.cc')
-rw-r--r--instrumentation/afl-llvm-lto-instrumentation.so.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/instrumentation/afl-llvm-lto-instrumentation.so.cc b/instrumentation/afl-llvm-lto-instrumentation.so.cc
index f6cdbe9e..5ed13ff0 100644
--- a/instrumentation/afl-llvm-lto-instrumentation.so.cc
+++ b/instrumentation/afl-llvm-lto-instrumentation.so.cc
@@ -839,6 +839,11 @@ bool AFLLTOPass::runOnModule(Module &M) {
 
           /* Update bitmap */
 
+#if 1 /* Atomic */
+          IRB.CreateAtomicRMW(llvm::AtomicRMWInst::BinOp::Add, MapPtrIdx, One,
+              llvm::AtomicOrdering::Monotonic);
+
+#else
           LoadInst *Counter = IRB.CreateLoad(MapPtrIdx);
           Counter->setMetadata(M.getMDKindID("nosanitize"),
                                MDNode::get(C, None));
@@ -855,6 +860,7 @@ bool AFLLTOPass::runOnModule(Module &M) {
 
           IRB.CreateStore(Incr, MapPtrIdx)
               ->setMetadata(M.getMDKindID("nosanitize"), MDNode::get(C, None));
+#endif
 
           // done :)