diff options
author | Chen Zheng <czhengsz@cn.ibm.com> | 2022-06-30 05:26:27 -0400 |
---|---|---|
committer | Chen Zheng <czhengsz@cn.ibm.com> | 2022-06-30 05:39:47 -0400 |
commit | b05801de35aa3eae2046224de975879b313d3ed7 (patch) | |
tree | 75c949fda9270aa858a366670435e4e1df98674b /llvm/lib/Transforms/Utils/InlineFunction.cpp | |
parent | 5fe0da6d7bcda22b03c470bef030030fa2d6d6f0 (diff) | |
download | llvm-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.cpp | 10 |
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); |