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.
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.
auto merge of #6778 : Aatch/rust/pass-refactor, r=graydon

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.

This should close #2812. It is also the first step towards #2396

----------------

This is pretty much just an initial "get it out there" PR. With finer control over the optimization passes coming later. I also just blindly copied the passes we were already doing, so there could almost certainly be some more work in paring it down.

The other thing is the addition of the `mergefunctions` pass, which is currently enabled at `--opt-level=3` and does have a small impact on the code size. However the fact that it is at the end of the optimization pipeline is probably not ideal, so some more experimentation is in order.
auto merge of #6784 : nikomatsakis/rust/moves-into-borrowck, r=pcwalton

Move the computation of what data is moved out of `liveness` and into `borrowck`. The resulting code is cleaner, since before we had a split distribution of responsibilities, and also this avoids having multiple implementations of the dataflow code. Liveness is still used to report warnings about useless writes. This will go away when we get the control-flow graph code landed (working on that).

Also adds borrow checker documentation.

Fixes #4384.
Required to support once fns and to properly fix closures (#2202).
First step to generalize our treatment of moves somewhat as well.
Fix vec::mut_slice