diff options
| author | 2015-09-29 11:25:48 +0100 | |
|---|---|---|
| committer | 2015-09-29 11:27:54 +0100 | |
| commit | 97a87ec836ff8f480af1166d05b92dad1c5daadd (patch) | |
| tree | 82a4bba2f2b4d6e430c018caf15594f7a6c2d5e9 /compiler/dex/quick/codegen_util.cc | |
| parent | 6a9984e62c08bcd78c8e49dd40b1f0f9d53513b7 (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.cc | 4 |
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 { |