Skip to content

Conversation

@jackh726
Copy link
Member

Ensures that these both error:

struct Wrap3<T: ?Sized>(T);

impl<'b, T: ?Sized + std::marker::Unsize<U> + std::ops::CoerceUnsized<U>, U: ?Sized>
    std::ops::CoerceUnsized<Wrap3<U>> for Wrap3<T> {}

type I = Wrap3<Inner>;
type J = Wrap3<dyn Dynable + Send>;
type K = Wrap3<dyn Dynable>;

// LUB is `J` on nightly
match 0 {
    0 => &Wrap3(Inner)      as &I,
    1 => &Wrap3(Inner)      as &J,
    2 => &Wrap3(Inner)      as &K,
    _ => loop {},
}

// LUB is `K` on nightly
match 0 {
    0 => &Wrap3(Inner)      as &I,
    1 => &Wrap3(Inner)      as &K,
    2 => &Wrap3(Inner)      as &J,
    _ => loop {},
}

r? ghost

@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 Dec 26, 2025
@rust-log-analyzer

This comment has been minimized.

@jackh726
Copy link
Member 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 Dec 26, 2025
[CRATER] Require equality for symmetric LUB coercion
@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Dec 26, 2025
@rust-bors
Copy link
Contributor

rust-bors bot commented Dec 26, 2025

☀️ Try build successful (CI)
Build commit: bac5816 (bac5816c5f3d02cebd0599070af62d1782530294, parent: 82dd3cb008233bfe50ba6b8d6618e6bbd6054eb1)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (bac5816): comparison URL.

Overall result: ❌ regressions - 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.4% [0.1%, 0.9%] 22
Regressions ❌
(secondary)
3.8% [0.1%, 9.6%] 31
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.4% [0.1%, 0.9%] 22

Max RSS (memory usage)

Results (primary 0.8%, secondary 1.5%)

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

mean range count
Regressions ❌
(primary)
3.7% [1.3%, 9.1%] 4
Regressions ❌
(secondary)
2.2% [1.1%, 2.8%] 3
Improvements ✅
(primary)
-5.1% [-5.4%, -4.8%] 2
Improvements ✅
(secondary)
-0.7% [-0.7%, -0.7%] 1
All ❌✅ (primary) 0.8% [-5.4%, 9.1%] 6

Cycles

Results (primary -2.8%, secondary 5.9%)

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)
5.9% [4.4%, 7.7%] 8
Improvements ✅
(primary)
-2.8% [-3.8%, -1.4%] 12
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -2.8% [-3.8%, -1.4%] 12

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 492.292s -> 484.36s (-1.61%)
Artifact size: 392.38 MiB -> 392.44 MiB (0.02%)

@rustbot rustbot added perf-regression Performance regression. and removed S-waiting-on-perf Status: Waiting on a perf run to be completed. labels Dec 27, 2025
@jackh726
Copy link
Member Author

@craterbot check

@craterbot
Copy link
Collaborator

👌 Experiment pr-150408 created and queued.
🤖 Automatically detected try build bac5816
🔍 You can check out the queue and this experiment's details.

ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot craterbot added S-waiting-on-crater Status: Waiting on a crater run to be completed. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Dec 27, 2025
@craterbot
Copy link
Collaborator

🚧 Experiment pr-150408 is now running

ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot
Copy link
Collaborator

🎉 Experiment pr-150408 is completed!
📊 519 regressed and 4 fixed (768548 total)
📊 2039 spurious results on the retry-regressed-list.txt, consider a retry1 if this is a significant amount.
📰 Open the summary report.

⚠️ If you notice any spurious failure please add them to the denylist!
ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

Footnotes

  1. re-run the experiment with crates=https://crater-reports.s3.amazonaws.com/pr-150408/retry-regressed-list.txt

@craterbot craterbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-crater Status: Waiting on a crater run to be completed. labels Jan 4, 2026
@rust-cloud-vms rust-cloud-vms bot force-pushed the multistep-coercion-cleanup branch from 72b1d15 to 14c30b9 Compare January 10, 2026 21:53
@jackh726
Copy link
Member Author

@bors try

@rust-bors

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Jan 10, 2026
[CRATER] Require equality for symmetric LUB coercion
@rust-log-analyzer

This comment has been minimized.

@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 11, 2026

☀️ Try build successful (CI)
Build commit: 9bb5641 (9bb5641bfa3e7e0c9ede079ad0a1d43b1b7422bc, parent: f57eac1bf98cb5d578e3364b64365ec398c137df)

@jackh726
Copy link
Member Author

@craterbot run name=require-direct mode=check-only start=master#f57eac1bf98cb5d578e3364b64365ec398c137df end=try#9bb5641bfa3e7e0c9ede079ad0a1d43b1b7422bc crates=https://crater-reports.s3.amazonaws.com/pr-150408/retry-regressed-list.txt

@craterbot
Copy link
Collaborator

👌 Experiment require-direct created and queued.
🔍 You can check out the queue and this experiment's details.

ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot craterbot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jan 11, 2026
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (94382f3): comparison URL.

Overall result: ❌ regressions - 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.3% [0.2%, 0.5%] 14
Regressions ❌
(secondary)
4.0% [0.2%, 9.7%] 28
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.3% [0.2%, 0.5%] 14

Max RSS (memory usage)

Results (primary 2.7%)

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

mean range count
Regressions ❌
(primary)
2.7% [2.3%, 3.0%] 2
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 2.7% [2.3%, 3.0%] 2

Cycles

Results (primary -2.4%, secondary 4.7%)

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.7% [3.9%, 5.4%] 12
Improvements ✅
(primary)
-2.4% [-2.5%, -2.3%] 2
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -2.4% [-2.5%, -2.3%] 2

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 473.762s -> 472.906s (-0.18%)
Artifact size: 391.43 MiB -> 391.44 MiB (0.00%)

@craterbot
Copy link
Collaborator

🎉 Experiment mutual-coercion is completed!
📊 464 regressed and 0 fixed (2455 total)
📊 153 spurious results on the retry-regressed-list.txt, consider a retry1 if this is a significant amount.
📰 Open the summary report.

⚠️ If you notice any spurious failure please add them to the denylist!
ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

Footnotes

  1. re-run the experiment with crates=https://crater-reports.s3.amazonaws.com/mutual-coercion/retry-regressed-list.txt

@craterbot craterbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-crater Status: Waiting on a crater run to be completed. labels Jan 12, 2026
@rustbot rustbot added the WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) label Jan 23, 2026
@jackh726
Copy link
Member Author

@bors try

@rust-bors

This comment has been minimized.

@rust-cloud-vms rust-cloud-vms bot force-pushed the multistep-coercion-cleanup branch from 72a62e2 to 370fc9b Compare January 23, 2026 07:17
@jackh726
Copy link
Member Author

@bors try

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Jan 23, 2026
[CRATER] Require equality for symmetric LUB coercion
@rust-log-analyzer
Copy link
Collaborator

The job tidy failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
##[group]Runner Image Provisioner
Hosted Compute Agent
Version: 20260115.477
Commit: 4b342d620503cbe250a3154040964899ea7c9b00
Build Date: 2026-01-15T22:32:41Z
Worker ID: {8b525f9c-ae8b-4a4f-8bb7-801820503e4c}
Azure Region: westcentralus
##[endgroup]
##[group]Operating System
Ubuntu
24.04.3
LTS
---
     self, ClosureKind, GenericArgs, Ty, TyCtxt, TypeSuperVisitable, TypeVisitable,
     TypeVisitableExt, TypeVisitor,
Diff in /checkout/compiler/rustc_hir_typeck/src/closure.rs:18:
 };
+use rustc_middle::{bug, span_bug};
 use rustc_span::def_id::LocalDefId;
 use rustc_span::{DUMMY_SP, Span};
 use rustc_trait_selection::error_reporting::traits::ArgKind;
Diff in /checkout/compiler/rustc_hir_typeck/src/closure.rs:352:
                             _ => bug!(),
                         };
                         let output = sig.inputs_and_output.last().unwrap();
-                        let inputs_and_output = self.tcx.mk_type_list(&inputs.iter().chain([*output]).collect::<smallvec::SmallVec<[_; 4]>>());
+                        let inputs_and_output = self.tcx.mk_type_list(
+                            &inputs.iter().chain([*output]).collect::<smallvec::SmallVec<[_; 4]>>(),
+                        );
                         ty::FnSig {
                             abi: sig.abi,
                             safety: sig.safety,
Diff in /checkout/compiler/rustc_hir_typeck/src/closure.rs:368:
                 hir::ClosureKind::Coroutine(_) | hir::ClosureKind::CoroutineClosure(_) => {
                     (None, None)
                 }
-            }
+            },
             _ => (None, None),
         }
     }
Diff in /checkout/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs:20:
 use rustc_infer::infer::canonical::{Canonical, OriginalQueryValues, QueryResponse};
 use rustc_infer::infer::{DefineOpaqueTypes, InferResult};
 use rustc_lint::builtin::SELF_CONSTRUCTOR_FROM_OUTER_ITEM;
-use rustc_middle::ty::adjustment::{Adjust, Adjustment, AutoBorrow, AutoBorrowMutability, PointerCoercion};
+use rustc_middle::ty::adjustment::{
+    Adjust, Adjustment, AutoBorrow, AutoBorrowMutability, PointerCoercion,
+};
 use rustc_middle::ty::{
     self, AdtKind, CanonicalUserType, GenericArgsRef, GenericParamDefKind, IsIdentity,
     SizedTraitKind, Ty, TyCtxt, TypeFoldable, TypeVisitable, TypeVisitableExt, UserArgs,
Diff in /checkout/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs:338:
                         *entry.get_mut() = adj;
                     }
                     (
-                        &mut [Adjustment { kind: Adjust::Pointer(PointerCoercion::ClosureFnPointer(a_safety)), target: _a_ty }],
-                        &[Adjustment { kind: Adjust::Pointer(PointerCoercion::ClosureFnPointer(b_safety)), target: _b_ty }],
+                        &mut [
+                            Adjustment {
+                                kind: Adjust::Pointer(PointerCoercion::ClosureFnPointer(a_safety)),
+                                target: _a_ty,
+                            },
+                        ],
+                        &[
+                            Adjustment {
+                                kind: Adjust::Pointer(PointerCoercion::ClosureFnPointer(b_safety)),
+                                target: _b_ty,
+                            },
+                        ],
                     ) if a_safety == b_safety => {
                         // HACK: See `std::sys::thread::unix::cgroups::quota_v1` for example of what breaks.
                         // In brief, because we have multiple paths that can re-adjust previously coerced exprs,
Diff in /checkout/compiler/rustc_hir_typeck/src/coercion.rs:1504:
                 target
             }
             Err(coerce_mutual_err) => {
-                let new_to_expected_res = self.coerce(
-                    new,
-                    new_ty,
-                    expected_ty,
-                    AllowTwoPhase::No,
-                    Some(cause.clone()),
-                );
+                let new_to_expected_res =
+                    self.coerce(new, new_ty, expected_ty, AllowTwoPhase::No, Some(cause.clone()));
                 match new_to_expected_res {
                     Ok(t) => t,
                     Err(_) => return Err(coerce_mutual_err),
Diff in /checkout/compiler/rustc_hir_typeck/src/coercion.rs:1581:
     expected_ty: Ty<'tcx>,
     final_ty: Option<Ty<'tcx>>,
     expressions: Vec<(Option<&'tcx hir::Expr<'tcx>>, Ty<'tcx>)>,
-    pub(crate) force_initial_sub: bool
+    pub(crate) force_initial_sub: bool,
 }
 
 impl<'tcx> CoerceMany<'tcx> {
Diff in /checkout/compiler/rustc_hir_typeck/src/coercion.rs:1595:
     /// Creates a `CoerceMany` with a given capacity.
     #[tracing::instrument()]
     pub(crate) fn with_capacity(expected_ty: Ty<'tcx>, capacity: usize) -> Self {
-        CoerceMany { expected_ty, final_ty: None, expressions: Vec::with_capacity(capacity), force_initial_sub: false }
+        CoerceMany {
+            expected_ty,
+            final_ty: None,
+            expressions: Vec::with_capacity(capacity),
+            force_initial_sub: false,
+        }
     }
 
     /// Returns the "expected type" with which this coercion was
Diff in /checkout/compiler/rustc_hir_typeck/src/coercion.rs:1749:
             // Another example is `break` with no argument expression.
             assert!(expression_ty.is_unit(), "if let hack without unit type");
             for (expr, expr_ty) in self.expressions.iter() {
-                let coerce = Coerce::new(
-                    fcx,
-                    cause.clone(),
-                    AllowTwoPhase::No,
-                    true,
-                );
+                let coerce = Coerce::new(fcx, cause.clone(), AllowTwoPhase::No, true);
                 let ok = match fcx.commit_if_ok(|_| coerce.coerce(*expr_ty, expression_ty)) {
                     Ok(coerce) => coerce,
                     Err(e) => {
Diff in /checkout/compiler/rustc_hir_typeck/src/coercion.rs:1843:
                     E0069,
                     "`return;` in a function whose return type is not `()`"
                 );
-                if let Some(value) = fcx.err_ctxt().ty_kind_suggestion(fcx.param_env, found)
-                {
+                if let Some(value) = fcx.err_ctxt().ty_kind_suggestion(fcx.param_env, found) {
                     err.span_suggestion_verbose(
                         cause.span.shrink_to_hi(),
                         "give the `return` a value of the expected type",
Diff in /checkout/compiler/rustc_hir_typeck/src/coercion.rs:1901:
                         rpit_def_id,
                         arm_ty,
                         prior_arm_ty,
-                        prior_non_diverging_arms
-                            .iter()
-                            .chain(std::iter::once(&arm_span))
-                            .copied(),
+                        prior_non_diverging_arms.iter().chain(std::iter::once(&arm_span)).copied(),
                     );
                 }
             }
Diff in /checkout/compiler/rustc_hir_typeck/src/coercion.rs:2193:
         if self.force_initial_sub {
             return final_ty;
         }
-        
+
         let mut expected_ty = self.expected_ty;
         if fcx.next_trait_solver() {
-            expected_ty = fcx.try_structurally_resolve_type(
-                cause.span,
-                expected_ty,
-            );
+            expected_ty = fcx.try_structurally_resolve_type(cause.span, expected_ty);
         }
 
         // You may ask "Why do we coerce the `final_ty` to the `expected_ty`, and
Diff in /checkout/compiler/rustc_hir_typeck/src/coercion.rs:2211:
         let final_ty = fcx.try_structurally_resolve_type(cause.span, final_ty);
         debug!("coerce::complete (final_ty): {:?} -> {:?}", final_ty, expected_ty);
 
-        let coerce = Coerce::new(
-            fcx,
-            cause.clone(),
-            AllowTwoPhase::No,
-            coerce_never,
-        );
+        let coerce = Coerce::new(fcx, cause.clone(), AllowTwoPhase::No, coerce_never);
         let ok = match fcx.commit_if_ok(|_| coerce.coerce(final_ty, expected_ty)) {
             Ok(coerce) => coerce,
             Err(err) => {
Diff in /checkout/compiler/rustc_hir_typeck/src/coercion.rs:2227:
                     None,
                     expected_ty,
                     final_ty,
-                    |_| {}
+                    |_| {},
                 );
                 return Ty::new_error(fcx.tcx, reported);
             }
Diff in /checkout/compiler/rustc_hir_typeck/src/coercion.rs:2238:
             let source = fcx.try_structurally_resolve_type(cause.span, *ty);
             debug!("coerce::complete (expression): {:?} -> {:?}", source, expected_ty);
 
-            let coerce = Coerce::new(
-                fcx,
-                cause.clone(),
-                AllowTwoPhase::No,
-                coerce_never,
-            );
+            let coerce = Coerce::new(fcx, cause.clone(), AllowTwoPhase::No, coerce_never);
             let ok = match fcx.commit_if_ok(|_| coerce.coerce(source, expected_ty)) {
                 Ok(coerce) => coerce,
                 Err(e) => {
Diff in /checkout/compiler/rustc_hir_typeck/src/coercion.rs:2250:
-                    let reported = self.report_coercion_error(fcx, e, cause, *expr, expected_ty, source, |_| {});
+                    let reported = self.report_coercion_error(
+                        fcx,
+                        e,
+                        cause,
+                        *expr,
+                        expected_ty,
+                        source,
+                        |_| {},
+                    );
                     return Ty::new_error(fcx.tcx, reported);
                 }
             };
Diff in /checkout/compiler/rustc_hir_typeck/src/coercion.rs:2254:
             let (adjustments, _) = fcx.register_infer_ok_obligations(ok);
-    
+
             if let Some(expr) = expr {
                 fcx.set_adjustments(expr, adjustments.clone());
             }
Diff in /checkout/compiler/rustc_hir_typeck/src/expr.rs:1470:
         //let coerce_never = self.tcx.expr_guaranteed_to_constitute_read_for_never(expr);
         let coerce_never = true;
         tracing::debug!("calling complete in check_expr_loop");
-        ctxt.coerce.map(|c| c.complete(self, &cause, coerce_never)).unwrap_or_else(|| self.tcx.types.unit)
+        ctxt.coerce
+            .map(|c| c.complete(self, &cause, coerce_never))
+            .unwrap_or_else(|| self.tcx.types.unit)
     }
 
     /// Checks a method call.
fmt: checked 6659 files
Bootstrap failed while executing `test src/tools/tidy tidyselftest --extra-checks=py,cpp,js,spellcheck`

@rust-bors rust-bors bot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 23, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 23, 2026

💔 Test for 1eba9e2 failed: CI. Failed job:

@rust-log-analyzer
Copy link
Collaborator

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

Click to see the possible cause of the failure (guessed by this bot)
   Compiling collector v0.1.0 (/tmp/tmp-multistage/opt-artifacts/rustc-perf/collector)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 32.89s
[2026-01-23T07:28:44.489Z INFO  opt_dist::timer] Section `Stage 1 (Rustc PGO)` starts
[2026-01-23T07:28:44.489Z INFO  opt_dist::timer] Section `Stage 1 (Rustc PGO) > Build PGO instrumented rustc and LLVM` starts
[2026-01-23T07:28:44.489Z INFO  opt_dist::exec] Executing `RUST_BACKTRACE=full python3 /checkout/x.py build --target x86_64-unknown-linux-gnu --host x86_64-unknown-linux-gnu --stage 2 library/std --set rust.llvm-bitcode-linker=false --set build.extended=false --set rust.codegen-backends=['llvm'] --set rust.deny-warnings=false --rust-profile-generate /tmp/tmp-multistage/opt-artifacts/rustc-pgo --set llvm.thin-lto=false --set llvm.link-shared=true [at /checkout/obj]`
##[endgroup]
##[group]Building bootstrap
    Finished `dev` profile [unoptimized] target(s) in 0.06s
##[endgroup]
[TIMING:start] compile::Assemble { target_compiler: Compiler { stage: 2, host: x86_64-unknown-linux-gnu, forced_compiler: false } }
---
[RUSTC-TIMING] zerocopy test:false 2.077
[RUSTC-TIMING] serde_core test:false 2.824
[RUSTC-TIMING] rustix test:false 3.058
[RUSTC-TIMING] regex_syntax test:false 6.835
Bootstrap failed while executing `build --target x86_64-unknown-linux-gnu --host x86_64-unknown-linux-gnu --stage 2 library/std --set rust.llvm-bitcode-linker=false --set build.extended=false --set rust.codegen-backends=['llvm'] --set rust.deny-warnings=false --rust-profile-generate /tmp/tmp-multistage/opt-artifacts/rustc-pgo --set llvm.thin-lto=false --set llvm.link-shared=true`
Build completed unsuccessfully in 0:10:58
[2026-01-23T07:39:43.424Z INFO  opt_dist::timer] Section `Stage 1 (Rustc PGO) > Build PGO instrumented rustc and LLVM` ended: FAIL (658.94s)`
[2026-01-23T07:39:43.424Z INFO  opt_dist::timer] Section `Stage 1 (Rustc PGO)` ended: FAIL (658.94s)`
[2026-01-23T07:39:43.424Z INFO  opt_dist] Timer results
    -----------------------------------------------------------------
---
[2026-01-23T07:39:43.424Z INFO  opt_dist::utils] Free disk space: 1.24 TiB out of total 2.18 TiB (43.10% used)
Error: Optimized build pipeline has failed

Caused by:
    Command RUST_BACKTRACE=full python3 /checkout/x.py build --target x86_64-unknown-linux-gnu --host x86_64-unknown-linux-gnu --stage 2 library/std --set rust.llvm-bitcode-linker=false --set build.extended=false --set rust.codegen-backends=['llvm'] --set rust.deny-warnings=false --rust-profile-generate /tmp/tmp-multistage/opt-artifacts/rustc-pgo --set llvm.thin-lto=false --set llvm.link-shared=true [at /checkout/obj] has failed with exit code Some(1)

Stack backtrace:
   0: <anyhow::Error>::msg::<alloc::string::String>
             at /rust/deps/anyhow-1.0.100/src/backtrace.rs:27:14
   1: <opt_dist::exec::CmdBuilder>::run
             at /rustc/1eba9e24e57f467a02a7e76b84d70f5aa8308e57/src/tools/opt-dist/src/exec.rs:80:17
   2: <opt_dist::exec::Bootstrap>::run
             at /rustc/1eba9e24e57f467a02a7e76b84d70f5aa8308e57/src/tools/opt-dist/src/exec.rs:199:18
   3: opt_dist::execute_pipeline::{closure#1}::{closure#0}
             at /rustc/1eba9e24e57f467a02a7e76b84d70f5aa8308e57/src/tools/opt-dist/src/main.rs:256:21
   4: <opt_dist::timer::TimerSection>::section::<opt_dist::execute_pipeline::{closure#1}::{closure#0}, ()>
             at /rustc/1eba9e24e57f467a02a7e76b84d70f5aa8308e57/src/tools/opt-dist/src/timer.rs:111:22
   5: opt_dist::execute_pipeline::{closure#1}
             at /rustc/1eba9e24e57f467a02a7e76b84d70f5aa8308e57/src/tools/opt-dist/src/main.rs:245:15
   6: <opt_dist::timer::TimerSection>::section::<opt_dist::execute_pipeline::{closure#1}, opt_dist::training::RustcPGOProfile>
             at /rustc/1eba9e24e57f467a02a7e76b84d70f5aa8308e57/src/tools/opt-dist/src/timer.rs:111:22
   7: opt_dist::execute_pipeline
             at /rustc/1eba9e24e57f467a02a7e76b84d70f5aa8308e57/src/tools/opt-dist/src/main.rs:242:35
   8: opt_dist::main
             at /rustc/1eba9e24e57f467a02a7e76b84d70f5aa8308e57/src/tools/opt-dist/src/main.rs:469:18
   9: <fn() -> core::result::Result<(), anyhow::Error> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/ops/function.rs:250:5
  10: std::sys::backtrace::__rust_begin_short_backtrace::<fn() -> core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>>
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/sys/backtrace.rs:166:18
  11: std::rt::lang_start::<core::result::Result<(), anyhow::Error>>::{closure#0}
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/rt.rs:206:18
  12: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/ops/function.rs:287:21
  13: std::panicking::catch_unwind::do_call
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:581:40
  14: std::panicking::catch_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:544:19

@jackh726
Copy link
Member Author

@bors retry

@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 23, 2026

❗ You can only retry pull requests that are approved and have a previously failed auto build.

@jackh726
Copy link
Member Author

@bors try

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Jan 23, 2026
[CRATER] Require equality for symmetric LUB coercion
@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 23, 2026

💔 Test for 8a19fe1 failed: CI. Failed job:

@rust-log-analyzer
Copy link
Collaborator

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

Click to see the possible cause of the failure (guessed by this bot)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 32.16s
##[endgroup]
[2026-01-23T17:24:04.633Z INFO  opt_dist::timer] Section `Stage 1 (Rustc PGO)` starts
[2026-01-23T17:24:04.633Z INFO  opt_dist::timer] Section `Stage 1 (Rustc PGO) > Build PGO instrumented rustc and LLVM` starts
[2026-01-23T17:24:04.633Z INFO  opt_dist::exec] Executing `RUST_BACKTRACE=full python3 /checkout/x.py build --target x86_64-unknown-linux-gnu --host x86_64-unknown-linux-gnu --stage 2 library/std --set rust.llvm-bitcode-linker=false --set build.extended=false --set rust.codegen-backends=['llvm'] --set rust.deny-warnings=false --rust-profile-generate /tmp/tmp-multistage/opt-artifacts/rustc-pgo --set llvm.thin-lto=false --set llvm.link-shared=true [at /checkout/obj]`
##[group]Building bootstrap
    Finished `dev` profile [unoptimized] target(s) in 0.06s
##[endgroup]
[TIMING:start] compile::Assemble { target_compiler: Compiler { stage: 2, host: x86_64-unknown-linux-gnu, forced_compiler: false } }
[TIMING:start] builder::Libdir { compiler: Compiler { stage: 2, host: x86_64-unknown-linux-gnu, forced_compiler: false }, target: x86_64-unknown-linux-gnu }
---
[RUSTC-TIMING] zerocopy test:false 2.132
[RUSTC-TIMING] serde_core test:false 2.912
[RUSTC-TIMING] rustix test:false 2.955
[RUSTC-TIMING] regex_syntax test:false 6.957
Bootstrap failed while executing `build --target x86_64-unknown-linux-gnu --host x86_64-unknown-linux-gnu --stage 2 library/std --set rust.llvm-bitcode-linker=false --set build.extended=false --set rust.codegen-backends=['llvm'] --set rust.deny-warnings=false --rust-profile-generate /tmp/tmp-multistage/opt-artifacts/rustc-pgo --set llvm.thin-lto=false --set llvm.link-shared=true`
Build completed unsuccessfully in 0:11:03
[2026-01-23T17:35:08.153Z INFO  opt_dist::timer] Section `Stage 1 (Rustc PGO) > Build PGO instrumented rustc and LLVM` ended: FAIL (663.52s)`
[2026-01-23T17:35:08.153Z INFO  opt_dist::timer] Section `Stage 1 (Rustc PGO)` ended: FAIL (663.52s)`
[2026-01-23T17:35:08.153Z INFO  opt_dist] Timer results
    -----------------------------------------------------------------
---
[2026-01-23T17:35:08.153Z INFO  opt_dist::utils] Free disk space: 1.25 TiB out of total 2.18 TiB (42.87% used)
Error: Optimized build pipeline has failed

Caused by:
    Command RUST_BACKTRACE=full python3 /checkout/x.py build --target x86_64-unknown-linux-gnu --host x86_64-unknown-linux-gnu --stage 2 library/std --set rust.llvm-bitcode-linker=false --set build.extended=false --set rust.codegen-backends=['llvm'] --set rust.deny-warnings=false --rust-profile-generate /tmp/tmp-multistage/opt-artifacts/rustc-pgo --set llvm.thin-lto=false --set llvm.link-shared=true [at /checkout/obj] has failed with exit code Some(1)

Stack backtrace:
   0: <anyhow::Error>::msg::<alloc::string::String>
             at /rust/deps/anyhow-1.0.100/src/backtrace.rs:27:14
   1: <opt_dist::exec::CmdBuilder>::run
             at /rustc/8a19fe1cec9329e8306125e9b590c56a3089b642/src/tools/opt-dist/src/exec.rs:80:17
   2: <opt_dist::exec::Bootstrap>::run
             at /rustc/8a19fe1cec9329e8306125e9b590c56a3089b642/src/tools/opt-dist/src/exec.rs:199:18
   3: opt_dist::execute_pipeline::{closure#1}::{closure#0}
             at /rustc/8a19fe1cec9329e8306125e9b590c56a3089b642/src/tools/opt-dist/src/main.rs:256:21
   4: <opt_dist::timer::TimerSection>::section::<opt_dist::execute_pipeline::{closure#1}::{closure#0}, ()>
             at /rustc/8a19fe1cec9329e8306125e9b590c56a3089b642/src/tools/opt-dist/src/timer.rs:111:22
   5: opt_dist::execute_pipeline::{closure#1}
             at /rustc/8a19fe1cec9329e8306125e9b590c56a3089b642/src/tools/opt-dist/src/main.rs:245:15
   6: <opt_dist::timer::TimerSection>::section::<opt_dist::execute_pipeline::{closure#1}, opt_dist::training::RustcPGOProfile>
             at /rustc/8a19fe1cec9329e8306125e9b590c56a3089b642/src/tools/opt-dist/src/timer.rs:111:22
   7: opt_dist::execute_pipeline
             at /rustc/8a19fe1cec9329e8306125e9b590c56a3089b642/src/tools/opt-dist/src/main.rs:242:35
   8: opt_dist::main
             at /rustc/8a19fe1cec9329e8306125e9b590c56a3089b642/src/tools/opt-dist/src/main.rs:469:18
   9: <fn() -> core::result::Result<(), anyhow::Error> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/ops/function.rs:250:5
  10: std::sys::backtrace::__rust_begin_short_backtrace::<fn() -> core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>>
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/sys/backtrace.rs:166:18
  11: std::rt::lang_start::<core::result::Result<(), anyhow::Error>>::{closure#0}
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/rt.rs:206:18
  12: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/core/src/ops/function.rs:287:21
  13: std::panicking::catch_unwind::do_call
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:581:40
  14: std::panicking::catch_unwind
             at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library/std/src/panicking.rs:544:19

@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 30, 2026

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

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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants