<i>; External declaration of the puts function</i>
<a href="#functionstructure">declare</a> int %puts(sbyte*) <i>; int(sbyte*)* </i>
+<i>; Global variable / Function body section separator</i>
+implementation
+
<i>; Definition of main function</i>
int %main() { <i>; int()* </i>
<i>; Convert [13x sbyte]* to sbyte *...</i>
array of char, and a pointer to a function), and have one of the following <a
href="#linkage">linkage types</a>.</p>
+<p>Due to a limitation in the current LLVM assembly parser (it is limited by
+one-token lookahead), modules are split into two pieces by the "implementation"
+keyword. Global variable prototypes and definitions must occur before the
+keyword, and function definitions must occur after it. Function prototypes may
+occur either before or after it. In the future, the implementation keyword may
+become a noop, if the parser gets smarter.</p>
+
</div>
<!-- ======================================================================= -->
prototype and implemented declaration of the function (as does normal C).
</dd>
+ <dt><b>"<tt>csretcc</tt>" - The C struct return calling convention</b>:</dt>
+
+ <dd>This calling convention matches the target C calling conventions, except
+ that functions with this convention are required to take a pointer as their
+ first argument, and the return type of the function must be void. This is
+ used for C functions that return aggregates by-value. In this case, the
+ function has been transformed to take a pointer to the struct as the first
+ argument to the function. For targets where the ABI specifies specific
+ behavior for structure-return calls, the calling convention can be used to
+ distinguish between struct return functions and other functions that take a
+ pointer to a struct as the first argument.
+ </dd>
+
<dt><b>"<tt>fastcc</tt>" - The fast calling convention</b>:</dt>
<dd>This calling convention attempts to make calls as fast as possible