diff options
author | Bing1 Yu <bing1.yu@intel.com> | 2021-10-18 15:41:06 +0800 |
---|---|---|
committer | Bing1 Yu <bing1.yu@intel.com> | 2021-10-18 15:44:07 +0800 |
commit | f383c533110664d41df51b08637df7243c4d6bf7 (patch) | |
tree | 4cfbf5d8a45d7136bb4f1272f776675c0e30bac2 /llvm/lib/CodeGen/MachineSink.cpp | |
parent | 67c64d83378e7e84e30801420ebba453987e2546 (diff) | |
download | llvm-f383c533110664d41df51b08637df7243c4d6bf7.zip llvm-f383c533110664d41df51b08637df7243c4d6bf7.tar.gz llvm-f383c533110664d41df51b08637df7243c4d6bf7.tar.bz2 |
[MachineSink] Compile time improvement for large testcases which has many kill flags
We did a experiment and observed dramatic decrease on compilation time which spent on clearing kill flags.
Before:
Number of BasicBlocks:33357
Number of Instructions:162067
Number of Cleared Kill Flags:32869
Time of handling kill flags(ms):1.607509e+05
After:
Number of BasicBlocks:33357
Number of Instructions:162067
Number of Cleared Kill Flags:32869
Time of handling kill flags:3.987371e+03
Reviewed By: MatzeB
Differential Revision: https://reviews.llvm.org/D111688
Diffstat (limited to 'llvm/lib/CodeGen/MachineSink.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineSink.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/MachineSink.cpp b/llvm/lib/CodeGen/MachineSink.cpp index ec98394..b570732 100644 --- a/llvm/lib/CodeGen/MachineSink.cpp +++ b/llvm/lib/CodeGen/MachineSink.cpp @@ -131,7 +131,7 @@ namespace { // will be split. SetVector<std::pair<MachineBasicBlock *, MachineBasicBlock *>> ToSplit; - SparseBitVector<> RegsToClearKillFlags; + DenseSet<Register> RegsToClearKillFlags; using AllSuccsCache = std::map<MachineBasicBlock *, SmallVector<MachineBasicBlock *, 4>>; @@ -1439,7 +1439,7 @@ bool MachineSinking::SinkInstruction(MachineInstr &MI, bool &SawStore, // used registers. for (MachineOperand &MO : MI.operands()) { if (MO.isReg() && MO.isUse()) - RegsToClearKillFlags.set(MO.getReg()); // Remember to clear kill flags. + RegsToClearKillFlags.insert(MO.getReg()); // Remember to clear kill flags. } return true; |