/// If this operand is a pair in an Immediate,
/// we return a Pair with the two halves.
If this operand is a pair in an Immediate,
we return a Pair with the two halves.
If this operand is a pair in an Immediate we return a Pair with the two halves .
pub fn unpack_if_pair(mut self, bcx: &BlockAndBuilder<'bcx, 'tcx>)
                          -> OperandRef<'tcx> {
        if let OperandValue::Immediate(llval) = self.val {
            // Deconstruct the immediate aggregate.
            if common::type_is_imm_pair(bcx.ccx(), self.ty) {
                debug!("Operand::unpack_if_pair: unpacking {:?}", self);
                let mut a = bcx.extract_value(llval, 0);
                let mut b = bcx.extract_value(llval, 1);
                let pair_fields = common::type_pair_fields(bcx.ccx(), self.ty);
                if let Some([a_ty, b_ty]) = pair_fields {
                    if a_ty.is_bool() {
                        a = bcx.trunc(a, Type::i1(bcx.ccx()));
                    }
                    if b_ty.is_bool() {
                        b = bcx.trunc(b, Type::i1(bcx.ccx()));
                    }
                }
                self.val = OperandValue::Pair(a, b);
            }
        }
        self
    }
pub fn unpack_if_pair ( mut self , bcx : & BlockAndBuilder < ' bcx , ' tcx > ) -> OperandRef < ' tcx > { if let OperandValue :: Immediate ( llval ) = self . val { // Deconstruct the immediate aggregate. if common :: type_is_imm_pair ( bcx . ccx ( ) , self . ty ) { debug ! ( " " self ) ; let mut a = bcx . extract_value ( llval , 0 ) ; let mut b = bcx . extract_value ( llval , 1 ) ; let pair_fields = common :: type_pair_fields ( bcx . ccx ( ) , self . ty ) ; if let Some ( [ a_ty , b_ty ] ) = pair_fields { if a_ty . is_bool ( ) { a = bcx . trunc ( a , Type :: i1 ( bcx . ccx ( ) ) ) ; } if b_ty . is_bool ( ) { b = bcx . trunc ( b , Type :: i1 ( bcx . ccx ( ) ) ) ; } } self . val = OperandValue :: Pair ( a , b ) ; } } self }
If this operand is a pair in an Immediate,
we return a Pair with the two halves.
If this operand is a pair in an Immediate we return a Pair with the two halves .
mut self
bcx
&BlockAndBuilder<'bcx, 'tcx>