fn emit_mir_lvalue_uninterned(
        &mut self,
        mir: &mir::Lvalue<'gcx>,
    ) -> Result<(HybridValue, Option<HybridValue>)> {
        self.mlir_builder.set_loc(span_to_loc(self.mcx, mir.span));
        let result = self.emit_mir_lvalue_inner(mir);
        match result {
            Ok((sig, var)) => {
                let llty_exp1 = llhd::signal_ty(self.emit_type(mir.ty)?);
                let llty_exp2 = llhd::pointer_ty(self.emit_type(mir.ty)?);
                let llty_act = self.llhd_type(sig.0);
                assert_span!(
                    llty_exp1 == llty_act || llty_exp2 == llty_act,
                    mir.span,
                    self.cx,
                    "codegen for MIR lvalue `{}` should produce `{}` or `{}`, but got `{}`",
                    mir.span.extract(),
                    llty_exp1,
                    llty_exp2,
                    llty_act
                );
                if let Some(var) = var {
                    let llty_exp = llhd::pointer_ty(self.emit_type(mir.ty)?);
                    let llty_act = self.llhd_type(var.0);
                    assert_span!(
                        llty_exp == llty_act,
                        mir.span,
                        self.cx,
                        "codegen for MIR lvalue `{}` should produce `{}`, but got `{}`",
                        mir.span.extract(),
                        llty_exp,
                        llty_act
                    );
                }
            }
            Err(()) => (),
        }
        result
    }
/// Emit the code for an MIR lvalue.
///
/// The first returned value is the actually targeted lvalue. The second is
/// a potential shadow variable that must be kept up-to-date.
Emit the code for an MIR lvalue.
The first returned value is the actually targeted lvalue. The second is
a potential shadow variable that must be kept up-to-date.
Emit the code for an MIR lvalue . The first returned value is the actually targeted lvalue . The second is a potential shadow variable that must be kept up - to - date .
fn emit_mir_lvalue_uninterned(
        &mut self,
        mir: &mir::Lvalue<'gcx>,
    ) -> Result<(HybridValue, Option<HybridValue>)> {
        self.mlir_builder.set_loc(span_to_loc(self.mcx, mir.span));
        let result = self.emit_mir_lvalue_inner(mir);
        match result {
            Ok((sig, var)) => {
                let llty_exp1 = llhd::signal_ty(self.emit_type(mir.ty)?);
                let llty_exp2 = llhd::pointer_ty(self.emit_type(mir.ty)?);
                let llty_act = self.llhd_type(sig.0);
                assert_span!(
                    llty_exp1 == llty_act || llty_exp2 == llty_act,
                    mir.span,
                    self.cx,
                    "codegen for MIR lvalue `{}` should produce `{}` or `{}`, but got `{}`",
                    mir.span.extract(),
                    llty_exp1,
                    llty_exp2,
                    llty_act
                );
                if let Some(var) = var {
                    let llty_exp = llhd::pointer_ty(self.emit_type(mir.ty)?);
                    let llty_act = self.llhd_type(var.0);
                    assert_span!(
                        llty_exp == llty_act,
                        mir.span,
                        self.cx,
                        "codegen for MIR lvalue `{}` should produce `{}`, but got `{}`",
                        mir.span.extract(),
                        llty_exp,
                        llty_act
                    );
                }
            }
            Err(()) => (),
        }
        result
    }
fn emit_mir_lvalue_uninterned ( & mut self , mir : & mir :: Lvalue < ' gcx > , ) -> Result < ( HybridValue , Option < HybridValue > ) > { self . mlir_builder . set_loc ( span_to_loc ( self . mcx , mir . span ) ) ; let result = self . emit_mir_lvalue_inner ( mir ) ; match result { Ok ( ( sig , var ) ) => { let llty_exp1 = llhd :: signal_ty ( self . emit_type ( mir . ty ) ? ) ; let llty_exp2 = llhd :: pointer_ty ( self . emit_type ( mir . ty ) ? ) ; let llty_act = self . llhd_type ( sig . 0 ) ; assert_span ! ( llty_exp1 llty_act llty_exp2 llty_act mir span self cx " " mir span extract ( ) llty_exp1 llty_exp2 llty_act ) ; if let Some ( var ) = var { let llty_exp = llhd :: pointer_ty ( self . emit_type ( mir . ty ) ? ) ; let llty_act = self . llhd_type ( var . 0 ) ; assert_span ! ( llty_exp llty_act mir span self cx " " mir span extract ( ) llty_exp llty_act ) ; } } Err ( ( ) ) => ( ) , } result }
Emit the code for an MIR lvalue.
Emit the code for an MIR lvalue .
&mut self
mir
&mir::Lvalue<'gcx>
&mut self
mir
&mir::Lvalue<'gcx>