The Module class contains an LLVMContext& member, which
prevents assignment. This technique uses placement new and passed the
new instance to the existing CloneModule functions to accomplish the
This is useful in passes that want to clone the Module, prospectively
modify it, then decide whether or not to keep the changes, e.g.,
bugpoint type reduction passes.