mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-25 21:18:19 +00:00
[C++] Use 'nullptr'. Transforms edition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207196 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -606,7 +606,7 @@ Value *AddressSanitizer::memToShadow(Value *Shadow, IRBuilder<> &IRB) {
|
||||
// Instrument memset/memmove/memcpy
|
||||
void AddressSanitizer::instrumentMemIntrinsic(MemIntrinsic *MI) {
|
||||
IRBuilder<> IRB(MI);
|
||||
Instruction *Call = 0;
|
||||
Instruction *Call = nullptr;
|
||||
if (isa<MemTransferInst>(MI)) {
|
||||
Call = IRB.CreateCall3(
|
||||
isa<MemMoveInst>(MI) ? AsanMemmove : AsanMemcpy,
|
||||
@@ -628,26 +628,26 @@ void AddressSanitizer::instrumentMemIntrinsic(MemIntrinsic *MI) {
|
||||
// and set IsWrite. Otherwise return NULL.
|
||||
static Value *isInterestingMemoryAccess(Instruction *I, bool *IsWrite) {
|
||||
if (LoadInst *LI = dyn_cast<LoadInst>(I)) {
|
||||
if (!ClInstrumentReads) return NULL;
|
||||
if (!ClInstrumentReads) return nullptr;
|
||||
*IsWrite = false;
|
||||
return LI->getPointerOperand();
|
||||
}
|
||||
if (StoreInst *SI = dyn_cast<StoreInst>(I)) {
|
||||
if (!ClInstrumentWrites) return NULL;
|
||||
if (!ClInstrumentWrites) return nullptr;
|
||||
*IsWrite = true;
|
||||
return SI->getPointerOperand();
|
||||
}
|
||||
if (AtomicRMWInst *RMW = dyn_cast<AtomicRMWInst>(I)) {
|
||||
if (!ClInstrumentAtomics) return NULL;
|
||||
if (!ClInstrumentAtomics) return nullptr;
|
||||
*IsWrite = true;
|
||||
return RMW->getPointerOperand();
|
||||
}
|
||||
if (AtomicCmpXchgInst *XCHG = dyn_cast<AtomicCmpXchgInst>(I)) {
|
||||
if (!ClInstrumentAtomics) return NULL;
|
||||
if (!ClInstrumentAtomics) return nullptr;
|
||||
*IsWrite = true;
|
||||
return XCHG->getPointerOperand();
|
||||
}
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static bool isPointerOperand(Value *V) {
|
||||
@@ -732,7 +732,7 @@ void AddressSanitizer::instrumentMop(Instruction *I, bool UseCalls) {
|
||||
// Instrument a 1-, 2-, 4-, 8-, or 16- byte access with one check.
|
||||
if (TypeSize == 8 || TypeSize == 16 ||
|
||||
TypeSize == 32 || TypeSize == 64 || TypeSize == 128)
|
||||
return instrumentAddress(I, I, Addr, TypeSize, IsWrite, 0, UseCalls);
|
||||
return instrumentAddress(I, I, Addr, TypeSize, IsWrite, nullptr, UseCalls);
|
||||
// Instrument unusual size (but still multiple of 8).
|
||||
// We can not do it with a single check, so we do 1-byte check for the first
|
||||
// and the last bytes. We call __asan_report_*_n(addr, real_size) to be able
|
||||
@@ -821,7 +821,7 @@ void AddressSanitizer::instrumentAddress(Instruction *OrigIns,
|
||||
|
||||
Value *Cmp = IRB.CreateICmpNE(ShadowValue, CmpVal);
|
||||
size_t Granularity = 1 << Mapping.Scale;
|
||||
TerminatorInst *CrashTerm = 0;
|
||||
TerminatorInst *CrashTerm = nullptr;
|
||||
|
||||
if (ClAlwaysSlowPath || (TypeSize < 8 * Granularity)) {
|
||||
TerminatorInst *CheckTerm =
|
||||
@@ -1341,7 +1341,7 @@ bool AddressSanitizer::runOnFunction(Function &F) {
|
||||
}
|
||||
}
|
||||
|
||||
Function *UninstrumentedDuplicate = 0;
|
||||
Function *UninstrumentedDuplicate = nullptr;
|
||||
bool LikelyToInstrument =
|
||||
!NoReturnCalls.empty() || !ToInstrument.empty() || (NumAllocas > 0);
|
||||
if (ClKeepUninstrumented && LikelyToInstrument) {
|
||||
@@ -1685,7 +1685,7 @@ void FunctionStackPoisoner::poisonAlloca(Value *V, uint64_t Size,
|
||||
AllocaInst *FunctionStackPoisoner::findAllocaForValue(Value *V) {
|
||||
if (AllocaInst *AI = dyn_cast<AllocaInst>(V))
|
||||
// We're intested only in allocas we can handle.
|
||||
return isInterestingAlloca(*AI) ? AI : 0;
|
||||
return isInterestingAlloca(*AI) ? AI : nullptr;
|
||||
// See if we've already calculated (or started to calculate) alloca for a
|
||||
// given value.
|
||||
AllocaForValueMapTy::iterator I = AllocaForValue.find(V);
|
||||
@@ -1693,8 +1693,8 @@ AllocaInst *FunctionStackPoisoner::findAllocaForValue(Value *V) {
|
||||
return I->second;
|
||||
// Store 0 while we're calculating alloca for value V to avoid
|
||||
// infinite recursion if the value references itself.
|
||||
AllocaForValue[V] = 0;
|
||||
AllocaInst *Res = 0;
|
||||
AllocaForValue[V] = nullptr;
|
||||
AllocaInst *Res = nullptr;
|
||||
if (CastInst *CI = dyn_cast<CastInst>(V))
|
||||
Res = findAllocaForValue(CI->getOperand(0));
|
||||
else if (PHINode *PN = dyn_cast<PHINode>(V)) {
|
||||
@@ -1704,12 +1704,12 @@ AllocaInst *FunctionStackPoisoner::findAllocaForValue(Value *V) {
|
||||
if (IncValue == PN) continue;
|
||||
AllocaInst *IncValueAI = findAllocaForValue(IncValue);
|
||||
// AI for incoming values should exist and should all be equal.
|
||||
if (IncValueAI == 0 || (Res != 0 && IncValueAI != Res))
|
||||
return 0;
|
||||
if (IncValueAI == nullptr || (Res != nullptr && IncValueAI != Res))
|
||||
return nullptr;
|
||||
Res = IncValueAI;
|
||||
}
|
||||
}
|
||||
if (Res != 0)
|
||||
if (Res)
|
||||
AllocaForValue[V] = Res;
|
||||
return Res;
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ namespace {
|
||||
BasicBlock *TrapBB;
|
||||
|
||||
BasicBlock *getTrapBB();
|
||||
void emitBranchToTrap(Value *Cmp = 0);
|
||||
void emitBranchToTrap(Value *Cmp = nullptr);
|
||||
bool instrument(Value *Ptr, Value *Val);
|
||||
};
|
||||
}
|
||||
@@ -104,7 +104,7 @@ void BoundsChecking::emitBranchToTrap(Value *Cmp) {
|
||||
if (!C->getZExtValue())
|
||||
return;
|
||||
else
|
||||
Cmp = 0; // unconditional branch
|
||||
Cmp = nullptr; // unconditional branch
|
||||
}
|
||||
++ChecksAdded;
|
||||
|
||||
@@ -168,7 +168,7 @@ bool BoundsChecking::runOnFunction(Function &F) {
|
||||
DL = &getAnalysis<DataLayoutPass>().getDataLayout();
|
||||
TLI = &getAnalysis<TargetLibraryInfo>();
|
||||
|
||||
TrapBB = 0;
|
||||
TrapBB = nullptr;
|
||||
BuilderTy TheBuilder(F.getContext(), TargetFolder(DL));
|
||||
Builder = &TheBuilder;
|
||||
ObjectSizeOffsetEvaluator TheObjSizeEval(DL, TLI, F.getContext(),
|
||||
|
||||
@@ -211,7 +211,8 @@ class DataFlowSanitizer : public ModulePass {
|
||||
|
||||
public:
|
||||
DataFlowSanitizer(StringRef ABIListFile = StringRef(),
|
||||
void *(*getArgTLS)() = 0, void *(*getRetValTLS)() = 0);
|
||||
void *(*getArgTLS)() = nullptr,
|
||||
void *(*getRetValTLS)() = nullptr);
|
||||
static char ID;
|
||||
bool doInitialization(Module &M) override;
|
||||
bool runOnModule(Module &M) override;
|
||||
@@ -233,8 +234,8 @@ struct DFSanFunction {
|
||||
|
||||
DFSanFunction(DataFlowSanitizer &DFS, Function *F, bool IsNativeABI)
|
||||
: DFS(DFS), F(F), IA(DFS.getInstrumentedABI()),
|
||||
IsNativeABI(IsNativeABI), ArgTLSPtr(0), RetvalTLSPtr(0),
|
||||
LabelReturnAlloca(0) {}
|
||||
IsNativeABI(IsNativeABI), ArgTLSPtr(nullptr), RetvalTLSPtr(nullptr),
|
||||
LabelReturnAlloca(nullptr) {}
|
||||
Value *getArgTLSPtr();
|
||||
Value *getArgTLS(unsigned Index, Instruction *Pos);
|
||||
Value *getRetvalTLS();
|
||||
@@ -303,7 +304,7 @@ FunctionType *DataFlowSanitizer::getArgsFunctionType(FunctionType *T) {
|
||||
ArgTypes.push_back(ShadowPtrTy);
|
||||
Type *RetType = T->getReturnType();
|
||||
if (!RetType->isVoidTy())
|
||||
RetType = StructType::get(RetType, ShadowTy, (Type *)0);
|
||||
RetType = StructType::get(RetType, ShadowTy, (Type *)nullptr);
|
||||
return FunctionType::get(RetType, ArgTypes, T->isVarArg());
|
||||
}
|
||||
|
||||
@@ -373,18 +374,20 @@ bool DataFlowSanitizer::doInitialization(Module &M) {
|
||||
|
||||
if (GetArgTLSPtr) {
|
||||
Type *ArgTLSTy = ArrayType::get(ShadowTy, 64);
|
||||
ArgTLS = 0;
|
||||
ArgTLS = nullptr;
|
||||
GetArgTLS = ConstantExpr::getIntToPtr(
|
||||
ConstantInt::get(IntptrTy, uintptr_t(GetArgTLSPtr)),
|
||||
PointerType::getUnqual(
|
||||
FunctionType::get(PointerType::getUnqual(ArgTLSTy), (Type *)0)));
|
||||
FunctionType::get(PointerType::getUnqual(ArgTLSTy),
|
||||
(Type *)nullptr)));
|
||||
}
|
||||
if (GetRetvalTLSPtr) {
|
||||
RetvalTLS = 0;
|
||||
RetvalTLS = nullptr;
|
||||
GetRetvalTLS = ConstantExpr::getIntToPtr(
|
||||
ConstantInt::get(IntptrTy, uintptr_t(GetRetvalTLSPtr)),
|
||||
PointerType::getUnqual(
|
||||
FunctionType::get(PointerType::getUnqual(ShadowTy), (Type *)0)));
|
||||
FunctionType::get(PointerType::getUnqual(ShadowTy),
|
||||
(Type *)nullptr)));
|
||||
}
|
||||
|
||||
ColdCallWeights = MDBuilder(*Ctx).createBranchWeights(1, 1000);
|
||||
@@ -629,7 +632,7 @@ bool DataFlowSanitizer::runOnModule(Module &M) {
|
||||
// function... yet.
|
||||
} else if (FT->isVarArg()) {
|
||||
UnwrappedFnMap[&F] = &F;
|
||||
*i = 0;
|
||||
*i = nullptr;
|
||||
} else if (!IsZeroArgsVoidRet || getWrapperKind(&F) == WK_Custom) {
|
||||
// Build a wrapper function for F. The wrapper simply calls F, and is
|
||||
// added to FnsToInstrument so that any instrumentation according to its
|
||||
@@ -1312,7 +1315,7 @@ void DFSanVisitor::visitCallSite(CallSite CS) {
|
||||
}
|
||||
}
|
||||
|
||||
Instruction *Next = 0;
|
||||
Instruction *Next = nullptr;
|
||||
if (!CS.getType()->isVoidTy()) {
|
||||
if (InvokeInst *II = dyn_cast<InvokeInst>(CS.getInstruction())) {
|
||||
if (II->getNormalDest()->getSinglePredecessor()) {
|
||||
|
||||
@@ -118,7 +118,7 @@ public:
|
||||
|
||||
void visitInstruction(Instruction &I) {
|
||||
if (I.getMetadata(LLVMContext::MD_dbg))
|
||||
I.setMetadata(LLVMContext::MD_dbg, 0);
|
||||
I.setMetadata(LLVMContext::MD_dbg, nullptr);
|
||||
}
|
||||
|
||||
void run(Module *M) {
|
||||
@@ -168,11 +168,11 @@ class DIUpdater : public InstVisitor<DIUpdater> {
|
||||
|
||||
public:
|
||||
DIUpdater(Module &M, StringRef Filename = StringRef(),
|
||||
StringRef Directory = StringRef(), const Module *DisplayM = 0,
|
||||
const ValueToValueMapTy *VMap = 0)
|
||||
StringRef Directory = StringRef(), const Module *DisplayM = nullptr,
|
||||
const ValueToValueMapTy *VMap = nullptr)
|
||||
: Builder(M), Layout(&M), LineTable(DisplayM ? DisplayM : &M), VMap(VMap),
|
||||
Finder(), Filename(Filename), Directory(Directory), FileNode(0),
|
||||
LexicalBlockFileNode(0), CUNode(0) {
|
||||
Finder(), Filename(Filename), Directory(Directory), FileNode(nullptr),
|
||||
LexicalBlockFileNode(nullptr), CUNode(nullptr) {
|
||||
Finder.processModule(M);
|
||||
visit(&M);
|
||||
}
|
||||
@@ -184,7 +184,7 @@ public:
|
||||
report_fatal_error("DebugIR pass supports only a signle compile unit per "
|
||||
"Module.");
|
||||
createCompileUnit(Finder.compile_unit_count() == 1 ?
|
||||
(MDNode*)*Finder.compile_units().begin() : 0);
|
||||
(MDNode*)*Finder.compile_units().begin() : nullptr);
|
||||
}
|
||||
|
||||
void visitFunction(Function &F) {
|
||||
@@ -232,7 +232,7 @@ public:
|
||||
/// If a ValueToValueMap is provided, use it to get the real instruction as
|
||||
/// the line table was generated on a clone of the module on which we are
|
||||
/// operating.
|
||||
Value *RealInst = 0;
|
||||
Value *RealInst = nullptr;
|
||||
if (VMap)
|
||||
RealInst = VMap->lookup(&I);
|
||||
|
||||
@@ -256,7 +256,7 @@ public:
|
||||
NewLoc = DebugLoc::get(Line, Col, Loc.getScope(RealInst->getContext()),
|
||||
Loc.getInlinedAt(RealInst->getContext()));
|
||||
else if (MDNode *scope = findScope(&I))
|
||||
NewLoc = DebugLoc::get(Line, Col, scope, 0);
|
||||
NewLoc = DebugLoc::get(Line, Col, scope, nullptr);
|
||||
else {
|
||||
DEBUG(dbgs() << "WARNING: no valid scope for instruction " << &I
|
||||
<< ". no DebugLoc will be present."
|
||||
@@ -334,7 +334,7 @@ private:
|
||||
}
|
||||
DEBUG(dbgs() << "unable to find DISubprogram node for function "
|
||||
<< F->getName().str() << "\n");
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/// Sets Line to the line number on which V appears and returns true. If a
|
||||
@@ -366,7 +366,7 @@ private:
|
||||
TypeNodeIter i = TypeDescriptors.find(T);
|
||||
if (i != TypeDescriptors.end())
|
||||
return i->second;
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/// Returns a DebugInfo type from an LLVM type T.
|
||||
@@ -375,12 +375,12 @@ private:
|
||||
if (N)
|
||||
return DIDerivedType(N);
|
||||
else if (T->isVoidTy())
|
||||
return DIDerivedType(0);
|
||||
return DIDerivedType(nullptr);
|
||||
else if (T->isStructTy()) {
|
||||
N = Builder.createStructType(
|
||||
DIScope(LexicalBlockFileNode), T->getStructName(), DIFile(FileNode),
|
||||
0, Layout.getTypeSizeInBits(T), Layout.getABITypeAlignment(T), 0,
|
||||
DIType(0), DIArray(0)); // filled in later
|
||||
DIType(nullptr), DIArray(nullptr)); // filled in later
|
||||
|
||||
// N is added to the map (early) so that element search below can find it,
|
||||
// so as to avoid infinite recursion for structs that contain pointers to
|
||||
@@ -535,7 +535,7 @@ void DebugIR::writeDebugBitcode(const Module *M, int *fd) {
|
||||
Out.reset(new raw_fd_ostream(*fd, true));
|
||||
}
|
||||
|
||||
M->print(*Out, 0);
|
||||
M->print(*Out, nullptr);
|
||||
Out->close();
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ private:
|
||||
/// Write M to disk, optionally passing in an fd to an open file which is
|
||||
/// closed by this function after writing. If no fd is specified, a new file
|
||||
/// is opened, written, and closed.
|
||||
void writeDebugBitcode(const llvm::Module *M, int *fd = 0);
|
||||
void writeDebugBitcode(const llvm::Module *M, int *fd = nullptr);
|
||||
};
|
||||
|
||||
} // llvm namespace
|
||||
|
||||
@@ -215,8 +215,8 @@ class MemorySanitizer : public FunctionPass {
|
||||
StringRef BlacklistFile = StringRef())
|
||||
: FunctionPass(ID),
|
||||
TrackOrigins(std::max(TrackOrigins, (int)ClTrackOrigins)),
|
||||
DL(0),
|
||||
WarningFn(0),
|
||||
DL(nullptr),
|
||||
WarningFn(nullptr),
|
||||
BlacklistFile(BlacklistFile.empty() ? ClBlacklistFile : BlacklistFile),
|
||||
WrapIndirectCalls(!ClWrapIndirectCalls.empty()) {}
|
||||
const char *getPassName() const override { return "MemorySanitizer"; }
|
||||
@@ -371,31 +371,32 @@ void MemorySanitizer::initializeCallbacks(Module &M) {
|
||||
// Create globals.
|
||||
RetvalTLS = new GlobalVariable(
|
||||
M, ArrayType::get(IRB.getInt64Ty(), 8), false,
|
||||
GlobalVariable::ExternalLinkage, 0, "__msan_retval_tls", 0,
|
||||
GlobalVariable::ExternalLinkage, nullptr, "__msan_retval_tls", nullptr,
|
||||
GlobalVariable::InitialExecTLSModel);
|
||||
RetvalOriginTLS = new GlobalVariable(
|
||||
M, OriginTy, false, GlobalVariable::ExternalLinkage, 0,
|
||||
"__msan_retval_origin_tls", 0, GlobalVariable::InitialExecTLSModel);
|
||||
M, OriginTy, false, GlobalVariable::ExternalLinkage, nullptr,
|
||||
"__msan_retval_origin_tls", nullptr, GlobalVariable::InitialExecTLSModel);
|
||||
|
||||
ParamTLS = new GlobalVariable(
|
||||
M, ArrayType::get(IRB.getInt64Ty(), 1000), false,
|
||||
GlobalVariable::ExternalLinkage, 0, "__msan_param_tls", 0,
|
||||
GlobalVariable::ExternalLinkage, nullptr, "__msan_param_tls", nullptr,
|
||||
GlobalVariable::InitialExecTLSModel);
|
||||
ParamOriginTLS = new GlobalVariable(
|
||||
M, ArrayType::get(OriginTy, 1000), false, GlobalVariable::ExternalLinkage,
|
||||
0, "__msan_param_origin_tls", 0, GlobalVariable::InitialExecTLSModel);
|
||||
nullptr, "__msan_param_origin_tls", nullptr,
|
||||
GlobalVariable::InitialExecTLSModel);
|
||||
|
||||
VAArgTLS = new GlobalVariable(
|
||||
M, ArrayType::get(IRB.getInt64Ty(), 1000), false,
|
||||
GlobalVariable::ExternalLinkage, 0, "__msan_va_arg_tls", 0,
|
||||
GlobalVariable::ExternalLinkage, nullptr, "__msan_va_arg_tls", nullptr,
|
||||
GlobalVariable::InitialExecTLSModel);
|
||||
VAArgOverflowSizeTLS = new GlobalVariable(
|
||||
M, IRB.getInt64Ty(), false, GlobalVariable::ExternalLinkage, 0,
|
||||
"__msan_va_arg_overflow_size_tls", 0,
|
||||
M, IRB.getInt64Ty(), false, GlobalVariable::ExternalLinkage, nullptr,
|
||||
"__msan_va_arg_overflow_size_tls", nullptr,
|
||||
GlobalVariable::InitialExecTLSModel);
|
||||
OriginTLS = new GlobalVariable(
|
||||
M, IRB.getInt32Ty(), false, GlobalVariable::ExternalLinkage, 0,
|
||||
"__msan_origin_tls", 0, GlobalVariable::InitialExecTLSModel);
|
||||
M, IRB.getInt32Ty(), false, GlobalVariable::ExternalLinkage, nullptr,
|
||||
"__msan_origin_tls", nullptr, GlobalVariable::InitialExecTLSModel);
|
||||
|
||||
// We insert an empty inline asm after __msan_report* to avoid callback merge.
|
||||
EmptyAsm = InlineAsm::get(FunctionType::get(IRB.getVoidTy(), false),
|
||||
@@ -412,11 +413,11 @@ void MemorySanitizer::initializeCallbacks(Module &M) {
|
||||
if (ClWrapIndirectCallsFast) {
|
||||
MsandrModuleStart = new GlobalVariable(
|
||||
M, IRB.getInt32Ty(), false, GlobalValue::ExternalLinkage,
|
||||
0, "__executable_start");
|
||||
nullptr, "__executable_start");
|
||||
MsandrModuleStart->setVisibility(GlobalVariable::HiddenVisibility);
|
||||
MsandrModuleEnd = new GlobalVariable(
|
||||
M, IRB.getInt32Ty(), false, GlobalValue::ExternalLinkage,
|
||||
0, "_end");
|
||||
nullptr, "_end");
|
||||
MsandrModuleEnd->setVisibility(GlobalVariable::HiddenVisibility);
|
||||
}
|
||||
}
|
||||
@@ -734,7 +735,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
for (size_t i = 0, n = ShadowPHINodes.size(); i < n; i++) {
|
||||
PHINode *PN = ShadowPHINodes[i];
|
||||
PHINode *PNS = cast<PHINode>(getShadow(PN));
|
||||
PHINode *PNO = MS.TrackOrigins ? cast<PHINode>(getOrigin(PN)) : 0;
|
||||
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));
|
||||
@@ -770,7 +771,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
/// \brief Compute the shadow type that corresponds to a given Type.
|
||||
Type *getShadowTy(Type *OrigTy) {
|
||||
if (!OrigTy->isSized()) {
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
// For integer type, shadow is the same as the original type.
|
||||
// This may return weird-sized types like i1.
|
||||
@@ -850,7 +851,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
/// \brief Compute the origin address for a given function argument.
|
||||
Value *getOriginPtrForArgument(Value *A, IRBuilder<> &IRB,
|
||||
int ArgOffset) {
|
||||
if (!MS.TrackOrigins) return 0;
|
||||
if (!MS.TrackOrigins) return nullptr;
|
||||
Value *Base = IRB.CreatePointerCast(MS.ParamOriginTLS, MS.IntptrTy);
|
||||
Base = IRB.CreateAdd(Base, ConstantInt::get(MS.IntptrTy, ArgOffset));
|
||||
return IRB.CreateIntToPtr(Base, PointerType::get(MS.OriginTy, 0),
|
||||
@@ -891,7 +892,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
Constant *getCleanShadow(Value *V) {
|
||||
Type *ShadowTy = getShadowTy(V);
|
||||
if (!ShadowTy)
|
||||
return 0;
|
||||
return nullptr;
|
||||
return Constant::getNullValue(ShadowTy);
|
||||
}
|
||||
|
||||
@@ -911,7 +912,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
Constant *getPoisonedShadow(Value *V) {
|
||||
Type *ShadowTy = getShadowTy(V);
|
||||
if (!ShadowTy)
|
||||
return 0;
|
||||
return nullptr;
|
||||
return getPoisonedShadow(ShadowTy);
|
||||
}
|
||||
|
||||
@@ -1002,7 +1003,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
|
||||
/// \brief Get the origin for a value.
|
||||
Value *getOrigin(Value *V) {
|
||||
if (!MS.TrackOrigins) return 0;
|
||||
if (!MS.TrackOrigins) return nullptr;
|
||||
if (isa<Instruction>(V) || isa<Argument>(V)) {
|
||||
Value *Origin = OriginMap[V];
|
||||
if (!Origin) {
|
||||
@@ -1300,7 +1301,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
|
||||
public:
|
||||
Combiner(MemorySanitizerVisitor *MSV, IRBuilder<> &IRB) :
|
||||
Shadow(0), Origin(0), IRB(IRB), MSV(MSV) {}
|
||||
Shadow(nullptr), Origin(nullptr), IRB(IRB), MSV(MSV) {}
|
||||
|
||||
/// \brief Add a pair of shadow and origin values to the mix.
|
||||
Combiner &Add(Value *OpShadow, Value *OpOrigin) {
|
||||
@@ -1331,7 +1332,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
/// \brief Add an application value to the mix.
|
||||
Combiner &Add(Value *V) {
|
||||
Value *OpShadow = MSV->getShadow(V);
|
||||
Value *OpOrigin = MSV->MS.TrackOrigins ? MSV->getOrigin(V) : 0;
|
||||
Value *OpOrigin = MSV->MS.TrackOrigins ? MSV->getOrigin(V) : nullptr;
|
||||
return Add(OpShadow, OpOrigin);
|
||||
}
|
||||
|
||||
@@ -1546,7 +1547,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
void handleSignedRelationalComparison(ICmpInst &I) {
|
||||
Constant *constOp0 = dyn_cast<Constant>(I.getOperand(0));
|
||||
Constant *constOp1 = dyn_cast<Constant>(I.getOperand(1));
|
||||
Value* op = NULL;
|
||||
Value* op = nullptr;
|
||||
CmpInst::Predicate pre = I.getPredicate();
|
||||
if (constOp0 && constOp0->isNullValue() &&
|
||||
(pre == CmpInst::ICMP_SGT || pre == CmpInst::ICMP_SLE)) {
|
||||
@@ -1855,7 +1856,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
break;
|
||||
case 1:
|
||||
ConvertOp = I.getArgOperand(0);
|
||||
CopyOp = NULL;
|
||||
CopyOp = nullptr;
|
||||
break;
|
||||
default:
|
||||
llvm_unreachable("Cvt intrinsic with unsupported number of arguments.");
|
||||
@@ -1869,7 +1870,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
// FIXME: consider propagating shadow of ConvertOp, at least in the case of
|
||||
// int->any conversion.
|
||||
Value *ConvertShadow = getShadow(ConvertOp);
|
||||
Value *AggShadow = 0;
|
||||
Value *AggShadow = nullptr;
|
||||
if (ConvertOp->getType()->isVectorTy()) {
|
||||
AggShadow = IRB.CreateExtractElement(
|
||||
ConvertShadow, ConstantInt::get(IRB.getInt32Ty(), 0));
|
||||
@@ -2121,7 +2122,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
continue;
|
||||
}
|
||||
unsigned Size = 0;
|
||||
Value *Store = 0;
|
||||
Value *Store = nullptr;
|
||||
// Compute the Shadow for arg even if it is ByVal, because
|
||||
// in that case getShadow() will copy the actual arg shadow to
|
||||
// __msan_param_tls.
|
||||
@@ -2164,7 +2165,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
// Until we have full dynamic coverage, make sure the retval shadow is 0.
|
||||
Value *Base = getShadowPtrForRetval(&I, IRBBefore);
|
||||
IRBBefore.CreateAlignedStore(getCleanShadow(&I), Base, kShadowTLSAlignment);
|
||||
Instruction *NextInsn = 0;
|
||||
Instruction *NextInsn = nullptr;
|
||||
if (CS.isCall()) {
|
||||
NextInsn = I.getNextNode();
|
||||
} else {
|
||||
@@ -2384,7 +2385,8 @@ struct VarArgAMD64Helper : public VarArgHelper {
|
||||
|
||||
VarArgAMD64Helper(Function &F, MemorySanitizer &MS,
|
||||
MemorySanitizerVisitor &MSV)
|
||||
: F(F), MS(MS), MSV(MSV), VAArgTLSCopy(0), VAArgOverflowSize(0) { }
|
||||
: F(F), MS(MS), MSV(MSV), VAArgTLSCopy(nullptr),
|
||||
VAArgOverflowSize(nullptr) {}
|
||||
|
||||
enum ArgKind { AK_GeneralPurpose, AK_FloatingPoint, AK_Memory };
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace {
|
||||
struct ThreadSanitizer : public FunctionPass {
|
||||
ThreadSanitizer(StringRef BlacklistFile = StringRef())
|
||||
: FunctionPass(ID),
|
||||
DL(0),
|
||||
DL(nullptr),
|
||||
BlacklistFile(BlacklistFile.empty() ? ClBlacklistFile
|
||||
: BlacklistFile) { }
|
||||
const char *getPassName() const override;
|
||||
@@ -174,8 +174,8 @@ void ThreadSanitizer::initializeCallbacks(Module &M) {
|
||||
|
||||
for (int op = AtomicRMWInst::FIRST_BINOP;
|
||||
op <= AtomicRMWInst::LAST_BINOP; ++op) {
|
||||
TsanAtomicRMW[op][i] = NULL;
|
||||
const char *NamePart = NULL;
|
||||
TsanAtomicRMW[op][i] = nullptr;
|
||||
const char *NamePart = nullptr;
|
||||
if (op == AtomicRMWInst::Xchg)
|
||||
NamePart = "_exchange";
|
||||
else if (op == AtomicRMWInst::Add)
|
||||
@@ -518,7 +518,7 @@ bool ThreadSanitizer::instrumentAtomic(Instruction *I) {
|
||||
if (Idx < 0)
|
||||
return false;
|
||||
Function *F = TsanAtomicRMW[RMWI->getOperation()][Idx];
|
||||
if (F == NULL)
|
||||
if (!F)
|
||||
return false;
|
||||
const size_t ByteSize = 1 << Idx;
|
||||
const size_t BitSize = ByteSize * 8;
|
||||
|
||||
Reference in New Issue
Block a user