Tweak region inference to ignore constraints like 'a <= 'static, since they
have no value. This also ensures that we can handle some obscure cases of fn
subtyping with bound regions that we didn't used to handle correctly.

Fixes #13974.
debuginfo: Represent SIMD types as tuple structs instead of as fixed-sized arrays
rustc: Fix shadowing private import with reexport

The reexport didn't switch the privacy, so the reexport was actually considered
private, erroneously failing to resolve imports later on.

Closes #14082
guide-pointers: minor nits
rustc: Stop calling error! in resolve

These are taken care of with compiler errors later on, no need to spam with
extra unformatted information unconditionally.

Closes #14225
Optimize and fix time::precise_time_ns() on macos

Use sync::one::Once to fetch the mach_timebase_info only once when
running precise_time_ns(). This helps because mach_timebase_info() is
surprisingly inefficient. Also fix the order of operations when applying
the timebase to the mach absolute time value.

This improves the time on my machine from

```
test tests::bench_precise_time_ns ... bench:       157 ns/iter (+/- 4)
```

to

```
test tests::bench_precise_time_ns ... bench:        38 ns/iter (+/- 3)
```

and it will get even faster once #14174 lands.
Make some NullablePointer enums FFI-compatible with the base pointer type.
librustc: Separate NullablePointer into RawNullablePointer and StructWrappedNullablePointer.
rustc: Stop leaking enum variants into children

This plugs a leak where resolve was treating enums defined in parent modules as
in-scope for all children modules when resolving a pattern identifier. This
eliminates the code path in resolve entirely.

If this breaks any existing code, then it indicates that the variants need to be
explicitly imported into the module.

Closes #14221

[breaking-change]
auto merge of #14216 : kballard/rust/macos_precise_time_ns, r=alexcrichton

Use sync::one::Once to fetch the mach_timebase_info only once when
running precise_time_ns(). This helps because mach_timebase_info() is
surprisingly inefficient. Also fix the order of operations when applying
the timebase to the mach absolute time value.

This improves the time on my machine from

```
test tests::bench_precise_time_ns ... bench:       157 ns/iter (+/- 4)
```

to

```
test tests::bench_precise_time_ns ... bench:        38 ns/iter (+/- 3)
```

and it will get even faster once #14174 lands.
term: Don't run the code example, just compile it

This is blocking a snapshot because apparently the test fails on the bots.
auto merge of #14257 : alexcrichton/rust/fix-snap, r=huonw

This is blocking a snapshot because apparently the test fails on the bots.
auto merge of #14236 : alexcrichton/rust/issue-14082, r=brson

The reexport didn't switch the privacy, so the reexport was actually considered
private, erroneously failing to resolve imports later on.

Closes #14082
auto merge of #14224 : michaelwoerister/rust/simd-update, r=alexcrichton

This is a small change that improves the DWARF description of SIMD types by exposing their type name to debuginfo.
auto merge of #14239 : alexcrichton/rust/issue-14225, r=huonw

These are taken care of with compiler errors later on, no need to spam with
extra unformatted information unconditionally.

Closes #14225
syntax: Tighten search paths for inner modules

This is an implementation of RFC 16. A module can now only be loaded if the
module declaring `mod name;` "owns" the current directory. A module is
considered as owning its directory if it meets one of the following criteria:

* It is the top-level crate file
* It is a `mod.rs` file
* It was loaded via `#[path]`
* It was loaded via `include!`
* The module was declared via an inline `mod foo { ... }` statement

For example, this directory structure is now invalid

    // lib.rs
    mod foo;

    // foo.rs
    mod bar;

    // bar.rs;
    fn bar() {}

With this change `foo.rs` must be renamed to `foo/mod.rs`, and `bar.rs` must be
renamed to `foo/bar.rs`. This makes it clear that `bar` is a submodule of `foo`,
and can only be accessed through `foo`.

RFC: 0016-module-file-system-hierarchy
Closes #14180

[breaking-change]
auto merge of #14247 : Ryman/rust/minor_ptr_nit, r=alexcrichton

Not too hot on the second change, welcome a better suggestion/wording.
auto merge of #14253 : alexcrichton/rust/issue-14221, r=pcwalton

This plugs a leak where resolve was treating enums defined in parent modules as
in-scope for all children modules when resolving a pattern identifier. This
eliminates the code path in resolve entirely.

If this breaks any existing code, then it indicates that the variants need to be
explicitly imported into the module.

Closes #14221
term: update example to be right (thanks @SiegeLord)
adding move_iter() function to collections::treemap::TreeSet