let change_loc_status values state loc status =
(*      log "change_loc_status: %a with %a@."
              Locations.pretty loc pretty_status status;*)

      (match loc.loc with
       | Location_Bits.Top _ -> Options.warning "analysis degenerated"
       | _ -> ());
      match status with
      | Status s ->
          let s = L.inject s (status_of_deps values state) in
          { state with map = M.add_binding state.map loc s }
      | Location l ->
          let conv s =
            let deps = S.join (status_of_deps values state) (L.snd s) in
            L.inject (L.fst s) deps
          in
          (try
             let f (b, s) = b, conv s in
             { state with map = M.copy_paste ~f l loc state.map }
           with Lmap_bitwise.Bitwise_cannot_copy ->
             let s = find_loc_status state l in
             { state with map = M.add_binding state.map loc (conv s) })