@@ -645,11 +645,18 @@ let compile_spec
645645 filename
646646 (sigma : CF.GenTypes.genTypeCategory A.sigma )
647647 (prog5 : unit Mucore.file )
648+ (is_static : bool )
648649 (sym : Sym.t )
649650 (at : 'a AT.t )
650651 : A. sigma_declaration * CF.GenTypes. genTypeCategory A. sigma_function_definition
651652 =
652- let fsym = pred_sym sym in
653+ let fsym =
654+ pred_sym
655+ (if is_static then
656+ Sym. fresh (Fulminate.Utils. static_prefix filename ^ " _" ^ Sym. pp_string sym)
657+ else
658+ sym)
659+ in
653660 let args =
654661 match List. assoc Sym. equal sym sigma.declarations with
655662 | _ , _ , Decl_function (_ , _ , args , _ , _ , _ ) ->
@@ -833,7 +840,7 @@ let synthesize
833840 filename
834841 (sigma : CF.GenTypes.genTypeCategory A.sigma )
835842 (prog5 : unit Mucore.file )
836- (insts : Fulminate.Extract.instrumentation list )
843+ (insts : (bool * Fulminate.Extract.instrumentation) list )
837844 : (A. sigma_declaration * CF.GenTypes. genTypeCategory A. sigma_function_definition ) list
838845 =
839846 (* Per type *)
@@ -848,6 +855,7 @@ let synthesize
848855 let module SctypesSet = Set. Make (Sctypes ) in
849856 let arg_types =
850857 insts
858+ |> List. map snd
851859 |> List. filter (fun (inst : Fulminate.Extract.instrumentation ) ->
852860 Option. is_some inst.internal)
853861 |> List. filter_map (fun (inst : Fulminate.Extract.instrumentation ) ->
@@ -905,7 +913,10 @@ let synthesize
905913 (* Per specification *)
906914 let spec_replicators =
907915 insts
908- |> List. filter_map (fun (inst : Fulminate.Extract.instrumentation ) ->
909- Option. map (fun lat -> compile_spec filename sigma prog5 inst.fn lat) inst.internal)
916+ |> List. filter_map
917+ (fun ((is_static , inst ) : bool * Fulminate.Extract. instrumentation ) ->
918+ Option. map
919+ (fun lat -> compile_spec filename sigma prog5 is_static inst.fn lat)
920+ inst.internal)
910921 in
911922 type_replicators @ pred_replicators @ spec_replicators
0 commit comments