diff options
Diffstat (limited to 'src/tools/optimization-options.h')
-rw-r--r-- | src/tools/optimization-options.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/tools/optimization-options.h b/src/tools/optimization-options.h index 6af247924..7f769463c 100644 --- a/src/tools/optimization-options.h +++ b/src/tools/optimization-options.h @@ -123,6 +123,41 @@ struct OptimizationOptions : public ToolOptions { [this](Options* o, const std::string& argument) { passOptions.shrinkLevel = atoi(argument.c_str()); }) + .add("--always-inline-max-function-size", + "-aimfs", + "Max size of functions that are always inlined (default " + + std::to_string(InliningOptions().alwaysInlineMaxSize) + + ", which " + "is safe for use with -Os builds)", + Options::Arguments::One, + [this](Options* o, const std::string& argument) { + passOptions.inlining.alwaysInlineMaxSize = + static_cast<Index>(atoi(argument.c_str())); + }) + .add("--flexible-inline-max-function-size", + "-fimfs", + "Max size of functions that are inlined when lightweight (no loops " + "or function calls) when optimizing aggressively for speed (-O3). " + "Default: " + + std::to_string(InliningOptions().flexibleInlineMaxSize), + Options::Arguments::One, + [this](Options* o, const std::string& argument) { + passOptions.inlining.flexibleInlineMaxSize = + static_cast<Index>(atoi(argument.c_str())); + }) + .add("--one-caller-inline-max-function-size", + "-ocimfs", + "Max size of functions that are inlined when there is only one " + "caller (default " + + std::to_string(InliningOptions().oneCallerInlineMaxSize) + + "). Reason this is not unbounded is that some " + "implementations may have a hard time optimizing really large " + "functions", + Options::Arguments::One, + [this](Options* o, const std::string& argument) { + passOptions.inlining.oneCallerInlineMaxSize = + static_cast<Index>(atoi(argument.c_str())); + }) .add("--ignore-implicit-traps", "-iit", "Optimize under the helpful assumption that no surprising traps " |