mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 00:33:09 +00:00
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:
parent
caa5d13cda
commit
871d2ce690
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user