8

[llvm-dev] Suggestion / Help regarding new calling convention

 3 years ago
source link: http://lists.llvm.org/pipermail/llvm-dev/2016-June/101319.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Help regarding new calling convention

[llvm-dev] Suggestion / Help regarding new calling convention

vivek pandya via llvm-dev llvm-dev at lists.llvm.org
Mon Jun 20 07:39:32 PDT 2016


Dear Community,

To improve current interprocedural register allocation (IPRA) , we have
planned to set callee saved registers to none for local functions,
currently I am doing it in following way:

if (F->hasLocalLinkage()  && !F->hasAddressTaken()) {
   DEBUG(dbgs() << "Function has LocalLinkage \n");
F->setCallingConv(CallingConv::GHC);
 }

but we think threre should be clean and properway to do this perhaps like:

if (F->hasLocalLinkage() && !F->hasAddressTaken()) {
    DEBUG(dbgs() << "Function has LocalLinkage \n");
    F->setCallingConv(CallingConv::NO_Callee_Saved);
  }

So I would like to know any better suggestions and if it is better to add a
new CC for this purpose then what aspects should be considered while
defining a new CC. Actually in this case the new CC does not really
required to define how parameters should be passed or any special rule for
return value etc , it just required to set callee saved registers to be
none. So what are the minimal things required to define such a CC?

Other alternative that I have thought was to add new attribute for function
and use it like following in TargetFrameLowering::determineCalleeSaves()

 // In Naked functions we aren't going to save any registers.
  if (MF.getFunction()->hasFnAttribute(Attribute::Naked))
    return;

Any suggestions / thoughts are welcomed !

Sincerely,
Vivek
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160620/523dc115/attachment.html>




More information about the llvm-dev mailing list

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK