aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/InlineFunction.cpp
diff options
context:
space:
mode:
authorJohannes Doerfert <johannes@jdoerfert.de>2020-01-28 00:20:03 -0600
committerJohannes Doerfert <johannes@jdoerfert.de>2020-02-02 23:21:29 -0600
commit342357c5687efcb6bf8191684212507226085317 (patch)
tree7d3c72410e13253cbede20561b3b1cbaf5193c30 /llvm/lib/Transforms/Utils/InlineFunction.cpp
parentc953409ff89e38f5aa5927f5adae3078db45d81c (diff)
downloadllvm-342357c5687efcb6bf8191684212507226085317.zip
llvm-342357c5687efcb6bf8191684212507226085317.tar.gz
llvm-342357c5687efcb6bf8191684212507226085317.tar.bz2
[Inliner][NoAlias] Use call site attributes too
If we had `noalias` on an argument the inliner created alias scope metadata already. However, the call site `noalias` annotation was not considered. Since the Attributor can derive such call site `noalias` annotation we should treat them the same as argument annotations. Reviewed By: hfinkel Differential Revision: https://reviews.llvm.org/D73528
Diffstat (limited to 'llvm/lib/Transforms/Utils/InlineFunction.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/InlineFunction.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp
index 90da27c..8089377 100644
--- a/llvm/lib/Transforms/Utils/InlineFunction.cpp
+++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp
@@ -925,7 +925,7 @@ static void AddAliasScopeMetadata(CallSite CS, ValueToValueMapTy &VMap,
SmallVector<const Argument *, 4> NoAliasArgs;
for (const Argument &Arg : CalledFunc->args())
- if (Arg.hasNoAliasAttr() && !Arg.use_empty())
+ if (CS.paramHasAttr(Arg.getArgNo(), Attribute::NoAlias) && !Arg.use_empty())
NoAliasArgs.push_back(&Arg);
if (NoAliasArgs.empty())
@@ -1058,7 +1058,7 @@ static void AddAliasScopeMetadata(CallSite CS, ValueToValueMapTy &VMap,
// completely describe the aliasing properties using alias.scope
// metadata (and, thus, won't add any).
if (const Argument *A = dyn_cast<Argument>(V)) {
- if (!A->hasNoAliasAttr())
+ if (!CS.paramHasAttr(A->getArgNo(), Attribute::NoAlias))
UsesAliasingPtr = true;
} else {
UsesAliasingPtr = true;