librustc: Apply null pointer optimization to slices, closures and trait
objects.
librustc: Remove match arm since we don't allow enum to float casts.
librustc: Don't create &[T] slices with NULL as the ptr.
Add tests for null pointer opt.
librustc: Accept type aliases for structures in structure literals and
structure patterns.

Closes #4508.
libcore: Fix Items iterator for zero sized types.
mk: Fix bootstrapping the nightly builds

The stage0 compiler for a non-CFG_BUILD architecture needs to have the new
`-C extra-filename` argument passed.
Remove remainders from when booleans were i8
Store booleans as i8 in memory to improve optimizations by LLVM

LLVM doesn't really like types with a bit-width that isn't a multiple of
8 and disable various optimizations if it encounters such types used
with loads/stores. OTOH, booleans must be represented as i1 when used as
SSA values. To get the best results, we must use i1 for SSA values, and
i8 when storing the value to memory.

By using range asserts on loads, LLVM can eliminate the required
zero-extend and truncate operations.

Fixes #15203
Properly bind nested pattern bindings when there's more than one

Fixes #15488.
auto merge of #15481 : alexcrichton/rust/fix-nightly, r=luqmana

The stage0 compiler for a non-CFG_BUILD architecture needs to have the new
`-C extra-filename` argument passed.
auto merge of #15464 : dotdash/rust/bool_stores, r=pcwalton

LLVM doesn't handle i1 value in allocas/memory very well and skips a number of optimizations if it hits it. So we have to do the same thing that Clang does, using i1 for SSA values, but storing i8 in memory.

Fixes #15203.
Implemented Decodable/Encodable for Cell and RefCell. Fixes #15395

Updated PR with fixme and test

Updated PR with fixme and test
auto merge of #15411 : mitchmindtree/rust/master, r=alexcrichton

I ran `make check` and everything went smoothly. I also tested `#[deriving(Decodable, Encodable)]` on a struct containing both Cell<T> and RefCell<T> and everything now seems to work fine.
manual: Fix typo.

Also removes redundant newline in code block.
auto merge of #15489 : jakub-/rust/issue-15488, r=pcwalton

Fixes #15488.
auto merge of #15496 : ruud-v-a/rust/patch-1, r=huonw

Also removes redundant newline in code block.
Strip empty strings from link args

Closes #15487
auto merge of #15502 : sfackler/rust/link_args_spaces, r=alexcrichton

Closes #15487
librustc: Disallow modules and types from having the same name.

This will break code that looks like:

    struct Foo {
        ...
    }

    mod Foo {
        ...
    }

Change this code to:

    struct Foo {
        ...
    }

    impl Foo {
        ...
    }

Or rename the module.

Closes #15205.

[breaking-change]