[llvm-dev] preserve registers across function call

Xiaochu Liu via llvm-dev
Thu, 27 Aug 2015 01:51:56 -0000

Hi Marcello,

Thanks for your reply. I will try to pass down the mask!
I have one more question. In my backend I return CSR_RegMask in
getCallPreservedMask and return CSR_SaveList in getCalleeSavedRegs. Is that
a correct setup? I dumped the regmask and found that callee saved regs are
marked 1 and non-callee saved regs are 0.

Thanks,
Xiaochu



On Wed, Aug 26, 2015 at 5:58 PM Marcello Maggioni <mmaggioni at apple.com>
wrote:

> Is the preserved mask passed down to your Call instruction in LowerCall ?
>
> Marcello
>
> On 26 Aug 2015, at 17:52, Xiaochu Liu via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
> Dear there,
>
> I was wondering how to preserve registers (caller saved) across calls. I
> implemented getCalleeSavedRegs and getCallPreservedMask. But the
> non-callee-saved registers are still not saved by caller. I want to spill
> these registers in use on stack right before the call. From my
> understanding, the register allocator in llvm will do the spill and
> restoring automatically? Is there anything I was supposed to do to make it
> happen?
>
> Thanks,
> Xiaochu
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
>
>
https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Ddev&d=BQIGaQ&c=eEvniauFctOgLOKGJOplqw&r=THu9ANfN9LYlQTYNQdmA7D-MsdMl2OioTAKXjMfn7i4&m=T0_ZG8YhyugTycTFs3lQPt6d4mu6n739A4TOI-X1aJ0&s=xBBwHMhNOhAnZr_RXMJN6_kyjY2Wnap1c9aCtrfM7T8&e>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20150827/d23075f6/attachment.html>