Make the "KnownZero ^ TypeMask" computation just once.
authorZhou Sheng <zhousheng00@gmail.com>
Fri, 23 Mar 2007 03:13:21 +0000 (03:13 +0000)
committerZhou Sheng <zhousheng00@gmail.com>
Fri, 23 Mar 2007 03:13:21 +0000 (03:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35276 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/InstructionCombining.cpp

index 6d4a8ddb265cbd1bf69b3458e3761285a5162cef..9713bc8a37d061ea902fb7da0dc5d57b3ef776e1 100644 (file)
@@ -7136,9 +7136,10 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) {
         if (pred != ICmpInst::ICMP_NE && pred != ICmpInst::ICMP_EQ)
           break;
         
-        if ((KnownZero^TypeMask).isPowerOf2()) { // Exactly 1 possible 1?
+        APInt KnownZeroMask(KnownZero ^ TypeMask);
+        if (KnownZeroMask.isPowerOf2()) { // Exactly 1 possible 1?
           bool isNE = pred == ICmpInst::ICMP_NE;
-          if (Op1CV != 0 && (Op1CV != (KnownZero^TypeMask))) {
+          if (Op1CV != 0 && (Op1CV != KnownZeroMask)) {
             // (X&4) == 2 --> false
             // (X&4) != 2 --> true
             Constant *Res = ConstantInt::get(Type::Int1Ty, isNE);
@@ -7146,7 +7147,7 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) {
             return ReplaceInstUsesWith(CI, Res);
           }
           
-          unsigned ShiftAmt = (KnownZero^TypeMask).logBase2();
+          unsigned ShiftAmt = KnownZeroMask.logBase2();
           Value *In = Op0;
           if (ShiftAmt) {
             // Perform a logical shr by shiftamt.