From: Chris Lattner
Constructor used when you need to create new Functions to add the the program. The constructor must specify the type of the function to - create and whether or not it should start out with internal or external - linkage. The FunctionType argument + create and what type of linkage the function should have. The FunctionType argument specifies the formal arguments and return value for the function. The same FunctionType value can be used to create multiple functions. The Parent argument specifies the Module