summaryrefslogtreecommitdiff
path: root/compiler/dex/quick/codegen_util.cc
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2015-09-29 11:25:48 +0100
committer Vladimir Marko <vmarko@google.com> 2015-09-29 11:27:54 +0100
commit97a87ec836ff8f480af1166d05b92dad1c5daadd (patch)
tree82a4bba2f2b4d6e430c018caf15594f7a6c2d5e9 /compiler/dex/quick/codegen_util.cc
parent6a9984e62c08bcd78c8e49dd40b1f0f9d53513b7 (diff)
Quick: Avoid shifting -1 left (undefined behavior).
C++11 clarifies that shifting left a negative value is undefined behavior. Fix legacy code that shifted -1 left. Bug: 24489455 Change-Id: Iaf4f26c7cde175f039b6a2cad12af6f0b1624fba
Diffstat (limited to 'compiler/dex/quick/codegen_util.cc')
-rw-r--r--compiler/dex/quick/codegen_util.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/compiler/dex/quick/codegen_util.cc b/compiler/dex/quick/codegen_util.cc
index 7082bedc5e..d5ac34186b 100644
--- a/compiler/dex/quick/codegen_util.cc
+++ b/compiler/dex/quick/codegen_util.cc
@@ -1126,7 +1126,7 @@ CompiledMethod* Mir2Lir::GetCompiledMethod() {
for (size_t i = 0 ; i < core_vmap_table_.size(); ++i) {
// Copy, stripping out the phys register sort key.
vmap_encoder.PushBackUnsigned(
- ~(-1 << VREG_NUM_WIDTH) & (core_vmap_table_[i] + VmapTable::kEntryAdjustment));
+ ~(~0u << VREG_NUM_WIDTH) & (core_vmap_table_[i] + VmapTable::kEntryAdjustment));
}
// Push a marker to take place of lr.
vmap_encoder.PushBackUnsigned(VmapTable::kAdjustedFpMarker);
@@ -1141,7 +1141,7 @@ CompiledMethod* Mir2Lir::GetCompiledMethod() {
for (size_t i = 0 ; i < fp_vmap_table_.size(); ++i) {
// Copy, stripping out the phys register sort key.
vmap_encoder.PushBackUnsigned(
- ~(-1 << VREG_NUM_WIDTH) & (fp_vmap_table_[i] + VmapTable::kEntryAdjustment));
+ ~(~0u << VREG_NUM_WIDTH) & (fp_vmap_table_[i] + VmapTable::kEntryAdjustment));
}
}
} else {