diff options
| author | 2015-05-12 21:37:35 +0000 | |
|---|---|---|
| committer | 2015-05-12 21:37:36 +0000 | |
| commit | 85c63973b00b6c091f9b380e99733dbfad6b5874 (patch) | |
| tree | 90bb13f12dbb97f31915906110b2b643a6ba532e | |
| parent | f0d765ec914649f7157d701669c772bd0c190830 (diff) | |
| parent | ade58e14582c6ab81978e9cfcbbf5e54cc23fe18 (diff) | |
Merge "Quick: Fix DCE, clear high word flag in RemoveChange()."
| -rw-r--r-- | compiler/dex/gvn_dead_code_elimination.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/compiler/dex/gvn_dead_code_elimination.cc b/compiler/dex/gvn_dead_code_elimination.cc index 6e1e414ea6..915fbcda04 100644 --- a/compiler/dex/gvn_dead_code_elimination.cc +++ b/compiler/dex/gvn_dead_code_elimination.cc @@ -340,7 +340,8 @@ void GvnDeadCodeElimination::VRegChains::RemoveChange(uint16_t change) { DCHECK_EQ(vreg_high_words_.IsBitSet(v_reg), v_reg == data->vreg_def + 1); if (data->vreg_def == v_reg && data->low_def_over_high_word) { vreg_high_words_.SetBit(v_reg); - } else if (data->vreg_def != v_reg && data->high_def_over_low_word) { + } else if (data->vreg_def != v_reg && + (data->high_def_over_low_word || data->prev_value_high.value == kNoValue)) { vreg_high_words_.ClearBit(v_reg); } } else { |