From 3bb0c75456a0dcab079e7614c3bbd3ba971e4519 Mon Sep 17 00:00:00 2001 From: Bernhard Schommer Date: Thu, 7 Dec 2017 12:14:08 +0100 Subject: Inlining of static functions which are only called once. (#37) New inlining heuristic for static functions. Static functions that are only called once can always be inlined, since they can be removed safely after inlining and no call prologue, epilogue, as well as register saving and needs to be generated. --- driver/Driver.ml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'driver/Driver.ml') diff --git a/driver/Driver.ml b/driver/Driver.ml index 124bc587..0e01dbb5 100644 --- a/driver/Driver.ml +++ b/driver/Driver.ml @@ -268,6 +268,8 @@ Processing options: -fcse Perform common subexpression elimination [on] -fredundancy Perform redundancy elimination [on] -finline Perform inlining of functions [on] + -finline-functions-called-once Integrate functions only required by their + single caller [on] Code generation options: (use -fno- to turn off -f) -ffpu Use FP registers for some integer operations [on] -fsmall-data Set maximal size for allocation in small data area @@ -337,7 +339,7 @@ let language_support_options = [ ] let optimization_options = [ - option_ftailcalls; option_fconstprop; option_fcse; option_fredundancy + option_ftailcalls; option_fconstprop; option_fcse; option_fredundancy; option_finline_functions_called_once; ] let set_all opts () = List.iter (fun r -> r := true) opts @@ -458,6 +460,7 @@ let cmdline_actions = @ f_opt "cse" option_fcse @ f_opt "redundancy" option_fredundancy @ f_opt "inline" option_finline + @ f_opt "inline-functions-called-once" option_finline_functions_called_once (* Code generation options *) @ f_opt "fpu" option_ffpu @ f_opt "sse" option_ffpu (* backward compatibility *) -- cgit