@@ -1160,6 +1160,24 @@ let mk_flambda2_inline_threshold f =
11601160 \ more aggressive) (Flambda 2 only)"
11611161 Clflags.Flambda2.Inlining.Default. threshold
11621162
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+
11631181let mk_flambda2_treat_invalid_code_as_unreachable f =
11641182 " -flambda2-treat-invalid-code-as-unreachable" , Arg. Unit f,
11651183 Printf. sprintf " Treat code deemed as\n \
@@ -1452,6 +1470,8 @@ module type Optcommon_options = sig
14521470 val _flambda2_inline_small_function_size : string -> unit
14531471 val _flambda2_inline_large_function_size : string -> unit
14541472 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
14551475
14561476 val _flambda2_inlining_report_bin : unit -> unit
14571477
@@ -1850,6 +1870,10 @@ struct
18501870 mk_flambda2_inline_large_function_size
18511871 F. _flambda2_inline_large_function_size;
18521872 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;
18531877
18541878 mk_flambda2_inlining_report_bin F. _flambda2_inlining_report_bin;
18551879
@@ -2035,6 +2059,10 @@ module Make_opttop_options (F : Opttop_options) = struct
20352059 mk_flambda2_inline_large_function_size
20362060 F. _flambda2_inline_large_function_size;
20372061 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;
20382066
20392067 mk_flambda2_inlining_report_bin F. _flambda2_inlining_report_bin;
20402068
@@ -2425,6 +2453,12 @@ module Default = struct
24252453 " Syntax: -flambda2-inline-threshold <float> | <round>=<float>[,...]"
24262454 Flambda2.Inlining. threshold
24272455
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+
24282462 let _flambda2_inlining_report_bin = set Flambda2.Inlining. report_bin
24292463
24302464 let _flambda2_unicode = set Flambda2. unicode
0 commit comments