From 64a80f81297fb20c4f952d4b36cd0ae5d5da8f1e Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Mon, 14 Oct 2019 11:17:45 +0200 Subject: Tackling struct passing by value for the future K1C ABI --- cparser/StructPassing.ml | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'cparser/StructPassing.ml') diff --git a/cparser/StructPassing.ml b/cparser/StructPassing.ml index 060a4848..7bd72808 100644 --- a/cparser/StructPassing.ml +++ b/cparser/StructPassing.ml @@ -68,6 +68,14 @@ let classify_param env ty = match !struct_passing_style with | SP_ref_callee -> Param_unchanged | SP_ref_caller -> Param_ref_caller + | SP_value32_ref_callee -> + (match sizeof env ty, alignof env ty with + | Some sz, Some al -> + if (sz <= 4) then + Param_flattened ((sz+3)/4, sz, al) (* FIXME - why (sz+3)/4 ? *) + else + Param_unchanged + | _, _ -> failwith "StructPassing.classify_param SP_split_args32_ref_callee") | SP_split_args -> match sizeof env ty, alignof env ty with | Some sz, Some al -> -- cgit