- Notifications
You must be signed in to change notification settings - Fork14.1k
Rollup of 9 pull requests#140411
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Closed
Closed
Rollup of 9 pull requests#140411
Uh oh!
There was an error while loading.Please reload this page.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
Support for `f16` and `f128` is varied across targets, backends, andbackend versions. Eventually we would like to reach a point where allbackends support these approximately equally, but until then we have towork around some of these nuances of support being observable.Introduce the `cfg_target_has_reliable_f16_f128` internal feature, whichprovides the following new configuration gates:* `cfg(target_has_reliable_f16)`* `cfg(target_has_reliable_f16_math)`* `cfg(target_has_reliable_f128)`* `cfg(target_has_reliable_f128_math)``reliable_f16` and `reliable_f128` indicate that basic arithmetic forthe type works correctly. The `_math` versions indicate that anythingrelying on `libm` works correctly, since sometimes this hits a separateclass of codegen bugs.These options match configuration set by the build script at [1]. Thelogic for LLVM support is duplicated as-is from the same script. Thereare a few possible updates that will come as a follow up.The config introduced here is not planned to ever become stable, it isonly intended to replace the build scripts for `std` tests and`compiler-builtins` that don't have any way to configure based on thecodegen backend.MCP:rust-lang/compiler-team#866Closes:rust-lang/compiler-team#866[1]:https://github.com/rust-lang/rust/blob/555e1d0386f024a8359645c3217f4b3eae9be042/library/std/build.rs#L84-L186
New compiler configuration has been introduced that is designed toreplace the build script configuration `reliable_f16`, `reliable_f128`,`reliable_f16_math`, and `reliable_f128_math`. Do this replacement here,which allows us to clean up `std`'s build script.All tests are gated by `#[cfg(bootstrap)]` rather than doing a morecomplicated `cfg(bootstrap)` / `cfg(not(bootstrap))` split since thenext beta split is within two weeks.
The test run-make/amdgpu-kd has an issue where rust-lld will sometimes fail with error 0xc0000374 (STATUS_HEAP_CORRUPTION).
…-inline, r=ZuseZ4add autodiff inlinecloses:rust-lang#138920r? `@ZuseZ4`try-job: dist-aarch64-linux
…y, r=lcnrDo not compute type_of for impl item if impl where clauses are unsatisfiedConsider the following code:```rusttrait Foo { fn call(self) -> impl Send;}trait Nested {}impl<T> Foo for Twhere T: Nested,{ fn call(self) -> impl Sized { NotSatisfied.call() }}struct NotSatisfied;impl Foo for NotSatisfied { fn call(self) -> impl Sized { todo!() }}```In `impl Foo for NotSatisfied`, we need to prove that the RPITIT is well formed. This requires proving the item bound `<NotSatisfied as Foo>::RPITIT: Send`. Normalizing `<NotSatisfied as Foo>::RPITIT: Send` assembles two impl candidates, via the `NotSatisfied` impl and the blanket `T` impl. We end up computing the `type_of` for the blanket impl even if `NotSatisfied: Nested` where clause does not hold.This type_of query ends up needing to prove that its own `impl Sized` RPIT satisfies `Send`, which ends up needing to compute the hidden type of the RPIT, which is equal to the return type of `NotSatisfied.call()`. That ends up in a query cycle, since we subsequently try normalizing that return type via the blanket impl again!In the old solver, we don't end up computing the `type_of` an impl candidate if its where clauses don't hold, since this select call would fail before confirming the projection candidate:https://github.com/rust-lang/rust/blob/d7ea436a02d5de4033fcf7fd4eb8ed965d0f574c/compiler/rustc_trait_selection/src/traits/project.rs#L882This PR makes the new solver more consistent with the old solver by adding a call to `try_evaluate_added_goals` after regstering the impl predicates, which causes us to bail before computing the `type_of` for impls if the impl definitely doesn't apply.r? lcnrFixesrust-lang/trait-system-refactor-initiative#185…lcnrMove inline asm check to typeck, properly handle aliasesPull `InlineAsmCtxt` down to `rustc_hir_typeck`, and instead of using things like `Ty::is_copy`, use the `InferCtxt`-aware methods. Tofixrust-lang/trait-system-refactor-initiative#189, we also add a `try_structurally_resolve_*` call to `expr_ty`.r? lcnr
Implement the internal feature `cfg_target_has_reliable_f16_f128`Support for `f16` and `f128` is varied across targets, backends, and backend versions. Eventually we would like to reach a point where all backends support these approximately equally, but until then we have to work around some of these nuances of support being observable.Introduce the `cfg_target_has_reliable_f16_f128` internal feature, which provides the following new configuration gates:* `cfg(target_has_reliable_f16)`* `cfg(target_has_reliable_f16_math)`* `cfg(target_has_reliable_f128)`* `cfg(target_has_reliable_f128_math)``reliable_f16` and `reliable_f128` indicate that basic arithmetic for the type works correctly. The `_math` versions indicate that anything relying on `libm` works correctly, since sometimes this hits a separate class of codegen bugs.These options match configuration set by the build script at [1]. The logic for LLVM support is duplicated as-is from the same script. There are a few possible updates that will come as a follow up.The config introduced here is not planned to ever become stable, it is only intended to replace the build scripts for `std` tests and `compiler-builtins` that don't have any way to configure based on the codegen backend.MCP:rust-lang/compiler-team#866Closes:rust-lang/compiler-team#866[1]:https://github.com/rust-lang/rust/blob/555e1d0386f024a8359645c3217f4b3eae9be042/library/std/build.rs#L84-L186---The second commit makes use of this config to replace `cfg_{f16,f128}{,_math}` in `library/`. I omitted providing a `cfg(bootstrap)` configuration to keep things simpler since the next beta branch is in two weeks.try-job: aarch64-gnutry-job: i686-msvc-1try-job: test-varioustry-job: x86_64-gnutry-job: x86_64-msvc-ext2
…lcnrResolve instance for SymFn in global/naked asm`Instance::expect_resolve` ensures that we're actually going from trait item -> impl item.Fixesrust-lang#140373
Rename sub_ptr to offset_from_unsigned in docsThere are still a few mentions of `sub_ptr` in comments and doc comments, which were missed inrust-lang#137483.
…jieyouxuMake bootstrap git tests more self-containedBased onhttps://stackoverflow.com/a/67512433/1107768.Fixes:rust-lang#140387r? `@jieyouxu`
Workaround for windows-gnu rust-lld test failureThe test run-make/amdgpu-kd has an issue on windows-gnu where rust-lld will sometimes fail with error 0xc0000374 (`STATUS_HEAP_CORRUPTION`).This works around the issue by passing `--threads=1` to the linker as suggested [here](rust-lang#115985 (comment)). Note I don't know if this will help and it happens only sometimes in our CI so it's hard to test.
…r=compiler-errorsonly return nested goals for `Certainty::Yes`Ambiguous `NormalizesTo` goals can otherwise repeatedly add the same nested goals to the parent.r? `@compiler-errors`
MemberAuthor
ChrisDenton commentedApr 28, 2025
@bors r+ rollup=never p=5 |
Collaborator
bors commentedApr 28, 2025
Collaborator
bors commentedApr 28, 2025
bors added a commit to rust-lang-ci/rust that referenced this pull requestApr 28, 2025
…entonRollup of 9 pull requestsSuccessful merges: -rust-lang#139308 (add autodiff inline) -rust-lang#140276 (Do not compute type_of for impl item if impl where clauses are unsatisfied) -rust-lang#140302 (Move inline asm check to typeck, properly handle aliases) -rust-lang#140323 (Implement the internal feature `cfg_target_has_reliable_f16_f128`) -rust-lang#140374 (Resolve instance for SymFn in global/naked asm) -rust-lang#140391 (Rename sub_ptr to offset_from_unsigned in docs) -rust-lang#140394 (Make bootstrap git tests more self-contained) -rust-lang#140396 (Workaround for windows-gnu rust-lld test failure) -rust-lang#140402 (only return nested goals for `Certainty::Yes`)r? `@ghost``@rustbot` modify labels: rollup
Collaborator
rust-log-analyzer commentedApr 28, 2025
The job Click to see the possible cause of the failure (guessed by this bot) |
Collaborator
bors commentedApr 28, 2025
💔 Test failed -checks-actions |
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Labels
A-run-makeArea: port run-make Makefiles to rmake.rs F-autodiff`#![feature(autodiff)]` rollupA PR which is a rollup S-waiting-on-reviewStatus: Awaiting review from the assignee but also interested parties. T-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compilerRelevant to the compiler team, which will review and decide on the PR/issue. T-libsRelevant to the library team, which will review and decide on the PR/issue. WG-trait-system-refactorThe Rustc Trait System Refactor Initiative (-Znext-solver)
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Successful merges:
cfg_target_has_reliable_f16_f128#140323 (Implement the internal featurecfg_target_has_reliable_f16_f128)Certainty::Yes#140402 (only return nested goals forCertainty::Yes)r?@ghost
@rustbot modify labels: rollup
Create a similar rollup