Implement the __builtin_call_with_static_chain GNU extension.


Implement the __builtin_call_with_static_chain GNU extension.

The extension has the following syntax:

__builtin_call_with_static_chain(Call, Chain)
where Call must be a function call expression and Chain must be of pointer type

This extension performs a function call Call with a static chain pointer
Chain passed to the callee in a designated register. This is useful for
calling foreign language functions whose ABI uses static chain pointers
(e.g. to implement closures).

Differential Revision: http://reviews.llvm.org/D6332