@@ -220,17 +220,19 @@ impl<'a, 'tcx, V: CodegenObject> OperandRef<'tcx, V> {
220
220
_ => bug ! ( "OperandRef::extract_field({:?}): not applicable" , self ) ,
221
221
} ;
222
222
223
- match ( & mut val, & self . layout . abi ) {
223
+ match ( & mut val, & field . abi ) {
224
224
( OperandValue :: Immediate ( llval) , _) => {
225
225
// Bools in union fields needs to be truncated.
226
226
* llval = bx. to_immediate ( * llval, field) ;
227
227
// HACK(eddyb) have to bitcast pointers until LLVM removes pointee types.
228
228
* llval = bx. bitcast ( * llval, bx. cx ( ) . immediate_backend_type ( field) ) ;
229
229
}
230
230
( OperandValue :: Pair ( a, b) , Abi :: ScalarPair ( a_abi, b_abi) ) => {
231
+ // Bools in union fields needs to be truncated.
231
232
* a = bx. to_immediate_scalar ( * a, a_abi) ;
232
- * a = bx. bitcast ( * a, bx. cx ( ) . scalar_pair_element_backend_type ( field, 0 , true ) ) ;
233
233
* 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 ) ) ;
234
236
* b = bx. bitcast ( * b, bx. cx ( ) . scalar_pair_element_backend_type ( field, 1 , true ) ) ;
235
237
}
236
238
( OperandValue :: Pair ( ..) , _) => bug ! ( ) ,
0 commit comments