diff options
author | Florian Mayer <fmayer@google.com> | 2021-09-09 13:07:10 +0100 |
---|---|---|
committer | Florian Mayer <fmayer@google.com> | 2021-09-09 13:13:18 +0100 |
commit | 6e12c73316b765e8a9bc814579352ab3bf50ee75 (patch) | |
tree | 9c6d0b7547413bde228ccba77612c5fb7ffda7e5 /llvm/lib/Analysis/StackSafetyAnalysis.cpp | |
parent | cda1450f1c771712718ef3585315f0ecbb708d8d (diff) | |
download | llvm-6e12c73316b765e8a9bc814579352ab3bf50ee75.zip llvm-6e12c73316b765e8a9bc814579352ab3bf50ee75.tar.gz llvm-6e12c73316b765e8a9bc814579352ab3bf50ee75.tar.bz2 |
[NFC] [stack-safety] add placeholder addRange.
This is in preparataion of D108457.
Diffstat (limited to 'llvm/lib/Analysis/StackSafetyAnalysis.cpp')
-rw-r--r-- | llvm/lib/Analysis/StackSafetyAnalysis.cpp | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/llvm/lib/Analysis/StackSafetyAnalysis.cpp b/llvm/lib/Analysis/StackSafetyAnalysis.cpp index a157fec..431d1af 100644 --- a/llvm/lib/Analysis/StackSafetyAnalysis.cpp +++ b/llvm/lib/Analysis/StackSafetyAnalysis.cpp @@ -129,6 +129,9 @@ template <typename CalleeTy> struct UseInfo { UseInfo(unsigned PointerSize) : Range{PointerSize, false} {} void updateRange(const ConstantRange &R) { Range = unionNoWrap(Range, R); } + void addRange(const Instruction *I, const ConstantRange &R) { + updateRange(R); + } }; template <typename CalleeTy> @@ -348,11 +351,11 @@ void StackSafetyLocalAnalysis::analyzeAllUses(Value *Ptr, switch (I->getOpcode()) { case Instruction::Load: { if (AI && !SL.isAliveAfter(AI, I)) { - US.updateRange(UnknownRange); + US.addRange(I, UnknownRange); return; } - US.updateRange( - getAccessRange(UI, Ptr, DL.getTypeStoreSize(I->getType()))); + US.addRange(I, + getAccessRange(UI, Ptr, DL.getTypeStoreSize(I->getType()))); break; } @@ -362,15 +365,16 @@ void StackSafetyLocalAnalysis::analyzeAllUses(Value *Ptr, case Instruction::Store: { if (V == I->getOperand(0)) { // Stored the pointer - conservatively assume it may be unsafe. - US.updateRange(UnknownRange); + US.addRange(I, UnknownRange); return; } if (AI && !SL.isAliveAfter(AI, I)) { - US.updateRange(UnknownRange); + US.addRange(I, UnknownRange); return; } - US.updateRange(getAccessRange( - UI, Ptr, DL.getTypeStoreSize(I->getOperand(0)->getType()))); + US.addRange( + I, getAccessRange( + UI, Ptr, DL.getTypeStoreSize(I->getOperand(0)->getType()))); break; } @@ -378,7 +382,7 @@ void StackSafetyLocalAnalysis::analyzeAllUses(Value *Ptr, // Information leak. // FIXME: Process parameters correctly. This is a leak only if we return // alloca. - US.updateRange(UnknownRange); + US.addRange(I, UnknownRange); return; case Instruction::Call: @@ -387,25 +391,26 @@ void StackSafetyLocalAnalysis::analyzeAllUses(Value *Ptr, break; if (AI && !SL.isAliveAfter(AI, I)) { - US.updateRange(UnknownRange); + US.addRange(I, UnknownRange); return; } if (const MemIntrinsic *MI = dyn_cast<MemIntrinsic>(I)) { - US.updateRange(getMemIntrinsicAccessRange(MI, UI, Ptr)); + US.addRange(I, getMemIntrinsicAccessRange(MI, UI, Ptr)); break; } const auto &CB = cast<CallBase>(*I); if (!CB.isArgOperand(&UI)) { - US.updateRange(UnknownRange); + US.addRange(I, UnknownRange); return; } unsigned ArgNo = CB.getArgOperandNo(&UI); if (CB.isByValArgument(ArgNo)) { - US.updateRange(getAccessRange( - UI, Ptr, DL.getTypeStoreSize(CB.getParamByValType(ArgNo)))); + US.addRange(I, getAccessRange( + UI, Ptr, + DL.getTypeStoreSize(CB.getParamByValType(ArgNo)))); break; } @@ -415,7 +420,7 @@ void StackSafetyLocalAnalysis::analyzeAllUses(Value *Ptr, const GlobalValue *Callee = dyn_cast<GlobalValue>(CB.getCalledOperand()->stripPointerCasts()); if (!Callee) { - US.updateRange(UnknownRange); + US.addRange(I, UnknownRange); return; } |