[PATCH] D126861: [RISCV] Fix missing stack pointer recover

Roger Ferrer Ibanez via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 8 23:09:39 PDT 2022


rogfer01 added inline comments.


================
Comment at: llvm/lib/Target/RISCV/RISCVFrameLowering.cpp:648
+  if (RI->hasStackRealignment(MF) || MFI.hasVarSizedObjects() ||
+      !hasReservedCallFrame(MF)) {
     assert(hasFP(MF) && "frame pointer should not have been eliminated");
----------------
I assume that the exceptional path doesn't execute the `add sp, sp, 32` after `call _Z3fooiiiiiiiiiiPi at plt`, instead we directly land to `.LBB0_2: # %lpad`. If this is th case, it does leaves the stack unaligned.

However, the expansion of `!hasReservedCallFrame(MF)` results in checking `hasFP(MF) && hasRVVFrameObject(MF)`.

Isn't this an issue that happens irrespective of vectors and it is caused by having a `fp`? E.g. when using something like `-fno-omit-frame-pointer`.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D126861



More information about the llvm-commits mailing list