From: Chen Zheng Date: Thu, 30 Jun 2022 09:26:27 +0000 (-0400) Subject: [InlineFunction] Only check pointer arguments for a call X-Git-Tag: upstream/15.0.7~3043 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b05801de35aa3eae2046224de975879b313d3ed7;p=platform%2Fupstream%2Fllvm.git [InlineFunction] Only check pointer arguments for a call Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D128529 --- 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);