diff options
Diffstat (limited to 'compiler/optimizing/code_generator.cc')
| -rw-r--r-- | compiler/optimizing/code_generator.cc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/optimizing/code_generator.cc b/compiler/optimizing/code_generator.cc index 2a9a7b37ab..e6fe0679f6 100644 --- a/compiler/optimizing/code_generator.cc +++ b/compiler/optimizing/code_generator.cc @@ -189,6 +189,9 @@ void CodeGenerator::AllocateRegistersLocally(HInstruction* instruction) const { if (loc.GetPolicy() == Location::kRequiresRegister) { loc = Location::RegisterLocation( AllocateFreeRegister(input->GetType(), blocked_registers_)); + } else if (loc.GetPolicy() == Location::kRequiresFpuRegister) { + loc = Location::FpuRegisterLocation( + AllocateFreeRegister(input->GetType(), blocked_registers_)); } else { DCHECK_EQ(loc.GetPolicy(), Location::kAny); HLoadLocal* load = input->AsLoadLocal(); @@ -223,6 +226,10 @@ void CodeGenerator::AllocateRegistersLocally(HInstruction* instruction) const { result_location = Location::RegisterLocation( AllocateFreeRegister(instruction->GetType(), blocked_registers_)); break; + case Location::kRequiresFpuRegister: + result_location = Location::FpuRegisterLocation( + AllocateFreeRegister(instruction->GetType(), blocked_registers_)); + break; case Location::kSameAsFirstInput: result_location = locations->InAt(0); break; |