[llvm] r219748 - [AArch64] Wrong CC access in CSINC-conditional branch sequence

Justin Bogner mail at justinbogner.com
Tue Oct 14 17:57:05 PDT 2014


Gerolf Hoflehner <ghoflehner at apple.com> writes:
> Author: ghoflehner
> Date: Tue Oct 14 18:55:00 2014
> New Revision: 219748
>
> URL: http://llvm.org/viewvc/llvm-project?rev=219748&view=rev
> Log:
> [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.

Can this be tested?

> Modified:
>     llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp
>
> Modified: llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp?rev=219748&r1=219747&r2=219748&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cpp Tue Oct 14 18:55:00 2014
> @@ -2869,24 +2869,20 @@ bool AArch64InstrInfo::optimizeCondBranc
>    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::optimizeCondBranc
>      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
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list