diff options
Diffstat (limited to 'llvm/lib/Analysis/Lint.cpp')
| -rw-r--r-- | llvm/lib/Analysis/Lint.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/Lint.cpp b/llvm/lib/Analysis/Lint.cpp index ff022006df65..1ebc593016bc 100644 --- a/llvm/lib/Analysis/Lint.cpp +++ b/llvm/lib/Analysis/Lint.cpp @@ -235,6 +235,10 @@ void Lint::visitCallBase(CallBase &I) { // If both arguments are readonly, they have no dependence. if (Formal->onlyReadsMemory() && I.onlyReadsMemory(ArgNo)) continue; + // Skip readnone arguments since those are guaranteed not to be + // dereferenced anyway. + if (I.doesNotAccessMemory(ArgNo)) + continue; if (AI != BI && (*BI)->getType()->isPointerTy()) { AliasResult Result = AA->alias(*AI, *BI); Check(Result != AliasResult::MustAlias && |
