diff --git a/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp --- a/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp @@ -985,6 +985,7 @@ return false; // FIXME IRBuilder<> IRB(O.getInsn()); + IRB.CreateFence(AtomicOrdering::Acquire, SyncScope::SingleThread); if (isPowerOf2_64(O.TypeSize) && (O.TypeSize / 8 <= (1ULL << (kNumberOfAccessSizes - 1))) && (!O.Alignment || *O.Alignment >= (1ULL << Mapping.Scale) || @@ -1048,6 +1049,7 @@ Int8Ty, IRB.CreateBitCast(AI, Int8PtrTy), AlignedSize - 1)); } + IRB.CreateFence(AtomicOrdering::Release, SyncScope::SingleThread); } }