libcore: Get rid of useless mem::forget wrapper.
Change how libgetopts handles options grouped together

As soon as an option is found that takes an argument, consume the rest
of the string and store it into i_arg. Previously this would only happen
if the character after the option was not a recognized option.

Addresses issue #16348
Include import name in import shadowing error messages.

This partially alleviates the confusing behavior in issue #16597
Update compile-fail tests due to changed diagnostics
Add compile-fail test for missing import shadowing case
Fix TwoWaySearcher to work when used with periodic needles.

There is a check in TwoWaySearcher::new to determine whether the needle
is periodic. This is needed because during searching when a match fails,
we cannot advance the position by the entire length of the needle when
it is periodic, but can only advance by the length of the period.

The reason "bananas".contains("nana") (and similar searches) were
returning false was because the periodicity check was wrong.

Closes #16589
libstd: Refactor Duration.

This changes the internal representation of `Duration` from

    days: i32,
    secs: i32,
    nanos: u32

to

    secs: i64,
    nanos: i32

This resolves #16466. Some methods now take `i64` instead of `i32` due
to the increased range. Some methods, like `num_milliseconds`, now
return an `Option<i64>` instead of `i64`, because the range of
`Duration` is now larger than e.g. 2^63 milliseconds.
Make note that Ordering is builtin.

This way people won't try to copy/paste it in.
librustc: Fix a couple of cases in which unboxed closure typechecking
code wasn't considering the zero-argument case.

Closes #16168.
librustc: Resolve nested vtable parameters in overloaded calls.

Closes #16508.
iOS compilation fix
Fixed unwinding for iOS

Was broken by Windows adoption
libstd: Limit Duration range to i64 milliseconds.

This enables `num_milliseconds` to return an `i64` again instead of
`Option<i64>`, because it is guaranteed not to overflow.

The Duration range is now rougly 300e6 years (positive and negative),
whereas it was 300e9 years previously. To put these numbers in
perspective, 300e9 years is about 21 times the age of the universe
(according to Wolfram|Alpha). 300e6 years is about 1/15 of the age of
the earth (according to Wolfram|Alpha).
bitv: make benchmarks always return a value

This makes sure that the benchmarked code does not get optimized away.
Also fixed a typo.

Fixes #12118.
arena: fix a typo
bitv: make sure benchmarks run long enough

Previously they were too short (less than 10 ns), so the benchmarker
could not resolve them meaningfully. Now they should run in the order of
100 ns.
fix module wording in guide

@kimundi was a bit worried this was misleading.
librustc: Create unboxing shims as necessary for unboxed closures.

Closes #16591.
Parameterize indent in PrettyEncoder
librustc: Mark unboxed closure calls and definitions with appropriate llvm return/argument attributes.