[AArch64] Wrong CC access in CSINC-conditional branch sequence
authorGerolf Hoflehner <ghoflehner@apple.com>
Tue, 14 Oct 2014 23:55:00 +0000 (23:55 +0000)
committerGerolf Hoflehner <ghoflehner@apple.com>
Tue, 14 Oct 2014 23:55:00 +0000 (23:55 +0000)
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

index c32a1e95faaf5d1e17a683c156b6af4585ab33ef..4bec7372e69448b3bf388a0aee7e08a13afa429c 100644 (file)
@@ -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