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