summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxim Kazantsev <maxim.kazantsev@intel.com>2015-02-24 15:07:55 +0600
committerMaxim Kazantsev <maxim.kazantsev@intel.com>2015-03-04 10:40:19 +0600
commit085b733d15ec09afa27b85358acb89d9bc02e843 (patch)
tree3345d76e4b9e0409f0967e378a1632b9bd9c6b1e
parent4b39eeea67b0fecf21588d7b00e92eb844014c24 (diff)
downloadart-085b733d15ec09afa27b85358acb89d9bc02e843.tar.gz
art-085b733d15ec09afa27b85358acb89d9bc02e843.tar.bz2
art-085b733d15ec09afa27b85358acb89d9bc02e843.zip
ART: AddVectorReduce should store result in memory carefully
When generating AddVectorReduce, in some cirsumstances we add value reduced from vector directly to memory. We must ensure that local LIR optimizations are aware about it. Change-Id: I8fe19939f67dcd184b08f63026b0da18007d34b8
-rwxr-xr-xcompiler/dex/quick/x86/target_x86.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/compiler/dex/quick/x86/target_x86.cc b/compiler/dex/quick/x86/target_x86.cc
index 8f97d1e7c8..dbe48488a1 100755
--- a/compiler/dex/quick/x86/target_x86.cc
+++ b/compiler/dex/quick/x86/target_x86.cc
@@ -2202,6 +2202,7 @@ void X86Mir2Lir::GenAddReduceVector(MIR* mir) {
StoreFinalValue(rl_dest, rl_result);
} else {
// Do the addition directly to memory.
+ ScopedMemRefType mem_ref_type(this, ResourceMask::kDalvikReg);
OpMemReg(kOpAdd, rl_result, temp.GetReg());
}
}