@@ -467,14 +467,18 @@ let add_stack_address_capability (offset: int) (tv: type_variable_t)
467467
468468let convert_function_capabilities_to_attributes
469469 (paramindex : int ) (caps : type_cap_label_t list ): b_attributes_t =
470- let type_arg_mode_to_attr_string (m : type_arg_mode_t ) =
470+ let type_arg_mode_to_cons_attrparam (m : type_arg_mode_t ) =
471+ let mkcons (s : string ) (i : int option ) =
472+ match i with
473+ | Some i -> ACons (s, [AInt i])
474+ | _ -> ACons (s, [] ) in
471475 match m with
472- | ArgDerefReadWrite _ -> " read_write"
473- | ArgDerefRead _ -> " read_only"
474- | ArgDerefWrite _ -> " write_only"
475- | ArgDeallocate -> " deallocate"
476- | ArgFunctionPointer -> " fp"
477- | ArgScalarValue -> " sv" in
476+ | ArgDerefReadWrite size -> mkcons " read_write" size
477+ | ArgDerefRead size -> mkcons " read_only" size
478+ | ArgDerefWrite size -> mkcons " write_only" size
479+ | ArgDeallocate -> ACons ( " deallocate" , [] )
480+ | ArgFunctionPointer -> ACons ( " fp" , [] )
481+ | ArgScalarValue -> ACons ( " sv" , [] ) in
478482 let result = new CHUtils.IntCollections. set_t in
479483 let _ =
480484 List. iter (fun cap ->
@@ -486,7 +490,7 @@ let convert_function_capabilities_to_attributes
486490 AStr callsite;
487491 AStr callee;
488492 AInt argindex;
489- AStr (type_arg_mode_to_attr_string mode) ]) in
493+ type_arg_mode_to_cons_attrparam mode]) in
490494 result#add (bcd#index_attribute attr)
491495 | _ -> () ) caps in
492496 List. map bcd#get_attribute result#toList
0 commit comments