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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants