auto merge of #6707 : catamorphism/rust/issue-5543, r=catamorphism
librustc: drop AST before running LLVM, frees 400mb on a librustc build
use the type's alignment for generated memsets
auto merge of #6775 : yjh0502/rust/issue_6696, r=catamorphism
Move checking for moves and initialization of local variables and patterns into
borrow checker and generalize what moves are allowed. Fixes a nasty
bug or two in the pattern move checking code. Unifies dataflow code
used for initialization and other things. First step towards
once fns. Everybody wins.

Fixes #4384. Fixes #4715. cc once fns (#2202), optimizing local moves (#5016).
Update docs on the formal basis of the borrow checker.
Reconcile docs and code, adding examples and adding RESTR_CLAIM
Reconcile treatment of &mut with the docs
Update documentation for moves
auto merge of #6731 : thomaslee/rust/issue-6575, r=pcwalton

Fix for #6575. In the trans phase, rustc emits code for a function parameter that goes completely unused in the event the return type of the function in question happens to be an immediate.

This patch modifies rustc & parts of rustrt to ensure that the vestigial parameter is no longer present in compiled code.
auto merge of #6740 : Aatch/rust/atomic-types, r=brson

This is a follow up to #6732. Makes everything a little more sound.

r? @brson
Generalized implementation of FromBase64

Previously, FromBase64 was only implemented on ~[u8] and ~str when
any pointer would do. The implementations of FromBase64 are now
consistent with the implementations of ToBase64.
Refactor optimization pass handling.

Refactor the optimization passes to explicitly use the passes. This commit
just re-implements the same passes as were already being run.

It also adds an option (behind `-Z`) to run the LLVM lint pass on the
unoptimized IR.
Fix pass creation typo
Move the initial dead prototype removal pass
Remove passes that were causing bad optmizations
Remove now-unused import
Define rustc's host triple at compile time

This way a cross-compiled rustc's answer to host_triple() is correct. The return
value of host_triple() reflects the actual host triple that the compiler was
build for, not the triple the compiler is being built on
Un-ignore rusti/rustpkg tests on i686
auto merge of #6780 : june0cho/rust/issue5984, r=brson

Fix #5984. Also, I found a problem on type inference and left a comment.