Commit Graph

233256 Commits

Author SHA1 Message Date
Ralf Jung 02217d1a16 add tests for RFC 3391 2023-09-08 08:59:55 +02:00
Ralf Jung c3e14edd8b accept some differences for rustc_abi(assert_eq), so that we can test more things to be compatible 2023-09-08 08:59:55 +02:00
Ralf Jung 8922c0c541 add support for rustc_abi(assert_eq) and use it to test some repr(transparent) cases 2023-09-07 09:14:29 +02:00
Ralf Jung c981026195 extend comments around PassMode::Direct 2023-09-07 09:14:02 +02:00
Ralf Jung e66913f8fe rustc_layout/abi: error when attribute is applied to the wrong thing 2023-09-06 11:11:06 +02:00
Ralf Jung 9570cac019 rustc_abi: also support debugging function pointers 2023-09-06 11:11:06 +02:00
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 6f31d00244
Rollup merge of #115563 - krasimirgg:llvm-18-bitcodereader, r=nikic
llvm-wrapper: adapt for LLVM API change

No functional changes intended.

Adapts the wrapper for bbe8cd1333.

Found by our experimental rust + llvm @ HEAD CI: https://buildkite.com/llvm-project/rust-llvm-integrate-prototype/builds/22055#018a6495-8dd9-41df-9381-5e7b0009ce0a/274-575
2023-09-05 15:16:51 +02:00
Matthias Krüger 9381e5bf58
Rollup merge of #115540 - cjgillot:custom-debuginfo, r=oli-obk
Support debuginfo for custom MIR.
2023-09-05 15:16:51 +02: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
Matthias Krüger a9336b6705
Rollup merge of #115523 - mojave2:improve-tokenstream, r=petrochenkov
improve `AttrTokenStream`

Improve the performance of `AttrTokenStream::to_tokenstream` method
2023-09-05 15:16:50 +02:00
Matthias Krüger 781253bc32
Rollup merge of #114813 - RalfJung:fpu-control, r=Amanieu
explain why we can mutate the FPU control word

This is usually not allowed (see https://github.com/rust-lang/stdarch/pull/1454), but here we have a special case.
2023-09-05 15:16:48 +02:00
Matthias Krüger cbab5adf8a
Rollup merge of #114412 - RalfJung:libc-symbols, r=pnkfelix
document our assumptions about symbols provided by the libc

LLVM makes assumptions about `memcmp`, `memmove`, and `memset` that go beyond what the C standard guarantees -- see https://reviews.llvm.org/D86993. Since we use LLVM, we are inheriting these assumptions.

With https://github.com/rust-lang/rust/pull/114382 we are also making a similar assumption about `memcmp`, so I added that to the list.

Fixes https://github.com/rust-lang/unsafe-code-guidelines/issues/426.
2023-09-05 15:16:47 +02:00
Matthias Krüger a23f216136
Rollup merge of #113510 - ink-feather-org:const_ptr_transmute_docs, r=RalfJung
Document soundness of Integer -> Pointer -> Integer conversions in `const` contexts.

see this [zulip thread](https://rust-lang.zulipchat.com/#narrow/stream/146212-t-compiler.2Fconst-eval/topic/Soundness.20of.20Integer.20-.3E.20Pointer.20-.3E.20Integer.20conversions)

r? `@RalfJung`

With this slice `Iterator`'s should be able to be made const once the const Trait reimplementation is done.
2023-09-05 15:16:47 +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
Krasimir Georgiev bdfa08a345 llvm-wrapper: adapt for LLVM API change
No functional changes intended.

Adapts the wrapper for bbe8cd1333.

Found by our experimental rust + llvm @ HEAD CI: https://buildkite.com/llvm-project/rust-llvm-integrate-prototype/builds/22055#018a6495-8dd9-41df-9381-5e7b0009ce0a/274-575
2023-09-05 10:04:25 +00:00
bors af488be5f8 Auto merge of #115342 - GuillaumeGomez:fmease-rotations, r=rustdoc
Add `fmease` to rustdoc review rotations

`@fmease` asked me if it was okay for them to be part of the rustdoc review rotation. Since they are already reviewing a lot of rustdoc PRs, I think it's fine to add them to the rotation.

What do you think `@rust-lang/rustdoc` ?

r? rust-lang/rustdoc
2023-09-05 09:33:52 +00: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
bors 8cfaf70c32 Auto merge of #115553 - matthiaskrgr:rollup-c0045hz, r=matthiaskrgr
Rollup of 5 pull requests

Successful merges:

 - #115353 (Emit error instead of ICE when optimized MIR is missing)
 - #115488 (Take `&mut Results` in `ResultsVisitor`)
 - #115492 (Allow `large_assignments` for Box/Arc/Rc initialization)
 - #115519 (Don't ICE on associated type projection without feature gate in new solver)
 - #115534 (Expose more information with DefId in smir)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-09-05 05:34:18 +00:00
Matthias Krüger 03853d59ce
Rollup merge of #115534 - ouz-a:smir_def, r=oli-obk
Expose more information with DefId in smir

Currently `Debug` for `DefId` doesn't provide enough information, this changes so that we get `usize` of the `DefId` and the name of it.

r? `@oli-obk`
2023-09-05 07:15:17 +02:00
Matthias Krüger f5e6aa3c4a
Rollup merge of #115519 - compiler-errors:next-solver-assoc-ice, r=lcnr
Don't ICE on associated type projection without feature gate in new solver

Self-explanatory, we should avoid ICEs when the feature gate is not enabled. Continue to ICE when the feature gate *is* enabled, though.

Fixes #115500
2023-09-05 07:15:16 +02:00
Matthias Krüger 6f180ea954
Rollup merge of #115492 - Enselic:large-box-move, r=oli-obk
Allow `large_assignments` for Box/Arc/Rc initialization

Does the `stop linting in box/arc initialization` task of #83518.

r? `@oli-obk` who is E-mentor.
2023-09-05 07:15:16 +02:00
Matthias Krüger e9d15ec2cc
Rollup merge of #115488 - Jarcho:mut_result_visitor, r=oli-obk
Take `&mut Results` in `ResultsVisitor`

This fixes a small oversight from #108293.
2023-09-05 07:15:15 +02:00
Matthias Krüger a73c663ec4
Rollup merge of #115353 - Enselic:no-optimized-mir, r=oli-obk
Emit error instead of ICE when optimized MIR is missing

Closes #51388
2023-09-05 07:15:15 +02:00
bors 626a6ab93f Auto merge of #115531 - RalfJung:read_via_copy, r=scottmcm
read_via_copy: don't prematurely optimize away the read

Always do the read to ensure consistent UB error messages in const-eval/Miri.

r? `@scottmcm`
2023-09-05 03:45:17 +00:00
Zalathar 3141177995 Copy most of `tests/run-coverage` into `tests/coverage-map/status-quo`
The output of these tests is too complicated to comfortably verify by hand, but
we can still use them to observe changes to the underlying mappings produced by
codegen/LLVM.

If these tests fail due to non-coverage changes (e.g. in HIR-to-MIR lowering or
MIR optimizations), it should usually be OK to just `--bless` them, as long as
the `run-coverage` test suite still works.
2023-09-05 11:55:34 +10: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 9c609ae158 Auto merge of #115467 - compiler-errors:assoc-ty-object-safety, r=oli-obk
Do not require associated types with Self: Sized to uphold bounds when confirming object candidate

RPITITs and associated types that have `Self: Sized` bounds are opted out of the `dyn Trait` well-formedness check that happens during confirmation. This ensures that we can actually *use* `dyn Trait`s that have associated types that, e.g., have GATs and RPITITs and other naughty things as long as those are opted-out of object safety via a `Self: Sized` bound.

Fixes #115464

This seems like a natural part of https://github.com/rust-lang/rust/pull/112319#issuecomment-1592574451, and I don't think needs re-litigation.

r? `@oli-obk`
2023-09-05 01:09:48 +00: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
bors ec08a0337f Auto merge of #115541 - Mark-Simulacrum:mirror-rustc-perf-source, r=ehuss
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 17:30:38 +00: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 7093903ba7 read_via_copy: don't prematurely optimize away the read 2023-09-04 18:27:34 +02:00
ouz-a 56d10a883e provide more useful info for DefId Debug 2023-09-04 19:13:43 +03: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
Urgau efbe445ba7 Add help to allow lint for the implied by suggestion 2023-09-04 14:21:38 +02:00
mojave2 f404990eb0
improve `AttrTokenStream` 2023-09-04 20:07:28 +08:00
Urgau eba5b44729 Add OnceHelp lint level (same as OnceNote, except for help) 2023-09-04 13:54:20 +02:00
bors bf1e3f31f9 Auto merge of #115513 - Urgau:normalize-msg-after-translate, r=petrochenkov
Don't forget to normalize the translated message

This PR adds a missing call to `normalize_whitespace` after translating an label.

Fixes https://github.com/rust-lang/rust/issues/115498
2023-09-04 10:02:57 +00:00
bors ce798a52c3 Auto merge of #115493 - Ayush1325:raw-os-error, r=workingjubilee
Move RawOsError defination to sys

This was originally a part of https://github.com/rust-lang/rust/pull/105861, but I feel it should be its own PR since the raw os error is still unstable.
2023-09-04 08:04:00 +00:00
bors b14b0745ad Auto merge of #115391 - saethlin:depkind-discrim, r=nnethercote
Encode DepKind as u16

The derived Encodable/Decodable impls serialize/deserialize as a varint, which results in a lot of code size around the encoding/decoding of these types which isn't justified: The full range of values here is rather small but doesn't quite fit in to a `u8`. Growing _all_ serialized `DepKind` to 2 bytes costs us on average 1% size in the incr comp dep graph, which I plan to recoup in https://github.com/rust-lang/rust/pull/110050 by taking advantage of the unused bits in all the serialized `DepKind`.

r? `@nnethercote`
2023-09-04 04:27:00 +00:00
bors abfc6c4438 Auto merge of #115491 - Zoxc:refcell-tweak, r=Mark-Simulacrum
Outline panicking code for `RefCell::borrow` and `RefCell::borrow_mut`

This outlines panicking code for `RefCell::borrow` and `RefCell::borrow_mut` to reduce code size.
2023-09-03 23:03:03 +00:00
Ben Kimock 9867023f4f Encode DepKind as u16 2023-09-03 18:48:23 -04:00
bors 58e967a9cc Auto merge of #115518 - matthiaskrgr:rollup-vksprou, r=matthiaskrgr
Rollup of 5 pull requests

Successful merges:

 - #115279 (RangeFull: Remove parens around .. in documentation snippet)
 - #115318 (Reference uplifted clippy lints' rustc name in the release notes)
 - #115445 (remove some unused crate deps)
 - #115489 (Use std::io::Error::is_interrupted everywhere)
 - #115512 (Command::spawn: Fix STARTUPINFOW.cb being initialized with the address of size_of)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-09-03 21:15:12 +00:00
Michael Goulet 8c667febbd Don't ICE on associated type projection without feature gate 2023-09-03 19:43:58 +00:00
Matthias Krüger 487fe2e5ad
Rollup merge of #115512 - Fulgen301:startupinfow, r=ChrisDenton
Command::spawn: Fix STARTUPINFOW.cb being initialized with the address of size_of

Fixes #115511.
2023-09-03 21:38:43 +02:00