method do_assign lv =
    let loc = !Value.lval_to_loc ~with_alarms:CilE.warn_none_mode current_stmt 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 current_stmt) ;
        let bits_loc = valid_enumerate_bits loc in
        self#join bits_loc
      end