rustc: Turn off split stacks on Windows
Disable runtime split stack support on Windows
Add test for #13259. Closes #13259 and #14742
Remove windows TCB hack from rustdoc
Replaced some TODO by FIXME

closes #17478
Ignore win-tcb test on non-windows
mk: Start producing binary tarballs on windows

We may use these for creating combined rust/cargo installers
install: Fix the install.sh script to work with spaces

Makes it work on windows
Emit an error rather than ICEing for a missing built-in bound lang item.

closes #17392
auto merge of #17468 : nick29581/rust/dst-bug-nostd, r=nikomatsakis

closes #17392 

r? @nikomatsakis 

Kind of a first draft because I'm not sure if this is the right approach. I believe the general idea of giving an error rather than an ICE in obligation_for_builtin_bound is right, but not sure about returning an Option, etc.

Also, could probably have a better error message.
auto merge of #17563 : brson/rust/wintcbfix, r=thestinger

This is the bare minimum to stop using split stacks on Windows, fixing https://github.com/rust-lang/rust/issues/13259 and #14742, by turning on stack probes for all functions and disabling compiler and runtime support for split stacks on Windows.

It does not restore the out-of-stack error message, which requires more runtime work.

This includes a test that the Windows TCB is no longer being clobbered, but the out-of-stack test itself is pretty weak, only testing that the program exits abnormally, not that it isn't writing to bogus memory, so I haven't truly verified that this is providing the safety we claim.

A more complete solution is in https://github.com/rust-lang/rust/pull/16388, which has some unresolved issues yet.

cc @Zoxc @klutzy @vadimcn
Removed some unnecessary RefCells from resolve
auto merge of #17640 : brson/rust/wininst, r=alexcrichton

This makes the windows `make dist` target start producing binary tarballs, and tweaks install.sh so they work, in preparation for working on a combined Rust+Cargo installer.
librustc: Stop looking in metadata in type contents.

4x improvement in pre-trans compile time for rustc.
Fixes ICE when using reexported unit-like structs

Fixes that unit-like structs cannot be used if they are reexported and
used in another crate. The compiler fails with an ICE, because unit-like
structs are exported as DefFn and the expression `UnitStruct` is
interpreted as function pointer instead of a call to the constructor.

To resolve this ambiguity tuple-like struct constructors are now exported
as CtorFn. When `rustc::metadata::decoder` finds a CtorFn it sets a new
flag `is_ctor` in DefFn to true.

Relevant changes are in `rustc::metadata::{encoder, decoder}` and in
`rustc::middle::ty`.

Closes #12660 and #16973.
librustc: Forbid `..` in range patterns.

This breaks code that looks like:

    match foo {
        1..3 => { ... }
    }

Instead, write:

    match foo {
        1...3 => { ... }
    }

Closes #17295.

[breaking-change]
Ignore yet another windows debuginfo test
auto merge of #17647 : pcwalton/rust/stop-looking-in-metadata-in-tc, r=cmr

I don't know exactly what made this regress so badly…maybe it was all the lifetimes that @eddyb landed. According to `git blame` this is all somewhat old code. Regardless this is an enormous improvement in compile times.

r? @brson
Teach libsyntax about `if let`
Desugar 'if let' into the appropriate 'match'