Skip to content

Conversation

cjgillot
Copy link
Contributor

r? @ghost 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 12, 2025
@rust-log-analyzer

This comment was marked as outdated.

@rust-log-analyzer

This comment has been minimized.

@cjgillot
Copy link
Contributor Author

@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 12, 2025
Perform DestinationPropagation on places.
@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Oct 12, 2025
@rust-bors
Copy link

rust-bors bot commented Oct 13, 2025

☀️ Try build successful (CI)
Build commit: beffb46 (beffb46b22c244142de90ea73fcb24c3ec3e03a6, parent: 2300c2aef7dbc2a7bbbeaa9894d07d459abd9bc6)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (beffb46): 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.9% [0.1%, 5.5%] 166
Regressions ❌
(secondary)
0.8% [0.1%, 3.7%] 158
Improvements ✅
(primary)
-0.9% [-2.0%, -0.1%] 12
Improvements ✅
(secondary)
-0.8% [-3.3%, -0.1%] 26
All ❌✅ (primary) 0.7% [-2.0%, 5.5%] 178

Max RSS (memory usage)

Results (primary 0.6%, secondary -1.0%)

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

mean range count
Regressions ❌
(primary)
3.2% [0.4%, 5.9%] 5
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-2.7% [-3.6%, -1.7%] 4
Improvements ✅
(secondary)
-1.0% [-1.0%, -1.0%] 1
All ❌✅ (primary) 0.6% [-3.6%, 5.9%] 9

Cycles

Results (primary 1.9%, secondary 2.0%)

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

mean range count
Regressions ❌
(primary)
2.6% [1.9%, 3.8%] 10
Regressions ❌
(secondary)
2.3% [1.4%, 4.2%] 14
Improvements ✅
(primary)
-1.4% [-1.6%, -1.2%] 2
Improvements ✅
(secondary)
-2.4% [-2.4%, -2.4%] 1
All ❌✅ (primary) 1.9% [-1.6%, 3.8%] 12

Binary size

Results (primary -0.2%, secondary -0.1%)

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.7%] 40
Regressions ❌
(secondary)
0.4% [0.0%, 1.7%] 60
Improvements ✅
(primary)
-0.4% [-2.2%, -0.0%] 64
Improvements ✅
(secondary)
-0.4% [-2.2%, -0.0%] 71
All ❌✅ (primary) -0.2% [-2.2%, 0.7%] 104

Bootstrap: 472.507s -> 472.183s (-0.07%)
Artifact size: 388.12 MiB -> 387.74 MiB (-0.10%)

@rustbot rustbot added perf-regression Performance regression. and removed S-waiting-on-perf Status: Waiting on a perf run to be completed. labels Oct 13, 2025
@cjgillot
Copy link
Contributor Author

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Oct 14, 2025
Perform DestinationPropagation on places.
@rust-bors

This comment has been minimized.

@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 14, 2025

☀️ Try build successful (CI)
Build commit: 7abf5cf (7abf5cf2df580e4433bd0c247bcdf18e1dab779b, parent: e100792918c8bd9e0cb830f96fc9b171e8892fa1)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (7abf5cf): 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.8% [0.1%, 4.9%] 165
Regressions ❌
(secondary)
0.8% [0.0%, 3.7%] 153
Improvements ✅
(primary)
-0.8% [-2.1%, -0.1%] 14
Improvements ✅
(secondary)
-0.8% [-3.4%, -0.1%] 30
All ❌✅ (primary) 0.7% [-2.1%, 4.9%] 179

Max RSS (memory usage)

Results (primary -1.7%, secondary 3.0%)

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)
4.6% [1.0%, 6.3%] 13
Improvements ✅
(primary)
-1.7% [-3.2%, -0.7%] 6
Improvements ✅
(secondary)
-2.1% [-2.6%, -1.2%] 4
All ❌✅ (primary) -1.7% [-3.2%, -0.7%] 6

Cycles

Results (primary 1.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)
2.5% [1.6%, 3.8%] 3
Regressions ❌
(secondary)
2.7% [1.7%, 4.3%] 12
Improvements ✅
(primary)
-2.3% [-2.3%, -2.3%] 1
Improvements ✅
(secondary)
-2.4% [-2.4%, -2.4%] 1
All ❌✅ (primary) 1.3% [-2.3%, 3.8%] 4

Binary size

Results (primary -0.2%, 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.3% [0.0%, 0.8%] 36
Regressions ❌
(secondary)
0.5% [0.1%, 1.7%] 16
Improvements ✅
(primary)
-0.4% [-2.2%, -0.0%] 69
Improvements ✅
(secondary)
-0.5% [-2.3%, -0.0%] 73
All ❌✅ (primary) -0.2% [-2.2%, 0.8%] 105

Bootstrap: 473.51s -> 471.623s (-0.40%)
Artifact size: 388.11 MiB -> 387.82 MiB (-0.07%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Oct 14, 2025
@bors
Copy link
Collaborator

bors commented Oct 18, 2025

☔ The latest upstream changes (presumably #147654) made this pull request unmergeable. Please resolve the merge conflicts.

@rust-log-analyzer
Copy link
Collaborator

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

Click to see the possible cause of the failure (guessed by this bot)

32 error[E0369]: cannot add `String` to `&str`
33   --> $DIR/issue-39018.rs:11:22
34    |
+ LL | pub fn main() {
+    |  - `+` cannot be used to concatenate a `&str` with a `String`
+ ...
35 LL |     let x = "Hello " + "World!".to_owned();
36    |             -------- ^ ------------------- String
-    |             |        |
-    |             |        `+` cannot be used to concatenate a `&str` with a `String`
+    |             |
39    |             &str
40    |
41 help: create an owned `String` on the left and add a borrow on the right

62 error[E0369]: cannot add `String` to `&String`
63   --> $DIR/issue-39018.rs:27:16
64    |
+ LL | pub fn main() {
+    |  - `+` cannot be used to concatenate a `&str` with a `String`
+ ...
65 LL |     let _ = &a + b;
66    |             -- ^ - String
-    |             |  |
-    |             |  `+` cannot be used to concatenate a `&str` with a `String`
+    |             |
69    |             &String
70    |
71 help: remove the borrow on the left and add one on the right

88 error[E0369]: cannot add `String` to `&String`
89   --> $DIR/issue-39018.rs:30:15
90    |
+ LL | pub fn main() {
+    |  - `+` cannot be used to concatenate a `&str` with a `String`
+ ...
91 LL |     let _ = e + b;
92    |             - ^ - String
-    |             | |
-    |             | `+` cannot be used to concatenate a `&str` with a `String`
+    |             |
95    |             &String
96    |
97 help: create an owned `String` on the left and add a borrow on the right


The actual stderr differed from the expected stderr
To update references, rerun the tests and pass the `--bless` flag
To only update this specific test, also pass `--test-args span/issue-39018.rs`

error: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/span/issue-39018.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" "--target=i686-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/span/issue-39018" "-A" "unused" "-A" "internal_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/i686-unknown-linux-gnu/native/rust-test-helpers" "-Clinker=x86_64-linux-gnu-gcc"
stdout: none
--- stderr -------------------------------
error[E0369]: cannot add `&str` to `&str`
##[error]  --> /checkout/tests/ui/span/issue-39018.rs:2:22
   |
LL |     let x = "Hello " + "World!";
   |             -------- ^ -------- &str
   |             |        |
   |             |        `+` cannot be used to concatenate two `&str` strings
   |             &str
   |
   = note: string concatenation requires an owned `String` on the left
help: create an owned `String` from a string reference
   |
LL |     let x = "Hello ".to_owned() + "World!";
   |                     +++++++++++

error[E0369]: cannot add `World` to `World`
##[error]  --> /checkout/tests/ui/span/issue-39018.rs:8:26
   |
LL |     let y = World::Hello + World::Goodbye;
   |             ------------ ^ -------------- World
   |             |
   |             World
   |
note: an implementation of `Add` might be missing for `World`
  --> /checkout/tests/ui/span/issue-39018.rs:15:1
   |
LL | enum World {
   | ^^^^^^^^^^ must implement `Add`
note: the trait `Add` must be implemented
  --> /rustc/FAKE_PREFIX/library/core/src/ops/arith.rs:77:1

error[E0369]: cannot add `String` to `&str`
##[error]  --> /checkout/tests/ui/span/issue-39018.rs:11:22
   |
LL | pub fn main() {
   |  - `+` cannot be used to concatenate a `&str` with a `String`
...
LL |     let x = "Hello " + "World!".to_owned();
   |             -------- ^ ------------------- String
   |             |
   |             &str
   |
help: create an owned `String` on the left and add a borrow on the right
   |
LL |     let x = "Hello ".to_owned() + &"World!".to_owned();
   |                     +++++++++++   +

error[E0369]: cannot add `&String` to `&String`
##[error]  --> /checkout/tests/ui/span/issue-39018.rs:26:16
   |
LL |     let _ = &a + &b; //~ ERROR cannot add
   |             -- ^ -- &String
   |             |  |
   |             |  `+` cannot be used to concatenate two `&str` strings
   |             &String
   |
   = note: string concatenation requires an owned `String` on the left
help: remove the borrow to obtain an owned `String`
   |
LL -     let _ = &a + &b; //~ ERROR cannot add
LL +     let _ = a + &b; //~ ERROR cannot add
   |

error[E0369]: cannot add `String` to `&String`
##[error]  --> /checkout/tests/ui/span/issue-39018.rs:27:16
   |
LL | pub fn main() {
   |  - `+` cannot be used to concatenate a `&str` with a `String`
...
LL |     let _ = &a + b; //~ ERROR cannot add
   |             -- ^ - String
   |             |
   |             &String
   |
help: remove the borrow on the left and add one on the right
   |
LL -     let _ = &a + b; //~ ERROR cannot add
LL +     let _ = a + &b; //~ ERROR cannot add
   |

error[E0308]: mismatched types
##[error]  --> /checkout/tests/ui/span/issue-39018.rs:29:17
   |
LL |     let _ = a + b; //~ ERROR mismatched types
   |                 ^ expected `&str`, found `String`
   |
help: consider borrowing here
   |
LL |     let _ = a + &b; //~ ERROR mismatched types
   |                 +

error[E0369]: cannot add `String` to `&String`
##[error]  --> /checkout/tests/ui/span/issue-39018.rs:30:15
   |
LL | pub fn main() {
   |  - `+` cannot be used to concatenate a `&str` with a `String`
...
LL |     let _ = e + b; //~ ERROR cannot add
   |             - ^ - String
   |             |
   |             &String
   |
help: create an owned `String` on the left and add a borrow on the right
   |
LL |     let _ = e.to_owned() + &b; //~ ERROR cannot add
   |              +++++++++++   +

error[E0369]: cannot add `&String` to `&String`
##[error]  --> /checkout/tests/ui/span/issue-39018.rs:31:15
   |
LL |     let _ = e + &b; //~ ERROR cannot add
   |             - ^ -- &String
   |             | |
   |             | `+` cannot be used to concatenate two `&str` strings
   |             &String
   |
   = note: string concatenation requires an owned `String` on the left
help: create an owned `String` from a string reference
   |
LL |     let _ = e.to_owned() + &b; //~ ERROR cannot add
   |              +++++++++++

error[E0369]: cannot add `&str` to `&String`
##[error]  --> /checkout/tests/ui/span/issue-39018.rs:32:15
   |
LL |     let _ = e + d; //~ ERROR cannot add
   |             - ^ - &str
   |             | |
   |             | `+` cannot be used to concatenate two `&str` strings
   |             &String
   |
   = note: string concatenation requires an owned `String` on the left
help: create an owned `String` from a string reference
   |
LL |     let _ = e.to_owned() + d; //~ ERROR cannot add
   |              +++++++++++

error[E0369]: cannot add `&&str` to `&String`
##[error]  --> /checkout/tests/ui/span/issue-39018.rs:33:15
   |
LL |     let _ = e + &d; //~ ERROR cannot add
   |             - ^ -- &&str
   |             | |
   |             | `+` cannot be used to concatenate two `&str` strings
   |             &String
   |
   = note: string concatenation requires an owned `String` on the left
help: create an owned `String` from a string reference
   |
LL |     let _ = e.to_owned() + &d; //~ ERROR cannot add
   |              +++++++++++

error[E0369]: cannot add `&&str` to `&&str`
##[error]  --> /checkout/tests/ui/span/issue-39018.rs:34:16
   |
LL |     let _ = &c + &d; //~ ERROR cannot add
   |             -- ^ -- &&str
   |             |
   |             &&str

error[E0369]: cannot add `&str` to `&&str`
##[error]  --> /checkout/tests/ui/span/issue-39018.rs:35:16
   |
LL |     let _ = &c + d; //~ ERROR cannot add
   |             -- ^ - &str
   |             |
   |             &&str

error[E0369]: cannot add `&&str` to `&str`
##[error]  --> /checkout/tests/ui/span/issue-39018.rs:36:15
   |
LL |     let _ = c + &d; //~ ERROR cannot add
   |             - ^ -- &&str
   |             | |
   |             | `+` cannot be used to concatenate two `&str` strings
   |             &str
   |
   = note: string concatenation requires an owned `String` on the left
help: create an owned `String` from a string reference
   |
LL |     let _ = c.to_owned() + &d; //~ ERROR cannot add
   |              +++++++++++

error[E0369]: cannot add `&str` to `&str`
##[error]  --> /checkout/tests/ui/span/issue-39018.rs:37:15
   |
LL |     let _ = c + d; //~ ERROR cannot add
   |             - ^ - &str
   |             | |
   |             | `+` cannot be used to concatenate two `&str` strings
   |             &str
   |
   = note: string concatenation requires an owned `String` on the left
help: create an owned `String` from a string reference
   |
LL |     let _ = c.to_owned() + d; //~ ERROR cannot add
   |              +++++++++++

error: aborting due to 14 previous errors

Some errors have detailed explanations: E0308, E0369.

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.

5 participants