From: John Criswell
The function type can be thought of as a function signature. It consists of a return type and a list of formal parameter types. -Function types are usually used when to build virtual function tables +Function types are usually used to build virtual function tables (which are structures of pointers to functions), for indirect function calls, and when defining a function.
++The return type of a function type cannot be an aggregate type. +
<returntype> (<parameter list>)
Where '<parameter list>' is a comma-separated list of @@ -638,6 +641,12 @@ immediately executed on entrance to the function, and it is not allowed to have predecessor basic blocks (i.e. there can not be any branches to the entry block of a function). Because the block can have no predecessors, it also cannot have any PHI nodes.
++LLVM functions are identified by their name and type signature. Hence, two +functions with the same name but different parameter lists or return values +are considered different functions, and LLVM will resolves references to each +appropriately. +