rt: fix jemalloc android cross-compile for mac
Cleanup src/librustc/back
Avoid unnecessary scratch datums for by-copy function arguments

Currently, by-copy function arguments are always stored into a scratch
datum, which serves two purposes.  First, it is required to be able to
have a temporary cleanup, in case that the call fails before the callee
actually takes ownership of the value. Second, if the argument is to be
passed by reference, the copy is required, so that the function doesn't
get a reference to the original value.

But in case that the datum does not need a drop glue call and it is
passed by value, there's no need to perform the extra copy.
auto merge of #7200 : yichoi/rust/fix_je_mac_cross, r=brson

while cross-compiling, ar in cross toolchains are required. 
linux is not sensitive so could not see errors.
Avoid pointless allocas for "nil" return values

By using "void" instead of "{}" as the LLVM type for nil, we can avoid
the alloca/store/load sequence for the return value, resulting in less
and simpler IR code.

This reduces compile times by about 10%.
auto merge of #7259 : dotdash/rust/ir_improvement, r=graydon

The changes in these commits improve the IR codegen by removing unnecessary copies for certain function call arguments and stopping to allocate return values for functions returning nil. They reduce compile times by about 10% in total.
auto merge of #7219 : sstewartgallus/rust/cleanup, r=graydon
Methodize TypeNames
Change calls for TypeName stuff to methods
Make log_fn_time a method
Start refacting LLVM Type handling
More Type refactorings
Add the rest of the atomic operations.

This makes the handling of atomic operations more generic, which
does impose a specific naming convention for the intrinsics, but
that seems ok with me, rather than having an individual case for
each name.

It also adds the intrinsics to the the intrinsics file.
Initial Type Refactoring done
Finish up Type refactoring
Fix warnings in trans
Move count-llvm-insn code into task-local storage
Fix-up PP Code to reflect new lifetime param syntax
Remove remaining address space related code
Fix merge fallout