Skip to content

Commit 70dfcf9

Browse files
authored
Add Flambda2 case to Cmx_format export info type (#94)
1 parent 3172da3 commit 70dfcf9

File tree

6 files changed

+21
-14
lines changed

6 files changed

+21
-14
lines changed

backend/asmlibrarian.ml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ exception Error of error
2727

2828
let default_ui_export_info =
2929
if Config.flambda then
30-
Cmx_format.Flambda Export_info.empty
30+
Cmx_format.Flambda1 Export_info.empty
31+
else if Config.flambda2 then
32+
Cmx_format.Flambda2 None
3133
else
3234
Cmx_format.Clambda Clambda.Value_unknown
3335

backend/asmpackager.ml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,13 +153,13 @@ let make_package_object ~ppf_dump members targetobj targetname coercion
153153
let get_export_info ui =
154154
assert(Config.flambda);
155155
match ui.ui_export_info with
156-
| Clambda _ -> assert false
157-
| Flambda info -> info
156+
| Clambda _ | Flambda2 _ -> assert false
157+
| Flambda1 info -> info
158158

159159
let get_approx ui =
160160
assert(not Config.flambda);
161161
match ui.ui_export_info with
162-
| Flambda _ -> assert false
162+
| Flambda1 _ | Flambda2 _ -> assert false
163163
| Clambda info -> info
164164

165165
let build_package_cmx members cmxfile =
@@ -189,7 +189,7 @@ let build_package_cmx members cmxfile =
189189
List.map (fun info ->
190190
{ info with
191191
ui_export_info =
192-
Flambda
192+
Flambda1
193193
(Export_info_for_pack.import_for_pack ~pack_units
194194
~pack:(Compilenv.current_unit ())
195195
(get_export_info info)) })
@@ -208,7 +208,7 @@ let build_package_cmx members cmxfile =
208208
(get_export_info ui))
209209
units
210210
in
211-
Flambda ui_export_info
211+
Flambda1 ui_export_info
212212
else
213213
Clambda (get_approx ui)
214214
in

dune

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@
108108
; The driver should be in here too, but is not at present. This might
109109
; be tricky because it has a different name...
110110
)
111-
(libraries ocamlcommon stdlib))
111+
(libraries ocamlcommon stdlib flambda2))
112112

113113
(executable
114114
(name flambda_backend_main)

file_formats/cmx_format.mli

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ open Misc
3333

3434
type export_info =
3535
| Clambda of Clambda.value_approximation
36-
| Flambda of Export_info.t
36+
| Flambda1 of Export_info.t
37+
| Flambda2 of Flambda2.Flambda_cmx_format.t option
3738

3839
type unit_infos =
3940
{ mutable ui_name: modname; (* Name of unit implemented *)

middle_end/compilenv.ml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,9 @@ let merged_environment = ref Export_info.empty
7272

7373
let default_ui_export_info =
7474
if Config.flambda then
75-
Cmx_format.Flambda Export_info.empty
75+
Cmx_format.Flambda1 Export_info.empty
76+
else if Config.flambda2 then
77+
Cmx_format.Flambda2 None
7678
else
7779
Cmx_format.Clambda Value_unknown
7880

@@ -223,7 +225,7 @@ let cache_unit_info ui =
223225
let get_clambda_approx ui =
224226
assert(not Config.flambda);
225227
match ui.ui_export_info with
226-
| Flambda _ -> assert false
228+
| Flambda1 _ | Flambda2 _ -> assert false
227229
| Clambda approx -> approx
228230

229231
let toplevel_approx :
@@ -287,12 +289,12 @@ let set_global_approx approx =
287289
let get_flambda_export_info ui =
288290
assert(Config.flambda);
289291
match ui.ui_export_info with
290-
| Clambda _ -> assert false
291-
| Flambda ei -> ei
292+
| Clambda _ | Flambda2 _ -> assert false
293+
| Flambda1 ei -> ei
292294

293295
let set_export_info export_info =
294296
assert(Config.flambda);
295-
current_unit.ui_export_info <- Flambda export_info
297+
current_unit.ui_export_info <- Flambda1 export_info
296298

297299
let approx_for_global comp_unit =
298300
let id = Compilation_unit.get_persistent_ident comp_unit in

tools/objinfo.ml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ let print_cmx_infos (ui, crc) =
145145
Format.fprintf Format.std_formatter " %a@." Printclambda.approx approx
146146
end else
147147
Format.printf "Clambda unit@.";
148-
| Flambda export ->
148+
| Flambda1 export ->
149149
if not !no_approx || not !no_code then
150150
printf "Flambda export information:\n"
151151
else
@@ -167,6 +167,8 @@ let print_cmx_infos (ui, crc) =
167167
if not !no_code then
168168
Format.printf "functions@ %a@.@."
169169
Export_info.print_functions export
170+
| Flambda2 _ ->
171+
failwith "Flambda2 objinfo support not yet merged"
170172
end;
171173
let pr_funs _ fns =
172174
List.iter (fun arity -> printf " %d" arity) fns in

0 commit comments

Comments
 (0)