llvm.org GIT mirror llvm / dbee8c1
Update LangRef to emphasize the difference between "coldcc" and "preserve_mostcc". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199521 91177308-0d34-0410-b5e6-96231b3b80d8 Juergen Ributzka 6 years ago
1 changed file(s) with 9 addition(s) and 2 deletion(s). Raw diff Collapse all Expand all
311311 so that the call does not break any live ranges in the caller side.
312312 This calling convention does not support varargs and requires the
313313 prototype of all callees to exactly match the prototype of the
314 function definition.
314 function definition. Furthermore the inliner doesn't consider such function
315 calls for inlining.
315316 "``cc 10``" - GHC convention
316317 This calling convention has been implemented specifically for use by
317318 the `Glasgow Haskell Compiler (GHC) `_.
374375 that have a hot path and a cold path. The hot path is usually a small piece
375376 of code that doesn't many registers. The cold path might need to call out to
376377 another function and therefore only needs to preserve the caller-saved
377 registers, which haven't already been saved by the caller.
378 registers, which haven't already been saved by the caller. The
379 `PreserveMost` calling convention is very similar to the `cold` calling
380 convention in terms of caller/callee-saved registers, but they are used for
381 different types of function calls. `coldcc` is for function calls that are
382 rarely executed, whereas `preserve_mostcc` function calls are intended to be
383 on the hot path and definitely executed a lot. Furthermore `preserve_mostcc`
384 doesn't prevent the inliner from inlining the function call.
378385
379386 This calling convention will be used by a future version of the ObjectiveC
380387 runtime and should therefore still be considered experimental at this time.