From aa1a1580eee610d9b9e432e0ccbe96d14c3fb811 Mon Sep 17 00:00:00 2001 From: William Chen Date: Thu, 18 Nov 2021 15:53:54 -0800 Subject: [PATCH] Use option --ret-merge to combine all return bb into one destination. --- src/mapleall/maple_be/include/cg/cg_option.h | 13 +++++++++++++ src/mapleall/maple_be/src/cg/cg_option.cpp | 15 +++++++++++++++ src/mapleall/maple_be/src/cg/cgfunc.cpp | 2 +- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/mapleall/maple_be/include/cg/cg_option.h b/src/mapleall/maple_be/include/cg/cg_option.h index 10733c709f..4c9556941d 100644 --- a/src/mapleall/maple_be/include/cg/cg_option.h +++ b/src/mapleall/maple_be/include/cg/cg_option.h @@ -773,6 +773,18 @@ class CGOptions : public MapleDriverOptionBase { return doPeephole; } + static void EnableRetMerge() { + doRetMerge = true; + } + + static void DisableRetMerge() { + doRetMerge = false; + } + + static bool DoRetMerge() { + return doRetMerge; + } + static void EnablePreSchedule() { doPreSchedule = true; } @@ -1155,6 +1167,7 @@ class CGOptions : public MapleDriverOptionBase { static bool doMultiPassColorRA; static bool doPrePeephole; static bool doPeephole; + static bool doRetMerge; static bool doSchedule; static bool doAlignAnalysis; static bool doWriteRefFieldOpt; diff --git a/src/mapleall/maple_be/src/cg/cg_option.cpp b/src/mapleall/maple_be/src/cg/cg_option.cpp index 8679ba207a..9eb35c144d 100644 --- a/src/mapleall/maple_be/src/cg/cg_option.cpp +++ b/src/mapleall/maple_be/src/cg/cg_option.cpp @@ -70,6 +70,7 @@ bool CGOptions::doVregRename = false; bool CGOptions::doMultiPassColorRA = true; bool CGOptions::doPrePeephole = false; bool CGOptions::doPeephole = false; +bool CGOptions::doRetMerge = false; bool CGOptions::doSchedule = false; bool CGOptions::doWriteRefFieldOpt = false; bool CGOptions::dumpOptimizeCommonLog = false; @@ -126,6 +127,7 @@ enum OptionIndex : uint64 { kPeep, kPreSchedule, kSchedule, + kRetMerge, kVregRename, kMultiPassRA, kWriteRefFieldOpt, @@ -432,6 +434,16 @@ const Descriptor kUsage[] = { " --no-schedule\n", "mplcg", {} }, + { kRetMerge, + kEnable, + "", + "ret-merge", + kBuildTypeExperimental, + kArgCheckPolicyBool, + " --ret-merge \tMerge return bb into a single destination\n" + " --no-ret-merge \tallows for multiple return bb\n", + "mplcg", + {} }, { kVregRename, kEnable, "", @@ -1388,6 +1400,9 @@ bool CGOptions::SolveOptions(const std::vector