Commit Graph

234050 Commits

Author SHA1 Message Date
bors
367db835dc Auto merge of #115785 - fmease:fix-pat-regression, r=wesleywiser
Only suggest turbofish in patterns if we may recover

Fixes [after backport] #115780.

CC #103534.
2023-09-13 00:05:33 +00:00
bors
d9c8274fb7 Auto merge of #115800 - RalfJung:miri, r=RalfJung
update Miri

r? `@ghost`
2023-09-12 21:30:25 +00:00
Camille GILLOT
d0cba3df97 Do not fetch type to check generator. 2023-09-12 20:17:55 +00:00
Camille GILLOT
108decec53 Do not clone body for ConstProp. 2023-09-12 20:17:55 +00:00
Camille GILLOT
32fe00ae85 Reuse CollectAndPatch for normal ConstProp. 2023-09-12 20:17:55 +00:00
Camille GILLOT
8a3a0dd64e Store a ConstantKind in CollectAndPatch. 2023-09-12 20:17:55 +00:00
Camille GILLOT
054ed8e7eb Introduce Machine::POST_MONO_CHECKS. 2023-09-12 20:17:52 +00:00
bors
960a5edf67 Auto merge of #115128 - davidtwco:re-enable-debuginfo-test, r=wesleywiser
tests: re-enable pretty-std-collections on macOS

Fixes #78665.

I made some small modifications to this test so that it would pass for me locally (though I was only able to test using lldb without built-in Rust support, but that seems to be the mode in which it would fail). I ran it a few hundred times with stage one and stage two to see if I could re-produce the spurious failures that were being reported in #78665 and couldn't. From the discussion in #78665, it seemed like this was related to Xcode versions and could be reproduced locally fairly easily. It's been a couple years since this was disabled so a lot has changed. If this starts failing spuriously again then we can disable it and I can look into that.

r? `@wesleywiser` (discussed in wg-debugging's triage meeting)
2023-09-12 19:39:27 +00:00
bors
8cd31eadba Auto merge of #3055 - eduardosm:x86-sse2-intrinsics, r=RalfJung
Implement some `llvm.x86.sse2.*` intrinsics and add tests

Continuation of https://github.com/rust-lang/miri/pull/2989 with SSE2 intrinsics.

Thankfully, a significant amount of SSE2 functions use `simd_*` intrinsics, which are already implemented in Miri.
2023-09-12 18:55:17 +00:00
Ralf Jung
60091fe924 add helper method for finding the one non-1-ZST field 2023-09-12 20:52:05 +02:00
Santiago Pastorino
3678dbc382
Add explicit_predicates_of to SMIR 2023-09-12 15:12:02 -03:00
Georg Semmler
5b8a7a0917
#[diagnostic::on_unimplemented] without filters
This commit adds support for a `#[diagnostic::on_unimplemented]`
attribute with the following options:

* `message` to customize the primary error message
* `note` to add a customized note message to an error message
* `label` to customize the label part of the error message

Co-authored-by: León Orell Valerian Liehr <me@fmease.dev>
Co-authored-by: Michael Goulet <michael@errs.io>
2023-09-12 20:03:18 +02:00
Eduardo Sánchez Muñoz
ab927c87cd Implement some llvm.x86.sse2.* intrinsics and add tests
Implements LLVM intrisics needed to run most SSE2 functions from `core::arch::x86{,_64}`.

Also adds miri tests for those functions (mostly copied from core_arch tests).
2023-09-12 19:44:59 +02:00
Eduardo Sánchez Muñoz
9df62ad5e1 Ignore all archs except x86 and x86_64 in SSE tests 2023-09-12 19:44:59 +02:00
Jakub Beránek
11f9283da9
Add a Local environment to opt-dist
This makes it easier to build a PGO/BOLT optimized `rustc` locally, outside of CI.
2023-09-12 19:33:41 +02:00
Jakub Beránek
a2ed508f54
Fix reset_directory function
Before it was not deleting non-empty directories.
2023-09-12 19:33:41 +02:00
Jakub Beránek
f17047bc90
Refactor Environment 2023-09-12 19:33:41 +02:00
Eduardo Sánchez Muñoz
8a5f7f25af Fix a few typos in shims/x86/sse.rs comments 2023-09-12 19:29:07 +02:00
Philipp Krones
780cbf34a0
Update Cargo.lock (ui_test update) 2023-09-12 18:44:34 +02:00
Philipp Krones
9ff2e4e5d1
Merge commit '98363cbf6a7c3f8b571a7d92a3c645bb4376e4a6' into clippyup 2023-09-12 18:44:06 +02:00
Jakub Beránek
95500f4941
Make executable extension platform, rather than environment dependent 2023-09-12 18:07:31 +02:00
Jakub Beránek
074fb2c6b7
Store target triple in environment 2023-09-12 18:02:45 +02:00
bjorn3
026faca4ca Fix two typos 2023-09-12 14:42:53 +00:00
León Orell Valerian Liehr
3ed77e98fa
Only suggest turbofish in patterns if we may recover 2023-09-12 16:38:59 +02:00
Benoît du Garreau
814f4f6f52 Improve PadAdapter::write_char 2023-09-12 15:57:36 +02:00
bors
e5fedceabf Auto merge of #115215 - ouz-a:mir_issue, r=lcnr
Remove assert that checks type equality

https://github.com/rust-lang/rust/pull/112307 although this prevented `unsound` issues it also seems to introduce regressions https://github.com/rust-lang/rust/issues/114858 is example of this regression. I locally tested this https://github.com/rust-lang/rust/issues/114858#issuecomment-1686502262 issue and failing assert is [this](https://www.diffchecker.com/cjb7jSQm/).

This is also related to https://github.com/rust-lang/rust/pull/115025
2023-09-12 13:27:29 +00:00
Ralf Jung
fd91dfb494 cleanup leftovers of const_err lint 2023-09-12 13:41:42 +02:00
bors
5f6ee65f59 Auto merge of #115728 - chenyukang:yukang-fix-diag-generic-parameters, r=cjgillot
Cleanup unused labels in messages.ftl

These labels were not used, maybe because we removed the diagnostics but forgot them.
2023-09-12 11:29:22 +00:00
bors
cc7a9d6972 Auto merge of #115705 - cjgillot:const-prop-aggregate, r=oli-obk
Read from non-scalar constants and statics in dataflow const-prop

DataflowConstProp is designed to handle scalar values. When MIR features an assignment from a non-scalar constant, we need to manually decompose it into the custom state space.

This PR tweaks interpreter callbacks to allow reusing `eval_mir_constant` without having a stack frame to get a span from.

r? `@oli-obk`
cc `@jachris`
2023-09-12 09:02:27 +00:00
bors
deb708af12 Auto merge of #115678 - RalfJung:abi-compat-test, r=petrochenkov
test ABI compatibility for some unsized types as well

and test for what `DispatchFromDyn` needs.

Also I ran this on a whole bunch of targets via Miri and added enough `cfg` to make it all work, as documentation for what does and doesn't currently work. (Most of those targets do not have their tests run on CI anyway.)

Here's the shell rune I used for that:
```
for TARGET in x86_64-unknown-linux-gnu x86_64-pc-windows-gnu aarch64-unknown-linux-gnu s390x-unknown-linux-gnu mips64-unknown-linux-gnuabi64 sparc64-unknown-linux-gnu  powerpc64-unknown-linux-gnu powerpc64le-unknown-linux-gnu riscv64gc-unknown-linux-gnu loongarch64-unknown-linux-gnu wasm32-unknown-unknown; do
   BOOTSTRAP_SKIP_TARGET_SANITY=1 ./x.py run miri --stage 0 --args tests/ui/abi/compatibility.rs --target $TARGET;
done
```
2023-09-12 07:11:48 +00:00
John Kåre Alsaker
f8ad88be81 Use UnhashMap for the index 2023-09-12 08:59:37 +02:00
John Kåre Alsaker
734e5a1fbd Encode the number of dep kinds encountered in the dep graph 2023-09-12 08:51:39 +02:00
bors
259b4f0b1c Auto merge of #3060 - RalfJung:abi, r=RalfJung
extra ABI tests, in particular for DispatchFromDyn
2023-09-12 06:51:36 +00:00
Ralf Jung
f8809ab911 extra ABI tests, in particular for DispatchFromDyn 2023-09-12 08:50:31 +02:00
John Kåre Alsaker
8c5bc990cc Store a index per dep node kind 2023-09-12 08:46:17 +02:00
bors
ea488f7864 Auto merge of #3059 - rust-lang:rustup-2023-09-12, r=RalfJung
Automatic sync from rustc
2023-09-12 05:38:25 +00:00
The Miri Conjob Bot
1916a4a524 fmt 2023-09-12 05:33:59 +00:00
The Miri Conjob Bot
5e992f334c Merge from rustc 2023-09-12 05:31:58 +00:00
Ralf Jung
6f2c051aba add some DispatchFromDyn ABI compatibility tests 2023-09-12 07:27:17 +02:00
Ralf Jung
4f606eb423 add enough cfg to make the test pass on problematic targets 2023-09-12 07:27:15 +02:00
The Miri Conjob Bot
44738528ab Preparing for merge from rustc 2023-09-12 05:25:26 +00:00
Ralf Jung
721dfc5994 also test ABI-compatibility for some unsized types 2023-09-12 07:23:53 +02:00
Ralf Jung
10951f3500 make sure the types in the ABI compat test actually type-check 2023-09-12 07:23:52 +02:00
bors
6c03617142 Auto merge of #115769 - matthiaskrgr:rollup-bo82nn9, r=matthiaskrgr
Rollup of 3 pull requests

Successful merges:

 - #115687 (Add `i686-pc-windows-gnullvm` triple)
 - #115765 (Add source type for invalid bool casts)
 - #115768 (Remove spastorino as "on vacation")

r? `@ghost`
`@rustbot` modify labels: rollup
2023-09-12 05:23:16 +00:00
Matthias Krüger
10da075507
Rollup merge of #115768 - spastorino:remove-spastorino-vacations, r=spastorino
Remove spastorino as "on vacation"
2023-09-12 06:34:46 +02:00
Matthias Krüger
32cf2c4b68
Rollup merge of #115765 - asquared31415:cast_diag, r=WaffleLapkin
Add source type for invalid bool casts

Also adds tests for casting various types to `bool` that were otherwise untested.

r? `@WaffleLapkin`
2023-09-12 06:34:46 +02:00
Matthias Krüger
8e157ecd65
Rollup merge of #115687 - mati865:i686-pc-windows-gnullvm-triple, r=wesleywiser
Add `i686-pc-windows-gnullvm` triple

With various fixes that are already present in the code, a fully working i686 target can join other targets in `*-windows-gnullvm` family. Again this will be mostly useful for MSYS2 right now but I plan to open MCP for providing at least prebuilt std for `windows-gnullvm` as the next step which will expand usability of these targets.

Tier 3 policy:

> A tier 3 target must have a designated developer or developers (the "target maintainers") on record to be CCed when issues arise regarding the target. (The mechanism to track and CC such developers may evolve over time.)

I pledge to do my best maintaining it, MSYS2 is one of interested consumers. Previously added `gnullvm` triples proved there is not much maintenance required.

 > Targets must use naming consistent with any existing targets; for instance, a target for the same CPU or OS as an existing Rust target should use the same name for that CPU or OS. Targets should normally use the same names and naming conventions as used elsewhere in the broader ecosystem beyond Rust (such as in other toolchains), unless they have a very good reason to diverge. Changing the name of a target can be highly disruptive, especially once the target reaches a higher tier, so getting the name right is important even for a tier 3 target.

This triple name is consistent with other targets and was discussed at [`t-compiler/LLVM+mingw-w64 Windows targets`](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/LLVM.2Bmingw-w64.20Windows.20targets)

> Target names should not introduce undue confusion or ambiguity unless absolutely necessary to maintain ecosystem compatibility. For example, if the name of the target makes people extremely likely to form incorrect beliefs about what it targets, the name should be changed or augmented to disambiguate it.

I think the explanation in platform support doc is enough to make this aspect clear.

> Tier 3 targets may have unusual requirements to build or use, but must not create legal issues or impose onerous legal terms for the Rust project or for Rust developers or users.

It's using open source tools only.

> The target must not introduce license incompatibilities.

It's even more liberal than already existing `*-pc-windows-gnu`.

> Anything added to the Rust repository must be under the standard Rust license (MIT OR Apache-2.0).

Understood.

> The target must not cause the Rust tools or libraries built for any other host (even when supporting cross-compilation to the target) to depend on any new dependency less permissive than the Rust licensing policy. This applies whether the dependency is a Rust crate that would require adding new license exceptions (as specified by the tidy tool in the rust-lang/rust repository), or whether the dependency is a native library or binary. In other words, the introduction of the target must not cause a user installing or running a version of Rust or the Rust tools to be subject to any new license requirements.

There are no new dependencies/features required.

> Compiling, linking, and emitting functional binaries, libraries, or other code for the target (whether hosted on the target itself or cross-compiling from another target) must not depend on proprietary (non-FOSS) libraries. Host tools built for the target itself may depend on the ordinary runtime libraries supplied by the platform and commonly used by other applications built for the target, but those libraries must not be required for code generation for the target; cross-compilation to the target must not require such libraries at all. For instance, rustc built for the target may depend on a common proprietary C runtime library or console output library, but must not depend on a proprietary code generation library or code optimization library. Rust's license permits such combinations, but the Rust project has no interest in maintaining such combinations within the scope of Rust itself, even at tier 3.

As previously said it's using open source tools only.

> "onerous" here is an intentionally subjective term. At a minimum, "onerous" legal/licensing terms include but are not limited to: non-disclosure requirements, non-compete requirements, contributor license agreements (CLAs) or equivalent, "non-commercial"/"research-only"/etc terms, requirements conditional on the employer or employment of any particular Rust developers, revocable terms, any requirements that create liability for the Rust project or its developers or users, or any requirements that adversely affect the livelihood or prospects of the Rust project or its developers or users.

There are no such terms present.

> Neither this policy nor any decisions made regarding targets shall create any binding agreement or estoppel by any party. If any member of an approving Rust team serves as one of the maintainers of a target, or has any legal or employment requirement (explicit or implicit) that might affect their decisions regarding a target, they must recuse themselves from any approval decisions regarding the target's tier status, though they may otherwise participate in discussions.

I'm not the reviewer here.

> This requirement does not prevent part or all of this policy from being cited in an explicit contract or work agreement (e.g. to implement or maintain support for a target). This requirement exists to ensure that a developer or team responsible for reviewing and approving a target does not face any legal threats or obligations that would prevent them from freely exercising their judgment in such approval, even if such judgment involves subjective matters or goes beyond the letter of these requirements.

Again I'm not the reviewer here.

> Tier 3 targets should attempt to implement as much of the standard libraries as possible and appropriate (core for most targets, alloc for targets that can support dynamic memory allocation, std for targets with an operating system or equivalent layer of system-provided functionality), but may leave some code unimplemented (either unavailable or stubbed out as appropriate), whether because the target makes it impossible to implement or challenging to implement. The authors of pull requests are not obligated to avoid calling any portions of the standard library on the basis of a tier 3 target not implementing those portions.

It seems to work, at least for cross compilation.

> The target must provide documentation for the Rust community explaining how to build for the target, using cross-compilation if possible. If the target supports running binaries, or running tests (even if they do not pass), the documentation must explain how to run such binaries or tests for the target, using emulation if possible or dedicated hardware if necessary.

Building is described in platform support doc, running tests doesn't work right now (without hacks) because Rust's build system doesn't seem to support testing targets built from `.json`.
Docs will be updated once this lands in beta allowing master branch to build and run tests without `.json` files.

> Tier 3 targets must not impose burden on the authors of pull requests, or other developers in the community, to maintain the target. In particular, do not post comments (automated or manual) on a PR that derail or suggest a block on the PR based on a tier 3 target. Do not send automated messages or notifications (via any medium, including via `@)` to a PR author or others involved with a PR regarding a tier 3 target, unless they have opted into such messages.

Understood.

> Backlinks such as those generated by the issue/PR tracker when linking to an issue or PR are not considered a violation of this policy, within reason. However, such messages (even on a separate repository) must not generate notifications to anyone involved with a PR who has not requested such notifications.

Understood.

 > Patches adding or updating tier 3 targets must not break any existing tier 2 or tier 1 target, and must not knowingly break another tier 3 target without approval of either the compiler team or the maintainers of the other tier 3 target.

I believe I didn't break any other target.

> In particular, this may come up when working on closely related targets, such as variations of the same architecture with different features. Avoid introducing unconditional uses of features that another variation of the target may not have; use conditional compilation or runtime detection, as appropriate, to let each target run code supported by that target.

I think there are no such problems in this PR.
2023-09-12 06:34:45 +02:00
bors
366dab13f7 Auto merge of #115699 - RalfJung:interpret-abi-compat, r=oli-obk
interpret: change ABI-compat test to be type-based

This makes the test consistent across targets. Otherwise the chances are very high that ABI mismatches get accepted on x86_64 but still fail on many other targets with more complicated ABIs.

This implements (most of) the rules described in https://github.com/rust-lang/rust/pull/115476.
2023-09-12 03:34:55 +00:00
bors
36b8e4aa75 Auto merge of #115689 - Alexendoo:clippy-doc-comments, r=notriddle,Manishearth,flip1995
Reuse rustdoc's doc comment handling in Clippy

Moves `source_span_for_markdown_range` and `span_of_attrs` (renamed to `span_of_fragments`) to `rustc_resolve::rustdoc` so it can be used in Clippy

Fixes https://github.com/rust-lang/rust-clippy/issues/10277
Fixes https://github.com/rust-lang/rust-clippy/issues/5593
Fixes https://github.com/rust-lang/rust-clippy/issues/10263
Fixes https://github.com/rust-lang/rust-clippy/issues/2581
2023-09-12 01:45:24 +00:00
bors
725afd287a Auto merge of #115671 - Zalathar:mapgen, r=wesleywiser
coverage: Clean up encoding of per-function coverage mapping payloads

This PR contains several small improvements to the code in `rustc_codegen_llvm::coverageinfo::mapgen` that prepares a function's coverage mappings for FFI, and passes them over to LLVM to be encoded into a vector of bytes.

These changes are in preparation for some future changes to the coverage implementation, but they should all stand on their own as worthwhile.

There shouldn't be any changes to the resulting coverage mappings, as verified by the existing `tests/coverage-map` and `tests/run-coverage` suites.

The changes are mostly independent of each other, though they are indirectly affected by the indentation changes made when introducing `GlobalFileTable`.
2023-09-12 00:03:09 +00:00