]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoimplemented query for coverage data
Rich Kadel [Mon, 22 Jun 2020 21:11:55 +0000 (14:11 -0700)]
implemented query for coverage data

This commit adds a query that allows the CoverageData to be pulled from
a call on tcx, avoiding the need to change the
`codegen_intrinsic_call()` signature (no need to pass in the FunctionCx
or any additional arguments.

The commit does not change where/when the CoverageData is computed. It's
still done in the `pass`, and saved in the MIR `Body`.

See discussion (in progress) here:
https://github.com/rust-lang/rust/pull/73488#discussion_r443825646

4 years agonum_counters to u32, after implementing TypeFoldable
Rich Kadel [Mon, 22 Jun 2020 06:48:39 +0000 (23:48 -0700)]
num_counters to u32, after implementing TypeFoldable

4 years agocode coverage foundation for hash and num_counters
Rich Kadel [Thu, 18 Jun 2020 20:29:43 +0000 (13:29 -0700)]
code coverage foundation for hash and num_counters

Replaced dummy values for hash and num_counters with computed values,
and refactored InstrumentCoverage pass to simplify injecting more
counters per function in upcoming versions.

Improved usage documentation and error messaging.

4 years agoMerge pull request #5 from rust-lang/master
Rich Kadel [Fri, 19 Jun 2020 16:50:00 +0000 (09:50 -0700)]
Merge pull request #5 from rust-lang/master

update from origin 2020-06-19

4 years agoAuto merge of #73504 - RalfJung:rollup-iy8hsvl, r=RalfJung
bors [Fri, 19 Jun 2020 12:30:20 +0000 (12:30 +0000)]
Auto merge of #73504 - RalfJung:rollup-iy8hsvl, r=RalfJung

Rollup of 10 pull requests

Successful merges:

 - #72280 (Fix up autoderef when reborrowing)
 - #72785 (linker: MSVC supports linking static libraries as a whole archive)
 - #73011 (first stage of implementing LLVM code coverage)
 - #73044 (compiletest: Add directives to detect sanitizer support)
 - #73054 (memory access sanity checks: abort instead of panic)
 - #73136 (Change how compiler-builtins gets many CGUs)
 - #73280 (Add E0763)
 - #73317 (bootstrap: read config from $RUST_BOOTSTRAP_CONFIG)
 - #73350 (bootstrap/install.rs: support a nonexistent `prefix` in `x.py install`)
 - #73352 (Speed up bootstrap a little.)

Failed merges:

r? @ghost

4 years agoRollup merge of #73352 - ehuss:bootstrap-metadata, r=Mark-Simulacrum
Ralf Jung [Fri, 19 Jun 2020 12:29:35 +0000 (14:29 +0200)]
Rollup merge of #73352 - ehuss:bootstrap-metadata, r=Mark-Simulacrum

Speed up bootstrap a little.

The bootstrap script was calling `cargo metadata` 3 times (or 6 with `-v`). This is a very expensive operation, and this attempts to avoid the extra calls. On my system, a simple command like `./x.py test -h -v` goes from about 3 seconds to 0.4.

An overview of the changes:

- Call `cargo metadata` only once with `--no-deps`. Optional dependencies are filtered in `in_tree_crates` (handling `profiler_builtins` and `rustc_codegen_llvm` which are driven by the config).
- Remove a duplicate call to `metadata::build` when using `-v`. I'm not sure why it was there, it looks like a mistake or vestigial from previous behavior.
- Remove check for `_shim`, I believe all the `_shim` crates are now gone.
- Remove check for `rustc_` and `*san` for `test::Crate::should_run`, these are no longer dependencies in the `test` tree.
- Use relative paths in `./x.py test -h -v` output.
- Some code cleanup (remove unnecessary `find_compiler_crates`, etc.).
- Show suite paths (`src/test/ui/...`) in `./x.py test -h -v` output.
- Some doc comments.

4 years agoRollup merge of #73350 - nodakai:install-rs-support-nonexistent-prefix, r=Mark-Simulacrum
Ralf Jung [Fri, 19 Jun 2020 12:29:33 +0000 (14:29 +0200)]
Rollup merge of #73350 - nodakai:install-rs-support-nonexistent-prefix, r=Mark-Simulacrum

bootstrap/install.rs: support a nonexistent `prefix` in `x.py install`

PR #49778 introduced fs::canonicalize() which fails for a nonexistent path.
This is a surprise for someone used to GNU Autotools' configure which can create any necessary intermediate directories in prefix.

This change makes it run fs::create_dir_all() before canonicalize().

4 years agoRollup merge of #73317 - davidtwco:bootstrap-config-env-var, r=Mark-Simulacrum
Ralf Jung [Fri, 19 Jun 2020 12:29:31 +0000 (14:29 +0200)]
Rollup merge of #73317 - davidtwco:bootstrap-config-env-var, r=Mark-Simulacrum

bootstrap: read config from $RUST_BOOTSTRAP_CONFIG

This PR modifies bootstrap so that `config.toml` is read first from `RUST_BOOTSTRAP_CONFIG`, then `--config` and finally `config.toml` in the current directory.

This is a subjective change, intended to improve the ergnomics when using "development shells" for rustc development (for example, using tools such as Nix) which set environment variables to ensure a reproducible environment (these development shells can then be version controlled, e.g. [my rustc shell](https://github.com/davidtwco/veritas/blob/6b74a5c170b6efb2c7b094352932f9158f97eec0/nix/shells/rustc.nix)). By optionally reading `config.toml` from an environment variable, a `config.toml` can be defined in the development shell and a path to it exposed in the `RUST_BOOTSTRAP_CONFIG` environment variable - avoiding the need to manually symlink the contents of this file to `config.toml` in the working directory.

4 years agoRollup merge of #73280 - GuillaumeGomez:add-e0763, r=petrochenkov
Ralf Jung [Fri, 19 Jun 2020 12:29:29 +0000 (14:29 +0200)]
Rollup merge of #73280 - GuillaumeGomez:add-e0763, r=petrochenkov

Add E0763

4 years agoRollup merge of #73136 - alexcrichton:thinlto-compiler-builtins, r=Mark-Simulacrum
Ralf Jung [Fri, 19 Jun 2020 12:29:26 +0000 (14:29 +0200)]
Rollup merge of #73136 - alexcrichton:thinlto-compiler-builtins, r=Mark-Simulacrum

Change how compiler-builtins gets many CGUs

This commit intends to fix an accidental regression from #70846. The
goal of #70846 was to build compiler-builtins with a maximal number of
CGUs to ensure that each module in the source corresponds to an object
file. This high degree of control for compiler-builtins is desirable to
ensure that there's at most one exported symbol per CGU, ideally
enabling compiler-builtins to not conflict with the system libgcc as
often.

In #70846, however, only part of the compiler understands that
compiler-builtins is built with many CGUs. The rest of the compiler
thinks it's building with `sess.codegen_units()`. Notably the
calculation of `sess.lto()` consults `sess.codegen_units()`, which when
there's only one CGU it disables ThinLTO. This means that
compiler-builtins is built without ThinLTO, which is quite harmful to
performance! This is the root of the cause from #73135 where intrinsics
were found to not be inlining trivial functions.

The fix applied in this commit is to remove the special-casing of
compiler-builtins in the compiler. Instead the build system is now
responsible for special-casing compiler-builtins. It doesn't know
exactly how many CGUs will be needed but it passes a large number that
is assumed to be much greater than the number of source-level modules
needed. After reading the various locations in the compiler source, this
seemed like the best solution rather than adding more and more special
casing in the compiler for compiler-builtins.

Closes #73135

4 years agoRollup merge of #73054 - RalfJung:dont-panic, r=Mark-Simulacrum
Ralf Jung [Fri, 19 Jun 2020 12:29:24 +0000 (14:29 +0200)]
Rollup merge of #73054 - RalfJung:dont-panic, r=Mark-Simulacrum

memory access sanity checks: abort instead of panic

Suggested by @Mark-Simulacrum, this should help reduce the performance impact of these checks.

4 years agoRollup merge of #73044 - tmiasko:compiletest-san, r=nikomatsakis
Ralf Jung [Fri, 19 Jun 2020 12:29:22 +0000 (14:29 +0200)]
Rollup merge of #73044 - tmiasko:compiletest-san, r=nikomatsakis

compiletest: Add directives to detect sanitizer support

Add needs-sanitizer-{address,leak,memory,thread} directive indicating
that test requires target with support for specific sanitizer.

This is an addition to the existing needs-sanitizer-support directive
indicating that test requires a sanitizer runtime library.

The existing needs-sanitizer-support directive could be incorporated into the
new ones, but I decided to retain it, since it enables running sanitizer
codegen tests even when building of sanitizer runtime libraries is disabled.

4 years agoRollup merge of #73011 - richkadel:llvm-count-from-mir-pass, r=tmandry
Ralf Jung [Fri, 19 Jun 2020 12:29:20 +0000 (14:29 +0200)]
Rollup merge of #73011 - richkadel:llvm-count-from-mir-pass, r=tmandry

first stage of implementing LLVM code coverage

This PR replaces #70680 (WIP toward LLVM Code Coverage for Rust) since I am re-implementing the Rust LLVM code coverage feature in a different part of the compiler (in MIR pass(es) vs AST).

This PR updates rustc with `-Zinstrument-coverage` option that injects the llvm intrinsic `instrprof.increment()` for code generation.

This initial version only injects counters at the top of each function, and does not yet implement the required coverage map.

Upcoming PRs will add the coverage map, and add more counters and/or counter expressions for each conditional code branch.

Rust compiler MCP https://github.com/rust-lang/compiler-team/issues/278
Relevant issue: #34701 - Implement support for LLVMs code coverage instrumentation

***[I put together some development notes here, under a separate branch.](https://github.com/richkadel/rust/blob/cfa0b21d34ee64e4ebee226101bd2ef0c6757865/src/test/codegen/coverage-experiments/README-THIS-IS-TEMPORARY.md)***

4 years agoRollup merge of #72785 - petrochenkov:wholemsvc, r=matthewjasper
Ralf Jung [Fri, 19 Jun 2020 12:29:18 +0000 (14:29 +0200)]
Rollup merge of #72785 - petrochenkov:wholemsvc, r=matthewjasper

linker: MSVC supports linking static libraries as a whole archive

4 years agoRollup merge of #72280 - nbdd0121:typeck, r=nikomatsakis
Ralf Jung [Fri, 19 Jun 2020 12:29:16 +0000 (14:29 +0200)]
Rollup merge of #72280 - nbdd0121:typeck, r=nikomatsakis

Fix up autoderef when reborrowing

Currently `(f)()` and `f.call_mut()` behaves differently if expression `f` contains autoderef in it. This causes a weird error in #72225.

When `f` is type checked, `Deref` is used (this is expected as we can't yet determine if we should use `Fn` or `FnMut`). When subsequently we determine the actual trait to be used, when using the `f.call_mut()` syntax the `Deref` is patched to `DerefMut`, while for the `(f)()` syntax case it is not.

This PR replicates the fixup for the first case.

Fixes #72225
Fixes #68590

4 years agoAuto merge of #73498 - RalfJung:rollup-1mfjcju, r=RalfJung
bors [Fri, 19 Jun 2020 08:34:50 +0000 (08:34 +0000)]
Auto merge of #73498 - RalfJung:rollup-1mfjcju, r=RalfJung

Rollup of 13 pull requests

Successful merges:

 - #70740 (Enabling static-pie for musl)
 - #72331 (Report error when casting an C-like enum implementing Drop)
 - #72486 (Fix asinh of negative values)
 - #72497 (tag/niche terminology cleanup)
 - #72999 (Create self-contained directory and move there some of external binaries/libs)
 - #73130 (Remove const prop for indirects)
 - #73142 (Ensure std benchmarks get tested.)
 - #73305 (Disallow loading crates with non-ascii identifier name.)
 - #73346 (Add rust specific features to print target features)
 - #73362 (Test that bounds checks are elided when slice len is checked up-front)
 - #73459 (Reduce pointer casts in Box::into_boxed_slice)
 - #73464 (Document format correction)
 - #73479 (Minor tweaks to liballoc)

Failed merges:

r? @ghost

4 years agoRollup merge of #73479 - pickfire:liballoc-spell, r=dtolnay
Ralf Jung [Fri, 19 Jun 2020 06:56:19 +0000 (08:56 +0200)]
Rollup merge of #73479 - pickfire:liballoc-spell, r=dtolnay

Minor tweaks to liballoc

4 years agoRollup merge of #73464 - qy3u:fs-document-format-correction, r=jonas-schievink
Ralf Jung [Fri, 19 Jun 2020 06:56:17 +0000 (08:56 +0200)]
Rollup merge of #73464 - qy3u:fs-document-format-correction, r=jonas-schievink

Document format correction

Minor amendments to the document.

r? @steveklabnik

4 years agoRollup merge of #73459 - cuviper:into_boxed_slice-unicast, r=dtolnay
Ralf Jung [Fri, 19 Jun 2020 06:56:15 +0000 (08:56 +0200)]
Rollup merge of #73459 - cuviper:into_boxed_slice-unicast, r=dtolnay

Reduce pointer casts in Box::into_boxed_slice

We only need to cast the pointer once to change `Box<T>` to an array
`Box<[T; 1]>`, then we can let unsized coercion return `Box<[T]>`.

4 years agoRollup merge of #73362 - erikdesjardins:bounds, r=nikomatsakis
Ralf Jung [Fri, 19 Jun 2020 06:56:13 +0000 (08:56 +0200)]
Rollup merge of #73362 - erikdesjardins:bounds, r=nikomatsakis

Test that bounds checks are elided when slice len is checked up-front

Closes #69101

4 years agoRollup merge of #73346 - aszenz:patch-1, r=cuviper
Ralf Jung [Fri, 19 Jun 2020 06:56:12 +0000 (08:56 +0200)]
Rollup merge of #73346 - aszenz:patch-1, r=cuviper

Add rust specific features to print target features

Fixes #71583

`crt-static` is a rust specific target feature that's absent from llvm feature table, adding it there so that it shows under `rustc --print target-features`.

Probably the most native implementation I could think of, would love to get feedback.

4 years agoRollup merge of #73305 - crlf0710:disallow_loading_monsters, r=petrochenkov
Ralf Jung [Fri, 19 Jun 2020 06:56:10 +0000 (08:56 +0200)]
Rollup merge of #73305 - crlf0710:disallow_loading_monsters, r=petrochenkov

Disallow loading crates with non-ascii identifier name.

This turns off external crate loading with non-ascii identifier names.

cc #55467.

4 years agoRollup merge of #73142 - ehuss:std-benches, r=dtolnay
Ralf Jung [Fri, 19 Jun 2020 06:56:08 +0000 (08:56 +0200)]
Rollup merge of #73142 - ehuss:std-benches, r=dtolnay

Ensure std benchmarks get tested.

This ensures that the std benchmarks don't break in the future. Currently they aren't compiled or tested on CI, so they can easily bitrot.  Testing a benchmark runs it with one iteration. Adding these should only add a few seconds to CI.

Closes #54176
Closes #61913

4 years agoRollup merge of #73130 - wesleywiser:remove_const_prop_for_indirects, r=oli-obk
Ralf Jung [Fri, 19 Jun 2020 06:56:06 +0000 (08:56 +0200)]
Rollup merge of #73130 - wesleywiser:remove_const_prop_for_indirects, r=oli-obk

Remove const prop for indirects

This was only used by one mir-opt test and since it causes buggy behavior under `-Zmir-opt-level=2`, it seems like we should remove it.

This was split out from #71946.

Closes #72679
Closes #72372
Closes #72285

4 years agoRollup merge of #72999 - mati865:separate-self-contained-dir, r=Mark-Simulacrum
Ralf Jung [Fri, 19 Jun 2020 06:56:04 +0000 (08:56 +0200)]
Rollup merge of #72999 - mati865:separate-self-contained-dir, r=Mark-Simulacrum

Create self-contained directory and move there some of external binaries/libs

One of the steps to reach design described in https://github.com/rust-lang/rust/issues/68887#issuecomment-633048380
This PR moves things around and allows link code to handle the new directory structure.

4 years agoRollup merge of #72497 - RalfJung:tag-term, r=oli-obk
Ralf Jung [Fri, 19 Jun 2020 06:56:02 +0000 (08:56 +0200)]
Rollup merge of #72497 - RalfJung:tag-term, r=oli-obk

tag/niche terminology cleanup

The term "discriminant" was used in two ways throughout the compiler:
* every enum variant has a corresponding discriminant, that can be given explicitly with `Variant = N`.
* that discriminant is then encoded in memory to store which variant is active -- but this encoded form of the discriminant was also often called "discriminant", even though it is conceptually quite different (e.g., it can be smaller in size, or even use niche-filling).

After discussion with @eddyb, this renames the second term to "tag". The way the tag is encoded can be either `TagEncoding::Direct` (formerly `DiscriminantKind::Tag`) or `TagEncoding::Niche` (formerly `DiscrimianntKind::Niche`).

This finally resolves some long-standing confusion I had about the handling of variant indices and discriminants, which surfaced in https://github.com/rust-lang/rust/pull/72419.

(There is also a `DiscriminantKind` type in libcore, it remains unaffected. I think this corresponds to the discriminant, not the tag, so that seems all right.)

r? @eddyb

4 years agoRollup merge of #72486 - Ralith:asinh-fix, r=dtolnay
Ralf Jung [Fri, 19 Jun 2020 06:55:59 +0000 (08:55 +0200)]
Rollup merge of #72486 - Ralith:asinh-fix, r=dtolnay

Fix asinh of negative values

Rust's current implementation of asinh has [large errors](https://www.wolframalpha.com/input/?i=arcsinh%28x%29%2C+ln%28x%2B%28x%5E2%2B1%29%5E0.5%29%2C+x+from+-67452095.07139316+to+0) in its negative range. ~These are (mostly) not numerical, but rather seem due to an incorrect implementation.~ This appears to be due to avoidable catastrophic cancellation.
[Playground before/after](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=bd04ae6d86d06612e4e389a8b95d19ab).
[glibc uses](https://github.com/bminor/glibc/blob/81dca813cc35f91414731fdd0ff6b756d5e1827f/sysdeps/ieee754/dbl-64/s_asinh.c#L56) abs here.

Many thanks to @danieldeankon for finding this weird behavior, @jebrosen for diagnosing it, and @toasteater for identifying the probable implementation error!

4 years agoRollup merge of #72331 - oddg:forbid-cast-of-cenum-implementing-drop, r=matthewjasper...
Ralf Jung [Fri, 19 Jun 2020 06:55:57 +0000 (08:55 +0200)]
Rollup merge of #72331 - oddg:forbid-cast-of-cenum-implementing-drop, r=matthewjasper,nikomatsakis

Report error when casting an C-like enum implementing Drop

Following approach described in https://github.com/rust-lang/rust/issues/35941

4 years agoRollup merge of #70740 - haraldh:static-pie, r=petrochenkov
Ralf Jung [Fri, 19 Jun 2020 06:55:55 +0000 (08:55 +0200)]
Rollup merge of #70740 - haraldh:static-pie, r=petrochenkov

Enabling static-pie for musl

and make it the default for the x86_64-unknown-linux-musl target

This is a quick implementation for https://github.com/rust-lang/rust/issues/70693

Opening it as a draft PR to gather some feedback, before I put more work in it.

```console
❯ cat hello.rs
fn main() {
    println!("main = {:#x}", &main as *const _ as usize);
}

❯  /tmp/rust-musl/bin/rustc  --target x86_64-unknown-linux-musl  ~/hello.rs

❯ ldd hello
statically linked

❯ file hello
hello: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), statically linked, BuildID[sha1]=fec5cdc170f503a712a63a6958691ce5ce433654, with debug_info, not stripped

❯ ./hello
main = 0x7f233ca30008

❯ ./hello
main = 0x7f9ddc529008

❯ ./hello
main = 0x7f1e5a224008

❯ ./hello
main = 0x7f4485c7c008

❯ /tmp/rust-musl/bin/rustc  --target x86_64-unknown-linux-musl  -Z print-link-args  ~/hello.rs
"cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-Wl,--eh-frame-hdr" "-m64" "-nostdlib" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/rcrt1.o" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/crti.o" "-L" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib" "hello.hello.7rcbfp3g-cgu.0.rcgu.o" "hello.hello.7rcbfp3g-cgu.1.rcgu.o" "hello.hello.7rcbfp3g-cgu.2.rcgu.o" "hello.hello.7rcbfp3g-cgu.3.rcgu.o" "hello.hello.7rcbfp3g-cgu.4.rcgu.o" "hello.hello.7rcbfp3g-cgu.5.rcgu.o" "-o" "hello" "hello.1nxjf9so94czdgcz.rcgu.o" "-Wl,--gc-sections" "-static-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-L" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib" "-Wl,--start-group" "-Wl,-Bstatic" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libstd-0f9cb7646f9e2c34.rlib" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libpanic_unwind-ba857f2f2e4e7187.rlib" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libhashbrown-58ba5e25bbdf9d29.rlib" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/librustc_std_workspace_alloc-886bfe43afa847dc.rlib" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libbacktrace-fbfb8fe99f19a67b.rlib" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libbacktrace_sys-85fa859e7d364cc9.rlib" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/librustc_demangle-07ab026cd3ec0d82.rlib" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libunwind-a8ec5932d92ea864.rlib" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libcfg_if-0ba4cc2f38a198d5.rlib" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/liblibc-c1bb2b3ce4f78b7c.rlib" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/liballoc-0ff673c1cf0d451a.rlib" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/librustc_std_workspace_core-c8ff2001db856926.rlib" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libcore-2ae14177140eeca2.rlib" "-Wl,--end-group" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libcompiler_builtins-4fd81b5ce1b08a9c.rlib" "-static" "-Wl,-Bdynamic" "/tmp/rust-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/crtn.o"
```

Closes https://github.com/rust-lang/rust/issues/70693
Closes https://github.com/rust-lang/rust/issues/53968

4 years agoRemove now-redundant branch
Benjamin Saunders [Fri, 19 Jun 2020 01:52:26 +0000 (18:52 -0700)]
Remove now-redundant branch

4 years agoAuto merge of #73486 - Manishearth:rollup-11iyqpc, r=Manishearth
bors [Fri, 19 Jun 2020 01:20:49 +0000 (01:20 +0000)]
Auto merge of #73486 - Manishearth:rollup-11iyqpc, r=Manishearth

Rollup of 17 pull requests

Successful merges:

 - #70551 (Make all uses of ty::Error delay a span bug)
 - #71338 (Expand "recursive opaque type" diagnostic)
 - #71976 (Improve diagnostics for `let x += 1`)
 - #72279 (add raw_ref macros)
 - #72628 (Add tests for 'impl Default for [T; N]')
 - #72804 (Further tweak lifetime errors involving `dyn Trait` and `impl Trait` in return position)
 - #72814 (remove visit_terminator_kind from MIR visitor)
 - #72836 (Complete the std::time documentation to warn about the inconsistencies between OS)
 - #72968 (Only highlight doc search results via mouseover if mouse has moved)
 - #73034 (Export `#[inline]` fns with extern indicators)
 - #73315 (Clean up some weird command strings)
 - #73320 (Make new type param suggestion more targetted)
 - #73361 (Tweak "non-primitive cast" error)
 - #73425 (Mention functions pointers in the documentation)
 - #73428 (Fix typo in librustc_ast docs)
 - #73447 (Improve document for `Result::as_deref(_mut)` methods)
 - #73476 (Added tooltip for should_panic code examples)

Failed merges:

r? @ghost

4 years agoMerge pull request #4 from rust-lang/master
Rich Kadel [Thu, 18 Jun 2020 22:44:11 +0000 (15:44 -0700)]
Merge pull request #4 from rust-lang/master

update from origin 2020-06-18

4 years agoRollup merge of #73476 - JakobDegen:should_panic_rustdoc, r=GuillaumeGomez
Manish Goregaokar [Thu, 18 Jun 2020 22:21:04 +0000 (15:21 -0700)]
Rollup merge of #73476 - JakobDegen:should_panic_rustdoc, r=GuillaumeGomez

Added tooltip for should_panic code examples

This change adds a tooltip to the documentation for `should_panic` examples. It currently displays identically to `compile_fail` examples, save for the changed text. It may be helpful to change the color that this displays in to make it visually more clear what is going on, but I'm unsure if additional colors wouldn't just be distracting.

I brought this [up on internals](https://internals.rust-lang.org/t/indicating-that-an-example-is-should-panic-in-docs/12544) a few days ago, and there seemed to be a mild positive response to it.

4 years agoRollup merge of #73447 - lzutao:stabilize-result_as_deref, r=dtolnay
Manish Goregaokar [Thu, 18 Jun 2020 22:21:03 +0000 (15:21 -0700)]
Rollup merge of #73447 - lzutao:stabilize-result_as_deref, r=dtolnay

Improve document for `Result::as_deref(_mut)` methods

cc #50264

4 years agoRollup merge of #73428 - pierwill:patch-1, r=jonas-schievink
Manish Goregaokar [Thu, 18 Jun 2020 22:21:01 +0000 (15:21 -0700)]
Rollup merge of #73428 - pierwill:patch-1, r=jonas-schievink

Fix typo in librustc_ast docs

Fixed sentence by removing a word.

4 years agoRollup merge of #73425 - poliorcetics:zeroed-functions-pointers, r=dtolnay
Manish Goregaokar [Thu, 18 Jun 2020 22:20:59 +0000 (15:20 -0700)]
Rollup merge of #73425 - poliorcetics:zeroed-functions-pointers, r=dtolnay

Mention functions pointers in the documentation

Fixes #51615.

This mentions function pointers in the documentation for `core::mem::zeroed`, adding them to the list of types that are **always** wrong when zeroed, with `&T` and `&mut T`.

@rustbot modify labels: T-doc, C-enhancement, T-libs

4 years agoRollup merge of #73361 - estebank:non-primitive-cast, r=davidtwco
Manish Goregaokar [Thu, 18 Jun 2020 22:20:57 +0000 (15:20 -0700)]
Rollup merge of #73361 - estebank:non-primitive-cast, r=davidtwco

Tweak "non-primitive cast" error

- Suggest borrowing expression if it would allow cast to work.
- Suggest using `<Type>::from(<expr>)` when appropriate.
- Minor tweak to `;` typo suggestion.

Partily address #47136.

4 years agoRollup merge of #73320 - estebank:type-param-sugg-more, r=davidtwco
Manish Goregaokar [Thu, 18 Jun 2020 22:20:55 +0000 (15:20 -0700)]
Rollup merge of #73320 - estebank:type-param-sugg-more, r=davidtwco

Make new type param suggestion more targetted

Do not suggest new type param when encountering a missing type in an ADT
field with generic parameters.

Fix #72640.

4 years agoRollup merge of #73315 - GuillaumeGomez:clean-up-config-strs, r=kinnison
Manish Goregaokar [Thu, 18 Jun 2020 22:20:53 +0000 (15:20 -0700)]
Rollup merge of #73315 - GuillaumeGomez:clean-up-config-strs, r=kinnison

Clean up some weird command strings

r? @kinnison

4 years agoRollup merge of #73034 - doctorn:nomangle-inline-linkage, r=matthewjasper
Manish Goregaokar [Thu, 18 Jun 2020 22:20:51 +0000 (15:20 -0700)]
Rollup merge of #73034 - doctorn:nomangle-inline-linkage, r=matthewjasper

Export `#[inline]` fns with extern indicators

In ancient history (#36280) we stopped `#[inline]` fns being codegened if they weren't used. However,

- #72944
- #72463

observe that when writing something like

```rust
#![crate_type = "cdylib"]

#[no_mangle]
#[inline]
pub extern "C" fn foo() {
    // ...
}
```

we really _do_ want `foo` to be codegened. This change makes this the case.

Resolves #72944, resolves #72463 (and maybe some more)

4 years agoRollup merge of #72968 - integer32llc:docs-arrow-keys, r=GuillaumeGomez
Manish Goregaokar [Thu, 18 Jun 2020 22:20:49 +0000 (15:20 -0700)]
Rollup merge of #72968 - integer32llc:docs-arrow-keys, r=GuillaumeGomez

Only highlight doc search results via mouseover if mouse has moved

## What happens

- Go to https://doc.rust-lang.org/stable/std/index.html
- Put your mouse cursor somewhere in the middle where search results will appear and then don't move the mouse
- Press 's' to focus the search box
- Type a query that brings up enough search results to go under where your mouse cursor is
- Press the down arrow
- The search result that is one below where your mouse cursor is will be highlighted.

## What I expected

When not currently using the mouse, I expect doing a search and then pressing the down arrow to always highlight the first search result immediately below the search box.

## The fix

This feels a bit hacky to me; I'm open to other solutions. This introduces a global JS var that keeps track of whether the person searching has moved their mouse after doing a search or not, and only uses the mouse position to highlight search results if the person HAS moved the mouse AFTER doing a search.

4 years agoRollup merge of #72836 - poliorcetics:std-time-os-specificities, r=shepmaster
Manish Goregaokar [Thu, 18 Jun 2020 22:20:47 +0000 (15:20 -0700)]
Rollup merge of #72836 - poliorcetics:std-time-os-specificities, r=shepmaster

Complete the std::time documentation to warn about the inconsistencies between OS

Fixes #48980.

I put the new documentation in `src/libstd/time.rs` at the module-level because it affects all types, even the one that are not directly system dependents if they are used with affected types, but there may be a better place for it.

4 years agoRollup merge of #72814 - RalfJung:mir-visir-terminator, r=oli-obk
Manish Goregaokar [Thu, 18 Jun 2020 22:20:45 +0000 (15:20 -0700)]
Rollup merge of #72814 - RalfJung:mir-visir-terminator, r=oli-obk

remove visit_terminator_kind from MIR visitor

For some reason, we had both `visit_terminator` and `visit_terminator_kind`. In contrast, for `Statement` we just have `visit_statement`. So this cleans things up by removing `visit_terminator_kind` and porting its users to `visit_terminator`.

4 years agoRollup merge of #72804 - estebank:opaque-missing-lts-in-fn-2, r=nikomatsakis
Manish Goregaokar [Thu, 18 Jun 2020 22:20:43 +0000 (15:20 -0700)]
Rollup merge of #72804 - estebank:opaque-missing-lts-in-fn-2, r=nikomatsakis

Further tweak lifetime errors involving `dyn Trait` and `impl Trait` in return position

* Suggest substituting `'static` lifetime in impl/dyn `Trait + 'static` instead of `Trait + 'static + '_`
* When `'static` is explicit, also suggest constraining argument with it
* Reduce verbosity of suggestion message and mention lifetime in label
* Tweak output for overlapping required/captured spans
* Give these errors an error code

Follow up to #72543.

r? @nikomatsakis

4 years agoRollup merge of #72628 - MikailBag:array-default-tests, r=shepmaster
Manish Goregaokar [Thu, 18 Jun 2020 22:20:41 +0000 (15:20 -0700)]
Rollup merge of #72628 - MikailBag:array-default-tests, r=shepmaster

Add tests for 'impl Default for [T; N]'

Related: #71690.
This pull request adds two tests:
- Even it T::default() panics, no leaks occur.
- [T; 0] is Default even if T is not.

I believe at some moment `Default` impl for arrays will be rewritten to use const generics instead of macros, and these tests will help to prevent behavior changes.

4 years agoRollup merge of #72279 - RalfJung:raw-ref-macros, r=nikomatsakis
Manish Goregaokar [Thu, 18 Jun 2020 22:20:39 +0000 (15:20 -0700)]
Rollup merge of #72279 - RalfJung:raw-ref-macros, r=nikomatsakis

add raw_ref macros

In https://github.com/rust-lang/rust/issues/64490, various people were in favor of exposing `&raw` as a macro first before making the actual syntax stable. So this PR (unstably) introduces those macros.

I'll create the tracking issue if we're okay moving forward with this.

4 years agoRollup merge of #71976 - mibac138:let-recovery, r=estebank
Manish Goregaokar [Thu, 18 Jun 2020 22:20:36 +0000 (15:20 -0700)]
Rollup merge of #71976 - mibac138:let-recovery, r=estebank

Improve diagnostics for `let x += 1`

Fixes(?) #66736

The code responsible for the `E0404` errors is [here](https://github.com/rust-lang/rust/blob/master/src/librustc_parse/parser/ty.rs#L399-L424) which I don't think can be easily modified to prevent emitting an error in one specific case. Because of this I couldn't get rid of `E0404` and instead added `E0067` along with a help message which will fix the problem.

r? @estebank

4 years agoRollup merge of #71338 - estebank:recursive-impl-trait, r=nikomatsakis
Manish Goregaokar [Thu, 18 Jun 2020 22:20:33 +0000 (15:20 -0700)]
Rollup merge of #71338 - estebank:recursive-impl-trait, r=nikomatsakis

Expand "recursive opaque type" diagnostic

Fix #70968, partially address #66523.

4 years agoRollup merge of #70551 - mark-i-m:ty-err-2, r=varkor
Manish Goregaokar [Thu, 18 Jun 2020 22:20:30 +0000 (15:20 -0700)]
Rollup merge of #70551 - mark-i-m:ty-err-2, r=varkor

Make all uses of ty::Error delay a span bug

r? @eddyb

A second attempt at https://github.com/rust-lang/rust/pull/70245

resolves https://github.com/rust-lang/rust/issues/70866

4 years agoAuto merge of #73446 - ecstatic-morse:issue-73431, r=pnkfelix
bors [Thu, 18 Jun 2020 21:50:45 +0000 (21:50 +0000)]
Auto merge of #73446 - ecstatic-morse:issue-73431, r=pnkfelix

Make novel structural match violations not a `bug`

Fixes (on master) #73431.

Ideally, `CustomEq` would emit a strict subset of the structural match errors that are found by `search_for_structural_match_violation`, since it allows more cases due to value-based reasoning. However, const qualification is more conservative than `search_for_structural_match_violation` around associated constants, since qualification does not try to substitute type parameters.

In the long term, we should probably make const qualification work for generic associated constants, but I don't like extending its capabilities even further.

r? @pnkfelix

4 years agoDisable core benches on wasm (benches not supported).
Eric Huss [Thu, 18 Jun 2020 21:45:19 +0000 (14:45 -0700)]
Disable core benches on wasm (benches not supported).

4 years agoRearrange liballoc __impl_slice_eq1
Ivan Tham [Thu, 18 Jun 2020 16:34:49 +0000 (00:34 +0800)]
Rearrange liballoc __impl_slice_eq1

4 years agoLiballoc clean up macro_rules style
Ivan Tham [Thu, 18 Jun 2020 16:34:20 +0000 (00:34 +0800)]
Liballoc clean up macro_rules style

4 years agoFix liballoc doc spelling
Ivan Tham [Thu, 18 Jun 2020 16:33:24 +0000 (00:33 +0800)]
Fix liballoc doc spelling

4 years agoEnsure std benchmarks get tested.
Eric Huss [Mon, 8 Jun 2020 16:09:21 +0000 (09:09 -0700)]
Ensure std benchmarks get tested.

4 years agoRemoved trailing whitespace
Jake Degen [Thu, 18 Jun 2020 15:45:52 +0000 (11:45 -0400)]
Removed trailing whitespace

4 years agoAdded tooltip for should_panic code examples.
Jake Degen [Thu, 18 Jun 2020 12:48:37 +0000 (08:48 -0400)]
Added tooltip for should_panic code examples.

Previously, compile_fail and ignore code examples displayed a tooltip
indicating this in the documentation. This tooltip has now also been
added to should_panic examples.

4 years agoDocument format correction
qy3u [Thu, 18 Jun 2020 02:13:35 +0000 (10:13 +0800)]
Document format correction

4 years agoAuto merge of #73384 - petrochenkov:gnulink, r=cuviper
bors [Thu, 18 Jun 2020 04:29:23 +0000 (04:29 +0000)]
Auto merge of #73384 - petrochenkov:gnulink, r=cuviper

linker: Never pass `-no-pie` to non-gnu linkers

Fixes https://github.com/rust-lang/rust/issues/73370

4 years agoImprove document for `Result::as_deref(_mut)`
Lzu Tao [Thu, 18 Jun 2020 02:09:53 +0000 (02:09 +0000)]
Improve document for `Result::as_deref(_mut)`

4 years agoAuto merge of #73065 - Amanieu:tls-fix, r=oli-obk
bors [Thu, 18 Jun 2020 00:29:10 +0000 (00:29 +0000)]
Auto merge of #73065 - Amanieu:tls-fix, r=oli-obk

Fix link error with #[thread_local] introduced by #71192

r? @oli-obk

4 years agoRemove duplicate sentence fragment from mem::zeroed doc
David Tolnay [Thu, 18 Jun 2020 00:17:07 +0000 (17:17 -0700)]
Remove duplicate sentence fragment from mem::zeroed doc

4 years agoReduce pointer casts in Box::into_boxed_slice
Josh Stone [Wed, 17 Jun 2020 23:30:27 +0000 (16:30 -0700)]
Reduce pointer casts in Box::into_boxed_slice

We only need to cast the pointer once to change `Box<T>` to an array
`Box<[T; 1]>`, then we can let unsized coercion return `Box<[T]>`.

4 years agoreview comments
Esteban Küber [Wed, 17 Jun 2020 23:29:03 +0000 (16:29 -0700)]
review comments

4 years agoremoved try config to test mac & windows (passed)
Rich Kadel [Wed, 17 Jun 2020 21:50:28 +0000 (14:50 -0700)]
removed try config to test mac & windows (passed)

https://dev.azure.com/rust-lang/rust/_build/results?buildId=32224&view=results

4 years agotemporarily enable mac and windows tests on bors try
Rich Kadel [Wed, 17 Jun 2020 18:24:43 +0000 (11:24 -0700)]
temporarily enable mac and windows tests on bors try

testing platform-specific changes

4 years agoUpdate src/libcore/intrinsics.rs
Rich Kadel [Wed, 17 Jun 2020 17:29:00 +0000 (10:29 -0700)]
Update src/libcore/intrinsics.rs

Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>
4 years agoignore-debug: debug assertions in slice indexing prevent the optimization
erikdesjardins [Wed, 17 Jun 2020 17:10:49 +0000 (13:10 -0400)]
ignore-debug: debug assertions in slice indexing prevent the optimization

4 years agoAdd issue number to novel violation warning
Dylan MacKenzie [Wed, 17 Jun 2020 17:02:09 +0000 (10:02 -0700)]
Add issue number to novel violation warning

4 years agoAdd regression test for #73431
Dylan MacKenzie [Wed, 17 Jun 2020 16:29:50 +0000 (09:29 -0700)]
Add regression test for #73431

4 years agoMake novel structural match violations a warning
Dylan MacKenzie [Wed, 17 Jun 2020 16:29:33 +0000 (09:29 -0700)]
Make novel structural match violations a warning

4 years agoAuto merge of #69890 - lenary:lenary/riscv-frame-pointers, r=hanna-kruppe,Mark-Simulacrum
bors [Wed, 17 Jun 2020 11:30:56 +0000 (11:30 +0000)]
Auto merge of #69890 - lenary:lenary/riscv-frame-pointers, r=hanna-kruppe,Mark-Simulacrum

[RISC-V] Do not force frame pointers

We have been seeing some very inefficient code that went away when using
`-Cforce-frame-pointers=no`. For instance `core::ptr::drop_in_place` at
`-Oz` was compiled into a function which consisted entirely of saving
registers to the stack, then using the frame pointer to restore the same
registers (without any instructions between the prolog and epilog).

The RISC-V LLVM backend supports frame pointer elimination, so it makes
sense to allow this to happen when using Rust. It's not clear to me that
frame pointers have ever been required in the general case.

In rust-lang/rust#61675 it was pointed out that this made reassembling
stack traces easier, which is true, but there is a code generation
option for forcing frame pointers, and I feel the default should not be
to require frame pointers, given it demonstrably makes code size worse
(around 10% in some embedded applications).

The kinds of targets mentioned in rust-lang/rust#61675 are popular, but
should not dictate that code generation should be worse for all RISC-V
targets, especially as there is a way to use CFI information to
reconstruct the stack when the frame pointer is eliminated. It is also
a misconception that `fp` is always used for the frame pointer. `fp` is
an ABI name for `x8` (aka `s0`), and if no frame pointer is required,
`x8` may be used for other callee-saved values.

---

I am partly posting this to get feedback from @fintelia who introduced the change to require frame pointers, and @hanna-kruppe who had issues with the original PR. I would understand if we wanted to remove this setting on only a subset of RISC-V targets, but my preference would be to remove this setting everywhere.

There are more details on the code size savings seen in Tock here: https://github.com/tock/tock/pull/1660

4 years agoadd blank line bw sections
asrar [Wed, 17 Jun 2020 05:01:46 +0000 (10:31 +0530)]
add blank line bw sections

Separate target features from rust ones with a blank line

Co-authored-by: Josh Stone <cuviper@gmail.com>
4 years agoEnsure profiling runtime for -Zinstrument-coverage
Rich Kadel [Wed, 17 Jun 2020 01:48:46 +0000 (18:48 -0700)]
Ensure profiling runtime for -Zinstrument-coverage

If config.toml `profiler = false`, the test/mir-opt/instrument_coverage
test is ignored. Otherwise, this patch ensures the profiler_runtime is
loaded when -Zinstrument-coverage is enabled. Confirmed that this works
for MacOS.

4 years agoDon't imply function pointers are references
Poliorcetics [Wed, 17 Jun 2020 01:30:41 +0000 (03:30 +0200)]
Don't imply function pointers are references

Co-authored-by: David Tolnay <dtolnay@gmail.com>
4 years agoFix typo in librustc_ast docs
pierwill [Wed, 17 Jun 2020 01:11:47 +0000 (18:11 -0700)]
Fix typo in librustc_ast docs

Fixed sentence by removing a word.

4 years agoSuggest new type param on single char ident
Esteban Küber [Sat, 13 Jun 2020 19:08:32 +0000 (12:08 -0700)]
Suggest new type param on single char ident

Suggest new type parameter on single char uppercase ident even if it
doesn't appear in a field's type parameter.

Address comment in #72641.

4 years agoAdd some comments related to place op typeck
Gary Guo [Tue, 16 Jun 2020 21:48:35 +0000 (22:48 +0100)]
Add some comments related to place op typeck

4 years agoMention functions pointers in the documentation
Alexis Bourget [Tue, 16 Jun 2020 21:33:23 +0000 (23:33 +0200)]
Mention functions pointers in the documentation

4 years agoAuto merge of #73322 - Amanieu:asm-srcloc-llvm, r=cuviper
bors [Tue, 16 Jun 2020 20:40:22 +0000 (20:40 +0000)]
Auto merge of #73322 - Amanieu:asm-srcloc-llvm, r=cuviper

Update LLVM submodule

Only includes one commit:
- [D80759](https://reviews.llvm.org/D80759): Fix FastISel dropping srcloc metadata from InlineAsm

Fixes #40555

4 years agowe can enable one more codegen test in debug mode now
Ralf Jung [Sat, 6 Jun 2020 10:19:29 +0000 (12:19 +0200)]
we can enable one more codegen test in debug mode now

4 years agomemory access sanity checks: abort instead of panic
Ralf Jung [Sat, 6 Jun 2020 09:56:58 +0000 (11:56 +0200)]
memory access sanity checks: abort instead of panic

4 years agotrim whitespace
root [Tue, 16 Jun 2020 18:53:30 +0000 (18:53 +0000)]
trim whitespace

4 years agobreak long line for formatting
root [Tue, 16 Jun 2020 18:14:32 +0000 (18:14 +0000)]
break long line for formatting

4 years agoadd header for rust specific feature
root [Tue, 16 Jun 2020 17:36:04 +0000 (17:36 +0000)]
add header for rust specific feature

4 years agoAuto merge of #73402 - Dylan-DPC:rollup-8udzpfu, r=Dylan-DPC
bors [Tue, 16 Jun 2020 14:58:14 +0000 (14:58 +0000)]
Auto merge of #73402 - Dylan-DPC:rollup-8udzpfu, r=Dylan-DPC

Rollup of 8 pull requests

Successful merges:

 - #73237 (Check for overflow in DroplessArena and align returned memory)
 - #73339 (Don't run generator transform when there's a TyErr)
 - #73372 (Re-order correctly the sections in the sidebar)
 - #73373 (Use track caller for bug! macro)
 - #73380 (Add more info to `x.py build --help` on default value for `-j JOBS`.)
 - #73381 (Fix typo in docs of std::mem)
 - #73389 (Use `Ipv4Addr::from<[u8; 4]>` when possible)
 - #73400 (Fix forge-platform-support URL)

Failed merges:

r? @ghost

4 years agoformat derives
Who? Me?! [Tue, 16 Jun 2020 14:41:05 +0000 (09:41 -0500)]
format derives

Co-authored-by: lzutao <taolzu@gmail.com>
4 years agoDisallow loading crates with non-ascii identifier name.
Charles Lew [Sat, 13 Jun 2020 05:27:22 +0000 (13:27 +0800)]
Disallow loading crates with non-ascii identifier name.

4 years agoRollup merge of #73400 - rnestler:patch-1, r=jonas-schievink
Dylan DPC [Tue, 16 Jun 2020 13:08:48 +0000 (15:08 +0200)]
Rollup merge of #73400 - rnestler:patch-1, r=jonas-schievink

Fix forge-platform-support URL

Apparently it got changed.

4 years agoRollup merge of #73389 - lzutao:from, r=kennytm
Dylan DPC [Tue, 16 Jun 2020 13:08:47 +0000 (15:08 +0200)]
Rollup merge of #73389 - lzutao:from, r=kennytm

Use `Ipv4Addr::from<[u8; 4]>` when possible

Resolve this comment: https://github.com/rust-lang/rust/pull/73331#discussion_r440098369

4 years agoRollup merge of #73381 - ratijas:fix-typo-std-mem, r=jonas-schievink
Dylan DPC [Tue, 16 Jun 2020 13:08:45 +0000 (15:08 +0200)]
Rollup merge of #73381 - ratijas:fix-typo-std-mem, r=jonas-schievink

Fix typo in docs of std::mem

4 years agoRollup merge of #73380 - pnkfelix:make-bootstrap-help-print-num-cpus, r=Mark-Simulacrum
Dylan DPC [Tue, 16 Jun 2020 13:08:43 +0000 (15:08 +0200)]
Rollup merge of #73380 - pnkfelix:make-bootstrap-help-print-num-cpus, r=Mark-Simulacrum

Add more info to `x.py build --help` on default value for `-j JOBS`.

4 years agoRollup merge of #73373 - lzutao:bug-trackcaller, r=Amanieu
Dylan DPC [Tue, 16 Jun 2020 13:08:42 +0000 (15:08 +0200)]
Rollup merge of #73373 - lzutao:bug-trackcaller, r=Amanieu

Use track caller for bug! macro

4 years agoRollup merge of #73372 - GuillaumeGomez:re-order-sidebar-sections, r=kinnison
Dylan DPC [Tue, 16 Jun 2020 13:08:40 +0000 (15:08 +0200)]
Rollup merge of #73372 - GuillaumeGomez:re-order-sidebar-sections, r=kinnison

Re-order correctly the sections in the sidebar

Before that, "trait implementations" and "implementors" titles in the sidebar were before "methods" for example. Which wasn't logical considering that the two sections come after in the "content".

r? @kinnison

4 years agoRollup merge of #73339 - jonas-schievink:unbug, r=estebank
Dylan DPC [Tue, 16 Jun 2020 13:08:37 +0000 (15:08 +0200)]
Rollup merge of #73339 - jonas-schievink:unbug, r=estebank

Don't run generator transform when there's a TyErr

Not sure if this might cause any problems later on, but we shouldn't be hitting codegen or const eval for the produced MIR anyways, so it should be fine.

cc https://github.com/rust-lang/rust/issues/72685#issuecomment-643749020

4 years agoRollup merge of #73237 - tmiasko:arena, r=nnethercote
Dylan DPC [Tue, 16 Jun 2020 13:08:35 +0000 (15:08 +0200)]
Rollup merge of #73237 - tmiasko:arena, r=nnethercote

Check for overflow in DroplessArena and align returned memory

* Check for overflow when calculating the slice start & end position.
* Align the pointer obtained from the allocator, ensuring that it
  satisfies user requested alignment (the allocator is only asked for
  layout compatible with u8 slice).
* Remove an incorrect assertion from DroplessArena::align.
* Avoid forming references to an uninitialized memory in DroplessArena.

Helps with #73007, #72624.

4 years agoUpdate ui tests
Guillaume Gomez [Fri, 12 Jun 2020 12:01:53 +0000 (14:01 +0200)]
Update ui tests

4 years agoFix forge-platform-support URL
Raphael Nestler [Tue, 16 Jun 2020 11:42:09 +0000 (13:42 +0200)]
Fix forge-platform-support URL

Apparently it got changed.

4 years agoAuto merge of #73285 - Mark-Simulacrum:clippy-fail, r=RalfJung,oli-obk
bors [Tue, 16 Jun 2020 11:26:45 +0000 (11:26 +0000)]
Auto merge of #73285 - Mark-Simulacrum:clippy-fail, r=RalfJung,oli-obk

Avoid prematurely recording toolstates

When we're running with dry_run enabled (i.e. all builds do this initially), we're
guaranteed to save of a toolstate of TestFail for tools that aren't tested. In practice,
we do test tools as well, so for those tools we would initially record them as being
TestPass, and then later on re-record the correct state after actually testing them.
However, this would not work well if the build failed for whatever reason (e.g. panicking
in bootstrap, or as was the case in #73097, clippy failing to test successfully), we would
just go on believing that things passed when they in practice did not.

This commit also adjusts saving toolstate to never record clippy explicitly (otherwise, it
would be recorded when building it); eventually that'll likely move to other tools as well
but not yet. This is deemed simpler than checking everywhere we generically save
toolstate.

We also move clippy out of the "toolstate" no-fail-fast build into a separate x.py
invocation; this should no longer be technically required but provides the nice state of
letting us check toolstate for all tools and only then check clippy (giving full results
on every build).

r? @oli-obk

Supercedes #73275, also fixes #73274

4 years agoCreate new E0763 error code for unterminated byte constant
Guillaume Gomez [Fri, 12 Jun 2020 12:01:47 +0000 (14:01 +0200)]
Create new E0763 error code for unterminated byte constant