This patch changes the generation of CGFunctionInfo to contain the FunctionProtoType if it is available. This enables the code generation for call instructions to look into this type for exception information and therefore generate better quality IR - it will not create invoke instructions for functions that are know not to throw.
The emission code had to be changed in a few places to keep the FunctionProtoType and, namely for the complex arithmetic library calls, create new FunctionProtoTypes with the right exception information.
This patch is just a first step to have more accurate IR, as there may be other patterns that could take advantage of extra information. I'm just covering some cases I am aware of.
Thanks!
Samuel
Minor tweak: "prototype".