aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/InlineFunction.cpp
diff options
context:
space:
mode:
authorChen Zheng <czhengsz@cn.ibm.com>2022-06-30 05:26:27 -0400
committerChen Zheng <czhengsz@cn.ibm.com>2022-06-30 05:39:47 -0400
commitb05801de35aa3eae2046224de975879b313d3ed7 (patch)
tree75c949fda9270aa858a366670435e4e1df98674b /llvm/lib/Transforms/Utils/InlineFunction.cpp
parent5fe0da6d7bcda22b03c470bef030030fa2d6d6f0 (diff)
downloadllvm-b05801de35aa3eae2046224de975879b313d3ed7.zip
llvm-b05801de35aa3eae2046224de975879b313d3ed7.tar.gz
llvm-b05801de35aa3eae2046224de975879b313d3ed7.tar.bz2
[InlineFunction] Only check pointer arguments for a call
Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D128529
Diffstat (limited to 'llvm/lib/Transforms/Utils/InlineFunction.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/InlineFunction.cpp10
1 files changed, 4 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp
index c69ca70..226b00a 100644
--- a/llvm/lib/Transforms/Utils/InlineFunction.cpp
+++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp
@@ -1043,12 +1043,10 @@ static void AddAliasScopeMetadata(CallBase &CB, ValueToValueMapTy &VMap,
}
for (Value *Arg : Call->args()) {
- // We need to check the underlying objects of all arguments, not just
- // the pointer arguments, because we might be passing pointers as
- // integers, etc.
- // However, if we know that the call only accesses pointer arguments,
- // then we only need to check the pointer arguments.
- if (IsArgMemOnlyCall && !Arg->getType()->isPointerTy())
+ // Only care about pointer arguments. If a noalias argument is
+ // accessed through a non-pointer argument, it must be captured
+ // first (e.g. via ptrtoint), and we protect against captures below.
+ if (!Arg->getType()->isPointerTy())
continue;
PtrArgs.push_back(Arg);