diff --git a/src/mapleall/maple_be/src/cg/aarch64/aarch64_args.cpp b/src/mapleall/maple_be/src/cg/aarch64/aarch64_args.cpp index 2ce3a0d49d2acfcfbf10f2a30c8a8ac61f4a4908..35a496d4da0f4ef3f553c82ae7f7aa7a68499057 100644 --- a/src/mapleall/maple_be/src/cg/aarch64/aarch64_args.cpp +++ b/src/mapleall/maple_be/src/cg/aarch64/aarch64_args.cpp @@ -267,16 +267,18 @@ void AArch64MoveRegArgs::MoveVRegisterArgs() { ParmLocator parmlocator(aarchCGFunc->GetBecommon()); PLocInfo ploc; - for (uint32 i = 0; i < aarchCGFunc->GetFunction().GetFormalCount(); ++i) { - if (i == 0) { - MIRFunction *func = const_cast(aarchCGFunc->GetBecommon().GetMIRModule().CurFunction()); - if (aarchCGFunc->GetBecommon().HasFuncReturnType(*func)) { - TyIdx idx = aarchCGFunc->GetBecommon().GetFuncReturnType(*func); - if (aarchCGFunc->GetBecommon().GetTypeSize(idx) <= k16BitSize) { - continue; - } + uint32 formalCount = aarchCGFunc->GetFunction().GetFormalCount(); + uint32 start = 0; + if (formalCount) { + MIRFunction *func = const_cast(aarchCGFunc->GetBecommon().GetMIRModule().CurFunction()); + if (aarchCGFunc->GetBecommon().HasFuncReturnType(*func)) { + TyIdx idx = aarchCGFunc->GetBecommon().GetFuncReturnType(*func); + if (aarchCGFunc->GetBecommon().GetTypeSize(idx) <= k16BitSize) { + start = 1; } } + } + for (uint32 i = start; i < formalCount; ++i) { MIRType *ty = aarchCGFunc->GetFunction().GetNthParamType(i); parmlocator.LocateNextParm(*ty, ploc, i == 0); MIRSymbol *sym = aarchCGFunc->GetFunction().GetFormal(i);