diff options
author | Dan Gohman <gohman@apple.com> | 2010-12-10 20:04:06 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-12-10 20:04:06 +0000 |
commit | 201acdb6db84540351cfd0d343d6e2fb71b99925 (patch) | |
tree | a60311e189b3039422204b05dee526d23cce3728 /llvm/lib/Analysis/Lint.cpp | |
parent | 4431e31df01a0cbcedceb0b72bb684c7bbf7b58b (diff) | |
download | bcm5719-llvm-201acdb6db84540351cfd0d343d6e2fb71b99925.tar.gz bcm5719-llvm-201acdb6db84540351cfd0d343d6e2fb71b99925.zip |
Use PartialAlias to do better noalias lint checking.
llvm-svn: 121514
Diffstat (limited to 'llvm/lib/Analysis/Lint.cpp')
-rw-r--r-- | llvm/lib/Analysis/Lint.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/Analysis/Lint.cpp b/llvm/lib/Analysis/Lint.cpp index 0cdb4b1a1c9..270aa457f17 100644 --- a/llvm/lib/Analysis/Lint.cpp +++ b/llvm/lib/Analysis/Lint.cpp @@ -232,10 +232,12 @@ void Lint::visitCallSite(CallSite CS) { // where nothing is known. if (Formal->hasNoAliasAttr() && Actual->getType()->isPointerTy()) 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); + if (AI != BI && (*BI)->getType()->isPointerTy()) { + AliasAnalysis::AliasResult Result = AA->alias(*AI, *BI); + Assert1(Result != AliasAnalysis::MustAlias && + Result != AliasAnalysis::PartialAlias, + "Unusual: noalias argument aliases another argument", &I); + } // Check that an sret argument points to valid memory. if (Formal->hasStructRetAttr() && Actual->getType()->isPointerTy()) { |