[llvm] [hwasan] Omit tag check for null pointers (PR #122206)
Vitaly Buka via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 8 19:06:09 PST 2025
================
@@ -1163,12 +1163,23 @@ void HWAddressSanitizer::instrumentMemIntrinsic(MemIntrinsic *MI) {
}
bool HWAddressSanitizer::instrumentMemAccess(InterestingMemoryOperand &O,
- DomTreeUpdater &DTU,
- LoopInfo *LI) {
+ DomTreeUpdater &DTU, LoopInfo *LI,
+ const DataLayout &DL) {
Value *Addr = O.getPtr();
LLVM_DEBUG(dbgs() << "Instrumenting: " << O.getInsn() << "\n");
+ // If the pointer is statically known to be zero, the tag check will pass
+ // since:
+ // 1) it has a zero tag
+ // 2) the shadow memory corresponding to address 0 is initialized to zero and
+ // never updated.
+ // We can therefore elide the tag check.
+ llvm::KnownBits Known(DL.getPointerTypeSizeInBits(Addr->getType()));
+ llvm::computeKnownBits(Addr, Known, DL);
+ if (Known.getMinValue() == 0 && Known.getMaxValue() == 0)
----------------
vitalybuka wrote:
can this be just
if (Known.isZero())
https://github.com/llvm/llvm-project/pull/122206
More information about the llvm-commits
mailing list