diff options
author | Maksim Panchenko <maks@fb.com> | 2021-12-01 13:57:50 -0800 |
---|---|---|
committer | Maksim Panchenko <maks@fb.com> | 2021-12-01 13:57:50 -0800 |
commit | cbf530bf417ef8ea119cd3acebefc9cbbab98a0b (patch) | |
tree | abad4f69e8134c78d4b98c4c6830c71c14a16984 /bolt/lib/Rewrite/BinaryPassManager.cpp | |
parent | fd71cc51639f28c51c9af709855139d42e250e30 (diff) | |
download | llvm-cbf530bf417ef8ea119cd3acebefc9cbbab98a0b.zip llvm-cbf530bf417ef8ea119cd3acebefc9cbbab98a0b.tar.gz llvm-cbf530bf417ef8ea119cd3acebefc9cbbab98a0b.tar.bz2 |
[BOLT] Add pass to normalize CFG
Summary:
Some optimizations may remove all instructions in a basic block.
The pass will cleanup the CFG afterwards by removing empty basic
blocks and merging duplicate CFG edges.
The normalized CFG is printed under '-print-normalized' option.
(cherry picked from FBD32774360)
Diffstat (limited to 'bolt/lib/Rewrite/BinaryPassManager.cpp')
-rw-r--r-- | bolt/lib/Rewrite/BinaryPassManager.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/bolt/lib/Rewrite/BinaryPassManager.cpp b/bolt/lib/Rewrite/BinaryPassManager.cpp index ab8a8d2..8a5d70d 100644 --- a/bolt/lib/Rewrite/BinaryPassManager.cpp +++ b/bolt/lib/Rewrite/BinaryPassManager.cpp @@ -148,6 +148,13 @@ PrintICP("print-icp", cl::cat(BoltOptCategory)); static cl::opt<bool> +PrintNormalized("print-normalized", + cl::desc("print functions after CFG is normalized"), + cl::ZeroOrMore, + cl::Hidden, + cl::cat(BoltCategory)); + +static cl::opt<bool> PrintRegReAssign("print-regreassign", cl::desc("print functions after regreassign pass"), cl::ZeroOrMore, @@ -409,6 +416,8 @@ void BinaryFunctionPassManager::runAllPasses(BinaryContext &BC) { Manager.registerPass(std::make_unique<ValidateInternalCalls>(NeverPrint)); + Manager.registerPass(std::make_unique<NormalizeCFG>(PrintNormalized)); + Manager.registerPass(std::make_unique<StripRepRet>(NeverPrint), opts::StripRepRet); |