Add run-pass case for issue #14308

Enum wildcard patterns in match behave wrong when applied to tuple
structs. They either ICE or cause an LLVM error.
Fix ICE regarding tuple struct matches using (..)

Fixes half of #14308.
Fix LLVM error with tuple struct match using (..)

Consider PatEnums constructed with A(..) to be candidates for tuple
struct patterns, not just ones constructed with A(a,b,c). If these
patterns shouldn't be valid tuple struct patterns (as they're equivalent
to _), this needs to be caught before we get to trans.

Fixes #14308.
std: Change hash to reexport its own Writer

One of the long-term goals of the libstd facade is to move the collections
library underneath the standard library. This would imply that libcollections
today would invert its dependency with libstd.

One of the primary blockers for doing this is the HashMap collection. Of its two
major dependencies, hashing and randomness, this commit is the first step in
dealing with hashing.

When moving the hash module beneath libstd, it must break its primary dependence
on the io::Writer trait (used as the hashing state). The proposed strategy for
breaking this dependence is taking a similar path as core::fmt, which is to have
the hash module define its own "writer trait". This trait would be similar to
std::io::Writer, except that it would not return errors and it would have fewer
convenience methods.

The Hash trait today has its type parameter behind a feature gate (default type
parameters), so this pending change will likely break no code which hasn't opted
in to the feature gate. The SipState struct will lose its implementation of
io::Writer, but it will regain similar methods for dealing with writing data.

This change specifically prepares for the hash migration by modifying
deriving(Hash) to use the std::hash::Writer bound instead of the std::io::Writer
bound. This bound is currently wired to std::io::Writer, but after a snapshot it
will have no need to be wired to the io writer trait.
Spelling/doc formatting fixes.
syntax: put the correct span on doc-comments inside a module.

The position of the .bump call (before extracting the span fields) was
causing a doc-comment to have the span of the next token, not itself.
Remove a slew of old deprecated functions
Fixed incorrect module path
extra::arc -> sync::arc
Update to LLVM head and mark various ptrs as nonnull.
auto merge of #14314 : alexcrichton/rust/deriving-hash, r=brson

One of the long-term goals of the libstd facade is to move the collections
library underneath the standard library. This would imply that libcollections
today would invert its dependency with libstd.

One of the primary blockers for doing this is the HashMap collection. Of its two
major dependencies, hashing and randomness, this commit is the first step in
dealing with hashing.

When moving the hash module beneath libstd, it must break its primary dependence
on the io::Writer trait (used as the hashing state). The proposed strategy for
breaking this dependence is taking a similar path as core::fmt, which is to have
the hash module define its own "writer trait". This trait would be similar to
std::io::Writer, except that it would not return errors and it would have fewer
convenience methods.

The Hash trait today has its type parameter behind a feature gate (default type
parameters), so this pending change will likely break no code which hasn't opted
in to the feature gate. The SipState struct will lose its implementation of
io::Writer, but it will regain similar methods for dealing with writing data.

This change specifically prepares for the hash migration by modifying
deriving(Hash) to use the std::hash::Writer bound instead of the std::io::Writer
bound. This bound is currently wired to std::io::Writer, but after a snapshot it
will have no need to be wired to the io writer trait.
auto merge of #14357 : huonw/rust/spelling, r=pnkfelix

The span on a inner doc-comment would point to the next token, e.g. the span for the `a` line points to the `b` line, and the span of `b` points to the `fn`.

```rust
//! a
//! b

fn bar() {}
```
updated hash value in reduced benchmark
libcore: Document math intrinsics.
Fix lifetime error to print `'a` instead of `&'a`

This changes certain error messages about lifetimes so that they display
lifetimes without an `&`.

Fixes #10291.
auto merge of #14362 : zecozephyr/rust/docfixes, r=cmr

extra::arc -> alloc::arc
auto merge of #14372 : neeee/rust/intrinsic-docs, r=brson
syntax: Clean out obsolete syntax parsing

All of these features have been obsolete since February 2014, where most have
been obsolete since 2013. There shouldn't be any more need to keep around the
parser hacks after this length of time.
auto merge of #14360 : alexcrichton/rust/remove-deprecated, r=kballard

These have all been deprecated for awhile now, so it's likely time to start removing them.
Minor library doc copyediting
auto merge of #14313 : kballard/rust/tuple_dotdot_match_ice, r=cmr

Fixes #14308.