diff --git a/src/backends/C/c_backend_header.ml b/src/backends/C/c_backend_header.ml index 002c58a2422e7ec169902b1d27ee38a638d14d0b..92134e63524be7c31198c4eed08dd667aa289e4e 100644 --- a/src/backends/C/c_backend_header.ml +++ b/src/backends/C/c_backend_header.ml @@ -307,7 +307,9 @@ struct let pp_alloc_header header_fmt basename machines dependencies = (* Include once: start *) - let machines' = List.filter (fun m -> not m.mis_contract) machines in + let machines' = List.filter (fun m -> + not m.mis_contract && not (fst (get_stateless_status m)) ) machines + in let baseNAME = file_to_module_name basename in let self_dep = { @@ -452,7 +454,7 @@ struct ~pp_prologue:(pp_print_endcut "/* Struct declarations */") pp_machine_struct_top_decl_from_header ~pp_epilogue:pp_print_cutcut) - nodes + (List.filter (fun td -> not (fst (get_stateless_status_top_decl td))) nodes) (* Print the prototypes of all machines *) (pp_print_list ~pp_open_box:pp_open_vbox0 @@ -464,7 +466,9 @@ struct let pp_memory_header header_fmt basename machines dependencies = (* Include once: start *) - let machines' = List.filter (fun m -> not m.mis_contract) machines in + let machines' = List.filter (fun m -> + not m.mis_contract && not (fst (get_stateless_status m)) ) machines + in let baseNAME = file_to_module_name basename in fprintf header_fmt @@ -501,6 +505,9 @@ struct pp ~pp_epilogue:pp_print_cutcut in + let machines' = List.filter (fun m -> not (fst (get_stateless_status m))) + machines + in fprintf header_fmt "@[<v>%a@,#ifndef _%s_SPEC@,#define _%s_SPEC@,@,%a@,%a#endif@]@." @@ -515,7 +522,7 @@ struct (pp_preds "/* Monolithic ghost `reset` functions */" (fun fmt m -> let mem = mk_mem m in Src.pp_ghost_reset_spec_code machines mem fmt m)) - machines + machines' end (* Local Variables: *) (* compile-command:"make -C ../../.." *) diff --git a/src/backends/C/c_backend_spec.ml b/src/backends/C/c_backend_spec.ml index 534426bc2f943ffbde7a9cfd3a902ce9f77fd429..d7f96b3e3f625aa80782c9432e5d74ccb9a983db 100644 --- a/src/backends/C/c_backend_spec.ml +++ b/src/backends/C/c_backend_spec.ml @@ -1075,23 +1075,26 @@ module HdrMod = struct pp ~pp_epilogue:pp_print_cutcut in + let machines' = List.filter (fun m -> not (fst (get_stateless_status m))) + machines + in fprintf fmt "%a%a%a%a%a%a%a" (pp_preds "/* ACSL `valid` predicates */" pp_mem_valid_def) - machines + machines' (pp_preds "/* ACSL ghost structures */" pp_machine_ghost_struct) - machines + machines' (pp_preds "/* ACSL initialization annotations */" pp_initialization_def) - machines + machines' (pp_preds "/* ACSL `memory pack` simulations */" pp_memory_pack_defs) - machines + machines' (pp_preds "/* ACSL transition annotations */" pp_transition_defs) machines (pp_preds "/* ACSL transition memory footprints lemmas */" pp_transition_footprint_lemmas) - machines + machines' (pp_preds "/* k-induction predicates and lemmas */" (fun fmt m -> let c, m_c = contract_of machines m in pp_print_option (pp_proof_annotation m m_c) fmt c))