Add export_name to the attribute whitelist and a description in the rust manual
librustc: Don't create scratch for the base expr in function record update.
librustc: Fix trans for functional record update when discarding the result.
Generate slightly better unoptimized code for for-loops

The discriminant for Option values is either 0 or 1, so we can just
truncate the value to an i1, which ends up as a no-op for Options
containing pointers.
auto merge of #16500 : jackheizer/rust/export-name, r=alexcrichton
debuginfo: Add a "no_debug" attribute that allows to exclude functions from debuginfo generation.
auto merge of #16497 : michaelwoerister/rust/no_debug_attribute, r=pcwalton

Fixes #15332.
auto merge of #16511 : luqmana/rust/sbnt, r=pcwalton

Fixes #15397.
Fixes #7261.
Fixes #6573.
auto merge of #16517 : dotdash/rust/for_trunc, r=pcwalton

The discriminant for Option values is either 0 or 1, so we can just
truncate the value to an i1, which ends up as a no-op for Options
containing pointers.
Fix the order in which struct fields drop

When a struct implements Drop, its fields should still drop in
declaration order (just as they do when the struct does not implement
Drop).

Fixes #16492.
auto merge of #16493 : kballard/rust/fix_drop_field_order, r=pnkfelix

When a struct implements Drop, its fields should still drop in
declaration order (just as they do when the struct does not implement
Drop).

Fixes #16492.
Introduce lifetime bounds on iterators and other types as needed.
Rewrite Vec iterators to use a transmute and named lifetime so as to meet lifetime requirements
Introduce annotations on object types as required.
Annotate objects in the macro system. Unlike most objects, these ones actually close over references sometimes.
Metadata encoding and decoding.
Syntax -- unify trait superbounds and parameter bounds, as well
as closure bounds. Parse region bounds uniformly, rather than
special-casing 'static.
Change how we represent bounds:
- Use ParamBounds for type parameter bounds
- Use ExistentialBounds for object/closure types
- Replace the "supertrait" list with a ParamBounds, since that is
  what it really is, and because it can include region bounds
- Introduce lifetime parameter bounds
Subroutine for compute what relations must hold for a type to be well-formed
Refactor regionck to use a new predicate, type_must_outlive. Move responsibility
for checking object casts into regionck from kindck.