Skip to content

Commit cca2e53

Browse files
Drive-by tweaks to debug outputs
1 parent 96bd50d commit cca2e53

12 files changed

+76
-52
lines changed

compiler/rustc_middle/src/infer/canonical.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ use std::ops::Index;
3535
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, TyDecodable, TyEncodable)]
3636
#[derive(HashStable, TypeFoldable, TypeVisitable, Lift)]
3737
pub struct Canonical<'tcx, V> {
38+
pub value: V,
3839
pub max_universe: ty::UniverseIndex,
3940
pub variables: CanonicalVarInfos<'tcx>,
40-
pub value: V,
4141
}
4242

4343
pub type CanonicalVarInfos<'tcx> = &'tcx List<CanonicalVarInfo<'tcx>>;

compiler/rustc_middle/src/traits/solve.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ pub type EvaluationCache<'tcx> = Cache<CanonicalGoal<'tcx>, QueryResult<'tcx>>;
2020
/// we're currently typechecking while the `predicate` is some trait bound.
2121
#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash, TypeFoldable, TypeVisitable)]
2222
pub struct Goal<'tcx, P> {
23-
pub param_env: ty::ParamEnv<'tcx>,
2423
pub predicate: P,
24+
pub param_env: ty::ParamEnv<'tcx>,
2525
}
2626

2727
impl<'tcx, P> Goal<'tcx, P> {
@@ -41,10 +41,10 @@ impl<'tcx, P> Goal<'tcx, P> {
4141

4242
#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash, TypeFoldable, TypeVisitable)]
4343
pub struct Response<'tcx> {
44+
pub certainty: Certainty,
4445
pub var_values: CanonicalVarValues<'tcx>,
4546
/// Additional constraints returned by this query.
4647
pub external_constraints: ExternalConstraints<'tcx>,
47-
pub certainty: Certainty,
4848
}
4949

5050
#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash, TypeFoldable, TypeVisitable)]

compiler/rustc_trait_selection/src/solve/assembly.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
262262
/// To deal with this, we first try to normalize the self type and add the candidates for the normalized
263263
/// self type to the list of candidates in case that succeeds. We also have to consider candidates with the
264264
/// projection as a self type as well
265+
#[instrument(level = "debug", skip_all)]
265266
fn assemble_candidates_after_normalizing_self_ty<G: GoalKind<'tcx>>(
266267
&mut self,
267268
goal: Goal<'tcx, G>,
@@ -294,6 +295,7 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
294295
});
295296
}
296297

298+
#[instrument(level = "debug", skip_all)]
297299
fn assemble_impl_candidates<G: GoalKind<'tcx>>(
298300
&mut self,
299301
goal: Goal<'tcx, G>,
@@ -312,6 +314,7 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
312314
);
313315
}
314316

317+
#[instrument(level = "debug", skip_all)]
315318
fn assemble_builtin_impl_candidates<G: GoalKind<'tcx>>(
316319
&mut self,
317320
goal: Goal<'tcx, G>,
@@ -367,6 +370,7 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
367370
}
368371
}
369372

373+
#[instrument(level = "debug", skip_all)]
370374
fn assemble_param_env_candidates<G: GoalKind<'tcx>>(
371375
&mut self,
372376
goal: Goal<'tcx, G>,
@@ -382,6 +386,7 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
382386
}
383387
}
384388

389+
#[instrument(level = "debug", skip_all)]
385390
fn assemble_alias_bound_candidates<G: GoalKind<'tcx>>(
386391
&mut self,
387392
goal: Goal<'tcx, G>,
@@ -429,6 +434,7 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
429434
}
430435
}
431436

437+
#[instrument(level = "debug", skip_all)]
432438
fn assemble_object_bound_candidates<G: GoalKind<'tcx>>(
433439
&mut self,
434440
goal: Goal<'tcx, G>,
@@ -479,6 +485,7 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
479485
}
480486
}
481487

488+
#[instrument(level = "debug", skip_all)]
482489
fn assemble_coherence_unknowable_candidates<G: GoalKind<'tcx>>(
483490
&mut self,
484491
goal: Goal<'tcx, G>,

compiler/rustc_trait_selection/src/solve/eval_ctxt.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ pub trait InferCtxtEvalExt<'tcx> {
7474
}
7575

7676
impl<'tcx> InferCtxtEvalExt<'tcx> for InferCtxt<'tcx> {
77-
#[instrument(level = "debug", skip(self))]
77+
#[instrument(level = "debug", skip(self), ret)]
7878
fn evaluate_root_goal(
7979
&self,
8080
goal: Goal<'tcx, ty::Predicate<'tcx>>,
@@ -497,7 +497,7 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
497497
///
498498
/// If possible, try using `eq` instead which automatically handles nested
499499
/// goals correctly.
500-
#[instrument(level = "debug", skip(self, param_env), ret)]
500+
#[instrument(level = "trace", skip(self, param_env), ret)]
501501
pub(super) fn eq_and_get_goals<T: ToTrace<'tcx>>(
502502
&self,
503503
param_env: ty::ParamEnv<'tcx>,

compiler/rustc_trait_selection/src/solve/mod.rs

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,13 +166,22 @@ impl<'a, 'tcx> EvalCtxt<'a, 'tcx> {
166166
) -> QueryResult<'tcx> {
167167
let tcx = self.tcx();
168168
// We may need to invert the alias relation direction if dealing an alias on the RHS.
169+
#[derive(Debug)]
169170
enum Invert {
170171
No,
171172
Yes,
172173
}
173174
let evaluate_normalizes_to =
174175
|ecx: &mut EvalCtxt<'_, 'tcx>, alias, other, direction, invert| {
175-
debug!("evaluate_normalizes_to(alias={:?}, other={:?})", alias, other);
176+
let span = tracing::span!(
177+
tracing::Level::DEBUG,
178+
"compute_alias_relate_goal(evaluate_normalizes_to)",
179+
?alias,
180+
?other,
181+
?direction,
182+
?invert
183+
);
184+
let _enter = span.enter();
176185
let result = ecx.probe(|ecx| {
177186
let other = match direction {
178187
// This is purely an optimization.
@@ -197,7 +206,7 @@ impl<'a, 'tcx> EvalCtxt<'a, 'tcx> {
197206
));
198207
ecx.evaluate_added_goals_and_make_canonical_response(Certainty::Yes)
199208
});
200-
debug!("evaluate_normalizes_to({alias}, {other}, {direction:?}) -> {result:?}");
209+
debug!(?result);
201210
result
202211
};
203212

@@ -223,7 +232,7 @@ impl<'a, 'tcx> EvalCtxt<'a, 'tcx> {
223232
}
224233

225234
(Some(alias_lhs), Some(alias_rhs)) => {
226-
debug!("compute_alias_relate_goal: both sides are aliases");
235+
debug!("both sides are aliases");
227236

228237
let candidates = vec![
229238
// LHS normalizes-to RHS
@@ -232,9 +241,14 @@ impl<'a, 'tcx> EvalCtxt<'a, 'tcx> {
232241
evaluate_normalizes_to(self, alias_rhs, lhs, direction, Invert::Yes),
233242
// Relate via substs
234243
self.probe(|ecx| {
235-
debug!(
236-
"compute_alias_relate_goal: alias defids are equal, equating substs"
244+
let span = tracing::span!(
245+
tracing::Level::DEBUG,
246+
"compute_alias_relate_goal(relate_via_substs)",
247+
?alias_lhs,
248+
?alias_rhs,
249+
?direction
237250
);
251+
let _enter = span.enter();
238252

239253
match direction {
240254
ty::AliasRelationDirection::Equate => {
@@ -288,6 +302,7 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
288302
debug!("added_goals={:?}", &self.nested_goals.goals[current_len..]);
289303
}
290304

305+
#[instrument(level = "debug", skip(self, responses))]
291306
fn try_merge_responses(
292307
&mut self,
293308
responses: impl Iterator<Item = QueryResult<'tcx>>,
@@ -317,6 +332,7 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
317332
});
318333
// FIXME(-Ztrait-solver=next): We should take the intersection of the constraints on all the
319334
// responses and use that for the constraints of this ambiguous response.
335+
debug!(">1 response, bailing with {certainty:?}");
320336
let response = self.evaluate_added_goals_and_make_canonical_response(certainty);
321337
if let Ok(response) = &response {
322338
assert!(response.has_no_inference_or_external_constraints());

compiler/rustc_trait_selection/src/solve/search_graph/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ impl<'tcx> SearchGraph<'tcx> {
194194
mut loop_body: impl FnMut(&mut Self) -> QueryResult<'tcx>,
195195
) -> QueryResult<'tcx> {
196196
if let Some(result) = tcx.new_solver_evaluation_cache.get(&canonical_goal, tcx) {
197+
debug!(?canonical_goal, ?result, "cache hit");
197198
return result;
198199
}
199200

tests/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
11
// MIR for `address_of_reborrow` after SimplifyCfg-initial
22

33
| User Type Annotations
4-
| 0: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }], value: Ty(*const ^0) }, span: $DIR/address_of.rs:7:5: 7:18, inferred_ty: *const [i32; 10]
5-
| 1: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }], value: Ty(*const dyn std::marker::Send) }, span: $DIR/address_of.rs:9:5: 9:25, inferred_ty: *const dyn std::marker::Send
6-
| 2: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }], value: Ty(*const ^0) }, span: $DIR/address_of.rs:13:12: 13:20, inferred_ty: *const [i32; 10]
7-
| 3: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }], value: Ty(*const ^0) }, span: $DIR/address_of.rs:13:12: 13:20, inferred_ty: *const [i32; 10]
8-
| 4: user_ty: Canonical { max_universe: U0, variables: [], value: Ty(*const [i32; 10]) }, span: $DIR/address_of.rs:14:12: 14:28, inferred_ty: *const [i32; 10]
9-
| 5: user_ty: Canonical { max_universe: U0, variables: [], value: Ty(*const [i32; 10]) }, span: $DIR/address_of.rs:14:12: 14:28, inferred_ty: *const [i32; 10]
10-
| 6: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }], value: Ty(*const dyn std::marker::Send) }, span: $DIR/address_of.rs:15:12: 15:27, inferred_ty: *const dyn std::marker::Send
11-
| 7: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }], value: Ty(*const dyn std::marker::Send) }, span: $DIR/address_of.rs:15:12: 15:27, inferred_ty: *const dyn std::marker::Send
12-
| 8: user_ty: Canonical { max_universe: U0, variables: [], value: Ty(*const [i32]) }, span: $DIR/address_of.rs:16:12: 16:24, inferred_ty: *const [i32]
13-
| 9: user_ty: Canonical { max_universe: U0, variables: [], value: Ty(*const [i32]) }, span: $DIR/address_of.rs:16:12: 16:24, inferred_ty: *const [i32]
14-
| 10: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }], value: Ty(*const ^0) }, span: $DIR/address_of.rs:18:5: 18:18, inferred_ty: *const [i32; 10]
15-
| 11: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }], value: Ty(*const dyn std::marker::Send) }, span: $DIR/address_of.rs:20:5: 20:25, inferred_ty: *const dyn std::marker::Send
16-
| 12: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }], value: Ty(*const ^0) }, span: $DIR/address_of.rs:23:12: 23:20, inferred_ty: *const [i32; 10]
17-
| 13: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }], value: Ty(*const ^0) }, span: $DIR/address_of.rs:23:12: 23:20, inferred_ty: *const [i32; 10]
18-
| 14: user_ty: Canonical { max_universe: U0, variables: [], value: Ty(*const [i32; 10]) }, span: $DIR/address_of.rs:24:12: 24:28, inferred_ty: *const [i32; 10]
19-
| 15: user_ty: Canonical { max_universe: U0, variables: [], value: Ty(*const [i32; 10]) }, span: $DIR/address_of.rs:24:12: 24:28, inferred_ty: *const [i32; 10]
20-
| 16: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }], value: Ty(*const dyn std::marker::Send) }, span: $DIR/address_of.rs:25:12: 25:27, inferred_ty: *const dyn std::marker::Send
21-
| 17: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }], value: Ty(*const dyn std::marker::Send) }, span: $DIR/address_of.rs:25:12: 25:27, inferred_ty: *const dyn std::marker::Send
22-
| 18: user_ty: Canonical { max_universe: U0, variables: [], value: Ty(*const [i32]) }, span: $DIR/address_of.rs:26:12: 26:24, inferred_ty: *const [i32]
23-
| 19: user_ty: Canonical { max_universe: U0, variables: [], value: Ty(*const [i32]) }, span: $DIR/address_of.rs:26:12: 26:24, inferred_ty: *const [i32]
24-
| 20: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }], value: Ty(*mut ^0) }, span: $DIR/address_of.rs:28:5: 28:16, inferred_ty: *mut [i32; 10]
25-
| 21: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }], value: Ty(*mut dyn std::marker::Send) }, span: $DIR/address_of.rs:30:5: 30:23, inferred_ty: *mut dyn std::marker::Send
26-
| 22: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }], value: Ty(*mut ^0) }, span: $DIR/address_of.rs:33:12: 33:18, inferred_ty: *mut [i32; 10]
27-
| 23: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }], value: Ty(*mut ^0) }, span: $DIR/address_of.rs:33:12: 33:18, inferred_ty: *mut [i32; 10]
28-
| 24: user_ty: Canonical { max_universe: U0, variables: [], value: Ty(*mut [i32; 10]) }, span: $DIR/address_of.rs:34:12: 34:26, inferred_ty: *mut [i32; 10]
29-
| 25: user_ty: Canonical { max_universe: U0, variables: [], value: Ty(*mut [i32; 10]) }, span: $DIR/address_of.rs:34:12: 34:26, inferred_ty: *mut [i32; 10]
30-
| 26: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }], value: Ty(*mut dyn std::marker::Send) }, span: $DIR/address_of.rs:35:12: 35:25, inferred_ty: *mut dyn std::marker::Send
31-
| 27: user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }], value: Ty(*mut dyn std::marker::Send) }, span: $DIR/address_of.rs:35:12: 35:25, inferred_ty: *mut dyn std::marker::Send
32-
| 28: user_ty: Canonical { max_universe: U0, variables: [], value: Ty(*mut [i32]) }, span: $DIR/address_of.rs:36:12: 36:22, inferred_ty: *mut [i32]
33-
| 29: user_ty: Canonical { max_universe: U0, variables: [], value: Ty(*mut [i32]) }, span: $DIR/address_of.rs:36:12: 36:22, inferred_ty: *mut [i32]
4+
| 0: user_ty: Canonical { value: Ty(*const ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:7:5: 7:18, inferred_ty: *const [i32; 10]
5+
| 1: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:9:5: 9:25, inferred_ty: *const dyn std::marker::Send
6+
| 2: user_ty: Canonical { value: Ty(*const ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:13:12: 13:20, inferred_ty: *const [i32; 10]
7+
| 3: user_ty: Canonical { value: Ty(*const ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:13:12: 13:20, inferred_ty: *const [i32; 10]
8+
| 4: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:14:12: 14:28, inferred_ty: *const [i32; 10]
9+
| 5: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:14:12: 14:28, inferred_ty: *const [i32; 10]
10+
| 6: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:15:12: 15:27, inferred_ty: *const dyn std::marker::Send
11+
| 7: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:15:12: 15:27, inferred_ty: *const dyn std::marker::Send
12+
| 8: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:16:12: 16:24, inferred_ty: *const [i32]
13+
| 9: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:16:12: 16:24, inferred_ty: *const [i32]
14+
| 10: user_ty: Canonical { value: Ty(*const ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:18:5: 18:18, inferred_ty: *const [i32; 10]
15+
| 11: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:20:5: 20:25, inferred_ty: *const dyn std::marker::Send
16+
| 12: user_ty: Canonical { value: Ty(*const ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:23:12: 23:20, inferred_ty: *const [i32; 10]
17+
| 13: user_ty: Canonical { value: Ty(*const ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:23:12: 23:20, inferred_ty: *const [i32; 10]
18+
| 14: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:24:12: 24:28, inferred_ty: *const [i32; 10]
19+
| 15: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:24:12: 24:28, inferred_ty: *const [i32; 10]
20+
| 16: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:25:12: 25:27, inferred_ty: *const dyn std::marker::Send
21+
| 17: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:25:12: 25:27, inferred_ty: *const dyn std::marker::Send
22+
| 18: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:26:12: 26:24, inferred_ty: *const [i32]
23+
| 19: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:26:12: 26:24, inferred_ty: *const [i32]
24+
| 20: user_ty: Canonical { value: Ty(*mut ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:28:5: 28:16, inferred_ty: *mut [i32; 10]
25+
| 21: user_ty: Canonical { value: Ty(*mut dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:30:5: 30:23, inferred_ty: *mut dyn std::marker::Send
26+
| 22: user_ty: Canonical { value: Ty(*mut ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:33:12: 33:18, inferred_ty: *mut [i32; 10]
27+
| 23: user_ty: Canonical { value: Ty(*mut ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:33:12: 33:18, inferred_ty: *mut [i32; 10]
28+
| 24: user_ty: Canonical { value: Ty(*mut [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:34:12: 34:26, inferred_ty: *mut [i32; 10]
29+
| 25: user_ty: Canonical { value: Ty(*mut [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:34:12: 34:26, inferred_ty: *mut [i32; 10]
30+
| 26: user_ty: Canonical { value: Ty(*mut dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:35:12: 35:25, inferred_ty: *mut dyn std::marker::Send
31+
| 27: user_ty: Canonical { value: Ty(*mut dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:35:12: 35:25, inferred_ty: *mut dyn std::marker::Send
32+
| 28: user_ty: Canonical { value: Ty(*mut [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:36:12: 36:22, inferred_ty: *mut [i32]
33+
| 29: user_ty: Canonical { value: Ty(*mut [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:36:12: 36:22, inferred_ty: *mut [i32]
3434
|
3535
fn address_of_reborrow() -> () {
3636
let mut _0: (); // return place in scope 0 at $DIR/address_of.rs:+0:26: +0:26

tests/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// MIR for `main` after SimplifyCfg-initial
22

33
| User Type Annotations
4-
| 0: user_ty: Canonical { max_universe: U0, variables: [], value: Ty(std::option::Option<std::boxed::Box<u32>>) }, span: $DIR/basic_assignment.rs:20:17: 20:33, inferred_ty: std::option::Option<std::boxed::Box<u32>>
5-
| 1: user_ty: Canonical { max_universe: U0, variables: [], value: Ty(std::option::Option<std::boxed::Box<u32>>) }, span: $DIR/basic_assignment.rs:20:17: 20:33, inferred_ty: std::option::Option<std::boxed::Box<u32>>
4+
| 0: user_ty: Canonical { value: Ty(std::option::Option<std::boxed::Box<u32>>), max_universe: U0, variables: [] }, span: $DIR/basic_assignment.rs:20:17: 20:33, inferred_ty: std::option::Option<std::boxed::Box<u32>>
5+
| 1: user_ty: Canonical { value: Ty(std::option::Option<std::boxed::Box<u32>>), max_universe: U0, variables: [] }, span: $DIR/basic_assignment.rs:20:17: 20:33, inferred_ty: std::option::Option<std::boxed::Box<u32>>
66
|
77
fn main() -> () {
88
let mut _0: (); // return place in scope 0 at $DIR/basic_assignment.rs:+0:11: +0:11

0 commit comments

Comments
 (0)