[llvm-dev] ABI-specific Stack Pointer Register?

Kavon Farvardin via llvm-dev llvm-dev at lists.llvm.org
Wed Dec 4 12:15:43 PST 2019


Hi,

In the runtime system for GHC Haskell, the stack pointer register is not the
same as the one defined by the operating system ABI, and it's difficult for GHC
to change that. Following the example of CoreCLR in LLVM, it seems one way to
remedy this situation is to define a new ABI (i.e., a new
llvm::Triple::EnvironmentType ) and modify the code generator as-needed to
respect to our ABI, through our own definition of an MCAsmInfo class for each
architecture, etc.

My question is: how feasible is it to extend MCAsmInfo with an override for the
stack pointer register and have that fact be respected by the code generator? 

Currently, MCAsmInfo only specifies the stack direction, and from what I've seen
in the x86 backend (and instruction selection), RSP is assumed to be the stack-
pointer register and is hard-coded in a number of places.

Any other suggestions of alternate ways to achieve this change in LLVM code
generation for both ARM64 and x86-64 are welcomed!

Thanks,
Kavon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191204/5fc77963/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191204/5fc77963/attachment.sig>


More information about the llvm-dev mailing list