summaryrefslogtreecommitdiffstats
path: root/compiler/dex/local_value_numbering.cc
diff options
context:
space:
mode:
authorSerguei Katkov <serguei.i.katkov@intel.com>2015-02-06 17:15:36 +0600
committerSerguei Katkov <serguei.i.katkov@intel.com>2015-02-13 16:11:44 +0600
commit47d2e48092717f2439b41d36430b5e1da9f8915e (patch)
tree64d3da169e818f22d3ab2797cdef0782f0bed30f /compiler/dex/local_value_numbering.cc
parent8240a8af33aedea9a4fe5c3b394d7c025ad081fb (diff)
downloadart-47d2e48092717f2439b41d36430b5e1da9f8915e.zip
art-47d2e48092717f2439b41d36430b5e1da9f8915e.tar.gz
art-47d2e48092717f2439b41d36430b5e1da9f8915e.tar.bz2
LVN handles const-wide/32 incorrectly
Redundant shift to 16 bit should be eliminated otherwise any 32 bit shift of 32 bit constant will result in 0. Change-Id: I4969b54357bc2d9a836e89dd7919199fff966684 Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
Diffstat (limited to 'compiler/dex/local_value_numbering.cc')
-rw-r--r--compiler/dex/local_value_numbering.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/dex/local_value_numbering.cc b/compiler/dex/local_value_numbering.cc
index 114346d..aecde51 100644
--- a/compiler/dex/local_value_numbering.cc
+++ b/compiler/dex/local_value_numbering.cc
@@ -1657,7 +1657,7 @@ uint16_t LocalValueNumbering::GetValueNumber(MIR* mir) {
case Instruction::CONST_WIDE_16:
case Instruction::CONST_WIDE_32: {
uint16_t low_res = gvn_->LookupValue(Instruction::CONST, Low16Bits(mir->dalvikInsn.vB),
- High16Bits(mir->dalvikInsn.vB >> 16), 1);
+ High16Bits(mir->dalvikInsn.vB), 1);
uint16_t high_res;
if (mir->dalvikInsn.vB & 0x80000000) {
high_res = gvn_->LookupValue(Instruction::CONST, 0xffff, 0xffff, 2);