diff options
Diffstat (limited to 'compiler/optimizing/code_generator_arm.cc')
-rw-r--r-- | compiler/optimizing/code_generator_arm.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/compiler/optimizing/code_generator_arm.cc b/compiler/optimizing/code_generator_arm.cc index 0f14436539..9ed19695a3 100644 --- a/compiler/optimizing/code_generator_arm.cc +++ b/compiler/optimizing/code_generator_arm.cc @@ -296,7 +296,8 @@ Location CodeGeneratorARM::AllocateFreeRegister(Primitive::Type type) const { } case Primitive::kPrimDouble: { - int reg = FindTwoFreeConsecutiveEntries(blocked_fpu_registers_, kNumberOfSRegisters); + int reg = FindTwoFreeConsecutiveAlignedEntries(blocked_fpu_registers_, kNumberOfSRegisters); + DCHECK_EQ(reg % 2, 0); return Location::FpuRegisterPairLocation(reg, reg + 1); } @@ -341,6 +342,14 @@ void CodeGeneratorARM::SetupBlockedRegisters() const { blocked_fpu_registers_[S21] = true; blocked_fpu_registers_[S22] = true; blocked_fpu_registers_[S23] = true; + blocked_fpu_registers_[S24] = true; + blocked_fpu_registers_[S25] = true; + blocked_fpu_registers_[S26] = true; + blocked_fpu_registers_[S27] = true; + blocked_fpu_registers_[S28] = true; + blocked_fpu_registers_[S29] = true; + blocked_fpu_registers_[S30] = true; + blocked_fpu_registers_[S31] = true; UpdateBlockedPairRegisters(); } |