improve clone_from_slice performance
add intmax
Add assume intrinsic

Adds an `assume` intrinsic that gets translated to llvm.assume. It is
used on a boolean expression and allows the optimizer to assume that
the expression is true.

This implements #18051.
Improve documentation of assume intrinsic.
Parser: Fix spans of explicit self arg idents
Guide: articulate the advantages of ownership over garbage collection.

Explain the primary disadvantage of garbage collection is runtime
overhead and unpredictable pauses.  Elucidate where the name "race
condition" comes from.  Emphasize that Rust can guarantee your code is
free of race conditions and other memory errors, with no runtime
overhead.
rustdoc: hide private traits in strip-private pass

Fix #16563
enable parallel codegen by default

Enable parallel codegen (2 units) by default when --opt-level is 0 or 1.  This
gives a minor speedup on large crates (~10%), with only a tiny slowdown (~2%)
for small ones (which usually build in under a second regardless).  The current
default (no parallelization) is used when the user requests optimization
(--opt-level 2 or 3), and when the user has enabled LTO (which is incompatible
with parallel codegen).

This commit also changes the rust build system to use parallel codegen
when appropriate.  This means codegen-units=4 for stage0 always, and
also for stage1 and stage2 when configured with --disable-optimize.
(Other settings use codegen-units=1 for stage1 and stage2, to get
maximum performance for release binaries.)  The build system also sets
codegen-units=1 for compiletest tests (compiletest does its own
parallelization) and uses the same setting as stage2 for crate tests.
Fix issue #17848 (Questionable advice in bug report instructions)
Adjust orphan rules to consider all input types, not just self type.

Fixes #18222.
Add test for issue #17594
auto merge of #18213 : pcwalton/rust/pcg-default, r=aturon

Enable parallel codegen (2 units) by default when --opt-level is 0 or 1.  This
gives a minor speedup on large crates (~10%), with only a tiny slowdown (~2%)
for small ones (which usually build in under a second regardless).  The current
default (no parallelization) is used when the user requests optimization
(--opt-level 2 or 3), and when the user has enabled LTO (which is incompatible
with parallel codegen).

This commit also changes the rust build system to use parallel codegen
when appropriate.  This means codegen-units=4 for stage0 always, and
also for stage1 and stage2 when configured with --disable-optimize.
(Other settings use codegen-units=1 for stage1 and stage2, to get
maximum performance for release binaries.)  The build system also sets
codegen-units=1 for compiletest tests (compiletest does its own
parallelization) and uses the same setting as stage2 for crate tests.

r? @aturon
auto merge of #18141 : phildawes/rust/master, r=brson

Hello! I noticed spans are wrong for the PatIdents of self args. (I use spans a lot in racer)
debuginfo: Gate all LLDB debuginfo tests on a minimum LLDB version being available
debuginfo: Make some path LLDB-related paths in the test runner absolute to help the build bots.
debuginfo: Enable LLDB test suite on Darwin.
debuginfo: Let LLDB tests run in parallel again since our min-supported version has no problems with that.
debuginfo: Print more output in lldb_batchmode.py for better error logs.
auto merge of #18223 : nikomatsakis/rust/coherence-orphan-18222, r=pcwalton

Adjust orphan rules to consider all input types, not just self type.

Fixes #18222.

r? @pcwalton
Guide: Adapt range values to variable name