diff options
Diffstat (limited to 'src/jib/c_backend.ml')
| -rw-r--r-- | src/jib/c_backend.ml | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/jib/c_backend.ml b/src/jib/c_backend.ml index b2447125..2fe21d93 100644 --- a/src/jib/c_backend.ml +++ b/src/jib/c_backend.ml @@ -49,6 +49,7 @@ (**************************************************************************) open Ast +open Ast_defs open Ast_util open Jib open Jib_compile @@ -2195,10 +2196,10 @@ let sgen_finish = function Printf.sprintf " finish_%s();" (sgen_id id) | _ -> assert false -let rec get_recursive_functions (Defs defs) = +let rec get_recursive_functions defs = match defs with | DEF_internal_mutrec fundefs :: defs -> - IdSet.union (List.map id_of_fundef fundefs |> IdSet.of_list) (get_recursive_functions (Defs defs)) + IdSet.union (List.map id_of_fundef fundefs |> IdSet.of_list) (get_recursive_functions defs) | (DEF_fundef fdef as def) :: defs -> let open Rewriter in @@ -2215,11 +2216,11 @@ let rec get_recursive_functions (Defs defs) = let map_defs = { rewriters_base with rewrite_exp = (fun _ -> fold_exp map_exp) } in let _ = rewrite_def map_defs def in if IdSet.mem (id_of_fundef fdef) !ids then - IdSet.add (id_of_fundef fdef) (get_recursive_functions (Defs defs)) + IdSet.add (id_of_fundef fdef) (get_recursive_functions defs) else - get_recursive_functions (Defs defs) + get_recursive_functions defs - | _ :: defs -> get_recursive_functions (Defs defs) + | _ :: defs -> get_recursive_functions defs | [] -> IdSet.empty let jib_of_ast env ast = @@ -2229,7 +2230,7 @@ let jib_of_ast env ast = let compile_ast env output_chan c_includes ast = try - let recursive_functions = Spec_analysis.top_sort_defs ast |> get_recursive_functions in + let recursive_functions = (Spec_analysis.top_sort_defs ast).defs |> get_recursive_functions in let cdefs, ctx = jib_of_ast env ast in let cdefs', _ = Jib_optimize.remove_tuples cdefs ctx in |
