[PATCH] D127209: [SVE][AArch64] Refine hasSVEArgsOrReturn

Eli Friedman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 16 10:53:09 PDT 2022


efriedma added inline comments.


================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:6196
+      CallConv = CallingConv::AArch64_SVE_VectorCall;
+      FuncInfo->setIsSVECC(true);
+    }
----------------
MattDevereau wrote:
> efriedma wrote:
> > I don't understand what you're doing here; FuncInfo describes the caller, not the callee.
> Not doing this causes `sve_caller_sve_callee` and `sve_caller_sve_callee_fastcc` in `sve-tailcall.ll` to fail.
> From `ISD::InputArg`:
> 
> ```
>   /// InputArg - This struct carries flags and type information about a
>   /// single incoming (formal) argument or incoming (from the perspective
>   /// of the caller) return value virtual register.
>   ///
> ```
In @sve_caller_sve_callee, the return type is an SVE type, so we should be calling `setIsSVECC(true)` elsewhere.

I think this maybe another case of the issue that LowerReturn doesn't run/runs too late?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127209/new/

https://reviews.llvm.org/D127209



More information about the llvm-commits mailing list