fn codegen_atomic_load(
        &mut self,
        intrinsic: &str,
        mut fargs: Vec<Expr>,
        p: &Place<'tcx>,
        loc: Location,
    ) -> Stmt {
        emit_concurrency_warning!(intrinsic, loc);
        let var1_ref = fargs.remove(0);
        let var1 = var1_ref.dereference().with_location(loc.clone());
        let res_stmt = self.codegen_expr_to_place(p, var1);
        Stmt::atomic_block(vec![res_stmt], loc)
    }
/// An atomic load simply returns the value referenced
/// in its argument (as in other atomic operations)
/// -------------------------
/// var = atomic_load(var1)
/// -------------------------
/// var = *var1;
/// -------------------------
An atomic load simply returns the value referenced
in its argument (as in other atomic operations)




An atomic load simply returns the value referenced in its argument ( as in other atomic operations )
fn codegen_atomic_load(
        &mut self,
        intrinsic: &str,
        mut fargs: Vec<Expr>,
        p: &Place<'tcx>,
        loc: Location,
    ) -> Stmt {
        emit_concurrency_warning!(intrinsic, loc);
        let var1_ref = fargs.remove(0);
        let var1 = var1_ref.dereference().with_location(loc.clone());
        let res_stmt = self.codegen_expr_to_place(p, var1);
        Stmt::atomic_block(vec![res_stmt], loc)
    }
fn codegen_atomic_load ( & mut self , intrinsic : & str , mut fargs : Vec < Expr > , p : & Place < ' tcx > , loc : Location , ) -> Stmt { emit_concurrency_warning ! ( intrinsic loc ) ; let var1_ref = fargs . remove ( 0 ) ; let var1 = var1_ref . dereference ( ) . with_location ( loc . clone ( ) ) ; let res_stmt = self . codegen_expr_to_place ( p , var1 ) ; Stmt :: atomic_block ( vec ! [ res_stmt ] , loc ) }
An atomic load simply returns the value referenced
in its argument (as in other atomic operations)
An atomic load simply returns the value referenced in its argument ( as in other atomic operations )
&mut self
intrinsic
&str
fargs
Vec<Expr>
p
&Place<'tcx>
loc
Location