aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Coles <torne@google.com>2015-05-27 17:57:59 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-05-27 17:58:00 +0000
commit59301e568447990886d44ae9da1ae0379332ac55 (patch)
tree1d19688c879cfe0d4aa732b05e5373033c6d0531
parentb93c15fdb1adc488ef0b445eb8100981990a8843 (diff)
parent5cb7468791489ae8517021b446b785ca1963b177 (diff)
downloadv8-59301e568447990886d44ae9da1ae0379332ac55.tar.gz
Merge "Cherry-pick "ARM assembler: fix undefined behaviour in fits_shifter""android-m-preview
-rw-r--r--src/arm/assembler-arm.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/arm/assembler-arm.cc b/src/arm/assembler-arm.cc
index 17bf4f93a..364ccfc13 100644
--- a/src/arm/assembler-arm.cc
+++ b/src/arm/assembler-arm.cc
@@ -991,7 +991,8 @@ static bool fits_shifter(uint32_t imm32,
Instr* instr) {
// imm32 must be unsigned.
for (int rot = 0; rot < 16; rot++) {
- uint32_t imm8 = (imm32 << 2*rot) | (imm32 >> (32 - 2*rot));
+ uint32_t imm8 =
+ rot == 0 ? imm32 : (imm32 << 2 * rot) | (imm32 >> (32 - 2 * rot));
if ((imm8 <= 0xff)) {
*rotate_imm = rot;
*immed_8 = imm8;