Disallow creation of pointer typed shift instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3637 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2002-09-09 20:25:21 +00:00
parent caa5d13cda
commit 871d2ce690

View 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: