Skip to content

Commit 1663bfb

Browse files
committed
Fix matching on field.abi instead of self.layout.abi
1 parent 81650f4 commit 1663bfb

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/librustc_codegen_ssa/mir/operand.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -220,17 +220,19 @@ impl<'a, 'tcx, V: CodegenObject> OperandRef<'tcx, V> {
220220
_ => bug!("OperandRef::extract_field({:?}): not applicable", self),
221221
};
222222

223-
match (&mut val, &self.layout.abi) {
223+
match (&mut val, &field.abi) {
224224
(OperandValue::Immediate(llval), _) => {
225225
// Bools in union fields needs to be truncated.
226226
*llval = bx.to_immediate(*llval, field);
227227
// HACK(eddyb) have to bitcast pointers until LLVM removes pointee types.
228228
*llval = bx.bitcast(*llval, bx.cx().immediate_backend_type(field));
229229
}
230230
(OperandValue::Pair(a, b), Abi::ScalarPair(a_abi, b_abi)) => {
231+
// Bools in union fields needs to be truncated.
231232
*a = bx.to_immediate_scalar(*a, a_abi);
232-
*a = bx.bitcast(*a, bx.cx().scalar_pair_element_backend_type(field, 0, true));
233233
*b = bx.to_immediate_scalar(*b, b_abi);
234+
// HACK(eddyb) have to bitcast pointers until LLVM removes pointee types.
235+
*a = bx.bitcast(*a, bx.cx().scalar_pair_element_backend_type(field, 0, true));
234236
*b = bx.bitcast(*b, bx.cx().scalar_pair_element_backend_type(field, 1, true));
235237
}
236238
(OperandValue::Pair(..), _) => bug!(),

0 commit comments

Comments
 (0)