[llvm] [ArgPromotion] Handle pointer arguments of recursive calls (PR #78735)
Vedant Paranjape via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 13 13:04:37 PDT 2024
================
@@ -422,13 +422,16 @@ doPromotion(Function *F, FunctionAnalysisManager &FAM,
/// Return true if we can prove that all callees pass in a valid pointer for the
/// specified function argument.
-static bool allCallersPassValidPointerForArgument(Argument *Arg,
- Align NeededAlign,
- uint64_t NeededDerefBytes) {
+static bool allCallersPassValidPointerForArgument(
+ Argument *Arg, SmallPtrSet<CallBase *, 4> &RecursiveCalls,
+ Align NeededAlign, uint64_t NeededDerefBytes) {
Function *Callee = Arg->getParent();
const DataLayout &DL = Callee->getParent()->getDataLayout();
APInt Bytes(64, NeededDerefBytes);
+ if (RecursiveCalls.size())
+ return true;
----------------
vedantparanjape-amd wrote:
@efriedma-quic sorry for the tag, but I was able to get it working with align. Pushed a cleaned up patch, hope it is in a mergeable state now :) and can get a LGTM!
https://github.com/llvm/llvm-project/pull/78735
More information about the llvm-commits
mailing list