summaryrefslogtreecommitdiff
path: root/compiler/dex/mir_dataflow.cc
diff options
context:
space:
mode:
author Mark Mendell <mark.p.mendell@intel.com> 2014-05-05 22:28:55 -0400
committer Mark Mendell <mark.p.mendell@intel.com> 2014-05-06 07:18:03 -0400
commit0add77a86599260aba3ea4b56e9db3da6bb881a8 (patch)
treedf2129b88907d4f9739ab93907f2e10803fdd80b /compiler/dex/mir_dataflow.cc
parent66762055847a40fe4454782826d2bb7a4ea9e316 (diff)
ART: Ensure use counts updated when adding SSA reg
Ensure that matching data structures are updated when adding SSA registers late in the compile. Change-Id: I8e664dddf52c1a9095ba5b7a8df84e5a733bbc43 Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
Diffstat (limited to 'compiler/dex/mir_dataflow.cc')
-rw-r--r--compiler/dex/mir_dataflow.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/compiler/dex/mir_dataflow.cc b/compiler/dex/mir_dataflow.cc
index 2f17e08974..ed7e1f5edd 100644
--- a/compiler/dex/mir_dataflow.cc
+++ b/compiler/dex/mir_dataflow.cc
@@ -925,11 +925,17 @@ bool MIRGraph::FindLocalLiveIn(BasicBlock* bb) {
int MIRGraph::AddNewSReg(int v_reg) {
// Compiler temps always have a subscript of 0
int subscript = (v_reg < 0) ? 0 : ++ssa_last_defs_[v_reg];
- int ssa_reg = GetNumSSARegs();
+ uint32_t ssa_reg = GetNumSSARegs();
SetNumSSARegs(ssa_reg + 1);
ssa_base_vregs_->Insert(v_reg);
ssa_subscripts_->Insert(subscript);
DCHECK_EQ(ssa_base_vregs_->Size(), ssa_subscripts_->Size());
+ // If we are expanding very late, update use counts too.
+ if (ssa_reg > 0 && use_counts_.Size() == ssa_reg) {
+ // Need to expand the counts.
+ use_counts_.Insert(0);
+ raw_use_counts_.Insert(0);
+ }
return ssa_reg;
}