let loc_of_data obj d =
    match d with
    | Value(M.V_pointer(_,l)) -> l
    | Value v -> M.loc_of_term obj (F.unwrap (M.logic_of_value v))
    | Data l -> M.loc_of_term obj (F.unwrap l)
    | Loc l ->  l
    | _ ->
        Wp_parameters.fatal ~current:true "not a loc (%a)" pp_data d