diff options
Diffstat (limited to 'compiler/dex/quick/arm/target_arm.cc')
-rw-r--r-- | compiler/dex/quick/arm/target_arm.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler/dex/quick/arm/target_arm.cc b/compiler/dex/quick/arm/target_arm.cc index b05939156f..52a516cc5a 100644 --- a/compiler/dex/quick/arm/target_arm.cc +++ b/compiler/dex/quick/arm/target_arm.cc @@ -929,6 +929,10 @@ RegStorage ArmMir2Lir::InToRegStorageArmMapper::GetNextReg(ShortyArg arg) { } } else { if (cur_core_reg_ < coreArgMappingToPhysicalRegSize) { + if (!kArm32QuickCodeUseSoftFloat && arg.IsWide() && cur_core_reg_ == 0) { + // Skip r1, and use r2-r3 for the register pair. + cur_core_reg_++; + } result = coreArgMappingToPhysicalReg[cur_core_reg_++]; if (arg.IsWide() && cur_core_reg_ < coreArgMappingToPhysicalRegSize) { result = RegStorage::MakeRegPair(result, coreArgMappingToPhysicalReg[cur_core_reg_++]); |