diff options
Diffstat (limited to 'lib/Analysis/Lint.cpp')
-rw-r--r-- | lib/Analysis/Lint.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/Analysis/Lint.cpp b/lib/Analysis/Lint.cpp index b27ca47142..4318a30fa6 100644 --- a/lib/Analysis/Lint.cpp +++ b/lib/Analysis/Lint.cpp @@ -231,10 +231,11 @@ void Lint::visitCallSite(CallSite CS) { // to do. Known partial overlap is not distinguished from the case // where nothing is known. if (Formal->hasNoAliasAttr() && Actual->getType()->isPointerTy()) - for (CallSite::arg_iterator BI = CS.arg_begin(); BI != AE; ++BI) { - Assert1(AI == BI || AA->alias(*AI, *BI) != AliasAnalysis::MustAlias, + for (CallSite::arg_iterator BI = CS.arg_begin(); BI != AE; ++BI) + Assert1(AI == BI || + !(*BI)->getType()->isPointerTy() || + AA->alias(*AI, *BI) != AliasAnalysis::MustAlias, "Unusual: noalias argument aliases another argument", &I); - } // Check that an sret argument points to valid memory. if (Formal->hasStructRetAttr() && Actual->getType()->isPointerTy()) { |