Fix an infinite loop building the CFE
authorChris Lattner <sabre@nondot.org>
Mon, 18 Sep 2006 18:27:05 +0000 (18:27 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 18 Sep 2006 18:27:05 +0000 (18:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30465 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/InstructionCombining.cpp

index c3d6f1465eba52b2c1af1bb82202dbcfe23bac48..7a3b97783b26f22a60f99133ca5859b7e207a90d 100644 (file)
@@ -3988,7 +3988,8 @@ Instruction *InstCombiner::visitSetCondInst(SetCondInst &I) {
           // preferable because it allows the C<<Y expression to be hoisted out
           // of a loop if Y is invariant and X is not.
           if (Shift && Shift->hasOneUse() && CI->isNullValue() &&
-              I.isEquality() && !Shift->isArithmeticShift()) {
+              I.isEquality() && !Shift->isArithmeticShift() &&
+              isa<Instruction>(Shift->getOperand(0))) {
             // Compute C << Y.
             Value *NS;
             if (Shift->getOpcode() == Instruction::Shr) {