@@ -1160,6 +1160,24 @@ let mk_flambda2_inline_threshold f =
1160
1160
\ more aggressive) (Flambda 2 only)"
1161
1161
Clflags.Flambda2.Inlining.Default. threshold
1162
1162
1163
+ let mk_flambda2_speculative_inlining_only_if_arguments_useful f =
1164
+ " -flambda2-speculative-inlining-only-if-arguments-useful" , Arg. Unit f,
1165
+ Printf. sprintf " Only\n \
1166
+ \ perform speculative inlining if the Flambda type system has\n \
1167
+ \ useful information about the argument(s) at the call site%s\n \
1168
+ \ (Flambda 2 only)"
1169
+ (format_default
1170
+ Flambda2.Inlining.Default. speculative_inlining_only_if_arguments_useful)
1171
+
1172
+ let mk_no_flambda2_speculative_inlining_only_if_arguments_useful f =
1173
+ " -no-flambda2-speculative-inlining-only-if-arguments-useful" , Arg. Unit f,
1174
+ Printf. sprintf " Ignore\n \
1175
+ \ whether the Flambda type system has useful information\n \
1176
+ \ about the argument(s) at the call site when performing\n \
1177
+ \ speculative inlining%s (Flambda 2 only)"
1178
+ (format_not_default
1179
+ Flambda2.Inlining.Default. speculative_inlining_only_if_arguments_useful)
1180
+
1163
1181
let mk_flambda2_treat_invalid_code_as_unreachable f =
1164
1182
" -flambda2-treat-invalid-code-as-unreachable" , Arg. Unit f,
1165
1183
Printf. sprintf " Treat code deemed as\n \
@@ -1452,6 +1470,8 @@ module type Optcommon_options = sig
1452
1470
val _flambda2_inline_small_function_size : string -> unit
1453
1471
val _flambda2_inline_large_function_size : string -> unit
1454
1472
val _flambda2_inline_threshold : string -> unit
1473
+ val _flambda2_speculative_inlining_only_if_arguments_useful : unit -> unit
1474
+ val _no_flambda2_speculative_inlining_only_if_arguments_useful : unit -> unit
1455
1475
1456
1476
val _flambda2_inlining_report_bin : unit -> unit
1457
1477
@@ -1850,6 +1870,10 @@ struct
1850
1870
mk_flambda2_inline_large_function_size
1851
1871
F. _flambda2_inline_large_function_size;
1852
1872
mk_flambda2_inline_threshold F. _flambda2_inline_threshold;
1873
+ mk_flambda2_speculative_inlining_only_if_arguments_useful
1874
+ F. _flambda2_speculative_inlining_only_if_arguments_useful;
1875
+ mk_no_flambda2_speculative_inlining_only_if_arguments_useful
1876
+ F. _no_flambda2_speculative_inlining_only_if_arguments_useful;
1853
1877
1854
1878
mk_flambda2_inlining_report_bin F. _flambda2_inlining_report_bin;
1855
1879
@@ -2035,6 +2059,10 @@ module Make_opttop_options (F : Opttop_options) = struct
2035
2059
mk_flambda2_inline_large_function_size
2036
2060
F. _flambda2_inline_large_function_size;
2037
2061
mk_flambda2_inline_threshold F. _flambda2_inline_threshold;
2062
+ mk_flambda2_speculative_inlining_only_if_arguments_useful
2063
+ F. _flambda2_speculative_inlining_only_if_arguments_useful;
2064
+ mk_no_flambda2_speculative_inlining_only_if_arguments_useful
2065
+ F. _no_flambda2_speculative_inlining_only_if_arguments_useful;
2038
2066
2039
2067
mk_flambda2_inlining_report_bin F. _flambda2_inlining_report_bin;
2040
2068
@@ -2425,6 +2453,12 @@ module Default = struct
2425
2453
" Syntax: -flambda2-inline-threshold <float> | <round>=<float>[,...]"
2426
2454
Flambda2.Inlining. threshold
2427
2455
2456
+ let _flambda2_speculative_inlining_only_if_arguments_useful =
2457
+ set Flambda2.Inlining. speculative_inlining_only_if_arguments_useful
2458
+
2459
+ let _no_flambda2_speculative_inlining_only_if_arguments_useful =
2460
+ clear Flambda2.Inlining. speculative_inlining_only_if_arguments_useful
2461
+
2428
2462
let _flambda2_inlining_report_bin = set Flambda2.Inlining. report_bin
2429
2463
2430
2464
let _flambda2_unicode = set Flambda2. unicode
0 commit comments