let data_cmp binop ka ga kb gb =
match ka,kb with
|( Kint | Kcint _) , (Kint| Kcint _) ->
int_cmp binop (integer_of_data ka ga) (integer_of_data kb gb)
| (Kreal|Kint| Kcint _) , (Kreal|Kint| Kcint _) ->
real_cmp binop (real_of_data ka ga) (real_of_data kb gb)
| Kptr ty , Kptr _ ->
let obj = object_of ty in
ptr_cmp binop (M.pointer_of_loc (loc_of_data obj ga))
(M.pointer_of_loc (loc_of_data obj gb))
| _ ->
Wp_error.not_yet_implemented
"boolean comparison between %a and %a"
pp_kind ka pp_kind kb