syntax: Fix a missing closing code tag in docs.
syntax: improve the spans of some #[deriving] traits.

This makes error messages about (e.g.) `#[deriving(Clone)] struct Foo {
x: Type }` point at `x: Type` rather than `Clone` in the header (while
still referring to the `#[deriving(Clone)]` in the expansion info).
Add autogenerated tests for the spans of various derived traits.
std: reduce the generic code instantiated by fail!().

This splits the vast majority of the code path taken by
`fail!()` (`begin_unwind`) into a separate non-generic inline(never)
function, so that uses of `fail!()` only monomorphise a small amount of
code, reducing code bloat and making very small crates compile faster.
auto merge of #11834 : huonw/rust/deriving-spans, r=alexcrichton

I'd forgotten to update them when I changed this a while ago; it now displays error messages linked to the struct/variant field, rather than the `#[deriving(Trait)]` line, for all traits.

This also adds a very large number of autogenerated tests. I can easily remove/tone down that commit if necessary.
Demote self to an (almost) regular argument and remove the env param.
Fixes #10667 and closes #10259.
std: add begin_unwind_fmt that reduces codesize for formatted fail!().

This ends up saving a single `call` instruction in the optimised code,
but saves a few hundred lines of non-optimised IR for `fn main() {
fail!("foo {}", "bar"); }` (comparing against the minimal generic
baseline from the parent commit).
Add .rs- instead of .rc-extension to LLVM module name
Feature gate trace_macros.

Fixes #11631
auto merge of #11842 : xales/rust/feature-gates, r=cmr

Fixes #11631
debuginfo: Fix name attribute for DWARF compile units
Depend on libnative when testing

The stdtest binary uses both libnative and libgreen to test the two
implementations

Closes #11843
auto merge of #11595 : eddyb/rust/env-et-self-no-more, r=nikomatsakis

Non-exhaustive change list:
* `self` is now present in argument lists (modulo type-checking code I don't trust myself to refactor)
* methods have the same calling convention as bare functions (including the self argument)
* the env param is gone from all bare functions (and methods), only used by closures and `proc`s
* bare functions can only be coerced to closures and `proc`s if they are statically resolved, as they now require creating a wrapper specific to that function, to avoid indirect wrappers (equivalent to `impl<..Args, Ret> Fn<..Args, Ret> for fn(..Args) -> Ret`) that might not be optimizable by LLVM and don't work for `proc`s
* refactored some `trans::closure` code, leading to the removal of `trans::glue::make_free_glue` and `ty_opaque_closure_ptr`
auto merge of #11841 : huonw/rust/noinline-fail, r=alexcrichton

In two ways:
- for a plain `fail!(a)` we make the generic part of `begin_unwind` as small as possible (makes `fn main() { fail!() }` compile 2-3x faster, due to less monomorphisation bloat)
- for `fail!("format {}", "string")`, we avoid touching the generics completely by doing the formatting in a specialised function, which (with optimisations) saves a function call at the call-site of `fail!`. (This one has significantly less benefit than the first.)
Removed take_glue from tydesc, inlining the equivalent refcount increment code instead.
auto merge of #11723 : eddyb/rust/more-trans-cleanup, r=pcwalton
auto merge of #11846 : michaelwoerister/rust/cu_name, r=pcwalton

Fixes #11600
auto merge of #11847 : alexcrichton/rust/fix-test-deps, r=pcwalton

The stdtest binary uses both libnative and libgreen to test the two
implementations

Closes #11843
syntax: make deriving have slightly less cryptic error messages.

This unfortunately changes an error like

    error: mismatched types: expected `&&NotClone` but found `&NotClone`

into

    error: type `NotClone` does not implement any method in scope named `clone`
can borrow mut in proc Fixes #10617