let coerce_implicit_pointer (exp : expr) =
let ty = (type_of exp) in
match ty.ct_ty with
Tbuiltin _ | Tpointer _ | Tvoid -> exp
| Tfunction _ ->
make_expr_t (CTTexpAddress(exp)) (make_c_type (Tpointer ty)) ~orig:exp
| Tarray(ety,sz) ->
let ty = make_c_type (Tpointer ety) in
make_expr_t (CTTexpCoerce(ty,exp)) ty ~orig:exp
| Tstruct _ -> exp