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

Gerolf Hoflehner ghoflehner at apple.com
Wed Oct 15 23:32:24 PDT 2014


Valid point. I’m looking to get cbz covered with a test case also.  

> On Oct 14, 2014, at 5:57 PM, Justin Bogner <mail at justinbogner.com> wrote:
> 
> Gerolf Hoflehner <ghoflehner at apple.com <mailto: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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141015/21295d27/attachment.html>


More information about the llvm-commits mailing list