diff --git a/src/mapleall/maple_be/src/cg/aarch64/aarch64_peep.cpp b/src/mapleall/maple_be/src/cg/aarch64/aarch64_peep.cpp index ba396d77d4c84f7491ca6e5e0190bec141edaf39..aa4bda1099a8f0c9ad4300f122c8b0c13a9984a8 100644 --- a/src/mapleall/maple_be/src/cg/aarch64/aarch64_peep.cpp +++ b/src/mapleall/maple_be/src/cg/aarch64/aarch64_peep.cpp @@ -2500,6 +2500,11 @@ std::vector CombineContiLoadAndStorePattern::FindPrevStrLdr(Insn &insn, r } } } + /* do not optimize across mem opnd that is already split */ + if (curInsn->IsLoadStorePair() && + static_cast(static_cast(curInsn->GetMemOpnd())->GetBaseRegister())->GetRegisterNumber() == R16) { + return prevContiInsns; + } /* check insn that changes the data flow */ regno_t stackBaseRegNO = cgFunc->UseFP() ? R29 : RSP; /* ldr x8, [x21, #8]