Skip to content

Conversation

dianqk
Copy link
Member

@dianqk dianqk commented Oct 14, 2025

for perf

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Oct 14, 2025
@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer
Copy link
Collaborator

The job x86_64-gnu-gcc failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
sccache: Listening on address 127.0.0.1:4226 ##[group]Configure the build configure: processing command line configure: configure: build.configure-args := ['--build=x86_64-unknown-linux-gnu', '--enable-sanitizers', '--enable-profiler', '--enable-compiler-docs', '--set', 'llvm.libzstd=true', '--set', 'rust.codegen-backends=[\\"llvm\\",\\"gcc\\"]', '--set', 'build.print-step-timings', '--enable-verbose-tests', '--set', 'build.metrics', '--enable-verbose-configure', '--enable-sccache', '--disable-manage-submodules', '--enable-locked-deps', '--enable-cargo-native-static', '--set', 'rust.codegen-units-std=1', '--set', 'dist.compression-profile=balanced', '--dist-compression-formats=xz', '--set', 'rust.lld=true', '--set', 'build.optimized-compiler-builtins', '--disable-dist-src', '--release-channel=nightly', '--enable-overflow-checks', '--enable-llvm-assertions', '--set', 'rust.verify-llvm-ir', '--set', 'rust.codegen-backends=llvm,cranelift', '--set', 'llvm.download-ci-llvm=if-unchanged', '--set', 'gcc.download-ci-gcc=true'] configure: build.build := x86_64-unknown-linux-gnu configure: build.sanitizers := True configure: build.profiler := True configure: build.compiler-docs := True configure: llvm.libzstd := True --- 45 bb0: { 46 StorageLive(_4); 47 StorageLive(_20); - StorageLive(_21); + - StorageLive(_21); + + nop; 49 _21 = copy (((*_1).0: std::fmt::FormattingOptions).0: u32); - _20 = BitAnd(move _21, const core::fmt::flags::SIGN_PLUS_FLAG); - StorageDead(_21); + - _20 = BitAnd(move _21, const core::fmt::flags::SIGN_PLUS_FLAG); + - StorageDead(_21); + + _20 = BitAnd(copy _21, const core::fmt::flags::SIGN_PLUS_FLAG); + + nop; 52 _4 = Ne(move _20, const 0_u32); 53 StorageDead(_20); 54 StorageLive(_5); 71 StorageLive(_6); 72 StorageLive(_22); 73 StorageLive(_23); - _23 = copy (((*_1).0: std::fmt::FormattingOptions).0: u32); - _22 = BitAnd(move _23, const core::fmt::flags::PRECISION_FLAG); + - _23 = copy (((*_1).0: std::fmt::FormattingOptions).0: u32); + - _22 = BitAnd(move _23, const core::fmt::flags::PRECISION_FLAG); + + _23 = copy _21; + + _22 = BitAnd(copy _21, const core::fmt::flags::PRECISION_FLAG); 76 StorageDead(_23); 77 switchInt(move _22) -> [0: bb10, otherwise: bb11]; 78 } thread '[mir-opt] tests/mir-opt/funky_arms.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21: Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/funky_arms.float_to_exponential_common.GVN.64bit.panic-unwind.diff stack backtrace: 5: __rustc::rust_begin_unwind at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panicking.rs:698:5 6: core::panicking::panic_fmt at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/core/src/panicking.rs:75:14 --- ---- [mir-opt] tests/mir-opt/gvn.rs stdout ---- 68 _8 = &raw const (*_1); 69 StorageLive(_9); 70 StorageLive(_10); - _10 = copy (*_8); + - _10 = copy (*_8); + + _10 = copy (*_1); 72 _9 = opaque::<u32>(move _10) -> [return: bb3, unwind continue]; 73 } 74 77 StorageDead(_9); 78 StorageLive(_11); 79 StorageLive(_12); - _12 = copy (*_8); + - _12 = copy (*_8); + + _12 = copy (*_1); 81 _11 = opaque::<u32>(move _12) -> [return: bb4, unwind continue]; 82 } 83 88 _13 = &raw mut (*_1); 89 StorageLive(_14); 90 StorageLive(_15); - _15 = copy (*_13); + - _15 = copy (*_13); + + _15 = copy (*_1); 92 _14 = opaque::<u32>(move _15) -> [return: bb5, unwind continue]; 93 } 94 97 StorageDead(_14); 98 StorageLive(_16); 99 StorageLive(_17); - _17 = copy (*_13); + - _17 = copy (*_13); + + _17 = copy (*_1); 101 _16 = opaque::<u32>(move _17) -> [return: bb6, unwind continue]; 102 } 103 108 _18 = &(*_1); 109 StorageLive(_19); 110 StorageLive(_20); - _20 = copy (*_18); + - _20 = copy (*_18); + + _20 = copy (*_1); 112 _19 = opaque::<u32>(move _20) -> [return: bb7, unwind continue]; 113 } 114 117 StorageDead(_19); 118 StorageLive(_21); 119 StorageLive(_22); - _22 = copy (*_18); + - _22 = copy (*_18); + + _22 = copy (*_1); 121 _21 = opaque::<u32>(move _22) -> [return: bb8, unwind continue]; 122 } 123 thread '[mir-opt] tests/mir-opt/gvn.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21: Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/gvn.dereferences.GVN.panic-unwind.diff stack backtrace: 5: __rustc::rust_begin_unwind at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panicking.rs:698:5 6: core::panicking::panic_fmt at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/core/src/panicking.rs:75:14 7: <compiletest::runtest::TestCx>::run_revision 8: compiletest::runtest::run note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. ---- [mir-opt] tests/mir-opt/gvn.rs stdout end ---- ---- [mir-opt] tests/mir-opt/gvn_overlapping.rs stdout ---- 10 bb0: { 11 _2 = &raw mut _1; 12 _4 = &(*_2); - _3 = copy (((*_4) as variant#1).0: u32); + - _3 = copy (((*_4) as variant#1).0: u32); + + _3 = copy (((*_2) as variant#1).0: u32); 14 (*_2) = Adt::Some(copy _3); 15 return; 16 } thread '[mir-opt] tests/mir-opt/gvn_overlapping.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21: Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/gvn_overlapping.overlapping.GVN.diff stack backtrace: 5: __rustc::rust_begin_unwind at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panicking.rs:698:5 6: core::panicking::panic_fmt at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/core/src/panicking.rs:75:14 7: <compiletest::runtest::TestCx>::run_revision 8: compiletest::runtest::run note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. ---- [mir-opt] tests/mir-opt/gvn_overlapping.rs stdout end ---- ---- [mir-opt] tests/mir-opt/pre-codegen/range_iter.rs stdout ---- 6 scope 1 (inlined iter::range::<impl Iterator for std::ops::Range<u32>>::next) { 7 scope 2 (inlined <std::ops::Range<u32> as iter::range::RangeIteratorImpl>::spec_next) { 8 let mut _4: bool; - let _5: u32; - let mut _6: u32; + let mut _5: u32; 11 scope 3 { 12 scope 5 (inlined <u32 as Step>::forward_unchecked) { 13 scope 6 (inlined #[track_caller] core::num::<impl u32>::unchecked_add) { 27 28 bb0: { 29 StorageLive(_4); - StorageLive(_2); 31 _2 = copy ((*_1).0: u32); 32 StorageLive(_3); 33 _3 = copy ((*_1).1: u32); - _4 = Lt(move _2, move _3); + _4 = Lt(copy _2, move _3); 35 StorageDead(_3); - StorageDead(_2); 37 switchInt(move _4) -> [0: bb1, otherwise: bb2]; 38 } 39 43 } 44 45 bb2: { - _5 = copy ((*_1).0: u32); - StorageLive(_6); - _6 = AddUnchecked(copy _5, const 1_u32); - ((*_1).0: u32) = move _6; - StorageDead(_6); - _0 = Option::<u32>::Some(copy _5); + StorageLive(_5); + _5 = AddUnchecked(copy _2, const 1_u32); + ((*_1).0: u32) = move _5; + StorageDead(_5); + _0 = Option::<u32>::Some(copy _2); 52 goto -> bb3; 53 } 54 thread '[mir-opt] tests/mir-opt/pre-codegen/range_iter.rs' panicked at src/tools/compiletest/src/runtest/mir_opt.rs:84:21: Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-unwind.mir stack backtrace: 5: __rustc::rust_begin_unwind at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panicking.rs:698:5 6: core::panicking::panic_fmt at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/core/src/panicking.rs:75:14 

For more information how to resolve CI failures of this job, visit this link.

@dianqk
Copy link
Member Author

dianqk commented Oct 14, 2025

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rust-bors

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Oct 14, 2025
GVN: Merge instances of *_x even if _x is a mutable borrow
@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Oct 14, 2025
@rust-bors
Copy link

rust-bors bot commented Oct 15, 2025

☀️ Try build successful (CI)
Build commit: dab6163 (dab6163344763807ca88d63f8d2f41e352c7fcdc, parent: 844264adda6f41ca6d0d61c4bcac0f263fc5072f)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (dab6163): comparison URL.

Overall result: ❌✅ regressions and improvements - please read the text below

Benchmarking this pull request means it may be perf-sensitive – we'll automatically label it not fit for rolling up. You can override this, but we strongly advise not to, due to possible changes in compiler perf.

Next Steps: If you can justify the regressions found in this try perf run, please do so in sufficient writing along with @rustbot label: +perf-regression-triaged. If not, please fix the regressions and do another perf run. If its results are neutral or positive, the label will be automatically removed.

@bors rollup=never
@rustbot label: -S-waiting-on-perf +perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
0.6% [0.3%, 0.9%] 4
Regressions ❌
(secondary)
1.1% [0.2%, 4.1%] 8
Improvements ✅
(primary)
-0.7% [-1.5%, -0.2%] 3
Improvements ✅
(secondary)
-0.8% [-2.8%, -0.1%] 17
All ❌✅ (primary) 0.1% [-1.5%, 0.9%] 7

Max RSS (memory usage)

Results (primary -2.4%, secondary -1.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
2.5% [2.5%, 2.5%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-3.2% [-8.5%, -0.6%] 6
Improvements ✅
(secondary)
-1.1% [-1.1%, -1.1%] 1
All ❌✅ (primary) -2.4% [-8.5%, 2.5%] 7

Cycles

Results (primary -3.3%, secondary 2.3%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
2.3% [2.3%, 2.3%] 1
Improvements ✅
(primary)
-3.3% [-3.3%, -3.3%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -3.3% [-3.3%, -3.3%] 1

Binary size

Results (primary -0.0%, secondary -0.3%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
0.2% [0.0%, 0.5%] 18
Regressions ❌
(secondary)
0.1% [0.0%, 0.3%] 3
Improvements ✅
(primary)
-0.2% [-0.9%, -0.0%] 24
Improvements ✅
(secondary)
-0.3% [-1.0%, -0.0%] 49
All ❌✅ (primary) -0.0% [-0.9%, 0.5%] 42

Bootstrap: 474.738s -> 478.467s (0.79%)
Artifact size: 388.14 MiB -> 388.16 MiB (0.00%)

@rustbot rustbot added perf-regression Performance regression. and removed S-waiting-on-perf Status: Waiting on a perf run to be completed. labels Oct 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

perf-regression Performance regression. S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

4 participants