diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2014-05-12 16:11:02 +0100 |
---|---|---|
committer | Nicolas Geoffray <ngeoffray@google.com> | 2014-05-13 09:06:14 +0100 |
commit | 622d9c31febd950255b36a48b47e1f630197c5fe (patch) | |
tree | 8a7f14ce3c6c087955ad5fe91a3ce7d5b5a82461 /compiler/optimizing/ssa_liveness_analysis.cc | |
parent | 98a8a542f95e41c09d214a329a940b270f08f5b3 (diff) | |
download | art-622d9c31febd950255b36a48b47e1f630197c5fe.zip art-622d9c31febd950255b36a48b47e1f630197c5fe.tar.gz art-622d9c31febd950255b36a48b47e1f630197c5fe.tar.bz2 |
Add loop recognition and CFG simplifications in new compiler.
We do three simplifications:
- Split critical edges, for code generation from SSA (new).
- Ensure one back edge per loop, to simplify loop recognition (new).
- Ensure only one pre header for a loop, to simplify SSA creation (existing).
Change-Id: I9bfccd4b236a00486a261078627b091c8a68be33
Diffstat (limited to 'compiler/optimizing/ssa_liveness_analysis.cc')
-rw-r--r-- | compiler/optimizing/ssa_liveness_analysis.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/compiler/optimizing/ssa_liveness_analysis.cc b/compiler/optimizing/ssa_liveness_analysis.cc index 838597d..0ab77ca 100644 --- a/compiler/optimizing/ssa_liveness_analysis.cc +++ b/compiler/optimizing/ssa_liveness_analysis.cc @@ -110,7 +110,7 @@ void SsaLivenessAnalysis::ComputeInitialSets() { for (size_t i = 0, e = current->InputCount(); i < e; ++i) { HInstruction* input = current->InputAt(i); - HBasicBlock* predecessor = block->GetPredecessors()->Get(i); + HBasicBlock* predecessor = block->GetPredecessors().Get(i); size_t ssa_index = input->GetSsaIndex(); BitVector* predecessor_kill = GetKillSet(*predecessor); BitVector* predecessor_live_in = GetLiveInSet(*predecessor); @@ -147,8 +147,8 @@ bool SsaLivenessAnalysis::UpdateLiveOut(const HBasicBlock& block) { BitVector* live_out = GetLiveOutSet(block); bool changed = false; // The live_out set of a block is the union of live_in sets of its successors. - for (size_t i = 0, e = block.GetSuccessors()->Size(); i < e; ++i) { - HBasicBlock* successor = block.GetSuccessors()->Get(i); + for (size_t i = 0, e = block.GetSuccessors().Size(); i < e; ++i) { + HBasicBlock* successor = block.GetSuccessors().Get(i); if (live_out->Union(GetLiveInSet(*successor))) { changed = true; } |