Regression test for const promotion with Option<Ordering>#145651
Merged
bors merged 1 commit intorust-lang:masterfrom Oct 11, 2025
Merged
Regression test for const promotion with Option<Ordering>#145651bors merged 1 commit intorust-lang:masterfrom
bors merged 1 commit intorust-lang:masterfrom
Conversation
This comment has been minimized.
This comment has been minimized.
cjgillot
reviewed
Aug 21, 2025
Contributor
cjgillot
left a comment
There was a problem hiding this comment.
What we are testing here is not really the absence of promoted constants. What we want to test is that both versions produce the same optimized MIR.
tests/mir-opt/pre-codegen/const_promotion_option_ordering_eq.rs
Outdated
Show resolved
Hide resolved
Collaborator
|
Contributor
|
r=me once CI passes |
Contributor
|
@bors r+ rollup |
Collaborator
bors
added a commit
that referenced
this pull request
Oct 10, 2025
Rollup of 12 pull requests Successful merges: - #145651 (Regression test for const promotion with Option<Ordering>) - #145722 (implement Extend<{Group, Literal, Punct, Ident}> for TokenStream) - #146520 (Promote armv8r-none-eabihf target to Tier 2) - #146522 (Promote armv7a-none-eabihf to Tier 2) - #147289 (Mitigate `thread_local!` shadowing issues) - #147515 (Update rustc-perf submodule) - #147522 (compiletest: Use the same directive lines for EarlyProps and ignore/only/needs) - #147525 (Replace locals in debuginfo records during ref_prop and dest_prop) - #147544 (Remove StatementKind::Deinit.) - #147551 (remove `#[rustc_inherit_overflow_checks]` from `is_multiple_of`) - #147553 (Move `wasm32-wasip3` to the tier 3 table) - #147562 (Stabilize `NonZero<u*>::div_ceil`) r? `@ghost` `@rustbot` modify labels: rollup
bors
added a commit
that referenced
this pull request
Oct 11, 2025
Rollup of 12 pull requests Successful merges: - #145651 (Regression test for const promotion with Option<Ordering>) - #145722 (implement Extend<{Group, Literal, Punct, Ident}> for TokenStream) - #146520 (Promote armv8r-none-eabihf target to Tier 2) - #146522 (Promote armv7a-none-eabihf to Tier 2) - #147289 (Mitigate `thread_local!` shadowing issues) - #147515 (Update rustc-perf submodule) - #147522 (compiletest: Use the same directive lines for EarlyProps and ignore/only/needs) - #147525 (Replace locals in debuginfo records during ref_prop and dest_prop) - #147544 (Remove StatementKind::Deinit.) - #147551 (remove `#[rustc_inherit_overflow_checks]` from `is_multiple_of`) - #147553 (Move `wasm32-wasip3` to the tier 3 table) - #147562 (Stabilize `NonZero<u*>::div_ceil`) r? `@ghost` `@rustbot` modify labels: rollup
rust-timer
added a commit
that referenced
this pull request
Oct 11, 2025
Rollup merge of #145651 - borsakv:139093, r=cjgillot Regression test for const promotion with Option<Ordering> https://rust.godbolt.org/z/EjxqE8WcT Fixes #139093 Add a regression test to ensure that comparing `Option<Ordering>` to `Some(Ordering::Equal)` does not trigger unnecessary const promotion in MIR. Previously, inlined constants like `Some(Ordering::Equal)` would get promoted, leading to more complex MIR and redundant LLVM IR checks. This test verifies that both the direct form and the `let`-binding form now generate equivalent, simplified MIR. r? cjgillot
rust-cloud-vms bot
pushed a commit
to makai410/rustc_public
that referenced
this pull request
Oct 12, 2025
Rollup of 12 pull requests Successful merges: - rust-lang/rust#145651 (Regression test for const promotion with Option<Ordering>) - rust-lang/rust#145722 (implement Extend<{Group, Literal, Punct, Ident}> for TokenStream) - rust-lang/rust#146520 (Promote armv8r-none-eabihf target to Tier 2) - rust-lang/rust#146522 (Promote armv7a-none-eabihf to Tier 2) - rust-lang/rust#147289 (Mitigate `thread_local!` shadowing issues) - rust-lang/rust#147515 (Update rustc-perf submodule) - rust-lang/rust#147522 (compiletest: Use the same directive lines for EarlyProps and ignore/only/needs) - rust-lang/rust#147525 (Replace locals in debuginfo records during ref_prop and dest_prop) - rust-lang/rust#147544 (Remove StatementKind::Deinit.) - rust-lang/rust#147551 (remove `#[rustc_inherit_overflow_checks]` from `is_multiple_of`) - rust-lang/rust#147553 (Move `wasm32-wasip3` to the tier 3 table) - rust-lang/rust#147562 (Stabilize `NonZero<u*>::div_ceil`) r? `@ghost` `@rustbot` modify labels: rollup
flip1995
pushed a commit
to flip1995/rust-clippy
that referenced
this pull request
Oct 18, 2025
Rollup of 12 pull requests Successful merges: - rust-lang/rust#145651 (Regression test for const promotion with Option<Ordering>) - rust-lang/rust#145722 (implement Extend<{Group, Literal, Punct, Ident}> for TokenStream) - rust-lang/rust#146520 (Promote armv8r-none-eabihf target to Tier 2) - rust-lang/rust#146522 (Promote armv7a-none-eabihf to Tier 2) - rust-lang/rust#147289 (Mitigate `thread_local!` shadowing issues) - rust-lang/rust#147515 (Update rustc-perf submodule) - rust-lang/rust#147522 (compiletest: Use the same directive lines for EarlyProps and ignore/only/needs) - rust-lang/rust#147525 (Replace locals in debuginfo records during ref_prop and dest_prop) - rust-lang/rust#147544 (Remove StatementKind::Deinit.) - rust-lang/rust#147551 (remove `#[rustc_inherit_overflow_checks]` from `is_multiple_of`) - rust-lang/rust#147553 (Move `wasm32-wasip3` to the tier 3 table) - rust-lang/rust#147562 (Stabilize `NonZero<u*>::div_ceil`) r? `@ghost` `@rustbot` modify labels: rollup
makai410
pushed a commit
to makai410/rust
that referenced
this pull request
Nov 8, 2025
Regression test for const promotion with Option<Ordering> https://rust.godbolt.org/z/EjxqE8WcT Fixes rust-lang#139093 Add a regression test to ensure that comparing `Option<Ordering>` to `Some(Ordering::Equal)` does not trigger unnecessary const promotion in MIR. Previously, inlined constants like `Some(Ordering::Equal)` would get promoted, leading to more complex MIR and redundant LLVM IR checks. This test verifies that both the direct form and the `let`-binding form now generate equivalent, simplified MIR. r? cjgillot
makai410
pushed a commit
to makai410/rust
that referenced
this pull request
Nov 8, 2025
Rollup of 12 pull requests Successful merges: - rust-lang#145651 (Regression test for const promotion with Option<Ordering>) - rust-lang#145722 (implement Extend<{Group, Literal, Punct, Ident}> for TokenStream) - rust-lang#146520 (Promote armv8r-none-eabihf target to Tier 2) - rust-lang#146522 (Promote armv7a-none-eabihf to Tier 2) - rust-lang#147289 (Mitigate `thread_local!` shadowing issues) - rust-lang#147515 (Update rustc-perf submodule) - rust-lang#147522 (compiletest: Use the same directive lines for EarlyProps and ignore/only/needs) - rust-lang#147525 (Replace locals in debuginfo records during ref_prop and dest_prop) - rust-lang#147544 (Remove StatementKind::Deinit.) - rust-lang#147551 (remove `#[rustc_inherit_overflow_checks]` from `is_multiple_of`) - rust-lang#147553 (Move `wasm32-wasip3` to the tier 3 table) - rust-lang#147562 (Stabilize `NonZero<u*>::div_ceil`) r? `@ghost` `@rustbot` modify labels: rollup
makai410
pushed a commit
to makai410/rust
that referenced
this pull request
Nov 10, 2025
Regression test for const promotion with Option<Ordering> https://rust.godbolt.org/z/EjxqE8WcT Fixes rust-lang#139093 Add a regression test to ensure that comparing `Option<Ordering>` to `Some(Ordering::Equal)` does not trigger unnecessary const promotion in MIR. Previously, inlined constants like `Some(Ordering::Equal)` would get promoted, leading to more complex MIR and redundant LLVM IR checks. This test verifies that both the direct form and the `let`-binding form now generate equivalent, simplified MIR. r? cjgillot
makai410
pushed a commit
to makai410/rust
that referenced
this pull request
Nov 10, 2025
Rollup of 12 pull requests Successful merges: - rust-lang#145651 (Regression test for const promotion with Option<Ordering>) - rust-lang#145722 (implement Extend<{Group, Literal, Punct, Ident}> for TokenStream) - rust-lang#146520 (Promote armv8r-none-eabihf target to Tier 2) - rust-lang#146522 (Promote armv7a-none-eabihf to Tier 2) - rust-lang#147289 (Mitigate `thread_local!` shadowing issues) - rust-lang#147515 (Update rustc-perf submodule) - rust-lang#147522 (compiletest: Use the same directive lines for EarlyProps and ignore/only/needs) - rust-lang#147525 (Replace locals in debuginfo records during ref_prop and dest_prop) - rust-lang#147544 (Remove StatementKind::Deinit.) - rust-lang#147551 (remove `#[rustc_inherit_overflow_checks]` from `is_multiple_of`) - rust-lang#147553 (Move `wasm32-wasip3` to the tier 3 table) - rust-lang#147562 (Stabilize `NonZero<u*>::div_ceil`) r? `@ghost` `@rustbot` modify labels: rollup
makai410
pushed a commit
to makai410/rustc_public
that referenced
this pull request
Nov 16, 2025
Rollup of 12 pull requests Successful merges: - rust-lang/rust#145651 (Regression test for const promotion with Option<Ordering>) - rust-lang/rust#145722 (implement Extend<{Group, Literal, Punct, Ident}> for TokenStream) - rust-lang/rust#146520 (Promote armv8r-none-eabihf target to Tier 2) - rust-lang/rust#146522 (Promote armv7a-none-eabihf to Tier 2) - rust-lang/rust#147289 (Mitigate `thread_local!` shadowing issues) - rust-lang/rust#147515 (Update rustc-perf submodule) - rust-lang/rust#147522 (compiletest: Use the same directive lines for EarlyProps and ignore/only/needs) - rust-lang/rust#147525 (Replace locals in debuginfo records during ref_prop and dest_prop) - rust-lang/rust#147544 (Remove StatementKind::Deinit.) - rust-lang/rust#147551 (remove `#[rustc_inherit_overflow_checks]` from `is_multiple_of`) - rust-lang/rust#147553 (Move `wasm32-wasip3` to the tier 3 table) - rust-lang/rust#147562 (Stabilize `NonZero<u*>::div_ceil`) r? `@ghost` `@rustbot` modify labels: rollup
Kobzol
pushed a commit
to Kobzol/rustc_codegen_cranelift
that referenced
this pull request
Dec 29, 2025
Rollup of 12 pull requests Successful merges: - rust-lang/rust#145651 (Regression test for const promotion with Option<Ordering>) - rust-lang/rust#145722 (implement Extend<{Group, Literal, Punct, Ident}> for TokenStream) - rust-lang/rust#146520 (Promote armv8r-none-eabihf target to Tier 2) - rust-lang/rust#146522 (Promote armv7a-none-eabihf to Tier 2) - rust-lang/rust#147289 (Mitigate `thread_local!` shadowing issues) - rust-lang/rust#147515 (Update rustc-perf submodule) - rust-lang/rust#147522 (compiletest: Use the same directive lines for EarlyProps and ignore/only/needs) - rust-lang/rust#147525 (Replace locals in debuginfo records during ref_prop and dest_prop) - rust-lang/rust#147544 (Remove StatementKind::Deinit.) - rust-lang/rust#147551 (remove `#[rustc_inherit_overflow_checks]` from `is_multiple_of`) - rust-lang/rust#147553 (Move `wasm32-wasip3` to the tier 3 table) - rust-lang/rust#147562 (Stabilize `NonZero<u*>::div_ceil`) r? `@ghost` `@rustbot` modify labels: rollup
christian-schilling
pushed a commit
to christian-schilling/rustc_codegen_cranelift
that referenced
this pull request
Jan 27, 2026
Rollup of 12 pull requests Successful merges: - rust-lang/rust#145651 (Regression test for const promotion with Option<Ordering>) - rust-lang/rust#145722 (implement Extend<{Group, Literal, Punct, Ident}> for TokenStream) - rust-lang/rust#146520 (Promote armv8r-none-eabihf target to Tier 2) - rust-lang/rust#146522 (Promote armv7a-none-eabihf to Tier 2) - rust-lang/rust#147289 (Mitigate `thread_local!` shadowing issues) - rust-lang/rust#147515 (Update rustc-perf submodule) - rust-lang/rust#147522 (compiletest: Use the same directive lines for EarlyProps and ignore/only/needs) - rust-lang/rust#147525 (Replace locals in debuginfo records during ref_prop and dest_prop) - rust-lang/rust#147544 (Remove StatementKind::Deinit.) - rust-lang/rust#147551 (remove `#[rustc_inherit_overflow_checks]` from `is_multiple_of`) - rust-lang/rust#147553 (Move `wasm32-wasip3` to the tier 3 table) - rust-lang/rust#147562 (Stabilize `NonZero<u*>::div_ceil`) r? `@ghost` `@rustbot` modify labels: rollup
christian-schilling
pushed a commit
to christian-schilling/rustc_codegen_cranelift
that referenced
this pull request
Jan 27, 2026
Rollup of 12 pull requests Successful merges: - rust-lang/rust#145651 (Regression test for const promotion with Option<Ordering>) - rust-lang/rust#145722 (implement Extend<{Group, Literal, Punct, Ident}> for TokenStream) - rust-lang/rust#146520 (Promote armv8r-none-eabihf target to Tier 2) - rust-lang/rust#146522 (Promote armv7a-none-eabihf to Tier 2) - rust-lang/rust#147289 (Mitigate `thread_local!` shadowing issues) - rust-lang/rust#147515 (Update rustc-perf submodule) - rust-lang/rust#147522 (compiletest: Use the same directive lines for EarlyProps and ignore/only/needs) - rust-lang/rust#147525 (Replace locals in debuginfo records during ref_prop and dest_prop) - rust-lang/rust#147544 (Remove StatementKind::Deinit.) - rust-lang/rust#147551 (remove `#[rustc_inherit_overflow_checks]` from `is_multiple_of`) - rust-lang/rust#147553 (Move `wasm32-wasip3` to the tier 3 table) - rust-lang/rust#147562 (Stabilize `NonZero<u*>::div_ceil`) r? `@ghost` `@rustbot` modify labels: rollup
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
https://rust.godbolt.org/z/EjxqE8WcT
Fixes #139093
Add a regression test to ensure that comparing
Option<Ordering>toSome(Ordering::Equal)does not trigger unnecessary const promotionin MIR.
Previously, inlined constants like
Some(Ordering::Equal)would getpromoted, leading to more complex MIR and redundant LLVM IR checks.
This test verifies that both the direct form and the
let-binding formnow generate equivalent, simplified MIR.
r? cjgillot