@@ -180,7 +180,7 @@ let mk_inline_toplevel f =
180
180
181
181
let mk_inlining_report f =
182
182
" -inlining-report" , Arg. Unit f, " Emit `.<round>.inlining' file(s) (one per \
183
- round) showing the inliner's decisions"
183
+ round) showing the inliner's decisions (Flambda 1 and 2) "
184
184
;;
185
185
186
186
let mk_dump_pass f =
@@ -764,30 +764,30 @@ let mk_dclambda f =
764
764
;;
765
765
766
766
let mk_dflambda f =
767
- " -dflambda" , Arg. Unit f, " Print Flambda terms"
767
+ " -dflambda" , Arg. Unit f, " Print Flambda (1 or 2) terms on exit from Flambda "
768
768
;;
769
769
770
770
let mk_drawflambda f =
771
- " -drawflambda" , Arg. Unit f, " Print Flambda terms after closure conversion"
771
+ " -drawflambda" , Arg. Unit f, " Print Flambda terms after closure conversion\n \
772
+ \ (for Flambda 2, after [Lambda_to_flambda])"
772
773
;;
773
774
774
775
let mk_dflambda_invariants f =
775
- " -dflambda-invariants" , Arg. Unit f, " Check Flambda invariants \
776
- around each pass"
776
+ " -dflambda-invariants" , Arg. Unit f, " Check Flambda (1 and 2) invariants"
777
777
;;
778
778
779
779
let mk_dflambda_no_invariants f =
780
- " -dflambda-no-invariants" , Arg. Unit f, " Do not Check Flambda invariants \
781
- around each pass "
780
+ " -dflambda-no-invariants" , Arg. Unit f, " Do not check Flambda (1 and 2) \
781
+ invariants "
782
782
;;
783
783
784
784
let mk_dflambda_let f =
785
- " -dflambda-let" , Arg. Int f, " <stamp> Print when the given Flambda [Let] \
785
+ " -dflambda-let" , Arg. Int f, " <stamp> Print when the given Flambda 1 [Let] \
786
786
is created"
787
787
;;
788
788
789
789
let mk_dflambda_verbose f =
790
- " -dflambda-verbose" , Arg. Unit f, " Print Flambda terms including around \
790
+ " -dflambda-verbose" , Arg. Unit f, " Print Flambda 1 terms including around \
791
791
each pass"
792
792
;;
793
793
@@ -1151,6 +1151,52 @@ let mk_flambda2_inline_threshold f =
1151
1151
\ Aggressiveness of inlining (default %.02f, higher numbers mean\n \
1152
1152
\ more aggressive) (Flambda 2 only)"
1153
1153
Clflags.Flambda2.Inlining.Default. threshold
1154
+
1155
+ let mk_flambda2_treat_invalid_code_as_unreachable f =
1156
+ " -flambda2-treat-invalid-code-as-unreachable" , Arg. Unit f,
1157
+ Printf. sprintf " Treat code deemed as\n \
1158
+ \ invalid by the Flambda 2 type system as unreachable, thus causing\n \
1159
+ \ it (and potentially calling code) to be deleted%s\n \
1160
+ \ (Flambda 2 only)"
1161
+ (format_default Flambda2.Default. treat_invalid_code_as_unreachable)
1162
+ ;;
1163
+
1164
+ let mk_no_flambda2_treat_invalid_code_as_unreachable f =
1165
+ " -no-flambda2-treat-invalid-code-as-unreachable" , Arg. Unit f,
1166
+ Printf. sprintf " Do not treat code deemed as\n \
1167
+ \ invalid by the Flambda 2 type system as unreachable, instead\n \
1168
+ \ replacing it by a trap (which currently causes a segfault)%s\n \
1169
+ \ (Flambda 2 only)"
1170
+ (format_not_default Flambda2.Default. treat_invalid_code_as_unreachable)
1171
+ ;;
1172
+
1173
+ let mk_flambda2_inlining_report_bin f =
1174
+ " -flambda2-inlining-report-bin" , Arg. Unit f, " Write inlining report\n \
1175
+ \ in binary format (Flambda 2 only)"
1176
+ ;;
1177
+
1178
+ let mk_flambda2_unicode f =
1179
+ " -flambda2-unicode" , Arg. Unit f, " Use Unicode output when printing\n \
1180
+ \ Flambda 2 code"
1181
+ ;;
1182
+
1183
+ let mk_drawfexpr f =
1184
+ " -drawfexpr" , Arg. Unit f, " Like -drawflambda but outputs fexpr language\n \
1185
+ \ (Flambda 2 only)"
1186
+ ;;
1187
+
1188
+ let mk_dfexpr f =
1189
+ " -dfexpr" , Arg. Unit f, " Like -dflambda but outputs fexpr language\n \
1190
+ \ (Flambda 2 only)"
1191
+ ;;
1192
+
1193
+ let mk_dflexpect f =
1194
+ " -dflexpect" , Arg. Unit f, " Like -dflambda but outputs a .flt file\n \
1195
+ \ whose basename matches that of the input .ml file (Flambda 2 only)"
1196
+ ;;
1197
+
1198
+ let mk_dclosure_offsets f =
1199
+ " -dclosure-offsets" , Arg. Unit f, " Dump closure offsets (Flambda 2 only)"
1154
1200
;;
1155
1201
1156
1202
module type Common_options = sig
@@ -1392,6 +1438,18 @@ module type Optcommon_options = sig
1392
1438
val _flambda2_inline_small_function_size : string -> unit
1393
1439
val _flambda2_inline_large_function_size : string -> unit
1394
1440
val _flambda2_inline_threshold : string -> unit
1441
+
1442
+ val _flambda2_inlining_report_bin : unit -> unit
1443
+
1444
+ val _flambda2_unicode : unit -> unit
1445
+
1446
+ val _flambda2_treat_invalid_code_as_unreachable : unit -> unit
1447
+ val _no_flambda2_treat_invalid_code_as_unreachable : unit -> unit
1448
+
1449
+ val _drawfexpr : unit -> unit
1450
+ val _dfexpr : unit -> unit
1451
+ val _dflexpect : unit -> unit
1452
+ val _dclosure_offsets : unit -> unit
1395
1453
end ;;
1396
1454
1397
1455
module type Optcomp_options = sig
@@ -1778,6 +1836,15 @@ struct
1778
1836
F. _flambda2_inline_large_function_size;
1779
1837
mk_flambda2_inline_threshold F. _flambda2_inline_threshold;
1780
1838
1839
+ mk_flambda2_inlining_report_bin F. _flambda2_inlining_report_bin;
1840
+
1841
+ mk_flambda2_unicode F. _flambda2_unicode;
1842
+
1843
+ mk_flambda2_treat_invalid_code_as_unreachable
1844
+ F. _flambda2_treat_invalid_code_as_unreachable;
1845
+ mk_no_flambda2_treat_invalid_code_as_unreachable
1846
+ F. _no_flambda2_treat_invalid_code_as_unreachable;
1847
+
1781
1848
mk_match_context_rows F. _match_context_rows;
1782
1849
mk_dno_unique_ids F. _dno_unique_ids;
1783
1850
mk_dunique_ids F. _dunique_ids;
@@ -1796,6 +1863,10 @@ struct
1796
1863
mk_dflambda_no_invariants F. _dflambda_no_invariants;
1797
1864
mk_dflambda_let F. _dflambda_let;
1798
1865
mk_dflambda_verbose F. _dflambda_verbose;
1866
+ mk_drawfexpr F. _drawfexpr;
1867
+ mk_dfexpr F. _dfexpr;
1868
+ mk_dflexpect F. _dflexpect;
1869
+ mk_dclosure_offsets F. _dclosure_offsets;
1799
1870
mk_dcmm F. _dcmm;
1800
1871
mk_dsel F. _dsel;
1801
1872
mk_dcombine F. _dcombine;
@@ -1947,6 +2018,20 @@ module Make_opttop_options (F : Opttop_options) = struct
1947
2018
F. _flambda2_inline_large_function_size;
1948
2019
mk_flambda2_inline_threshold F. _flambda2_inline_threshold;
1949
2020
2021
+ mk_flambda2_inlining_report_bin F. _flambda2_inlining_report_bin;
2022
+
2023
+ mk_flambda2_unicode F. _flambda2_unicode;
2024
+
2025
+ mk_flambda2_treat_invalid_code_as_unreachable
2026
+ F. _flambda2_treat_invalid_code_as_unreachable;
2027
+ mk_no_flambda2_treat_invalid_code_as_unreachable
2028
+ F. _no_flambda2_treat_invalid_code_as_unreachable;
2029
+
2030
+ mk_drawfexpr F. _drawfexpr;
2031
+ mk_dfexpr F. _dfexpr;
2032
+ mk_dflexpect F. _dflexpect;
2033
+ mk_dclosure_offsets F. _dclosure_offsets;
2034
+
1950
2035
mk_dsource F. _dsource;
1951
2036
mk_dparsetree F. _dparsetree;
1952
2037
mk_dtypedtree F. _dtypedtree;
@@ -2323,6 +2408,20 @@ module Default = struct
2323
2408
Float_arg_helper. parse spec
2324
2409
" Syntax: -flambda2-inline-threshold <float> | <round>=<float>[,...]"
2325
2410
Flambda2.Inlining. threshold
2411
+
2412
+ let _flambda2_inlining_report_bin = set Flambda2.Inlining. report_bin
2413
+
2414
+ let _flambda2_unicode = set Flambda2. unicode
2415
+
2416
+ let _flambda2_treat_invalid_code_as_unreachable =
2417
+ set Flambda2. treat_invalid_code_as_unreachable
2418
+ let _no_flambda2_treat_invalid_code_as_unreachable =
2419
+ clear Flambda2. treat_invalid_code_as_unreachable
2420
+
2421
+ let _drawfexpr = set Flambda2.Dump. rawfexpr
2422
+ let _dfexpr = set Flambda2.Dump. fexpr
2423
+ let _dflexpect = set Flambda2.Dump. flexpect
2424
+ let _dclosure_offsets = set Flambda2.Dump. closure_offsets
2326
2425
end
2327
2426
2328
2427
module Compiler = struct
0 commit comments