rename Type::isIntegral to Type::isInteger, eliminating the old Type::isInteger.

rename Type::getIntegralTypeMask to Type::getIntegerTypeMask.

This makes naming much more consistent.  For example, there are now no longer any
instances of IntegerType that are not considered isInteger! :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33225 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2007-01-15 02:27:26 +00:00
parent b25c4ca9d8
commit 42a7551725
33 changed files with 241 additions and 247 deletions

View File

@ -60,7 +60,7 @@ namespace llvm {
/// loop (inserting one if there is none). A canonical induction variable /// loop (inserting one if there is none). A canonical induction variable
/// starts at zero and steps by one on each iteration. /// starts at zero and steps by one on each iteration.
Value *getOrInsertCanonicalInductionVariable(const Loop *L, const Type *Ty){ Value *getOrInsertCanonicalInductionVariable(const Loop *L, const Type *Ty){
assert((Ty->isIntegral() || Ty->isFloatingPoint()) && assert((Ty->isInteger() || Ty->isFloatingPoint()) &&
"Can only insert integer or floating point induction variables!"); "Can only insert integer or floating point induction variables!");
SCEVHandle H = SCEVAddRecExpr::get(SCEVUnknown::getIntegerSCEV(0, Ty), SCEVHandle H = SCEVAddRecExpr::get(SCEVUnknown::getIntegerSCEV(0, Ty),
SCEVUnknown::getIntegerSCEV(1, Ty), L); SCEVUnknown::getIntegerSCEV(1, Ty), L);
@ -106,9 +106,9 @@ namespace llvm {
Value *expandInTy(SCEV *S, const Type *Ty) { Value *expandInTy(SCEV *S, const Type *Ty) {
Value *V = expand(S); Value *V = expand(S);
if (Ty && V->getType() != Ty) { if (Ty && V->getType() != Ty) {
if (isa<PointerType>(Ty) && V->getType()->isIntegral()) if (isa<PointerType>(Ty) && V->getType()->isInteger())
return InsertCastOfTo(Instruction::IntToPtr, V, Ty); return InsertCastOfTo(Instruction::IntToPtr, V, Ty);
else if (Ty->isIntegral() && isa<PointerType>(V->getType())) else if (Ty->isInteger() && isa<PointerType>(V->getType()))
return InsertCastOfTo(Instruction::PtrToInt, V, Ty); return InsertCastOfTo(Instruction::PtrToInt, V, Ty);
else if (Ty->getPrimitiveSizeInBits() == else if (Ty->getPrimitiveSizeInBits() ==
V->getType()->getPrimitiveSizeInBits()) V->getType()->getPrimitiveSizeInBits())

View File

@ -534,7 +534,7 @@ namespace llvm {
} }
MachOSection *getConstSection(const Type *Ty) { MachOSection *getConstSection(const Type *Ty) {
// FIXME: support cstring literals and pointer literal // FIXME: support cstring literals and pointer literal
if (Ty->isPrimitiveType() || Ty->isIntegral()) { if (Ty->isPrimitiveType() || Ty->isInteger()) {
unsigned Size = TM.getTargetData()->getTypeSize(Ty); unsigned Size = TM.getTargetData()->getTypeSize(Ty);
switch(Size) { switch(Size) {
default: break; // Fall through to __TEXT,__const default: break; // Fall through to __TEXT,__const

View File

@ -160,14 +160,9 @@ public:
/// getDescription - Return the string representation of the type... /// getDescription - Return the string representation of the type...
const std::string &getDescription() const; const std::string &getDescription() const;
/// isInteger - Equivalent to isSigned() || isUnsigned() /// isInteger - True if this is an instance of IntegerType.
/// ///
bool isInteger() const { return ID == IntegerTyID && this != Int1Ty; } bool isInteger() const { return ID == IntegerTyID; }
/// isIntegral - Returns true if this is an integral type, which is either
/// Int1Ty or one of the Integer types.
///
bool isIntegral() const { return ID == IntegerTyID; }
/// isFloatingPoint - Return true if this is one of the two floating point /// isFloatingPoint - Return true if this is one of the two floating point
/// types /// types
@ -209,8 +204,7 @@ public:
/// ///
bool isSized() const { bool isSized() const {
// If it's a primitive, it is always sized. // If it's a primitive, it is always sized.
if (ID == IntegerTyID || (ID >= FloatTyID && ID <= DoubleTyID) || if (ID == IntegerTyID || isFloatingPoint() || ID == PointerTyID)
ID == PointerTyID)
return true; return true;
// If it is not something that can have a size (e.g. a function or label), // If it is not something that can have a size (e.g. a function or label),
// it doesn't have a size. // it doesn't have a size.
@ -228,11 +222,11 @@ public:
/// ///
unsigned getPrimitiveSizeInBits() const; unsigned getPrimitiveSizeInBits() const;
/// getIntegralTypeMask - Return a bitmask with ones set for all of the bits /// getIntegerTypeMask - Return a bitmask with ones set for all of the bits
/// that can be set by an unsigned version of this type. This is 0xFF for /// that can be set by an unsigned version of this type. This is 0xFF for
/// sbyte/ubyte, 0xFFFF for shorts, etc. /// sbyte/ubyte, 0xFFFF for shorts, etc.
uint64_t getIntegralTypeMask() const { uint64_t getIntegerTypeMask() const {
assert(isIntegral() && "This only works for integral types!"); assert(isInteger() && "This only works for integer types!");
return ~uint64_t(0UL) >> (64-getPrimitiveSizeInBits()); return ~uint64_t(0UL) >> (64-getPrimitiveSizeInBits());
} }

View File

@ -31,7 +31,7 @@
using namespace llvm; using namespace llvm;
static ConstantInt *getMaxValue(const Type *Ty, bool isSigned = false) { static ConstantInt *getMaxValue(const Type *Ty, bool isSigned = false) {
if (Ty->isIntegral()) { if (Ty->isInteger()) {
if (isSigned) { if (isSigned) {
// Calculate 011111111111111... // Calculate 011111111111111...
unsigned TypeBits = Ty->getPrimitiveSizeInBits(); unsigned TypeBits = Ty->getPrimitiveSizeInBits();
@ -46,7 +46,7 @@ static ConstantInt *getMaxValue(const Type *Ty, bool isSigned = false) {
// Static constructor to create the minimum constant for an integral type... // Static constructor to create the minimum constant for an integral type...
static ConstantInt *getMinValue(const Type *Ty, bool isSigned = false) { static ConstantInt *getMinValue(const Type *Ty, bool isSigned = false) {
if (Ty->isIntegral()) { if (Ty->isInteger()) {
if (isSigned) { if (isSigned) {
// Calculate 1111111111000000000000 // Calculate 1111111111000000000000
unsigned TypeBits = Ty->getPrimitiveSizeInBits(); unsigned TypeBits = Ty->getPrimitiveSizeInBits();
@ -93,7 +93,7 @@ static ConstantInt *Max(ConstantInt *A, ConstantInt *B,
/// Initialize a full (the default) or empty set for the specified type. /// Initialize a full (the default) or empty set for the specified type.
/// ///
ConstantRange::ConstantRange(const Type *Ty, bool Full) { ConstantRange::ConstantRange(const Type *Ty, bool Full) {
assert(Ty->isIntegral() && assert(Ty->isInteger() &&
"Cannot make constant range of non-integral type!"); "Cannot make constant range of non-integral type!");
if (Full) if (Full)
Lower = Upper = getMaxValue(Ty); Lower = Upper = getMaxValue(Ty);
@ -225,7 +225,7 @@ bool ConstantRange::contains(ConstantInt *Val, bool isSigned) const {
/// subtract - Subtract the specified constant from the endpoints of this /// subtract - Subtract the specified constant from the endpoints of this
/// constant range. /// constant range.
ConstantRange ConstantRange::subtract(ConstantInt *CI) const { ConstantRange ConstantRange::subtract(ConstantInt *CI) const {
assert(CI->getType() == getType() && getType()->isIntegral() && assert(CI->getType() == getType() && getType()->isInteger() &&
"Cannot subtract from different type range or non-integer!"); "Cannot subtract from different type range or non-integer!");
// If the set is empty or full, don't modify the endpoints. // If the set is empty or full, don't modify the endpoints.
if (Lower == Upper) return *this; if (Lower == Upper) return *this;

View File

@ -122,7 +122,7 @@ void SCEV::dump() const {
/// known to have. This method is only valid on integer SCEV objects. /// known to have. This method is only valid on integer SCEV objects.
ConstantRange SCEV::getValueRange() const { ConstantRange SCEV::getValueRange() const {
const Type *Ty = getType(); const Type *Ty = getType();
assert(Ty->isIntegral() && "Can't get range for a non-integer SCEV!"); assert(Ty->isInteger() && "Can't get range for a non-integer SCEV!");
// Default to a full range if no better information is available. // Default to a full range if no better information is available.
return ConstantRange(getType()); return ConstantRange(getType());
} }
@ -194,7 +194,7 @@ static ManagedStatic<std::map<std::pair<SCEV*, const Type*>,
SCEVTruncateExpr::SCEVTruncateExpr(const SCEVHandle &op, const Type *ty) SCEVTruncateExpr::SCEVTruncateExpr(const SCEVHandle &op, const Type *ty)
: SCEV(scTruncate), Op(op), Ty(ty) { : SCEV(scTruncate), Op(op), Ty(ty) {
assert(Op->getType()->isIntegral() && Ty->isIntegral() && assert(Op->getType()->isInteger() && Ty->isInteger() &&
"Cannot truncate non-integer value!"); "Cannot truncate non-integer value!");
assert(Op->getType()->getPrimitiveSizeInBits() > Ty->getPrimitiveSizeInBits() assert(Op->getType()->getPrimitiveSizeInBits() > Ty->getPrimitiveSizeInBits()
&& "This is not a truncating conversion!"); && "This is not a truncating conversion!");
@ -220,7 +220,7 @@ static ManagedStatic<std::map<std::pair<SCEV*, const Type*>,
SCEVZeroExtendExpr::SCEVZeroExtendExpr(const SCEVHandle &op, const Type *ty) SCEVZeroExtendExpr::SCEVZeroExtendExpr(const SCEVHandle &op, const Type *ty)
: SCEV(scZeroExtend), Op(op), Ty(ty) { : SCEV(scZeroExtend), Op(op), Ty(ty) {
assert(Op->getType()->isIntegral() && Ty->isIntegral() && assert(Op->getType()->isInteger() && Ty->isInteger() &&
"Cannot zero extend non-integer value!"); "Cannot zero extend non-integer value!");
assert(Op->getType()->getPrimitiveSizeInBits() < Ty->getPrimitiveSizeInBits() assert(Op->getType()->getPrimitiveSizeInBits() < Ty->getPrimitiveSizeInBits()
&& "This is not an extending conversion!"); && "This is not an extending conversion!");
@ -459,7 +459,7 @@ SCEVHandle SCEVUnknown::getIntegerSCEV(int Val, const Type *Ty) {
/// extended. /// extended.
static SCEVHandle getTruncateOrZeroExtend(const SCEVHandle &V, const Type *Ty) { static SCEVHandle getTruncateOrZeroExtend(const SCEVHandle &V, const Type *Ty) {
const Type *SrcTy = V->getType(); const Type *SrcTy = V->getType();
assert(SrcTy->isIntegral() && Ty->isIntegral() && assert(SrcTy->isInteger() && Ty->isInteger() &&
"Cannot truncate or zero extend with non-integer arguments!"); "Cannot truncate or zero extend with non-integer arguments!");
if (SrcTy->getPrimitiveSizeInBits() == Ty->getPrimitiveSizeInBits()) if (SrcTy->getPrimitiveSizeInBits() == Ty->getPrimitiveSizeInBits())
return V; // No conversion return V; // No conversion
@ -1333,7 +1333,7 @@ static uint64_t GetConstantFactor(SCEVHandle S) {
if (SCEVTruncateExpr *T = dyn_cast<SCEVTruncateExpr>(S)) if (SCEVTruncateExpr *T = dyn_cast<SCEVTruncateExpr>(S))
return GetConstantFactor(T->getOperand()) & return GetConstantFactor(T->getOperand()) &
T->getType()->getIntegralTypeMask(); T->getType()->getIntegerTypeMask();
if (SCEVZeroExtendExpr *E = dyn_cast<SCEVZeroExtendExpr>(S)) if (SCEVZeroExtendExpr *E = dyn_cast<SCEVZeroExtendExpr>(S))
return GetConstantFactor(E->getOperand()); return GetConstantFactor(E->getOperand());
@ -1421,8 +1421,8 @@ SCEVHandle ScalarEvolutionsImpl::createSCEV(Value *V) {
case Instruction::BitCast: case Instruction::BitCast:
// BitCasts are no-op casts so we just eliminate the cast. // BitCasts are no-op casts so we just eliminate the cast.
if (I->getType()->isIntegral() && if (I->getType()->isInteger() &&
I->getOperand(0)->getType()->isIntegral()) I->getOperand(0)->getType()->isInteger())
return getSCEV(I->getOperand(0)); return getSCEV(I->getOperand(0));
break; break;
@ -2186,7 +2186,7 @@ SCEVHandle ScalarEvolutionsImpl::HowFarToZero(SCEV *V, const Loop *L) {
} }
} }
} }
} else if (AddRec->isQuadratic() && AddRec->getType()->isIntegral()) { } else if (AddRec->isQuadratic() && AddRec->getType()->isInteger()) {
// If this is a quadratic (3-term) AddRec {L,+,M,+,N}, find the roots of // If this is a quadratic (3-term) AddRec {L,+,M,+,N}, find the roots of
// the quadratic equation to solve it. // the quadratic equation to solve it.
std::pair<SCEVHandle,SCEVHandle> Roots = SolveQuadraticEquation(AddRec); std::pair<SCEVHandle,SCEVHandle> Roots = SolveQuadraticEquation(AddRec);
@ -2314,7 +2314,7 @@ HowManyLessThans(SCEV *LHS, SCEV *RHS, const Loop *L) {
} }
if (Cond == ICmpInst::ICMP_SLT) { if (Cond == ICmpInst::ICMP_SLT) {
if (PreCondLHS->getType()->isIntegral()) { if (PreCondLHS->getType()->isInteger()) {
if (RHS != getSCEV(PreCondRHS)) if (RHS != getSCEV(PreCondRHS))
return UnknownValue; // Not a comparison against 'm'. return UnknownValue; // Not a comparison against 'm'.
@ -2567,14 +2567,14 @@ void ScalarEvolution::print(std::ostream &OS, const Module* ) const {
OS << "Classifying expressions for: " << F.getName() << "\n"; OS << "Classifying expressions for: " << F.getName() << "\n";
for (inst_iterator I = inst_begin(F), E = inst_end(F); I != E; ++I) for (inst_iterator I = inst_begin(F), E = inst_end(F); I != E; ++I)
if (I->getType()->isIntegral()) { if (I->getType()->isInteger()) {
OS << *I; OS << *I;
OS << " --> "; OS << " --> ";
SCEVHandle SV = getSCEV(&*I); SCEVHandle SV = getSCEV(&*I);
SV->print(OS); SV->print(OS);
OS << "\t\t"; OS << "\t\t";
if ((*I).getType()->isIntegral()) { if ((*I).getType()->isInteger()) {
ConstantRange Bounds = SV->getValueRange(); ConstantRange Bounds = SV->getValueRange();
if (!Bounds.isFullSet()) if (!Bounds.isFullSet())
OS << "Bounds: " << Bounds << " "; OS << "Bounds: " << Bounds << " ";

View File

@ -92,7 +92,7 @@ Value *SCEVExpander::visitAddRecExpr(SCEVAddRecExpr *S) {
const Type *Ty = S->getType(); const Type *Ty = S->getType();
const Loop *L = S->getLoop(); const Loop *L = S->getLoop();
// We cannot yet do fp recurrences, e.g. the xform of {X,+,F} --> X+{0,+,F} // We cannot yet do fp recurrences, e.g. the xform of {X,+,F} --> X+{0,+,F}
assert(Ty->isIntegral() && "Cannot expand fp recurrences yet!"); assert(Ty->isInteger() && "Cannot expand fp recurrences yet!");
// {X,+,F} --> X + {0,+,F} // {X,+,F} --> X + {0,+,F}
if (!isa<SCEVConstant>(S->getStart()) || if (!isa<SCEVConstant>(S->getStart()) ||

View File

@ -2791,7 +2791,7 @@ case 118:
const llvm::Type* ElemTy = yyvsp[-1].TypeVal->get(); const llvm::Type* ElemTy = yyvsp[-1].TypeVal->get();
if ((unsigned)yyvsp[-3].UInt64Val != yyvsp[-3].UInt64Val) if ((unsigned)yyvsp[-3].UInt64Val != yyvsp[-3].UInt64Val)
GEN_ERROR("Unsigned result not equal to signed result"); GEN_ERROR("Unsigned result not equal to signed result");
if (!ElemTy->isFloatingPoint() && !ElemTy->isIntegral()) if (!ElemTy->isFloatingPoint() && !ElemTy->isInteger())
GEN_ERROR("Element type of a PackedType must be primitive"); GEN_ERROR("Element type of a PackedType must be primitive");
if (!isPowerOf2_32(yyvsp[-3].UInt64Val)) if (!isPowerOf2_32(yyvsp[-3].UInt64Val))
GEN_ERROR("Vector length should be a power of 2!"); GEN_ERROR("Vector length should be a power of 2!");
@ -3359,9 +3359,9 @@ case 156:
{ {
if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType()) if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
GEN_ERROR("Logical operator types must match!"); GEN_ERROR("Logical operator types must match!");
if (!yyvsp[-3].ConstVal->getType()->isIntegral()) { if (!yyvsp[-3].ConstVal->getType()->isInteger()) {
if (!isa<PackedType>(yyvsp[-3].ConstVal->getType()) || if (!isa<PackedType>(yyvsp[-3].ConstVal->getType()) ||
!cast<PackedType>(yyvsp[-3].ConstVal->getType())->getElementType()->isIntegral()) !cast<PackedType>(yyvsp[-3].ConstVal->getType())->getElementType()->isInteger())
GEN_ERROR("Logical operator requires integral operands!"); GEN_ERROR("Logical operator requires integral operands!");
} }
yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
@ -3389,7 +3389,7 @@ case 159:
{ {
if (yyvsp[-1].ConstVal->getType() != Type::Int8Ty) if (yyvsp[-1].ConstVal->getType() != Type::Int8Ty)
GEN_ERROR("Shift count for shift constant must be i8 type!"); GEN_ERROR("Shift count for shift constant must be i8 type!");
if (!yyvsp[-3].ConstVal->getType()->isIntegral()) if (!yyvsp[-3].ConstVal->getType()->isInteger())
GEN_ERROR("Shift constant expression requires integer operand!"); GEN_ERROR("Shift constant expression requires integer operand!");
CHECK_FOR_ERROR; CHECK_FOR_ERROR;
yyval.ConstVal = ConstantExpr::get(yyvsp[-5].OtherOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); yyval.ConstVal = ConstantExpr::get(yyvsp[-5].OtherOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
@ -4371,7 +4371,7 @@ case 261:
{ {
if (!UpRefs.empty()) if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription()); GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
if (!(*yyvsp[-3].TypeVal)->isIntegral() && !(*yyvsp[-3].TypeVal)->isFloatingPoint() && if (!(*yyvsp[-3].TypeVal)->isInteger() && !(*yyvsp[-3].TypeVal)->isFloatingPoint() &&
!isa<PackedType>((*yyvsp[-3].TypeVal).get())) !isa<PackedType>((*yyvsp[-3].TypeVal).get()))
GEN_ERROR( GEN_ERROR(
"Arithmetic operator requires integer, FP, or packed operands!"); "Arithmetic operator requires integer, FP, or packed operands!");
@ -4395,9 +4395,9 @@ case 262:
{ {
if (!UpRefs.empty()) if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription()); GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
if (!(*yyvsp[-3].TypeVal)->isIntegral()) { if (!(*yyvsp[-3].TypeVal)->isInteger()) {
if (!isa<PackedType>(yyvsp[-3].TypeVal->get()) || if (!isa<PackedType>(yyvsp[-3].TypeVal->get()) ||
!cast<PackedType>(yyvsp[-3].TypeVal->get())->getElementType()->isIntegral()) !cast<PackedType>(yyvsp[-3].TypeVal->get())->getElementType()->isInteger())
GEN_ERROR("Logical operator requires integral operands!"); GEN_ERROR("Logical operator requires integral operands!");
} }
Value* tmpVal1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal); Value* tmpVal1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal);
@ -4447,7 +4447,7 @@ case 265:
{ {
if (yyvsp[0].ValueVal->getType() != Type::Int8Ty) if (yyvsp[0].ValueVal->getType() != Type::Int8Ty)
GEN_ERROR("Shift amount must be i8 type!"); GEN_ERROR("Shift amount must be i8 type!");
if (!yyvsp[-2].ValueVal->getType()->isIntegral()) if (!yyvsp[-2].ValueVal->getType()->isInteger())
GEN_ERROR("Shift constant expression requires integer operand!"); GEN_ERROR("Shift constant expression requires integer operand!");
CHECK_FOR_ERROR; CHECK_FOR_ERROR;
yyval.InstVal = new ShiftInst(yyvsp[-3].OtherOpVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal); yyval.InstVal = new ShiftInst(yyvsp[-3].OtherOpVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);

View File

@ -1274,7 +1274,7 @@ Types
const llvm::Type* ElemTy = $4->get(); const llvm::Type* ElemTy = $4->get();
if ((unsigned)$2 != $2) if ((unsigned)$2 != $2)
GEN_ERROR("Unsigned result not equal to signed result"); GEN_ERROR("Unsigned result not equal to signed result");
if (!ElemTy->isFloatingPoint() && !ElemTy->isIntegral()) if (!ElemTy->isFloatingPoint() && !ElemTy->isInteger())
GEN_ERROR("Element type of a PackedType must be primitive"); GEN_ERROR("Element type of a PackedType must be primitive");
if (!isPowerOf2_32($2)) if (!isPowerOf2_32($2))
GEN_ERROR("Vector length should be a power of 2!"); GEN_ERROR("Vector length should be a power of 2!");
@ -1756,9 +1756,9 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' {
| LogicalOps '(' ConstVal ',' ConstVal ')' { | LogicalOps '(' ConstVal ',' ConstVal ')' {
if ($3->getType() != $5->getType()) if ($3->getType() != $5->getType())
GEN_ERROR("Logical operator types must match!"); GEN_ERROR("Logical operator types must match!");
if (!$3->getType()->isIntegral()) { if (!$3->getType()->isInteger()) {
if (!isa<PackedType>($3->getType()) || if (!isa<PackedType>($3->getType()) ||
!cast<PackedType>($3->getType())->getElementType()->isIntegral()) !cast<PackedType>($3->getType())->getElementType()->isInteger())
GEN_ERROR("Logical operator requires integral operands!"); GEN_ERROR("Logical operator requires integral operands!");
} }
$$ = ConstantExpr::get($1, $3, $5); $$ = ConstantExpr::get($1, $3, $5);
@ -1777,7 +1777,7 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' {
| ShiftOps '(' ConstVal ',' ConstVal ')' { | ShiftOps '(' ConstVal ',' ConstVal ')' {
if ($5->getType() != Type::Int8Ty) if ($5->getType() != Type::Int8Ty)
GEN_ERROR("Shift count for shift constant must be i8 type!"); GEN_ERROR("Shift count for shift constant must be i8 type!");
if (!$3->getType()->isIntegral()) if (!$3->getType()->isInteger())
GEN_ERROR("Shift constant expression requires integer operand!"); GEN_ERROR("Shift constant expression requires integer operand!");
CHECK_FOR_ERROR; CHECK_FOR_ERROR;
$$ = ConstantExpr::get($1, $3, $5); $$ = ConstantExpr::get($1, $3, $5);
@ -2573,7 +2573,7 @@ OptTailCall : TAIL CALL {
InstVal : ArithmeticOps Types ValueRef ',' ValueRef { InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
if (!UpRefs.empty()) if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription()); GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription());
if (!(*$2)->isIntegral() && !(*$2)->isFloatingPoint() && if (!(*$2)->isInteger() && !(*$2)->isFloatingPoint() &&
!isa<PackedType>((*$2).get())) !isa<PackedType>((*$2).get()))
GEN_ERROR( GEN_ERROR(
"Arithmetic operator requires integer, FP, or packed operands!"); "Arithmetic operator requires integer, FP, or packed operands!");
@ -2594,9 +2594,9 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
| LogicalOps Types ValueRef ',' ValueRef { | LogicalOps Types ValueRef ',' ValueRef {
if (!UpRefs.empty()) if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription()); GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription());
if (!(*$2)->isIntegral()) { if (!(*$2)->isInteger()) {
if (!isa<PackedType>($2->get()) || if (!isa<PackedType>($2->get()) ||
!cast<PackedType>($2->get())->getElementType()->isIntegral()) !cast<PackedType>($2->get())->getElementType()->isInteger())
GEN_ERROR("Logical operator requires integral operands!"); GEN_ERROR("Logical operator requires integral operands!");
} }
Value* tmpVal1 = getVal(*$2, $3); Value* tmpVal1 = getVal(*$2, $3);
@ -2637,7 +2637,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
| ShiftOps ResolvedVal ',' ResolvedVal { | ShiftOps ResolvedVal ',' ResolvedVal {
if ($4->getType() != Type::Int8Ty) if ($4->getType() != Type::Int8Ty)
GEN_ERROR("Shift amount must be i8 type!"); GEN_ERROR("Shift amount must be i8 type!");
if (!$2->getType()->isIntegral()) if (!$2->getType()->isInteger())
GEN_ERROR("Shift constant expression requires integer operand!"); GEN_ERROR("Shift constant expression requires integer operand!");
CHECK_FOR_ERROR; CHECK_FOR_ERROR;
$$ = new ShiftInst($1, $2, $4); $$ = new ShiftInst($1, $2, $4);

View File

@ -1274,7 +1274,7 @@ Types
const llvm::Type* ElemTy = $4->get(); const llvm::Type* ElemTy = $4->get();
if ((unsigned)$2 != $2) if ((unsigned)$2 != $2)
GEN_ERROR("Unsigned result not equal to signed result"); GEN_ERROR("Unsigned result not equal to signed result");
if (!ElemTy->isFloatingPoint() && !ElemTy->isIntegral()) if (!ElemTy->isFloatingPoint() && !ElemTy->isInteger())
GEN_ERROR("Element type of a PackedType must be primitive"); GEN_ERROR("Element type of a PackedType must be primitive");
if (!isPowerOf2_32($2)) if (!isPowerOf2_32($2))
GEN_ERROR("Vector length should be a power of 2!"); GEN_ERROR("Vector length should be a power of 2!");
@ -1756,9 +1756,9 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' {
| LogicalOps '(' ConstVal ',' ConstVal ')' { | LogicalOps '(' ConstVal ',' ConstVal ')' {
if ($3->getType() != $5->getType()) if ($3->getType() != $5->getType())
GEN_ERROR("Logical operator types must match!"); GEN_ERROR("Logical operator types must match!");
if (!$3->getType()->isIntegral()) { if (!$3->getType()->isInteger()) {
if (!isa<PackedType>($3->getType()) || if (!isa<PackedType>($3->getType()) ||
!cast<PackedType>($3->getType())->getElementType()->isIntegral()) !cast<PackedType>($3->getType())->getElementType()->isInteger())
GEN_ERROR("Logical operator requires integral operands!"); GEN_ERROR("Logical operator requires integral operands!");
} }
$$ = ConstantExpr::get($1, $3, $5); $$ = ConstantExpr::get($1, $3, $5);
@ -1777,7 +1777,7 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' {
| ShiftOps '(' ConstVal ',' ConstVal ')' { | ShiftOps '(' ConstVal ',' ConstVal ')' {
if ($5->getType() != Type::Int8Ty) if ($5->getType() != Type::Int8Ty)
GEN_ERROR("Shift count for shift constant must be i8 type!"); GEN_ERROR("Shift count for shift constant must be i8 type!");
if (!$3->getType()->isIntegral()) if (!$3->getType()->isInteger())
GEN_ERROR("Shift constant expression requires integer operand!"); GEN_ERROR("Shift constant expression requires integer operand!");
CHECK_FOR_ERROR; CHECK_FOR_ERROR;
$$ = ConstantExpr::get($1, $3, $5); $$ = ConstantExpr::get($1, $3, $5);
@ -2573,7 +2573,7 @@ OptTailCall : TAIL CALL {
InstVal : ArithmeticOps Types ValueRef ',' ValueRef { InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
if (!UpRefs.empty()) if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription()); GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription());
if (!(*$2)->isIntegral() && !(*$2)->isFloatingPoint() && if (!(*$2)->isInteger() && !(*$2)->isFloatingPoint() &&
!isa<PackedType>((*$2).get())) !isa<PackedType>((*$2).get()))
GEN_ERROR( GEN_ERROR(
"Arithmetic operator requires integer, FP, or packed operands!"); "Arithmetic operator requires integer, FP, or packed operands!");
@ -2594,9 +2594,9 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
| LogicalOps Types ValueRef ',' ValueRef { | LogicalOps Types ValueRef ',' ValueRef {
if (!UpRefs.empty()) if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription()); GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription());
if (!(*$2)->isIntegral()) { if (!(*$2)->isInteger()) {
if (!isa<PackedType>($2->get()) || if (!isa<PackedType>($2->get()) ||
!cast<PackedType>($2->get())->getElementType()->isIntegral()) !cast<PackedType>($2->get())->getElementType()->isInteger())
GEN_ERROR("Logical operator requires integral operands!"); GEN_ERROR("Logical operator requires integral operands!");
} }
Value* tmpVal1 = getVal(*$2, $3); Value* tmpVal1 = getVal(*$2, $3);
@ -2637,7 +2637,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
| ShiftOps ResolvedVal ',' ResolvedVal { | ShiftOps ResolvedVal ',' ResolvedVal {
if ($4->getType() != Type::Int8Ty) if ($4->getType() != Type::Int8Ty)
GEN_ERROR("Shift amount must be i8 type!"); GEN_ERROR("Shift amount must be i8 type!");
if (!$2->getType()->isIntegral()) if (!$2->getType()->isInteger())
GEN_ERROR("Shift constant expression requires integer operand!"); GEN_ERROR("Shift constant expression requires integer operand!");
CHECK_FOR_ERROR; CHECK_FOR_ERROR;
$$ = new ShiftInst($1, $2, $4); $$ = new ShiftInst($1, $2, $4);

View File

@ -292,7 +292,7 @@ void BytecodeWriter::outputType(const Type *T) {
} }
void BytecodeWriter::outputConstant(const Constant *CPV) { void BytecodeWriter::outputConstant(const Constant *CPV) {
assert(((CPV->getType()->isPrimitiveType() || CPV->getType()->isIntegral()) || assert(((CPV->getType()->isPrimitiveType() || CPV->getType()->isInteger()) ||
!CPV->isNullValue()) && "Shouldn't output null constants!"); !CPV->isNullValue()) && "Shouldn't output null constants!");
// We must check for a ConstantExpr before switching by type because // We must check for a ConstantExpr before switching by type because

View File

@ -455,7 +455,7 @@ void AsmPrinter::EmitConstantValueOnly(const Constant *CV) {
// We can emit the pointer value into this slot if the slot is an // We can emit the pointer value into this slot if the slot is an
// integer slot greater or equal to the size of the pointer. // integer slot greater or equal to the size of the pointer.
if (Ty->isIntegral() && if (Ty->isInteger() &&
TD->getTypeSize(Ty) >= TD->getTypeSize(Op->getType())) TD->getTypeSize(Ty) >= TD->getTypeSize(Op->getType()))
return EmitConstantValueOnly(Op); return EmitConstantValueOnly(Op);

View File

@ -107,7 +107,7 @@ void IntrinsicLowering::AddPrototypes(Module &M) {
/// LowerBSWAP - Emit the code to lower bswap of V before the specified /// LowerBSWAP - Emit the code to lower bswap of V before the specified
/// instruction IP. /// instruction IP.
static Value *LowerBSWAP(Value *V, Instruction *IP) { static Value *LowerBSWAP(Value *V, Instruction *IP) {
assert(V->getType()->isIntegral() && "Can't bswap a non-integer type!"); assert(V->getType()->isInteger() && "Can't bswap a non-integer type!");
unsigned BitSize = V->getType()->getPrimitiveSizeInBits(); unsigned BitSize = V->getType()->getPrimitiveSizeInBits();
@ -193,7 +193,7 @@ static Value *LowerBSWAP(Value *V, Instruction *IP) {
/// LowerCTPOP - Emit the code to lower ctpop of V before the specified /// LowerCTPOP - Emit the code to lower ctpop of V before the specified
/// instruction IP. /// instruction IP.
static Value *LowerCTPOP(Value *V, Instruction *IP) { static Value *LowerCTPOP(Value *V, Instruction *IP) {
assert(V->getType()->isIntegral() && "Can't ctpop a non-integer type!"); assert(V->getType()->isInteger() && "Can't ctpop a non-integer type!");
static const uint64_t MaskValues[6] = { static const uint64_t MaskValues[6] = {
0x5555555555555555ULL, 0x3333333333333333ULL, 0x5555555555555555ULL, 0x3333333333333333ULL,

View File

@ -891,7 +891,7 @@ void Interpreter::popStackAndReturnValueToCaller (const Type *RetTy,
ECStack.pop_back(); ECStack.pop_back();
if (ECStack.empty()) { // Finished main. Put result into exit code... if (ECStack.empty()) { // Finished main. Put result into exit code...
if (RetTy && RetTy->isIntegral()) { // Nonvoid return type? if (RetTy && RetTy->isInteger()) { // Nonvoid return type?
ExitValue = Result; // Capture the exit value of the program ExitValue = Result; // Capture the exit value of the program
} else { } else {
memset(&ExitValue, 0, sizeof(ExitValue)); memset(&ExitValue, 0, sizeof(ExitValue));
@ -1170,7 +1170,7 @@ void Interpreter::visitCallSite(CallSite CS) {
// this by zero or sign extending the value as appropriate according to the // this by zero or sign extending the value as appropriate according to the
// source type. // source type.
const Type *Ty = V->getType(); const Type *Ty = V->getType();
if (Ty->isIntegral()) { if (Ty->isInteger()) {
if (Ty->getPrimitiveSizeInBits() == 1) if (Ty->getPrimitiveSizeInBits() == 1)
ArgVals.back().Int32Val = ArgVals.back().Int1Val; ArgVals.back().Int32Val = ArgVals.back().Int1Val;
else if (Ty->getPrimitiveSizeInBits() <= 8) else if (Ty->getPrimitiveSizeInBits() <= 8)
@ -1541,14 +1541,14 @@ GenericValue Interpreter::executeBitCastInst(Value *SrcVal, const Type *DstTy,
if (isa<PointerType>(DstTy)) { if (isa<PointerType>(DstTy)) {
assert(isa<PointerType>(SrcTy) && "Invalid BitCast"); assert(isa<PointerType>(SrcTy) && "Invalid BitCast");
Dest.PointerVal = Src.PointerVal; Dest.PointerVal = Src.PointerVal;
} else if (DstTy->isIntegral()) { } else if (DstTy->isInteger()) {
const IntegerType *DITy = cast<IntegerType>(DstTy); const IntegerType *DITy = cast<IntegerType>(DstTy);
unsigned DBitWidth = DITy->getBitWidth(); unsigned DBitWidth = DITy->getBitWidth();
if (SrcTy == Type::FloatTy) { if (SrcTy == Type::FloatTy) {
Dest.Int32Val = FloatToBits(Src.FloatVal); Dest.Int32Val = FloatToBits(Src.FloatVal);
} else if (SrcTy == Type::DoubleTy) { } else if (SrcTy == Type::DoubleTy) {
Dest.Int64Val = DoubleToBits(Src.DoubleVal); Dest.Int64Val = DoubleToBits(Src.DoubleVal);
} else if (SrcTy->isIntegral()) { } else if (SrcTy->isInteger()) {
const IntegerType *SITy = cast<IntegerType>(SrcTy); const IntegerType *SITy = cast<IntegerType>(SrcTy);
unsigned SBitWidth = SITy->getBitWidth(); unsigned SBitWidth = SITy->getBitWidth();
assert(SBitWidth <= 64 && "Integer types > 64 bits not supported"); assert(SBitWidth <= 64 && "Integer types > 64 bits not supported");
@ -1566,12 +1566,12 @@ GenericValue Interpreter::executeBitCastInst(Value *SrcVal, const Type *DstTy,
} else } else
assert(0 && "Invalid BitCast"); assert(0 && "Invalid BitCast");
} else if (DstTy == Type::FloatTy) { } else if (DstTy == Type::FloatTy) {
if (SrcTy->isIntegral()) if (SrcTy->isInteger())
Dest.FloatVal = BitsToFloat(Src.Int32Val); Dest.FloatVal = BitsToFloat(Src.Int32Val);
else else
Dest.FloatVal = Src.FloatVal; Dest.FloatVal = Src.FloatVal;
} else if (DstTy == Type::DoubleTy) { } else if (DstTy == Type::DoubleTy) {
if (SrcTy->isIntegral()) if (SrcTy->isInteger())
Dest.DoubleVal = BitsToDouble(Src.Int64Val); Dest.DoubleVal = BitsToDouble(Src.Int64Val);
else else
Dest.DoubleVal = Src.DoubleVal; Dest.DoubleVal = Src.DoubleVal;

View File

@ -31,7 +31,7 @@
using namespace llvm; using namespace llvm;
static ConstantInt *getMaxValue(const Type *Ty, bool isSigned = false) { static ConstantInt *getMaxValue(const Type *Ty, bool isSigned = false) {
if (Ty->isIntegral()) { if (Ty->isInteger()) {
if (isSigned) { if (isSigned) {
// Calculate 011111111111111... // Calculate 011111111111111...
unsigned TypeBits = Ty->getPrimitiveSizeInBits(); unsigned TypeBits = Ty->getPrimitiveSizeInBits();
@ -46,7 +46,7 @@ static ConstantInt *getMaxValue(const Type *Ty, bool isSigned = false) {
// Static constructor to create the minimum constant for an integral type... // Static constructor to create the minimum constant for an integral type...
static ConstantInt *getMinValue(const Type *Ty, bool isSigned = false) { static ConstantInt *getMinValue(const Type *Ty, bool isSigned = false) {
if (Ty->isIntegral()) { if (Ty->isInteger()) {
if (isSigned) { if (isSigned) {
// Calculate 1111111111000000000000 // Calculate 1111111111000000000000
unsigned TypeBits = Ty->getPrimitiveSizeInBits(); unsigned TypeBits = Ty->getPrimitiveSizeInBits();
@ -93,7 +93,7 @@ static ConstantInt *Max(ConstantInt *A, ConstantInt *B,
/// Initialize a full (the default) or empty set for the specified type. /// Initialize a full (the default) or empty set for the specified type.
/// ///
ConstantRange::ConstantRange(const Type *Ty, bool Full) { ConstantRange::ConstantRange(const Type *Ty, bool Full) {
assert(Ty->isIntegral() && assert(Ty->isInteger() &&
"Cannot make constant range of non-integral type!"); "Cannot make constant range of non-integral type!");
if (Full) if (Full)
Lower = Upper = getMaxValue(Ty); Lower = Upper = getMaxValue(Ty);
@ -225,7 +225,7 @@ bool ConstantRange::contains(ConstantInt *Val, bool isSigned) const {
/// subtract - Subtract the specified constant from the endpoints of this /// subtract - Subtract the specified constant from the endpoints of this
/// constant range. /// constant range.
ConstantRange ConstantRange::subtract(ConstantInt *CI) const { ConstantRange ConstantRange::subtract(ConstantInt *CI) const {
assert(CI->getType() == getType() && getType()->isIntegral() && assert(CI->getType() == getType() && getType()->isInteger() &&
"Cannot subtract from different type range or non-integer!"); "Cannot subtract from different type range or non-integer!");
// If the set is empty or full, don't modify the endpoints. // If the set is empty or full, don't modify the endpoints.
if (Lower == Upper) return *this; if (Lower == Upper) return *this;

View File

@ -366,7 +366,7 @@ void CWriter::printStructReturnPointerFunctionType(std::ostream &Out,
std::ostream & std::ostream &
CWriter::printSimpleType(std::ostream &Out, const Type *Ty, bool isSigned, CWriter::printSimpleType(std::ostream &Out, const Type *Ty, bool isSigned,
const std::string &NameSoFar) { const std::string &NameSoFar) {
assert((Ty->isPrimitiveType() || Ty->isIntegral()) && assert((Ty->isPrimitiveType() || Ty->isInteger()) &&
"Invalid type for printSimpleType"); "Invalid type for printSimpleType");
switch (Ty->getTypeID()) { switch (Ty->getTypeID()) {
case Type::VoidTyID: return Out << "void " << NameSoFar; case Type::VoidTyID: return Out << "void " << NameSoFar;
@ -399,7 +399,7 @@ CWriter::printSimpleType(std::ostream &Out, const Type *Ty, bool isSigned,
std::ostream &CWriter::printType(std::ostream &Out, const Type *Ty, std::ostream &CWriter::printType(std::ostream &Out, const Type *Ty,
bool isSigned, const std::string &NameSoFar, bool isSigned, const std::string &NameSoFar,
bool IgnoreName) { bool IgnoreName) {
if (Ty->isPrimitiveType() || Ty->isIntegral()) { if (Ty->isPrimitiveType() || Ty->isInteger()) {
printSimpleType(Out, Ty, isSigned, NameSoFar); printSimpleType(Out, Ty, isSigned, NameSoFar);
return Out; return Out;
} }
@ -1022,7 +1022,7 @@ bool CWriter::printConstExprCast(const ConstantExpr* CE) {
} }
if (NeedsExplicitCast) { if (NeedsExplicitCast) {
Out << "(("; Out << "((";
if (Ty->isIntegral() && Ty != Type::Int1Ty) if (Ty->isInteger() && Ty != Type::Int1Ty)
printSimpleType(Out, Ty, TypeIsSigned); printSimpleType(Out, Ty, TypeIsSigned);
else else
printType(Out, Ty); // not integer, sign doesn't matter printType(Out, Ty); // not integer, sign doesn't matter
@ -1225,7 +1225,7 @@ void CWriter::writeOperandWithCast(Value* Operand, ICmpInst::Predicate predicate
// operand. // operand.
if (shouldCast) { if (shouldCast) {
Out << "(("; Out << "((";
if (OpTy->isIntegral() && OpTy != Type::Int1Ty) if (OpTy->isInteger() && OpTy != Type::Int1Ty)
printSimpleType(Out, OpTy, castIsSigned); printSimpleType(Out, OpTy, castIsSigned);
else else
printType(Out, OpTy); // not integer, sign doesn't matter printType(Out, OpTy); // not integer, sign doesn't matter
@ -1727,7 +1727,7 @@ void CWriter::printModuleTypes(const TypeSymbolTable &TST) {
void CWriter::printContainedStructs(const Type *Ty, void CWriter::printContainedStructs(const Type *Ty,
std::set<const StructType*> &StructPrinted){ std::set<const StructType*> &StructPrinted){
// Don't walk through pointers. // Don't walk through pointers.
if (isa<PointerType>(Ty) || Ty->isPrimitiveType() || Ty->isIntegral()) return; if (isa<PointerType>(Ty) || Ty->isPrimitiveType() || Ty->isInteger()) return;
// Print all contained types first. // Print all contained types first.
for (Type::subtype_iterator I = Ty->subtype_begin(), for (Type::subtype_iterator I = Ty->subtype_begin(),
@ -1848,8 +1848,8 @@ static inline bool isFPIntBitCast(const Instruction &I) {
return false; return false;
const Type *SrcTy = I.getOperand(0)->getType(); const Type *SrcTy = I.getOperand(0)->getType();
const Type *DstTy = I.getType(); const Type *DstTy = I.getType();
return (SrcTy->isFloatingPoint() && DstTy->isIntegral()) || return (SrcTy->isFloatingPoint() && DstTy->isInteger()) ||
(DstTy->isFloatingPoint() && SrcTy->isIntegral()); (DstTy->isFloatingPoint() && SrcTy->isInteger());
} }
void CWriter::printFunction(Function &F) { void CWriter::printFunction(Function &F) {

View File

@ -174,7 +174,7 @@ bool X86TargetAsmInfo::LowerToBSwap(CallInst *CI) const {
// Verify this is a simple bswap. // Verify this is a simple bswap.
if (CI->getNumOperands() != 2 || if (CI->getNumOperands() != 2 ||
CI->getType() != CI->getOperand(1)->getType() || CI->getType() != CI->getOperand(1)->getType() ||
!CI->getType()->isIntegral()) !CI->getType()->isInteger())
return false; return false;
const Type *Ty = CI->getType(); const Type *Ty = CI->getType();

View File

@ -69,19 +69,19 @@ bool llvm::ExpressionConvertibleToType(Value *V, const Type *Ty,
case Instruction::Add: case Instruction::Add:
case Instruction::Sub: case Instruction::Sub:
if (!Ty->isIntegral() && !Ty->isFloatingPoint()) return false; if (!Ty->isInteger() && !Ty->isFloatingPoint()) return false;
if (!ExpressionConvertibleToType(I->getOperand(0), Ty, CTMap, TD) || if (!ExpressionConvertibleToType(I->getOperand(0), Ty, CTMap, TD) ||
!ExpressionConvertibleToType(I->getOperand(1), Ty, CTMap, TD)) !ExpressionConvertibleToType(I->getOperand(1), Ty, CTMap, TD))
return false; return false;
break; break;
case Instruction::LShr: case Instruction::LShr:
case Instruction::AShr: case Instruction::AShr:
if (!Ty->isIntegral()) return false; if (!Ty->isInteger()) return false;
if (!ExpressionConvertibleToType(I->getOperand(0), Ty, CTMap, TD)) if (!ExpressionConvertibleToType(I->getOperand(0), Ty, CTMap, TD))
return false; return false;
break; break;
case Instruction::Shl: case Instruction::Shl:
if (!Ty->isIntegral()) return false; if (!Ty->isInteger()) return false;
if (!ExpressionConvertibleToType(I->getOperand(0), Ty, CTMap, TD)) if (!ExpressionConvertibleToType(I->getOperand(0), Ty, CTMap, TD))
return false; return false;
break; break;
@ -458,7 +458,7 @@ static bool OperandConvertibleToType(User *U, Value *V, const Type *Ty,
case Instruction::Add: case Instruction::Add:
case Instruction::Sub: { case Instruction::Sub: {
if (!Ty->isIntegral() && !Ty->isFloatingPoint()) return false; if (!Ty->isInteger() && !Ty->isFloatingPoint()) return false;
Value *OtherOp = I->getOperand((V == I->getOperand(0)) ? 1 : 0); Value *OtherOp = I->getOperand((V == I->getOperand(0)) ? 1 : 0);
return ValueConvertibleToType(I, Ty, CTMap, TD) && return ValueConvertibleToType(I, Ty, CTMap, TD) &&
@ -476,7 +476,7 @@ static bool OperandConvertibleToType(User *U, Value *V, const Type *Ty,
case Instruction::AShr: case Instruction::AShr:
case Instruction::Shl: case Instruction::Shl:
if (I->getOperand(1) == V) return false; // Cannot change shift amount type if (I->getOperand(1) == V) return false; // Cannot change shift amount type
if (!Ty->isIntegral()) return false; if (!Ty->isInteger()) return false;
return ValueConvertibleToType(I, Ty, CTMap, TD); return ValueConvertibleToType(I, Ty, CTMap, TD);
case Instruction::Free: case Instruction::Free:
@ -576,7 +576,7 @@ static bool OperandConvertibleToType(User *U, Value *V, const Type *Ty,
// Can convert store if the incoming value is convertible and if the // Can convert store if the incoming value is convertible and if the
// result will preserve semantics... // result will preserve semantics...
const Type *Op0Ty = I->getOperand(0)->getType(); const Type *Op0Ty = I->getOperand(0)->getType();
if (!(Op0Ty->isIntegral() ^ ElTy->isIntegral()) && if (!(Op0Ty->isInteger() ^ ElTy->isInteger()) &&
!(Op0Ty->isFloatingPoint() ^ ElTy->isFloatingPoint())) !(Op0Ty->isFloatingPoint() ^ ElTy->isFloatingPoint()))
return ExpressionConvertibleToType(I->getOperand(0), ElTy, CTMap, TD); return ExpressionConvertibleToType(I->getOperand(0), ElTy, CTMap, TD);
} }

View File

@ -52,13 +52,13 @@ ModulePass *llvm::createDeadTypeEliminationPass() {
// //
static inline bool ShouldNukeSymtabEntry(const Type *Ty){ static inline bool ShouldNukeSymtabEntry(const Type *Ty){
// Nuke all names for primitive types! // Nuke all names for primitive types!
if (Ty->isPrimitiveType() || Ty->isIntegral()) if (Ty->isPrimitiveType() || Ty->isInteger())
return true; return true;
// Nuke all pointers to primitive types as well... // Nuke all pointers to primitive types as well...
if (const PointerType *PT = dyn_cast<PointerType>(Ty)) if (const PointerType *PT = dyn_cast<PointerType>(Ty))
if (PT->getElementType()->isPrimitiveType() || if (PT->getElementType()->isPrimitiveType() ||
PT->getElementType()->isIntegral()) PT->getElementType()->isInteger())
return true; return true;
return false; return false;

View File

@ -398,7 +398,7 @@ struct ExitInMainOptimization : public LibCallOptimization {
// Make sure the called function looks like exit (int argument, int return // Make sure the called function looks like exit (int argument, int return
// type, external linkage, not varargs). // type, external linkage, not varargs).
virtual bool ValidateCalledFunction(const Function *F, SimplifyLibCalls &SLC){ virtual bool ValidateCalledFunction(const Function *F, SimplifyLibCalls &SLC){
return F->arg_size() >= 1 && F->arg_begin()->getType()->isIntegral(); return F->arg_size() >= 1 && F->arg_begin()->getType()->isInteger();
} }
virtual bool OptimizeCall(CallInst* ci, SimplifyLibCalls& SLC) { virtual bool OptimizeCall(CallInst* ci, SimplifyLibCalls& SLC) {
@ -960,8 +960,8 @@ struct memcmpOptimization : public LibCallOptimization {
Function::const_arg_iterator AI = F->arg_begin(); Function::const_arg_iterator AI = F->arg_begin();
if (F->arg_size() != 3 || !isa<PointerType>(AI->getType())) return false; if (F->arg_size() != 3 || !isa<PointerType>(AI->getType())) return false;
if (!isa<PointerType>((++AI)->getType())) return false; if (!isa<PointerType>((++AI)->getType())) return false;
if (!(++AI)->getType()->isIntegral()) return false; if (!(++AI)->getType()->isInteger()) return false;
if (!F->getReturnType()->isIntegral()) return false; if (!F->getReturnType()->isInteger()) return false;
return true; return true;
} }
@ -1725,8 +1725,8 @@ public:
: LibCallOptimization("isascii", "Number of 'isascii' calls simplified") {} : LibCallOptimization("isascii", "Number of 'isascii' calls simplified") {}
virtual bool ValidateCalledFunction(const Function *F, SimplifyLibCalls &SLC){ virtual bool ValidateCalledFunction(const Function *F, SimplifyLibCalls &SLC){
return F->arg_size() == 1 && F->arg_begin()->getType()->isIntegral() && return F->arg_size() == 1 && F->arg_begin()->getType()->isInteger() &&
F->getReturnType()->isIntegral(); F->getReturnType()->isInteger();
} }
/// @brief Perform the isascii optimization. /// @brief Perform the isascii optimization.

View File

@ -111,7 +111,7 @@ namespace {
Value *Replacement; Value *Replacement;
public: public:
ValueInfo(const Type *Ty) ValueInfo(const Type *Ty)
: Bounds(Ty->isIntegral() ? Ty : Type::Int32Ty), Replacement(0) {} : Bounds(Ty->isInteger() ? Ty : Type::Int32Ty), Replacement(0) {}
// getBounds() - Return the constant bounds of the value... // getBounds() - Return the constant bounds of the value...
const ConstantRange &getBounds() const { return Bounds; } const ConstantRange &getBounds() const { return Bounds; }

View File

@ -325,7 +325,7 @@ void IndVarSimplify::RewriteLoopExitValues(Loop *L) {
if (LI->getLoopFor(L->getBlocks()[i]) == L) { // Not in a subloop... if (LI->getLoopFor(L->getBlocks()[i]) == L) { // Not in a subloop...
BasicBlock *BB = L->getBlocks()[i]; BasicBlock *BB = L->getBlocks()[i];
for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E;) { for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E;) {
if (I->getType()->isIntegral()) { // Is an integer instruction if (I->getType()->isInteger()) { // Is an integer instruction
SCEVHandle SH = SE->getSCEV(I); SCEVHandle SH = SE->getSCEV(I);
if (SH->hasComputableLoopEvolution(L) || // Varies predictably if (SH->hasComputableLoopEvolution(L) || // Varies predictably
HasConstantItCount) { HasConstantItCount) {
@ -460,7 +460,7 @@ void IndVarSimplify::runOnLoop(Loop *L) {
for (BasicBlock::iterator I = Header->begin(); isa<PHINode>(I); ++I) { for (BasicBlock::iterator I = Header->begin(); isa<PHINode>(I); ++I) {
PHINode *PN = cast<PHINode>(I); PHINode *PN = cast<PHINode>(I);
if (PN->getType()->isIntegral()) { // FIXME: when we have fast-math, enable! if (PN->getType()->isInteger()) { // FIXME: when we have fast-math, enable!
SCEVHandle SCEV = SE->getSCEV(PN); SCEVHandle SCEV = SE->getSCEV(PN);
if (SCEV->hasComputableLoopEvolution(L)) if (SCEV->hasComputableLoopEvolution(L))
// FIXME: It is an extremely bad idea to indvar substitute anything more // FIXME: It is an extremely bad idea to indvar substitute anything more
@ -574,7 +574,7 @@ void IndVarSimplify::runOnLoop(Loop *L) {
if (LI->getLoopFor(L->getBlocks()[i]) == L) { // Not in a subloop... if (LI->getLoopFor(L->getBlocks()[i]) == L) { // Not in a subloop...
BasicBlock *BB = L->getBlocks()[i]; BasicBlock *BB = L->getBlocks()[i];
for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I) for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I)
if (I->getType()->isIntegral() && // Is an integer instruction if (I->getType()->isInteger() && // Is an integer instruction
!I->use_empty() && !I->use_empty() &&
!Rewriter.isInsertedInstruction(I)) { !Rewriter.isInsertedInstruction(I)) {
SCEVHandle SH = SE->getSCEV(I); SCEVHandle SH = SE->getSCEV(I);

View File

@ -495,7 +495,7 @@ static inline Value *dyn_castNotVal(Value *V) {
// Otherwise, return null. // Otherwise, return null.
// //
static inline Value *dyn_castFoldableMul(Value *V, ConstantInt *&CST) { static inline Value *dyn_castFoldableMul(Value *V, ConstantInt *&CST) {
if (V->hasOneUse() && V->getType()->isIntegral()) if (V->hasOneUse() && V->getType()->isInteger())
if (Instruction *I = dyn_cast<Instruction>(V)) { if (Instruction *I = dyn_cast<Instruction>(V)) {
if (I->getOpcode() == Instruction::Mul) if (I->getOpcode() == Instruction::Mul)
if ((CST = dyn_cast<ConstantInt>(I->getOperand(1)))) if ((CST = dyn_cast<ConstantInt>(I->getOperand(1))))
@ -558,7 +558,7 @@ static void ComputeMaskedBits(Value *V, uint64_t Mask, uint64_t &KnownZero,
Instruction *I = dyn_cast<Instruction>(V); Instruction *I = dyn_cast<Instruction>(V);
if (!I) return; if (!I) return;
Mask &= V->getType()->getIntegralTypeMask(); Mask &= V->getType()->getIntegerTypeMask();
switch (I->getOpcode()) { switch (I->getOpcode()) {
case Instruction::And: case Instruction::And:
@ -624,7 +624,7 @@ static void ComputeMaskedBits(Value *V, uint64_t Mask, uint64_t &KnownZero,
return; return;
case Instruction::BitCast: { case Instruction::BitCast: {
const Type *SrcTy = I->getOperand(0)->getType(); const Type *SrcTy = I->getOperand(0)->getType();
if (SrcTy->isIntegral()) { if (SrcTy->isInteger()) {
ComputeMaskedBits(I->getOperand(0), Mask, KnownZero, KnownOne, Depth+1); ComputeMaskedBits(I->getOperand(0), Mask, KnownZero, KnownOne, Depth+1);
return; return;
} }
@ -633,10 +633,10 @@ static void ComputeMaskedBits(Value *V, uint64_t Mask, uint64_t &KnownZero,
case Instruction::ZExt: { case Instruction::ZExt: {
// Compute the bits in the result that are not present in the input. // Compute the bits in the result that are not present in the input.
const Type *SrcTy = I->getOperand(0)->getType(); const Type *SrcTy = I->getOperand(0)->getType();
uint64_t NotIn = ~SrcTy->getIntegralTypeMask(); uint64_t NotIn = ~SrcTy->getIntegerTypeMask();
uint64_t NewBits = I->getType()->getIntegralTypeMask() & NotIn; uint64_t NewBits = I->getType()->getIntegerTypeMask() & NotIn;
Mask &= SrcTy->getIntegralTypeMask(); Mask &= SrcTy->getIntegerTypeMask();
ComputeMaskedBits(I->getOperand(0), Mask, KnownZero, KnownOne, Depth+1); ComputeMaskedBits(I->getOperand(0), Mask, KnownZero, KnownOne, Depth+1);
assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?"); assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
// The top bits are known to be zero. // The top bits are known to be zero.
@ -646,10 +646,10 @@ static void ComputeMaskedBits(Value *V, uint64_t Mask, uint64_t &KnownZero,
case Instruction::SExt: { case Instruction::SExt: {
// Compute the bits in the result that are not present in the input. // Compute the bits in the result that are not present in the input.
const Type *SrcTy = I->getOperand(0)->getType(); const Type *SrcTy = I->getOperand(0)->getType();
uint64_t NotIn = ~SrcTy->getIntegralTypeMask(); uint64_t NotIn = ~SrcTy->getIntegerTypeMask();
uint64_t NewBits = I->getType()->getIntegralTypeMask() & NotIn; uint64_t NewBits = I->getType()->getIntegerTypeMask() & NotIn;
Mask &= SrcTy->getIntegralTypeMask(); Mask &= SrcTy->getIntegerTypeMask();
ComputeMaskedBits(I->getOperand(0), Mask, KnownZero, KnownOne, Depth+1); ComputeMaskedBits(I->getOperand(0), Mask, KnownZero, KnownOne, Depth+1);
assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?"); assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
@ -766,7 +766,7 @@ static void ComputeSignedMinMaxValuesFromKnownBits(const Type *Ty,
uint64_t KnownZero, uint64_t KnownZero,
uint64_t KnownOne, uint64_t KnownOne,
int64_t &Min, int64_t &Max) { int64_t &Min, int64_t &Max) {
uint64_t TypeBits = Ty->getIntegralTypeMask(); uint64_t TypeBits = Ty->getIntegerTypeMask();
uint64_t UnknownBits = ~(KnownZero|KnownOne) & TypeBits; uint64_t UnknownBits = ~(KnownZero|KnownOne) & TypeBits;
uint64_t SignBit = 1ULL << (Ty->getPrimitiveSizeInBits()-1); uint64_t SignBit = 1ULL << (Ty->getPrimitiveSizeInBits()-1);
@ -796,7 +796,7 @@ static void ComputeUnsignedMinMaxValuesFromKnownBits(const Type *Ty,
uint64_t KnownOne, uint64_t KnownOne,
uint64_t &Min, uint64_t &Min,
uint64_t &Max) { uint64_t &Max) {
uint64_t TypeBits = Ty->getIntegralTypeMask(); uint64_t TypeBits = Ty->getIntegerTypeMask();
uint64_t UnknownBits = ~(KnownZero|KnownOne) & TypeBits; uint64_t UnknownBits = ~(KnownZero|KnownOne) & TypeBits;
// The minimum value is when the unknown bits are all zeros. // The minimum value is when the unknown bits are all zeros.
@ -831,7 +831,7 @@ bool InstCombiner::SimplifyDemandedBits(Value *V, uint64_t DemandedMask,
} }
// If this is the root being simplified, allow it to have multiple uses, // If this is the root being simplified, allow it to have multiple uses,
// just set the DemandedMask to all bits. // just set the DemandedMask to all bits.
DemandedMask = V->getType()->getIntegralTypeMask(); DemandedMask = V->getType()->getIntegerTypeMask();
} else if (DemandedMask == 0) { // Not demanding any bits from V. } else if (DemandedMask == 0) { // Not demanding any bits from V.
if (V != UndefValue::get(V->getType())) if (V != UndefValue::get(V->getType()))
return UpdateValueUsesWith(V, UndefValue::get(V->getType())); return UpdateValueUsesWith(V, UndefValue::get(V->getType()));
@ -843,7 +843,7 @@ bool InstCombiner::SimplifyDemandedBits(Value *V, uint64_t DemandedMask,
Instruction *I = dyn_cast<Instruction>(V); Instruction *I = dyn_cast<Instruction>(V);
if (!I) return false; // Only analyze instructions. if (!I) return false; // Only analyze instructions.
DemandedMask &= V->getType()->getIntegralTypeMask(); DemandedMask &= V->getType()->getIntegerTypeMask();
uint64_t KnownZero2 = 0, KnownOne2 = 0; uint64_t KnownZero2 = 0, KnownOne2 = 0;
switch (I->getOpcode()) { switch (I->getOpcode()) {
@ -1001,7 +1001,7 @@ bool InstCombiner::SimplifyDemandedBits(Value *V, uint64_t DemandedMask,
assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?"); assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
break; break;
case Instruction::BitCast: case Instruction::BitCast:
if (!I->getOperand(0)->getType()->isIntegral()) if (!I->getOperand(0)->getType()->isInteger())
return false; return false;
if (SimplifyDemandedBits(I->getOperand(0), DemandedMask, if (SimplifyDemandedBits(I->getOperand(0), DemandedMask,
@ -1012,10 +1012,10 @@ bool InstCombiner::SimplifyDemandedBits(Value *V, uint64_t DemandedMask,
case Instruction::ZExt: { case Instruction::ZExt: {
// Compute the bits in the result that are not present in the input. // Compute the bits in the result that are not present in the input.
const Type *SrcTy = I->getOperand(0)->getType(); const Type *SrcTy = I->getOperand(0)->getType();
uint64_t NotIn = ~SrcTy->getIntegralTypeMask(); uint64_t NotIn = ~SrcTy->getIntegerTypeMask();
uint64_t NewBits = I->getType()->getIntegralTypeMask() & NotIn; uint64_t NewBits = I->getType()->getIntegerTypeMask() & NotIn;
DemandedMask &= SrcTy->getIntegralTypeMask(); DemandedMask &= SrcTy->getIntegerTypeMask();
if (SimplifyDemandedBits(I->getOperand(0), DemandedMask, if (SimplifyDemandedBits(I->getOperand(0), DemandedMask,
KnownZero, KnownOne, Depth+1)) KnownZero, KnownOne, Depth+1))
return true; return true;
@ -1027,12 +1027,12 @@ bool InstCombiner::SimplifyDemandedBits(Value *V, uint64_t DemandedMask,
case Instruction::SExt: { case Instruction::SExt: {
// Compute the bits in the result that are not present in the input. // Compute the bits in the result that are not present in the input.
const Type *SrcTy = I->getOperand(0)->getType(); const Type *SrcTy = I->getOperand(0)->getType();
uint64_t NotIn = ~SrcTy->getIntegralTypeMask(); uint64_t NotIn = ~SrcTy->getIntegerTypeMask();
uint64_t NewBits = I->getType()->getIntegralTypeMask() & NotIn; uint64_t NewBits = I->getType()->getIntegerTypeMask() & NotIn;
// Get the sign bit for the source type // Get the sign bit for the source type
uint64_t InSignBit = 1ULL << (SrcTy->getPrimitiveSizeInBits()-1); uint64_t InSignBit = 1ULL << (SrcTy->getPrimitiveSizeInBits()-1);
int64_t InputDemandedBits = DemandedMask & SrcTy->getIntegralTypeMask(); int64_t InputDemandedBits = DemandedMask & SrcTy->getIntegerTypeMask();
// If any of the sign extended bits are demanded, we know that the sign // If any of the sign extended bits are demanded, we know that the sign
// bit is demanded. // bit is demanded.
@ -1174,7 +1174,7 @@ bool InstCombiner::SimplifyDemandedBits(Value *V, uint64_t DemandedMask,
// Compute the new bits that are at the top now. // Compute the new bits that are at the top now.
uint64_t HighBits = (1ULL << ShiftAmt)-1; uint64_t HighBits = (1ULL << ShiftAmt)-1;
HighBits <<= I->getType()->getPrimitiveSizeInBits() - ShiftAmt; HighBits <<= I->getType()->getPrimitiveSizeInBits() - ShiftAmt;
uint64_t TypeMask = I->getType()->getIntegralTypeMask(); uint64_t TypeMask = I->getType()->getIntegerTypeMask();
// Unsigned shift right. // Unsigned shift right.
if (SimplifyDemandedBits(I->getOperand(0), if (SimplifyDemandedBits(I->getOperand(0),
(DemandedMask << ShiftAmt) & TypeMask, (DemandedMask << ShiftAmt) & TypeMask,
@ -1207,7 +1207,7 @@ bool InstCombiner::SimplifyDemandedBits(Value *V, uint64_t DemandedMask,
// Compute the new bits that are at the top now. // Compute the new bits that are at the top now.
uint64_t HighBits = (1ULL << ShiftAmt)-1; uint64_t HighBits = (1ULL << ShiftAmt)-1;
HighBits <<= I->getType()->getPrimitiveSizeInBits() - ShiftAmt; HighBits <<= I->getType()->getPrimitiveSizeInBits() - ShiftAmt;
uint64_t TypeMask = I->getType()->getIntegralTypeMask(); uint64_t TypeMask = I->getType()->getIntegerTypeMask();
// Signed shift right. // Signed shift right.
if (SimplifyDemandedBits(I->getOperand(0), if (SimplifyDemandedBits(I->getOperand(0),
(DemandedMask << ShiftAmt) & TypeMask, (DemandedMask << ShiftAmt) & TypeMask,
@ -1745,7 +1745,7 @@ Instruction *InstCombiner::visitAdd(BinaryOperator &I) {
// (X & 254)+1 -> (X&254)|1 // (X & 254)+1 -> (X&254)|1
uint64_t KnownZero, KnownOne; uint64_t KnownZero, KnownOne;
if (!isa<PackedType>(I.getType()) && if (!isa<PackedType>(I.getType()) &&
SimplifyDemandedBits(&I, I.getType()->getIntegralTypeMask(), SimplifyDemandedBits(&I, I.getType()->getIntegerTypeMask(),
KnownZero, KnownOne)) KnownZero, KnownOne))
return &I; return &I;
} }
@ -1780,7 +1780,7 @@ Instruction *InstCombiner::visitAdd(BinaryOperator &I) {
// This is a sign extend if the top bits are known zero. // This is a sign extend if the top bits are known zero.
uint64_t Mask = ~0ULL; uint64_t Mask = ~0ULL;
Mask <<= 64-(TySizeBits-Size); Mask <<= 64-(TySizeBits-Size);
Mask &= XorLHS->getType()->getIntegralTypeMask(); Mask &= XorLHS->getType()->getIntegerTypeMask();
if (!MaskedValueIsZero(XorLHS, Mask)) if (!MaskedValueIsZero(XorLHS, Mask))
Size = 0; // Not a sign ext, but can't be any others either. Size = 0; // Not a sign ext, but can't be any others either.
goto FoundSExt; goto FoundSExt;
@ -1808,7 +1808,7 @@ FoundSExt:
} }
// X + X --> X << 1 // X + X --> X << 1
if (I.getType()->isIntegral() && I.getType() != Type::Int1Ty) { if (I.getType()->isInteger() && I.getType() != Type::Int1Ty) {
if (Instruction *Result = AssociativeOpt(I, AddRHS(RHS))) return Result; if (Instruction *Result = AssociativeOpt(I, AddRHS(RHS))) return Result;
if (Instruction *RHSI = dyn_cast<Instruction>(RHS)) { if (Instruction *RHSI = dyn_cast<Instruction>(RHS)) {
@ -1876,7 +1876,7 @@ FoundSExt:
// Form a mask of all bits from the lowest bit added through the top. // Form a mask of all bits from the lowest bit added through the top.
uint64_t AddRHSHighBits = ~((AddRHSV & -AddRHSV)-1); uint64_t AddRHSHighBits = ~((AddRHSV & -AddRHSV)-1);
AddRHSHighBits &= C2->getType()->getIntegralTypeMask(); AddRHSHighBits &= C2->getType()->getIntegerTypeMask();
// See if the and mask includes all of these bits. // See if the and mask includes all of these bits.
uint64_t AddRHSHighBitsAnd = AddRHSHighBits & C2->getZExtValue(); uint64_t AddRHSHighBitsAnd = AddRHSHighBits & C2->getZExtValue();
@ -1933,7 +1933,7 @@ static Value *RemoveNoopCast(Value *V) {
if (CastInst *CI = dyn_cast<CastInst>(V)) { if (CastInst *CI = dyn_cast<CastInst>(V)) {
const Type *CTy = CI->getType(); const Type *CTy = CI->getType();
const Type *OpTy = CI->getOperand(0)->getType(); const Type *OpTy = CI->getOperand(0)->getType();
if (CTy->isIntegral() && OpTy->isIntegral()) { if (CTy->isInteger() && OpTy->isInteger()) {
if (CTy->getPrimitiveSizeInBits() == OpTy->getPrimitiveSizeInBits()) if (CTy->getPrimitiveSizeInBits() == OpTy->getPrimitiveSizeInBits())
return RemoveNoopCast(CI->getOperand(0)); return RemoveNoopCast(CI->getOperand(0));
} else if (isa<PointerType>(CTy) && isa<PointerType>(OpTy)) } else if (isa<PointerType>(CTy) && isa<PointerType>(OpTy))
@ -2412,7 +2412,7 @@ Instruction *InstCombiner::visitSDiv(BinaryOperator &I) {
// If the sign bits of both operands are zero (i.e. we can prove they are // If the sign bits of both operands are zero (i.e. we can prove they are
// unsigned inputs), turn this into a udiv. // unsigned inputs), turn this into a udiv.
if (I.getType()->isIntegral()) { if (I.getType()->isInteger()) {
uint64_t Mask = 1ULL << (I.getType()->getPrimitiveSizeInBits()-1); uint64_t Mask = 1ULL << (I.getType()->getPrimitiveSizeInBits()-1);
if (MaskedValueIsZero(Op1, Mask) && MaskedValueIsZero(Op0, Mask)) { if (MaskedValueIsZero(Op1, Mask) && MaskedValueIsZero(Op0, Mask)) {
return BinaryOperator::createUDiv(Op0, Op1, I.getName()); return BinaryOperator::createUDiv(Op0, Op1, I.getName());
@ -2641,7 +2641,7 @@ static bool isMaxValueMinusOne(const ConstantInt *C, bool isSigned) {
Val >>= 64-TypeBits; // Shift out unwanted 1 bits... Val >>= 64-TypeBits; // Shift out unwanted 1 bits...
return C->getSExtValue() == Val-1; return C->getSExtValue() == Val-1;
} }
return C->getZExtValue() == C->getType()->getIntegralTypeMask()-1; return C->getZExtValue() == C->getType()->getIntegerTypeMask()-1;
} }
// isMinValuePlusOne - return true if this is Min+1 // isMinValuePlusOne - return true if this is Min+1
@ -2858,7 +2858,7 @@ Instruction *InstCombiner::OptAndOp(Instruction *Op,
uint64_t AndRHSV = cast<ConstantInt>(AndRHS)->getZExtValue(); uint64_t AndRHSV = cast<ConstantInt>(AndRHS)->getZExtValue();
// Clear bits that are not part of the constant. // Clear bits that are not part of the constant.
AndRHSV &= AndRHS->getType()->getIntegralTypeMask(); AndRHSV &= AndRHS->getType()->getIntegerTypeMask();
// If there is only one bit set... // If there is only one bit set...
if (isOneBitSet(cast<ConstantInt>(AndRHS))) { if (isOneBitSet(cast<ConstantInt>(AndRHS))) {
@ -3044,7 +3044,7 @@ Value *InstCombiner::FoldLogicalPlusAnd(Value *LHS, Value *RHS,
// is all N is, ignore it. // is all N is, ignore it.
unsigned MB, ME; unsigned MB, ME;
if (isRunOfOnes(Mask, MB, ME)) { // begin/end bit of run, inclusive if (isRunOfOnes(Mask, MB, ME)) { // begin/end bit of run, inclusive
uint64_t Mask = RHS->getType()->getIntegralTypeMask(); uint64_t Mask = RHS->getType()->getIntegerTypeMask();
Mask >>= 64-MB+1; Mask >>= 64-MB+1;
if (MaskedValueIsZero(RHS, Mask)) if (MaskedValueIsZero(RHS, Mask))
break; break;
@ -3083,13 +3083,13 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) {
// purpose is to compute bits we don't care about. // purpose is to compute bits we don't care about.
uint64_t KnownZero, KnownOne; uint64_t KnownZero, KnownOne;
if (!isa<PackedType>(I.getType()) && if (!isa<PackedType>(I.getType()) &&
SimplifyDemandedBits(&I, I.getType()->getIntegralTypeMask(), SimplifyDemandedBits(&I, I.getType()->getIntegerTypeMask(),
KnownZero, KnownOne)) KnownZero, KnownOne))
return &I; return &I;
if (ConstantInt *AndRHS = dyn_cast<ConstantInt>(Op1)) { if (ConstantInt *AndRHS = dyn_cast<ConstantInt>(Op1)) {
uint64_t AndRHSMask = AndRHS->getZExtValue(); uint64_t AndRHSMask = AndRHS->getZExtValue();
uint64_t TypeMask = Op0->getType()->getIntegralTypeMask(); uint64_t TypeMask = Op0->getType()->getIntegerTypeMask();
uint64_t NotAndRHS = AndRHSMask^TypeMask; uint64_t NotAndRHS = AndRHSMask^TypeMask;
// Optimize a variety of ((val OP C1) & C2) combinations... // Optimize a variety of ((val OP C1) & C2) combinations...
@ -3386,7 +3386,7 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) {
if (CastInst *Op1C = dyn_cast<CastInst>(Op1)) if (CastInst *Op1C = dyn_cast<CastInst>(Op1))
if (Op0C->getOpcode() == Op1C->getOpcode()) { // same cast kind ? if (Op0C->getOpcode() == Op1C->getOpcode()) { // same cast kind ?
const Type *SrcTy = Op0C->getOperand(0)->getType(); const Type *SrcTy = Op0C->getOperand(0)->getType();
if (SrcTy == Op1C->getOperand(0)->getType() && SrcTy->isIntegral() && if (SrcTy == Op1C->getOperand(0)->getType() && SrcTy->isInteger() &&
// Only do this if the casts both really cause code to be generated. // Only do this if the casts both really cause code to be generated.
ValueRequiresCast(Op0C->getOpcode(), Op0C->getOperand(0), ValueRequiresCast(Op0C->getOpcode(), Op0C->getOperand(0),
I.getType(), TD) && I.getType(), TD) &&
@ -3554,7 +3554,7 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) {
// purpose is to compute bits we don't care about. // purpose is to compute bits we don't care about.
uint64_t KnownZero, KnownOne; uint64_t KnownZero, KnownOne;
if (!isa<PackedType>(I.getType()) && if (!isa<PackedType>(I.getType()) &&
SimplifyDemandedBits(&I, I.getType()->getIntegralTypeMask(), SimplifyDemandedBits(&I, I.getType()->getIntegerTypeMask(),
KnownZero, KnownOne)) KnownZero, KnownOne))
return &I; return &I;
@ -3836,7 +3836,7 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) {
if (CastInst *Op1C = dyn_cast<CastInst>(Op1)) if (CastInst *Op1C = dyn_cast<CastInst>(Op1))
if (Op0C->getOpcode() == Op1C->getOpcode()) {// same cast kind ? if (Op0C->getOpcode() == Op1C->getOpcode()) {// same cast kind ?
const Type *SrcTy = Op0C->getOperand(0)->getType(); const Type *SrcTy = Op0C->getOperand(0)->getType();
if (SrcTy == Op1C->getOperand(0)->getType() && SrcTy->isIntegral() && if (SrcTy == Op1C->getOperand(0)->getType() && SrcTy->isInteger() &&
// Only do this if the casts both really cause code to be generated. // Only do this if the casts both really cause code to be generated.
ValueRequiresCast(Op0C->getOpcode(), Op0C->getOperand(0), ValueRequiresCast(Op0C->getOpcode(), Op0C->getOperand(0),
I.getType(), TD) && I.getType(), TD) &&
@ -3882,7 +3882,7 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) {
// purpose is to compute bits we don't care about. // purpose is to compute bits we don't care about.
uint64_t KnownZero, KnownOne; uint64_t KnownZero, KnownOne;
if (!isa<PackedType>(I.getType()) && if (!isa<PackedType>(I.getType()) &&
SimplifyDemandedBits(&I, I.getType()->getIntegralTypeMask(), SimplifyDemandedBits(&I, I.getType()->getIntegerTypeMask(),
KnownZero, KnownOne)) KnownZero, KnownOne))
return &I; return &I;
@ -4020,7 +4020,7 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) {
if (CastInst *Op1C = dyn_cast<CastInst>(Op1)) if (CastInst *Op1C = dyn_cast<CastInst>(Op1))
if (Op0C->getOpcode() == Op1C->getOpcode()) { // same cast kind? if (Op0C->getOpcode() == Op1C->getOpcode()) { // same cast kind?
const Type *SrcTy = Op0C->getOperand(0)->getType(); const Type *SrcTy = Op0C->getOperand(0)->getType();
if (SrcTy == Op1C->getOperand(0)->getType() && SrcTy->isIntegral() && if (SrcTy == Op1C->getOperand(0)->getType() && SrcTy->isInteger() &&
// Only do this if the casts both really cause code to be generated. // Only do this if the casts both really cause code to be generated.
ValueRequiresCast(Op0C->getOpcode(), Op0C->getOperand(0), ValueRequiresCast(Op0C->getOpcode(), Op0C->getOperand(0),
I.getType(), TD) && I.getType(), TD) &&
@ -4512,7 +4512,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) {
// See if we can fold the comparison based on bits known to be zero or one // See if we can fold the comparison based on bits known to be zero or one
// in the input. // in the input.
uint64_t KnownZero, KnownOne; uint64_t KnownZero, KnownOne;
if (SimplifyDemandedBits(Op0, Ty->getIntegralTypeMask(), if (SimplifyDemandedBits(Op0, Ty->getIntegerTypeMask(),
KnownZero, KnownOne, 0)) KnownZero, KnownOne, 0))
return &I; return &I;
@ -5062,7 +5062,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) {
Value *CastOp = Cast->getOperand(0); Value *CastOp = Cast->getOperand(0);
const Type *SrcTy = CastOp->getType(); const Type *SrcTy = CastOp->getType();
unsigned SrcTySize = SrcTy->getPrimitiveSizeInBits(); unsigned SrcTySize = SrcTy->getPrimitiveSizeInBits();
if (SrcTy->isIntegral() && if (SrcTy->isInteger() &&
SrcTySize == Cast->getType()->getPrimitiveSizeInBits()) { SrcTySize == Cast->getType()->getPrimitiveSizeInBits()) {
// If this is an unsigned comparison, try to make the comparison use // If this is an unsigned comparison, try to make the comparison use
// smaller constant values. // smaller constant values.
@ -5436,7 +5436,7 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1,
// See if we can simplify any instructions used by the instruction whose sole // See if we can simplify any instructions used by the instruction whose sole
// purpose is to compute bits we don't care about. // purpose is to compute bits we don't care about.
uint64_t KnownZero, KnownOne; uint64_t KnownZero, KnownOne;
if (SimplifyDemandedBits(&I, I.getType()->getIntegralTypeMask(), if (SimplifyDemandedBits(&I, I.getType()->getIntegerTypeMask(),
KnownZero, KnownOne)) KnownZero, KnownOne))
return &I; return &I;
@ -6038,7 +6038,7 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) {
// See if we can simplify any instructions used by the LHS whose sole // See if we can simplify any instructions used by the LHS whose sole
// purpose is to compute bits we don't care about. // purpose is to compute bits we don't care about.
uint64_t KnownZero = 0, KnownOne = 0; uint64_t KnownZero = 0, KnownOne = 0;
if (SimplifyDemandedBits(&CI, DestTy->getIntegralTypeMask(), if (SimplifyDemandedBits(&CI, DestTy->getIntegerTypeMask(),
KnownZero, KnownOne)) KnownZero, KnownOne))
return &CI; return &CI;
@ -6211,7 +6211,7 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) {
if (Op1CV == 0 || isPowerOf2_64(Op1CV)) { if (Op1CV == 0 || isPowerOf2_64(Op1CV)) {
// If Op1C some other power of two, convert: // If Op1C some other power of two, convert:
uint64_t KnownZero, KnownOne; uint64_t KnownZero, KnownOne;
uint64_t TypeMask = Op1->getType()->getIntegralTypeMask(); uint64_t TypeMask = Op1->getType()->getIntegerTypeMask();
ComputeMaskedBits(Op0, TypeMask, KnownZero, KnownOne); ComputeMaskedBits(Op0, TypeMask, KnownZero, KnownOne);
// This only works for EQ and NE // This only works for EQ and NE
@ -6333,7 +6333,7 @@ Instruction *InstCombiner::visitZExt(CastInst &CI) {
// If we're actually extending zero bits and the trunc is a no-op // If we're actually extending zero bits and the trunc is a no-op
if (MidSize < DstSize && SrcSize == DstSize) { if (MidSize < DstSize && SrcSize == DstSize) {
// Replace both of the casts with an And of the type mask. // Replace both of the casts with an And of the type mask.
uint64_t AndValue = CSrc->getType()->getIntegralTypeMask(); uint64_t AndValue = CSrc->getType()->getIntegerTypeMask();
Constant *AndConst = ConstantInt::get(A->getType(), AndValue); Constant *AndConst = ConstantInt::get(A->getType(), AndValue);
Instruction *And = Instruction *And =
BinaryOperator::createAnd(CSrc->getOperand(0), AndConst); BinaryOperator::createAnd(CSrc->getOperand(0), AndConst);
@ -6395,7 +6395,7 @@ Instruction *InstCombiner::visitBitCast(CastInst &CI) {
const Type *SrcTy = Src->getType(); const Type *SrcTy = Src->getType();
const Type *DestTy = CI.getType(); const Type *DestTy = CI.getType();
if (SrcTy->isIntegral() && DestTy->isIntegral()) { if (SrcTy->isInteger() && DestTy->isInteger()) {
if (Instruction *Result = commonIntCastTransforms(CI)) if (Instruction *Result = commonIntCastTransforms(CI))
return Result; return Result;
} else { } else {
@ -6816,7 +6816,7 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) {
} }
// See if we can fold the select into one of our operands. // See if we can fold the select into one of our operands.
if (SI.getType()->isIntegral()) { if (SI.getType()->isInteger()) {
// See the comment above GetSelectFoldableOperands for a description of the // See the comment above GetSelectFoldableOperands for a description of the
// transformation we are doing here. // transformation we are doing here.
if (Instruction *TVI = dyn_cast<Instruction>(TrueVal)) if (Instruction *TVI = dyn_cast<Instruction>(TrueVal))
@ -7273,7 +7273,7 @@ bool InstCombiner::transformConstExprCastCall(CallSite CS) {
//Either we can cast directly, or we can upconvert the argument //Either we can cast directly, or we can upconvert the argument
bool isConvertible = ActTy == ParamTy || bool isConvertible = ActTy == ParamTy ||
(isa<PointerType>(ParamTy) && isa<PointerType>(ActTy)) || (isa<PointerType>(ParamTy) && isa<PointerType>(ActTy)) ||
(ParamTy->isIntegral() && ActTy->isIntegral() && (ParamTy->isInteger() && ActTy->isInteger() &&
ParamTy->getPrimitiveSizeInBits() >= ActTy->getPrimitiveSizeInBits()) || ParamTy->getPrimitiveSizeInBits() >= ActTy->getPrimitiveSizeInBits()) ||
(c && ParamTy->getPrimitiveSizeInBits() >= ActTy->getPrimitiveSizeInBits() (c && ParamTy->getPrimitiveSizeInBits() >= ActTy->getPrimitiveSizeInBits()
&& c->getSExtValue() > 0); && c->getSExtValue() > 0);
@ -7667,7 +7667,7 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
Value *Src = CI->getOperand(0); Value *Src = CI->getOperand(0);
const Type *SrcTy = Src->getType(); const Type *SrcTy = Src->getType();
const Type *DestTy = CI->getType(); const Type *DestTy = CI->getType();
if (Src->getType()->isIntegral()) { if (Src->getType()->isInteger()) {
if (SrcTy->getPrimitiveSizeInBits() == if (SrcTy->getPrimitiveSizeInBits() ==
DestTy->getPrimitiveSizeInBits()) { DestTy->getPrimitiveSizeInBits()) {
// We can always eliminate a cast from ulong or long to the other. // We can always eliminate a cast from ulong or long to the other.
@ -7998,7 +7998,7 @@ static Instruction *InstCombineLoadCast(InstCombiner &IC, LoadInst &LI) {
if (const PointerType *SrcTy = dyn_cast<PointerType>(CastOp->getType())) { if (const PointerType *SrcTy = dyn_cast<PointerType>(CastOp->getType())) {
const Type *SrcPTy = SrcTy->getElementType(); const Type *SrcPTy = SrcTy->getElementType();
if (DestPTy->isIntegral() || isa<PointerType>(DestPTy) || if (DestPTy->isInteger() || isa<PointerType>(DestPTy) ||
isa<PackedType>(DestPTy)) { isa<PackedType>(DestPTy)) {
// If the source is an array, the code below will not succeed. Check to // If the source is an array, the code below will not succeed. Check to
// see if a trivial 'gep P, 0, 0' will help matters. Only do this for // see if a trivial 'gep P, 0, 0' will help matters. Only do this for
@ -8012,7 +8012,7 @@ static Instruction *InstCombineLoadCast(InstCombiner &IC, LoadInst &LI) {
SrcPTy = SrcTy->getElementType(); SrcPTy = SrcTy->getElementType();
} }
if ((SrcPTy->isIntegral() || isa<PointerType>(SrcPTy) || if ((SrcPTy->isInteger() || isa<PointerType>(SrcPTy) ||
isa<PackedType>(SrcPTy)) && isa<PackedType>(SrcPTy)) &&
// Do not allow turning this into a load of an integer, which is then // Do not allow turning this into a load of an integer, which is then
// casted to a pointer, this pessimizes pointer analysis a lot. // casted to a pointer, this pessimizes pointer analysis a lot.
@ -8186,7 +8186,7 @@ static Instruction *InstCombineStoreToCast(InstCombiner &IC, StoreInst &SI) {
if (const PointerType *SrcTy = dyn_cast<PointerType>(CastOp->getType())) { if (const PointerType *SrcTy = dyn_cast<PointerType>(CastOp->getType())) {
const Type *SrcPTy = SrcTy->getElementType(); const Type *SrcPTy = SrcTy->getElementType();
if (DestPTy->isIntegral() || isa<PointerType>(DestPTy)) { if (DestPTy->isInteger() || isa<PointerType>(DestPTy)) {
// If the source is an array, the code below will not succeed. Check to // If the source is an array, the code below will not succeed. Check to
// see if a trivial 'gep P, 0, 0' will help matters. Only do this for // see if a trivial 'gep P, 0, 0' will help matters. Only do this for
// constants. // constants.
@ -8199,7 +8199,7 @@ static Instruction *InstCombineStoreToCast(InstCombiner &IC, StoreInst &SI) {
SrcPTy = SrcTy->getElementType(); SrcPTy = SrcTy->getElementType();
} }
if ((SrcPTy->isIntegral() || isa<PointerType>(SrcPTy)) && if ((SrcPTy->isInteger() || isa<PointerType>(SrcPTy)) &&
IC.getTargetData().getTypeSize(SrcPTy) == IC.getTargetData().getTypeSize(SrcPTy) ==
IC.getTargetData().getTypeSize(DestPTy)) { IC.getTargetData().getTypeSize(DestPTy)) {
@ -8210,9 +8210,9 @@ static Instruction *InstCombineStoreToCast(InstCombiner &IC, StoreInst &SI) {
Instruction::CastOps opcode = Instruction::BitCast; Instruction::CastOps opcode = Instruction::BitCast;
Value *SIOp0 = SI.getOperand(0); Value *SIOp0 = SI.getOperand(0);
if (isa<PointerType>(SrcPTy)) { if (isa<PointerType>(SrcPTy)) {
if (SIOp0->getType()->isIntegral()) if (SIOp0->getType()->isInteger())
opcode = Instruction::IntToPtr; opcode = Instruction::IntToPtr;
} else if (SrcPTy->isIntegral()) { } else if (SrcPTy->isInteger()) {
if (isa<PointerType>(SIOp0->getType())) if (isa<PointerType>(SIOp0->getType()))
opcode = Instruction::PtrToInt; opcode = Instruction::PtrToInt;
} }

View File

@ -398,7 +398,7 @@ static bool IVUseShouldUsePostIncValue(Instruction *User, Instruction *IV,
/// return true. Otherwise, return false. /// return true. Otherwise, return false.
bool LoopStrengthReduce::AddUsersIfInteresting(Instruction *I, Loop *L, bool LoopStrengthReduce::AddUsersIfInteresting(Instruction *I, Loop *L,
std::set<Instruction*> &Processed) { std::set<Instruction*> &Processed) {
if (!I->getType()->isIntegral() && !isa<PointerType>(I->getType())) if (!I->getType()->isInteger() && !isa<PointerType>(I->getType()))
return false; // Void and FP expressions cannot be reduced. return false; // Void and FP expressions cannot be reduced.
if (!Processed.insert(I).second) if (!Processed.insert(I).second)
return true; // Instruction already handled. return true; // Instruction already handled.

View File

@ -164,7 +164,7 @@ unsigned Reassociate::getRank(Value *V) {
// If this is a not or neg instruction, do not count it for rank. This // If this is a not or neg instruction, do not count it for rank. This
// assures us that X and ~X will have the same rank. // assures us that X and ~X will have the same rank.
if (!I->getType()->isIntegral() || if (!I->getType()->isInteger() ||
(!BinaryOperator::isNot(I) && !BinaryOperator::isNeg(I))) (!BinaryOperator::isNot(I) && !BinaryOperator::isNeg(I)))
++Rank; ++Rank;

View File

@ -442,7 +442,7 @@ static bool MergeInType(const Type *In, const Type *&Accum,
Accum = In; Accum = In;
} else if (In == Type::VoidTy) { } else if (In == Type::VoidTy) {
// Noop. // Noop.
} else if (In->isIntegral() && Accum->isIntegral()) { // integer union. } else if (In->isInteger() && Accum->isInteger()) { // integer union.
// Otherwise pick whichever type is larger. // Otherwise pick whichever type is larger.
if (cast<IntegerType>(In)->getBitWidth() > if (cast<IntegerType>(In)->getBitWidth() >
cast<IntegerType>(Accum)->getBitWidth()) cast<IntegerType>(Accum)->getBitWidth())
@ -472,7 +472,7 @@ static bool MergeInType(const Type *In, const Type *&Accum,
case Type::FloatTyID: Accum = Type::Int32Ty; break; case Type::FloatTyID: Accum = Type::Int32Ty; break;
case Type::DoubleTyID: Accum = Type::Int64Ty; break; case Type::DoubleTyID: Accum = Type::Int64Ty; break;
default: default:
assert(Accum->isIntegral() && "Unknown FP type!"); assert(Accum->isInteger() && "Unknown FP type!");
break; break;
} }
@ -481,7 +481,7 @@ static bool MergeInType(const Type *In, const Type *&Accum,
case Type::FloatTyID: In = Type::Int32Ty; break; case Type::FloatTyID: In = Type::Int32Ty; break;
case Type::DoubleTyID: In = Type::Int64Ty; break; case Type::DoubleTyID: In = Type::Int64Ty; break;
default: default:
assert(In->isIntegral() && "Unknown FP type!"); assert(In->isInteger() && "Unknown FP type!");
break; break;
} }
return MergeInType(In, Accum, TD); return MergeInType(In, Accum, TD);
@ -541,7 +541,7 @@ const Type *SROA::CanConvertToScalar(Value *V, bool &IsNotTrivial) {
IsNotTrivial = true; IsNotTrivial = true;
const Type *SubElt = CanConvertToScalar(GEP, IsNotTrivial); const Type *SubElt = CanConvertToScalar(GEP, IsNotTrivial);
if (SubElt == 0) return 0; if (SubElt == 0) return 0;
if (SubElt != Type::VoidTy && SubElt->isIntegral()) { if (SubElt != Type::VoidTy && SubElt->isInteger()) {
const Type *NewTy = const Type *NewTy =
getUIntAtLeastAsBitAs(TD.getTypeSize(SubElt)*8+BitOffset); getUIntAtLeastAsBitAs(TD.getTypeSize(SubElt)*8+BitOffset);
if (NewTy == 0 || MergeInType(NewTy, UsedType, TD)) return 0; if (NewTy == 0 || MergeInType(NewTy, UsedType, TD)) return 0;
@ -653,7 +653,7 @@ void SROA::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI, unsigned Offset) {
// an integer. // an integer.
NV = new BitCastInst(NV, LI->getType(), LI->getName(), LI); NV = new BitCastInst(NV, LI->getType(), LI->getName(), LI);
} else { } else {
assert(NV->getType()->isIntegral() && "Unknown promotion!"); assert(NV->getType()->isInteger() && "Unknown promotion!");
if (Offset && Offset < TD.getTypeSize(NV->getType())*8) { if (Offset && Offset < TD.getTypeSize(NV->getType())*8) {
NV = new ShiftInst(Instruction::LShr, NV, NV = new ShiftInst(Instruction::LShr, NV,
ConstantInt::get(Type::Int8Ty, Offset), ConstantInt::get(Type::Int8Ty, Offset),
@ -661,7 +661,7 @@ void SROA::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI, unsigned Offset) {
} }
// If the result is an integer, this is a trunc or bitcast. // If the result is an integer, this is a trunc or bitcast.
if (LI->getType()->isIntegral()) { if (LI->getType()->isInteger()) {
NV = CastInst::createTruncOrBitCast(NV, LI->getType(), NV = CastInst::createTruncOrBitCast(NV, LI->getType(),
LI->getName(), LI); LI->getName(), LI);
} else if (LI->getType()->isFloatingPoint()) { } else if (LI->getType()->isFloatingPoint()) {
@ -748,7 +748,7 @@ void SROA::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI, unsigned Offset) {
if (TotalBits != SrcSize) { if (TotalBits != SrcSize) {
assert(TotalBits > SrcSize); assert(TotalBits > SrcSize);
uint64_t Mask = ~(((1ULL << SrcSize)-1) << Offset); uint64_t Mask = ~(((1ULL << SrcSize)-1) << Offset);
Mask = Mask & SV->getType()->getIntegralTypeMask(); Mask = Mask & SV->getType()->getIntegerTypeMask();
Old = BinaryOperator::createAnd(Old, Old = BinaryOperator::createAnd(Old,
ConstantInt::get(Old->getType(), Mask), ConstantInt::get(Old->getType(), Mask),
Old->getName()+".mask", SI); Old->getName()+".mask", SI);

View File

@ -1852,7 +1852,7 @@ bool llvm::SimplifyCFG(BasicBlock *BB) {
Value *CompVal = 0; Value *CompVal = 0;
std::vector<ConstantInt*> Values; std::vector<ConstantInt*> Values;
bool TrueWhenEqual = GatherValueComparisons(Cond, CompVal, Values); bool TrueWhenEqual = GatherValueComparisons(Cond, CompVal, Values);
if (CompVal && CompVal->getType()->isIntegral()) { if (CompVal && CompVal->getType()->isInteger()) {
// There might be duplicate constants in the list, which the switch // There might be duplicate constants in the list, which the switch
// instruction can't handle, remove them now. // instruction can't handle, remove them now.
std::sort(Values.begin(), Values.end(), ConstantIntOrdering()); std::sort(Values.begin(), Values.end(), ConstantIntOrdering());

View File

@ -222,7 +222,7 @@ static void fillTypeNameTable(const Module *M,
const Type *Ty = cast<Type>(TI->second); const Type *Ty = cast<Type>(TI->second);
if (!isa<PointerType>(Ty) || if (!isa<PointerType>(Ty) ||
!cast<PointerType>(Ty)->getElementType()->isPrimitiveType() || !cast<PointerType>(Ty)->getElementType()->isPrimitiveType() ||
!cast<PointerType>(Ty)->getElementType()->isIntegral() || !cast<PointerType>(Ty)->getElementType()->isInteger() ||
isa<OpaqueType>(cast<PointerType>(Ty)->getElementType())) isa<OpaqueType>(cast<PointerType>(Ty)->getElementType()))
TypeNames.insert(std::make_pair(Ty, getLLVMName(TI->first))); TypeNames.insert(std::make_pair(Ty, getLLVMName(TI->first)));
} }
@ -234,7 +234,7 @@ static void calcTypeName(const Type *Ty,
std::vector<const Type *> &TypeStack, std::vector<const Type *> &TypeStack,
std::map<const Type *, std::string> &TypeNames, std::map<const Type *, std::string> &TypeNames,
std::string & Result){ std::string & Result){
if (Ty->isIntegral() || (Ty->isPrimitiveType() && !isa<OpaqueType>(Ty))) { if (Ty->isInteger() || (Ty->isPrimitiveType() && !isa<OpaqueType>(Ty))) {
Result += Ty->getDescription(); // Base case Result += Ty->getDescription(); // Base case
return; return;
} }
@ -353,7 +353,7 @@ static std::ostream &printTypeInt(std::ostream &Out, const Type *Ty,
// Primitive types always print out their description, regardless of whether // Primitive types always print out their description, regardless of whether
// they have been named or not. // they have been named or not.
// //
if (Ty->isIntegral() || (Ty->isPrimitiveType() && !isa<OpaqueType>(Ty))) if (Ty->isInteger() || (Ty->isPrimitiveType() && !isa<OpaqueType>(Ty)))
return Out << Ty->getDescription(); return Out << Ty->getDescription();
// Check to see if the type is named. // Check to see if the type is named.

View File

@ -51,7 +51,7 @@ static Constant *CastConstantPacked(ConstantPacked *CP,
// If the src and dest elements are both integers, or both floats, we can // If the src and dest elements are both integers, or both floats, we can
// just BitCast each element because the elements are the same size. // just BitCast each element because the elements are the same size.
if ((SrcEltTy->isIntegral() && DstEltTy->isIntegral()) || if ((SrcEltTy->isInteger() && DstEltTy->isInteger()) ||
(SrcEltTy->isFloatingPoint() && DstEltTy->isFloatingPoint())) { (SrcEltTy->isFloatingPoint() && DstEltTy->isFloatingPoint())) {
for (unsigned i = 0; i != SrcNumElts; ++i) for (unsigned i = 0; i != SrcNumElts; ++i)
Result.push_back( Result.push_back(
@ -60,7 +60,7 @@ static Constant *CastConstantPacked(ConstantPacked *CP,
} }
// If this is an int-to-fp cast .. // If this is an int-to-fp cast ..
if (SrcEltTy->isIntegral()) { if (SrcEltTy->isInteger()) {
// Ensure that it is int-to-fp cast // Ensure that it is int-to-fp cast
assert(DstEltTy->isFloatingPoint()); assert(DstEltTy->isFloatingPoint());
if (DstEltTy->getTypeID() == Type::DoubleTyID) { if (DstEltTy->getTypeID() == Type::DoubleTyID) {
@ -81,7 +81,7 @@ static Constant *CastConstantPacked(ConstantPacked *CP,
} }
// Otherwise, this is an fp-to-int cast. // Otherwise, this is an fp-to-int cast.
assert(SrcEltTy->isFloatingPoint() && DstEltTy->isIntegral()); assert(SrcEltTy->isFloatingPoint() && DstEltTy->isInteger());
if (SrcEltTy->getTypeID() == Type::DoubleTyID) { if (SrcEltTy->getTypeID() == Type::DoubleTyID) {
for (unsigned i = 0; i != SrcNumElts; ++i) { for (unsigned i = 0; i != SrcNumElts; ++i) {
@ -279,7 +279,7 @@ Constant *llvm::ConstantFoldCastInstruction(unsigned opc, const Constant *V,
// Handle integral constant input. // Handle integral constant input.
if (const ConstantInt *CI = dyn_cast<ConstantInt>(V)) { if (const ConstantInt *CI = dyn_cast<ConstantInt>(V)) {
// Integral -> Integral, must be changing sign. // Integral -> Integral, must be changing sign.
if (DestTy->isIntegral()) if (DestTy->isInteger())
return ConstantInt::get(DestTy, CI->getZExtValue()); return ConstantInt::get(DestTy, CI->getZExtValue());
if (DestTy->isFloatingPoint()) { if (DestTy->isFloatingPoint()) {
@ -295,7 +295,7 @@ Constant *llvm::ConstantFoldCastInstruction(unsigned opc, const Constant *V,
// Handle ConstantFP input. // Handle ConstantFP input.
if (const ConstantFP *FP = dyn_cast<ConstantFP>(V)) { if (const ConstantFP *FP = dyn_cast<ConstantFP>(V)) {
// FP -> Integral. // FP -> Integral.
if (DestTy->isIntegral()) { if (DestTy->isInteger()) {
if (DestTy == Type::Int32Ty) if (DestTy == Type::Int32Ty)
return ConstantInt::get(DestTy, FloatToBits(FP->getValue())); return ConstantInt::get(DestTy, FloatToBits(FP->getValue()));
assert(DestTy == Type::Int64Ty && assert(DestTy == Type::Int64Ty &&
@ -884,7 +884,7 @@ static ICmpInst::Predicate evaluateICmpRelation(const Constant *V1,
// If the cast is not actually changing bits, and the second operand is a // If the cast is not actually changing bits, and the second operand is a
// null pointer, do the comparison with the pre-casted value. // null pointer, do the comparison with the pre-casted value.
if (V2->isNullValue() && if (V2->isNullValue() &&
(isa<PointerType>(CE1->getType()) || CE1->getType()->isIntegral())) { (isa<PointerType>(CE1->getType()) || CE1->getType()->isInteger())) {
bool sgnd = CE1->getOpcode() == Instruction::ZExt ? false : bool sgnd = CE1->getOpcode() == Instruction::ZExt ? false :
(CE1->getOpcode() == Instruction::SExt ? true : (CE1->getOpcode() == Instruction::SExt ? true :
(CE1->getOpcode() == Instruction::PtrToInt ? false : isSigned)); (CE1->getOpcode() == Instruction::PtrToInt ? false : isSigned));
@ -899,7 +899,7 @@ static ICmpInst::Predicate evaluateICmpRelation(const Constant *V1,
if (const ConstantExpr *CE2 = dyn_cast<ConstantExpr>(V2)) if (const ConstantExpr *CE2 = dyn_cast<ConstantExpr>(V2))
if (CE2->isCast() && isa<PointerType>(CE1->getType()) && if (CE2->isCast() && isa<PointerType>(CE1->getType()) &&
CE1->getOperand(0)->getType() == CE2->getOperand(0)->getType() && CE1->getOperand(0)->getType() == CE2->getOperand(0)->getType() &&
CE1->getOperand(0)->getType()->isIntegral()) { CE1->getOperand(0)->getType()->isInteger()) {
bool sgnd = CE1->getOpcode() == Instruction::ZExt ? false : bool sgnd = CE1->getOpcode() == Instruction::ZExt ? false :
(CE1->getOpcode() == Instruction::SExt ? true : (CE1->getOpcode() == Instruction::SExt ? true :
(CE1->getOpcode() == Instruction::PtrToInt ? false : isSigned)); (CE1->getOpcode() == Instruction::PtrToInt ? false : isSigned));

View File

@ -849,7 +849,7 @@ ConstantInt *ConstantInt::get(const Type *Ty, int64_t V) {
return getTrue(); return getTrue();
else else
return getFalse(); return getFalse();
return IntConstants->getOrCreate(Ty, V & Ty->getIntegralTypeMask()); return IntConstants->getOrCreate(Ty, V & Ty->getIntegerTypeMask());
} }
//---- ConstantFP::get() implementation... //---- ConstantFP::get() implementation...
@ -1463,16 +1463,16 @@ Constant *ConstantExpr::getTruncOrBitCast(Constant *C, const Type *Ty) {
Constant *ConstantExpr::getPointerCast(Constant *S, const Type *Ty) { Constant *ConstantExpr::getPointerCast(Constant *S, const Type *Ty) {
assert(isa<PointerType>(S->getType()) && "Invalid cast"); assert(isa<PointerType>(S->getType()) && "Invalid cast");
assert((Ty->isIntegral() || isa<PointerType>(Ty)) && "Invalid cast"); assert((Ty->isInteger() || isa<PointerType>(Ty)) && "Invalid cast");
if (Ty->isIntegral()) if (Ty->isInteger())
return getCast(Instruction::PtrToInt, S, Ty); return getCast(Instruction::PtrToInt, S, Ty);
return getCast(Instruction::BitCast, S, Ty); return getCast(Instruction::BitCast, S, Ty);
} }
Constant *ConstantExpr::getIntegerCast(Constant *C, const Type *Ty, Constant *ConstantExpr::getIntegerCast(Constant *C, const Type *Ty,
bool isSigned) { bool isSigned) {
assert(C->getType()->isIntegral() && Ty->isIntegral() && "Invalid cast"); assert(C->getType()->isInteger() && Ty->isInteger() && "Invalid cast");
unsigned SrcBits = C->getType()->getPrimitiveSizeInBits(); unsigned SrcBits = C->getType()->getPrimitiveSizeInBits();
unsigned DstBits = Ty->getPrimitiveSizeInBits(); unsigned DstBits = Ty->getPrimitiveSizeInBits();
Instruction::CastOps opcode = Instruction::CastOps opcode =
@ -1495,8 +1495,8 @@ Constant *ConstantExpr::getFPCast(Constant *C, const Type *Ty) {
} }
Constant *ConstantExpr::getTrunc(Constant *C, const Type *Ty) { Constant *ConstantExpr::getTrunc(Constant *C, const Type *Ty) {
assert(C->getType()->isIntegral() && "Trunc operand must be integer"); assert(C->getType()->isInteger() && "Trunc operand must be integer");
assert(Ty->isIntegral() && "Trunc produces only integral"); assert(Ty->isInteger() && "Trunc produces only integral");
assert(C->getType()->getPrimitiveSizeInBits() > Ty->getPrimitiveSizeInBits()&& assert(C->getType()->getPrimitiveSizeInBits() > Ty->getPrimitiveSizeInBits()&&
"SrcTy must be larger than DestTy for Trunc!"); "SrcTy must be larger than DestTy for Trunc!");
@ -1504,8 +1504,8 @@ Constant *ConstantExpr::getTrunc(Constant *C, const Type *Ty) {
} }
Constant *ConstantExpr::getSExt(Constant *C, const Type *Ty) { Constant *ConstantExpr::getSExt(Constant *C, const Type *Ty) {
assert(C->getType()->isIntegral() && "SEXt operand must be integral"); assert(C->getType()->isInteger() && "SEXt operand must be integral");
assert(Ty->isIntegral() && "SExt produces only integer"); assert(Ty->isInteger() && "SExt produces only integer");
assert(C->getType()->getPrimitiveSizeInBits() < Ty->getPrimitiveSizeInBits()&& assert(C->getType()->getPrimitiveSizeInBits() < Ty->getPrimitiveSizeInBits()&&
"SrcTy must be smaller than DestTy for SExt!"); "SrcTy must be smaller than DestTy for SExt!");
@ -1513,8 +1513,8 @@ Constant *ConstantExpr::getSExt(Constant *C, const Type *Ty) {
} }
Constant *ConstantExpr::getZExt(Constant *C, const Type *Ty) { Constant *ConstantExpr::getZExt(Constant *C, const Type *Ty) {
assert(C->getType()->isIntegral() && "ZEXt operand must be integral"); assert(C->getType()->isInteger() && "ZEXt operand must be integral");
assert(Ty->isIntegral() && "ZExt produces only integer"); assert(Ty->isInteger() && "ZExt produces only integer");
assert(C->getType()->getPrimitiveSizeInBits() < Ty->getPrimitiveSizeInBits()&& assert(C->getType()->getPrimitiveSizeInBits() < Ty->getPrimitiveSizeInBits()&&
"SrcTy must be smaller than DestTy for ZExt!"); "SrcTy must be smaller than DestTy for ZExt!");
@ -1536,37 +1536,37 @@ Constant *ConstantExpr::getFPExtend(Constant *C, const Type *Ty) {
} }
Constant *ConstantExpr::getUIToFP(Constant *C, const Type *Ty) { Constant *ConstantExpr::getUIToFP(Constant *C, const Type *Ty) {
assert(C->getType()->isIntegral() && Ty->isFloatingPoint() && assert(C->getType()->isInteger() && Ty->isFloatingPoint() &&
"This is an illegal uint to floating point cast!"); "This is an illegal uint to floating point cast!");
return getFoldedCast(Instruction::UIToFP, C, Ty); return getFoldedCast(Instruction::UIToFP, C, Ty);
} }
Constant *ConstantExpr::getSIToFP(Constant *C, const Type *Ty) { Constant *ConstantExpr::getSIToFP(Constant *C, const Type *Ty) {
assert(C->getType()->isIntegral() && Ty->isFloatingPoint() && assert(C->getType()->isInteger() && Ty->isFloatingPoint() &&
"This is an illegal sint to floating point cast!"); "This is an illegal sint to floating point cast!");
return getFoldedCast(Instruction::SIToFP, C, Ty); return getFoldedCast(Instruction::SIToFP, C, Ty);
} }
Constant *ConstantExpr::getFPToUI(Constant *C, const Type *Ty) { Constant *ConstantExpr::getFPToUI(Constant *C, const Type *Ty) {
assert(C->getType()->isFloatingPoint() && Ty->isIntegral() && assert(C->getType()->isFloatingPoint() && Ty->isInteger() &&
"This is an illegal floating point to uint cast!"); "This is an illegal floating point to uint cast!");
return getFoldedCast(Instruction::FPToUI, C, Ty); return getFoldedCast(Instruction::FPToUI, C, Ty);
} }
Constant *ConstantExpr::getFPToSI(Constant *C, const Type *Ty) { Constant *ConstantExpr::getFPToSI(Constant *C, const Type *Ty) {
assert(C->getType()->isFloatingPoint() && Ty->isIntegral() && assert(C->getType()->isFloatingPoint() && Ty->isInteger() &&
"This is an illegal floating point to sint cast!"); "This is an illegal floating point to sint cast!");
return getFoldedCast(Instruction::FPToSI, C, Ty); return getFoldedCast(Instruction::FPToSI, C, Ty);
} }
Constant *ConstantExpr::getPtrToInt(Constant *C, const Type *DstTy) { Constant *ConstantExpr::getPtrToInt(Constant *C, const Type *DstTy) {
assert(isa<PointerType>(C->getType()) && "PtrToInt source must be pointer"); assert(isa<PointerType>(C->getType()) && "PtrToInt source must be pointer");
assert(DstTy->isIntegral() && "PtrToInt destination must be integral"); assert(DstTy->isInteger() && "PtrToInt destination must be integral");
return getFoldedCast(Instruction::PtrToInt, C, DstTy); return getFoldedCast(Instruction::PtrToInt, C, DstTy);
} }
Constant *ConstantExpr::getIntToPtr(Constant *C, const Type *DstTy) { Constant *ConstantExpr::getIntToPtr(Constant *C, const Type *DstTy) {
assert(C->getType()->isIntegral() && "IntToPtr source must be integral"); assert(C->getType()->isInteger() && "IntToPtr source must be integral");
assert(isa<PointerType>(DstTy) && "IntToPtr destination must be a pointer"); assert(isa<PointerType>(DstTy) && "IntToPtr destination must be a pointer");
return getFoldedCast(Instruction::IntToPtr, C, DstTy); return getFoldedCast(Instruction::IntToPtr, C, DstTy);
} }
@ -1649,15 +1649,15 @@ Constant *ConstantExpr::get(unsigned Opcode, Constant *C1, Constant *C2) {
case Instruction::Sub: case Instruction::Sub:
case Instruction::Mul: case Instruction::Mul:
assert(C1->getType() == C2->getType() && "Op types should be identical!"); assert(C1->getType() == C2->getType() && "Op types should be identical!");
assert((C1->getType()->isIntegral() || C1->getType()->isFloatingPoint() || assert((C1->getType()->isInteger() || C1->getType()->isFloatingPoint() ||
isa<PackedType>(C1->getType())) && isa<PackedType>(C1->getType())) &&
"Tried to create an arithmetic operation on a non-arithmetic type!"); "Tried to create an arithmetic operation on a non-arithmetic type!");
break; break;
case Instruction::UDiv: case Instruction::UDiv:
case Instruction::SDiv: case Instruction::SDiv:
assert(C1->getType() == C2->getType() && "Op types should be identical!"); assert(C1->getType() == C2->getType() && "Op types should be identical!");
assert((C1->getType()->isIntegral() || (isa<PackedType>(C1->getType()) && assert((C1->getType()->isInteger() || (isa<PackedType>(C1->getType()) &&
cast<PackedType>(C1->getType())->getElementType()->isIntegral())) && cast<PackedType>(C1->getType())->getElementType()->isInteger())) &&
"Tried to create an arithmetic operation on a non-arithmetic type!"); "Tried to create an arithmetic operation on a non-arithmetic type!");
break; break;
case Instruction::FDiv: case Instruction::FDiv:
@ -1669,8 +1669,8 @@ Constant *ConstantExpr::get(unsigned Opcode, Constant *C1, Constant *C2) {
case Instruction::URem: case Instruction::URem:
case Instruction::SRem: case Instruction::SRem:
assert(C1->getType() == C2->getType() && "Op types should be identical!"); assert(C1->getType() == C2->getType() && "Op types should be identical!");
assert((C1->getType()->isIntegral() || (isa<PackedType>(C1->getType()) && assert((C1->getType()->isInteger() || (isa<PackedType>(C1->getType()) &&
cast<PackedType>(C1->getType())->getElementType()->isIntegral())) && cast<PackedType>(C1->getType())->getElementType()->isInteger())) &&
"Tried to create an arithmetic operation on a non-arithmetic type!"); "Tried to create an arithmetic operation on a non-arithmetic type!");
break; break;
case Instruction::FRem: case Instruction::FRem:
@ -1683,14 +1683,14 @@ Constant *ConstantExpr::get(unsigned Opcode, Constant *C1, Constant *C2) {
case Instruction::Or: case Instruction::Or:
case Instruction::Xor: case Instruction::Xor:
assert(C1->getType() == C2->getType() && "Op types should be identical!"); assert(C1->getType() == C2->getType() && "Op types should be identical!");
assert((C1->getType()->isIntegral() || isa<PackedType>(C1->getType())) && assert((C1->getType()->isInteger() || isa<PackedType>(C1->getType())) &&
"Tried to create a logical operation on a non-integral type!"); "Tried to create a logical operation on a non-integral type!");
break; break;
case Instruction::Shl: case Instruction::Shl:
case Instruction::LShr: case Instruction::LShr:
case Instruction::AShr: case Instruction::AShr:
assert(C2->getType() == Type::Int8Ty && "Shift should be by ubyte!"); assert(C2->getType() == Type::Int8Ty && "Shift should be by ubyte!");
assert(C1->getType()->isIntegral() && assert(C1->getType()->isInteger() &&
"Tried to create a shift operation on a non-integer type!"); "Tried to create a shift operation on a non-integer type!");
break; break;
default: default:
@ -1732,7 +1732,7 @@ Constant *ConstantExpr::getShiftTy(const Type *ReqTy, unsigned Opcode,
Opcode == Instruction::LShr || Opcode == Instruction::LShr ||
Opcode == Instruction::AShr) && Opcode == Instruction::AShr) &&
"Invalid opcode in binary constant expression"); "Invalid opcode in binary constant expression");
assert(C1->getType()->isIntegral() && C2->getType() == Type::Int8Ty && assert(C1->getType()->isInteger() && C2->getType() == Type::Int8Ty &&
"Invalid operand types for Shift constant expr!"); "Invalid operand types for Shift constant expr!");
if (Constant *FC = ConstantFoldBinaryInstruction(Opcode, C1, C2)) if (Constant *FC = ConstantFoldBinaryInstruction(Opcode, C1, C2))

View File

@ -1025,7 +1025,7 @@ void BinaryOperator::init(BinaryOps iType)
case Mul: case Mul:
assert(getType() == LHS->getType() && assert(getType() == LHS->getType() &&
"Arithmetic operation should return same type as operands!"); "Arithmetic operation should return same type as operands!");
assert((getType()->isIntegral() || getType()->isFloatingPoint() || assert((getType()->isInteger() || getType()->isFloatingPoint() ||
isa<PackedType>(getType())) && isa<PackedType>(getType())) &&
"Tried to create an arithmetic operation on a non-arithmetic type!"); "Tried to create an arithmetic operation on a non-arithmetic type!");
break; break;
@ -1033,8 +1033,8 @@ void BinaryOperator::init(BinaryOps iType)
case SDiv: case SDiv:
assert(getType() == LHS->getType() && assert(getType() == LHS->getType() &&
"Arithmetic operation should return same type as operands!"); "Arithmetic operation should return same type as operands!");
assert((getType()->isIntegral() || (isa<PackedType>(getType()) && assert((getType()->isInteger() || (isa<PackedType>(getType()) &&
cast<PackedType>(getType())->getElementType()->isIntegral())) && cast<PackedType>(getType())->getElementType()->isInteger())) &&
"Incorrect operand type (not integer) for S/UDIV"); "Incorrect operand type (not integer) for S/UDIV");
break; break;
case FDiv: case FDiv:
@ -1048,8 +1048,8 @@ void BinaryOperator::init(BinaryOps iType)
case SRem: case SRem:
assert(getType() == LHS->getType() && assert(getType() == LHS->getType() &&
"Arithmetic operation should return same type as operands!"); "Arithmetic operation should return same type as operands!");
assert((getType()->isIntegral() || (isa<PackedType>(getType()) && assert((getType()->isInteger() || (isa<PackedType>(getType()) &&
cast<PackedType>(getType())->getElementType()->isIntegral())) && cast<PackedType>(getType())->getElementType()->isInteger())) &&
"Incorrect operand type (not integer) for S/UREM"); "Incorrect operand type (not integer) for S/UREM");
break; break;
case FRem: case FRem:
@ -1063,9 +1063,9 @@ void BinaryOperator::init(BinaryOps iType)
case Xor: case Xor:
assert(getType() == LHS->getType() && assert(getType() == LHS->getType() &&
"Logical operation should return same type as operands!"); "Logical operation should return same type as operands!");
assert((getType()->isIntegral() || assert((getType()->isInteger() ||
(isa<PackedType>(getType()) && (isa<PackedType>(getType()) &&
cast<PackedType>(getType())->getElementType()->isIntegral())) && cast<PackedType>(getType())->getElementType()->isInteger())) &&
"Tried to create a logical operation on a non-integral type!"); "Tried to create a logical operation on a non-integral type!");
break; break;
default: default:
@ -1218,7 +1218,7 @@ bool CastInst::isIntegerCast() const {
case Instruction::Trunc: case Instruction::Trunc:
return true; return true;
case Instruction::BitCast: case Instruction::BitCast:
return getOperand(0)->getType()->isIntegral() && getType()->isIntegral(); return getOperand(0)->getType()->isInteger() && getType()->isInteger();
} }
} }
@ -1351,7 +1351,7 @@ unsigned CastInst::isEliminableCastPair(
case 3: case 3:
// no-op cast in second op implies firstOp as long as the DestTy // no-op cast in second op implies firstOp as long as the DestTy
// is integer // is integer
if (DstTy->isIntegral()) if (DstTy->isInteger())
return firstOp; return firstOp;
return 0; return 0;
case 4: case 4:
@ -1363,7 +1363,7 @@ unsigned CastInst::isEliminableCastPair(
case 5: case 5:
// no-op cast in first op implies secondOp as long as the SrcTy // no-op cast in first op implies secondOp as long as the SrcTy
// is an integer // is an integer
if (SrcTy->isIntegral()) if (SrcTy->isInteger())
return secondOp; return secondOp;
return 0; return 0;
case 6: case 6:
@ -1528,10 +1528,10 @@ CastInst *CastInst::createPointerCast(Value *S, const Type *Ty,
const std::string &Name, const std::string &Name,
BasicBlock *InsertAtEnd) { BasicBlock *InsertAtEnd) {
assert(isa<PointerType>(S->getType()) && "Invalid cast"); assert(isa<PointerType>(S->getType()) && "Invalid cast");
assert((Ty->isIntegral() || isa<PointerType>(Ty)) && assert((Ty->isInteger() || isa<PointerType>(Ty)) &&
"Invalid cast"); "Invalid cast");
if (Ty->isIntegral()) if (Ty->isInteger())
return create(Instruction::PtrToInt, S, Ty, Name, InsertAtEnd); return create(Instruction::PtrToInt, S, Ty, Name, InsertAtEnd);
return create(Instruction::BitCast, S, Ty, Name, InsertAtEnd); return create(Instruction::BitCast, S, Ty, Name, InsertAtEnd);
} }
@ -1541,10 +1541,10 @@ CastInst *CastInst::createPointerCast(Value *S, const Type *Ty,
const std::string &Name, const std::string &Name,
Instruction *InsertBefore) { Instruction *InsertBefore) {
assert(isa<PointerType>(S->getType()) && "Invalid cast"); assert(isa<PointerType>(S->getType()) && "Invalid cast");
assert((Ty->isIntegral() || isa<PointerType>(Ty)) && assert((Ty->isInteger() || isa<PointerType>(Ty)) &&
"Invalid cast"); "Invalid cast");
if (Ty->isIntegral()) if (Ty->isInteger())
return create(Instruction::PtrToInt, S, Ty, Name, InsertBefore); return create(Instruction::PtrToInt, S, Ty, Name, InsertBefore);
return create(Instruction::BitCast, S, Ty, Name, InsertBefore); return create(Instruction::BitCast, S, Ty, Name, InsertBefore);
} }
@ -1552,7 +1552,7 @@ CastInst *CastInst::createPointerCast(Value *S, const Type *Ty,
CastInst *CastInst::createIntegerCast(Value *C, const Type *Ty, CastInst *CastInst::createIntegerCast(Value *C, const Type *Ty,
bool isSigned, const std::string &Name, bool isSigned, const std::string &Name,
Instruction *InsertBefore) { Instruction *InsertBefore) {
assert(C->getType()->isIntegral() && Ty->isIntegral() && "Invalid cast"); assert(C->getType()->isInteger() && Ty->isInteger() && "Invalid cast");
unsigned SrcBits = C->getType()->getPrimitiveSizeInBits(); unsigned SrcBits = C->getType()->getPrimitiveSizeInBits();
unsigned DstBits = Ty->getPrimitiveSizeInBits(); unsigned DstBits = Ty->getPrimitiveSizeInBits();
Instruction::CastOps opcode = Instruction::CastOps opcode =
@ -1565,7 +1565,7 @@ CastInst *CastInst::createIntegerCast(Value *C, const Type *Ty,
CastInst *CastInst::createIntegerCast(Value *C, const Type *Ty, CastInst *CastInst::createIntegerCast(Value *C, const Type *Ty,
bool isSigned, const std::string &Name, bool isSigned, const std::string &Name,
BasicBlock *InsertAtEnd) { BasicBlock *InsertAtEnd) {
assert(C->getType()->isIntegral() && Ty->isIntegral() && "Invalid cast"); assert(C->getType()->isInteger() && Ty->isInteger() && "Invalid cast");
unsigned SrcBits = C->getType()->getPrimitiveSizeInBits(); unsigned SrcBits = C->getType()->getPrimitiveSizeInBits();
unsigned DstBits = Ty->getPrimitiveSizeInBits(); unsigned DstBits = Ty->getPrimitiveSizeInBits();
Instruction::CastOps opcode = Instruction::CastOps opcode =
@ -1616,8 +1616,8 @@ CastInst::getCastOpcode(
unsigned DestBits = DestTy->getPrimitiveSizeInBits(); // 0 for ptr/packed unsigned DestBits = DestTy->getPrimitiveSizeInBits(); // 0 for ptr/packed
// Run through the possibilities ... // Run through the possibilities ...
if (DestTy->isIntegral()) { // Casting to integral if (DestTy->isInteger()) { // Casting to integral
if (SrcTy->isIntegral()) { // Casting from integral if (SrcTy->isInteger()) { // Casting from integral
if (DestBits < SrcBits) if (DestBits < SrcBits)
return Trunc; // int -> smaller int return Trunc; // int -> smaller int
else if (DestBits > SrcBits) { // its an extension else if (DestBits > SrcBits) { // its an extension
@ -1643,7 +1643,7 @@ CastInst::getCastOpcode(
return PtrToInt; // ptr -> int return PtrToInt; // ptr -> int
} }
} else if (DestTy->isFloatingPoint()) { // Casting to floating pt } else if (DestTy->isFloatingPoint()) { // Casting to floating pt
if (SrcTy->isIntegral()) { // Casting from integral if (SrcTy->isInteger()) { // Casting from integral
if (SrcIsSigned) if (SrcIsSigned)
return SIToFP; // sint -> FP return SIToFP; // sint -> FP
else else
@ -1676,7 +1676,7 @@ CastInst::getCastOpcode(
} else if (isa<PointerType>(DestTy)) { } else if (isa<PointerType>(DestTy)) {
if (isa<PointerType>(SrcTy)) { if (isa<PointerType>(SrcTy)) {
return BitCast; // ptr -> ptr return BitCast; // ptr -> ptr
} else if (SrcTy->isIntegral()) { } else if (SrcTy->isInteger()) {
return IntToPtr; // int -> ptr return IntToPtr; // int -> ptr
} else { } else {
assert(!"Casting pointer to other than pointer or int"); assert(!"Casting pointer to other than pointer or int");
@ -1715,11 +1715,11 @@ checkCast(Instruction::CastOps op, Value *S, const Type *DstTy) {
switch (op) { switch (op) {
default: return false; // This is an input error default: return false; // This is an input error
case Instruction::Trunc: case Instruction::Trunc:
return SrcTy->isIntegral() && DstTy->isIntegral()&& SrcBitSize > DstBitSize; return SrcTy->isInteger() && DstTy->isInteger()&& SrcBitSize > DstBitSize;
case Instruction::ZExt: case Instruction::ZExt:
return SrcTy->isIntegral() && DstTy->isIntegral()&& SrcBitSize < DstBitSize; return SrcTy->isInteger() && DstTy->isInteger()&& SrcBitSize < DstBitSize;
case Instruction::SExt: case Instruction::SExt:
return SrcTy->isIntegral() && DstTy->isIntegral()&& SrcBitSize < DstBitSize; return SrcTy->isInteger() && DstTy->isInteger()&& SrcBitSize < DstBitSize;
case Instruction::FPTrunc: case Instruction::FPTrunc:
return SrcTy->isFloatingPoint() && DstTy->isFloatingPoint() && return SrcTy->isFloatingPoint() && DstTy->isFloatingPoint() &&
SrcBitSize > DstBitSize; SrcBitSize > DstBitSize;
@ -1727,17 +1727,17 @@ checkCast(Instruction::CastOps op, Value *S, const Type *DstTy) {
return SrcTy->isFloatingPoint() && DstTy->isFloatingPoint() && return SrcTy->isFloatingPoint() && DstTy->isFloatingPoint() &&
SrcBitSize < DstBitSize; SrcBitSize < DstBitSize;
case Instruction::UIToFP: case Instruction::UIToFP:
return SrcTy->isIntegral() && DstTy->isFloatingPoint(); return SrcTy->isInteger() && DstTy->isFloatingPoint();
case Instruction::SIToFP: case Instruction::SIToFP:
return SrcTy->isIntegral() && DstTy->isFloatingPoint(); return SrcTy->isInteger() && DstTy->isFloatingPoint();
case Instruction::FPToUI: case Instruction::FPToUI:
return SrcTy->isFloatingPoint() && DstTy->isIntegral(); return SrcTy->isFloatingPoint() && DstTy->isInteger();
case Instruction::FPToSI: case Instruction::FPToSI:
return SrcTy->isFloatingPoint() && DstTy->isIntegral(); return SrcTy->isFloatingPoint() && DstTy->isInteger();
case Instruction::PtrToInt: case Instruction::PtrToInt:
return isa<PointerType>(SrcTy) && DstTy->isIntegral(); return isa<PointerType>(SrcTy) && DstTy->isInteger();
case Instruction::IntToPtr: case Instruction::IntToPtr:
return SrcTy->isIntegral() && isa<PointerType>(DstTy); return SrcTy->isInteger() && isa<PointerType>(DstTy);
case Instruction::BitCast: case Instruction::BitCast:
// BitCast implies a no-op cast of type only. No bits change. // BitCast implies a no-op cast of type only. No bits change.
// However, you can't cast pointers to anything but pointers. // However, you can't cast pointers to anything but pointers.
@ -1913,9 +1913,9 @@ CmpInst::CmpInst(OtherOps op, unsigned short predicate, Value *LHS, Value *RHS,
assert(Op0Ty == Op1Ty && assert(Op0Ty == Op1Ty &&
"Both operands to ICmp instruction are not of the same type!"); "Both operands to ICmp instruction are not of the same type!");
// Check that the operands are the right type // Check that the operands are the right type
assert(Op0Ty->isIntegral() || isa<PointerType>(Op0Ty) || assert(Op0Ty->isInteger() || isa<PointerType>(Op0Ty) ||
(isa<PackedType>(Op0Ty) && (isa<PackedType>(Op0Ty) &&
cast<PackedType>(Op0Ty)->getElementType()->isIntegral()) && cast<PackedType>(Op0Ty)->getElementType()->isInteger()) &&
"Invalid operand types for ICmp instruction"); "Invalid operand types for ICmp instruction");
return; return;
} }
@ -1948,9 +1948,9 @@ CmpInst::CmpInst(OtherOps op, unsigned short predicate, Value *LHS, Value *RHS,
assert(Op0Ty == Op1Ty && assert(Op0Ty == Op1Ty &&
"Both operands to ICmp instruction are not of the same type!"); "Both operands to ICmp instruction are not of the same type!");
// Check that the operands are the right type // Check that the operands are the right type
assert(Op0Ty->isIntegral() || isa<PointerType>(Op0Ty) || assert(Op0Ty->isInteger() || isa<PointerType>(Op0Ty) ||
(isa<PackedType>(Op0Ty) && (isa<PackedType>(Op0Ty) &&
cast<PackedType>(Op0Ty)->getElementType()->isIntegral()) && cast<PackedType>(Op0Ty)->getElementType()->isInteger()) &&
"Invalid operand types for ICmp instruction"); "Invalid operand types for ICmp instruction");
return; return;
} }

View File

@ -428,7 +428,7 @@ PackedType::PackedType(const Type *ElType, unsigned NumEl)
NumElements = NumEl; NumElements = NumEl;
assert(NumEl > 0 && "NumEl of a PackedType must be greater than 0"); assert(NumEl > 0 && "NumEl of a PackedType must be greater than 0");
assert((ElType->isIntegral() || ElType->isFloatingPoint()) && assert((ElType->isInteger() || ElType->isFloatingPoint()) &&
"Elements of a PackedType must be a primitive type"); "Elements of a PackedType must be a primitive type");
} }

View File

@ -500,8 +500,8 @@ void Verifier::visitTruncInst(TruncInst &I) {
unsigned SrcBitSize = SrcTy->getPrimitiveSizeInBits(); unsigned SrcBitSize = SrcTy->getPrimitiveSizeInBits();
unsigned DestBitSize = DestTy->getPrimitiveSizeInBits(); unsigned DestBitSize = DestTy->getPrimitiveSizeInBits();
Assert1(SrcTy->isIntegral(), "Trunc only operates on integer", &I); Assert1(SrcTy->isInteger(), "Trunc only operates on integer", &I);
Assert1(DestTy->isIntegral(), "Trunc only produces integer", &I); Assert1(DestTy->isInteger(), "Trunc only produces integer", &I);
Assert1(SrcBitSize > DestBitSize,"DestTy too big for Trunc", &I); Assert1(SrcBitSize > DestBitSize,"DestTy too big for Trunc", &I);
visitInstruction(I); visitInstruction(I);
@ -513,8 +513,8 @@ void Verifier::visitZExtInst(ZExtInst &I) {
const Type *DestTy = I.getType(); const Type *DestTy = I.getType();
// Get the size of the types in bits, we'll need this later // Get the size of the types in bits, we'll need this later
Assert1(SrcTy->isIntegral(), "ZExt only operates on integer", &I); Assert1(SrcTy->isInteger(), "ZExt only operates on integer", &I);
Assert1(DestTy->isIntegral(), "ZExt only produces an integer", &I); Assert1(DestTy->isInteger(), "ZExt only produces an integer", &I);
unsigned SrcBitSize = SrcTy->getPrimitiveSizeInBits(); unsigned SrcBitSize = SrcTy->getPrimitiveSizeInBits();
unsigned DestBitSize = DestTy->getPrimitiveSizeInBits(); unsigned DestBitSize = DestTy->getPrimitiveSizeInBits();
@ -532,8 +532,8 @@ void Verifier::visitSExtInst(SExtInst &I) {
unsigned SrcBitSize = SrcTy->getPrimitiveSizeInBits(); unsigned SrcBitSize = SrcTy->getPrimitiveSizeInBits();
unsigned DestBitSize = DestTy->getPrimitiveSizeInBits(); unsigned DestBitSize = DestTy->getPrimitiveSizeInBits();
Assert1(SrcTy->isIntegral(), "SExt only operates on integer", &I); Assert1(SrcTy->isInteger(), "SExt only operates on integer", &I);
Assert1(DestTy->isIntegral(), "SExt only produces an integer", &I); Assert1(DestTy->isInteger(), "SExt only produces an integer", &I);
Assert1(SrcBitSize < DestBitSize,"Type too small for SExt", &I); Assert1(SrcBitSize < DestBitSize,"Type too small for SExt", &I);
visitInstruction(I); visitInstruction(I);
@ -575,7 +575,7 @@ void Verifier::visitUIToFPInst(UIToFPInst &I) {
const Type *SrcTy = I.getOperand(0)->getType(); const Type *SrcTy = I.getOperand(0)->getType();
const Type *DestTy = I.getType(); const Type *DestTy = I.getType();
Assert1(SrcTy->isIntegral(),"UInt2FP source must be integral", &I); Assert1(SrcTy->isInteger(),"UInt2FP source must be integral", &I);
Assert1(DestTy->isFloatingPoint(),"UInt2FP result must be FP", &I); Assert1(DestTy->isFloatingPoint(),"UInt2FP result must be FP", &I);
visitInstruction(I); visitInstruction(I);
@ -586,7 +586,7 @@ void Verifier::visitSIToFPInst(SIToFPInst &I) {
const Type *SrcTy = I.getOperand(0)->getType(); const Type *SrcTy = I.getOperand(0)->getType();
const Type *DestTy = I.getType(); const Type *DestTy = I.getType();
Assert1(SrcTy->isIntegral(),"SInt2FP source must be integral", &I); Assert1(SrcTy->isInteger(),"SInt2FP source must be integral", &I);
Assert1(DestTy->isFloatingPoint(),"SInt2FP result must be FP", &I); Assert1(DestTy->isFloatingPoint(),"SInt2FP result must be FP", &I);
visitInstruction(I); visitInstruction(I);
@ -598,7 +598,7 @@ void Verifier::visitFPToUIInst(FPToUIInst &I) {
const Type *DestTy = I.getType(); const Type *DestTy = I.getType();
Assert1(SrcTy->isFloatingPoint(),"FP2UInt source must be FP", &I); Assert1(SrcTy->isFloatingPoint(),"FP2UInt source must be FP", &I);
Assert1(DestTy->isIntegral(),"FP2UInt result must be integral", &I); Assert1(DestTy->isInteger(),"FP2UInt result must be integral", &I);
visitInstruction(I); visitInstruction(I);
} }
@ -609,7 +609,7 @@ void Verifier::visitFPToSIInst(FPToSIInst &I) {
const Type *DestTy = I.getType(); const Type *DestTy = I.getType();
Assert1(SrcTy->isFloatingPoint(),"FPToSI source must be FP", &I); Assert1(SrcTy->isFloatingPoint(),"FPToSI source must be FP", &I);
Assert1(DestTy->isIntegral(),"FP2ToI result must be integral", &I); Assert1(DestTy->isInteger(),"FP2ToI result must be integral", &I);
visitInstruction(I); visitInstruction(I);
} }
@ -620,7 +620,7 @@ void Verifier::visitPtrToIntInst(PtrToIntInst &I) {
const Type *DestTy = I.getType(); const Type *DestTy = I.getType();
Assert1(isa<PointerType>(SrcTy), "PtrToInt source must be pointer", &I); Assert1(isa<PointerType>(SrcTy), "PtrToInt source must be pointer", &I);
Assert1(DestTy->isIntegral(), "PtrToInt result must be integral", &I); Assert1(DestTy->isInteger(), "PtrToInt result must be integral", &I);
visitInstruction(I); visitInstruction(I);
} }
@ -630,7 +630,7 @@ void Verifier::visitIntToPtrInst(IntToPtrInst &I) {
const Type *SrcTy = I.getOperand(0)->getType(); const Type *SrcTy = I.getOperand(0)->getType();
const Type *DestTy = I.getType(); const Type *DestTy = I.getType();
Assert1(SrcTy->isIntegral(), "IntToPtr source must be an integral", &I); Assert1(SrcTy->isInteger(), "IntToPtr source must be an integral", &I);
Assert1(isa<PointerType>(DestTy), "IntToPtr result must be a pointer",&I); Assert1(isa<PointerType>(DestTy), "IntToPtr result must be a pointer",&I);
visitInstruction(I); visitInstruction(I);
@ -716,9 +716,9 @@ void Verifier::visitBinaryOperator(BinaryOperator &B) {
// Check that logical operators are only used with integral operands. // Check that logical operators are only used with integral operands.
if (B.getOpcode() == Instruction::And || B.getOpcode() == Instruction::Or || if (B.getOpcode() == Instruction::And || B.getOpcode() == Instruction::Or ||
B.getOpcode() == Instruction::Xor) { B.getOpcode() == Instruction::Xor) {
Assert1(B.getType()->isIntegral() || Assert1(B.getType()->isInteger() ||
(isa<PackedType>(B.getType()) && (isa<PackedType>(B.getType()) &&
cast<PackedType>(B.getType())->getElementType()->isIntegral()), cast<PackedType>(B.getType())->getElementType()->isInteger()),
"Logical operators only work with integral types!", &B); "Logical operators only work with integral types!", &B);
Assert1(B.getType() == B.getOperand(0)->getType(), Assert1(B.getType() == B.getOperand(0)->getType(),
"Logical operators must have same type for operands and result!", "Logical operators must have same type for operands and result!",
@ -728,7 +728,7 @@ void Verifier::visitBinaryOperator(BinaryOperator &B) {
Assert1(B.getType() == B.getOperand(0)->getType(), Assert1(B.getType() == B.getOperand(0)->getType(),
"Arithmetic operators must have same type for operands and result!", "Arithmetic operators must have same type for operands and result!",
&B); &B);
Assert1(B.getType()->isIntegral() || B.getType()->isFloatingPoint() || Assert1(B.getType()->isInteger() || B.getType()->isFloatingPoint() ||
isa<PackedType>(B.getType()), isa<PackedType>(B.getType()),
"Arithmetic operators must have integer, fp, or packed type!", &B); "Arithmetic operators must have integer, fp, or packed type!", &B);
} }
@ -743,7 +743,7 @@ void Verifier::visitICmpInst(ICmpInst& IC) {
Assert1(Op0Ty == Op1Ty, Assert1(Op0Ty == Op1Ty,
"Both operands to ICmp instruction are not of the same type!", &IC); "Both operands to ICmp instruction are not of the same type!", &IC);
// Check that the operands are the right type // Check that the operands are the right type
Assert1(Op0Ty->isIntegral() || isa<PointerType>(Op0Ty), Assert1(Op0Ty->isInteger() || isa<PointerType>(Op0Ty),
"Invalid operand types for ICmp instruction", &IC); "Invalid operand types for ICmp instruction", &IC);
visitInstruction(IC); visitInstruction(IC);
} }
@ -761,7 +761,7 @@ void Verifier::visitFCmpInst(FCmpInst& FC) {
} }
void Verifier::visitShiftInst(ShiftInst &SI) { void Verifier::visitShiftInst(ShiftInst &SI) {
Assert1(SI.getType()->isIntegral(), Assert1(SI.getType()->isInteger(),
"Shift must return an integer result!", &SI); "Shift must return an integer result!", &SI);
Assert1(SI.getType() == SI.getOperand(0)->getType(), Assert1(SI.getType() == SI.getOperand(0)->getType(),
"Shift return type must be same as first operand!", &SI); "Shift return type must be same as first operand!", &SI);

View File

@ -310,7 +310,7 @@ std::string
CppWriter::getCppName(const Type* Ty) CppWriter::getCppName(const Type* Ty)
{ {
// First, handle the primitive types .. easy // First, handle the primitive types .. easy
if (Ty->isPrimitiveType() || Ty->isIntegral()) { if (Ty->isPrimitiveType() || Ty->isInteger()) {
switch (Ty->getTypeID()) { switch (Ty->getTypeID()) {
case Type::VoidTyID: return "Type::VoidTy"; case Type::VoidTyID: return "Type::VoidTy";
case Type::IntegerTyID: { case Type::IntegerTyID: {
@ -410,7 +410,7 @@ CppWriter::printCppName(const Value* val) {
bool bool
CppWriter::printTypeInternal(const Type* Ty) { CppWriter::printTypeInternal(const Type* Ty) {
// We don't print definitions for primitive types // We don't print definitions for primitive types
if (Ty->isPrimitiveType() || Ty->isIntegral()) if (Ty->isPrimitiveType() || Ty->isInteger())
return false; return false;
// If we already defined this type, we don't need to define it again. // If we already defined this type, we don't need to define it again.
@ -599,7 +599,7 @@ CppWriter::printTypes(const Module* M) {
// For primitive types and types already defined, just add a name // For primitive types and types already defined, just add a name
TypeMap::const_iterator TNI = TypeNames.find(TI->second); TypeMap::const_iterator TNI = TypeNames.find(TI->second);
if (TI->second->isIntegral() || TI->second->isPrimitiveType() || if (TI->second->isInteger() || TI->second->isPrimitiveType() ||
TNI != TypeNames.end()) { TNI != TypeNames.end()) {
Out << "mod->addTypeName(\""; Out << "mod->addTypeName(\"";
printEscapedString(TI->first); printEscapedString(TI->first);