Here is the text in LLVM's doc "langref":
"cc 10" - GHC convention
This calling convention has been implemented specifically for use by the Glasgow Haskell Compiler (GHC). It passes everything in registers, going to extremes to achieve this by disabling callee save registers. This calling convention should not be used lightly but only for specific situations such as an alternative to the register pinning performance technique often used when implementing functional programming languages.At the moment only X86 supports this convention and it has the following limitations:
- On X86-32 only supports up to 4 bit type parameters. No floating point types are supported.
- On X86-64 only supports up to 10 bit type parameters and 6 floating point parameters.
Q:
does "register pinning" means or refers to "passes everything in registers", likely.
what is "4 bit type parameters"? I just searched in the Intel's IA manual, but didn't find anything. does it a feature of Intel's CPU?