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.
Get cross crate default methods working.

This fixes the large number of problems that prevented cross crate
methods from ever working. It also fixes a couple lingering bugs with
polymorphic default methods and cleans up some of the code paths.

Closes #4102. Closes #4103.
auto merge of #7161 : kballard/rust/terminfo-parm-format, r=thestinger

Introduce support for terminfo's subset of printf-style formatting on doxXs operations.

r? @thestinger
auto merge of #7203 : msullivan/rust/default-methods, r=graydon

This fixes the large number of problems that prevented cross crate
methods from ever working. It also fixes a couple lingering bugs with
polymorphic default methods and cleans up some of the code paths.

Closes #4102. Closes #4103.

r? nikomatsakis
vec: remove each_const

An Iterator implementation can be made for &const [T] if it turns out
to be necessary for some use case.
vec: remove eachi

replaced by the `enumerate` method from std::iterator
vec: rm old_iter implementations, except BaseIter

The removed test for issue #2611 is well covered by the `std::iterator`
module itself.

This adds the `count` method to `IteratorUtil` to replace `EqIter`.
vec: replace `position` with `iter().position_`
replace vec::find with the IteratorUtil method
auto merge of #7263 : thestinger/rust/iterator, r=graydon
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
Add method .set_memory in vec::bytes for &[u8]

Add new trait vec::bytes::MutableByteVector which currently defines one
method .set_memory().
Add methods .move_from() and .copy_from() to vec

Add method .move_from() to MutableVector, which consumes another vector
and moves elements into the receiver.

Add new trait MutableCloneableVector with one method .copy_from(), which
clones elements from another vector into the receiver.