OSDN Git Service

Revert "[InstCombine] improve readability; NFC"
authorSanjay Patel <spatel@rotateright.com>
Fri, 6 Dec 2019 19:20:44 +0000 (14:20 -0500)
committerSanjay Patel <spatel@rotateright.com>
Fri, 6 Dec 2019 19:20:44 +0000 (14:20 -0500)
This reverts commit 7250ef3613cc6b81145b9543bafb86d7f9466cde.
At least 1 of these supposedly NFC commits wasn't - sanitizer bot is angry.

llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp

index 1ba017d..a3c1b27 100644 (file)
@@ -863,15 +863,19 @@ Instruction *InstCombiner::transformZExtICmp(ICmpInst *Cmp, ZExtInst &Zext,
         (Pred == ICmpInst::ICMP_SGT && Op1C->isAllOnesValue())) {
       if (!DoTransform) return Cmp;
 
+      Value *In = Op0;
       Value *ShAmt = ConstantInt::get(CmpOpType,
                                       CmpOpType->getScalarSizeInBits() - 1);
-      Value *Sh = Builder.CreateLShr(Op0, ShAmt, Op0->getName() + ".lobit");
-      Value *Cast = Builder.CreateIntCast(Sh, ZType, false /*ZExt*/);
-      // Invert low bit if testing for positive.
-      if (Pred == ICmpInst::ICMP_SGT)
-        Cast = Builder.CreateXor(Cast, ConstantInt::get(CmpOpType, 1));
+      In = Builder.CreateLShr(In, ShAmt, In->getName() + ".lobit");
+      if (CmpOpType != ZType)
+        In = Builder.CreateIntCast(In, ZType, false /*ZExt*/);
 
-      return replaceInstUsesWith(Zext, Cast);
+      if (Pred == ICmpInst::ICMP_SGT) {
+        Constant *One = ConstantInt::get(CmpOpType, 1);
+        In = Builder.CreateXor(In, One, In->getName() + ".not");
+      }
+
+      return replaceInstUsesWith(Zext, In);
     }
 
     // zext (X == 0) to i32 --> X^1      iff X has only the low bit set.