Commit graph

143353 commits

Author SHA1 Message Date
bors
ab45885dec Auto merge of #114843 - Zalathar:test-coverage-map, r=oli-obk
coverage: Explicitly test the coverage maps produced by codegen/LLVM

Our existing coverage tests verify the output of end-to-end coverage reports, but we don't have any way to test the specific mapping information (code regions and their associated counters) that are emitted by `rustc_codegen_llvm` and LLVM. That makes it harder to to be confident in changes that would modify those mappings (whether deliberately or accidentally).

This PR addresses that by adding a new `coverage-map` test suite that does the following:
- Compiles test files to LLVM IR assembly (`.ll`)
- Feeds those IR files to a custom tool (`src/tools/coverage-dump`) that extracts and decodes coverage mappings, and prints them in a more human-readable format
- Checks the output of that tool against known-good snapshots

---

I recommend excluding the last commit while reviewing the main changes, because that last commit is just ~40 test files copied over from `tests/run-coverage`, plus their blessed coverage-map snapshots and a readme file. Those snapshots aren't really intended to be checked by hand; they're mostly there to increase the chances that an unintended change to coverage maps will be observable (even if it requires relatively specific circumstances to manifest).
2023-09-05 15:30:59 +00:00
bors
f222a2dd8f Auto merge of #115568 - matthiaskrgr:rollup-2igo8rl, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #113510 (Document soundness of Integer -> Pointer -> Integer conversions in `const` contexts.)
 - #114412 (document our assumptions about symbols provided by the libc)
 - #114813 (explain why we can mutate the FPU control word)
 - #115523 (improve `AttrTokenStream`)
 - #115536 (interpret: make MemPlace, Place, Operand types private to the interpreter)
 - #115540 (Support debuginfo for custom MIR.)
 - #115563 (llvm-wrapper: adapt for LLVM API change)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-09-05 13:44:41 +00:00
Matthias Krüger
09974dfc69
Rollup merge of #115536 - RalfJung:interpreter-privacy, r=oli-obk
interpret: make MemPlace, Place, Operand types private to the interpreter

Outside the interpreter, only the typed versions should be used.
2023-09-05 15:16:50 +02:00
bors
b402182d4e Auto merge of #115544 - onur-ozkan:patch-binaries-for-nix-configure, r=albertlarsan68
support `{disable,enable}-patch-binaries-for-nix` in configure.py

Provide the control of `patch-binaries-for-nix` flag from configure.py without requiring manual editing.

It's useful when:

bf1e3f31f9/src/bootstrap/bootstrap.py (L661-L667)
2023-09-05 11:52:21 +00:00
onur-ozkan
d454cab405 support {disable,enable}-patch-binaries-for-nix in configure.py
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-09-05 13:19:08 +03:00
bors
15e52b05ca Auto merge of #115543 - Kobzol:opt-dist-retry-download, r=Mark-Simulacrum
Retry download of rustc-perf in opt-dist

This should help resolving spurious network errors. It also increases the timeout for the archive download.

r? `@Mark-Simulacrum`
2023-09-05 07:23:08 +00:00
Zalathar
004db4728b Add test suite coverage-map to test coverage mappings emitted by LLVM
We compile each test file to LLVM IR assembly, and then pass that IR to a
dedicated program that can decode LLVM coverage maps and print them in a more
human-readable format. We can then check that output against known-good
snapshots.

This test suite has some advantages over the existing `run-coverage` tests:

- We can test coverage instrumentation without needing to run target binaries.

- We can observe subtle improvements/regressions in the underlying coverage
mappings that don't make a visible difference to coverage reports.
2023-09-05 11:55:17 +10:00
Zalathar
1367104cb2 Add tool src/tools/coverage-dump for use by some new coverage tests 2023-09-05 11:11:48 +10:00
bors
04374cd742 Auto merge of #114089 - Urgau:allow-with-implied-by, r=petrochenkov
Add an allow attribute suggestion along with the implied by suggestion

This PR adds an `#[allow(...)]` attribute hep suggestion along with the implied by suggestion:
```diff
  note: `-W dead-code` implied by `-W unused`
+ help: to override `-W unused` add `#[allow(dead_code)]`
```

This PR also adds the `OnceHelp` lint level (similar to `OnceNote`) to only put the help message one time, like the implied note.

Related to https://github.com/rust-lang/rust/issues/114030
2023-09-04 23:09:56 +00:00
Jakub Beránek
c98455fe87
Retry download of rustc-perf in opt-dist
This should help resolving spurious network errors. It also increases the timeout for the archive download.
2023-09-04 22:17:35 +02:00
Mark Rousskov
fe6c863f0b Mirror the rustc-perf source
This avoids issues with the GitHub /archive/ links which can be somewhat
unreliable and are currently causing CI issues.
2023-09-04 13:21:05 -04:00
Ralf Jung
fa5f13775a interpret: make MemPlace, Place, Operand types private to the interpreter 2023-09-04 17:53:38 +02:00
Urgau
9190e960e1 Adjust clippy tests with new rustc help suggestion for lints 2023-09-04 14:22:02 +02:00
bors
2a1af898b2 Auto merge of #115510 - GuillaumeGomez:rollup-wh719bn, r=GuillaumeGomez
Rollup of 3 pull requests

Successful merges:

 - #115478 (Emit unused doc comment warnings for pat and expr fields)
 - #115490 (rustdoc: update comment in search.js for #107629)
 - #115503 (Migrate GUI colors test to original CSS color format)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-09-03 14:44:09 +00:00
Guillaume Gomez
dbeef4590a
Rollup merge of #115490 - pitaj:rustdoc-searchjs-comment, r=GuillaumeGomez
rustdoc: update comment in search.js for #107629

Addressing https://github.com/rust-lang/rust/pull/107629#issuecomment-1693460106

r? `@jsha`
2023-09-03 15:42:12 +02:00
bors
49523e3360 Auto merge of #115448 - onur-ozkan:optimize-bootstrap-dep-tree, r=albertlarsan68
optimize bootstrap dep tree

bumped `pretty_assertations` in favor of removing duplicated `syn`, and bumped `hermit-abi` from the yanked version.
2023-09-03 12:55:10 +00:00
Ralf Jung
fb26c21c35 Merge from rustc 2023-09-03 09:28:31 +02:00
Ralf Jung
dc81d6c282 Preparing for merge from rustc 2023-09-03 09:28:30 +02:00
bors
a989e25f1b Auto merge of #115472 - RalfJung:tier-2, r=GuillaumeGomez
make it more clear what 'Tier 2' (without host tools) means

When saying that Rust "builds official binary releases for each tier 2 target", it's not at all clear that this does not mean we build a compiler and cargo for that target.
2023-09-03 05:23:52 +00:00
bors
3ec4b3bc8c Auto merge of #115436 - GuillaumeGomez:fix-type-based-search, r=notriddle
[rustdoc] Fix type based search

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

The problem was a bit more tricky than I originally thought it would be: we only kept type ID and generics in short, but as soon as there was a full path in the user query, the element didn't get an ID anymore because the ID map didn't know about `x::y` (although it knew about `y`). So for this first problem, I instead always pass the element name to get the ID.

Then a new problem occurred: we actually needed to check if paths matched, otherwise whatever the path, as long as the "end types" match, it's all good. meaning, we needed to add path information, but to do so, we needed it to be added into the search index directly as there was no mapping between `"p"` and `"q"`.

I hope this explanation makes sense to someone else than me. ^^'

r? `@notriddle`
2023-09-03 01:52:15 +00:00
Peter Jaszkowiak
b1e32eaab2 rustdoc: update comment in search.js for #107629 2023-09-02 19:26:10 -06:00
Guillaume Gomez
e161fa1a6b Correctly handle paths from foreign items 2023-09-02 23:04:37 +02:00
bors
9f5fc1bd44 Auto merge of #115471 - RalfJung:skipping-sanity, r=onur-ozkan
also skip musl checks when BOOTSTRAP_SKIP_TARGET_SANITY is set

Currently I cannot test musl targets in Miri via x.py; this PR fixes that.
2023-09-02 20:14:37 +00:00
Ralf Jung
89619b8a0e make it more clear what 'Tier 2' (without host tools) means 2023-09-02 10:34:49 +02:00
bors
585bb5e68d Auto merge of #115409 - RalfJung:llvm-merge-reland, r=lqd
bootstrap: use git merge-base for LLVM CI download logic

This re-lands https://github.com/rust-lang/rust/pull/113588, now that the perf issues are hopefully fixed by https://github.com/rust-lang/rustc-perf/pull/1684.
r? `@lqd` `@Mark-Simulacrum`

Fixes https://github.com/rust-lang/rust/issues/101907
2023-09-02 08:25:49 +00:00
Ralf Jung
9cae47ee87 also skip musl checks when BOOTSTRAP_SKIP_TARGET_SANITY is set 2023-09-02 10:25:06 +02:00
bors
ad8f601ca2 Auto merge of #115469 - matthiaskrgr:rollup-25ybx39, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #114349 (rustc_llvm: Link to `zlib` on dragonfly and solaris)
 - #114845 (Add alignment to the NPO guarantee)
 - #115427 (kmc-solid: Fix `is_interrupted`)
 - #115443 (feat(std): Stabilize 'os_str_bytes' feature)
 - #115444 (Create a SMIR visitor)
 - #115449 (Const-stabilize `is_ascii`)
 - #115456 (Add spastorino on vacation)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-09-02 06:38:58 +00:00
Matthias Krüger
43e15613d1
Rollup merge of #115443 - epage:os_str, r=cuviper
feat(std): Stabilize 'os_str_bytes' feature

Closes #111544
2023-09-02 07:48:22 +02:00
bors
1fb6947abc Auto merge of #115286 - saethlin:detangler, r=petrochenkov
Skip rendering metadata strings from include_str!/include_bytes!

The const rendering code in rustdoc completely ignores consts from expansions, but the compiler was rendering all consts. So some consts (namely those from `include_bytes!`) were rendered then ignored.

Most of the diff here is from moving `print_const_expr` from rustdoc into `rustc_hir_pretty` so that it can be used in rustdoc and when building rmeta files.
2023-09-02 04:53:19 +00:00
Ralf Jung
97ee83068d Merge from rustc 2023-09-02 03:07:21 +02:00
Ralf Jung
d2923a4438 Preparing for merge from rustc 2023-09-02 03:02:47 +02:00
Ed Page
30292bb68e fix(std): Rename os_str_bytes to encoded_bytes 2023-09-01 19:33:16 -05:00
bors
35e416303e Auto merge of #115276 - fmease:rustdoc-obj-lt-defs-handle-self-ty-params, r=GuillaumeGomez
rustdoc: correctly deal with self ty params when eliding default object lifetimes

Fixes #115179.
2023-09-01 22:11:22 +00:00
Ben Kimock
159ad5fb0d Reuse const rendering from rustdoc in rmeta encoding 2023-09-01 17:22:48 -04:00
Matthias Krüger
db6ae0721b
Rollup merge of #115411 - RalfJung:miri-abi, r=oli-obk
miri ABI check: fix handling of 1-ZST; don't accept sign differences

r? `@oli-obk`
2023-09-01 21:41:39 +02:00
onur-ozkan
2a5a6bcb82 bump hermit-abi from yanked version(0.3.1) to 0.3.2
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-09-01 21:04:23 +03:00
onur-ozkan
cfd7ab3a3e bump pretty_assertions to 1.4
Removes the duplicated dependency(syn 1.0.102) from bootstrap dependency tree

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-09-01 20:39:41 +03:00
Ed Page
9aee1de612 feat(std): Stabilize 'os_str_bytes' feature
Closes #111544
2023-09-01 11:13:45 -05:00
León Orell Valerian Liehr
f5a68f63aa
rustdoc: correctly deal with self ty params when eliding default object lifetimes 2023-09-01 16:17:53 +02:00
Guillaume Gomez
36fa557a5e Merge all loops into one when generating search index 2023-09-01 15:16:11 +02:00
Guillaume Gomez
09160b3f45 [rustdoc] Fix path in type-based search 2023-09-01 15:16:11 +02:00
Caio
0164f7e8b2
[clippy] Use symbols intended for arithmetic_side_effects 2023-09-01 10:28:55 +02:00
Ralf Jung
f28772f968 add '--skip-children' to rustfmt invocation 2023-09-01 08:30:31 +02:00
Guillaume Gomez
539957130d Improve search.js code 2023-08-31 18:51:18 +02:00
Ralf Jung
efc759238d miri ABI check: fix handling of 1-ZST; don't accept sign differences 2023-08-31 17:27:23 +02:00
Ralf Jung
cbe8a05903 update abi_compat.rs 2023-08-31 17:27:23 +02:00
Ralf Jung
fd92d956c8 don't ignore sign for ABI check 2023-08-31 17:02:53 +02:00
Ralf Jung
3e66914fc8 update target support section 2023-08-31 16:56:59 +02:00
Ralf Jung
270f777a30 bootstrap: use git merge-base for LLVM CI download logic 2023-08-31 15:45:15 +02:00
Ralf Jung
c2b0ca75aa more ABI compat tests 2023-08-31 13:21:55 +02:00