diff --git a/src/mapleall/maple_be/src/cg/aarch64/aarch64_global.cpp b/src/mapleall/maple_be/src/cg/aarch64/aarch64_global.cpp index cb198c6b069378f831291e26dd8c42a56f72eab6..7f9df1e0935212a975eab1e6f0782b62fce100eb 100644 --- a/src/mapleall/maple_be/src/cg/aarch64/aarch64_global.cpp +++ b/src/mapleall/maple_be/src/cg/aarch64/aarch64_global.cpp @@ -2212,6 +2212,9 @@ bool SameRHSPropPattern::CheckCondition(Insn &insn) { return false; } CHECK_FATAL(prevInsn->GetOperand(kInsnFirstOpnd).IsRegister(), "prevInsn first operand must be register"); + if (static_cast(prevInsn->GetOperand(kInsnFirstOpnd)).GetRegisterNumber() == R16) { + return false; + } if (prevInsn->GetOperand(kInsnSecondOpnd).IsRegister() && RegOperand::IsSameReg(prevInsn->GetOperand(kInsnFirstOpnd), prevInsn->GetOperand(kInsnSecondOpnd))) { return false;