diff --git a/src/bin/jbc2mpl b/src/bin/jbc2mpl index 1c67ae4c8782f70e3038b05c199e3f5990cf6a12..c900233e4c401056354ad8d34cc85e00203fef5c 100755 Binary files a/src/bin/jbc2mpl and b/src/bin/jbc2mpl differ diff --git a/src/bin/maple b/src/bin/maple index 4e9a47076aa3cada9a1e7ab61728f7aa88fe7ebd..dc5fcf0077375e1884b0f1fbd7725d1efebf3711 100755 Binary files a/src/bin/maple and b/src/bin/maple differ diff --git a/src/maple_ir/include/option.h b/src/maple_ir/include/option.h index 1b8741e5ed099c0c9c6e2f6ba92d20e8b1ce3ef9..12998d24c484e809367ff3f35fca263551803488 100644 --- a/src/maple_ir/include/option.h +++ b/src/maple_ir/include/option.h @@ -73,6 +73,7 @@ class Options : public MapleDriverOptionBase { static bool useCrossModuleInline; static uint32 inlineSmallFunctionThreshold; static uint32 inlineHotFunctionThreshold; + static uint32 inlineRecursiveFunctionThreshold; static uint32 inlineModuleGrowth; static uint32 inlineColdFunctionThreshold; static uint32 profileHotCount; diff --git a/src/maple_ir/src/option.cpp b/src/maple_ir/src/option.cpp index 920110ad6472d9b74b7e13f3d4a9ad2d68b2f7c4..cc649367c9f5c0099868a40a48f2c44038173bfe 100644 --- a/src/maple_ir/src/option.cpp +++ b/src/maple_ir/src/option.cpp @@ -38,6 +38,7 @@ bool Options::useCrossModuleInline = true; // Enabled by default std::string Options::noInlineFuncList = ""; uint32 Options::inlineSmallFunctionThreshold = 15; uint32 Options::inlineHotFunctionThreshold = 30; +uint32 Options::inlineRecursiveFunctionThreshold = 15; uint32 Options::inlineModuleGrowth = 10; uint32 Options::inlineColdFunctionThreshold = 3; uint32 Options::profileHotCount = 1000; @@ -89,6 +90,7 @@ enum OptionIndex { kMpl2MplUseCrossModuleInline, kInlineSmallFunctionThreshold, kInlineHotFunctionThreshold, + kInlineRecursiveFunctionThreshold, kInlineModuleGrowth, kInlineColdFunctionThreshold, kProfileHotCount, @@ -242,6 +244,15 @@ const Descriptor kUsage[] = { " --inline-hot-function-threshold=30 \tThreshold for inlining hot function\n", "mpl2mpl", {} }, + { kInlineRecursiveFunctionThreshold, + 0, + nullptr, + "inline-recursive-function-threshold", + kBuildTypeExperimental, + kArgCheckPolicyRequired, + " --inline-recursive-function-threshold=15 \tThreshold for inlining recursive function\n", + "mpl2mpl", + {} }, { kInlineModuleGrowth, 0, nullptr, @@ -552,6 +563,14 @@ bool Options::SolveOptions(const std::vector