diff options
Diffstat (limited to 'llvm/lib/Analysis/StackSafetyAnalysis.cpp')
-rw-r--r-- | llvm/lib/Analysis/StackSafetyAnalysis.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/StackSafetyAnalysis.cpp b/llvm/lib/Analysis/StackSafetyAnalysis.cpp index 9c937b0..a447326 100644 --- a/llvm/lib/Analysis/StackSafetyAnalysis.cpp +++ b/llvm/lib/Analysis/StackSafetyAnalysis.cpp @@ -345,12 +345,18 @@ bool StackSafetyLocalAnalysis::analyzeAllUses(Value *Ptr, UseInfo &US) { assert(isa<Function>(Callee) || isa<GlobalAlias>(Callee)); auto B = CB.arg_begin(), E = CB.arg_end(); + int Found = 0; for (auto A = B; A != E; ++A) { if (A->get() == V) { + ++Found; ConstantRange Offset = offsetFrom(UI, Ptr); US.Calls.emplace_back(Callee, A - B, Offset); } } + if (!Found) { + US.updateRange(UnknownRange); + return false; + } break; } |