method private do_assign lv =
    let loc =
      !Value.lval_to_loc ~with_alarms:CilE.warn_none_mode
        self#current_kinstr
        lv
    in
    if not (Location_Bits.equal loc.loc Location_Bits.bottom)
    then
      begin
        if Location_Bits.equal
          loc.loc
          Location_Bits.top
        then
          Inout_parameters.debug ~current:true
            "Problem with %a@\nValue at this point:@\n%a"
            !Ast_printer.d_lval lv
            Value.pretty_state (Value.get_state self#current_kinstr) ;
        let bits_loc = valid_enumerate_bits ~for_writing:true loc in
        self#join bits_loc
      end