[llvm] [NFC] [MSAN] disambiguate insertShadowCheck (PR #146616)
Florian Mayer via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 7 16:47:22 PDT 2025
https://github.com/fmayer updated https://github.com/llvm/llvm-project/pull/146616
>From 6308b3d97060563ebb4596847353d3cad7202e73 Mon Sep 17 00:00:00 2001
From: Florian Mayer <fmayer at google.com>
Date: Tue, 1 Jul 2025 17:42:05 -0700
Subject: [PATCH 1/2] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20in?=
=?UTF-8?q?itial=20version?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.4
---
.../Instrumentation/MemorySanitizer.cpp | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
index ca655b3597671..abb03765226cf 100644
--- a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
@@ -2182,7 +2182,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
///
/// This location will be later instrumented with a check that will print a
/// UMR warning in runtime if the shadow value is not 0.
- void insertShadowCheck(Value *Shadow, Value *Origin, Instruction *OrigIns) {
+ void insertCheckShadow(Value *Shadow, Value *Origin, Instruction *OrigIns) {
assert(Shadow);
if (!InsertChecks)
return;
@@ -2203,7 +2203,8 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
ShadowOriginAndInsertPoint(Shadow, Origin, OrigIns));
}
- /// Remember the place where a shadow check should be inserted.
+ /// Get shadow for value, and remember the place where a shadow check should
+ /// be inserted.
///
/// This location will be later instrumented with a check that will print a
/// UMR warning in runtime if the value is not fully defined.
@@ -2221,7 +2222,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
return;
Origin = dyn_cast_or_null<Instruction>(getOrigin(Val));
}
- insertShadowCheck(Shadow, Origin, OrigIns);
+ insertCheckShadow(Shadow, Origin, OrigIns);
}
AtomicOrdering addReleaseOrdering(AtomicOrdering a) {
@@ -3516,7 +3517,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
AggShadow = ConvertShadow;
}
assert(AggShadow->getType()->isIntegerTy());
- insertShadowCheck(AggShadow, getOrigin(ConvertOp), &I);
+ insertCheckShadow(AggShadow, getOrigin(ConvertOp), &I);
// Build result shadow by zero-filling parts of CopyOp shadow that come from
// ConvertOp.
@@ -3944,7 +3945,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
Value *Shadow = IRB.CreateAlignedLoad(Ty, ShadowPtr, Alignment, "_ldmxcsr");
Value *Origin = MS.TrackOrigins ? IRB.CreateLoad(MS.OriginTy, OriginPtr)
: getCleanOrigin();
- insertShadowCheck(Shadow, Origin, &I);
+ insertCheckShadow(Shadow, Origin, &I);
}
void handleMaskedExpandLoad(IntrinsicInst &I) {
@@ -4017,7 +4018,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
Value *MaskedPtrShadow = IRB.CreateSelect(
Mask, getShadow(Ptrs), Constant::getNullValue((PtrsShadowTy)),
"_msmaskedptrs");
- insertShadowCheck(MaskedPtrShadow, getOrigin(Ptrs), &I);
+ insertCheckShadow(MaskedPtrShadow, getOrigin(Ptrs), &I);
}
if (!PropagateShadow) {
@@ -4055,7 +4056,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
Value *MaskedPtrShadow = IRB.CreateSelect(
Mask, getShadow(Ptrs), Constant::getNullValue((PtrsShadowTy)),
"_msmaskedptrs");
- insertShadowCheck(MaskedPtrShadow, getOrigin(Ptrs), &I);
+ insertCheckShadow(MaskedPtrShadow, getOrigin(Ptrs), &I);
}
Value *Shadow = getShadow(Values);
>From 0dd08002a85a2628a73132191cd3943a107de5dd Mon Sep 17 00:00:00 2001
From: Florian Mayer <fmayer at google.com>
Date: Tue, 1 Jul 2025 20:52:19 -0700
Subject: [PATCH 2/2] cmt
Created using spr 1.3.4
---
.../Instrumentation/MemorySanitizer.cpp | 70 +++++++++----------
1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
index abb03765226cf..ea2be84be63d2 100644
--- a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
@@ -2208,7 +2208,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
///
/// This location will be later instrumented with a check that will print a
/// UMR warning in runtime if the value is not fully defined.
- void insertShadowCheck(Value *Val, Instruction *OrigIns) {
+ void insertCheckShadowOf(Value *Val, Instruction *OrigIns) {
assert(Val);
Value *Shadow, *Origin;
if (ClCheckConstantShadow) {
@@ -2334,7 +2334,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
}
if (ClCheckAccessAddress)
- insertShadowCheck(I.getPointerOperand(), &I);
+ insertCheckShadowOf(I.getPointerOperand(), &I);
if (I.isAtomic())
I.setOrdering(addAcquireOrdering(I.getOrdering()));
@@ -2357,7 +2357,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
void visitStoreInst(StoreInst &I) {
StoreList.push_back(&I);
if (ClCheckAccessAddress)
- insertShadowCheck(I.getPointerOperand(), &I);
+ insertCheckShadowOf(I.getPointerOperand(), &I);
}
void handleCASOrRMW(Instruction &I) {
@@ -2371,13 +2371,13 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
.first;
if (ClCheckAccessAddress)
- insertShadowCheck(Addr, &I);
+ insertCheckShadowOf(Addr, &I);
// Only test the conditional argument of cmpxchg instruction.
// The other argument can potentially be uninitialized, but we can not
// detect this situation reliably without possible false positives.
if (isa<AtomicCmpXchgInst>(I))
- insertShadowCheck(Val, &I);
+ insertCheckShadowOf(Val, &I);
IRB.CreateStore(getCleanShadow(Val), ShadowPtr);
@@ -2397,7 +2397,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
// Vector manipulation.
void visitExtractElementInst(ExtractElementInst &I) {
- insertShadowCheck(I.getOperand(1), &I);
+ insertCheckShadowOf(I.getOperand(1), &I);
IRBuilder<> IRB(&I);
setShadow(&I, IRB.CreateExtractElement(getShadow(&I, 0), I.getOperand(1),
"_msprop"));
@@ -2405,7 +2405,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
}
void visitInsertElementInst(InsertElementInst &I) {
- insertShadowCheck(I.getOperand(2), &I);
+ insertCheckShadowOf(I.getOperand(2), &I);
IRBuilder<> IRB(&I);
auto *Shadow0 = getShadow(&I, 0);
auto *Shadow1 = getShadow(&I, 1);
@@ -2882,7 +2882,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
void handleIntegerDiv(Instruction &I) {
IRBuilder<> IRB(&I);
// Strict on the second argument.
- insertShadowCheck(I.getOperand(1), &I);
+ insertCheckShadowOf(I.getOperand(1), &I);
setShadow(&I, getShadow(&I, 0));
setOrigin(&I, getOrigin(&I, 0));
}
@@ -3160,7 +3160,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
IRB.CreateAlignedStore(Shadow, ShadowPtr, Align(1));
if (ClCheckAccessAddress)
- insertShadowCheck(Addr, &I);
+ insertCheckShadowOf(Addr, &I);
// FIXME: factor out common code from materializeStores
if (MS.TrackOrigins)
@@ -3193,7 +3193,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
}
if (ClCheckAccessAddress)
- insertShadowCheck(Addr, &I);
+ insertCheckShadowOf(Addr, &I);
if (MS.TrackOrigins) {
if (PropagateShadow)
@@ -3924,7 +3924,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
IRB.CreateStore(getCleanShadow(Ty), ShadowPtr);
if (ClCheckAccessAddress)
- insertShadowCheck(Addr, &I);
+ insertCheckShadowOf(Addr, &I);
}
void handleLdmxcsr(IntrinsicInst &I) {
@@ -3940,7 +3940,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
getShadowOriginPtr(Addr, IRB, Ty, Alignment, /*isStore*/ false);
if (ClCheckAccessAddress)
- insertShadowCheck(Addr, &I);
+ insertCheckShadowOf(Addr, &I);
Value *Shadow = IRB.CreateAlignedLoad(Ty, ShadowPtr, Alignment, "_ldmxcsr");
Value *Origin = MS.TrackOrigins ? IRB.CreateLoad(MS.OriginTy, OriginPtr)
@@ -3956,8 +3956,8 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
Value *PassThru = I.getArgOperand(2);
if (ClCheckAccessAddress) {
- insertShadowCheck(Ptr, &I);
- insertShadowCheck(Mask, &I);
+ insertCheckShadowOf(Ptr, &I);
+ insertCheckShadowOf(Mask, &I);
}
if (!PropagateShadow) {
@@ -3989,8 +3989,8 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
Value *Mask = I.getArgOperand(2);
if (ClCheckAccessAddress) {
- insertShadowCheck(Ptr, &I);
- insertShadowCheck(Mask, &I);
+ insertCheckShadowOf(Ptr, &I);
+ insertCheckShadowOf(Mask, &I);
}
Value *Shadow = getShadow(Values);
@@ -4014,7 +4014,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
Type *PtrsShadowTy = getShadowTy(Ptrs);
if (ClCheckAccessAddress) {
- insertShadowCheck(Mask, &I);
+ insertCheckShadowOf(Mask, &I);
Value *MaskedPtrShadow = IRB.CreateSelect(
Mask, getShadow(Ptrs), Constant::getNullValue((PtrsShadowTy)),
"_msmaskedptrs");
@@ -4052,7 +4052,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
Type *PtrsShadowTy = getShadowTy(Ptrs);
if (ClCheckAccessAddress) {
- insertShadowCheck(Mask, &I);
+ insertCheckShadowOf(Mask, &I);
Value *MaskedPtrShadow = IRB.CreateSelect(
Mask, getShadow(Ptrs), Constant::getNullValue((PtrsShadowTy)),
"_msmaskedptrs");
@@ -4084,8 +4084,8 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
Value *Shadow = getShadow(V);
if (ClCheckAccessAddress) {
- insertShadowCheck(Ptr, &I);
- insertShadowCheck(Mask, &I);
+ insertCheckShadowOf(Ptr, &I);
+ insertCheckShadowOf(Mask, &I);
}
Value *ShadowPtr;
@@ -4117,8 +4117,8 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
Value *PassThru = I.getArgOperand(3);
if (ClCheckAccessAddress) {
- insertShadowCheck(Ptr, &I);
- insertShadowCheck(Mask, &I);
+ insertCheckShadowOf(Ptr, &I);
+ insertCheckShadowOf(Mask, &I);
}
if (!PropagateShadow) {
@@ -4181,8 +4181,8 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
Value *SrcShadow = getShadow(Src);
if (ClCheckAccessAddress) {
- insertShadowCheck(Dst, &I);
- insertShadowCheck(Mask, &I);
+ insertCheckShadowOf(Dst, &I);
+ insertCheckShadowOf(Mask, &I);
}
Value *DstShadowPtr;
@@ -4242,7 +4242,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
const Align Alignment = Align(1);
if (ClCheckAccessAddress) {
- insertShadowCheck(Mask, &I);
+ insertCheckShadowOf(Mask, &I);
}
Type *SrcShadowTy = getShadowTy(Src);
@@ -4276,7 +4276,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
void handleAVXVpermilvar(IntrinsicInst &I) {
IRBuilder<> IRB(&I);
Value *Shadow = getShadow(&I, 0);
- insertShadowCheck(I.getArgOperand(1), &I);
+ insertCheckShadowOf(I.getArgOperand(1), &I);
// Shadows are integer-ish types but some intrinsics require a
// different (e.g., floating-point) type.
@@ -4469,8 +4469,8 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
// Technically, we could probably just check whether the LSB is
// initialized, but intuitively it feels like a partly uninitialized mask
// is unintended, and we should warn the user immediately.
- insertShadowCheck(Mask, &I);
- insertShadowCheck(RoundingMode, &I);
+ insertCheckShadowOf(Mask, &I);
+ insertCheckShadowOf(RoundingMode, &I);
assert(isa<FixedVectorType>(A->getType()));
unsigned NumElements =
@@ -4551,7 +4551,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
ShadowArgs.push_back(LaneNumber);
// TODO: blend shadow of lane number into output shadow?
- insertShadowCheck(LaneNumber, &I);
+ insertCheckShadowOf(LaneNumber, &I);
}
Value *Src = I.getArgOperand(numArgs - 1);
@@ -4603,7 +4603,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
int skipTrailingOperands = 1;
if (ClCheckAccessAddress)
- insertShadowCheck(Addr, &I);
+ insertCheckShadowOf(Addr, &I);
// Second-last operand is the lane number (for vst{2,3,4}lane)
if (useLane) {
@@ -5552,7 +5552,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
if (A->getType()->isScalableTy()) {
LLVM_DEBUG(dbgs() << "Arg " << i << " is vscale: " << CB << "\n");
// Handle as noundef, but don't reserve tls slots.
- insertShadowCheck(A, &CB);
+ insertCheckShadowOf(A, &CB);
continue;
}
@@ -5564,7 +5564,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
bool EagerCheck = MayCheckCall && !ByVal && NoUndef;
if (EagerCheck) {
- insertShadowCheck(A, &CB);
+ insertCheckShadowOf(A, &CB);
Size = DL.getTypeAllocSize(A->getType());
} else {
Value *Store = nullptr;
@@ -5713,7 +5713,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
Value *Shadow = getShadow(RetVal);
bool StoreOrigin = true;
if (EagerCheck) {
- insertShadowCheck(RetVal, &I);
+ insertCheckShadowOf(RetVal, &I);
Shadow = getCleanShadow(RetVal);
StoreOrigin = false;
}
@@ -5946,7 +5946,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
// Each such pointer is instrumented with a call to the runtime library.
Type *OpType = Operand->getType();
// Check the operand value itself.
- insertShadowCheck(Operand, &I);
+ insertCheckShadowOf(Operand, &I);
if (!OpType->isPointerTy() || !isOutput) {
assert(!isOutput);
return;
@@ -6056,7 +6056,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
for (size_t i = 0, n = I.getNumOperands(); i < n; i++) {
Value *Operand = I.getOperand(i);
if (Operand->getType()->isSized())
- insertShadowCheck(Operand, &I);
+ insertCheckShadowOf(Operand, &I);
}
setShadow(&I, getCleanShadow(&I));
setOrigin(&I, getCleanOrigin());
More information about the llvm-commits
mailing list