From ca1e482a56c6fe4dceec9bd4f6e4e5bfbac4ce18 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Fri, 3 Jul 2015 16:05:25 -0700 Subject: [PATCH] arm64: Avoid setting a reg to zero to store it. --- Core/MIPS/ARM64/Arm64RegCache.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Core/MIPS/ARM64/Arm64RegCache.cpp b/Core/MIPS/ARM64/Arm64RegCache.cpp index 7ff57a3f6d..69eb24cd14 100644 --- a/Core/MIPS/ARM64/Arm64RegCache.cpp +++ b/Core/MIPS/ARM64/Arm64RegCache.cpp @@ -347,6 +347,10 @@ void Arm64RegCache::DiscardR(MIPSGPReg mipsReg) { ARM64Reg Arm64RegCache::ARM64RegForFlush(MIPSGPReg r) { switch (mr[r].loc) { case ML_IMM: + // Zero is super easy. + if (mr[r].imm == 0) { + return WZR; + } // Could we get lucky? Check for an exact match in another armreg. for (int i = 0; i < NUM_MIPSREG; ++i) { if (mr[i].loc == ML_ARMREG_IMM && mr[i].imm == mr[r].imm) {