@@ -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