Disallow creation of pointer typed shift instructions
authorChris Lattner <sabre@nondot.org>
Mon, 9 Sep 2002 20:25:21 +0000 (20:25 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 9 Sep 2002 20:25:21 +0000 (20:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3637 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/ExprTypeConvert.cpp

index 01c8d6f354bee29c8879056be84255cdd5d0b5b9..0a42f2180178ad7b47bf2b925834c52ea4669ea9 100644 (file)
@@ -1,4 +1,4 @@
-//===- ExprTypeConvert.cpp - Code to change an LLVM Expr Type ---------------=//
+//===- ExprTypeConvert.cpp - Code to change an LLVM Expr Type -------------===//
 //
 // This file implements the part of level raising that checks to see if it is
 // possible to coerce an entire expression tree into a different type.  If
@@ -193,9 +193,11 @@ bool ExpressionConvertableToType(Value *V, const Type *Ty,
       return false;
     break;
   case Instruction::Shr:
+    if (!Ty->isInteger()) return false;
     if (Ty->isSigned() != V->getType()->isSigned()) return false;
     // FALL THROUGH
   case Instruction::Shl:
+    if (!Ty->isInteger()) return false;
     if (!ExpressionConvertableToType(I->getOperand(0), Ty, CTMap))
       return false;
     break;
@@ -633,6 +635,7 @@ static bool OperandConvertableToType(User *U, Value *V, const Type *Ty,
     // FALL THROUGH
   case Instruction::Shl:
     assert(I->getOperand(0) == V);
+    if (!Ty->isInteger()) return false;
     return ValueConvertableToType(I, Ty, CTMap);
 
   case Instruction::Free: