On Sun, 2007-01-14 at 18:46 -0600, Chris Lattner wrote: > > Changes in directory llvm/lib/VMCore: > > Constants.cpp updated: 1.199 -> 1.200 > --- > Log message: > > don't discriminate against i1
Not quite right, see below. > > > --- > Diffs of the changes: (+9 -9) > > Constants.cpp | 18 +++++++++--------- > 1 files changed, 9 insertions(+), 9 deletions(-) > > > Index: llvm/lib/VMCore/Constants.cpp > diff -u llvm/lib/VMCore/Constants.cpp:1.199 > llvm/lib/VMCore/Constants.cpp:1.200 > --- llvm/lib/VMCore/Constants.cpp:1.199 Fri Jan 12 16:39:14 2007 > +++ llvm/lib/VMCore/Constants.cpp Sun Jan 14 18:45:50 2007 > @@ -1495,7 +1495,7 @@ > } > > Constant *ConstantExpr::getTrunc(Constant *C, const Type *Ty) { > - assert(C->getType()->isInteger() && "Trunc operand must be integer"); > + assert(C->getType()->isIntegral() && "Trunc operand must be integer"); This makes no sense. How can you trunc i1 to something smaller? The rules for trunc are SrcSize > DestSize. If SrcSize is 1 bit, what size is Dest? 0? > assert(Ty->isIntegral() && "Trunc produces only integral"); > assert(C->getType()->getPrimitiveSizeInBits() > > Ty->getPrimitiveSizeInBits()&& > "SrcTy must be larger than DestTy for Trunc!"); > @@ -1505,7 +1505,7 @@ > > Constant *ConstantExpr::getSExt(Constant *C, const Type *Ty) { > assert(C->getType()->isIntegral() && "SEXt operand must be integral"); > - assert(Ty->isInteger() && "SExt produces only integer"); > + assert(Ty->isIntegral() && "SExt produces only integer"); This also makes no sense. The destination type cannot be i1. Rules for SExt are that SrcSize < DestSize. If DestSize is 1 bit, what could SrcSize be? 0? > assert(C->getType()->getPrimitiveSizeInBits() < > Ty->getPrimitiveSizeInBits()&& > "SrcTy must be smaller than DestTy for SExt!"); > > @@ -1514,7 +1514,7 @@ > > Constant *ConstantExpr::getZExt(Constant *C, const Type *Ty) { > assert(C->getType()->isIntegral() && "ZEXt operand must be integral"); > - assert(Ty->isInteger() && "ZExt produces only integer"); > + assert(Ty->isIntegral() && "ZExt produces only integer"); Same issue as for SExt. > assert(C->getType()->getPrimitiveSizeInBits() < > Ty->getPrimitiveSizeInBits()&& > "SrcTy must be smaller than DestTy for ZExt!"); > > @@ -1649,15 +1649,15 @@ > case Instruction::Sub: > case Instruction::Mul: > assert(C1->getType() == C2->getType() && "Op types should be > identical!"); > - assert((C1->getType()->isInteger() || C1->getType()->isFloatingPoint() || > + assert((C1->getType()->isIntegral() || C1->getType()->isFloatingPoint() > || This I was going to talk to you about. This will fix the current CEE problem, assuming it applies to Instruction::Add as well. > isa<PackedType>(C1->getType())) && > "Tried to create an arithmetic operation on a non-arithmetic > type!"); > break; > case Instruction::UDiv: > case Instruction::SDiv: > assert(C1->getType() == C2->getType() && "Op types should be > identical!"); > - assert((C1->getType()->isInteger() || (isa<PackedType>(C1->getType()) && > - cast<PackedType>(C1->getType())->getElementType()->isInteger())) && > + assert((C1->getType()->isIntegral() || (isa<PackedType>(C1->getType()) && > + cast<PackedType>(C1->getType())->getElementType()->isIntegral())) && Okay. > "Tried to create an arithmetic operation on a non-arithmetic > type!"); > break; > case Instruction::FDiv: > @@ -1669,8 +1669,8 @@ > case Instruction::URem: > case Instruction::SRem: > assert(C1->getType() == C2->getType() && "Op types should be > identical!"); > - assert((C1->getType()->isInteger() || (isa<PackedType>(C1->getType()) && > - cast<PackedType>(C1->getType())->getElementType()->isInteger())) && > + assert((C1->getType()->isIntegral() || (isa<PackedType>(C1->getType()) && > + cast<PackedType>(C1->getType())->getElementType()->isIntegral())) && Okay. > "Tried to create an arithmetic operation on a non-arithmetic > type!"); > break; > case Instruction::FRem: > @@ -1690,7 +1690,7 @@ > case Instruction::LShr: > case Instruction::AShr: > assert(C2->getType() == Type::Int8Ty && "Shift should be by ubyte!"); > - assert(C1->getType()->isInteger() && > + assert(C1->getType()->isIntegral() && > "Tried to create a shift operation on a non-integer type!"); Okay. > break; > default: > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits