From cd27f3fb33990155a260cbfba60626792be25195 Mon Sep 17 00:00:00 2001 From: Gerolf Hoflehner Date: Tue, 14 Oct 2014 23:55:00 +0000 Subject: [PATCH] [AArch64] Wrong CC access in CSINC-conditional branch sequence This is a follow up to commit r219742. It removes the CCInMI variable and accesses the CC in CSCINC directly. In the case of a conditional branch accessing the CC with CCInMI was wrong. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219748 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/AArch64/AArch64InstrInfo.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/Target/AArch64/AArch64InstrInfo.cpp b/lib/Target/AArch64/AArch64InstrInfo.cpp index c32a1e95faa..4bec7372e69 100644 --- a/lib/Target/AArch64/AArch64InstrInfo.cpp +++ b/lib/Target/AArch64/AArch64InstrInfo.cpp @@ -2869,24 +2869,20 @@ bool AArch64InstrInfo::optimizeCondBranch(MachineInstr *MI) const { case AArch64::CBZW: case AArch64::CBZX: TargetBBInMI = 1; - CCInMI = 2; break; case AArch64::CBNZW: case AArch64::CBNZX: TargetBBInMI = 1; - CCInMI = 2; IsNegativeBranch = true; break; case AArch64::TBZW: case AArch64::TBZX: TargetBBInMI = 2; - CCInMI = 3; IsTestAndBranch = true; break; case AArch64::TBNZW: case AArch64::TBNZX: TargetBBInMI = 2; - CCInMI = 3; IsNegativeBranch = true; IsTestAndBranch = true; break; @@ -2921,7 +2917,7 @@ bool AArch64InstrInfo::optimizeCondBranch(MachineInstr *MI) const { return false; AArch64CC::CondCode CC = - (AArch64CC::CondCode)DefMI->getOperand(CCInMI).getImm(); + (AArch64CC::CondCode)DefMI->getOperand(3).getImm(); bool CheckOnlyCCWrites = true; // Convert only when the condition code is not modified between // the CSINC and the branch. The CC may be used by other