<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Feb 6, 2017 at 12:36 PM, Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 5 February 2017 at 23:41, Andrew Kelley via llvm-dev<br>
<<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
> Target: armv7<br>
<br>
On a debug compiler it looks like only x86 supports "coldcc" so you<br>
need to either implement ARM support or stop using that.<br></blockquote><div><br></div>Thanks Tim and apologies for my sloppy bug report.<div><br></div><div>Here is the text from the <a href="http://llvm.org/docs/LangRef.html#calling-conventions" target="_blank">language reference</a>:</div><div><br></div><div><div>“coldcc” - The cold calling convention</div><div>This calling convention attempts to make code in the caller as efficient as possible under the assumption that the call is not commonly executed. As such, these calls often preserve all registers so that the call does not break any live ranges in the caller side. This calling convention does not support varargs and requires the prototype of all callees to exactly match the prototype of the function definition. Furthermore the inliner doesn’t consider such function calls for inlining.</div><div><br></div></div><div>The phrasing of "attempts", "often", and the fact that it provides hints to the inliner makes it sound like coldcc is:</div><div><br></div><div> * useful for optimization purposes regardless of an ABI</div><div> * not necessarily the same ABI on every target - and some ABI will be chosen even if it is just the c calling convention<br></div><div><br></div><div><br></div></div></div></div>