From d78b64bf20a0f0141d087c8f7d34f69ec4271156 Mon Sep 17 00:00:00 2001 From: Fred Chow Date: Tue, 11 Jan 2022 18:55:00 -0800 Subject: [PATCH] Added --ivoptslimit= option to help to debug ivopts phase --- src/mapleall/maple_me/include/me_option.h | 1 + src/mapleall/maple_me/src/me_ivopts.cpp | 3 +++ src/mapleall/maple_me/src/me_option.cpp | 17 ++++++++++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/mapleall/maple_me/include/me_option.h b/src/mapleall/maple_me/include/me_option.h index 4399cec307..174a592eb6 100644 --- a/src/mapleall/maple_me/include/me_option.h +++ b/src/mapleall/maple_me/include/me_option.h @@ -174,6 +174,7 @@ class MeOption : public MapleDriverOptionBase { static uint32 sinkLimit; static uint32 sinkPULimit; static uint32 vecLoopLimit; + static uint32 ivoptsLimit; static bool loopVec; static bool seqVec; static uint8 rematLevel; diff --git a/src/mapleall/maple_me/src/me_ivopts.cpp b/src/mapleall/maple_me/src/me_ivopts.cpp index 8310b9003e..d448eb39ab 100644 --- a/src/mapleall/maple_me/src/me_ivopts.cpp +++ b/src/mapleall/maple_me/src/me_ivopts.cpp @@ -2362,6 +2362,9 @@ void IVOptimizer::Run() { CR *itCR = nullptr; TripCountType type = sa.ComputeTripCount(func, tripCount, conditionCRNode, itCR); data->iterNum = type == kConstCR ? tripCount : kDefaultEstimatedLoopIterNum; + if ((loops->GetMeLoops().size() - i) > MeOption::ivoptsLimit) { + break; + } ApplyOptimize(); } useInfo->InvalidUseInfo(); diff --git a/src/mapleall/maple_me/src/me_option.cpp b/src/mapleall/maple_me/src/me_option.cpp index 6f2003c0c7..56fefb5f53 100644 --- a/src/mapleall/maple_me/src/me_option.cpp +++ b/src/mapleall/maple_me/src/me_option.cpp @@ -59,6 +59,7 @@ uint32 MeOption::rename2pregLimit = UINT32_MAX; uint32 MeOption::propLimit = UINT32_MAX; uint32 MeOption::copyPropLimit = UINT32_MAX; uint32 MeOption::vecLoopLimit = UINT32_MAX; +uint32 MeOption::ivoptsLimit = UINT32_MAX; uint32 MeOption::profileBBHotRate = 10; uint32 MeOption::profileBBColdRate = 99; bool MeOption::noDelegateRC = false; @@ -256,6 +257,7 @@ enum OptionIndex { kRematLevel, kLayoutWithPredict, kvecLoops, + kIvoptsLimit, }; const Descriptor kUsage[] = { @@ -1228,7 +1230,17 @@ const Descriptor kUsage[] = { kBuildTypeExperimental, kArgCheckPolicyRequired, " --veclooplimit \tApply vectorize loops only up to NUM \n" - " \t--copyproplimit=NUM\n", + " \t--veclooplimit=NUM\n", + "me", + {} }, + { kIvoptsLimit, + 0, + "", + "ivoptslimit", + kBuildTypeExperimental, + kArgCheckPolicyRequired, + " --ivoptslimit \tApply ivopts only up to NUM loops \n" + " \t--ivoptslimit=NUM\n", "me", {} }, #if MIR_JAVA @@ -1720,6 +1732,9 @@ bool MeOption::SolveOptions(const std::deque &opts, bool is case kvecLoops: vecLoopLimit = std::stoul(opt.Args(), nullptr); break; + case kIvoptsLimit: + ivoptsLimit = std::stoul(opt.Args(), nullptr); + break; #if MIR_JAVA case kMeAcquireFunc: acquireFuncName = opt.Args(); -- Gitee