[llvm] 969eb4e - [msan][NFC] Correct and clarify comment for getShadowPtrOffset()
Thurston Dang via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 23 16:36:49 PST 2025
Author: Thurston Dang
Date: 2025-01-24T00:36:40Z
New Revision: 969eb4ec4c22ca4eedc54cd8c73acdeecc3f7c86
URL: https://github.com/llvm/llvm-project/commit/969eb4ec4c22ca4eedc54cd8c73acdeecc3f7c86
DIFF: https://github.com/llvm/llvm-project/commit/969eb4ec4c22ca4eedc54cd8c73acdeecc3f7c86.diff
LOG: [msan][NFC] Correct and clarify comment for getShadowPtrOffset()
The stated return type was incorrect; this patch corrects it. More generally, it explains how the Offset and its components fits into the overall shadow mapping calculation.
Added:
Modified:
llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
index b3f52b35940836..350007c81df127 100644
--- a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
@@ -1724,13 +1724,15 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
return ConstantInt::get(MS.IntptrTy, C);
}
- /// Compute the integer shadow offset that corresponds to a given
- /// application address.
+ /// Returns the integer shadow offset that corresponds to a given
+ /// application address, whereby:
///
- /// Offset = (Addr & ~AndMask) ^ XorMask
- /// Addr can be a ptr or <N x ptr>. In both cases ShadowTy the shadow type of
- /// a single pointee.
- /// Returns <shadow_ptr, origin_ptr> or <<N x shadow_ptr>, <N x origin_ptr>>.
+ /// Offset = (Addr & ~AndMask) ^ XorMask
+ /// Shadow = ShadowBase + Offset
+ /// Origin = (OriginBase + Offset) & ~Alignment
+ ///
+ /// Note: for efficiency, many shadow mappings only require use the XorMask
+ /// and OriginBase; the AndMask and ShadowBase are often zero.
Value *getShadowPtrOffset(Value *Addr, IRBuilder<> &IRB) {
Type *IntptrTy = ptrToIntPtrType(Addr->getType());
Value *OffsetLong = IRB.CreatePointerCast(Addr, IntptrTy);
More information about the llvm-commits
mailing list