[llvm] r212266 - Revert of r212265.
Evgeniy Stepanov
eugeni.stepanov at gmail.com
Thu Jul 3 04:35:08 PDT 2014
Author: eugenis
Date: Thu Jul 3 06:35:08 2014
New Revision: 212266
URL: http://llvm.org/viewvc/llvm-project?rev=212266&view=rev
Log:
Revert of r212265.
Modified:
llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp
Modified: llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp?rev=212266&r1=212265&r2=212266&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp (original)
+++ llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp Thu Jul 3 06:35:08 2014
@@ -511,7 +511,7 @@ struct MemorySanitizerVisitor : public I
// The following flags disable parts of MSan instrumentation based on
// blacklist contents and command-line options.
bool InsertChecks;
- bool PropagateShadow;
+ bool LoadShadow;
bool PoisonStack;
bool PoisonUndef;
bool CheckReturnValue;
@@ -532,7 +532,7 @@ struct MemorySanitizerVisitor : public I
bool SanitizeFunction = F.getAttributes().hasAttribute(
AttributeSet::FunctionIndex, Attribute::SanitizeMemory);
InsertChecks = SanitizeFunction;
- PropagateShadow = SanitizeFunction;
+ LoadShadow = SanitizeFunction;
PoisonStack = SanitizeFunction && ClPoisonStack;
PoisonUndef = SanitizeFunction && ClPoisonUndef;
// FIXME: Consider using SpecialCaseList to specify a list of functions that
@@ -716,14 +716,13 @@ struct MemorySanitizerVisitor : public I
// Finalize PHI nodes.
for (PHINode *PN : ShadowPHINodes) {
- Value *S = getShadow(PN);
- if (isa<Constant>(S)) continue;
PHINode *PNS = cast<PHINode>(getShadow(PN));
PHINode *PNO = MS.TrackOrigins ? cast<PHINode>(getOrigin(PN)) : nullptr;
size_t NumValues = PN->getNumIncomingValues();
for (size_t v = 0; v < NumValues; v++) {
PNS->addIncoming(getShadow(PN, v), PN->getIncomingBlock(v));
- if (PNO) PNO->addIncoming(getOrigin(PN, v), PN->getIncomingBlock(v));
+ if (PNO)
+ PNO->addIncoming(getOrigin(PN, v), PN->getIncomingBlock(v));
}
}
@@ -857,7 +856,7 @@ struct MemorySanitizerVisitor : public I
/// \brief Set SV to be the shadow value for V.
void setShadow(Value *V, Value *SV) {
assert(!ShadowMap.count(V) && "Values may only have one shadow");
- ShadowMap[V] = PropagateShadow ? SV : getCleanShadow(V);
+ ShadowMap[V] = SV;
}
/// \brief Set Origin to be the origin value for V.
@@ -909,7 +908,6 @@ struct MemorySanitizerVisitor : public I
/// This function either returns the value set earlier with setShadow,
/// or extracts if from ParamTLS (for function arguments).
Value *getShadow(Value *V) {
- if (!PropagateShadow) return getCleanShadow(V);
if (Instruction *I = dyn_cast<Instruction>(V)) {
// For instructions the shadow is already stored in the map.
Value *Shadow = ShadowMap[V];
@@ -1077,7 +1075,7 @@ struct MemorySanitizerVisitor : public I
IRBuilder<> IRB(I.getNextNode());
Type *ShadowTy = getShadowTy(&I);
Value *Addr = I.getPointerOperand();
- if (PropagateShadow) {
+ if (LoadShadow) {
Value *ShadowPtr = getShadowPtr(Addr, ShadowTy, IRB);
setShadow(&I,
IRB.CreateAlignedLoad(ShadowPtr, I.getAlignment(), "_msld"));
@@ -1092,7 +1090,7 @@ struct MemorySanitizerVisitor : public I
I.setOrdering(addAcquireOrdering(I.getOrdering()));
if (MS.TrackOrigins) {
- if (PropagateShadow) {
+ if (LoadShadow) {
unsigned Alignment = std::max(kMinOriginAlignment, I.getAlignment());
setOrigin(&I,
IRB.CreateAlignedLoad(getOriginPtr(Addr, IRB), Alignment));
@@ -1759,7 +1757,7 @@ struct MemorySanitizerVisitor : public I
Value *Addr = I.getArgOperand(0);
Type *ShadowTy = getShadowTy(&I);
- if (PropagateShadow) {
+ if (LoadShadow) {
Value *ShadowPtr = getShadowPtr(Addr, ShadowTy, IRB);
// We don't know the pointer alignment (could be unaligned SSE load!).
// Have to assume to worst case.
@@ -1772,7 +1770,7 @@ struct MemorySanitizerVisitor : public I
insertShadowCheck(Addr, &I);
if (MS.TrackOrigins) {
- if (PropagateShadow)
+ if (LoadShadow)
setOrigin(&I, IRB.CreateLoad(getOriginPtr(Addr, IRB)));
else
setOrigin(&I, getCleanOrigin());
More information about the llvm-commits
mailing list