[PATCH] D98789: [PEI] add dwarf information for stack probe

Eli Friedman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 18 21:21:58 PDT 2021


efriedma added a comment.

Normally, I'd expect some register is naturally free in the prologue, but you could get into weird situations.  On 32-bit specifically, consider compiling with -mregparm=3; I think there are no registers which are unconditionally safe in that case.  One possibility is to always use EAX, and just save/restore it if necessary.  See isEAXAlive in X86FrameLowering::emitPrologue.

Alternatively, you could ensure that some callee-save GPR is spilled, and explicitly use that register.  This is taking advantage of the fact this is part of the prologue: there can't be any other uses of callee-save registers at that point. (In theory, it might be possibly for an exotic calling convention to have no callee-save registers, but I don't think there are any in practice.)

Outside the prologue, the allocation should be represented by some instruction; that instruction should clobber some register, and regalloc will ensure that register is free.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D98789



More information about the llvm-commits mailing list