OSDN Git Service
(root)
/
android-x86
/
art.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
4dece9c
)
Quick: Fix DCE, clear high word flag in RemoveChange().
author
Vladimir Marko
<vmarko@google.com>
Tue, 12 May 2015 21:27:21 +0000
(22:27 +0100)
committer
Vladimir Marko
<vmarko@google.com>
Tue, 12 May 2015 21:42:18 +0000
(22:42 +0100)
Bug:
20640451
(cherry picked from commit
ade58e14582c6ab81978e9cfcbbf5e54cc23fe18
)
Change-Id: I8ac7fea3d9d2a434ee79fb917e68a4dc96e5482f
compiler/dex/gvn_dead_code_elimination.cc
patch
|
blob
|
history
diff --git
a/compiler/dex/gvn_dead_code_elimination.cc
b/compiler/dex/gvn_dead_code_elimination.cc
index
6e1e414
..
915fbcd
100644
(file)
--- 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 {