emscripten_debugger() intrinsic
Don't run a pass to strip dead prototypes; just ignore them.

Also, fix the code for supressing declarations for no-op intrinsics.
Tidy up the output for memset and memcpy, and add a test.
Don't emit JS declarations for LLVM intrinsics expanded inline.
Don't emit redirects for llvm.memcpy.p0i8.p0i8.i32 and friends.

We never reference these intrinsics by name, so we don't need redirects
for them.
Disable the LowerExpectIntrinsic pass.
Minor CallHandler cleanups.
Disable the ResolveAliases and GlobalCleanup passes.

Also add a test for handling of global aliases.
Improve linker messages when modules differ in triple or data layout.

This is a backport of r203009 from LLVM trunk. Since we recently changed triples
and data layouts, this is particularly apropos.
do not warn on invalid argument numbers or types in varargs calls
Fix a use-after-free error in GlobalOpt CleanupConstantGlobalUsers

This is a backport of r197178 from LLVM trunk.
handle aliases in getConstAsOffset
Implement integer promotion for urem, udiv, srem, and sdiv

The optimizer sometimes thinks it's beneficial to truncate all manner of
i64 operators to narrower types, even when still wider than the platform's
widest legal type.
Expand single-use pure instructions inline.

This is mostly redundant with the JS optimizers, but it speeds up sqlite
compilation time by 10%.