Skip to content

Commit ebac049

Browse files
committed
Change the ordering of SetDiscriminant and field assignments produced by deaggregation
1 parent 40d3040 commit ebac049

File tree

1 file changed

+17
-23
lines changed

1 file changed

+17
-23
lines changed

compiler/rustc_const_eval/src/util/aggregate.rs

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -50,27 +50,21 @@ pub fn expand_aggregate<'tcx>(
5050
_ => None,
5151
};
5252

53-
operands
54-
.enumerate()
55-
.map(move |(i, (op, ty))| {
56-
let lhs_field = if let AggregateKind::Array(_) = kind {
57-
let offset = u64::try_from(i).unwrap();
58-
tcx.mk_place_elem(
59-
lhs,
60-
ProjectionElem::ConstantIndex {
61-
offset,
62-
min_length: offset + 1,
63-
from_end: false,
64-
},
65-
)
66-
} else {
67-
let field = Field::new(active_field_index.unwrap_or(i));
68-
tcx.mk_place_field(lhs, field, ty)
69-
};
70-
Statement {
71-
source_info,
72-
kind: StatementKind::Assign(Box::new((lhs_field, Rvalue::Use(op)))),
73-
}
74-
})
75-
.chain(set_discriminant)
53+
let op_iter = operands.enumerate().map(move |(i, (op, ty))| {
54+
let lhs_field = if let AggregateKind::Array(_) = kind {
55+
let offset = u64::try_from(i).unwrap();
56+
tcx.mk_place_elem(
57+
lhs,
58+
ProjectionElem::ConstantIndex { offset, min_length: offset + 1, from_end: false },
59+
)
60+
} else {
61+
let field = Field::new(active_field_index.unwrap_or(i));
62+
tcx.mk_place_field(lhs, field, ty)
63+
};
64+
Statement {
65+
source_info,
66+
kind: StatementKind::Assign(Box::new((lhs_field, Rvalue::Use(op)))),
67+
}
68+
});
69+
set_discriminant.into_iter().chain(op_iter)
7670
}

0 commit comments

Comments
 (0)