CFG_CFLAGS is only used for jemalloc, rename all uses to CFG_JEMALLOC_CFLAGS

i386-apple-ios already used CFG_JEMALLOC_CFLAGS, so merge that one
mk/rt/jemalloc: pass CFG_GCCISH_CFLAGS inside CC instead of passing CFG_CFLAGS in EXTRA_CFLAGS

 - CFG_CFLAGS is gone (it was previously only used by jemalloc anyhow).
 - CFG_JEMALLOC_CFLAGS may contain flags needed for the compiler to
   function (produce a binary output).
 - jemalloc's configure runs $(CC) without EXTRA_CFLAGS, and (without
   this change) will fail if any flags are required for CC to work.
rollup merge of #18890: luqmana/tf

This is especially useful for declaring a static with external linkage in an executable. There isn't any way to do that currently since we mark everything in an executable as internal by default.

Also, a quick fix to have the no-compiler-rt target option respected when building staticlibs as well.
rollup merge of #18910: aturon/borrow-traits

Following [the collections reform RFC](https://github.com/rust-lang/rfcs/pull/235), this PR:

* Adds a new `borrow` module to libcore. The module contains traits for borrowing data (`BorrowFrom` and `BorrowFromMut`), generalized cloning (`ToOwned`), and a clone-on-write smartpointer (`Cow`).

* Deprecates the `_equiv` family of methods on `HashMap` and `HashSet` by instead generalizing the "normal" methods like `get` and `remove` to use the new `std::borrow` infrastructure.

* Generalizes `TreeMap`, `TreeSet`, `BTreeMap` and `BTreeSet` to use the new `std::borrow` infrastructure for lookups.

[breaking-change]
rollup merge of #18911: canndrew/slice_shift_char

`slice_shift_char` splits a `str` into it's leading `char` and the remainder of the `str`. Currently, it returns a `(Option<char>, &str)` such that:

    "bar".slice_shift_char() => (Some('b'), "ar")
    "ar".slice_shift_char()  => (Some('a'), "r")
    "r".slice_shift_char()   => (Some('r'), "")
    "".slice_shift_char()    => (None,      "")

This is a little odd. Either a `str` can be split into both a head and a tail or it cannot. So the return type should be `Option<(char, &str)>`. With the current behaviour, in the case of the empty string, the `str` returned is meaningless - it is always the empty string.

This PR changes `slice_shift_char` so that:

    "bar".slice_shift_char() => Some(('b', "ar"))
    "ar".slice_shift_char()  => Some(('a', "r"))
    "r".slice_shift_char()   => Some(('r', ""))
    "".slice_shift_char()    => None
rollup merge of #18921: oli-obk/refactoring/graphviz/id/new/result_instead_of_fail

creating a new Id object requires the format to match a subset of `ID` format defined by the DOT language. When the format did not match, the function called assert. This was not mentioned in the docs or the spec. I made the failure explicit by returning an Result<Id, ()>.
rollup merge of #18951: tbu-/pr_array_cloneshow

Due to not being able to parametrize over array sizes, `Clone` is only
implemented for element types that are `Copy`able.
rollup merge of #19000: IvanUkhov/doc-link-dylib

Hello,

`dylib` [seems][1] to be no longer an option for the `kind` key of the `link` attribute.

UPDATE: It should be the other way around: It [seems][1] `dylib` has been lost as a possible variant of the `kind` key of the `link` attribute. See the comment below.

Regards,
Ivan

[1]: https://github.com/rust-lang/rust/blob/8f8753878644b0bfb38d24781edb9ef2028730f2/src/librustc/metadata/creader.rs#L237
rollup merge of #19008: alex/collections-typos
rollup merge of #19013: jakub-/issue-18986

Fixes #18986.
rollup merge of #19015: alex/libcore-typos
rollup merge of #19016: gkoz/use_util_copy

This code is identical to io::util::copy()
rollup merge of #19018: tomjakubowski/fix-issue-19003

Make struct variant syntax more consistent with struct syntax and fix an
assert in middle::typeck.

Fix #19003
rollup merge of #19020: Gankro/better-warn

Came up on IRC that this was a bit unhelpful as to what should actually be *done*. I am new to changing compiler messages, please let me know if there's anything else that needs to be done to accomadate this change.

(My build system is still constantly crashing [Is bors contagious?], so this hasn't been formally `check`ed. I figure it's a simple enough change that any consequences [like compile-fail expected messages?] can be eyeballed by someone more experienced.)
rollup merge of #19026: alfie/doc-fixes

Updated all the adjacent character literals in the BCNF that cannot have an optional space between them
rollup merge of #19029: vberger/stability_function_body

Items defined in the body of a function has no visibility outside it, and thus have no reason to inherit its stability.

Closes #17488
rollup merge of #19038: jayelm/fixed-typos

Baby steps here...

Fixed some comments in liblog, libregex, librustc, libstd.
rollup merge of #19041: japaric/clone

Closes #19037
cc #16918

r? @aturon
rollup merge of #19045: jmesmon/jemalloc-flags-2

- CFG_CFLAGS is only used for jemalloc
- We grew an extra set of flags for jemalloc (CFG_JEMALLOC_CFLAGS) in addition to CFG_CFLAGS
- This kills of CFG_CFLAGS and keeps the more specific and less confusing CFG_JEMALLOC_CFLAGS
- Additionally, pass CFG_JEMALLOC_CFLAGS to jemalloc's configure slightly differently so things work when people use --sysroot in their CFLAGS.
Fix compilation and tests after the roll-up