[PATCH] D73209: [AIX] Implement caller arguments passed in stack memory

Zarko Todorovski via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 29 06:54:02 PST 2020


ZarkoCA added inline comments.


================
Comment at: llvm/lib/Target/PowerPC/PPCISelLowering.cpp:6886-6891
+        // If there are insufficient GPRs, the PSA needs to be initialized.
+        // Initialization occurs even if an FPR was initialized for
+        // compatibility with the AIX XL compiler. The full memory for the
+        // argument will be initialized even if a prior word is saved in GPR.
+        State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset, LocVT, LocInfo));
+        break;
----------------
cebowleratibm wrote:
> ZarkoCA wrote:
> > Can we add a test for this? Specifically checking if the full memory for the arg is initialized. 
> call_test_stackarg_float2 covers this scenario.  There are STFS and STFD for the trailing float and double args.
Yep, I missed it the first time, thanks for pointing it out. 


================
Comment at: llvm/lib/Target/PowerPC/PPCISelLowering.cpp:7061
+  const unsigned NumBytes = std::max(LinkageSize + MinParameterSaveAreaSize,
+                                     CCInfo.getNextStackOffset());
 
----------------
Does the value given by `CCInfo.getNextStackOffset()` account for the linkage save area?  I've found that it doesn't and only gives the size of the PSA when working on the callee side.    


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

https://reviews.llvm.org/D73209





More information about the llvm-commits mailing list