Make AtomicPtr use *mut, instead of ~
Add AtomicOption type
Add some documentation
core::vec is missing methods for mutable slices
compiletest: Add #[no_core] to fix check-stage1.
librustc: drop AST before running LLVM, frees 400mb on a librustc build
use the type's alignment for generated memsets
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 #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