let mk_memory_ctype = function
  | TVoid _ -> abort "unsupported memory type" 
  | TInt (k, _) -> mk_memory_int_ctype k
  | TEnum _ -> mk_memory_type_var "Menum"
  | TFloat (k, _) -> mk_memory_float_ctype k
  | TPtr _ -> mk_memory_type_var "Mptr"
  | TArray _ -> abort "unsupported memory type"
  | TComp _ -> abort "unsupported memory type"
(* TODO find the size of this type *)
  | TBuiltin_va_list _ -> abort "unsupported memory type"
  | TFun _ -> abort "unsupported memory type"
  | TNamed _ -> abort "unsupported memory type"