diff options
author | Zhou Sheng <zhousheng00@gmail.com> | 2007-01-11 12:24:14 +0000 |
---|---|---|
committer | Zhou Sheng <zhousheng00@gmail.com> | 2007-01-11 12:24:14 +0000 |
commit | 6b6b6ef1677fa71b1072c2911b4c1f9524a558c9 (patch) | |
tree | 480ecf010ac5facd1bc29ab57441253691bb42d6 | |
parent | 057809ac1c78c3456e8f1481330fa2bcd2b85029 (diff) | |
download | external_llvm-6b6b6ef1677fa71b1072c2911b4c1f9524a558c9.zip external_llvm-6b6b6ef1677fa71b1072c2911b4c1f9524a558c9.tar.gz external_llvm-6b6b6ef1677fa71b1072c2911b4c1f9524a558c9.tar.bz2 |
For PR1043:
Merge ConstantIntegral and ConstantBool into ConstantInt.
Remove ConstantIntegral and ConstantBool from LLVM.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33073 91177308-0d34-0410-b5e6-96231b3b80d8
43 files changed, 1930 insertions, 1824 deletions
diff --git a/include/llvm/Constants.h b/include/llvm/Constants.h index e7552e3..de9730c 100644 --- a/include/llvm/Constants.h +++ b/include/llvm/Constants.h @@ -36,18 +36,19 @@ template<class ConstantClass, class TypeClass> struct ConvertConstantType; //===----------------------------------------------------------------------===// -/// This is the shared superclass of boolean and integer constants. This class -/// just defines some common interfaces to be implemented by the subclasses. -/// @brief An abstract class for integer constants. -class ConstantIntegral : public Constant { +/// This is the shared class of boolean and integrer constants. This class +/// represents both boolean and integral constants. +/// @brief Class for constant integers. +class ConstantInt : public Constant { protected: uint64_t Val; - ConstantIntegral(const Type *Ty, ValueTy VT, uint64_t V); +protected: + ConstantInt(const ConstantInt &); // DO NOT IMPLEMENT + ConstantInt(const Type *Ty, uint64_t V); + ConstantInt(const Type *Ty, int64_t V); + ConstantInt(bool V); + friend struct ConstantCreator<ConstantInt, Type, uint64_t>; public: - - /// ConstantIntegral::get - Return a bool or integer constant. - static ConstantIntegral *get(const Type *Ty, int64_t V); - /// Return the constant as a 64-bit unsigned integer value after it /// has been zero extended as appropriate for the type of this constant. /// @brief Return the zero extended value. @@ -62,106 +63,6 @@ public: unsigned Size = getType()->getPrimitiveSizeInBits(); return (int64_t(Val) << (64-Size)) >> (64-Size); } - - /// This function is implemented by subclasses and will return true iff this - /// constant represents the the "null" value that would be returned by the - /// getNullValue method. - /// @returns true if the constant's value is 0. - /// @brief Determine if the value is null. - virtual bool isNullValue() const = 0; - - /// This function is implemented by sublcasses and will return true iff this - /// constant represents the the largest value that may be represented by this - /// constant's type. - /// @returns true if the constant's value is maximal. - /// @brief Determine if the value is maximal. - virtual bool isMaxValue(bool isSigned) const = 0; - - /// This function is implemented by subclasses and will return true iff this - /// constant represents the smallest value that may be represented by this - /// constant's type. - /// @returns true if the constant's value is minimal - /// @brief Determine if the value is minimal. - virtual bool isMinValue(bool isSigned) const = 0; - - /// This function is implemented by subclasses and will return true iff every - /// bit in this constant is set to true. - /// @returns true if all bits of the constant are ones. - /// @brief Determine if the value is all ones. - virtual bool isAllOnesValue() const = 0; - - /// @returns the value for an integer constant of the given type that has all - /// its bits set to true. - /// @brief Get the all ones value - static ConstantIntegral *getAllOnesValue(const Type *Ty); - - /// Methods to support type inquiry through isa, cast, and dyn_cast: - static inline bool classof(const ConstantIntegral *) { return true; } - static bool classof(const Value *V) { - return V->getValueType() == ConstantBoolVal || - V->getValueType() == ConstantIntVal; - } -}; - - -//===----------------------------------------------------------------------===// -/// This concrete class represents constant values of type BoolTy. There are -/// only two instances of this class constructed: the True and False static -/// members. The constructor is hidden to ensure this invariant. -/// @brief Constant Boolean class -class ConstantBool : public ConstantIntegral { - ConstantBool(bool V); -public: - /// getTrue/getFalse - Return the singleton true/false values. - static ConstantBool *getTrue(); - static ConstantBool *getFalse(); - - /// This method is provided mostly for compatibility with the other - /// ConstantIntegral subclasses. - /// @brief Static factory method for getting a ConstantBool instance. - static ConstantBool *get(bool Value) { return Value ? getTrue() : getFalse();} - - /// This method is provided mostly for compatibility with the other - /// ConstantIntegral subclasses. - /// @brief Static factory method for getting a ConstantBool instance. - static ConstantBool *get(const Type *Ty, bool Value) { return get(Value); } - - /// Returns the opposite value of this ConstantBool value. - /// @brief Get inverse value. - inline ConstantBool *inverted() const { - return getValue() ? getFalse() : getTrue(); - } - - /// @returns the value of this ConstantBool - /// @brief return the boolean value of this constant. - inline bool getValue() const { return static_cast<bool>(getZExtValue()); } - - /// @see ConstantIntegral for details - /// @brief Implement overrides - virtual bool isNullValue() const { return getValue() == false; } - virtual bool isMaxValue(bool isSigned) const { return getValue() == true; } - virtual bool isMinValue(bool isSigned) const { return getValue() == false; } - virtual bool isAllOnesValue() const { return getValue() == true; } - - /// @brief Methods to support type inquiry through isa, cast, and dyn_cast: - static inline bool classof(const ConstantBool *) { return true; } - static bool classof(const Value *V) { - return V->getValueType() == ConstantBoolVal; - } -}; - - -//===----------------------------------------------------------------------===// -/// This is concrete integer subclass of ConstantIntegral that represents -/// both signed and unsigned integral constants, other than boolean. -/// @brief Class for constant integers. -class ConstantInt : public ConstantIntegral { -protected: - ConstantInt(const ConstantInt &); // DO NOT IMPLEMENT - ConstantInt(const Type *Ty, uint64_t V); - ConstantInt(const Type *Ty, int64_t V); - friend struct ConstantCreator<ConstantInt, Type, uint64_t>; -public: /// A helper method that can be used to determine if the constant contained /// within is equal to a constant. This only works for very small values, /// because this is all that can be represented with all types. @@ -172,13 +73,45 @@ public: return Val == V; } + /// getTrue/getFalse - Return the singleton true/false values. + static inline ConstantInt *getTrue() { + static ConstantInt *T = 0; + if (T) return T; + return T = new ConstantInt(true); + } + static inline ConstantInt *getFalse() { + static ConstantInt *F = 0; + if (F) return F; + return F = new ConstantInt(false); + } + + /// @brief Static factory method for getting a ConstantInt instance which + /// stands for a bool value. + static ConstantInt *get(bool Value) { return Value ? getTrue() : getFalse();} + /// Return a ConstantInt with the specified value for the specified type. The /// value V will be canonicalized to a uint64_t but accessing it with either - /// getSExtValue() or getZExtValue() (ConstantIntegral) will yield the correct + /// getSExtValue() or getZExtValue() (ConstantInt) will yield the correct /// sized/signed value for the type Ty. /// @brief Get a ConstantInt for a specific value. static ConstantInt *get(const Type *Ty, int64_t V); + /// Returns the opposite value of this ConstantInt value if it's a boolean + /// constant. + /// @brief Get inverse value. + inline ConstantInt *inverted() const { + static ConstantInt *CI = 0; + if (CI) return CI; + return CI = new ConstantInt(getType(), Val ^ (-1)); + } + + /// @returns the value of this ConstantInt only if it's a boolean type. + /// @brief return the boolean value of this constant. + inline bool getBoolValue() const { + assert(getType() == Type::BoolTy && "Should be a boolean constant!"); + return static_cast<bool>(getZExtValue()); + } + /// This static method returns true if the type Ty is big enough to /// represent the value V. This can be used to avoid having the get method /// assert when V is larger than Ty can represent. Note that there are two @@ -191,21 +124,30 @@ public: static bool isValueValidForType(const Type *Ty, uint64_t V); static bool isValueValidForType(const Type *Ty, int64_t V); + /// This function will return true iff this constant represents the "null" + /// value that would be returned by the getNullValue method. /// @returns true if this is the null integer value. - /// @see ConstantIntegral for details - /// @brief Implement override. - virtual bool isNullValue() const { return Val == 0; } + /// @brief Determine if the value is null. + virtual bool isNullValue() const { + return Val == 0; + } + /// This function will return true iff every bit in this constant is set + /// to true. /// @returns true iff this constant's bits are all set to true. - /// @see ConstantIntegral - /// @brief Override implementation - virtual bool isAllOnesValue() const { return getSExtValue() == -1; } + /// @brief Determine if the value is all ones. + virtual bool isAllOnesValue() const { + if (getType() == Type::BoolTy) return getBoolValue() == true; + return getSExtValue() == -1; + } + /// This function will return true iff this constant represents the largest + /// value that may be represented by the constant's type. /// @returns true iff this is the largest value that may be represented /// by this type. - /// @see ConstantIntegeral - /// @brief Override implementation + /// @brief Determine if the value is maximal. virtual bool isMaxValue(bool isSigned) const { + if (getType() == Type::BoolTy) return getBoolValue() == true; if (isSigned) { int64_t V = getSExtValue(); if (V < 0) return false; // Be careful about wrap-around on 'long's @@ -215,11 +157,13 @@ public: return isAllOnesValue(); } + /// This function will return true iff this constant represents the smallest + /// value that may be represented by this constant's type. /// @returns true if this is the smallest value that may be represented by /// this type. - /// @see ConstantIntegral - /// @brief Override implementation + /// @brief Determine if the value is minimal. virtual bool isMinValue(bool isSigned) const { + if (getType() == Type::BoolTy) return getBoolValue() == false; if (isSigned) { int64_t V = getSExtValue(); if (V > 0) return false; // Be careful about wrap-around on 'long's @@ -229,6 +173,11 @@ public: return getZExtValue() == 0; } + /// @returns the value for an integer constant of the given type that has all + /// its bits set to true. + /// @brief Get the all ones value + static ConstantInt *getAllOnesValue(const Type *Ty); + /// @brief Methods to support type inquiry through isa, cast, and dyn_cast. static inline bool classof(const ConstantInt *) { return true; } static bool classof(const Value *V) { diff --git a/include/llvm/Support/ConstantRange.h b/include/llvm/Support/ConstantRange.h index 806dc80..f37c54c 100644 --- a/include/llvm/Support/ConstantRange.h +++ b/include/llvm/Support/ConstantRange.h @@ -36,12 +36,11 @@ namespace llvm { class Constant; -class ConstantIntegral; class ConstantInt; class Type; class ConstantRange { - ConstantIntegral *Lower, *Upper; + ConstantInt *Lower, *Upper; public: /// Initialize a full (the default) or empty set for the specified type. /// @@ -61,15 +60,15 @@ class ConstantRange { /// predicate should be either an ICmpInst::Predicate or FCmpInst::Predicate /// value. /// @brief Get a range for a relation with a constant integral. - ConstantRange(unsigned short predicate, ConstantIntegral *C); + ConstantRange(unsigned short predicate, ConstantInt *C); /// getLower - Return the lower value for this range... /// - ConstantIntegral *getLower() const { return Lower; } + ConstantInt *getLower() const { return Lower; } /// getUpper - Return the upper value for this range... /// - ConstantIntegral *getUpper() const { return Upper; } + ConstantInt *getUpper() const { return Upper; } /// getType - Return the LLVM data type of this range. /// @@ -98,7 +97,7 @@ class ConstantRange { /// getSingleElement - If this set contains a single element, return it, /// otherwise return null. /// - ConstantIntegral *getSingleElement() const; + ConstantInt *getSingleElement() const; /// isSingleElement - Return true if this set contains exactly one member. /// diff --git a/include/llvm/Support/PatternMatch.h b/include/llvm/Support/PatternMatch.h index 6db2142..f0acbcb 100644 --- a/include/llvm/Support/PatternMatch.h +++ b/include/llvm/Support/PatternMatch.h @@ -356,9 +356,9 @@ struct not_match { } private: bool matchIfNot(Value *LHS, Value *RHS) { - if (ConstantIntegral *CI = dyn_cast<ConstantIntegral>(RHS)) + if (ConstantInt *CI = dyn_cast<ConstantInt>(RHS)) return CI->isAllOnesValue() && L.match(LHS); - else if (ConstantIntegral *CI = dyn_cast<ConstantIntegral>(LHS)) + else if (ConstantInt *CI = dyn_cast<ConstantInt>(LHS)) return CI->isAllOnesValue() && L.match(RHS); return false; } diff --git a/include/llvm/Value.h b/include/llvm/Value.h index 0c3ddf6..e1d26bb 100644 --- a/include/llvm/Value.h +++ b/include/llvm/Value.h @@ -152,7 +152,6 @@ public: UndefValueVal, // This is an instance of UndefValue ConstantExprVal, // This is an instance of ConstantExpr ConstantAggregateZeroVal, // This is an instance of ConstantAggregateNull - ConstantBoolVal, // This is an instance of ConstantBool ConstantIntVal, // This is an instance of ConstantInt ConstantFPVal, // This is an instance of ConstantFP ConstantArrayVal, // This is an instance of ConstantArray diff --git a/lib/Analysis/BasicAliasAnalysis.cpp b/lib/Analysis/BasicAliasAnalysis.cpp index caabc86..179f069 100644 --- a/lib/Analysis/BasicAliasAnalysis.cpp +++ b/lib/Analysis/BasicAliasAnalysis.cpp @@ -434,7 +434,8 @@ BasicAliasAnalysis::alias(const Value *V1, unsigned V1Size, if (cast<PointerType>( BasePtr->getType())->getElementType()->isSized()) { for (unsigned i = 0; i != GEPOperands.size(); ++i) - if (!isa<ConstantInt>(GEPOperands[i])) + if (!isa<ConstantInt>(GEPOperands[i]) || + GEPOperands[i]->getType() == Type::BoolTy) GEPOperands[i] = Constant::getNullValue(GEPOperands[i]->getType()); int64_t Offset = @@ -584,8 +585,8 @@ BasicAliasAnalysis::CheckGEPInstructions( if (G1OC) { Constant *Compare = ConstantExpr::getICmp(ICmpInst::ICMP_SGT, G1OC, G2OC); - if (ConstantBool *CV = dyn_cast<ConstantBool>(Compare)) { - if (CV->getValue()) // If they are comparable and G2 > G1 + if (ConstantInt *CV = dyn_cast<ConstantInt>(Compare)) { + if (CV->getBoolValue()) // If they are comparable and G2 > G1 std::swap(GEP1Ops, GEP2Ops); // Make GEP1 < GEP2 break; } @@ -608,13 +609,15 @@ BasicAliasAnalysis::CheckGEPInstructions( // Is there anything to check? if (GEP1Ops.size() > MinOperands) { for (unsigned i = FirstConstantOper; i != MaxOperands; ++i) - if (isa<ConstantInt>(GEP1Ops[i]) && + if (isa<ConstantInt>(GEP1Ops[i]) && + GEP1Ops[i]->getType() != Type::BoolTy && !cast<Constant>(GEP1Ops[i])->isNullValue()) { // Yup, there's a constant in the tail. Set all variables to // constants in the GEP instruction to make it suiteable for // TargetData::getIndexedOffset. for (i = 0; i != MaxOperands; ++i) - if (!isa<ConstantInt>(GEP1Ops[i])) + if (!isa<ConstantInt>(GEP1Ops[i]) || + GEP1Ops[i]->getType() == Type::BoolTy) GEP1Ops[i] = Constant::getNullValue(GEP1Ops[i]->getType()); // Okay, now get the offset. This is the relative offset for the full // instruction. @@ -667,7 +670,7 @@ BasicAliasAnalysis::CheckGEPInstructions( const Value *Op2 = i < GEP2Ops.size() ? GEP2Ops[i] : 0; // If they are equal, use a zero index... if (Op1 == Op2 && BasePtr1Ty == BasePtr2Ty) { - if (!isa<ConstantInt>(Op1)) + if (!isa<ConstantInt>(Op1) || Op1->getType() == Type::BoolTy) GEP1Ops[i] = GEP2Ops[i] = Constant::getNullValue(Op1->getType()); // Otherwise, just keep the constants we have. } else { diff --git a/lib/Analysis/ConstantRange.cpp b/lib/Analysis/ConstantRange.cpp index a8ffa58..1d49e22 100644 --- a/lib/Analysis/ConstantRange.cpp +++ b/lib/Analysis/ConstantRange.cpp @@ -30,9 +30,9 @@ #include <ostream> using namespace llvm; -static ConstantIntegral *getMaxValue(const Type *Ty, bool isSigned = false) { +static ConstantInt *getMaxValue(const Type *Ty, bool isSigned = false) { if (Ty == Type::BoolTy) - return ConstantBool::getTrue(); + return ConstantInt::getTrue(); if (Ty->isInteger()) { if (isSigned) { // Calculate 011111111111111... @@ -47,9 +47,9 @@ static ConstantIntegral *getMaxValue(const Type *Ty, bool isSigned = false) { } // Static constructor to create the minimum constant for an integral type... -static ConstantIntegral *getMinValue(const Type *Ty, bool isSigned = false) { +static ConstantInt *getMinValue(const Type *Ty, bool isSigned = false) { if (Ty == Type::BoolTy) - return ConstantBool::getFalse(); + return ConstantInt::getFalse(); if (Ty->isInteger()) { if (isSigned) { // Calculate 1111111111000000000000 @@ -62,37 +62,37 @@ static ConstantIntegral *getMinValue(const Type *Ty, bool isSigned = false) { } return 0; } -static ConstantIntegral *Next(ConstantIntegral *CI) { - if (ConstantBool *CB = dyn_cast<ConstantBool>(CI)) - return ConstantBool::get(!CB->getValue()); +static ConstantInt *Next(ConstantInt *CI) { + if (CI->getType() == Type::BoolTy) + return ConstantInt::get(!CI->getBoolValue()); Constant *Result = ConstantExpr::getAdd(CI, ConstantInt::get(CI->getType(), 1)); - return cast<ConstantIntegral>(Result); + return cast<ConstantInt>(Result); } -static bool LT(ConstantIntegral *A, ConstantIntegral *B, bool isSigned) { +static bool LT(ConstantInt *A, ConstantInt *B, bool isSigned) { Constant *C = ConstantExpr::getICmp( (isSigned ? ICmpInst::ICMP_SLT : ICmpInst::ICMP_ULT), A, B); - assert(isa<ConstantBool>(C) && "Constant folding of integrals not impl??"); - return cast<ConstantBool>(C)->getValue(); + assert(isa<ConstantInt>(C) && "Constant folding of integrals not impl??"); + return cast<ConstantInt>(C)->getBoolValue(); } -static bool LTE(ConstantIntegral *A, ConstantIntegral *B, bool isSigned) { +static bool LTE(ConstantInt *A, ConstantInt *B, bool isSigned) { Constant *C = ConstantExpr::getICmp( (isSigned ? ICmpInst::ICMP_SLE : ICmpInst::ICMP_ULE), A, B); - assert(isa<ConstantBool>(C) && "Constant folding of integrals not impl??"); - return cast<ConstantBool>(C)->getValue(); + assert(isa<ConstantInt>(C) && "Constant folding of integrals not impl??"); + return cast<ConstantInt>(C)->getBoolValue(); } -static bool GT(ConstantIntegral *A, ConstantIntegral *B, bool isSigned) { +static bool GT(ConstantInt *A, ConstantInt *B, bool isSigned) { return LT(B, A, isSigned); } -static ConstantIntegral *Min(ConstantIntegral *A, ConstantIntegral *B, +static ConstantInt *Min(ConstantInt *A, ConstantInt *B, bool isSigned) { return LT(A, B, isSigned) ? A : B; } -static ConstantIntegral *Max(ConstantIntegral *A, ConstantIntegral *B, +static ConstantInt *Max(ConstantInt *A, ConstantInt *B, bool isSigned) { return GT(A, B, isSigned) ? A : B; } @@ -111,14 +111,14 @@ ConstantRange::ConstantRange(const Type *Ty, bool Full) { /// Initialize a range to hold the single specified value. /// ConstantRange::ConstantRange(Constant *V) - : Lower(cast<ConstantIntegral>(V)), Upper(Next(cast<ConstantIntegral>(V))) { } + : Lower(cast<ConstantInt>(V)), Upper(Next(cast<ConstantInt>(V))) { } /// Initialize a range of values explicitly... this will assert out if /// Lower==Upper and Lower != Min or Max for its type (or if the two constants /// have different types) /// ConstantRange::ConstantRange(Constant *L, Constant *U) - : Lower(cast<ConstantIntegral>(L)), Upper(cast<ConstantIntegral>(U)) { + : Lower(cast<ConstantInt>(L)), Upper(cast<ConstantInt>(U)) { assert(Lower->getType() == Upper->getType() && "Incompatible types for ConstantRange!"); @@ -130,7 +130,7 @@ ConstantRange::ConstantRange(Constant *L, Constant *U) /// Initialize a set of values that all satisfy the condition with C. /// -ConstantRange::ConstantRange(unsigned short ICmpOpcode, ConstantIntegral *C) { +ConstantRange::ConstantRange(unsigned short ICmpOpcode, ConstantInt *C) { switch (ICmpOpcode) { default: assert(0 && "Invalid ICmp opcode to ConstantRange ctor!"); case ICmpInst::ICMP_EQ: Lower = C; Upper = Next(C); return; @@ -195,7 +195,7 @@ bool ConstantRange::isWrappedSet(bool isSigned) const { /// getSingleElement - If this set contains a single element, return it, /// otherwise return null. -ConstantIntegral *ConstantRange::getSingleElement() const { +ConstantInt *ConstantRange::getSingleElement() const { if (Upper == Next(Lower)) // Is it a single element range? return Lower; return 0; @@ -292,8 +292,8 @@ ConstantRange ConstantRange::intersectWith(const ConstantRange &CR, if (!isWrappedSet(isSigned)) { if (!CR.isWrappedSet(isSigned)) { - ConstantIntegral *L = Max(Lower, CR.Lower, isSigned); - ConstantIntegral *U = Min(Upper, CR.Upper, isSigned); + ConstantInt *L = Max(Lower, CR.Lower, isSigned); + ConstantInt *U = Min(Upper, CR.Upper, isSigned); if (LT(L, U, isSigned)) // If range isn't empty... return ConstantRange(L, U); @@ -306,8 +306,8 @@ ConstantRange ConstantRange::intersectWith(const ConstantRange &CR, return intersect1Wrapped(*this, CR, isSigned); else { // Both ranges are wrapped... - ConstantIntegral *L = Max(Lower, CR.Lower, isSigned); - ConstantIntegral *U = Min(Upper, CR.Upper, isSigned); + ConstantInt *L = Max(Lower, CR.Lower, isSigned); + ConstantInt *U = Min(Upper, CR.Upper, isSigned); return ConstantRange(L, U); } } diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp index 55036a4..9fcbf8c 100644 --- a/lib/Analysis/ScalarEvolution.cpp +++ b/lib/Analysis/ScalarEvolution.cpp @@ -1721,8 +1721,8 @@ ComputeLoadConstantCompareIterationCount(LoadInst *LI, Constant *RHS, // Evaluate the condition for this iteration. Result = ConstantExpr::getICmp(predicate, Result, RHS); - if (!isa<ConstantBool>(Result)) break; // Couldn't decide for sure - if (cast<ConstantBool>(Result)->getValue() == false) { + if (!isa<ConstantInt>(Result)) break; // Couldn't decide for sure + if (cast<ConstantInt>(Result)->getBoolValue() == false) { #if 0 cerr << "\n***\n*** Computed loop count " << *ItCst << "\n*** From global " << *GV << "*** BB: " << *L->getHeader() @@ -1926,11 +1926,13 @@ ComputeIterationCountExhaustively(const Loop *L, Value *Cond, bool ExitWhen) { unsigned MaxIterations = MaxBruteForceIterations; // Limit analysis. for (Constant *PHIVal = StartCST; IterationNum != MaxIterations; ++IterationNum) { - ConstantBool *CondVal = - dyn_cast_or_null<ConstantBool>(EvaluateExpression(Cond, PHIVal)); - if (!CondVal) return UnknownValue; // Couldn't symbolically evaluate. + ConstantInt *CondVal = + dyn_cast_or_null<ConstantInt>(EvaluateExpression(Cond, PHIVal)); - if (CondVal->getValue() == ExitWhen) { + // Couldn't symbolically evaluate. + if (!CondVal || CondVal->getType() != Type::BoolTy) return UnknownValue; + + if (CondVal->getBoolValue() == ExitWhen) { ConstantEvolutionLoopExitValue[PN] = PHIVal; ++NumBruteForceTripCountsComputed; return SCEVConstant::get(ConstantInt::get(Type::Int32Ty, IterationNum)); @@ -2199,10 +2201,10 @@ SCEVHandle ScalarEvolutionsImpl::HowFarToZero(SCEV *V, const Loop *L) { << " sol#2: " << *R2 << "\n"; #endif // Pick the smallest positive root value. - if (ConstantBool *CB = - dyn_cast<ConstantBool>(ConstantExpr::getICmp(ICmpInst::ICMP_ULT, + if (ConstantInt *CB = + dyn_cast<ConstantInt>(ConstantExpr::getICmp(ICmpInst::ICMP_ULT, R1->getValue(), R2->getValue()))) { - if (CB->getValue() == false) + if (CB->getBoolValue() == false) std::swap(R1, R2); // R1 is the minimum root now. // We can only use this value if the chrec ends up with an exact zero @@ -2233,7 +2235,7 @@ SCEVHandle ScalarEvolutionsImpl::HowFarToNonZero(SCEV *V, const Loop *L) { Constant *Zero = Constant::getNullValue(C->getValue()->getType()); Constant *NonZero = ConstantExpr::getICmp(ICmpInst::ICMP_NE, C->getValue(), Zero); - if (NonZero == ConstantBool::getTrue()) + if (NonZero == ConstantInt::getTrue()) return getSCEV(Zero); return UnknownValue; // Otherwise it will loop infinitely. } @@ -2424,10 +2426,10 @@ SCEVHandle SCEVAddRecExpr::getNumIterationsInRange(ConstantRange Range, SCEVConstant *R2 = dyn_cast<SCEVConstant>(Roots.second); if (R1) { // Pick the smallest positive root value. - if (ConstantBool *CB = - dyn_cast<ConstantBool>(ConstantExpr::getICmp(ICmpInst::ICMP_ULT, + if (ConstantInt *CB = + dyn_cast<ConstantInt>(ConstantExpr::getICmp(ICmpInst::ICMP_ULT, R1->getValue(), R2->getValue()))) { - if (CB->getValue() == false) + if (CB->getBoolValue() == false) std::swap(R1, R2); // R1 is the minimum root now. // Make sure the root is not off by one. The returned iteration should diff --git a/lib/Analysis/ScalarEvolutionExpander.cpp b/lib/Analysis/ScalarEvolutionExpander.cpp index 5e395db..6bc113e 100644 --- a/lib/Analysis/ScalarEvolutionExpander.cpp +++ b/lib/Analysis/ScalarEvolutionExpander.cpp @@ -143,7 +143,7 @@ Value *SCEVExpander::visitAddRecExpr(SCEVAddRecExpr *S) { Value *F = expandInTy(S->getOperand(1), Ty); // IF the step is by one, just return the inserted IV. - if (ConstantIntegral *CI = dyn_cast<ConstantIntegral>(F)) + if (ConstantInt *CI = dyn_cast<ConstantInt>(F)) if (CI->getZExtValue() == 1) return I; diff --git a/lib/AsmParser/ParserInternals.h b/lib/AsmParser/ParserInternals.h index faeed1c..613e8ce 100644 --- a/lib/AsmParser/ParserInternals.h +++ b/lib/AsmParser/ParserInternals.h @@ -172,8 +172,8 @@ struct ValID { case ConstUIntVal : case ConstSIntVal : return std::string("%") + itostr(ConstPool64); case ConstantVal: - if (ConstantValue == ConstantBool::getTrue()) return "true"; - if (ConstantValue == ConstantBool::getFalse()) return "false"; + if (ConstantValue == ConstantInt::getTrue()) return "true"; + if (ConstantValue == ConstantInt::getFalse()) return "false"; return "<constant expression>"; default: assert(0 && "Unknown value!"); diff --git a/lib/AsmParser/llvmAsmParser.cpp.cvs b/lib/AsmParser/llvmAsmParser.cpp.cvs index ebbffeb..d1382fc 100644 --- a/lib/AsmParser/llvmAsmParser.cpp.cvs +++ b/lib/AsmParser/llvmAsmParser.cpp.cvs @@ -338,7 +338,7 @@ /* Copy the first part of user declarations. */ -#line 14 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 14 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" #include "ParserInternals.h" #include "llvm/CallingConv.h" @@ -1220,7 +1220,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 876 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 876 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; @@ -1430,16 +1430,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 37 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1405 +#define YYLAST 1584 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 150 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 78 /* YYNRULES -- Number of rules. */ -#define YYNRULES 289 +#define YYNRULES 291 /* YYNRULES -- Number of states. */ -#define YYNSTATES 569 +#define YYNSTATES 576 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -1512,21 +1512,22 @@ static const unsigned short int yyprhs[] = 220, 222, 224, 226, 228, 230, 232, 234, 236, 239, 241, 244, 250, 256, 262, 268, 272, 275, 281, 286, 289, 291, 293, 295, 299, 301, 305, 307, 308, 310, - 314, 319, 323, 327, 332, 337, 341, 344, 347, 350, - 353, 356, 359, 362, 365, 368, 371, 378, 384, 393, - 400, 407, 415, 423, 430, 437, 446, 455, 459, 461, - 463, 465, 467, 468, 470, 473, 474, 478, 479, 483, - 487, 489, 493, 497, 498, 504, 505, 512, 513, 520, - 523, 527, 529, 531, 533, 537, 541, 545, 549, 553, - 557, 559, 560, 562, 564, 566, 567, 573, 577, 579, - 583, 585, 586, 596, 598, 600, 604, 606, 608, 611, - 614, 615, 617, 619, 621, 623, 625, 627, 629, 631, - 633, 637, 639, 645, 647, 649, 651, 653, 656, 659, - 662, 666, 669, 670, 672, 675, 678, 682, 692, 702, - 711, 726, 728, 730, 737, 743, 746, 753, 761, 765, - 771, 772, 773, 777, 780, 782, 788, 794, 801, 808, - 811, 816, 821, 828, 833, 838, 845, 852, 855, 864, - 866, 868, 869, 873, 880, 884, 891, 894, 899, 906 + 314, 319, 323, 327, 332, 337, 341, 348, 354, 357, + 360, 363, 366, 369, 372, 375, 378, 381, 384, 391, + 397, 406, 413, 420, 428, 436, 443, 450, 459, 468, + 472, 474, 476, 478, 480, 481, 483, 486, 487, 491, + 492, 496, 500, 502, 506, 510, 511, 517, 518, 525, + 526, 533, 536, 540, 542, 544, 546, 550, 554, 558, + 562, 566, 570, 572, 573, 575, 577, 579, 580, 586, + 590, 592, 596, 598, 599, 609, 611, 613, 617, 619, + 621, 624, 627, 628, 630, 632, 634, 636, 638, 640, + 642, 644, 646, 650, 652, 658, 660, 662, 664, 666, + 669, 672, 675, 679, 682, 683, 685, 688, 691, 695, + 705, 715, 724, 739, 741, 743, 750, 756, 759, 766, + 774, 778, 784, 785, 786, 790, 793, 795, 801, 807, + 814, 821, 824, 829, 834, 841, 846, 851, 858, 865, + 868, 877, 879, 881, 882, 886, 893, 897, 904, 907, + 912, 919 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -1566,64 +1567,65 @@ static const short int yyrhs[] = 182, 137, 177, -1, 177, 142, 185, 144, -1, 177, 142, 144, -1, 177, 149, 20, -1, 177, 145, 185, 146, -1, 177, 147, 185, 148, -1, 177, 147, 148, - -1, 177, 35, -1, 177, 36, -1, 177, 212, -1, - 177, 184, -1, 177, 22, -1, 158, 3, -1, 158, - 4, -1, 9, 23, -1, 9, 24, -1, 159, 7, - -1, 154, 140, 183, 33, 177, 141, -1, 113, 140, - 183, 223, 141, -1, 127, 140, 183, 137, 183, 137, - 183, 141, -1, 152, 140, 183, 137, 183, 141, -1, - 153, 140, 183, 137, 183, 141, -1, 86, 156, 140, - 183, 137, 183, 141, -1, 87, 157, 140, 183, 137, - 183, 141, -1, 155, 140, 183, 137, 183, 141, -1, - 132, 140, 183, 137, 183, 141, -1, 133, 140, 183, - 137, 183, 137, 183, 141, -1, 134, 140, 183, 137, - 183, 137, 183, 141, -1, 185, 137, 183, -1, 183, - -1, 29, -1, 30, -1, 188, -1, -1, 189, -1, - 188, 189, -1, -1, 28, 190, 208, -1, -1, 27, - 191, 209, -1, 58, 57, 195, -1, 21, -1, 160, - 17, 177, -1, 160, 17, 8, -1, -1, 160, 186, - 183, 192, 174, -1, -1, 160, 161, 186, 183, 193, - 174, -1, -1, 160, 162, 186, 177, 194, 174, -1, - 47, 197, -1, 54, 136, 198, -1, 20, -1, 52, - -1, 51, -1, 49, 136, 196, -1, 50, 136, 4, - -1, 48, 136, 20, -1, 67, 136, 20, -1, 142, - 199, 144, -1, 199, 137, 20, -1, 20, -1, -1, - 18, -1, 20, -1, 200, -1, -1, 202, 137, 177, - 167, 201, -1, 177, 167, 201, -1, 202, -1, 202, - 137, 34, -1, 34, -1, -1, 165, 179, 200, 140, - 203, 141, 169, 173, 170, -1, 25, -1, 147, -1, - 164, 204, 205, -1, 26, -1, 148, -1, 215, 207, - -1, 163, 204, -1, -1, 59, -1, 3, -1, 4, - -1, 7, -1, 23, -1, 24, -1, 35, -1, 36, - -1, 22, -1, 145, 185, 146, -1, 184, -1, 57, - 210, 20, 137, 20, -1, 151, -1, 200, -1, 212, - -1, 211, -1, 177, 213, -1, 215, 216, -1, 206, - 216, -1, 217, 160, 218, -1, 217, 220, -1, -1, - 19, -1, 68, 214, -1, 68, 8, -1, 69, 16, - 213, -1, 69, 9, 213, 137, 16, 213, 137, 16, - 213, -1, 70, 158, 213, 137, 16, 213, 142, 219, - 144, -1, 70, 158, 213, 137, 16, 213, 142, 144, - -1, 71, 165, 179, 213, 140, 222, 141, 169, 33, - 16, 213, 72, 16, 213, -1, 72, -1, 73, -1, - 219, 158, 211, 137, 16, 213, -1, 158, 211, 137, - 16, 213, -1, 160, 225, -1, 177, 142, 213, 137, - 213, 144, -1, 221, 137, 142, 213, 137, 213, 144, - -1, 177, 213, 167, -1, 222, 137, 177, 213, 167, - -1, -1, -1, 223, 137, 214, -1, 56, 55, -1, - 55, -1, 152, 177, 213, 137, 213, -1, 153, 177, - 213, 137, 213, -1, 86, 156, 177, 213, 137, 213, - -1, 87, 157, 177, 213, 137, 213, -1, 45, 214, - -1, 155, 214, 137, 214, -1, 154, 214, 33, 177, - -1, 127, 214, 137, 214, 137, 214, -1, 131, 214, - 137, 177, -1, 132, 214, 137, 214, -1, 133, 214, - 137, 214, 137, 214, -1, 134, 214, 137, 214, 137, - 214, -1, 126, 221, -1, 224, 165, 179, 213, 140, - 222, 141, 169, -1, 227, -1, 32, -1, -1, 108, - 177, 171, -1, 108, 177, 137, 12, 213, 171, -1, - 109, 177, 171, -1, 109, 177, 137, 12, 213, 171, - -1, 110, 214, -1, 226, 111, 177, 213, -1, 226, - 112, 214, 137, 177, 213, -1, 113, 177, 213, 223, - -1 + -1, 177, 145, 147, 185, 148, 146, -1, 177, 145, + 147, 148, 146, -1, 177, 35, -1, 177, 36, -1, + 177, 212, -1, 177, 184, -1, 177, 22, -1, 158, + 3, -1, 158, 4, -1, 9, 23, -1, 9, 24, + -1, 159, 7, -1, 154, 140, 183, 33, 177, 141, + -1, 113, 140, 183, 223, 141, -1, 127, 140, 183, + 137, 183, 137, 183, 141, -1, 152, 140, 183, 137, + 183, 141, -1, 153, 140, 183, 137, 183, 141, -1, + 86, 156, 140, 183, 137, 183, 141, -1, 87, 157, + 140, 183, 137, 183, 141, -1, 155, 140, 183, 137, + 183, 141, -1, 132, 140, 183, 137, 183, 141, -1, + 133, 140, 183, 137, 183, 137, 183, 141, -1, 134, + 140, 183, 137, 183, 137, 183, 141, -1, 185, 137, + 183, -1, 183, -1, 29, -1, 30, -1, 188, -1, + -1, 189, -1, 188, 189, -1, -1, 28, 190, 208, + -1, -1, 27, 191, 209, -1, 58, 57, 195, -1, + 21, -1, 160, 17, 177, -1, 160, 17, 8, -1, + -1, 160, 186, 183, 192, 174, -1, -1, 160, 161, + 186, 183, 193, 174, -1, -1, 160, 162, 186, 177, + 194, 174, -1, 47, 197, -1, 54, 136, 198, -1, + 20, -1, 52, -1, 51, -1, 49, 136, 196, -1, + 50, 136, 4, -1, 48, 136, 20, -1, 67, 136, + 20, -1, 142, 199, 144, -1, 199, 137, 20, -1, + 20, -1, -1, 18, -1, 20, -1, 200, -1, -1, + 202, 137, 177, 167, 201, -1, 177, 167, 201, -1, + 202, -1, 202, 137, 34, -1, 34, -1, -1, 165, + 179, 200, 140, 203, 141, 169, 173, 170, -1, 25, + -1, 147, -1, 164, 204, 205, -1, 26, -1, 148, + -1, 215, 207, -1, 163, 204, -1, -1, 59, -1, + 3, -1, 4, -1, 7, -1, 23, -1, 24, -1, + 35, -1, 36, -1, 22, -1, 145, 185, 146, -1, + 184, -1, 57, 210, 20, 137, 20, -1, 151, -1, + 200, -1, 212, -1, 211, -1, 177, 213, -1, 215, + 216, -1, 206, 216, -1, 217, 160, 218, -1, 217, + 220, -1, -1, 19, -1, 68, 214, -1, 68, 8, + -1, 69, 16, 213, -1, 69, 9, 213, 137, 16, + 213, 137, 16, 213, -1, 70, 158, 213, 137, 16, + 213, 142, 219, 144, -1, 70, 158, 213, 137, 16, + 213, 142, 144, -1, 71, 165, 179, 213, 140, 222, + 141, 169, 33, 16, 213, 72, 16, 213, -1, 72, + -1, 73, -1, 219, 158, 211, 137, 16, 213, -1, + 158, 211, 137, 16, 213, -1, 160, 225, -1, 177, + 142, 213, 137, 213, 144, -1, 221, 137, 142, 213, + 137, 213, 144, -1, 177, 213, 167, -1, 222, 137, + 177, 213, 167, -1, -1, -1, 223, 137, 214, -1, + 56, 55, -1, 55, -1, 152, 177, 213, 137, 213, + -1, 153, 177, 213, 137, 213, -1, 86, 156, 177, + 213, 137, 213, -1, 87, 157, 177, 213, 137, 213, + -1, 45, 214, -1, 155, 214, 137, 214, -1, 154, + 214, 33, 177, -1, 127, 214, 137, 214, 137, 214, + -1, 131, 214, 137, 177, -1, 132, 214, 137, 214, + -1, 133, 214, 137, 214, 137, 214, -1, 134, 214, + 137, 214, 137, 214, -1, 126, 221, -1, 224, 165, + 179, 213, 140, 222, 141, 169, -1, 227, -1, 32, + -1, -1, 108, 177, 171, -1, 108, 177, 137, 12, + 213, 171, -1, 109, 177, 171, -1, 109, 177, 137, + 12, 213, 171, -1, 110, 214, -1, 226, 111, 177, + 213, -1, 226, 112, 214, 137, 177, 213, -1, 113, + 177, 213, 223, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -1643,21 +1645,22 @@ static const unsigned short int yyrline[] = 1184, 1184, 1184, 1184, 1184, 1184, 1187, 1191, 1195, 1202, 1207, 1215, 1233, 1251, 1256, 1268, 1278, 1282, 1292, 1299, 1306, 1313, 1318, 1323, 1330, 1331, 1338, 1345, 1353, 1358, - 1369, 1397, 1413, 1442, 1470, 1491, 1506, 1518, 1525, 1588, - 1598, 1608, 1614, 1620, 1624, 1628, 1636, 1650, 1671, 1679, - 1685, 1696, 1701, 1706, 1715, 1721, 1727, 1736, 1740, 1748, - 1748, 1759, 1764, 1772, 1773, 1777, 1777, 1781, 1781, 1784, - 1787, 1799, 1823, 1834, 1834, 1843, 1843, 1851, 1851, 1861, - 1864, 1870, 1883, 1884, 1886, 1890, 1899, 1903, 1908, 1910, - 1915, 1920, 1929, 1929, 1930, 1930, 1932, 1942, 1953, 1957, - 1966, 1975, 1980, 2085, 2085, 2087, 2095, 2095, 2097, 2102, - 2113, 2117, 2122, 2126, 2130, 2134, 2138, 2142, 2146, 2150, - 2154, 2179, 2183, 2197, 2201, 2207, 2207, 2213, 2222, 2226, - 2235, 2246, 2255, 2267, 2280, 2284, 2288, 2293, 2302, 2321, - 2330, 2397, 2401, 2408, 2419, 2432, 2441, 2452, 2462, 2470, - 2478, 2481, 2482, 2489, 2493, 2498, 2519, 2536, 2549, 2562, - 2575, 2584, 2597, 2605, 2612, 2618, 2624, 2630, 2645, 2708, - 2713, 2717, 2724, 2731, 2739, 2746, 2754, 2762, 2776, 2793 + 1369, 1397, 1413, 1442, 1470, 1495, 1514, 1539, 1558, 1570, + 1577, 1640, 1650, 1660, 1666, 1672, 1676, 1680, 1688, 1702, + 1723, 1731, 1737, 1748, 1753, 1758, 1767, 1773, 1779, 1788, + 1792, 1800, 1800, 1811, 1816, 1824, 1825, 1829, 1829, 1833, + 1833, 1836, 1839, 1851, 1875, 1886, 1886, 1895, 1895, 1903, + 1903, 1913, 1916, 1922, 1935, 1936, 1938, 1942, 1951, 1955, + 1960, 1962, 1967, 1972, 1981, 1981, 1982, 1982, 1984, 1994, + 2005, 2009, 2018, 2027, 2032, 2137, 2137, 2139, 2147, 2147, + 2149, 2154, 2165, 2169, 2174, 2178, 2182, 2186, 2190, 2194, + 2198, 2202, 2206, 2231, 2235, 2249, 2253, 2259, 2259, 2265, + 2274, 2278, 2287, 2298, 2307, 2319, 2332, 2336, 2340, 2345, + 2354, 2373, 2382, 2449, 2453, 2460, 2471, 2484, 2493, 2504, + 2514, 2522, 2530, 2533, 2534, 2541, 2545, 2550, 2571, 2588, + 2601, 2614, 2627, 2636, 2649, 2657, 2664, 2670, 2676, 2682, + 2697, 2760, 2765, 2769, 2776, 2783, 2791, 2798, 2806, 2814, + 2828, 2845 }; #endif @@ -1748,20 +1751,21 @@ static const unsigned char yyr1[] = 177, 177, 177, 177, 177, 177, 177, 177, 177, 178, 179, 179, 180, 180, 181, 181, 181, 181, 182, 182, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 185, 185, 186, - 186, 187, 187, 188, 188, 190, 189, 191, 189, 189, - 189, 189, 189, 192, 189, 193, 189, 194, 189, 189, - 189, 195, 196, 196, 197, 197, 197, 197, 198, 199, - 199, 199, 200, 200, 201, 201, 202, 202, 203, 203, - 203, 203, 204, 205, 205, 206, 207, 207, 208, 209, - 210, 210, 211, 211, 211, 211, 211, 211, 211, 211, - 211, 211, 211, 212, 212, 213, 213, 214, 215, 215, - 216, 217, 217, 217, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 219, 219, 220, 221, 221, 222, 222, - 222, 223, 223, 224, 224, 225, 225, 225, 225, 225, + 183, 183, 183, 183, 183, 183, 183, 183, 184, 184, + 184, 184, 184, 184, 184, 184, 184, 184, 184, 185, + 185, 186, 186, 187, 187, 188, 188, 190, 189, 191, + 189, 189, 189, 189, 189, 192, 189, 193, 189, 194, + 189, 189, 189, 195, 196, 196, 197, 197, 197, 197, + 198, 199, 199, 199, 200, 200, 201, 201, 202, 202, + 203, 203, 203, 203, 204, 205, 205, 206, 207, 207, + 208, 209, 210, 210, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 212, 212, 213, 213, 214, + 215, 215, 216, 217, 217, 217, 218, 218, 218, 218, + 218, 218, 218, 218, 218, 219, 219, 220, 221, 221, + 222, 222, 222, 223, 223, 224, 224, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, - 226, 226, 227, 227, 227, 227, 227, 227, 227, 227 + 225, 225, 226, 226, 227, 227, 227, 227, 227, 227, + 227, 227 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1781,21 +1785,22 @@ static const unsigned char yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 5, 5, 5, 5, 3, 2, 5, 4, 2, 1, 1, 1, 3, 1, 3, 1, 0, 1, 3, - 4, 3, 3, 4, 4, 3, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 6, 5, 8, 6, - 6, 7, 7, 6, 6, 8, 8, 3, 1, 1, - 1, 1, 0, 1, 2, 0, 3, 0, 3, 3, - 1, 3, 3, 0, 5, 0, 6, 0, 6, 2, - 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, - 1, 0, 1, 1, 1, 0, 5, 3, 1, 3, - 1, 0, 9, 1, 1, 3, 1, 1, 2, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 1, 5, 1, 1, 1, 1, 2, 2, 2, - 3, 2, 0, 1, 2, 2, 3, 9, 9, 8, - 14, 1, 1, 6, 5, 2, 6, 7, 3, 5, - 0, 0, 3, 2, 1, 5, 5, 6, 6, 2, - 4, 4, 6, 4, 4, 6, 6, 2, 8, 1, - 1, 0, 3, 6, 3, 6, 2, 4, 6, 4 + 4, 3, 3, 4, 4, 3, 6, 5, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 6, 5, + 8, 6, 6, 7, 7, 6, 6, 8, 8, 3, + 1, 1, 1, 1, 0, 1, 2, 0, 3, 0, + 3, 3, 1, 3, 3, 0, 5, 0, 6, 0, + 6, 2, 3, 1, 1, 1, 3, 3, 3, 3, + 3, 3, 1, 0, 1, 1, 1, 0, 5, 3, + 1, 3, 1, 0, 9, 1, 1, 3, 1, 1, + 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 1, 5, 1, 1, 1, 1, 2, + 2, 2, 3, 2, 0, 1, 2, 2, 3, 9, + 9, 8, 14, 1, 1, 6, 5, 2, 6, 7, + 3, 5, 0, 0, 3, 2, 1, 5, 5, 6, + 6, 2, 4, 4, 6, 4, 4, 6, 6, 2, + 8, 1, 1, 0, 3, 6, 3, 6, 2, 4, + 6, 4 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -1803,448 +1808,486 @@ static const unsigned char yyr2[] = means the default is an error. */ static const unsigned short int yydefact[] = { - 64, 202, 203, 180, 177, 175, 0, 0, 0, 0, - 0, 64, 173, 0, 73, 76, 0, 0, 0, 0, - 189, 0, 0, 0, 169, 170, 65, 67, 66, 68, - 70, 69, 71, 72, 0, 0, 0, 1, 174, 63, - 74, 75, 81, 178, 77, 78, 79, 80, 81, 242, - 176, 242, 0, 0, 0, 0, 201, 190, 191, 179, - 2, 3, 182, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 0, 0, 0, 0, 233, 117, 181, 234, + 64, 204, 205, 182, 179, 177, 0, 0, 0, 0, + 0, 64, 175, 0, 73, 76, 0, 0, 0, 0, + 191, 0, 0, 0, 171, 172, 65, 67, 66, 68, + 70, 69, 71, 72, 0, 0, 0, 1, 176, 63, + 74, 75, 81, 180, 77, 78, 79, 80, 81, 244, + 178, 244, 0, 0, 0, 0, 203, 192, 193, 181, + 2, 3, 184, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 0, 0, 0, 0, 235, 117, 183, 236, 119, 0, 0, 0, 108, 109, 110, 111, 112, 113, - 114, 0, 0, 0, 183, 0, 82, 83, 84, 85, - 86, 87, 0, 219, 0, 243, 239, 64, 216, 217, - 218, 238, 196, 193, 192, 194, 195, 197, 200, 0, + 114, 0, 0, 0, 185, 0, 82, 83, 84, 85, + 86, 87, 0, 221, 0, 245, 241, 64, 218, 219, + 220, 240, 198, 195, 194, 196, 197, 199, 202, 0, 137, 120, 0, 0, 0, 126, 138, 0, 118, 137, - 185, 187, 153, 154, 151, 152, 155, 150, 146, 147, + 187, 189, 155, 156, 153, 154, 157, 152, 148, 149, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 28, 29, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 149, 148, 104, 88, 131, 130, 0, 213, - 214, 215, 281, 241, 0, 198, 136, 91, 132, 134, + 0, 0, 151, 150, 104, 88, 131, 130, 0, 215, + 216, 217, 283, 243, 0, 200, 136, 91, 132, 134, 0, 0, 0, 0, 0, 0, 125, 0, 104, 104, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 55, 56, 51, 52, 53, 54, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 0, 0, 0, - 0, 0, 0, 141, 168, 0, 0, 145, 0, 142, - 0, 0, 0, 0, 0, 184, 0, 280, 0, 264, - 0, 0, 0, 0, 81, 251, 252, 0, 0, 0, + 0, 0, 0, 141, 170, 0, 0, 0, 145, 0, + 142, 0, 0, 0, 0, 0, 186, 0, 282, 0, + 266, 0, 0, 0, 0, 81, 253, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 81, 255, 0, 279, 199, 129, - 0, 95, 0, 0, 128, 0, 139, 95, 186, 188, - 0, 0, 261, 0, 0, 0, 0, 0, 140, 143, - 144, 0, 0, 0, 0, 0, 0, 106, 104, 211, - 0, 269, 263, 245, 244, 0, 0, 60, 59, 58, - 57, 0, 0, 0, 0, 99, 99, 286, 0, 0, - 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 89, 90, 92, 135, 133, 122, 123, - 124, 127, 121, 0, 0, 0, 0, 0, 0, 0, - 167, 0, 0, 0, 0, 101, 107, 105, 210, 91, - 208, 0, 222, 223, 224, 229, 225, 226, 227, 228, - 220, 0, 231, 236, 235, 237, 0, 246, 0, 0, - 0, 0, 0, 282, 0, 284, 261, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 93, 94, 96, 0, 0, 0, 157, 0, 0, - 0, 0, 0, 0, 0, 0, 205, 0, 95, 221, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 289, 0, 0, 0, 273, 274, 0, 0, 0, 0, - 271, 270, 0, 287, 0, 0, 0, 262, 0, 164, - 0, 0, 159, 160, 156, 163, 204, 207, 209, 91, - 102, 0, 230, 0, 0, 260, 0, 0, 99, 100, - 99, 0, 0, 0, 0, 0, 265, 266, 260, 0, - 161, 162, 0, 0, 0, 205, 103, 97, 0, 0, - 0, 0, 0, 267, 268, 0, 283, 285, 0, 0, - 272, 275, 276, 0, 288, 158, 165, 166, 206, 0, - 212, 232, 0, 0, 91, 0, 95, 256, 0, 95, - 98, 0, 249, 0, 0, 258, 0, 0, 257, 278, - 247, 0, 248, 0, 91, 0, 0, 0, 259, 0, - 0, 0, 0, 254, 0, 0, 253, 0, 250 + 0, 0, 0, 0, 242, 81, 257, 0, 281, 201, + 129, 0, 95, 0, 0, 128, 0, 139, 95, 188, + 190, 0, 0, 263, 0, 0, 0, 0, 0, 140, + 126, 138, 0, 143, 144, 0, 0, 0, 0, 0, + 0, 106, 104, 213, 0, 271, 265, 247, 246, 0, + 0, 60, 59, 58, 57, 0, 0, 0, 0, 99, + 99, 288, 0, 0, 279, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 90, 92, + 135, 133, 122, 123, 124, 127, 121, 0, 0, 0, + 0, 0, 0, 0, 169, 147, 0, 0, 0, 0, + 0, 101, 107, 105, 212, 91, 210, 0, 224, 225, + 226, 231, 227, 228, 229, 230, 222, 0, 233, 238, + 237, 239, 0, 248, 0, 0, 0, 0, 0, 284, + 0, 286, 263, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 93, 94, 96, + 0, 0, 0, 159, 0, 0, 0, 0, 146, 0, + 0, 0, 0, 207, 0, 95, 223, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 291, 0, 0, + 0, 275, 276, 0, 0, 0, 0, 273, 272, 0, + 289, 0, 0, 0, 264, 0, 166, 0, 0, 161, + 162, 158, 165, 206, 209, 211, 91, 102, 0, 232, + 0, 0, 262, 0, 0, 99, 100, 99, 0, 0, + 0, 0, 0, 267, 268, 262, 0, 163, 164, 0, + 0, 0, 207, 103, 97, 0, 0, 0, 0, 0, + 269, 270, 0, 285, 287, 0, 0, 274, 277, 278, + 0, 290, 160, 167, 168, 208, 0, 214, 234, 0, + 0, 91, 0, 95, 258, 0, 95, 98, 0, 251, + 0, 0, 260, 0, 0, 259, 280, 249, 0, 250, + 0, 91, 0, 0, 0, 261, 0, 0, 0, 0, + 256, 0, 0, 255, 0, 252 }; /* YYDEFGOTO[NTERM-NUM]. */ static const short int yydefgoto[] = { -1, 76, 178, 179, 180, 181, 220, 237, 91, 92, - 9, 34, 35, 42, 48, 102, 355, 289, 423, 358, - 530, 403, 317, 507, 255, 318, 77, 93, 198, 188, - 199, 200, 127, 244, 392, 245, 36, 10, 11, 12, + 9, 34, 35, 42, 48, 102, 359, 290, 429, 362, + 537, 409, 321, 514, 256, 322, 77, 93, 198, 188, + 199, 200, 127, 244, 398, 245, 36, 10, 11, 12, 15, 14, 184, 208, 209, 59, 115, 20, 57, 119, - 79, 477, 380, 381, 103, 191, 49, 110, 50, 43, - 440, 393, 80, 395, 321, 51, 106, 107, 283, 544, - 193, 340, 512, 365, 284, 285, 286, 287 + 79, 484, 386, 387, 103, 191, 49, 110, 50, 43, + 447, 399, 80, 401, 325, 51, 106, 107, 284, 551, + 193, 344, 519, 369, 285, 286, 287, 288 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -468 +#define YYPACT_NINF -457 static const short int yypact[] = { - 384, -468, -468, -468, -468, -468, 23, -99, -3, 74, - 78, 507, -468, -66, 129, 148, -26, 0, 26, 31, - -468, 6, 156, 1114, -468, -468, -468, -468, -468, -468, - -468, -468, -468, -468, 66, 66, 1130, -468, -468, -468, - -468, -468, 138, -468, -468, -468, -468, -468, 138, 172, - -468, 20, 163, 104, 208, 196, 202, -468, -468, -468, - -468, -468, 90, -468, -468, -468, -468, -468, -468, -468, - -468, -468, 258, 262, 4, 18, -468, -468, -89, -468, - -468, 1130, 1167, 90, 216, 240, 257, 261, 266, 264, - 277, 270, 278, 495, -468, 283, -468, -468, -468, -468, - -468, -468, 1183, -468, -14, -468, -468, 119, -468, -468, - -468, -468, -468, -468, -468, -468, -468, -468, -468, -19, - 749, -468, 145, 147, 357, -468, -89, -87, -468, 749, - -468, -89, -468, -468, -468, -468, -468, -468, -468, -468, - -468, -468, -468, -468, -468, -468, -468, -468, -468, -468, - -468, -468, 557, 804, 157, -468, -468, -468, -468, -468, - -468, -468, -468, -468, -468, -468, -468, 158, -468, -468, - -468, 167, 168, 173, 853, 1130, 582, 282, 174, 175, - 176, 177, -468, -468, 181, -468, 90, -89, 119, -468, - -468, -468, 1271, -468, 292, -468, -468, -89, -468, 183, - 180, 1167, 1167, 185, -63, 1167, -468, 182, 181, 181, - -468, -468, -468, -468, -468, -468, -468, -468, -468, -468, - 186, -468, -468, -468, -468, -468, -468, -468, -468, -468, - -468, -468, -468, -468, -468, -468, -468, 192, 1130, 1130, - 1130, 1130, 1130, -468, -468, -13, -44, -468, -43, -468, - 1130, 1130, 1130, 1130, 12, -468, 193, -468, 1167, -468, - 267, 1230, 126, 214, 138, -468, -468, 557, 804, 1167, - 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, - 1167, 1167, 1167, -468, 138, -468, 164, -468, -468, 162, - 1024, -468, 5, -8, -468, 188, -89, -468, -468, -468, - 1130, 1130, -468, 198, 199, 201, 203, 1130, -468, -468, - -468, 204, 205, 306, 206, 324, 343, -468, 181, 1070, - 657, -468, -468, 90, -468, 800, 800, -468, -468, -468, - -468, 800, 1183, 1167, 1167, 56, 91, -468, 657, 35, - 211, 212, 215, 218, 219, 220, 657, 657, 318, 221, - 1183, 1167, 1167, -468, -468, -468, -468, -468, -71, -468, - -468, -468, -71, 222, 224, 51, 1130, 1130, 1130, 1130, - -468, 1130, 1130, 1167, 1130, -468, -468, -468, -468, -89, - 227, 233, -468, -468, -468, -468, -468, -468, -468, -468, - 317, 1130, -468, -468, -468, -468, 241, -468, 242, 800, - 657, 657, 10, -468, 13, -468, -468, 800, 238, 1167, - 1167, 1167, 1167, 1167, 244, 246, 1167, 1167, 800, 657, - 248, -468, -468, -468, 1130, 1130, 1167, -468, 254, 251, - 259, 260, 268, 269, 96, 272, 38, 1087, -468, -468, - 362, -39, 379, 391, 275, 271, 279, 800, 419, 800, - 289, 291, 800, 293, -89, -468, 295, 296, 800, 800, - -89, -468, 294, -468, 1167, 288, 298, -468, 1130, -468, - 1130, 1130, -468, -468, -468, -468, -468, -468, -468, -89, - 11, 299, -468, 800, 800, 1167, 800, 800, 303, -468, - 303, 800, 307, 1167, 1167, 1167, -468, -468, 1167, 657, - -468, -468, 302, 304, 308, 38, -468, 382, 427, 313, - 310, 657, 70, -468, -468, 400, -468, -468, 311, 800, - -468, -468, -468, 73, -468, -468, -468, -468, -468, 450, - -468, -468, 440, 3, -468, 1167, -468, -468, 315, -468, - -468, 800, -468, 932, 8, 162, 657, -16, -468, -71, - -468, 323, -468, 932, -468, 445, 447, 327, 162, 800, - 800, 449, 394, -468, 800, 451, -468, 800, -468 + 49, -457, -457, -457, -457, -457, 8, -107, -9, 255, + 61, 188, -457, -7, 113, 165, 33, 38, 51, 69, + -457, 17, 95, 1056, -457, -457, -457, -457, -457, -457, + -457, -457, -457, -457, 91, 91, 1290, -457, -457, -457, + -457, -457, 130, -457, -457, -457, -457, -457, 130, 116, + -457, 25, 192, 98, 265, 198, 201, -457, -457, -457, + -457, -457, 131, -457, -457, -457, -457, -457, -457, -457, + -457, -457, 270, 273, 5, 128, -457, -457, 73, -457, + -457, 1290, 1310, 131, 217, 234, 259, 262, 276, 281, + 292, 278, 297, 623, -457, 279, -457, -457, -457, -457, + -457, -457, 1327, -457, -2, -457, -457, 214, -457, -457, + -457, -457, -457, -457, -457, -457, -457, -457, -457, -120, + 809, -457, 162, 163, 710, -457, 73, -84, -457, 809, + -457, 73, -457, -457, -457, -457, -457, -457, -457, -457, + -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, + -457, -457, 269, 1007, 167, -457, -457, -457, -457, -457, + -457, -457, -457, -457, -457, -457, -457, 168, -457, -457, + -457, 169, 171, 172, 75, 1347, 768, 296, 177, 178, + 179, 180, -457, -457, 184, -457, 131, 73, 214, -457, + -457, -457, 1450, -457, 302, -457, -457, 73, -457, 189, + 183, 1310, 1310, 181, -83, 1310, -457, 194, 184, 184, + -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, + 185, -457, -457, -457, -457, -457, -457, -457, -457, -457, + -457, -457, -457, -457, -457, -457, -457, 190, 1290, 1290, + 1290, 1290, 1290, -457, -457, -27, 784, -32, -457, -77, + -457, 1290, 1290, 1290, 1290, -21, -457, 196, -457, 1310, + -457, 282, 1370, 114, 216, 130, -457, -457, 269, 1007, + 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, + 1310, 1310, 1310, 1310, -457, 130, -457, 175, -457, -457, + 187, 952, -457, 13, -22, -457, 193, 73, -457, -457, + -457, 1290, 1290, -457, 203, 205, 206, 207, 1290, -457, + 199, 623, -75, -457, -457, 209, 210, 305, 211, 331, + 348, -457, 184, 1227, 860, -457, -457, 131, -457, 1003, + 1003, -457, -457, -457, -457, 1003, 1327, 1310, 1310, 60, + 93, -457, 860, -40, 218, 235, 236, 237, 238, 239, + 860, 860, 320, 240, 1327, 1310, 1310, -457, -457, -457, + -457, -457, -69, -457, -457, -457, -69, 241, 242, -59, + 1290, 1290, 1290, 1290, -457, -457, 208, 1290, 1290, 1310, + 1290, -457, -457, -457, -457, 73, 247, 244, -457, -457, + -457, -457, -457, -457, -457, -457, 327, 1290, -457, -457, + -457, -457, 250, -457, 251, 1003, 860, 860, 2, -457, + 19, -457, -457, 1003, 248, 1310, 1310, 1310, 1310, 1310, + 252, 254, 1310, 1310, 1003, 860, 260, -457, -457, -457, + 1290, 1290, 1310, -457, 261, 266, 264, 271, -457, 272, + 274, 45, 275, 10, 1273, -457, -457, 382, -24, 387, + 394, 277, 283, 285, 1003, 407, 1003, 288, 289, 1003, + 290, 73, -457, 291, 295, 1003, 1003, 73, -457, 293, + -457, 1310, 294, 298, -457, 1290, -457, 1290, 1290, -457, + -457, -457, -457, -457, -457, -457, 73, -4, 299, -457, + 1003, 1003, 1310, 1003, 1003, 301, -457, 301, 1003, 303, + 1310, 1310, 1310, -457, -457, 1310, 860, -457, -457, 300, + 304, 306, 10, -457, 361, 398, 309, 287, 860, 39, + -457, -457, 366, -457, -457, 308, 1003, -457, -457, -457, + 40, -457, -457, -457, -457, -457, 430, -457, -457, 426, + 23, -457, 1310, -457, -457, 310, -457, -457, 1003, -457, + 1135, 27, 187, 860, 12, -457, -69, -457, 312, -457, + 1135, -457, 427, 441, 322, 187, 1003, 1003, 444, 389, + -457, 1003, 446, -457, 1003, -457 }; /* YYPGOTO[NTERM-NUM]. */ static const short int yypgoto[] = { - -468, -468, 276, 281, 284, 287, 207, 213, -261, -468, - 373, -468, -468, -468, -468, -229, -352, -370, -468, -294, - -468, -329, -11, -468, -168, -468, -468, -23, 194, -275, - -468, 358, 364, 53, 396, -171, 245, -468, -468, 480, - -468, -468, -468, -468, -468, -468, -468, -468, -468, -468, - 1, -12, -468, -468, 444, -468, -468, -468, -468, -468, - -468, -467, -1, -278, -194, -468, 443, -468, -468, -468, - -468, -468, 16, 89, -468, -468, -468, -468 + -457, -457, 284, 311, 316, 318, 200, 197, -262, -457, + 360, -457, -457, -457, -457, -222, -355, -377, -457, -282, + -457, -327, -17, -457, -167, -457, -457, -23, 182, -286, + -457, 345, 351, 129, -87, -172, 256, -457, -457, 469, + -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, + 1, -31, -457, -457, 435, -457, -457, -457, -457, -457, + -457, -456, -1, 121, -257, -457, 433, -457, -457, -457, + -457, -457, -20, 74, -457, -457, -457, -457 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -173 +#define YYTABLE_NINF -175 static const short int yytable[] = { - 78, 13, 331, 362, 246, 248, 422, 405, 123, 436, - 422, 189, 13, 327, 328, 329, 330, 555, 327, 328, - 329, 330, 447, 60, 61, 449, 83, 63, 64, 65, - 66, 67, 68, 69, 70, 332, 1, 21, 2, 105, - 298, 299, 315, 315, 353, 354, 108, 396, 397, 128, - 205, 129, 126, 398, 22, 350, 1, 399, 2, 131, - 406, 206, 71, 448, 421, 316, 448, 324, 414, 415, - 39, 16, 17, 18, 205, 418, 551, 337, 37, 187, - 341, 342, 343, 344, 345, 295, 557, 348, 349, 94, - 19, 23, 183, 307, 307, 24, 25, 197, 307, 353, - 354, 126, 309, 24, 25, 310, 197, 482, 13, 505, - 52, 26, 27, 28, 29, 30, 31, 32, 194, 421, - 33, 444, 445, 446, 307, 195, 353, 354, 422, 451, - 128, 308, 129, 190, 130, 325, 53, 1, 360, 2, - 462, 463, 326, 128, 480, 129, 421, 542, 56, 359, - 377, 124, 552, 353, 354, 113, 114, 72, 420, 516, - 73, 517, 54, 74, 545, 75, 125, 55, 109, 488, - 40, 490, 41, 128, 492, 129, 58, 407, 292, 293, - 496, 497, 296, 112, 558, 44, 45, 46, 426, 256, - 47, 105, 427, 402, 128, 422, 129, 422, 95, 96, - 97, 98, 99, 100, 101, 509, 510, 535, 513, 514, - 535, 536, 116, 518, 539, 453, 117, 455, 456, 457, - 441, 524, 118, 461, 327, 328, 329, 330, 404, 128, - 120, 129, 467, 534, 128, 320, 129, 474, 320, 132, - 133, 538, 547, -60, -60, 549, 335, 336, 320, 338, - 339, 320, 320, 320, 320, 320, 346, 347, 320, 320, - -59, -59, 121, 550, -58, -58, 122, 197, 554, -57, - -57, -61, 543, 134, 135, 351, 352, 353, 354, 81, - 82, 562, 563, 553, -62, 136, 566, 185, 201, 568, - 202, 302, 303, 304, 305, 306, 379, 238, 239, 520, - 521, 522, 249, 311, 312, 313, 314, 240, 241, 187, - 400, 401, 288, 242, 250, 251, 252, 253, 254, 394, - 290, 291, 322, 297, 394, 394, 300, 187, 419, 320, - 394, 294, 301, 319, 361, 366, 367, 394, 368, 373, - 369, 371, 372, 374, 375, 394, 394, 376, 408, 409, - 434, 416, 410, 363, 364, 411, 412, 413, 417, 424, - 370, 425, 60, 61, 437, 83, 63, 64, 65, 66, - 67, 68, 69, 70, 438, 1, 439, 2, 442, 443, - 452, 458, 481, 459, -172, 464, 320, 454, 320, 320, - 320, 468, 469, 460, 320, 483, 470, 471, 394, 394, - 394, 71, 1, 320, 2, 3, 394, 484, 486, 472, - 473, 4, 5, 475, 479, 485, 487, 394, 394, 428, - 429, 430, 431, 489, 432, 433, 426, 435, 491, 500, - 493, 6, 494, 495, 498, 529, 508, 476, 7, 501, - 515, 499, 8, 525, 519, 526, 394, 531, 394, 527, - 532, 394, 533, 448, 540, 537, 541, 394, 394, 548, - 556, 559, 511, 560, 561, 564, 565, 567, 279, 506, - 320, 320, 320, 280, 333, 511, 281, 465, 466, 282, - 192, 334, 394, 394, 357, 394, 394, 207, 204, 182, - 394, 38, 104, 528, 111, 450, 72, 0, 394, 73, - 60, 61, 74, 0, 75, 203, 476, -171, 0, 0, - 394, 0, 546, 1, 523, 2, 0, 137, 394, 0, - 0, 502, 0, 503, 504, 1, 0, 2, 3, 0, - 138, 139, 0, 0, 4, 5, 0, 0, 0, 0, - 394, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 394, 394, - 0, 7, 0, 394, 0, 8, 394, 0, 0, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 0, 0, 0, 0, 60, 61, 0, - 83, 84, 85, 86, 87, 88, 89, 90, 70, 0, - 1, 0, 2, 0, 0, 0, 0, 0, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 0, 167, 168, 169, 170, 71, 171, 172, 173, - 0, 0, 0, 128, 0, 129, 0, 174, 0, 0, - 175, 0, 176, 0, 177, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 0, 0, 0, 0, 0, - 382, 383, 60, 61, 384, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 2, 0, 385, - 386, 387, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 388, 389, 0, 0, 0, 0, 0, 0, + 78, 13, 335, 247, 249, 328, 182, 428, 443, 123, + 319, 428, 13, 411, 454, 341, 366, 194, 345, 346, + 347, 348, 349, 189, 195, 352, 353, 319, 1, 21, + 2, 456, 320, 331, 332, 333, 334, 331, 332, 333, + 334, 299, 300, 336, 105, 562, 357, 358, 22, -174, + 405, 108, 126, 205, 205, 455, 16, 17, 18, 131, + 308, 37, 308, 354, 206, 296, 427, 1, 424, 2, + 3, 314, 455, 376, 312, 19, 4, 5, 432, 187, + 60, 61, 433, 83, 84, 85, 86, 87, 88, 89, + 90, 70, 183, 1, 558, 2, 6, 197, 128, 426, + 129, 126, 413, 7, 564, 308, 197, 8, 13, 512, + 308, 357, 358, 308, 313, 58, 128, 309, 129, 71, + 24, 25, 489, 329, 364, 357, 358, 357, 358, 39, + 330, 427, 428, 60, 61, 105, 83, 63, 64, 65, + 66, 67, 68, 69, 70, 190, 1, 427, 2, 113, + 114, 128, 124, 129, 40, 383, 41, 363, 460, 56, + 462, 463, 464, 487, 552, 94, 468, 549, 523, 52, + 524, 559, 71, 109, 53, 474, 542, 542, 293, 294, + 543, 546, 297, 128, 565, 129, 481, 54, -173, 257, + 95, 96, 97, 98, 99, 100, 101, 408, 128, 428, + 129, 428, 44, 45, 46, 55, 1, 47, 2, 3, + 130, 128, 112, 129, 72, 4, 5, 73, 117, 243, + 74, 118, 75, 311, 182, 448, 331, 332, 333, 334, + 410, 128, 1, 129, 2, 6, 324, -60, -60, 324, + 132, 133, 7, 527, 528, 529, 8, 339, 340, 324, + 342, 343, 324, 324, 324, 324, 324, 350, 351, 324, + 324, 554, -59, -59, 556, -58, -58, 72, 197, 116, + 73, 120, 23, 74, 121, 75, 125, 122, 550, -57, + -57, 134, 135, 185, 24, 25, 355, 356, -61, 560, + 81, 82, 26, 27, 28, 29, 30, 31, 32, -62, + 385, 33, 357, 358, 136, 201, 202, 238, 239, 240, + 183, 241, 242, 187, 406, 407, 250, 251, 252, 253, + 254, 255, 289, 400, 292, 301, 291, 295, 400, 400, + 302, 187, 425, 324, 400, 298, 323, 326, 379, 365, + 370, 400, 371, 372, 373, 375, 377, 378, 380, 400, + 400, 381, 382, 422, 438, 414, 441, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 303, 304, 305, + 306, 307, 415, 416, 417, 418, 419, 423, 430, 431, + 315, 316, 317, 318, 444, 445, 446, 449, 450, 465, + 459, 466, 324, 461, 324, 324, 324, 471, 475, 467, + 324, 477, 488, 490, 400, 400, 400, 476, 478, 324, + 491, 496, 400, 479, 536, 480, 482, 492, 538, 455, + 493, 486, 494, 400, 400, 432, 498, 500, 501, 540, + 367, 368, 502, 505, 547, 507, 515, 374, 522, 508, + 526, 532, 548, 566, 483, 533, 539, 534, 506, 563, + 402, 403, 544, 400, 555, 400, 404, 567, 400, 568, + 571, 572, 574, 412, 400, 400, 338, 192, 337, 518, + 513, 420, 421, 361, 207, 204, 280, 324, 324, 324, + 38, 535, 518, 104, 111, 530, 457, 0, 0, 400, + 400, 0, 400, 400, 0, 0, 0, 400, 0, 434, + 435, 436, 437, 281, 0, 400, 439, 440, 282, 442, + 283, 0, 0, 483, 0, 0, 0, 400, 0, 553, + 0, 0, 0, 0, 0, 400, 451, 452, 453, 0, + 0, 0, 0, 0, 458, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 469, 470, 400, 0, 0, + 0, 0, 400, 0, 0, 0, 0, 0, 0, 472, + 473, 0, 0, 0, 0, 400, 400, 0, 0, 0, + 400, 0, 0, 400, 0, 495, 0, 497, 0, 0, + 499, 0, 0, 0, 0, 0, 503, 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 390, 0, 0, 0, 0, 0, - 0, 72, 0, 0, 73, 0, 0, 74, 0, 75, - 247, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 60, 61, 0, 83, 63, 64, - 65, 66, 67, 68, 69, 70, 0, 1, 0, 2, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 196, 167, 168, 169, 170, 0, 171, - 172, 173, 0, 71, 0, 128, 0, 129, 0, 0, - 0, 0, 391, 382, 383, 60, 61, 384, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 2, 0, 385, 386, 387, 0, 0, 221, 222, 0, - 0, 0, 0, 0, 0, 388, 389, 0, 0, 0, + 0, 0, 0, 0, 509, 0, 510, 511, 0, 0, + 0, 516, 517, 0, 520, 521, 0, 0, 0, 525, + 0, 0, 0, 0, 0, 0, 0, 531, 60, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 541, + 0, 1, 0, 2, 0, 137, 0, 545, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 138, 139, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 557, + 0, 0, 0, 0, 561, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 569, 570, 0, + 0, 0, 573, 0, 0, 575, 0, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 0, 0, 0, 0, 60, 61, 0, 83, 63, + 64, 65, 66, 67, 68, 69, 70, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 0, + 167, 168, 169, 170, 71, 171, 172, 173, 0, 0, + 0, 128, 0, 129, 0, 174, 0, 0, 175, 0, + 176, 0, 177, 60, 61, 0, 83, 84, 85, 86, + 87, 88, 89, 90, 70, 0, 1, 0, 2, 60, + 61, 0, 83, 84, 85, 86, 87, 88, 89, 90, + 70, 0, 1, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 71, 0, 60, 61, 0, 83, 63, 64, + 65, 66, 67, 68, 69, 70, 0, 1, 71, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 390, 60, 61, - 0, 83, 84, 85, 86, 87, 88, 89, 90, 70, - 0, 1, 0, 2, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 196, 0, 0, 0, 0, 0, 72, + 0, 0, 73, 71, 0, 74, 0, 75, 203, 0, + 0, 0, 0, 388, 389, 60, 61, 390, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 2, 0, 391, 392, 393, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 394, 395, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, + 73, 0, 0, 74, 0, 75, 248, 396, 0, 0, + 0, 0, 0, 72, 0, 0, 73, 0, 0, 74, + 0, 75, 310, 0, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 72, 0, - 0, 73, 0, 0, 74, 0, 75, 71, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 0, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 0, 167, 168, 169, - 170, 0, 171, 172, 173, 382, 383, 0, 0, 384, - 0, 0, 0, 0, 0, 391, 0, 0, 0, 0, - 0, 0, 0, 0, 385, 386, 387, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 388, 389, 0, + 0, 73, 0, 0, 74, 0, 75, 60, 61, 0, + 83, 63, 64, 65, 66, 67, 68, 69, 70, 0, + 1, 0, 2, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 360, 167, 168, 169, + 170, 0, 171, 172, 173, 0, 71, 0, 128, 0, + 129, 0, 0, 0, 0, 397, 388, 389, 60, 61, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 2, 0, 391, 392, 393, 0, 0, + 221, 222, 0, 0, 0, 0, 0, 0, 394, 395, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 396, 60, 61, 0, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 0, 1, 0, 2, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 72, 0, 0, 73, 0, 0, 74, 0, 75, + 71, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 0, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 0, + 167, 168, 169, 170, 0, 171, 172, 173, 388, 389, + 0, 0, 390, 0, 0, 0, 0, 0, 397, 0, + 0, 0, 0, 0, 0, 0, 0, 391, 392, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 390, - 0, 0, 72, 0, 0, 73, 0, 243, 74, 0, - 75, 0, 0, 0, 0, 0, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, - 61, 0, 83, 63, 64, 65, 66, 67, 68, 69, - 70, 0, 1, 0, 2, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 356, 167, - 168, 169, 170, 0, 171, 172, 173, 0, 71, 0, - 0, 0, 0, 0, 0, 60, 61, 391, 83, 63, + 394, 395, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 396, 0, 0, 72, 0, 0, 73, 0, + 0, 74, 0, 75, 0, 0, 0, 0, 0, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 60, 61, 0, 83, 63, 64, 65, 66, + 67, 68, 69, 70, 0, 1, 0, 2, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 384, 167, 168, 169, 170, 0, 171, 172, 173, + 0, 71, 0, 0, 0, 0, 0, 0, 60, 61, + 397, 83, 63, 64, 65, 66, 67, 68, 69, 70, + 0, 1, 0, 2, 0, 60, 61, 0, 83, 84, + 85, 86, 87, 88, 89, 90, 70, 485, 1, 0, + 2, 0, 0, 0, 0, 60, 61, 71, 83, 63, 64, 65, 66, 67, 68, 69, 70, 0, 1, 0, - 2, 0, 60, 61, 0, 83, 63, 64, 65, 66, - 67, 68, 69, 70, 378, 1, 0, 2, 0, 0, - 0, 0, 0, 0, 71, 0, 0, 0, 0, 60, - 61, 478, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 1, 0, 2, 60, 61, 0, 83, 84, - 85, 86, 87, 88, 89, 90, 70, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 71, 0, - 0, 0, 0, 72, 0, 0, 73, 0, 0, 74, - 0, 75, 60, 61, 71, 83, 63, 64, 65, 66, - 67, 68, 69, 70, 0, 1, 0, 2, 60, 61, - 0, 186, 63, 64, 65, 66, 67, 68, 69, 70, - 0, 1, 0, 2, 0, 0, 0, 0, 0, 72, - 0, 71, 73, 0, 0, 74, 0, 75, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 71, 0, 73, - 0, 0, 74, 0, 75, 60, 61, 0, 323, 63, + 2, 0, 60, 61, 71, 186, 63, 64, 65, 66, + 67, 68, 69, 70, 0, 1, 0, 2, 0, 0, + 0, 0, 60, 61, 71, 83, 84, 85, 86, 87, + 88, 89, 90, 70, 0, 1, 72, 2, 0, 73, + 0, 71, 74, 0, 75, 60, 61, 0, 327, 63, 64, 65, 66, 67, 68, 69, 70, 0, 1, 0, - 2, 0, 0, 72, 0, 0, 73, 0, 0, 74, - 0, 75, 0, 0, 0, 0, 0, 0, 0, 72, - 0, 0, 73, 0, 71, 74, 0, 75, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 257, 0, 0, 72, 0, 0, 73, - 0, 0, 74, 0, 75, 0, 258, 0, 0, 0, - 0, 0, 72, 0, 0, 73, 259, 260, 74, 0, - 75, 0, 0, 0, 0, 0, 0, 0, 0, 261, - 262, 263, 264, 265, 266, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 267, 268, 0, + 0, 0, 72, 0, 71, 73, 0, 0, 74, 0, + 75, 0, 0, 0, 0, 0, 0, 0, 0, 72, + 0, 0, 73, 0, 0, 74, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, - 0, 0, 73, 0, 0, 74, 0, 75, 0, 269, - 270, 271, 0, 0, 272, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 273, 274, 168, - 169, 170, 275, 276, 277, 278 + 0, 0, 73, 0, 0, 74, 0, 75, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 0, 0, 73, + 0, 0, 74, 0, 75, 0, 0, 0, 0, 0, + 0, 0, 258, 0, 0, 0, 72, 0, 0, 73, + 0, 0, 74, 0, 246, 259, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 260, 261, 0, 0, 72, + 0, 0, 73, 0, 0, 74, 0, 75, 262, 263, + 264, 265, 266, 267, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 268, 269, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 270, 271, + 272, 0, 0, 273, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 274, 275, 168, 169, + 170, 276, 277, 278, 279 }; static const short int yycheck[] = { - 23, 0, 263, 297, 175, 176, 358, 336, 4, 379, - 362, 25, 11, 10, 11, 12, 13, 33, 10, 11, - 12, 13, 12, 5, 6, 12, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 264, 18, 136, 20, 19, - 208, 209, 31, 31, 115, 116, 26, 325, 326, 138, - 137, 140, 75, 331, 57, 284, 18, 332, 20, 82, - 338, 148, 44, 53, 135, 53, 53, 261, 346, 347, - 136, 48, 49, 50, 137, 350, 543, 271, 0, 102, - 274, 275, 276, 277, 278, 148, 553, 281, 282, 36, - 67, 17, 93, 137, 137, 29, 30, 120, 137, 115, - 116, 124, 146, 29, 30, 148, 129, 146, 107, 479, - 136, 37, 38, 39, 40, 41, 42, 43, 137, 135, - 46, 399, 400, 401, 137, 144, 115, 116, 480, 407, - 138, 144, 140, 147, 81, 9, 136, 18, 146, 20, - 418, 419, 16, 138, 438, 140, 135, 144, 142, 144, - 318, 147, 144, 115, 116, 51, 52, 139, 352, 488, - 142, 490, 136, 145, 534, 147, 148, 136, 148, 447, - 41, 449, 43, 138, 452, 140, 20, 142, 201, 202, - 458, 459, 205, 20, 554, 37, 38, 39, 137, 188, - 42, 19, 141, 137, 138, 547, 140, 549, 60, 61, - 62, 63, 64, 65, 66, 483, 484, 137, 486, 487, - 137, 141, 4, 491, 141, 409, 20, 411, 412, 413, - 391, 499, 20, 417, 10, 11, 12, 13, 137, 138, - 140, 140, 426, 511, 138, 258, 140, 141, 261, 23, - 24, 519, 536, 3, 4, 539, 269, 270, 271, 272, + 23, 0, 264, 175, 176, 262, 93, 362, 385, 4, + 31, 366, 11, 340, 12, 272, 298, 137, 275, 276, + 277, 278, 279, 25, 144, 282, 283, 31, 18, 136, + 20, 12, 53, 10, 11, 12, 13, 10, 11, 12, + 13, 208, 209, 265, 19, 33, 115, 116, 57, 0, + 336, 26, 75, 137, 137, 53, 48, 49, 50, 82, + 137, 0, 137, 285, 148, 148, 135, 18, 354, 20, + 21, 148, 53, 148, 246, 67, 27, 28, 137, 102, + 5, 6, 141, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 93, 18, 550, 20, 47, 120, 138, 356, + 140, 124, 142, 54, 560, 137, 129, 58, 107, 486, + 137, 115, 116, 137, 146, 20, 138, 144, 140, 44, + 29, 30, 146, 9, 146, 115, 116, 115, 116, 136, + 16, 135, 487, 5, 6, 19, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 147, 18, 135, 20, 51, + 52, 138, 147, 140, 41, 322, 43, 144, 415, 142, + 417, 418, 419, 445, 541, 36, 423, 144, 495, 136, + 497, 144, 44, 148, 136, 432, 137, 137, 201, 202, + 141, 141, 205, 138, 561, 140, 141, 136, 0, 188, + 60, 61, 62, 63, 64, 65, 66, 137, 138, 554, + 140, 556, 37, 38, 39, 136, 18, 42, 20, 21, + 81, 138, 20, 140, 139, 27, 28, 142, 20, 144, + 145, 20, 147, 246, 311, 397, 10, 11, 12, 13, + 137, 138, 18, 140, 20, 47, 259, 3, 4, 262, + 23, 24, 54, 500, 501, 502, 58, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 3, 4, 4, 541, 3, 4, 4, 290, 546, 3, - 4, 7, 533, 3, 4, 111, 112, 115, 116, 34, - 35, 559, 560, 544, 7, 7, 564, 4, 143, 567, - 143, 238, 239, 240, 241, 242, 319, 140, 140, 493, - 494, 495, 20, 250, 251, 252, 253, 140, 140, 332, - 333, 334, 20, 140, 140, 140, 140, 140, 137, 320, - 137, 141, 55, 141, 325, 326, 140, 350, 351, 352, - 331, 146, 140, 140, 146, 137, 137, 338, 137, 33, - 137, 137, 137, 137, 20, 346, 347, 4, 137, 137, - 373, 33, 137, 300, 301, 137, 137, 137, 137, 137, - 307, 137, 5, 6, 137, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 141, 18, 59, 20, 137, 137, - 142, 137, 20, 137, 0, 137, 409, 410, 411, 412, - 413, 137, 141, 416, 417, 16, 137, 137, 399, 400, - 401, 44, 18, 426, 20, 21, 407, 16, 137, 141, - 141, 27, 28, 141, 437, 140, 137, 418, 419, 366, - 367, 368, 369, 4, 371, 372, 137, 374, 137, 141, - 137, 47, 137, 137, 140, 53, 137, 436, 54, 141, - 137, 464, 58, 141, 137, 141, 447, 20, 449, 141, - 137, 452, 142, 53, 4, 144, 16, 458, 459, 144, - 137, 16, 485, 16, 137, 16, 72, 16, 192, 480, - 493, 494, 495, 192, 267, 498, 192, 424, 425, 192, - 107, 268, 483, 484, 290, 486, 487, 129, 124, 93, - 491, 11, 48, 505, 51, 406, 139, -1, 499, 142, - 5, 6, 145, -1, 147, 148, 505, 0, -1, -1, - 511, -1, 535, 18, 498, 20, -1, 22, 519, -1, - -1, 468, -1, 470, 471, 18, -1, 20, 21, -1, - 35, 36, -1, -1, 27, 28, -1, -1, -1, -1, - 541, -1, -1, -1, -1, 546, -1, -1, -1, -1, - -1, -1, -1, -1, 47, -1, -1, -1, 559, 560, - -1, 54, -1, 564, -1, 58, 567, -1, -1, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, -1, -1, -1, -1, 5, 6, -1, - 8, 9, 10, 11, 12, 13, 14, 15, 16, -1, - 18, -1, 20, -1, -1, -1, -1, -1, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, -1, 127, 128, 129, 130, 44, 132, 133, 134, - -1, -1, -1, 138, -1, 140, -1, 142, -1, -1, - 145, -1, 147, -1, 149, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, -1, -1, -1, -1, -1, - 3, 4, 5, 6, 7, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, -1, 20, -1, 22, - 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 35, 36, -1, -1, -1, -1, -1, -1, + 283, 543, 3, 4, 546, 3, 4, 139, 291, 4, + 142, 140, 17, 145, 4, 147, 148, 4, 540, 3, + 4, 3, 4, 4, 29, 30, 111, 112, 7, 551, + 34, 35, 37, 38, 39, 40, 41, 42, 43, 7, + 323, 46, 115, 116, 7, 143, 143, 140, 140, 140, + 311, 140, 140, 336, 337, 338, 20, 140, 140, 140, + 140, 137, 20, 324, 141, 140, 137, 146, 329, 330, + 140, 354, 355, 356, 335, 141, 140, 55, 33, 146, + 137, 342, 137, 137, 137, 146, 137, 137, 137, 350, + 351, 20, 4, 33, 146, 137, 379, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 238, 239, 240, + 241, 242, 137, 137, 137, 137, 137, 137, 137, 137, + 251, 252, 253, 254, 137, 141, 59, 137, 137, 137, + 142, 137, 415, 416, 417, 418, 419, 137, 137, 422, + 423, 137, 20, 16, 405, 406, 407, 141, 137, 432, + 16, 4, 413, 141, 53, 141, 141, 140, 20, 53, + 137, 444, 137, 424, 425, 137, 137, 137, 137, 142, + 301, 302, 137, 140, 4, 141, 137, 308, 137, 141, + 137, 141, 16, 16, 443, 141, 137, 141, 471, 137, + 329, 330, 144, 454, 144, 456, 335, 16, 459, 137, + 16, 72, 16, 342, 465, 466, 269, 107, 268, 492, + 487, 350, 351, 291, 129, 124, 192, 500, 501, 502, + 11, 512, 505, 48, 51, 505, 412, -1, -1, 490, + 491, -1, 493, 494, -1, -1, -1, 498, -1, 370, + 371, 372, 373, 192, -1, 506, 377, 378, 192, 380, + 192, -1, -1, 512, -1, -1, -1, 518, -1, 542, + -1, -1, -1, -1, -1, 526, 405, 406, 407, -1, + -1, -1, -1, -1, 413, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 424, 425, 548, -1, -1, + -1, -1, 553, -1, -1, -1, -1, -1, -1, 430, + 431, -1, -1, -1, -1, 566, 567, -1, -1, -1, + 571, -1, -1, 574, -1, 454, -1, 456, -1, -1, + 459, -1, -1, -1, -1, -1, 465, 466, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 475, -1, 477, 478, -1, -1, + -1, 490, 491, -1, 493, 494, -1, -1, -1, 498, + -1, -1, -1, -1, -1, -1, -1, 506, 5, 6, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 518, + -1, 18, -1, 20, -1, 22, -1, 526, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 35, 36, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 548, + -1, -1, -1, -1, 553, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 566, 567, -1, + -1, -1, 571, -1, -1, 574, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, -1, -1, -1, -1, 5, 6, -1, 8, 9, + 10, 11, 12, 13, 14, 15, 16, -1, 18, -1, + 20, -1, -1, -1, -1, -1, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, + 127, 128, 129, 130, 44, 132, 133, 134, -1, -1, + -1, 138, -1, 140, -1, 142, -1, -1, 145, -1, + 147, -1, 149, 5, 6, -1, 8, 9, 10, 11, + 12, 13, 14, 15, 16, -1, 18, -1, 20, 5, + 6, -1, 8, 9, 10, 11, 12, 13, 14, 15, + 16, -1, 18, -1, 20, -1, -1, -1, -1, -1, + -1, -1, 44, -1, 5, 6, -1, 8, 9, 10, + 11, 12, 13, 14, 15, 16, -1, 18, 44, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 57, -1, -1, -1, -1, -1, - -1, 139, -1, -1, 142, -1, -1, 145, -1, 147, - 148, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 5, 6, -1, 8, 9, 10, - 11, 12, 13, 14, 15, 16, -1, 18, -1, 20, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 34, 127, 128, 129, 130, -1, 132, - 133, 134, -1, 44, -1, 138, -1, 140, -1, -1, - -1, -1, 145, 3, 4, 5, 6, 7, -1, -1, + -1, -1, -1, 34, -1, -1, -1, -1, -1, 139, + -1, -1, 142, 44, -1, 145, -1, 147, 148, -1, + -1, -1, -1, 3, 4, 5, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, -1, - 20, -1, 22, 23, 24, -1, -1, 23, 24, -1, + 20, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, 36, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 57, 5, 6, - -1, 8, 9, 10, 11, 12, 13, 14, 15, 16, - -1, 18, -1, 20, 74, 75, 76, 77, 78, 79, + -1, -1, -1, -1, -1, -1, -1, 139, -1, -1, + 142, -1, -1, 145, -1, 147, 148, 57, -1, -1, + -1, -1, -1, 139, -1, -1, 142, -1, -1, 145, + -1, 147, 148, -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 139, -1, - -1, 142, -1, -1, 145, -1, 147, 44, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, -1, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, - 130, -1, 132, 133, 134, 3, 4, -1, -1, 7, - -1, -1, -1, -1, -1, 145, -1, -1, -1, -1, - -1, -1, -1, -1, 22, 23, 24, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 35, 36, -1, + -1, 142, -1, -1, 145, -1, 147, 5, 6, -1, + 8, 9, 10, 11, 12, 13, 14, 15, 16, -1, + 18, -1, 20, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 34, 127, 128, 129, + 130, -1, 132, 133, 134, -1, 44, -1, 138, -1, + 140, -1, -1, -1, -1, 145, 3, 4, 5, 6, + 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, -1, 20, -1, 22, 23, 24, -1, -1, + 23, 24, -1, -1, -1, -1, -1, -1, 35, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, - -1, -1, 139, -1, -1, 142, -1, 144, 145, -1, - 147, -1, -1, -1, -1, -1, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, - 6, -1, 8, 9, 10, 11, 12, 13, 14, 15, - 16, -1, 18, -1, 20, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 34, 127, - 128, 129, 130, -1, 132, 133, 134, -1, 44, -1, - -1, -1, -1, -1, -1, 5, 6, 145, 8, 9, - 10, 11, 12, 13, 14, 15, 16, -1, 18, -1, - 20, -1, 5, 6, -1, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 34, 18, -1, 20, -1, -1, - -1, -1, -1, -1, 44, -1, -1, -1, -1, 5, - 6, 34, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 44, 18, -1, 20, 5, 6, -1, 8, 9, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 57, 5, 6, -1, 8, 9, 10, 11, 12, 13, + 14, 15, 16, -1, 18, -1, 20, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 139, -1, -1, 142, -1, -1, 145, -1, 147, + 44, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, -1, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, + 127, 128, 129, 130, -1, 132, 133, 134, 3, 4, + -1, -1, 7, -1, -1, -1, -1, -1, 145, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 35, 36, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 57, -1, -1, 139, -1, -1, 142, -1, + -1, 145, -1, 147, -1, -1, -1, -1, -1, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 5, 6, -1, 8, 9, 10, 11, 12, + 13, 14, 15, 16, -1, 18, -1, 20, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 34, 127, 128, 129, 130, -1, 132, 133, 134, + -1, 44, -1, -1, -1, -1, -1, -1, 5, 6, + 145, 8, 9, 10, 11, 12, 13, 14, 15, 16, + -1, 18, -1, 20, -1, 5, 6, -1, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 34, 18, -1, + 20, -1, -1, -1, -1, 5, 6, 44, 8, 9, 10, 11, 12, 13, 14, 15, 16, -1, 18, -1, - 20, -1, -1, -1, -1, -1, -1, -1, 44, -1, - -1, -1, -1, 139, -1, -1, 142, -1, -1, 145, - -1, 147, 5, 6, 44, 8, 9, 10, 11, 12, - 13, 14, 15, 16, -1, 18, -1, 20, 5, 6, - -1, 8, 9, 10, 11, 12, 13, 14, 15, 16, - -1, 18, -1, 20, -1, -1, -1, -1, -1, 139, - -1, 44, 142, -1, -1, 145, -1, 147, -1, -1, - -1, -1, -1, -1, -1, -1, 139, 44, -1, 142, - -1, -1, 145, -1, 147, 5, 6, -1, 8, 9, + 20, -1, 5, 6, 44, 8, 9, 10, 11, 12, + 13, 14, 15, 16, -1, 18, -1, 20, -1, -1, + -1, -1, 5, 6, 44, 8, 9, 10, 11, 12, + 13, 14, 15, 16, -1, 18, 139, 20, -1, 142, + -1, 44, 145, -1, 147, 5, 6, -1, 8, 9, 10, 11, 12, 13, 14, 15, 16, -1, 18, -1, - 20, -1, -1, 139, -1, -1, 142, -1, -1, 145, - -1, 147, -1, -1, -1, -1, -1, -1, -1, 139, - -1, -1, 142, -1, 44, 145, -1, 147, -1, -1, + 20, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 32, -1, -1, 139, -1, -1, 142, - -1, -1, 145, -1, 147, -1, 45, -1, -1, -1, - -1, -1, 139, -1, -1, 142, 55, 56, 145, -1, - 147, -1, -1, -1, -1, -1, -1, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + -1, -1, 139, -1, 44, 142, -1, -1, 145, -1, + 147, -1, -1, -1, -1, -1, -1, -1, -1, 139, + -1, -1, 142, -1, -1, 145, -1, 147, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, - -1, -1, 142, -1, -1, 145, -1, 147, -1, 108, - 109, 110, -1, -1, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134 + -1, -1, 142, -1, -1, 145, -1, 147, -1, -1, + -1, -1, -1, -1, -1, -1, 139, -1, -1, 142, + -1, -1, 145, -1, 147, -1, -1, -1, -1, -1, + -1, -1, 32, -1, -1, -1, 139, -1, -1, 142, + -1, -1, 145, -1, 147, 45, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 55, 56, -1, -1, 139, + -1, -1, 142, -1, -1, 145, -1, 147, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 108, 109, + 110, -1, -1, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -2275,39 +2318,40 @@ static const unsigned char yystos[] = 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 156, 23, 24, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 157, 140, 140, - 140, 140, 140, 144, 183, 185, 185, 148, 185, 20, - 140, 140, 140, 140, 137, 174, 200, 32, 45, 55, - 56, 68, 69, 70, 71, 72, 73, 86, 87, 108, - 109, 110, 113, 126, 127, 131, 132, 133, 134, 152, - 153, 154, 155, 218, 224, 225, 226, 227, 20, 167, - 137, 141, 177, 177, 146, 148, 177, 141, 174, 174, - 140, 140, 183, 183, 183, 183, 183, 137, 144, 146, - 148, 183, 183, 183, 183, 31, 53, 172, 175, 140, - 177, 214, 55, 8, 214, 9, 16, 10, 11, 12, - 13, 158, 165, 156, 157, 177, 177, 214, 177, 177, - 221, 214, 214, 214, 214, 214, 177, 177, 214, 214, - 165, 111, 112, 115, 116, 166, 34, 178, 169, 144, - 146, 146, 169, 183, 183, 223, 137, 137, 137, 137, - 183, 137, 137, 33, 137, 20, 4, 174, 34, 177, - 202, 203, 3, 4, 7, 22, 23, 24, 35, 36, - 57, 145, 184, 211, 212, 213, 213, 213, 213, 179, - 177, 177, 137, 171, 137, 171, 213, 142, 137, 137, - 137, 137, 137, 137, 213, 213, 33, 137, 179, 177, - 214, 135, 166, 168, 137, 137, 137, 141, 183, 183, - 183, 183, 183, 183, 177, 183, 167, 137, 141, 59, - 210, 185, 137, 137, 213, 213, 213, 12, 53, 12, - 223, 213, 142, 214, 177, 214, 214, 214, 137, 137, - 177, 214, 213, 213, 137, 183, 183, 214, 137, 141, - 137, 137, 141, 141, 141, 141, 200, 201, 34, 177, - 169, 20, 146, 16, 16, 140, 137, 137, 213, 4, - 213, 137, 213, 137, 137, 137, 213, 213, 140, 177, - 141, 141, 183, 183, 183, 167, 172, 173, 137, 213, - 213, 177, 222, 213, 213, 137, 171, 171, 213, 137, - 214, 214, 214, 222, 213, 141, 141, 141, 201, 53, - 170, 20, 137, 142, 213, 137, 141, 144, 213, 141, - 4, 16, 144, 158, 219, 167, 177, 169, 144, 169, - 213, 211, 144, 158, 213, 33, 137, 211, 167, 16, - 16, 137, 213, 213, 16, 72, 213, 16, 213 + 140, 140, 140, 144, 183, 185, 147, 185, 148, 185, + 20, 140, 140, 140, 140, 137, 174, 200, 32, 45, + 55, 56, 68, 69, 70, 71, 72, 73, 86, 87, + 108, 109, 110, 113, 126, 127, 131, 132, 133, 134, + 152, 153, 154, 155, 218, 224, 225, 226, 227, 20, + 167, 137, 141, 177, 177, 146, 148, 177, 141, 174, + 174, 140, 140, 183, 183, 183, 183, 183, 137, 144, + 148, 177, 185, 146, 148, 183, 183, 183, 183, 31, + 53, 172, 175, 140, 177, 214, 55, 8, 214, 9, + 16, 10, 11, 12, 13, 158, 165, 156, 157, 177, + 177, 214, 177, 177, 221, 214, 214, 214, 214, 214, + 177, 177, 214, 214, 165, 111, 112, 115, 116, 166, + 34, 178, 169, 144, 146, 146, 169, 183, 183, 223, + 137, 137, 137, 137, 183, 146, 148, 137, 137, 33, + 137, 20, 4, 174, 34, 177, 202, 203, 3, 4, + 7, 22, 23, 24, 35, 36, 57, 145, 184, 211, + 212, 213, 213, 213, 213, 179, 177, 177, 137, 171, + 137, 171, 213, 142, 137, 137, 137, 137, 137, 137, + 213, 213, 33, 137, 179, 177, 214, 135, 166, 168, + 137, 137, 137, 141, 183, 183, 183, 183, 146, 183, + 183, 177, 183, 167, 137, 141, 59, 210, 185, 137, + 137, 213, 213, 213, 12, 53, 12, 223, 213, 142, + 214, 177, 214, 214, 214, 137, 137, 177, 214, 213, + 213, 137, 183, 183, 214, 137, 141, 137, 137, 141, + 141, 141, 141, 200, 201, 34, 177, 169, 20, 146, + 16, 16, 140, 137, 137, 213, 4, 213, 137, 213, + 137, 137, 137, 213, 213, 140, 177, 141, 141, 183, + 183, 183, 167, 172, 173, 137, 213, 213, 177, 222, + 213, 213, 137, 171, 171, 213, 137, 214, 214, 214, + 222, 213, 141, 141, 141, 201, 53, 170, 20, 137, + 142, 213, 137, 141, 144, 213, 141, 4, 16, 144, + 158, 219, 167, 177, 169, 144, 169, 213, 211, 144, + 158, 213, 33, 137, 211, 167, 16, 16, 137, 213, + 213, 16, 72, 213, 16, 213 }; #define yyerrok (yyerrstatus = 0) @@ -2730,7 +2774,7 @@ yyparse (void) #else int yyparse () - + ; #endif #endif { @@ -2977,7 +3021,7 @@ yyreduce: switch (yyn) { case 3: -#line 1020 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1020 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].UIntVal) > (uint32_t)INT32_MAX) // Outside of my range! GEN_ERROR("Value too large for type!"); @@ -2987,137 +3031,137 @@ yyreduce: break; case 31: -#line 1036 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1036 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;} break; case 32: -#line 1036 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1036 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;} break; case 33: -#line 1037 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1037 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;} break; case 34: -#line 1037 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1037 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;} break; case 35: -#line 1038 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1038 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;} break; case 36: -#line 1038 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1038 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;} break; case 37: -#line 1039 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1039 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;} break; case 38: -#line 1039 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1039 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;} break; case 39: -#line 1040 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1040 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;} break; case 40: -#line 1040 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1040 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;} break; case 41: -#line 1044 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1044 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;} break; case 42: -#line 1044 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1044 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;} break; case 43: -#line 1045 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1045 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;} break; case 44: -#line 1045 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1045 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;} break; case 45: -#line 1046 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1046 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;} break; case 46: -#line 1046 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1046 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;} break; case 47: -#line 1047 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1047 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;} break; case 48: -#line 1047 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1047 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;} break; case 49: -#line 1048 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1048 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;} break; case 50: -#line 1048 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1048 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;} break; case 51: -#line 1049 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1049 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;} break; case 52: -#line 1049 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1049 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;} break; case 53: -#line 1050 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1050 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;} break; case 54: -#line 1050 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1050 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;} break; case 55: -#line 1051 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1051 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;} break; case 56: -#line 1052 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1052 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;} break; case 63: -#line 1061 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1061 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = (yyvsp[-1].StrVal); CHECK_FOR_ERROR @@ -3125,7 +3169,7 @@ yyreduce: break; case 64: -#line 1065 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1065 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; CHECK_FOR_ERROR @@ -3133,122 +3177,122 @@ yyreduce: break; case 65: -#line 1071 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1071 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} break; case 66: -#line 1072 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1072 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} break; case 67: -#line 1073 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1073 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} break; case 68: -#line 1074 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1074 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;} break; case 69: -#line 1075 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1075 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} break; case 70: -#line 1079 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1079 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} break; case 71: -#line 1080 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1080 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} break; case 72: -#line 1081 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1081 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; case 73: -#line 1085 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1085 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; case 74: -#line 1086 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1086 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} break; case 75: -#line 1087 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1087 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} break; case 76: -#line 1091 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1091 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; case 77: -#line 1092 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1092 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} break; case 78: -#line 1093 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1093 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} break; case 79: -#line 1094 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1094 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} break; case 80: -#line 1095 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1095 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} break; case 81: -#line 1098 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1098 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::C; ;} break; case 82: -#line 1099 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1099 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::C; ;} break; case 83: -#line 1100 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1100 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::CSRet; ;} break; case 84: -#line 1101 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1101 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::Fast; ;} break; case 85: -#line 1102 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1102 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::Cold; ;} break; case 86: -#line 1103 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1103 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::X86_StdCall; ;} break; case 87: -#line 1104 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1104 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::X86_FastCall; ;} break; case 88: -#line 1105 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1105 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val)) GEN_ERROR("Calling conv too large!"); @@ -3258,51 +3302,51 @@ yyreduce: break; case 89: -#line 1112 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1112 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = FunctionType::ZExtAttribute; ;} break; case 90: -#line 1113 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1113 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = FunctionType::SExtAttribute; ;} break; case 91: -#line 1116 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1116 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = FunctionType::NoAttributeSet; ;} break; case 92: -#line 1117 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1117 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[-1].ParamAttrs) | (yyvsp[0].ParamAttrs)); ;} break; case 93: -#line 1122 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1122 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = FunctionType::NoReturnAttribute; ;} break; case 95: -#line 1126 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1126 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = FunctionType::NoAttributeSet; ;} break; case 96: -#line 1127 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1127 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[-1].ParamAttrs) | (yyvsp[0].ParamAttrs)); ;} break; case 97: -#line 1134 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1134 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = 0; ;} break; case 98: -#line 1135 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1135 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = (yyvsp[0].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3312,12 +3356,12 @@ yyreduce: break; case 99: -#line 1141 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1141 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = 0; ;} break; case 100: -#line 1142 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1142 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = (yyvsp[0].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3327,7 +3371,7 @@ yyreduce: break; case 101: -#line 1150 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1150 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { for (unsigned i = 0, e = strlen((yyvsp[0].StrVal)); i != e; ++i) if ((yyvsp[0].StrVal)[i] == '"' || (yyvsp[0].StrVal)[i] == '\\') @@ -3338,27 +3382,27 @@ yyreduce: break; case 102: -#line 1158 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1158 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; ;} break; case 103: -#line 1159 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1159 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = (yyvsp[0].StrVal); ;} break; case 104: -#line 1164 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1164 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" {;} break; case 105: -#line 1165 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1165 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" {;} break; case 106: -#line 1166 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1166 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CurGV->setSection((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -3367,7 +3411,7 @@ yyreduce: break; case 107: -#line 1171 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1171 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val))) GEN_ERROR("Alignment must be a power of two!"); @@ -3377,7 +3421,7 @@ yyreduce: break; case 116: -#line 1187 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1187 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeVal) = new PATypeHolder(OpaqueType::get()); CHECK_FOR_ERROR @@ -3385,7 +3429,7 @@ yyreduce: break; case 117: -#line 1191 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1191 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType)); CHECK_FOR_ERROR @@ -3393,7 +3437,7 @@ yyreduce: break; case 118: -#line 1195 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1195 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Pointer type? if (*(yyvsp[-1].TypeVal) == Type::LabelTy) GEN_ERROR("Cannot form a pointer to a basic block"); @@ -3404,7 +3448,7 @@ yyreduce: break; case 119: -#line 1202 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1202 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Named types are also simple types... const Type* tmp = getTypeVal((yyvsp[0].ValIDVal)); CHECK_FOR_ERROR @@ -3413,7 +3457,7 @@ yyreduce: break; case 120: -#line 1207 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1207 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Type UpReference if ((yyvsp[0].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range!"); OpaqueType *OT = OpaqueType::get(); // Use temporary placeholder @@ -3425,7 +3469,7 @@ yyreduce: break; case 121: -#line 1215 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1215 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { std::vector<const Type*> Params; std::vector<FunctionType::ParameterAttributes> Attrs; @@ -3447,7 +3491,7 @@ yyreduce: break; case 122: -#line 1233 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1233 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { std::vector<const Type*> Params; std::vector<FunctionType::ParameterAttributes> Attrs; @@ -3468,7 +3512,7 @@ yyreduce: break; case 123: -#line 1251 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1251 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Sized array type? (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(ArrayType::get(*(yyvsp[-1].TypeVal), (unsigned)(yyvsp[-3].UInt64Val)))); delete (yyvsp[-1].TypeVal); @@ -3477,7 +3521,7 @@ yyreduce: break; case 124: -#line 1256 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1256 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Packed array type? const llvm::Type* ElemTy = (yyvsp[-1].TypeVal)->get(); if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val)) @@ -3493,7 +3537,7 @@ yyreduce: break; case 125: -#line 1268 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1268 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Structure type? std::vector<const Type*> Elements; for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-1].TypeList)->begin(), @@ -3507,7 +3551,7 @@ yyreduce: break; case 126: -#line 1278 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1278 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Empty structure type? (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>())); CHECK_FOR_ERROR @@ -3515,7 +3559,7 @@ yyreduce: break; case 127: -#line 1282 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1282 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { std::vector<const Type*> Elements; for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-2].TypeList)->begin(), @@ -3529,7 +3573,7 @@ yyreduce: break; case 128: -#line 1292 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1292 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Empty structure type? (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>(), true)); CHECK_FOR_ERROR @@ -3537,7 +3581,7 @@ yyreduce: break; case 129: -#line 1299 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1299 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrs).Ty = (yyvsp[-1].TypeVal); (yyval.TypeWithAttrs).Attrs = (yyvsp[0].ParamAttrs); @@ -3545,7 +3589,7 @@ yyreduce: break; case 130: -#line 1306 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1306 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -3556,14 +3600,14 @@ yyreduce: break; case 131: -#line 1313 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1313 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeVal) = new PATypeHolder(Type::VoidTy); ;} break; case 132: -#line 1318 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1318 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList) = new TypeWithAttrsList(); (yyval.TypeWithAttrsList)->push_back((yyvsp[0].TypeWithAttrs)); @@ -3572,7 +3616,7 @@ yyreduce: break; case 133: -#line 1323 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1323 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { ((yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList))->push_back((yyvsp[0].TypeWithAttrs)); CHECK_FOR_ERROR @@ -3580,7 +3624,7 @@ yyreduce: break; case 135: -#line 1331 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1331 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList); TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet; @@ -3591,7 +3635,7 @@ yyreduce: break; case 136: -#line 1338 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1338 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList) = new TypeWithAttrsList; TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet; @@ -3602,7 +3646,7 @@ yyreduce: break; case 137: -#line 1345 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1345 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList) = new TypeWithAttrsList(); CHECK_FOR_ERROR @@ -3610,7 +3654,7 @@ yyreduce: break; case 138: -#line 1353 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1353 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeList) = new std::list<PATypeHolder>(); (yyval.TypeList)->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal); @@ -3619,7 +3663,7 @@ yyreduce: break; case 139: -#line 1358 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1358 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal); CHECK_FOR_ERROR @@ -3627,7 +3671,7 @@ yyreduce: break; case 140: -#line 1369 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1369 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized arr if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); @@ -3659,7 +3703,7 @@ yyreduce: break; case 141: -#line 1397 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1397 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -3679,7 +3723,7 @@ yyreduce: break; case 142: -#line 1413 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1413 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -3712,7 +3756,7 @@ yyreduce: break; case 143: -#line 1442 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1442 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized arr if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); @@ -3744,7 +3788,7 @@ yyreduce: break; case 144: -#line 1470 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1470 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { const StructType *STy = dyn_cast<StructType>((yyvsp[-3].TypeVal)->get()); if (STy == 0) @@ -3762,6 +3806,10 @@ yyreduce: "' for element #" + utostr(i) + " of structure initializer!"); + // Check to ensure that Type is not packed + if (STy->isPacked()) + GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'"); + (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[-1].ConstVector)); delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector); CHECK_FOR_ERROR @@ -3769,7 +3817,7 @@ yyreduce: break; case 145: -#line 1491 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1495 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -3781,6 +3829,10 @@ yyreduce: if (STy->getNumContainedTypes() != 0) GEN_ERROR("Illegal number of initializers for structure type!"); + // Check to ensure that Type is not packed + if (STy->isPacked()) + GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'"); + (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>()); delete (yyvsp[-2].TypeVal); CHECK_FOR_ERROR @@ -3788,7 +3840,59 @@ yyreduce: break; case 146: -#line 1506 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 1514 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" + { + const StructType *STy = dyn_cast<StructType>((yyvsp[-5].TypeVal)->get()); + if (STy == 0) + GEN_ERROR("Cannot make struct constant with type: '" + + (*(yyvsp[-5].TypeVal))->getDescription() + "'!"); + + if ((yyvsp[-2].ConstVector)->size() != STy->getNumContainedTypes()) + GEN_ERROR("Illegal number of initializers for structure type!"); + + // Check to ensure that constants are compatible with the type initializer! + for (unsigned i = 0, e = (yyvsp[-2].ConstVector)->size(); i != e; ++i) + if ((*(yyvsp[-2].ConstVector))[i]->getType() != STy->getElementType(i)) + GEN_ERROR("Expected type '" + + STy->getElementType(i)->getDescription() + + "' for element #" + utostr(i) + + " of structure initializer!"); + + // Check to ensure that Type is packed + if (!STy->isPacked()) + GEN_ERROR("Packed Initializer to unpacked type '" + STy->getDescription() + "'"); + + (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[-2].ConstVector)); + delete (yyvsp[-5].TypeVal); delete (yyvsp[-2].ConstVector); + CHECK_FOR_ERROR + ;} + break; + + case 147: +#line 1539 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" + { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription()); + const StructType *STy = dyn_cast<StructType>((yyvsp[-4].TypeVal)->get()); + if (STy == 0) + GEN_ERROR("Cannot make struct constant with type: '" + + (*(yyvsp[-4].TypeVal))->getDescription() + "'!"); + + if (STy->getNumContainedTypes() != 0) + GEN_ERROR("Illegal number of initializers for structure type!"); + + // Check to ensure that Type is packed + if (!STy->isPacked()) + GEN_ERROR("Packed Initializer to unpacked type '" + STy->getDescription() + "'"); + + (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>()); + delete (yyvsp[-4].TypeVal); + CHECK_FOR_ERROR + ;} + break; + + case 148: +#line 1558 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -3803,8 +3907,8 @@ yyreduce: ;} break; - case 147: -#line 1518 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 149: +#line 1570 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -3814,8 +3918,8 @@ yyreduce: ;} break; - case 148: -#line 1525 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 150: +#line 1577 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -3881,8 +3985,8 @@ yyreduce: ;} break; - case 149: -#line 1588 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 151: +#line 1640 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -3895,8 +3999,8 @@ yyreduce: ;} break; - case 150: -#line 1598 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 152: +#line 1650 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -3909,8 +4013,8 @@ yyreduce: ;} break; - case 151: -#line 1608 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 153: +#line 1660 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // integral constants if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val))) GEN_ERROR("Constant value doesn't fit in type!"); @@ -3919,8 +4023,8 @@ yyreduce: ;} break; - case 152: -#line 1614 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 154: +#line 1666 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // integral constants if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val))) GEN_ERROR("Constant value doesn't fit in type!"); @@ -3929,24 +4033,24 @@ yyreduce: ;} break; - case 153: -#line 1620 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 155: +#line 1672 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Boolean constants - (yyval.ConstVal) = ConstantBool::getTrue(); + (yyval.ConstVal) = ConstantInt::getTrue(); CHECK_FOR_ERROR ;} break; - case 154: -#line 1624 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 156: +#line 1676 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Boolean constants - (yyval.ConstVal) = ConstantBool::getFalse(); + (yyval.ConstVal) = ConstantInt::getFalse(); CHECK_FOR_ERROR ;} break; - case 155: -#line 1628 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 157: +#line 1680 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Float & Double constants if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].FPVal))) GEN_ERROR("Floating point constant invalid for type!!"); @@ -3955,8 +4059,8 @@ yyreduce: ;} break; - case 156: -#line 1636 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 158: +#line 1688 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -3973,8 +4077,8 @@ yyreduce: ;} break; - case 157: -#line 1650 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 159: +#line 1702 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!isa<PointerType>((yyvsp[-2].ConstVal)->getType())) GEN_ERROR("GetElementPtr requires a pointer operand!"); @@ -3998,8 +4102,8 @@ yyreduce: ;} break; - case 158: -#line 1671 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 160: +#line 1723 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-5].ConstVal)->getType() != Type::BoolTy) GEN_ERROR("Select condition must be of boolean type!"); @@ -4010,8 +4114,8 @@ yyreduce: ;} break; - case 159: -#line 1679 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 161: +#line 1731 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("Binary operator types must match!"); @@ -4020,8 +4124,8 @@ yyreduce: ;} break; - case 160: -#line 1685 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 162: +#line 1737 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("Logical operator types must match!"); @@ -4035,8 +4139,8 @@ yyreduce: ;} break; - case 161: -#line 1696 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 163: +#line 1748 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("icmp operand types must match!"); @@ -4044,8 +4148,8 @@ yyreduce: ;} break; - case 162: -#line 1701 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 164: +#line 1753 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("fcmp operand types must match!"); @@ -4053,8 +4157,8 @@ yyreduce: ;} break; - case 163: -#line 1706 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 165: +#line 1758 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-1].ConstVal)->getType() != Type::Int8Ty) GEN_ERROR("Shift count for shift constant must be i8 type!"); @@ -4066,8 +4170,8 @@ yyreduce: ;} break; - case 164: -#line 1715 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 166: +#line 1767 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid extractelement operands!"); @@ -4076,8 +4180,8 @@ yyreduce: ;} break; - case 165: -#line 1721 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 167: +#line 1773 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid insertelement operands!"); @@ -4086,8 +4190,8 @@ yyreduce: ;} break; - case 166: -#line 1727 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 168: +#line 1779 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid shufflevector operands!"); @@ -4096,16 +4200,16 @@ yyreduce: ;} break; - case 167: -#line 1736 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 169: +#line 1788 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { ((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal)); CHECK_FOR_ERROR ;} break; - case 168: -#line 1740 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 170: +#line 1792 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ConstVector) = new std::vector<Constant*>(); (yyval.ConstVector)->push_back((yyvsp[0].ConstVal)); @@ -4113,18 +4217,18 @@ yyreduce: ;} break; - case 169: -#line 1748 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 171: +#line 1800 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; ;} break; - case 170: -#line 1748 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 172: +#line 1800 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; ;} break; - case 171: -#line 1759 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 173: +#line 1811 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule; CurModule.ModuleDone(); @@ -4132,8 +4236,8 @@ yyreduce: ;} break; - case 172: -#line 1764 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 174: +#line 1816 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule; CurModule.ModuleDone(); @@ -4141,40 +4245,40 @@ yyreduce: ;} break; - case 175: -#line 1777 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 177: +#line 1829 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CurFun.isDeclare = false ;} break; - case 176: -#line 1777 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 178: +#line 1829 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CurFun.FunctionDone(); CHECK_FOR_ERROR ;} break; - case 177: -#line 1781 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 179: +#line 1833 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CurFun.isDeclare = true; ;} break; - case 178: -#line 1781 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 180: +#line 1833 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 179: -#line 1784 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 181: +#line 1836 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 180: -#line 1787 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 182: +#line 1839 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Emit an error if there are any unresolved types left. if (!CurModule.LateResolveTypes.empty()) { @@ -4189,8 +4293,8 @@ yyreduce: ;} break; - case 181: -#line 1799 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 183: +#line 1851 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -4217,8 +4321,8 @@ yyreduce: ;} break; - case 182: -#line 1823 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 184: +#line 1875 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { ResolveTypeTo((yyvsp[-2].StrVal), (yyvsp[0].PrimType)); @@ -4232,8 +4336,8 @@ yyreduce: ;} break; - case 183: -#line 1834 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 185: +#line 1886 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { /* "Externally Visible" Linkage */ if ((yyvsp[0].ConstVal) == 0) GEN_ERROR("Global value initializer is not a constant!"); @@ -4243,15 +4347,15 @@ yyreduce: ;} break; - case 184: -#line 1840 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 186: +#line 1892 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; ;} break; - case 185: -#line 1843 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 187: +#line 1895 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].ConstVal) == 0) GEN_ERROR("Global value initializer is not a constant!"); @@ -4260,15 +4364,15 @@ yyreduce: ;} break; - case 186: -#line 1848 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 188: +#line 1900 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; ;} break; - case 187: -#line 1851 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 189: +#line 1903 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -4278,30 +4382,30 @@ yyreduce: ;} break; - case 188: -#line 1857 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 190: +#line 1909 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; CHECK_FOR_ERROR ;} break; - case 189: -#line 1861 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 191: +#line 1913 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 190: -#line 1864 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 192: +#line 1916 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 191: -#line 1870 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 193: +#line 1922 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm(); char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true); @@ -4316,26 +4420,26 @@ yyreduce: ;} break; - case 192: -#line 1883 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 194: +#line 1935 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Endianness) = Module::BigEndian; ;} break; - case 193: -#line 1884 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 195: +#line 1936 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Endianness) = Module::LittleEndian; ;} break; - case 194: -#line 1886 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 196: +#line 1938 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setEndianness((yyvsp[0].Endianness)); CHECK_FOR_ERROR ;} break; - case 195: -#line 1890 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 197: +#line 1942 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].UInt64Val) == 32) CurModule.CurrentModule->setPointerSize(Module::Pointer32); @@ -4347,24 +4451,24 @@ yyreduce: ;} break; - case 196: -#line 1899 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 198: +#line 1951 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); ;} break; - case 197: -#line 1903 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 199: +#line 1955 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); ;} break; - case 199: -#line 1910 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 201: +#line 1962 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4372,8 +4476,8 @@ yyreduce: ;} break; - case 200: -#line 1915 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 202: +#line 1967 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4381,20 +4485,20 @@ yyreduce: ;} break; - case 201: -#line 1920 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 203: +#line 1972 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 205: -#line 1930 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 207: +#line 1982 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; ;} break; - case 206: -#line 1932 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 208: +#line 1984 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -4407,8 +4511,8 @@ yyreduce: ;} break; - case 207: -#line 1942 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 209: +#line 1994 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -4421,16 +4525,16 @@ yyreduce: ;} break; - case 208: -#line 1953 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 210: +#line 2005 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = (yyvsp[0].ArgList); CHECK_FOR_ERROR ;} break; - case 209: -#line 1957 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 211: +#line 2009 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = (yyvsp[-2].ArgList); struct ArgListEntry E; @@ -4442,8 +4546,8 @@ yyreduce: ;} break; - case 210: -#line 1966 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 212: +#line 2018 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = new ArgListType; struct ArgListEntry E; @@ -4455,16 +4559,16 @@ yyreduce: ;} break; - case 211: -#line 1975 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 213: +#line 2027 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = 0; CHECK_FOR_ERROR ;} break; - case 212: -#line 1981 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 214: +#line 2033 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { UnEscapeLexed((yyvsp[-6].StrVal)); std::string FunctionName((yyvsp[-6].StrVal)); @@ -4570,8 +4674,8 @@ yyreduce: ;} break; - case 215: -#line 2087 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 217: +#line 2139 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = CurFun.CurrentFunction; @@ -4581,16 +4685,16 @@ yyreduce: ;} break; - case 218: -#line 2097 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 220: +#line 2149 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR ;} break; - case 219: -#line 2102 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 221: +#line 2154 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { CurFun.CurrentFunction->setLinkage((yyvsp[-1].Linkage)); (yyval.FunctionVal) = CurFun.CurrentFunction; @@ -4599,88 +4703,88 @@ yyreduce: ;} break; - case 220: -#line 2113 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 222: +#line 2165 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR ;} break; - case 221: -#line 2117 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 223: +#line 2169 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR ;} break; - case 222: -#line 2122 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 224: +#line 2174 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // A reference to a direct constant (yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val)); CHECK_FOR_ERROR ;} break; - case 223: -#line 2126 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 225: +#line 2178 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val)); CHECK_FOR_ERROR ;} break; - case 224: -#line 2130 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 226: +#line 2182 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Perhaps it's an FP constant? (yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal)); CHECK_FOR_ERROR ;} break; - case 225: -#line 2134 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 227: +#line 2186 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { - (yyval.ValIDVal) = ValID::create(ConstantBool::getTrue()); + (yyval.ValIDVal) = ValID::create(ConstantInt::getTrue()); CHECK_FOR_ERROR ;} break; - case 226: -#line 2138 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 228: +#line 2190 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { - (yyval.ValIDVal) = ValID::create(ConstantBool::getFalse()); + (yyval.ValIDVal) = ValID::create(ConstantInt::getFalse()); CHECK_FOR_ERROR ;} break; - case 227: -#line 2142 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 229: +#line 2194 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::createNull(); CHECK_FOR_ERROR ;} break; - case 228: -#line 2146 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 230: +#line 2198 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::createUndef(); CHECK_FOR_ERROR ;} break; - case 229: -#line 2150 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 231: +#line 2202 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // A vector zero constant. (yyval.ValIDVal) = ValID::createZeroInit(); CHECK_FOR_ERROR ;} break; - case 230: -#line 2154 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 232: +#line 2206 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized packed vector const Type *ETy = (*(yyvsp[-1].ConstVector))[0]->getType(); int NumElements = (yyvsp[-1].ConstVector)->size(); @@ -4708,16 +4812,16 @@ yyreduce: ;} break; - case 231: -#line 2179 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 233: +#line 2231 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal)); CHECK_FOR_ERROR ;} break; - case 232: -#line 2183 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 234: +#line 2235 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { char *End = UnEscapeLexed((yyvsp[-2].StrVal), true); std::string AsmStr = std::string((yyvsp[-2].StrVal), End); @@ -4730,24 +4834,24 @@ yyreduce: ;} break; - case 233: -#line 2197 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 235: +#line 2249 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Is it an integer reference...? (yyval.ValIDVal) = ValID::create((yyvsp[0].SIntVal)); CHECK_FOR_ERROR ;} break; - case 234: -#line 2201 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 236: +#line 2253 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Is it a named reference...? (yyval.ValIDVal) = ValID::create((yyvsp[0].StrVal)); CHECK_FOR_ERROR ;} break; - case 237: -#line 2213 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 239: +#line 2265 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -4757,24 +4861,24 @@ yyreduce: ;} break; - case 238: -#line 2222 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 240: +#line 2274 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR ;} break; - case 239: -#line 2226 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 241: +#line 2278 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Do not allow functions with 0 basic blocks (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR ;} break; - case 240: -#line 2235 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 242: +#line 2287 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal)); CHECK_FOR_ERROR @@ -4787,8 +4891,8 @@ yyreduce: ;} break; - case 241: -#line 2246 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 243: +#line 2298 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (CastInst *CI1 = dyn_cast<CastInst>((yyvsp[0].InstVal))) if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0))) @@ -4800,8 +4904,8 @@ yyreduce: ;} break; - case 242: -#line 2255 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 244: +#line 2307 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BasicBlockVal) = getBBVal(ValID::create((int)CurFun.NextBBNum++), true); CHECK_FOR_ERROR @@ -4816,8 +4920,8 @@ yyreduce: ;} break; - case 243: -#line 2267 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 245: +#line 2319 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BasicBlockVal) = getBBVal(ValID::create((yyvsp[0].StrVal)), true); CHECK_FOR_ERROR @@ -4832,24 +4936,24 @@ yyreduce: ;} break; - case 244: -#line 2280 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 246: +#line 2332 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Return with a result... (yyval.TermInstVal) = new ReturnInst((yyvsp[0].ValueVal)); CHECK_FOR_ERROR ;} break; - case 245: -#line 2284 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 247: +#line 2336 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Return with no result... (yyval.TermInstVal) = new ReturnInst(); CHECK_FOR_ERROR ;} break; - case 246: -#line 2288 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 248: +#line 2340 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Unconditional Branch... BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal)); CHECK_FOR_ERROR @@ -4857,8 +4961,8 @@ yyreduce: ;} break; - case 247: -#line 2293 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 249: +#line 2345 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { BasicBlock* tmpBBA = getBBVal((yyvsp[-3].ValIDVal)); CHECK_FOR_ERROR @@ -4870,8 +4974,8 @@ yyreduce: ;} break; - case 248: -#line 2302 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 250: +#line 2354 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { Value* tmpVal = getVal((yyvsp[-7].PrimType), (yyvsp[-6].ValIDVal)); CHECK_FOR_ERROR @@ -4893,8 +4997,8 @@ yyreduce: ;} break; - case 249: -#line 2321 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 251: +#line 2373 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { Value* tmpVal = getVal((yyvsp[-6].PrimType), (yyvsp[-5].ValIDVal)); CHECK_FOR_ERROR @@ -4906,8 +5010,8 @@ yyreduce: ;} break; - case 250: -#line 2331 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 252: +#line 2383 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Handle the short syntax @@ -4976,24 +5080,24 @@ yyreduce: ;} break; - case 251: -#line 2397 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 253: +#line 2449 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TermInstVal) = new UnwindInst(); CHECK_FOR_ERROR ;} break; - case 252: -#line 2401 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 254: +#line 2453 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TermInstVal) = new UnreachableInst(); CHECK_FOR_ERROR ;} break; - case 253: -#line 2408 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 255: +#line 2460 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.JumpTable) = (yyvsp[-5].JumpTable); Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal))); @@ -5007,8 +5111,8 @@ yyreduce: ;} break; - case 254: -#line 2419 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 256: +#line 2471 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >(); Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal))); @@ -5023,8 +5127,8 @@ yyreduce: ;} break; - case 255: -#line 2432 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 257: +#line 2484 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Is this definition named?? if so, assign the name... setValueName((yyvsp[0].InstVal), (yyvsp[-1].StrVal)); @@ -5035,8 +5139,8 @@ yyreduce: ;} break; - case 256: -#line 2441 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 258: +#line 2493 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Used for PHI nodes if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-5].TypeVal))->getDescription()); @@ -5050,8 +5154,8 @@ yyreduce: ;} break; - case 257: -#line 2452 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 259: +#line 2504 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.PHIList) = (yyvsp[-6].PHIList); Value* tmpVal = getVal((yyvsp[-6].PHIList)->front().first->getType(), (yyvsp[-3].ValIDVal)); @@ -5062,8 +5166,8 @@ yyreduce: ;} break; - case 258: -#line 2462 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 260: +#line 2514 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -5074,8 +5178,8 @@ yyreduce: ;} break; - case 259: -#line 2470 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 261: +#line 2522 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -5086,18 +5190,18 @@ yyreduce: ;} break; - case 260: -#line 2478 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 262: +#line 2530 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueRefList) = new ValueRefList(); ;} break; - case 261: -#line 2481 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 263: +#line 2533 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueList) = new std::vector<Value*>(); ;} break; - case 262: -#line 2482 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 264: +#line 2534 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueList) = (yyvsp[-2].ValueList); (yyval.ValueList)->push_back((yyvsp[0].ValueVal)); @@ -5105,24 +5209,24 @@ yyreduce: ;} break; - case 263: -#line 2489 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 265: +#line 2541 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR ;} break; - case 264: -#line 2493 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 266: +#line 2545 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR ;} break; - case 265: -#line 2498 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 267: +#line 2550 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); @@ -5146,8 +5250,8 @@ yyreduce: ;} break; - case 266: -#line 2519 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 268: +#line 2571 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); @@ -5167,8 +5271,8 @@ yyreduce: ;} break; - case 267: -#line 2536 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 269: +#line 2588 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); @@ -5184,8 +5288,8 @@ yyreduce: ;} break; - case 268: -#line 2549 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 270: +#line 2601 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); @@ -5201,13 +5305,13 @@ yyreduce: ;} break; - case 269: -#line 2562 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 271: +#line 2614 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { cerr << "WARNING: Use of eliminated 'not' instruction:" << " Replacing with 'xor'.\n"; - Value *Ones = ConstantIntegral::getAllOnesValue((yyvsp[0].ValueVal)->getType()); + Value *Ones = ConstantInt::getAllOnesValue((yyvsp[0].ValueVal)->getType()); if (Ones == 0) GEN_ERROR("Expected integral type for not instruction!"); @@ -5218,8 +5322,8 @@ yyreduce: ;} break; - case 270: -#line 2575 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 272: +#line 2627 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[0].ValueVal)->getType() != Type::Int8Ty) GEN_ERROR("Shift amount must be i8 type!"); @@ -5231,8 +5335,8 @@ yyreduce: ;} break; - case 271: -#line 2584 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 273: +#line 2636 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -5248,8 +5352,8 @@ yyreduce: ;} break; - case 272: -#line 2597 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 274: +#line 2649 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[-4].ValueVal)->getType() != Type::BoolTy) GEN_ERROR("select condition must be boolean!"); @@ -5260,8 +5364,8 @@ yyreduce: ;} break; - case 273: -#line 2605 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 275: +#line 2657 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); @@ -5271,8 +5375,8 @@ yyreduce: ;} break; - case 274: -#line 2612 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 276: +#line 2664 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid extractelement operands!"); @@ -5281,8 +5385,8 @@ yyreduce: ;} break; - case 275: -#line 2618 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 277: +#line 2670 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid insertelement operands!"); @@ -5291,8 +5395,8 @@ yyreduce: ;} break; - case 276: -#line 2624 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 278: +#line 2676 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid shufflevector operands!"); @@ -5301,8 +5405,8 @@ yyreduce: ;} break; - case 277: -#line 2630 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 279: +#line 2682 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { const Type *Ty = (yyvsp[0].PHIList)->front().first->getType(); if (!Ty->isFirstClassType()) @@ -5320,8 +5424,8 @@ yyreduce: ;} break; - case 278: -#line 2646 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 280: +#line 2698 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { // Handle the short syntax @@ -5386,32 +5490,32 @@ yyreduce: ;} break; - case 279: -#line 2708 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 281: +#line 2760 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.InstVal) = (yyvsp[0].InstVal); CHECK_FOR_ERROR ;} break; - case 280: -#line 2713 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 282: +#line 2765 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR ;} break; - case 281: -#line 2717 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 283: +#line 2769 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR ;} break; - case 282: -#line 2724 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 284: +#line 2776 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5421,8 +5525,8 @@ yyreduce: ;} break; - case 283: -#line 2731 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 285: +#line 2783 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription()); @@ -5433,8 +5537,8 @@ yyreduce: ;} break; - case 284: -#line 2739 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 286: +#line 2791 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5444,8 +5548,8 @@ yyreduce: ;} break; - case 285: -#line 2746 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 287: +#line 2798 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription()); @@ -5456,8 +5560,8 @@ yyreduce: ;} break; - case 286: -#line 2754 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 288: +#line 2806 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!isa<PointerType>((yyvsp[0].ValueVal)->getType())) GEN_ERROR("Trying to free nonpointer type " + @@ -5467,8 +5571,8 @@ yyreduce: ;} break; - case 287: -#line 2762 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 289: +#line 2814 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5485,8 +5589,8 @@ yyreduce: ;} break; - case 288: -#line 2776 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 290: +#line 2828 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); @@ -5506,8 +5610,8 @@ yyreduce: ;} break; - case 289: -#line 2793 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" + case 291: +#line 2845 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); @@ -5530,7 +5634,7 @@ yyreduce: } /* Line 1126 of yacc.c. */ -#line 5534 "llvmAsmParser.tab.c" +#line 5638 "llvmAsmParser.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -5798,7 +5902,7 @@ yyreturn: } -#line 2810 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 2862 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" // common code from the two 'RunVMAsmParser' functions diff --git a/lib/AsmParser/llvmAsmParser.h.cvs b/lib/AsmParser/llvmAsmParser.h.cvs index d7451e6..9b85535 100644 --- a/lib/AsmParser/llvmAsmParser.h.cvs +++ b/lib/AsmParser/llvmAsmParser.h.cvs @@ -303,7 +303,7 @@ #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 876 "/proj/llvm/llvm-3/lib/AsmParser/llvmAsmParser.y" +#line 876 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/lib/AsmParser/llvmAsmParser.y" typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index 2fd5f5c..6dfb439 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -1670,11 +1670,11 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr CHECK_FOR_ERROR } | BOOL TRUETOK { // Boolean constants - $$ = ConstantBool::getTrue(); + $$ = ConstantInt::getTrue(); CHECK_FOR_ERROR } | BOOL FALSETOK { // Boolean constants - $$ = ConstantBool::getFalse(); + $$ = ConstantInt::getFalse(); CHECK_FOR_ERROR } | FPType FPVAL { // Float & Double constants @@ -2184,11 +2184,11 @@ ConstValueRef : ESINT64VAL { // A reference to a direct constant CHECK_FOR_ERROR } | TRUETOK { - $$ = ValID::create(ConstantBool::getTrue()); + $$ = ValID::create(ConstantInt::getTrue()); CHECK_FOR_ERROR } | FALSETOK { - $$ = ValID::create(ConstantBool::getFalse()); + $$ = ValID::create(ConstantInt::getFalse()); CHECK_FOR_ERROR } | NULL_TOK { @@ -2615,7 +2615,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { cerr << "WARNING: Use of eliminated 'not' instruction:" << " Replacing with 'xor'.\n"; - Value *Ones = ConstantIntegral::getAllOnesValue($2->getType()); + Value *Ones = ConstantInt::getAllOnesValue($2->getType()); if (Ones == 0) GEN_ERROR("Expected integral type for not instruction!"); diff --git a/lib/AsmParser/llvmAsmParser.y.cvs b/lib/AsmParser/llvmAsmParser.y.cvs index 192b560..6dfb439 100644 --- a/lib/AsmParser/llvmAsmParser.y.cvs +++ b/lib/AsmParser/llvmAsmParser.y.cvs @@ -1484,6 +1484,10 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr "' for element #" + utostr(i) + " of structure initializer!"); + // Check to ensure that Type is not packed + if (STy->isPacked()) + GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'"); + $$ = ConstantStruct::get(STy, *$3); delete $1; delete $3; CHECK_FOR_ERROR @@ -1499,6 +1503,54 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr if (STy->getNumContainedTypes() != 0) GEN_ERROR("Illegal number of initializers for structure type!"); + // Check to ensure that Type is not packed + if (STy->isPacked()) + GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'"); + + $$ = ConstantStruct::get(STy, std::vector<Constant*>()); + delete $1; + CHECK_FOR_ERROR + } + | Types '<' '{' ConstVector '}' '>' { + const StructType *STy = dyn_cast<StructType>($1->get()); + if (STy == 0) + GEN_ERROR("Cannot make struct constant with type: '" + + (*$1)->getDescription() + "'!"); + + if ($4->size() != STy->getNumContainedTypes()) + GEN_ERROR("Illegal number of initializers for structure type!"); + + // Check to ensure that constants are compatible with the type initializer! + for (unsigned i = 0, e = $4->size(); i != e; ++i) + if ((*$4)[i]->getType() != STy->getElementType(i)) + GEN_ERROR("Expected type '" + + STy->getElementType(i)->getDescription() + + "' for element #" + utostr(i) + + " of structure initializer!"); + + // Check to ensure that Type is packed + if (!STy->isPacked()) + GEN_ERROR("Packed Initializer to unpacked type '" + STy->getDescription() + "'"); + + $$ = ConstantStruct::get(STy, *$4); + delete $1; delete $4; + CHECK_FOR_ERROR + } + | Types '<' '{' '}' '>' { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); + const StructType *STy = dyn_cast<StructType>($1->get()); + if (STy == 0) + GEN_ERROR("Cannot make struct constant with type: '" + + (*$1)->getDescription() + "'!"); + + if (STy->getNumContainedTypes() != 0) + GEN_ERROR("Illegal number of initializers for structure type!"); + + // Check to ensure that Type is packed + if (!STy->isPacked()) + GEN_ERROR("Packed Initializer to unpacked type '" + STy->getDescription() + "'"); + $$ = ConstantStruct::get(STy, std::vector<Constant*>()); delete $1; CHECK_FOR_ERROR @@ -1618,11 +1670,11 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr CHECK_FOR_ERROR } | BOOL TRUETOK { // Boolean constants - $$ = ConstantBool::getTrue(); + $$ = ConstantInt::getTrue(); CHECK_FOR_ERROR } | BOOL FALSETOK { // Boolean constants - $$ = ConstantBool::getFalse(); + $$ = ConstantInt::getFalse(); CHECK_FOR_ERROR } | FPType FPVAL { // Float & Double constants @@ -2132,11 +2184,11 @@ ConstValueRef : ESINT64VAL { // A reference to a direct constant CHECK_FOR_ERROR } | TRUETOK { - $$ = ValID::create(ConstantBool::getTrue()); + $$ = ValID::create(ConstantInt::getTrue()); CHECK_FOR_ERROR } | FALSETOK { - $$ = ValID::create(ConstantBool::getFalse()); + $$ = ValID::create(ConstantInt::getFalse()); CHECK_FOR_ERROR } | NULL_TOK { @@ -2563,7 +2615,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { cerr << "WARNING: Use of eliminated 'not' instruction:" << " Replacing with 'xor'.\n"; - Value *Ones = ConstantIntegral::getAllOnesValue($2->getType()); + Value *Ones = ConstantInt::getAllOnesValue($2->getType()); if (Ones == 0) GEN_ERROR("Expected integral type for not instruction!"); diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp index b1e4bf6..575b957 100644 --- a/lib/Bytecode/Reader/Reader.cpp +++ b/lib/Bytecode/Reader/Reader.cpp @@ -1403,7 +1403,7 @@ Value *BytecodeReader::ParseConstantPoolValue(unsigned TypeID) { unsigned Val = read_vbr_uint(); if (Val != 0 && Val != 1) error("Invalid boolean value read."); - Result = ConstantBool::get(Val == 1); + Result = ConstantInt::get(Val == 1); if (Handler) Handler->handleConstantValue(Result); break; } diff --git a/lib/Bytecode/Writer/Writer.cpp b/lib/Bytecode/Writer/Writer.cpp index 37e4abf..88745ea 100644 --- a/lib/Bytecode/Writer/Writer.cpp +++ b/lib/Bytecode/Writer/Writer.cpp @@ -322,7 +322,7 @@ void BytecodeWriter::outputConstant(const Constant *CPV) { switch (CPV->getType()->getTypeID()) { case Type::BoolTyID: // Boolean Types - if (cast<ConstantBool>(CPV)->getValue()) + if (cast<ConstantInt>(CPV)->getBoolValue()) output_vbr(1U); else output_vbr(0U); diff --git a/lib/CodeGen/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter.cpp index 3f4bfd7..339556b 100644 --- a/lib/CodeGen/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter.cpp @@ -388,11 +388,11 @@ void AsmPrinter::EmitZeros(uint64_t NumZeros) const { void AsmPrinter::EmitConstantValueOnly(const Constant *CV) { if (CV->isNullValue() || isa<UndefValue>(CV)) O << "0"; - else if (const ConstantBool *CB = dyn_cast<ConstantBool>(CV)) { - assert(CB->getValue()); - O << "1"; - } else if (const ConstantInt *CI = dyn_cast<ConstantInt>(CV)) { - O << CI->getSExtValue(); + else if (const ConstantInt *CI = dyn_cast<ConstantInt>(CV)) { + if (CI->getType() == Type::BoolTy) { + assert(CI->getBoolValue()); + O << "1"; + } else O << CI->getSExtValue(); } else if (const GlobalValue *GV = dyn_cast<GlobalValue>(CV)) { // This is a constant address for a global variable or function. Use the // name of the variable or function as the address value, possibly diff --git a/lib/CodeGen/MachineDebugInfo.cpp b/lib/CodeGen/MachineDebugInfo.cpp index 041a88c..5d9de9f 100644 --- a/lib/CodeGen/MachineDebugInfo.cpp +++ b/lib/CodeGen/MachineDebugInfo.cpp @@ -211,7 +211,7 @@ public: } virtual void Apply(bool &Field) { Constant *C = CI->getOperand(I++); - Field = cast<ConstantBool>(C)->getValue(); + Field = cast<ConstantInt>(C)->getBoolValue(); } virtual void Apply(std::string &Field) { Constant *C = CI->getOperand(I++); @@ -276,7 +276,7 @@ public: Elements.push_back(ConstantInt::get(Type::Int64Ty, uint64_t(Field))); } virtual void Apply(bool &Field) { - Elements.push_back(ConstantBool::get(Field)); + Elements.push_back(ConstantInt::get(Field)); } virtual void Apply(std::string &Field) { Elements.push_back(SR.getString(Field)); @@ -426,7 +426,7 @@ public: } virtual void Apply(bool &Field) { Constant *C = CI->getOperand(I++); - IsValid = IsValid && isa<ConstantBool>(C); + IsValid = IsValid && isa<ConstantInt>(C) && C->getType() == Type::BoolTy; } virtual void Apply(std::string &Field) { Constant *C = CI->getOperand(I++); diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index ebfa50c..7e6a75d 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -649,7 +649,7 @@ SDOperand SelectionDAGLowering::getValue(const Value *V) { return N = DAG.getNode(ISD::VBUILD_VECTOR,MVT::Vector,&Ops[0],Ops.size()); } else { // Canonicalize all constant ints to be unsigned. - return N = DAG.getConstant(cast<ConstantIntegral>(C)->getZExtValue(),VT); + return N = DAG.getConstant(cast<ConstantInt>(C)->getZExtValue(),VT); } } @@ -904,7 +904,7 @@ void SelectionDAGLowering::FindMergedConditions(Value *Cond, } // Create a CaseBlock record representing this branch. - SelectionDAGISel::CaseBlock CB(ISD::SETEQ, Cond, ConstantBool::getTrue(), + SelectionDAGISel::CaseBlock CB(ISD::SETEQ, Cond, ConstantInt::getTrue(), TBB, FBB, CurBB); SwitchCases.push_back(CB); return; @@ -1043,7 +1043,7 @@ void SelectionDAGLowering::visitBr(BranchInst &I) { } // Create a CaseBlock record representing this branch. - SelectionDAGISel::CaseBlock CB(ISD::SETEQ, CondVal, ConstantBool::getTrue(), + SelectionDAGISel::CaseBlock CB(ISD::SETEQ, CondVal, ConstantInt::getTrue(), Succ0MBB, Succ1MBB, CurMBB); // Use visitSwitchCase to actually insert the fast branch sequence for this // cond branch. @@ -1058,9 +1058,9 @@ void SelectionDAGLowering::visitSwitchCase(SelectionDAGISel::CaseBlock &CB) { // Build the setcc now, fold "(X == true)" to X and "(X == false)" to !X to // handle common cases produced by branch lowering. - if (CB.CmpRHS == ConstantBool::getTrue() && CB.CC == ISD::SETEQ) + if (CB.CmpRHS == ConstantInt::getTrue() && CB.CC == ISD::SETEQ) Cond = CondLHS; - else if (CB.CmpRHS == ConstantBool::getFalse() && CB.CC == ISD::SETEQ) { + else if (CB.CmpRHS == ConstantInt::getFalse() && CB.CC == ISD::SETEQ) { SDOperand True = DAG.getConstant(1, CondLHS.getValueType()); Cond = DAG.getNode(ISD::XOR, CondLHS.getValueType(), CondLHS, True); } else @@ -1206,8 +1206,8 @@ void SelectionDAGLowering::visitSwitch(SwitchInst &I) { if ((TLI.isOperationLegal(ISD::BR_JT, MVT::Other) || TLI.isOperationLegal(ISD::BRIND, MVT::Other)) && Cases.size() > 5) { - uint64_t First =cast<ConstantIntegral>(Cases.front().first)->getZExtValue(); - uint64_t Last = cast<ConstantIntegral>(Cases.back().first)->getZExtValue(); + uint64_t First =cast<ConstantInt>(Cases.front().first)->getZExtValue(); + uint64_t Last = cast<ConstantInt>(Cases.back().first)->getZExtValue(); double Density = (double)Cases.size() / (double)((Last - First) + 1ULL); if (Density >= 0.3125) { @@ -1256,7 +1256,7 @@ void SelectionDAGLowering::visitSwitch(SwitchInst &I) { std::vector<MachineBasicBlock*> DestBBs; uint64_t TEI = First; for (CaseItr ii = Cases.begin(), ee = Cases.end(); ii != ee; ++TEI) - if (cast<ConstantIntegral>(ii->first)->getZExtValue() == TEI) { + if (cast<ConstantInt>(ii->first)->getZExtValue() == TEI) { DestBBs.push_back(ii->second); ++ii; } else { @@ -1338,8 +1338,8 @@ void SelectionDAGLowering::visitSwitch(SwitchInst &I) { // rather than creating a leaf node for it. if ((LHSR.second - LHSR.first) == 1 && LHSR.first->first == CR.GE && - cast<ConstantIntegral>(C)->getZExtValue() == - (cast<ConstantIntegral>(CR.GE)->getZExtValue() + 1ULL)) { + cast<ConstantInt>(C)->getZExtValue() == + (cast<ConstantInt>(CR.GE)->getZExtValue() + 1ULL)) { TrueBB = LHSR.first->second; } else { TrueBB = new MachineBasicBlock(LLVMBB); @@ -1352,8 +1352,8 @@ void SelectionDAGLowering::visitSwitch(SwitchInst &I) { // is CR.LT - 1, then we can branch directly to the target block for // the current Case Value, rather than emitting a RHS leaf node for it. if ((RHSR.second - RHSR.first) == 1 && CR.LT && - cast<ConstantIntegral>(RHSR.first->first)->getZExtValue() == - (cast<ConstantIntegral>(CR.LT)->getZExtValue() - 1ULL)) { + cast<ConstantInt>(RHSR.first->first)->getZExtValue() == + (cast<ConstantInt>(CR.LT)->getZExtValue() - 1ULL)) { FalseBB = RHSR.first->second; } else { FalseBB = new MachineBasicBlock(LLVMBB); diff --git a/lib/ExecutionEngine/ExecutionEngine.cpp b/lib/ExecutionEngine/ExecutionEngine.cpp index 6903541..7a380bb 100644 --- a/lib/ExecutionEngine/ExecutionEngine.cpp +++ b/lib/ExecutionEngine/ExecutionEngine.cpp @@ -399,7 +399,7 @@ GenericValue ExecutionEngine::getConstantValue(const Constant *C) { switch (C->getType()->getTypeID()) { #define GET_CONST_VAL(TY, CTY, CLASS, GETMETH) \ case Type::TY##TyID: Result.TY##Val = (CTY)cast<CLASS>(C)->GETMETH(); break - GET_CONST_VAL(Bool , bool , ConstantBool, getValue); + GET_CONST_VAL(Bool , bool , ConstantInt, getBoolValue); GET_CONST_VAL(Int8 , unsigned char , ConstantInt, getZExtValue); GET_CONST_VAL(Int16 , unsigned short, ConstantInt, getZExtValue); GET_CONST_VAL(Int32 , unsigned int , ConstantInt, getZExtValue); diff --git a/lib/ExecutionEngine/JIT/JIT.cpp b/lib/ExecutionEngine/JIT/JIT.cpp index f27af51..bfe801f 100644 --- a/lib/ExecutionEngine/JIT/JIT.cpp +++ b/lib/ExecutionEngine/JIT/JIT.cpp @@ -191,7 +191,7 @@ GenericValue JIT::runFunction(Function *F, const GenericValue &AV = ArgValues[i]; switch (ArgTy->getTypeID()) { default: assert(0 && "Unknown argument type for function call!"); - case Type::BoolTyID: C = ConstantBool::get(AV.BoolVal); break; + case Type::BoolTyID: C = ConstantInt::get(AV.BoolVal); break; case Type::Int8TyID: C = ConstantInt::get(ArgTy, AV.Int8Val); break; case Type::Int16TyID: C = ConstantInt::get(ArgTy, AV.Int16Val); break; case Type::Int32TyID: C = ConstantInt::get(ArgTy, AV.Int32Val); break; diff --git a/lib/Support/ConstantRange.cpp b/lib/Support/ConstantRange.cpp index a8ffa58..1d49e22 100644 --- a/lib/Support/ConstantRange.cpp +++ b/lib/Support/ConstantRange.cpp @@ -30,9 +30,9 @@ #include <ostream> using namespace llvm; -static ConstantIntegral *getMaxValue(const Type *Ty, bool isSigned = false) { +static ConstantInt *getMaxValue(const Type *Ty, bool isSigned = false) { if (Ty == Type::BoolTy) - return ConstantBool::getTrue(); + return ConstantInt::getTrue(); if (Ty->isInteger()) { if (isSigned) { // Calculate 011111111111111... @@ -47,9 +47,9 @@ static ConstantIntegral *getMaxValue(const Type *Ty, bool isSigned = false) { } // Static constructor to create the minimum constant for an integral type... -static ConstantIntegral *getMinValue(const Type *Ty, bool isSigned = false) { +static ConstantInt *getMinValue(const Type *Ty, bool isSigned = false) { if (Ty == Type::BoolTy) - return ConstantBool::getFalse(); + return ConstantInt::getFalse(); if (Ty->isInteger()) { if (isSigned) { // Calculate 1111111111000000000000 @@ -62,37 +62,37 @@ static ConstantIntegral *getMinValue(const Type *Ty, bool isSigned = false) { } return 0; } -static ConstantIntegral *Next(ConstantIntegral *CI) { - if (ConstantBool *CB = dyn_cast<ConstantBool>(CI)) - return ConstantBool::get(!CB->getValue()); +static ConstantInt *Next(ConstantInt *CI) { + if (CI->getType() == Type::BoolTy) + return ConstantInt::get(!CI->getBoolValue()); Constant *Result = ConstantExpr::getAdd(CI, ConstantInt::get(CI->getType(), 1)); - return cast<ConstantIntegral>(Result); + return cast<ConstantInt>(Result); } -static bool LT(ConstantIntegral *A, ConstantIntegral *B, bool isSigned) { +static bool LT(ConstantInt *A, ConstantInt *B, bool isSigned) { Constant *C = ConstantExpr::getICmp( (isSigned ? ICmpInst::ICMP_SLT : ICmpInst::ICMP_ULT), A, B); - assert(isa<ConstantBool>(C) && "Constant folding of integrals not impl??"); - return cast<ConstantBool>(C)->getValue(); + assert(isa<ConstantInt>(C) && "Constant folding of integrals not impl??"); + return cast<ConstantInt>(C)->getBoolValue(); } -static bool LTE(ConstantIntegral *A, ConstantIntegral *B, bool isSigned) { +static bool LTE(ConstantInt *A, ConstantInt *B, bool isSigned) { Constant *C = ConstantExpr::getICmp( (isSigned ? ICmpInst::ICMP_SLE : ICmpInst::ICMP_ULE), A, B); - assert(isa<ConstantBool>(C) && "Constant folding of integrals not impl??"); - return cast<ConstantBool>(C)->getValue(); + assert(isa<ConstantInt>(C) && "Constant folding of integrals not impl??"); + return cast<ConstantInt>(C)->getBoolValue(); } -static bool GT(ConstantIntegral *A, ConstantIntegral *B, bool isSigned) { +static bool GT(ConstantInt *A, ConstantInt *B, bool isSigned) { return LT(B, A, isSigned); } -static ConstantIntegral *Min(ConstantIntegral *A, ConstantIntegral *B, +static ConstantInt *Min(ConstantInt *A, ConstantInt *B, bool isSigned) { return LT(A, B, isSigned) ? A : B; } -static ConstantIntegral *Max(ConstantIntegral *A, ConstantIntegral *B, +static ConstantInt *Max(ConstantInt *A, ConstantInt *B, bool isSigned) { return GT(A, B, isSigned) ? A : B; } @@ -111,14 +111,14 @@ ConstantRange::ConstantRange(const Type *Ty, bool Full) { /// Initialize a range to hold the single specified value. /// ConstantRange::ConstantRange(Constant *V) - : Lower(cast<ConstantIntegral>(V)), Upper(Next(cast<ConstantIntegral>(V))) { } + : Lower(cast<ConstantInt>(V)), Upper(Next(cast<ConstantInt>(V))) { } /// Initialize a range of values explicitly... this will assert out if /// Lower==Upper and Lower != Min or Max for its type (or if the two constants /// have different types) /// ConstantRange::ConstantRange(Constant *L, Constant *U) - : Lower(cast<ConstantIntegral>(L)), Upper(cast<ConstantIntegral>(U)) { + : Lower(cast<ConstantInt>(L)), Upper(cast<ConstantInt>(U)) { assert(Lower->getType() == Upper->getType() && "Incompatible types for ConstantRange!"); @@ -130,7 +130,7 @@ ConstantRange::ConstantRange(Constant *L, Constant *U) /// Initialize a set of values that all satisfy the condition with C. /// -ConstantRange::ConstantRange(unsigned short ICmpOpcode, ConstantIntegral *C) { +ConstantRange::ConstantRange(unsigned short ICmpOpcode, ConstantInt *C) { switch (ICmpOpcode) { default: assert(0 && "Invalid ICmp opcode to ConstantRange ctor!"); case ICmpInst::ICMP_EQ: Lower = C; Upper = Next(C); return; @@ -195,7 +195,7 @@ bool ConstantRange::isWrappedSet(bool isSigned) const { /// getSingleElement - If this set contains a single element, return it, /// otherwise return null. -ConstantIntegral *ConstantRange::getSingleElement() const { +ConstantInt *ConstantRange::getSingleElement() const { if (Upper == Next(Lower)) // Is it a single element range? return Lower; return 0; @@ -292,8 +292,8 @@ ConstantRange ConstantRange::intersectWith(const ConstantRange &CR, if (!isWrappedSet(isSigned)) { if (!CR.isWrappedSet(isSigned)) { - ConstantIntegral *L = Max(Lower, CR.Lower, isSigned); - ConstantIntegral *U = Min(Upper, CR.Upper, isSigned); + ConstantInt *L = Max(Lower, CR.Lower, isSigned); + ConstantInt *U = Min(Upper, CR.Upper, isSigned); if (LT(L, U, isSigned)) // If range isn't empty... return ConstantRange(L, U); @@ -306,8 +306,8 @@ ConstantRange ConstantRange::intersectWith(const ConstantRange &CR, return intersect1Wrapped(*this, CR, isSigned); else { // Both ranges are wrapped... - ConstantIntegral *L = Max(Lower, CR.Lower, isSigned); - ConstantIntegral *U = Min(Upper, CR.Upper, isSigned); + ConstantInt *L = Max(Lower, CR.Lower, isSigned); + ConstantInt *U = Min(Upper, CR.Upper, isSigned); return ConstantRange(L, U); } } diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp index 55fade5..9517134 100644 --- a/lib/Target/CBackend/CBackend.cpp +++ b/lib/Target/CBackend/CBackend.cpp @@ -826,22 +826,21 @@ void CWriter::printConstant(Constant *CPV) { return; } - if (ConstantBool *CB = dyn_cast<ConstantBool>(CPV)) { - Out << (CB->getValue() ? '1' : '0') ; - return; - } - if (ConstantInt *CI = dyn_cast<ConstantInt>(CPV)) { const Type* Ty = CI->getType(); - Out << "(("; - printPrimitiveType(Out, Ty, false) << ')'; - if (CI->isMinValue(true)) - Out << CI->getZExtValue() << 'u'; - else - Out << CI->getSExtValue(); - if (Ty->getPrimitiveSizeInBits() > 32) - Out << "ll"; - Out << ')'; + if (Ty == Type::BoolTy) + Out << (CI->getBoolValue() ? '1' : '0') ; + else { + Out << "(("; + printPrimitiveType(Out, Ty, false) << ')'; + if (CI->isMinValue(true)) + Out << CI->getZExtValue() << 'u'; + else + Out << CI->getSExtValue(); + if (Ty->getPrimitiveSizeInBits() > 32) + Out << "ll"; + Out << ')'; + } return; } diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp index f25621e..c1944db 100644 --- a/lib/Transforms/IPO/GlobalOpt.cpp +++ b/lib/Transforms/IPO/GlobalOpt.cpp @@ -711,7 +711,7 @@ static GlobalVariable *OptimizeGlobalAddressOfMalloc(GlobalVariable *GV, // keep track of whether the global was initialized yet or not. GlobalVariable *InitBool = new GlobalVariable(Type::BoolTy, false, GlobalValue::InternalLinkage, - ConstantBool::getFalse(), GV->getName()+".init"); + ConstantInt::getFalse(), GV->getName()+".init"); bool InitBoolUsed = false; // Loop over all uses of GV, processing them in turn. @@ -731,7 +731,7 @@ static GlobalVariable *OptimizeGlobalAddressOfMalloc(GlobalVariable *GV, default: assert(0 && "Unknown ICmp Predicate!"); case ICmpInst::ICMP_ULT: case ICmpInst::ICMP_SLT: - LV = ConstantBool::getFalse(); // X < null -> always false + LV = ConstantInt::getFalse(); // X < null -> always false break; case ICmpInst::ICMP_ULE: case ICmpInst::ICMP_SLE: @@ -753,7 +753,7 @@ static GlobalVariable *OptimizeGlobalAddressOfMalloc(GlobalVariable *GV, } else { StoreInst *SI = cast<StoreInst>(GV->use_back()); // The global is initialized when the store to it occurs. - new StoreInst(ConstantBool::getTrue(), InitBool, SI); + new StoreInst(ConstantInt::getTrue(), InitBool, SI); SI->eraseFromParent(); } @@ -1140,7 +1140,7 @@ static bool OptimizeOnceStoredGlobal(GlobalVariable *GV, Value *StoredOnceVal, static void ShrinkGlobalToBoolean(GlobalVariable *GV, Constant *OtherVal) { // Create the new global, initializing it to false. GlobalVariable *NewGV = new GlobalVariable(Type::BoolTy, false, - GlobalValue::InternalLinkage, ConstantBool::getFalse(), + GlobalValue::InternalLinkage, ConstantInt::getFalse(), GV->getName()+".b"); GV->getParent()->getGlobalList().insert(GV, NewGV); @@ -1161,7 +1161,7 @@ static void ShrinkGlobalToBoolean(GlobalVariable *GV, Constant *OtherVal) { // Only do this if we weren't storing a loaded value. Value *StoreVal; if (StoringOther || SI->getOperand(0) == InitVal) - StoreVal = ConstantBool::get(StoringOther); + StoreVal = ConstantInt::get(StoringOther); else { // Otherwise, we are storing a previously loaded copy. To do this, // change the copy from copying the original value to just copying the @@ -1797,10 +1797,13 @@ static bool EvaluateFunction(Function *F, Constant *&RetVal, if (BI->isUnconditional()) { NewBB = BI->getSuccessor(0); } else { - ConstantBool *Cond = - dyn_cast<ConstantBool>(getVal(Values, BI->getCondition())); - if (!Cond) return false; // Cannot determine. - NewBB = BI->getSuccessor(!Cond->getValue()); + ConstantInt *Cond = + dyn_cast<ConstantInt>(getVal(Values, BI->getCondition())); + + // Cannot determine. + if (!Cond || Cond->getType() != Type::BoolTy) + return false; + NewBB = BI->getSuccessor(!Cond->getBoolValue()); } } else if (SwitchInst *SI = dyn_cast<SwitchInst>(CurInst)) { ConstantInt *Val = diff --git a/lib/Transforms/Instrumentation/RSProfiling.cpp b/lib/Transforms/Instrumentation/RSProfiling.cpp index e70a2cb..5c0aa36 100644 --- a/lib/Transforms/Instrumentation/RSProfiling.cpp +++ b/lib/Transforms/Instrumentation/RSProfiling.cpp @@ -460,7 +460,7 @@ void ProfilerRS::ProcessBackEdge(BasicBlock* src, BasicBlock* dst, Function& F) //b: new BranchInst(cast<BasicBlock>(Translate(dst)), bbC); new BranchInst(dst, cast<BasicBlock>(Translate(dst)), - ConstantBool::get(true), bbCp); + ConstantInt::get(true), bbCp); //c: { TerminatorInst* iB = src->getTerminator(); @@ -516,7 +516,7 @@ bool ProfilerRS::runOnFunction(Function& F) { TerminatorInst* T = F.getEntryBlock().getTerminator(); ReplaceInstWithInst(T, new BranchInst(T->getSuccessor(0), cast<BasicBlock>(Translate(T->getSuccessor(0))), - ConstantBool::get(true))); + ConstantInt::get(true))); //do whatever is needed now that the function is duplicated c->PrepFunction(&F); diff --git a/lib/Transforms/Scalar/CondPropagate.cpp b/lib/Transforms/Scalar/CondPropagate.cpp index 49a8496..4ca5c5e 100644 --- a/lib/Transforms/Scalar/CondPropagate.cpp +++ b/lib/Transforms/Scalar/CondPropagate.cpp @@ -133,12 +133,13 @@ void CondProp::SimplifyPredecessors(BranchInst *BI) { // constants. Walk from the end to remove operands from the end when // possible, and to avoid invalidating "i". for (unsigned i = PN->getNumIncomingValues(); i != 0; --i) - if (ConstantBool *CB = dyn_cast<ConstantBool>(PN->getIncomingValue(i-1))) { + if (ConstantInt *CB = dyn_cast<ConstantInt>(PN->getIncomingValue(i-1))) { + if (CB->getType() != Type::BoolTy) continue; // If we have a constant, forward the edge from its current to its // ultimate destination. bool PHIGone = PN->getNumIncomingValues() == 2; RevectorBlockTo(PN->getIncomingBlock(i-1), - BI->getSuccessor(CB->getValue() == 0)); + BI->getSuccessor(CB->getBoolValue() == 0)); ++NumBrThread; // If there were two predecessors before this simplification, the PHI node diff --git a/lib/Transforms/Scalar/CorrelatedExprs.cpp b/lib/Transforms/Scalar/CorrelatedExprs.cpp index 203b7fa..44d3ad5 100644 --- a/lib/Transforms/Scalar/CorrelatedExprs.cpp +++ b/lib/Transforms/Scalar/CorrelatedExprs.cpp @@ -472,7 +472,7 @@ bool CEE::ForwardCorrelatedEdgeDestination(TerminatorInst *TI, unsigned SuccNo, } else if (CmpInst *CI = dyn_cast<CmpInst>(I)) { Relation::KnownResult Res = getCmpResult(CI, NewRI); if (Res == Relation::Unknown) return false; - PropagateEquality(CI, ConstantBool::get(Res), NewRI); + PropagateEquality(CI, ConstantInt::get(Res), NewRI); } else { assert(isa<BranchInst>(*I) && "Unexpected instruction type!"); } @@ -484,10 +484,11 @@ bool CEE::ForwardCorrelatedEdgeDestination(TerminatorInst *TI, unsigned SuccNo, if (PredicateVI.getReplacement() && isa<Constant>(PredicateVI.getReplacement()) && !isa<GlobalValue>(PredicateVI.getReplacement())) { - ConstantBool *CB = cast<ConstantBool>(PredicateVI.getReplacement()); + ConstantInt *CB = cast<ConstantInt>(PredicateVI.getReplacement()); // Forward to the successor that corresponds to the branch we will take. - ForwardSuccessorTo(TI, SuccNo, BI->getSuccessor(!CB->getValue()), NewRI); + ForwardSuccessorTo(TI, SuccNo, + BI->getSuccessor(!CB->getBoolValue()), NewRI); return true; } @@ -782,12 +783,12 @@ void CEE::PropagateBranchInfo(BranchInst *BI) { // Propagate information into the true block... // - PropagateEquality(BI->getCondition(), ConstantBool::getTrue(), + PropagateEquality(BI->getCondition(), ConstantInt::getTrue(), getRegionInfo(BI->getSuccessor(0))); // Propagate information into the false block... // - PropagateEquality(BI->getCondition(), ConstantBool::getFalse(), + PropagateEquality(BI->getCondition(), ConstantInt::getFalse(), getRegionInfo(BI->getSuccessor(1))); } @@ -832,78 +833,79 @@ void CEE::PropagateEquality(Value *Op0, Value *Op1, RegionInfo &RI) { // it's a constant, then see if the other one is one of a setcc instruction, // an AND, OR, or XOR instruction. // - if (ConstantBool *CB = dyn_cast<ConstantBool>(Op1)) { - - if (Instruction *Inst = dyn_cast<Instruction>(Op0)) { - // If we know that this instruction is an AND instruction, and the result - // is true, this means that both operands to the OR are known to be true - // as well. - // - if (CB->getValue() && Inst->getOpcode() == Instruction::And) { - PropagateEquality(Inst->getOperand(0), CB, RI); - PropagateEquality(Inst->getOperand(1), CB, RI); - } - - // If we know that this instruction is an OR instruction, and the result - // is false, this means that both operands to the OR are know to be false - // as well. - // - if (!CB->getValue() && Inst->getOpcode() == Instruction::Or) { - PropagateEquality(Inst->getOperand(0), CB, RI); - PropagateEquality(Inst->getOperand(1), CB, RI); - } - - // If we know that this instruction is a NOT instruction, we know that the - // operand is known to be the inverse of whatever the current value is. - // - if (BinaryOperator *BOp = dyn_cast<BinaryOperator>(Inst)) - if (BinaryOperator::isNot(BOp)) - PropagateEquality(BinaryOperator::getNotArgument(BOp), - ConstantBool::get(!CB->getValue()), RI); + if (Op1->getType() == Type::BoolTy) + if (ConstantInt *CB = dyn_cast<ConstantInt>(Op1)) { + + if (Instruction *Inst = dyn_cast<Instruction>(Op0)) { + // If we know that this instruction is an AND instruction, and the result + // is true, this means that both operands to the OR are known to be true + // as well. + // + if (CB->getBoolValue() && Inst->getOpcode() == Instruction::And) { + PropagateEquality(Inst->getOperand(0), CB, RI); + PropagateEquality(Inst->getOperand(1), CB, RI); + } + + // If we know that this instruction is an OR instruction, and the result + // is false, this means that both operands to the OR are know to be false + // as well. + // + if (!CB->getBoolValue() && Inst->getOpcode() == Instruction::Or) { + PropagateEquality(Inst->getOperand(0), CB, RI); + PropagateEquality(Inst->getOperand(1), CB, RI); + } - // If we know the value of a FCmp instruction, propagate the information - // about the relation into this region as well. - // - if (FCmpInst *FCI = dyn_cast<FCmpInst>(Inst)) { - if (CB->getValue()) { // If we know the condition is true... - // Propagate info about the LHS to the RHS & RHS to LHS - PropagateRelation(FCI->getPredicate(), FCI->getOperand(0), - FCI->getOperand(1), RI); - PropagateRelation(FCI->getSwappedPredicate(), - FCI->getOperand(1), FCI->getOperand(0), RI); - - } else { // If we know the condition is false... - // We know the opposite of the condition is true... - FCmpInst::Predicate C = FCI->getInversePredicate(); - - PropagateRelation(C, FCI->getOperand(0), FCI->getOperand(1), RI); - PropagateRelation(FCmpInst::getSwappedPredicate(C), - FCI->getOperand(1), FCI->getOperand(0), RI); + // If we know that this instruction is a NOT instruction, we know that the + // operand is known to be the inverse of whatever the current value is. + // + if (BinaryOperator *BOp = dyn_cast<BinaryOperator>(Inst)) + if (BinaryOperator::isNot(BOp)) + PropagateEquality(BinaryOperator::getNotArgument(BOp), + ConstantInt::get(!CB->getBoolValue()), RI); + + // If we know the value of a FCmp instruction, propagate the information + // about the relation into this region as well. + // + if (FCmpInst *FCI = dyn_cast<FCmpInst>(Inst)) { + if (CB->getBoolValue()) { // If we know the condition is true... + // Propagate info about the LHS to the RHS & RHS to LHS + PropagateRelation(FCI->getPredicate(), FCI->getOperand(0), + FCI->getOperand(1), RI); + PropagateRelation(FCI->getSwappedPredicate(), + FCI->getOperand(1), FCI->getOperand(0), RI); + + } else { // If we know the condition is false... + // We know the opposite of the condition is true... + FCmpInst::Predicate C = FCI->getInversePredicate(); + + PropagateRelation(C, FCI->getOperand(0), FCI->getOperand(1), RI); + PropagateRelation(FCmpInst::getSwappedPredicate(C), + FCI->getOperand(1), FCI->getOperand(0), RI); + } } - } - // If we know the value of a ICmp instruction, propagate the information - // about the relation into this region as well. - // - if (ICmpInst *ICI = dyn_cast<ICmpInst>(Inst)) { - if (CB->getValue()) { // If we know the condition is true... - // Propagate info about the LHS to the RHS & RHS to LHS - PropagateRelation(ICI->getPredicate(), ICI->getOperand(0), - ICI->getOperand(1), RI); - PropagateRelation(ICI->getSwappedPredicate(), ICI->getOperand(1), - ICI->getOperand(1), RI); - - } else { // If we know the condition is false ... - // We know the opposite of the condition is true... - ICmpInst::Predicate C = ICI->getInversePredicate(); - - PropagateRelation(C, ICI->getOperand(0), ICI->getOperand(1), RI); - PropagateRelation(ICmpInst::getSwappedPredicate(C), - ICI->getOperand(1), ICI->getOperand(0), RI); + // If we know the value of a ICmp instruction, propagate the information + // about the relation into this region as well. + // + if (ICmpInst *ICI = dyn_cast<ICmpInst>(Inst)) { + if (CB->getBoolValue()) { // If we know the condition is true... + // Propagate info about the LHS to the RHS & RHS to LHS + PropagateRelation(ICI->getPredicate(), ICI->getOperand(0), + ICI->getOperand(1), RI); + PropagateRelation(ICI->getSwappedPredicate(), ICI->getOperand(1), + ICI->getOperand(1), RI); + + } else { // If we know the condition is false ... + // We know the opposite of the condition is true... + ICmpInst::Predicate C = ICI->getInversePredicate(); + + PropagateRelation(C, ICI->getOperand(0), ICI->getOperand(1), RI); + PropagateRelation(ICmpInst::getSwappedPredicate(C), + ICI->getOperand(1), ICI->getOperand(0), RI); + } } } } - } // Propagate information about Op0 to Op1 & visa versa PropagateRelation(ICmpInst::ICMP_EQ, Op0, Op1, RI); @@ -992,7 +994,7 @@ void CEE::IncorporateInstruction(Instruction *Inst, RegionInfo &RI) { // See if we can figure out a result for this instruction... Relation::KnownResult Result = getCmpResult(CI, RI); if (Result != Relation::Unknown) { - PropagateEquality(CI, ConstantBool::get(Result != 0), RI); + PropagateEquality(CI, ConstantInt::get(Result != 0), RI); } } } @@ -1066,7 +1068,7 @@ bool CEE::SimplifyBasicBlock(BasicBlock &BB, const RegionInfo &RI) { DEBUG(cerr << "Replacing icmp with " << Result << " constant: " << *CI); - CI->replaceAllUsesWith(ConstantBool::get((bool)Result)); + CI->replaceAllUsesWith(ConstantInt::get((bool)Result)); // The instruction is now dead, remove it from the program. CI->getParent()->getInstList().erase(CI); ++NumCmpRemoved; @@ -1120,7 +1122,7 @@ Relation::KnownResult CEE::getCmpResult(CmpInst *CI, if (Constant *Result = ConstantFoldInstruction(CI)) { // Wow, this is easy, directly eliminate the ICmpInst. DEBUG(cerr << "Replacing cmp with constant fold: " << *CI); - return cast<ConstantBool>(Result)->getValue() + return cast<ConstantInt>(Result)->getBoolValue() ? Relation::KnownTrue : Relation::KnownFalse; } } else { @@ -1143,7 +1145,7 @@ Relation::KnownResult CEE::getCmpResult(CmpInst *CI, // Op1. Check to see if we know anything about comparing value with a // constant, and if we can use this info to fold the icmp. // - if (ConstantIntegral *C = dyn_cast<ConstantIntegral>(Op1)) { + if (ConstantInt *C = dyn_cast<ConstantInt>(Op1)) { // Check to see if we already know the result of this comparison... ConstantRange R = ConstantRange(predicate, C); ConstantRange Int = R.intersectWith(Op0VI->getBounds(), @@ -1189,7 +1191,7 @@ bool Relation::contradicts(unsigned Op, // If this is a relationship with a constant, make sure that this relationship // does not contradict properties known about the bounds of the constant. // - if (ConstantIntegral *C = dyn_cast<ConstantIntegral>(Val)) + if (ConstantInt *C = dyn_cast<ConstantInt>(Val)) if (Op >= ICmpInst::FIRST_ICMP_PREDICATE && Op <= ICmpInst::LAST_ICMP_PREDICATE) if (ConstantRange(Op, C).intersectWith(VI.getBounds(), @@ -1247,7 +1249,7 @@ bool Relation::incorporate(unsigned Op, ValueInfo &VI) { // If this is a relationship with a constant, make sure that we update the // range that is possible for the value to have... // - if (ConstantIntegral *C = dyn_cast<ConstantIntegral>(Val)) + if (ConstantInt *C = dyn_cast<ConstantInt>(Val)) if (Op >= ICmpInst::FIRST_ICMP_PREDICATE && Op <= ICmpInst::LAST_ICMP_PREDICATE) VI.getBounds() = ConstantRange(Op, C).intersectWith(VI.getBounds(), diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp index c8b38b8..e82f373 100644 --- a/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/lib/Transforms/Scalar/InstructionCombining.cpp @@ -302,10 +302,10 @@ namespace { Instruction *FoldPHIArgBinOpIntoPHI(PHINode &PN); - Instruction *OptAndOp(Instruction *Op, ConstantIntegral *OpRHS, - ConstantIntegral *AndRHS, BinaryOperator &TheAnd); + Instruction *OptAndOp(Instruction *Op, ConstantInt *OpRHS, + ConstantInt *AndRHS, BinaryOperator &TheAnd); - Value *FoldLogicalPlusAnd(Value *LHS, Value *RHS, ConstantIntegral *Mask, + Value *FoldLogicalPlusAnd(Value *LHS, Value *RHS, ConstantInt *Mask, bool isSub, Instruction &I); Instruction *InsertRangeTest(Value *V, Constant *Lo, Constant *Hi, bool isSigned, bool Inside, Instruction &IB); @@ -484,7 +484,7 @@ static inline Value *dyn_castNotVal(Value *V) { return BinaryOperator::getNotArgument(V); // Constants can be considered to be not'ed values... - if (ConstantIntegral *C = dyn_cast<ConstantIntegral>(V)) + if (ConstantInt *C = dyn_cast<ConstantInt>(V)) return ConstantExpr::getNot(C); return 0; } @@ -531,14 +531,6 @@ static ConstantInt *SubOne(ConstantInt *C) { ConstantInt::get(C->getType(), 1))); } -/// GetConstantInType - Return a ConstantInt with the specified type and value. -/// -static ConstantIntegral *GetConstantInType(const Type *Ty, uint64_t Val) { - if (Ty->getTypeID() == Type::BoolTyID) - return ConstantBool::get(Val); - return ConstantInt::get(Ty, Val); -} - /// ComputeMaskedBits - Determine which of the bits specified in Mask are /// known to be either zero or one and return them in the KnownZero/KnownOne @@ -552,7 +544,7 @@ static void ComputeMaskedBits(Value *V, uint64_t Mask, uint64_t &KnownZero, // optimized based on the contradictory assumption that it is non-zero. // Because instcombine aggressively folds operations with undef args anyway, // this won't lose us code quality. - if (ConstantIntegral *CI = dyn_cast<ConstantIntegral>(V)) { + if (ConstantInt *CI = dyn_cast<ConstantInt>(V)) { // We know all of the bits for a constant! KnownOne = CI->getZExtValue() & Mask; KnownZero = ~KnownOne & Mask; @@ -763,7 +755,7 @@ static bool ShrinkDemandedConstant(Instruction *I, unsigned OpNo, // This is producing any bits that are not needed, shrink the RHS. uint64_t Val = Demanded & OpC->getZExtValue(); - I->setOperand(OpNo, GetConstantInType(OpC->getType(), Val)); + I->setOperand(OpNo, ConstantInt::get(OpC->getType(), Val)); return true; } @@ -824,7 +816,7 @@ static void ComputeUnsignedMinMaxValuesFromKnownBits(const Type *Ty, bool InstCombiner::SimplifyDemandedBits(Value *V, uint64_t DemandedMask, uint64_t &KnownZero, uint64_t &KnownOne, unsigned Depth) { - if (ConstantIntegral *CI = dyn_cast<ConstantIntegral>(V)) { + if (ConstantInt *CI = dyn_cast<ConstantInt>(V)) { // We know all of the bits for a constant! KnownOne = CI->getZExtValue() & DemandedMask; KnownZero = ~KnownOne & DemandedMask; @@ -965,8 +957,8 @@ bool InstCombiner::SimplifyDemandedBits(Value *V, uint64_t DemandedMask, // e.g. (X | C1) ^ C2 --> (X | C1) & ~C2 iff (C1&C2) == C2 if ((DemandedMask & (KnownZero|KnownOne)) == DemandedMask) { // all known if ((KnownOne & KnownOne2) == KnownOne) { - Constant *AndC = GetConstantInType(I->getType(), - ~KnownOne & DemandedMask); + Constant *AndC = ConstantInt::get(I->getType(), + ~KnownOne & DemandedMask); Instruction *And = BinaryOperator::createAnd(I->getOperand(0), AndC, "tmp"); InsertNewInstBefore(And, *I); @@ -1250,7 +1242,7 @@ bool InstCombiner::SimplifyDemandedBits(Value *V, uint64_t DemandedMask, // If the client is only demanding bits that we know, return the known // constant. if ((DemandedMask & (KnownZero|KnownOne)) == DemandedMask) - return UpdateValueUsesWith(I, GetConstantInType(I->getType(), KnownOne)); + return UpdateValueUsesWith(I, ConstantInt::get(I->getType(), KnownOne)); return false; } @@ -2280,7 +2272,7 @@ Instruction *InstCombiner::commonDivTransforms(BinaryOperator &I) { if (ST->isNullValue()) { Instruction *CondI = dyn_cast<Instruction>(SI->getOperand(0)); if (CondI && CondI->getParent() == I.getParent()) - UpdateValueUsesWith(CondI, ConstantBool::getFalse()); + UpdateValueUsesWith(CondI, ConstantInt::getFalse()); else if (I.getParent() != SI->getParent() || SI->hasOneUse()) I.setOperand(1, SI->getOperand(2)); else @@ -2293,7 +2285,7 @@ Instruction *InstCombiner::commonDivTransforms(BinaryOperator &I) { if (ST->isNullValue()) { Instruction *CondI = dyn_cast<Instruction>(SI->getOperand(0)); if (CondI && CondI->getParent() == I.getParent()) - UpdateValueUsesWith(CondI, ConstantBool::getTrue()); + UpdateValueUsesWith(CondI, ConstantInt::getTrue()); else if (I.getParent() != SI->getParent() || SI->hasOneUse()) I.setOperand(1, SI->getOperand(1)); else @@ -2513,7 +2505,7 @@ Instruction *InstCombiner::commonRemTransforms(BinaryOperator &I) { if (ST->isNullValue()) { Instruction *CondI = dyn_cast<Instruction>(SI->getOperand(0)); if (CondI && CondI->getParent() == I.getParent()) - UpdateValueUsesWith(CondI, ConstantBool::getFalse()); + UpdateValueUsesWith(CondI, ConstantInt::getFalse()); else if (I.getParent() != SI->getParent() || SI->hasOneUse()) I.setOperand(1, SI->getOperand(2)); else @@ -2525,7 +2517,7 @@ Instruction *InstCombiner::commonRemTransforms(BinaryOperator &I) { if (ST->isNullValue()) { Instruction *CondI = dyn_cast<Instruction>(SI->getOperand(0)); if (CondI && CondI->getParent() == I.getParent()) - UpdateValueUsesWith(CondI, ConstantBool::getTrue()); + UpdateValueUsesWith(CondI, ConstantInt::getTrue()); else if (I.getParent() != SI->getParent() || SI->hasOneUse()) I.setOperand(1, SI->getOperand(1)); else @@ -2758,7 +2750,7 @@ static unsigned getICmpCode(const ICmpInst *ICI) { static Value *getICmpValue(bool sign, unsigned code, Value *LHS, Value *RHS) { switch (code) { default: assert(0 && "Illegal ICmp code!"); - case 0: return ConstantBool::getFalse(); + case 0: return ConstantInt::getFalse(); case 1: if (sign) return new ICmpInst(ICmpInst::ICMP_SGT, LHS, RHS); @@ -2781,7 +2773,7 @@ static Value *getICmpValue(bool sign, unsigned code, Value *LHS, Value *RHS) { return new ICmpInst(ICmpInst::ICMP_SLE, LHS, RHS); else return new ICmpInst(ICmpInst::ICMP_ULE, LHS, RHS); - case 7: return ConstantBool::getTrue(); + case 7: return ConstantInt::getTrue(); } } @@ -2839,8 +2831,8 @@ struct FoldICmpLogical { // the Op parameter is 'OP', OpRHS is 'C1', and AndRHS is 'C2'. Op is // guaranteed to be either a shift instruction or a binary operator. Instruction *InstCombiner::OptAndOp(Instruction *Op, - ConstantIntegral *OpRHS, - ConstantIntegral *AndRHS, + ConstantInt *OpRHS, + ConstantInt *AndRHS, BinaryOperator &TheAnd) { Value *X = Op->getOperand(0); Constant *Together = 0; @@ -2911,7 +2903,7 @@ Instruction *InstCombiner::OptAndOp(Instruction *Op, // We know that the AND will not produce any of the bits shifted in, so if // the anded constant includes them, clear them now! // - Constant *AllOne = ConstantIntegral::getAllOnesValue(AndRHS->getType()); + Constant *AllOne = ConstantInt::getAllOnesValue(AndRHS->getType()); Constant *ShlMask = ConstantExpr::getShl(AllOne, OpRHS); Constant *CI = ConstantExpr::getAnd(AndRHS, ShlMask); @@ -2929,7 +2921,7 @@ Instruction *InstCombiner::OptAndOp(Instruction *Op, // the anded constant includes them, clear them now! This only applies to // unsigned shifts, because a signed shr may bring in set bits! // - Constant *AllOne = ConstantIntegral::getAllOnesValue(AndRHS->getType()); + Constant *AllOne = ConstantInt::getAllOnesValue(AndRHS->getType()); Constant *ShrMask = ConstantExpr::getLShr(AllOne, OpRHS); Constant *CI = ConstantExpr::getAnd(AndRHS, ShrMask); @@ -2946,7 +2938,7 @@ Instruction *InstCombiner::OptAndOp(Instruction *Op, // See if this is shifting in some sign extension, then masking it out // with an and. if (Op->hasOneUse()) { - Constant *AllOne = ConstantIntegral::getAllOnesValue(AndRHS->getType()); + Constant *AllOne = ConstantInt::getAllOnesValue(AndRHS->getType()); Constant *ShrMask = ConstantExpr::getLShr(AllOne, OpRHS); Constant *C = ConstantExpr::getAnd(AndRHS, ShrMask); if (C == AndRHS) { // Masking out bits shifted in. @@ -2972,8 +2964,8 @@ Instruction *InstCombiner::OptAndOp(Instruction *Op, Instruction *InstCombiner::InsertRangeTest(Value *V, Constant *Lo, Constant *Hi, bool isSigned, bool Inside, Instruction &IB) { - assert(cast<ConstantBool>(ConstantExpr::getICmp((isSigned ? - ICmpInst::ICMP_SLE:ICmpInst::ICMP_ULE), Lo, Hi))->getValue() && + assert(cast<ConstantInt>(ConstantExpr::getICmp((isSigned ? + ICmpInst::ICMP_SLE:ICmpInst::ICMP_ULE), Lo, Hi))->getBoolValue() && "Lo is not <= Hi in range emission code!"); if (Inside) { @@ -2981,7 +2973,7 @@ Instruction *InstCombiner::InsertRangeTest(Value *V, Constant *Lo, Constant *Hi, return new ICmpInst(ICmpInst::ICMP_NE, V, V); // V >= Min && V < Hi --> V < Hi - if (cast<ConstantIntegral>(Lo)->isMinValue(isSigned)) { + if (cast<ConstantInt>(Lo)->isMinValue(isSigned)) { ICmpInst::Predicate pred = (isSigned ? ICmpInst::ICMP_SLT : ICmpInst::ICMP_ULT); return new ICmpInst(pred, V, Hi); @@ -3000,7 +2992,7 @@ Instruction *InstCombiner::InsertRangeTest(Value *V, Constant *Lo, Constant *Hi, // V < Min || V >= Hi ->'V > Hi-1' Hi = SubOne(cast<ConstantInt>(Hi)); - if (cast<ConstantIntegral>(Lo)->isMinValue(isSigned)) { + if (cast<ConstantInt>(Lo)->isMinValue(isSigned)) { ICmpInst::Predicate pred = (isSigned ? ICmpInst::ICMP_SGT : ICmpInst::ICMP_UGT); return new ICmpInst(pred, V, Hi); @@ -3018,7 +3010,7 @@ Instruction *InstCombiner::InsertRangeTest(Value *V, Constant *Lo, Constant *Hi, // any number of 0s on either side. The 1s are allowed to wrap from LSB to // MSB, so 0x000FFF0, 0x0000FFFF, and 0xFF0000FF are all runs. 0x0F0F0000 is // not, since all 1s are not contiguous. -static bool isRunOfOnes(ConstantIntegral *Val, unsigned &MB, unsigned &ME) { +static bool isRunOfOnes(ConstantInt *Val, unsigned &MB, unsigned &ME) { uint64_t V = Val->getZExtValue(); if (!isShiftedMask_64(V)) return false; @@ -3042,7 +3034,7 @@ static bool isRunOfOnes(ConstantIntegral *Val, unsigned &MB, unsigned &ME) { /// return (A +/- B). /// Value *InstCombiner::FoldLogicalPlusAnd(Value *LHS, Value *RHS, - ConstantIntegral *Mask, bool isSub, + ConstantInt *Mask, bool isSub, Instruction &I) { Instruction *LHSI = dyn_cast<Instruction>(LHS); if (!LHSI || LHSI->getNumOperands() != 2 || @@ -3106,7 +3098,7 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) { KnownZero, KnownOne)) return &I; - if (ConstantIntegral *AndRHS = dyn_cast<ConstantIntegral>(Op1)) { + if (ConstantInt *AndRHS = dyn_cast<ConstantInt>(Op1)) { uint64_t AndRHSMask = AndRHS->getZExtValue(); uint64_t TypeMask = Op0->getType()->getIntegralTypeMask(); uint64_t NotAndRHS = AndRHSMask^TypeMask; @@ -3272,7 +3264,7 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) { ICmpInst::ICMP_SGT : ICmpInst::ICMP_UGT; Constant *Cmp = ConstantExpr::getICmp(GT, LHSCst, RHSCst); ICmpInst *LHS = cast<ICmpInst>(Op0); - if (cast<ConstantBool>(Cmp)->getValue()) { + if (cast<ConstantInt>(Cmp)->getBoolValue()) { std::swap(LHS, RHS); std::swap(LHSCst, RHSCst); std::swap(LHSCC, RHSCC); @@ -3294,7 +3286,7 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) { case ICmpInst::ICMP_EQ: // (X == 13 & X == 15) -> false case ICmpInst::ICMP_UGT: // (X == 13 & X > 15) -> false case ICmpInst::ICMP_SGT: // (X == 13 & X > 15) -> false - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); case ICmpInst::ICMP_NE: // (X == 13 & X != 15) -> X == 13 case ICmpInst::ICMP_ULT: // (X == 13 & X < 15) -> X == 13 case ICmpInst::ICMP_SLT: // (X == 13 & X < 15) -> X == 13 @@ -3331,7 +3323,7 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) { default: assert(0 && "Unknown integer condition code!"); case ICmpInst::ICMP_EQ: // (X u< 13 & X == 15) -> false case ICmpInst::ICMP_UGT: // (X u< 13 & X u> 15) -> false - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); case ICmpInst::ICMP_SGT: // (X u< 13 & X s> 15) -> no change break; case ICmpInst::ICMP_NE: // (X u< 13 & X != 15) -> X u< 13 @@ -3346,7 +3338,7 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) { default: assert(0 && "Unknown integer condition code!"); case ICmpInst::ICMP_EQ: // (X s< 13 & X == 15) -> false case ICmpInst::ICMP_SGT: // (X s< 13 & X s> 15) -> false - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); case ICmpInst::ICMP_UGT: // (X s< 13 & X u> 15) -> no change break; case ICmpInst::ICMP_NE: // (X s< 13 & X != 15) -> X < 13 @@ -3563,7 +3555,7 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) { if (isa<UndefValue>(Op1)) return ReplaceInstUsesWith(I, // X | undef -> -1 - ConstantIntegral::getAllOnesValue(I.getType())); + ConstantInt::getAllOnesValue(I.getType())); // or X, X = X if (Op0 == Op1) @@ -3578,7 +3570,7 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) { return &I; // or X, -1 == -1 - if (ConstantIntegral *RHS = dyn_cast<ConstantIntegral>(Op1)) { + if (ConstantInt *RHS = dyn_cast<ConstantInt>(Op1)) { ConstantInt *C1 = 0; Value *X = 0; // (X & C1) | C2 --> (X | C2) & (C1|C2) if (match(Op0, m_And(m_Value(X), m_ConstantInt(C1))) && isOnlyUse(Op0)) { @@ -3692,7 +3684,7 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) { if (match(Op0, m_Not(m_Value(A)))) { // ~A | Op1 if (A == Op1) // ~A | A == -1 return ReplaceInstUsesWith(I, - ConstantIntegral::getAllOnesValue(I.getType())); + ConstantInt::getAllOnesValue(I.getType())); } else { A = 0; } @@ -3700,7 +3692,7 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) { if (match(Op1, m_Not(m_Value(B)))) { // Op0 | ~B if (Op0 == B) return ReplaceInstUsesWith(I, - ConstantIntegral::getAllOnesValue(I.getType())); + ConstantInt::getAllOnesValue(I.getType())); // (~A | ~B) == (~(A & B)) - De Morgan's Law if (A && isOnlyUse(Op0) && isOnlyUse(Op1)) { @@ -3731,7 +3723,7 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) { ICmpInst::ICMP_SGT : ICmpInst::ICMP_UGT; Constant *Cmp = ConstantExpr::getICmp(GT, LHSCst, RHSCst); ICmpInst *LHS = cast<ICmpInst>(Op0); - if (cast<ConstantBool>(Cmp)->getValue()) { + if (cast<ConstantInt>(Cmp)->getBoolValue()) { std::swap(LHS, RHS); std::swap(LHSCst, RHSCst); std::swap(LHSCC, RHSCC); @@ -3779,7 +3771,7 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) { case ICmpInst::ICMP_NE: // (X != 13 | X != 15) -> true case ICmpInst::ICMP_ULT: // (X != 13 | X u< 15) -> true case ICmpInst::ICMP_SLT: // (X != 13 | X s< 15) -> true - return ReplaceInstUsesWith(I, ConstantBool::getTrue()); + return ReplaceInstUsesWith(I, ConstantInt::getTrue()); } break; case ICmpInst::ICMP_ULT: @@ -3826,7 +3818,7 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) { break; case ICmpInst::ICMP_NE: // (X u> 13 | X != 15) -> true case ICmpInst::ICMP_ULT: // (X u> 13 | X u< 15) -> true - return ReplaceInstUsesWith(I, ConstantBool::getTrue()); + return ReplaceInstUsesWith(I, ConstantInt::getTrue()); case ICmpInst::ICMP_SLT: // (X u> 13 | X s< 15) -> no change break; } @@ -3841,7 +3833,7 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) { break; case ICmpInst::ICMP_NE: // (X s> 13 | X != 15) -> true case ICmpInst::ICMP_SLT: // (X s> 13 | X s< 15) -> true - return ReplaceInstUsesWith(I, ConstantBool::getTrue()); + return ReplaceInstUsesWith(I, ConstantInt::getTrue()); case ICmpInst::ICMP_ULT: // (X s> 13 | X u< 15) -> no change break; } @@ -3905,10 +3897,10 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) { KnownZero, KnownOne)) return &I; - if (ConstantIntegral *RHS = dyn_cast<ConstantIntegral>(Op1)) { + if (ConstantInt *RHS = dyn_cast<ConstantInt>(Op1)) { // xor (icmp A, B), true = not (icmp A, B) = !icmp A, B if (ICmpInst *ICI = dyn_cast<ICmpInst>(Op0)) - if (RHS == ConstantBool::getTrue() && ICI->hasOneUse()) + if (RHS == ConstantInt::getTrue() && ICI->hasOneUse()) return new ICmpInst(ICI->getInversePredicate(), ICI->getOperand(0), ICI->getOperand(1)); @@ -3973,12 +3965,12 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) { if (Value *X = dyn_castNotVal(Op0)) // ~A ^ A == -1 if (X == Op1) return ReplaceInstUsesWith(I, - ConstantIntegral::getAllOnesValue(I.getType())); + ConstantInt::getAllOnesValue(I.getType())); if (Value *X = dyn_castNotVal(Op1)) // A ^ ~A == -1 if (X == Op0) return ReplaceInstUsesWith(I, - ConstantIntegral::getAllOnesValue(I.getType())); + ConstantInt::getAllOnesValue(I.getType())); if (BinaryOperator *Op1I = dyn_cast<BinaryOperator>(Op1)) if (Op1I->getOpcode() == Instruction::Or) { @@ -4160,7 +4152,7 @@ Instruction *InstCombiner::FoldGEPICmp(User *GEPLHS, Value *RHS, EmitIt = false; // This is indexing into a zero sized array? } else if (isa<ConstantInt>(C)) return ReplaceInstUsesWith(I, // No comparison is needed here. - ConstantBool::get(Cond == ICmpInst::ICMP_NE)); + ConstantInt::get(Cond == ICmpInst::ICMP_NE)); } if (EmitIt) { @@ -4184,7 +4176,7 @@ Instruction *InstCombiner::FoldGEPICmp(User *GEPLHS, Value *RHS, return InVal; else // No comparison is needed here, all indexes = 0 - ReplaceInstUsesWith(I, ConstantBool::get(Cond == ICmpInst::ICMP_EQ)); + ReplaceInstUsesWith(I, ConstantInt::get(Cond == ICmpInst::ICMP_EQ)); } // Only lower this if the icmp is the only user of the GEP or if we expect @@ -4261,7 +4253,7 @@ Instruction *InstCombiner::FoldGEPICmp(User *GEPLHS, Value *RHS, if (NumDifferences == 0) // SAME GEP? return ReplaceInstUsesWith(I, // No comparison is needed here. - ConstantBool::get(Cond == ICmpInst::ICMP_EQ)); + ConstantInt::get(Cond == ICmpInst::ICMP_EQ)); else if (NumDifferences == 1) { Value *LHSV = GEPLHS->getOperand(DiffOperand); Value *RHSV = GEPRHS->getOperand(DiffOperand); @@ -4289,7 +4281,7 @@ Instruction *InstCombiner::visitFCmpInst(FCmpInst &I) { // fcmp pred X, X if (Op0 == Op1) - return ReplaceInstUsesWith(I, ConstantBool::get(isTrueWhenEqual(I))); + return ReplaceInstUsesWith(I, ConstantInt::get(isTrueWhenEqual(I))); if (isa<UndefValue>(Op1)) // fcmp pred X, undef -> undef return ReplaceInstUsesWith(I, UndefValue::get(Type::BoolTy)); @@ -4341,7 +4333,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { // icmp X, X if (Op0 == Op1) - return ReplaceInstUsesWith(I, ConstantBool::get(isTrueWhenEqual(I))); + return ReplaceInstUsesWith(I, ConstantInt::get(isTrueWhenEqual(I))); if (isa<UndefValue>(Op1)) // X icmp undef -> undef return ReplaceInstUsesWith(I, UndefValue::get(Type::BoolTy)); @@ -4351,7 +4343,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { if (GlobalValue *GV0 = dyn_cast<GlobalValue>(Op0)) if (GlobalValue *GV1 = dyn_cast<GlobalValue>(Op1)) if (!GV0->hasExternalWeakLinkage() || !GV1->hasExternalWeakLinkage()) - return ReplaceInstUsesWith(I, ConstantBool::get(!isTrueWhenEqual(I))); + return ReplaceInstUsesWith(I, ConstantInt::get(!isTrueWhenEqual(I))); // icmp <global/alloca*/null>, <global/alloca*/null> - Global/Stack value // addresses never equal each other! We already know that Op0 != Op1. @@ -4359,7 +4351,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { isa<ConstantPointerNull>(Op0)) && (isa<GlobalValue>(Op1) || isa<AllocaInst>(Op1) || isa<ConstantPointerNull>(Op1))) - return ReplaceInstUsesWith(I, ConstantBool::get(!isTrueWhenEqual(I))); + return ReplaceInstUsesWith(I, ConstantInt::get(!isTrueWhenEqual(I))); // icmp's with boolean values can always be turned into bitwise operations if (Ty == Type::BoolTy) { @@ -4403,7 +4395,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { default: break; case ICmpInst::ICMP_ULT: // A <u MIN -> FALSE if (CI->isMinValue(false)) - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); if (CI->isMaxValue(false)) // A <u MAX -> A != MAX return new ICmpInst(ICmpInst::ICMP_NE, Op0,Op1); if (isMinValuePlusOne(CI,false)) // A <u MIN+1 -> A == MIN @@ -4412,7 +4404,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { case ICmpInst::ICMP_SLT: if (CI->isMinValue(true)) // A <s MIN -> FALSE - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); if (CI->isMaxValue(true)) // A <s MAX -> A != MAX return new ICmpInst(ICmpInst::ICMP_NE, Op0, Op1); if (isMinValuePlusOne(CI,true)) // A <s MIN+1 -> A == MIN @@ -4421,7 +4413,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { case ICmpInst::ICMP_UGT: if (CI->isMaxValue(false)) // A >u MAX -> FALSE - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); if (CI->isMinValue(false)) // A >u MIN -> A != MIN return new ICmpInst(ICmpInst::ICMP_NE, Op0, Op1); if (isMaxValueMinusOne(CI, false)) // A >u MAX-1 -> A == MAX @@ -4430,7 +4422,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { case ICmpInst::ICMP_SGT: if (CI->isMaxValue(true)) // A >s MAX -> FALSE - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); if (CI->isMinValue(true)) // A >s MIN -> A != MIN return new ICmpInst(ICmpInst::ICMP_NE, Op0, Op1); if (isMaxValueMinusOne(CI, true)) // A >s MAX-1 -> A == MAX @@ -4439,7 +4431,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { case ICmpInst::ICMP_ULE: if (CI->isMaxValue(false)) // A <=u MAX -> TRUE - return ReplaceInstUsesWith(I, ConstantBool::getTrue()); + return ReplaceInstUsesWith(I, ConstantInt::getTrue()); if (CI->isMinValue(false)) // A <=u MIN -> A == MIN return new ICmpInst(ICmpInst::ICMP_EQ, Op0, Op1); if (isMaxValueMinusOne(CI,false)) // A <=u MAX-1 -> A != MAX @@ -4448,7 +4440,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { case ICmpInst::ICMP_SLE: if (CI->isMaxValue(true)) // A <=s MAX -> TRUE - return ReplaceInstUsesWith(I, ConstantBool::getTrue()); + return ReplaceInstUsesWith(I, ConstantInt::getTrue()); if (CI->isMinValue(true)) // A <=s MIN -> A == MIN return new ICmpInst(ICmpInst::ICMP_EQ, Op0, Op1); if (isMaxValueMinusOne(CI,true)) // A <=s MAX-1 -> A != MAX @@ -4457,7 +4449,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { case ICmpInst::ICMP_UGE: if (CI->isMinValue(false)) // A >=u MIN -> TRUE - return ReplaceInstUsesWith(I, ConstantBool::getTrue()); + return ReplaceInstUsesWith(I, ConstantInt::getTrue()); if (CI->isMaxValue(false)) // A >=u MAX -> A == MAX return new ICmpInst(ICmpInst::ICMP_EQ, Op0, Op1); if (isMinValuePlusOne(CI,false)) // A >=u MIN-1 -> A != MIN @@ -4466,7 +4458,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { case ICmpInst::ICMP_SGE: if (CI->isMinValue(true)) // A >=s MIN -> TRUE - return ReplaceInstUsesWith(I, ConstantBool::getTrue()); + return ReplaceInstUsesWith(I, ConstantInt::getTrue()); if (CI->isMaxValue(true)) // A >=s MAX -> A == MAX return new ICmpInst(ICmpInst::ICMP_EQ, Op0, Op1); if (isMinValuePlusOne(CI,true)) // A >=s MIN-1 -> A != MIN @@ -4514,35 +4506,35 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { default: assert(0 && "Unknown icmp opcode!"); case ICmpInst::ICMP_EQ: if (UMax < URHSVal || UMin > URHSVal) - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); break; case ICmpInst::ICMP_NE: if (UMax < URHSVal || UMin > URHSVal) - return ReplaceInstUsesWith(I, ConstantBool::getTrue()); + return ReplaceInstUsesWith(I, ConstantInt::getTrue()); break; case ICmpInst::ICMP_ULT: if (UMax < URHSVal) - return ReplaceInstUsesWith(I, ConstantBool::getTrue()); + return ReplaceInstUsesWith(I, ConstantInt::getTrue()); if (UMin > URHSVal) - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); break; case ICmpInst::ICMP_UGT: if (UMin > URHSVal) - return ReplaceInstUsesWith(I, ConstantBool::getTrue()); + return ReplaceInstUsesWith(I, ConstantInt::getTrue()); if (UMax < URHSVal) - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); break; case ICmpInst::ICMP_SLT: if (SMax < SRHSVal) - return ReplaceInstUsesWith(I, ConstantBool::getTrue()); + return ReplaceInstUsesWith(I, ConstantInt::getTrue()); if (SMin > SRHSVal) - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); break; case ICmpInst::ICMP_SGT: if (SMin > SRHSVal) - return ReplaceInstUsesWith(I, ConstantBool::getTrue()); + return ReplaceInstUsesWith(I, ConstantInt::getTrue()); if (SMax < SRHSVal) - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); break; } } @@ -4634,9 +4626,9 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { // As a special case, check to see if this means that the // result is always true or false now. if (I.getPredicate() == ICmpInst::ICMP_EQ) - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); if (I.getPredicate() == ICmpInst::ICMP_NE) - return ReplaceInstUsesWith(I, ConstantBool::getTrue()); + return ReplaceInstUsesWith(I, ConstantInt::getTrue()); } else { I.setOperand(1, NewCst); Constant *NewAndCST; @@ -4699,7 +4691,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { ConstantExpr::getShl(ConstantExpr::getLShr(CI, ShAmt), ShAmt); if (Comp != CI) {// Comparing against a bit that we know is zero. bool IsICMP_NE = I.getPredicate() == ICmpInst::ICMP_NE; - Constant *Cst = ConstantBool::get(IsICMP_NE); + Constant *Cst = ConstantInt::get(IsICMP_NE); return ReplaceInstUsesWith(I, Cst); } @@ -4743,7 +4735,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { if (Comp != CI) {// Comparing against a bit that we know is zero. bool IsICMP_NE = I.getPredicate() == ICmpInst::ICMP_NE; - Constant *Cst = ConstantBool::get(IsICMP_NE); + Constant *Cst = ConstantInt::get(IsICMP_NE); return ReplaceInstUsesWith(I, Cst); } @@ -4859,7 +4851,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { default: assert(0 && "Unhandled icmp opcode!"); case ICmpInst::ICMP_EQ: if (LoOverflow && HiOverflow) - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); else if (HiOverflow) return new ICmpInst(DivIsSigned ? ICmpInst::ICMP_SGE : ICmpInst::ICMP_UGE, X, LoBound); @@ -4871,7 +4863,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { true, I); case ICmpInst::ICMP_NE: if (LoOverflow && HiOverflow) - return ReplaceInstUsesWith(I, ConstantBool::getTrue()); + return ReplaceInstUsesWith(I, ConstantInt::getTrue()); else if (HiOverflow) return new ICmpInst(DivIsSigned ? ICmpInst::ICMP_SLT : ICmpInst::ICMP_ULT, X, LoBound); @@ -4884,12 +4876,12 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { case ICmpInst::ICMP_ULT: case ICmpInst::ICMP_SLT: if (LoOverflow) - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); return new ICmpInst(predicate, X, LoBound); case ICmpInst::ICMP_UGT: case ICmpInst::ICMP_SGT: if (HiOverflow) - return ReplaceInstUsesWith(I, ConstantBool::getFalse()); + return ReplaceInstUsesWith(I, ConstantInt::getFalse()); if (predicate == ICmpInst::ICMP_UGT) return new ICmpInst(ICmpInst::ICMP_UGE, X, HiBound); else @@ -4965,7 +4957,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { if (Constant *BOC = dyn_cast<Constant>(BO->getOperand(1))) { Constant *NotCI = ConstantExpr::getNot(CI); if (!ConstantExpr::getAnd(BOC, NotCI)->isNullValue()) - return ReplaceInstUsesWith(I, ConstantBool::get(isICMP_NE)); + return ReplaceInstUsesWith(I, ConstantInt::get(isICMP_NE)); } break; @@ -4975,7 +4967,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { // comparison can never succeed! if (!ConstantExpr::getAnd(CI, ConstantExpr::getNot(BOC))->isNullValue()) - return ReplaceInstUsesWith(I, ConstantBool::get(isICMP_NE)); + return ReplaceInstUsesWith(I, ConstantInt::get(isICMP_NE)); // If we have ((X & C) == C), turn it into ((X & C) != 0). if (CI == BOC && isOneBitSet(CI)) @@ -5302,9 +5294,9 @@ Instruction *InstCombiner::visitICmpInstWithCastAndCast(ICmpInst &ICI) { // First, handle some easy cases. We know the result cannot be equal at this // point so handle the ICI.isEquality() cases if (ICI.getPredicate() == ICmpInst::ICMP_EQ) - return ReplaceInstUsesWith(ICI, ConstantBool::getFalse()); + return ReplaceInstUsesWith(ICI, ConstantInt::getFalse()); if (ICI.getPredicate() == ICmpInst::ICMP_NE) - return ReplaceInstUsesWith(ICI, ConstantBool::getTrue()); + return ReplaceInstUsesWith(ICI, ConstantInt::getTrue()); // Evaluate the comparison for LT (we invert for GT below). LE and GE cases // should have been folded away previously and not enter in here. @@ -5312,20 +5304,20 @@ Instruction *InstCombiner::visitICmpInstWithCastAndCast(ICmpInst &ICI) { if (isSignedCmp) { // We're performing a signed comparison. if (cast<ConstantInt>(CI)->getSExtValue() < 0) - Result = ConstantBool::getFalse(); // X < (small) --> false + Result = ConstantInt::getFalse(); // X < (small) --> false else - Result = ConstantBool::getTrue(); // X < (large) --> true + Result = ConstantInt::getTrue(); // X < (large) --> true } else { // We're performing an unsigned comparison. if (isSignedExt) { // We're performing an unsigned comp with a sign extended value. // This is true if the input is >= 0. [aka >s -1] - Constant *NegOne = ConstantIntegral::getAllOnesValue(SrcTy); + Constant *NegOne = ConstantInt::getAllOnesValue(SrcTy); Result = InsertNewInstBefore(new ICmpInst(ICmpInst::ICMP_SGT, LHSCIOp, NegOne, ICI.getName()), ICI); } else { // Unsigned extend & unsigned compare -> always true. - Result = ConstantBool::getTrue(); + Result = ConstantInt::getTrue(); } } @@ -5620,7 +5612,7 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1, // because it can not turn an arbitrary bit of A into a sign bit. if (isUnsignedShift || isLeftShift) { // Calculate bitmask for what gets shifted off the edge. - Constant *C = ConstantIntegral::getAllOnesValue(I.getType()); + Constant *C = ConstantInt::getAllOnesValue(I.getType()); if (isLeftShift) C = ConstantExpr::getShl(C, ShiftAmt1C); else @@ -5653,7 +5645,7 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1, ConstantInt::get(Type::Int8Ty, ShiftAmt1-ShiftAmt2)); InsertNewInstBefore(Shift, I); - C = ConstantIntegral::getAllOnesValue(Shift->getType()); + C = ConstantInt::getAllOnesValue(Shift->getType()); C = ConstantExpr::getShl(C, Op1); return BinaryOperator::createAnd(Shift, C, Op->getName()+".mask"); } @@ -6105,7 +6097,7 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) { // cast (xor bool X, true) to int --> xor (cast bool X to int), 1 if (isa<ZExtInst>(CI) && SrcBitSize == 1 && SrcI->getOpcode() == Instruction::Xor && - Op1 == ConstantBool::getTrue() && + Op1 == ConstantInt::getTrue() && (!Op0->hasOneUse() || !isa<CmpInst>(Op0))) { Value *New = InsertOperandCastBefore(Instruction::ZExt, Op0, DestTy, &CI); return BinaryOperator::createXor(New, ConstantInt::get(CI.getType(), 1)); @@ -6190,7 +6182,7 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) { if (Op1CV && (Op1CV != (KnownZero^TypeMask))) { // (X&4) == 2 --> false // (X&4) != 2 --> true - Constant *Res = ConstantBool::get(isNE); + Constant *Res = ConstantInt::get(isNE); Res = ConstantExpr::getZExt(Res, CI.getType()); return ReplaceInstUsesWith(CI, Res); } @@ -6560,8 +6552,9 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) { // select true, X, Y -> X // select false, X, Y -> Y - if (ConstantBool *C = dyn_cast<ConstantBool>(CondVal)) - return ReplaceInstUsesWith(SI, C->getValue() ? TrueVal : FalseVal); + if (ConstantInt *C = dyn_cast<ConstantInt>(CondVal)) + if (C->getType() == Type::BoolTy) + return ReplaceInstUsesWith(SI, C->getBoolValue() ? TrueVal : FalseVal); // select C, X, X -> X if (TrueVal == FalseVal) @@ -6578,9 +6571,11 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) { return ReplaceInstUsesWith(SI, FalseVal); } - if (SI.getType() == Type::BoolTy) - if (ConstantBool *C = dyn_cast<ConstantBool>(TrueVal)) { - if (C->getValue()) { + if (SI.getType() == Type::BoolTy) { + ConstantInt *C; + if ((C = dyn_cast<ConstantInt>(TrueVal)) && + C->getType() == Type::BoolTy) { + if (C->getBoolValue()) { // Change: A = select B, true, C --> A = or B, C return BinaryOperator::createOr(CondVal, FalseVal); } else { @@ -6590,8 +6585,9 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) { "not."+CondVal->getName()), SI); return BinaryOperator::createAnd(NotCond, FalseVal); } - } else if (ConstantBool *C = dyn_cast<ConstantBool>(FalseVal)) { - if (C->getValue() == false) { + } else if ((C = dyn_cast<ConstantInt>(FalseVal)) && + C->getType() == Type::BoolTy) { + if (C->getBoolValue() == false) { // Change: A = select B, C, false --> A = and B, C return BinaryOperator::createAnd(CondVal, TrueVal); } else { @@ -6602,6 +6598,7 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) { return BinaryOperator::createOr(NotCond, TrueVal); } } + } // Selecting between two integer constants? if (ConstantInt *TrueValC = dyn_cast<ConstantInt>(TrueVal)) @@ -7135,7 +7132,7 @@ Instruction *InstCombiner::visitCallSite(CallSite CS) { Instruction *OldCall = CS.getInstruction(); // If the call and callee calling conventions don't match, this call must // be unreachable, as the call is undefined. - new StoreInst(ConstantBool::getTrue(), + new StoreInst(ConstantInt::getTrue(), UndefValue::get(PointerType::get(Type::BoolTy)), OldCall); if (!OldCall->use_empty()) OldCall->replaceAllUsesWith(UndefValue::get(OldCall->getType())); @@ -7148,7 +7145,7 @@ Instruction *InstCombiner::visitCallSite(CallSite CS) { // This instruction is not reachable, just remove it. We insert a store to // undef so that we know that this code is not reachable, despite the fact // that we can't modify the CFG here. - new StoreInst(ConstantBool::getTrue(), + new StoreInst(ConstantInt::getTrue(), UndefValue::get(PointerType::get(Type::BoolTy)), CS.getInstruction()); @@ -7159,7 +7156,7 @@ Instruction *InstCombiner::visitCallSite(CallSite CS) { if (InvokeInst *II = dyn_cast<InvokeInst>(CS.getInstruction())) { // Don't break the CFG, insert a dummy cond branch. new BranchInst(II->getNormalDest(), II->getUnwindDest(), - ConstantBool::getTrue(), II); + ConstantInt::getTrue(), II); } return EraseInstFromFunction(*CS.getInstruction()); } @@ -7940,7 +7937,7 @@ Instruction *InstCombiner::visitFreeInst(FreeInst &FI) { // free undef -> unreachable. if (isa<UndefValue>(Op)) { // Insert a new store to null because we cannot modify the CFG here. - new StoreInst(ConstantBool::getTrue(), + new StoreInst(ConstantInt::getTrue(), UndefValue::get(PointerType::get(Type::BoolTy)), &FI); return EraseInstFromFunction(FI); } @@ -9051,8 +9048,9 @@ static void AddReachableCodeToWorklist(BasicBlock *BB, // only visit the reachable successor. TerminatorInst *TI = BB->getTerminator(); if (BranchInst *BI = dyn_cast<BranchInst>(TI)) { - if (BI->isConditional() && isa<ConstantBool>(BI->getCondition())) { - bool CondVal = cast<ConstantBool>(BI->getCondition())->getValue(); + if (BI->isConditional() && isa<ConstantInt>(BI->getCondition()) && + BI->getCondition()->getType() == Type::BoolTy) { + bool CondVal = cast<ConstantInt>(BI->getCondition())->getBoolValue(); AddReachableCodeToWorklist(BI->getSuccessor(!CondVal), Visited, WorkList, TD); return; diff --git a/lib/Transforms/Scalar/LoopUnswitch.cpp b/lib/Transforms/Scalar/LoopUnswitch.cpp index d0b97e0..2f79f60 100644 --- a/lib/Transforms/Scalar/LoopUnswitch.cpp +++ b/lib/Transforms/Scalar/LoopUnswitch.cpp @@ -171,7 +171,7 @@ bool LoopUnswitch::visitLoop(Loop *L) { // See if this, or some part of it, is loop invariant. If so, we can // unswitch on it if we desire. Value *LoopCond = FindLIVLoopCondition(BI->getCondition(), L, Changed); - if (LoopCond && UnswitchIfProfitable(LoopCond, ConstantBool::getTrue(), + if (LoopCond && UnswitchIfProfitable(LoopCond, ConstantInt::getTrue(), L)) { ++NumBranches; return true; @@ -195,7 +195,7 @@ bool LoopUnswitch::visitLoop(Loop *L) { BBI != E; ++BBI) if (SelectInst *SI = dyn_cast<SelectInst>(BBI)) { Value *LoopCond = FindLIVLoopCondition(SI->getCondition(), L, Changed); - if (LoopCond && UnswitchIfProfitable(LoopCond, ConstantBool::getTrue(), + if (LoopCond && UnswitchIfProfitable(LoopCond, ConstantInt::getTrue(), L)) { ++NumSelects; return true; @@ -286,9 +286,9 @@ static bool IsTrivialUnswitchCondition(Loop *L, Value *Cond, Constant **Val = 0, // side-effects. If so, determine the value of Cond that causes it to do // this. if ((LoopExitBB = isTrivialLoopExitBlock(L, BI->getSuccessor(0)))) { - if (Val) *Val = ConstantBool::getTrue(); + if (Val) *Val = ConstantInt::getTrue(); } else if ((LoopExitBB = isTrivialLoopExitBlock(L, BI->getSuccessor(1)))) { - if (Val) *Val = ConstantBool::getFalse(); + if (Val) *Val = ConstantInt::getFalse(); } } else if (SwitchInst *SI = dyn_cast<SwitchInst>(HeaderTerm)) { // If this isn't a switch on Cond, we can't handle it. @@ -486,9 +486,9 @@ static void EmitPreheaderBranchOnCondition(Value *LIC, Constant *Val, // Insert a conditional branch on LIC to the two preheaders. The original // code is the true version and the new code is the false version. Value *BranchVal = LIC; - if (!isa<ConstantBool>(Val)) + if (Val->getType() != Type::BoolTy) BranchVal = new ICmpInst(ICmpInst::ICMP_EQ, LIC, Val, "tmp", InsertPt); - else if (Val != ConstantBool::getTrue()) + else if (Val != ConstantInt::getTrue()) // We want to enter the new loop when the condition is true. std::swap(TrueDest, FalseDest); @@ -919,12 +919,12 @@ void LoopUnswitch::RewriteLoopBodyWithConditionConstant(Loop *L, Value *LIC, // If we know that LIC == Val, or that LIC == NotVal, just replace uses of LIC // in the loop with the appropriate one directly. - if (IsEqual || isa<ConstantBool>(Val)) { + if (IsEqual || (isa<ConstantInt>(Val) && Val->getType() == Type::BoolTy)) { Value *Replacement; if (IsEqual) Replacement = Val; else - Replacement = ConstantBool::get(!cast<ConstantBool>(Val)->getValue()); + Replacement = ConstantInt::get(!cast<ConstantInt>(Val)->getBoolValue()); for (unsigned i = 0, e = Users.size(); i != e; ++i) if (Instruction *U = cast<Instruction>(Users[i])) { @@ -962,7 +962,7 @@ void LoopUnswitch::RewriteLoopBodyWithConditionConstant(Loop *L, Value *LIC, Instruction* OldTerm = Old->getTerminator(); new BranchInst(Split, SI->getSuccessor(i), - ConstantBool::getTrue(), OldTerm); + ConstantInt::getTrue(), OldTerm); Old->getTerminator()->eraseFromParent(); @@ -1025,32 +1025,36 @@ void LoopUnswitch::SimplifyCode(std::vector<Instruction*> &Worklist) { // Special case hacks that appear commonly in unswitched code. switch (I->getOpcode()) { case Instruction::Select: - if (ConstantBool *CB = dyn_cast<ConstantBool>(I->getOperand(0))) { - ReplaceUsesOfWith(I, I->getOperand(!CB->getValue()+1), Worklist); + if (ConstantInt *CB = dyn_cast<ConstantInt>(I->getOperand(0))) { + ReplaceUsesOfWith(I, I->getOperand(!CB->getBoolValue()+1), Worklist); continue; } break; case Instruction::And: - if (isa<ConstantBool>(I->getOperand(0))) // constant -> RHS + if (isa<ConstantInt>(I->getOperand(0)) && + I->getOperand(0)->getType() == Type::BoolTy) // constant -> RHS cast<BinaryOperator>(I)->swapOperands(); - if (ConstantBool *CB = dyn_cast<ConstantBool>(I->getOperand(1))) { - if (CB->getValue()) // X & 1 -> X - ReplaceUsesOfWith(I, I->getOperand(0), Worklist); - else // X & 0 -> 0 - ReplaceUsesOfWith(I, I->getOperand(1), Worklist); - continue; - } + if (ConstantInt *CB = dyn_cast<ConstantInt>(I->getOperand(1))) + if (CB->getType() == Type::BoolTy) { + if (CB->getBoolValue()) // X & 1 -> X + ReplaceUsesOfWith(I, I->getOperand(0), Worklist); + else // X & 0 -> 0 + ReplaceUsesOfWith(I, I->getOperand(1), Worklist); + continue; + } break; case Instruction::Or: - if (isa<ConstantBool>(I->getOperand(0))) // constant -> RHS + if (isa<ConstantInt>(I->getOperand(0)) && + I->getOperand(0)->getType() == Type::BoolTy) // constant -> RHS cast<BinaryOperator>(I)->swapOperands(); - if (ConstantBool *CB = dyn_cast<ConstantBool>(I->getOperand(1))) { - if (CB->getValue()) // X | 1 -> 1 - ReplaceUsesOfWith(I, I->getOperand(1), Worklist); - else // X | 0 -> X - ReplaceUsesOfWith(I, I->getOperand(0), Worklist); - continue; - } + if (ConstantInt *CB = dyn_cast<ConstantInt>(I->getOperand(1))) + if (CB->getType() == Type::BoolTy) { + if (CB->getBoolValue()) // X | 1 -> 1 + ReplaceUsesOfWith(I, I->getOperand(1), Worklist); + else // X | 0 -> X + ReplaceUsesOfWith(I, I->getOperand(0), Worklist); + continue; + } break; case Instruction::Br: { BranchInst *BI = cast<BranchInst>(I); @@ -1084,14 +1088,14 @@ void LoopUnswitch::SimplifyCode(std::vector<Instruction*> &Worklist) { LI->removeBlock(Succ); Succ->eraseFromParent(); ++NumSimplify; - } else if (ConstantBool *CB = dyn_cast<ConstantBool>(BI->getCondition())){ + } else if (ConstantInt *CB = dyn_cast<ConstantInt>(BI->getCondition())){ // Conditional branch. Turn it into an unconditional branch, then // remove dead blocks. break; // FIXME: Enable. DOUT << "Folded branch: " << *BI; - BasicBlock *DeadSucc = BI->getSuccessor(CB->getValue()); - BasicBlock *LiveSucc = BI->getSuccessor(!CB->getValue()); + BasicBlock *DeadSucc = BI->getSuccessor(CB->getBoolValue()); + BasicBlock *LiveSucc = BI->getSuccessor(!CB->getBoolValue()); DeadSucc->removePredecessor(BI->getParent(), true); Worklist.push_back(new BranchInst(LiveSucc, BI)); BI->eraseFromParent(); diff --git a/lib/Transforms/Scalar/PredicateSimplifier.cpp b/lib/Transforms/Scalar/PredicateSimplifier.cpp index cb4b2b3..717b8da 100644 --- a/lib/Transforms/Scalar/PredicateSimplifier.cpp +++ b/lib/Transforms/Scalar/PredicateSimplifier.cpp @@ -357,16 +357,16 @@ namespace { std::vector<Node> Nodes; - std::vector<std::pair<ConstantIntegral *, unsigned> > Constants; + std::vector<std::pair<ConstantInt *, unsigned> > Constants; void initializeConstant(Constant *C, unsigned index) { - ConstantIntegral *CI = dyn_cast<ConstantIntegral>(C); + ConstantInt *CI = dyn_cast<ConstantInt>(C); if (!CI) return; // XXX: instead of O(n) calls to addInequality, just find the 2, 3 or 4 // nodes that are nearest less than or greater than (signed or unsigned). - for (std::vector<std::pair<ConstantIntegral *, unsigned> >::iterator + for (std::vector<std::pair<ConstantInt *, unsigned> >::iterator I = Constants.begin(), E = Constants.end(); I != E; ++I) { - ConstantIntegral *Other = I->first; + ConstantInt *Other = I->first; if (CI->getType() == Other->getType()) { unsigned lv = 0; @@ -1046,7 +1046,7 @@ namespace { if (Constant *C1 = dyn_cast<Constant>(V1)) if (Constant *C2 = dyn_cast<Constant>(V2)) return ConstantExpr::getCompare(Pred, C1, C2) == - ConstantBool::getTrue(); + ConstantInt::getTrue(); // XXX: this is lousy. If we're passed a Constant, then we might miss // some relationships if it isn't in the IG because the relationships @@ -1100,7 +1100,7 @@ namespace { case Instruction::And: { // "and int %a, %b" EQ -1 then %a EQ -1 and %b EQ -1 // "and bool %a, %b" EQ true then %a EQ true and %b EQ true - ConstantIntegral *CI = ConstantIntegral::getAllOnesValue(Ty); + ConstantInt *CI = ConstantInt::getAllOnesValue(Ty); if (Canonical == CI) { add(CI, Op0, ICmpInst::ICMP_EQ, NewContext); add(CI, Op1, ICmpInst::ICMP_EQ, NewContext); @@ -1127,13 +1127,17 @@ namespace { Value *RHS = Op1; if (!isa<Constant>(LHS)) std::swap(LHS, RHS); - if (ConstantBool *CB = dyn_cast<ConstantBool>(Canonical)) { - if (ConstantBool *A = dyn_cast<ConstantBool>(LHS)) - add(RHS, ConstantBool::get(A->getValue() ^ CB->getValue()), - ICmpInst::ICMP_EQ, NewContext); + ConstantInt *CB, *A; + if ((CB = dyn_cast<ConstantInt>(Canonical)) && + CB->getType() == Type::BoolTy) { + if ((A = dyn_cast<ConstantInt>(LHS)) && + A->getType() == Type::BoolTy) + add(RHS, ConstantInt::get(A->getBoolValue() ^ + CB->getBoolValue()), + ICmpInst::ICMP_EQ, NewContext); } if (Canonical == LHS) { - if (isa<ConstantIntegral>(Canonical)) + if (isa<ConstantInt>(Canonical)) add(RHS, Constant::getNullValue(Ty), ICmpInst::ICMP_EQ, NewContext); } else if (isRelatedBy(LHS, Canonical, ICmpInst::ICMP_NE)) { @@ -1148,10 +1152,10 @@ namespace { // "icmp ult int %a, int %y" EQ true then %a u< y // etc. - if (Canonical == ConstantBool::getTrue()) { + if (Canonical == ConstantInt::getTrue()) { add(IC->getOperand(0), IC->getOperand(1), IC->getPredicate(), NewContext); - } else if (Canonical == ConstantBool::getFalse()) { + } else if (Canonical == ConstantInt::getFalse()) { add(IC->getOperand(0), IC->getOperand(1), ICmpInst::getInversePredicate(IC->getPredicate()), NewContext); } @@ -1167,11 +1171,11 @@ namespace { if (isRelatedBy(True, False, ICmpInst::ICMP_NE)) { if (Canonical == IG.canonicalize(True, Top) || isRelatedBy(Canonical, False, ICmpInst::ICMP_NE)) - add(SI->getCondition(), ConstantBool::getTrue(), + add(SI->getCondition(), ConstantInt::getTrue(), ICmpInst::ICMP_EQ, NewContext); else if (Canonical == IG.canonicalize(False, Top) || isRelatedBy(I, True, ICmpInst::ICMP_NE)) - add(SI->getCondition(), ConstantBool::getFalse(), + add(SI->getCondition(), ConstantInt::getFalse(), ICmpInst::ICMP_EQ, NewContext); } } @@ -1188,8 +1192,8 @@ namespace { Value *Op0 = IG.canonicalize(BO->getOperand(0), Top); Value *Op1 = IG.canonicalize(BO->getOperand(1), Top); - if (ConstantIntegral *CI0 = dyn_cast<ConstantIntegral>(Op0)) - if (ConstantIntegral *CI1 = dyn_cast<ConstantIntegral>(Op1)) { + if (ConstantInt *CI0 = dyn_cast<ConstantInt>(Op0)) + if (ConstantInt *CI1 = dyn_cast<ConstantInt>(Op1)) { add(BO, ConstantExpr::get(BO->getOpcode(), CI0, CI1), ICmpInst::ICMP_EQ, NewContext); return; @@ -1207,7 +1211,7 @@ namespace { return; } } else if (BO->getOpcode() == Instruction::And) { - Constant *AllOnes = ConstantIntegral::getAllOnesValue(BO->getType()); + Constant *AllOnes = ConstantInt::getAllOnesValue(BO->getType()); if (Op0 == AllOnes) { add(BO, Op1, ICmpInst::ICMP_EQ, NewContext); return; @@ -1244,8 +1248,9 @@ namespace { Constant *One = NULL; if (isa<ConstantInt>(Unknown)) One = ConstantInt::get(Ty, 1); - else if (isa<ConstantBool>(Unknown)) - One = ConstantBool::getTrue(); + else if (isa<ConstantInt>(Unknown) && + Unknown->getType() == Type::BoolTy) + One = ConstantInt::getTrue(); if (One) add(Unknown, One, ICmpInst::ICMP_EQ, NewContext); break; @@ -1264,9 +1269,9 @@ namespace { ICmpInst::Predicate Pred = IC->getPredicate(); if (isRelatedBy(Op0, Op1, Pred)) { - add(IC, ConstantBool::getTrue(), ICmpInst::ICMP_EQ, NewContext); + add(IC, ConstantInt::getTrue(), ICmpInst::ICMP_EQ, NewContext); } else if (isRelatedBy(Op0, Op1, ICmpInst::getInversePredicate(Pred))) { - add(IC, ConstantBool::getFalse(), ICmpInst::ICMP_EQ, NewContext); + add(IC, ConstantInt::getFalse(), ICmpInst::ICMP_EQ, NewContext); } // TODO: make the predicate more strict, if possible. @@ -1278,9 +1283,9 @@ namespace { // %b EQ %c then %a EQ %b Value *Canonical = IG.canonicalize(SI->getCondition(), Top); - if (Canonical == ConstantBool::getTrue()) { + if (Canonical == ConstantInt::getTrue()) { add(SI, SI->getTrueValue(), ICmpInst::ICMP_EQ, NewContext); - } else if (Canonical == ConstantBool::getFalse()) { + } else if (Canonical == ConstantInt::getFalse()) { add(SI, SI->getFalseValue(), ICmpInst::ICMP_EQ, NewContext); } else if (IG.canonicalize(SI->getTrueValue(), Top) == IG.canonicalize(SI->getFalseValue(), Top)) { @@ -1565,13 +1570,13 @@ namespace { if (Dest == TrueDest) { DOUT << "(" << DTNode->getBlock()->getName() << ") true set:\n"; VRPSolver VRP(IG, UB, PS->Forest, PS->modified, Dest); - VRP.add(ConstantBool::getTrue(), Condition, ICmpInst::ICMP_EQ); + VRP.add(ConstantInt::getTrue(), Condition, ICmpInst::ICMP_EQ); VRP.solve(); DEBUG(IG.dump()); } else if (Dest == FalseDest) { DOUT << "(" << DTNode->getBlock()->getName() << ") false set:\n"; VRPSolver VRP(IG, UB, PS->Forest, PS->modified, Dest); - VRP.add(ConstantBool::getFalse(), Condition, ICmpInst::ICMP_EQ); + VRP.add(ConstantInt::getFalse(), Condition, ICmpInst::ICMP_EQ); VRP.solve(); DEBUG(IG.dump()); } diff --git a/lib/Transforms/Scalar/Reassociate.cpp b/lib/Transforms/Scalar/Reassociate.cpp index dab2d2e..7550a98 100644 --- a/lib/Transforms/Scalar/Reassociate.cpp +++ b/lib/Transforms/Scalar/Reassociate.cpp @@ -537,7 +537,7 @@ Value *Reassociate::OptimizeExpression(BinaryOperator *I, } // Check for destructive annihilation due to a constant being used. - if (ConstantIntegral *CstVal = dyn_cast<ConstantIntegral>(Ops.back().Op)) + if (ConstantInt *CstVal = dyn_cast<ConstantInt>(Ops.back().Op)) switch (Opcode) { default: break; case Instruction::And: @@ -591,7 +591,7 @@ Value *Reassociate::OptimizeExpression(BinaryOperator *I, return Constant::getNullValue(X->getType()); } else if (Opcode == Instruction::Or) { // ...|X|~X = -1 ++NumAnnihil; - return ConstantIntegral::getAllOnesValue(X->getType()); + return ConstantInt::getAllOnesValue(X->getType()); } } } diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp index 4117480..fad5358 100644 --- a/lib/Transforms/Scalar/SCCP.cpp +++ b/lib/Transforms/Scalar/SCCP.cpp @@ -416,13 +416,14 @@ void SCCPSolver::getFeasibleSuccessors(TerminatorInst &TI, } else { LatticeVal &BCValue = getValueState(BI->getCondition()); if (BCValue.isOverdefined() || - (BCValue.isConstant() && !isa<ConstantBool>(BCValue.getConstant()))) { + (BCValue.isConstant() && + BCValue.getConstant()->getType() != Type::BoolTy)) { // Overdefined condition variables, and branches on unfoldable constant // conditions, mean the branch could go either way. Succs[0] = Succs[1] = true; } else if (BCValue.isConstant()) { // Constant condition variables mean the branch can only go a single way - Succs[BCValue.getConstant() == ConstantBool::getFalse()] = true; + Succs[BCValue.getConstant() == ConstantInt::getFalse()] = true; } } } else if (isa<InvokeInst>(&TI)) { @@ -476,11 +477,11 @@ bool SCCPSolver::isEdgeFeasible(BasicBlock *From, BasicBlock *To) { return true; } else if (BCValue.isConstant()) { // Not branching on an evaluatable constant? - if (!isa<ConstantBool>(BCValue.getConstant())) return true; + if (BCValue.getConstant()->getType() != Type::BoolTy) return true; // Constant condition variables mean the branch can only go a single way return BI->getSuccessor(BCValue.getConstant() == - ConstantBool::getFalse()) == To; + ConstantInt::getFalse()) == To; } return false; } @@ -646,10 +647,11 @@ void SCCPSolver::visitSelectInst(SelectInst &I) { LatticeVal &CondValue = getValueState(I.getCondition()); if (CondValue.isUndefined()) return; - if (CondValue.isConstant()) { - if (ConstantBool *CondCB = dyn_cast<ConstantBool>(CondValue.getConstant())){ - mergeInValue(&I, getValueState(CondCB->getValue() ? I.getTrueValue() - : I.getFalseValue())); + if (CondValue.isConstant() && + CondValue.getConstant()->getType() == Type::BoolTy) { + if (ConstantInt *CondCB = dyn_cast<ConstantInt>(CondValue.getConstant())){ + mergeInValue(&I, getValueState(CondCB->getBoolValue() ? I.getTrueValue() + : I.getFalseValue())); return; } } @@ -712,8 +714,8 @@ void SCCPSolver::visitBinaryOperator(Instruction &I) { return; // X and 0 = 0 } } else { - if (ConstantIntegral *CI = - dyn_cast<ConstantIntegral>(NonOverdefVal->getConstant())) + if (ConstantInt *CI = + dyn_cast<ConstantInt>(NonOverdefVal->getConstant())) if (CI->isAllOnesValue()) { markConstant(IV, &I, NonOverdefVal->getConstant()); return; // X or -1 = -1 diff --git a/lib/Transforms/Utils/CloneFunction.cpp b/lib/Transforms/Utils/CloneFunction.cpp index 896c399..cb98dc5 100644 --- a/lib/Transforms/Utils/CloneFunction.cpp +++ b/lib/Transforms/Utils/CloneFunction.cpp @@ -226,11 +226,14 @@ void PruningFunctionCloner::CloneBlock(const BasicBlock *BB) { if (const BranchInst *BI = dyn_cast<BranchInst>(OldTI)) { if (BI->isConditional()) { // If the condition was a known constant in the callee... - ConstantBool *Cond = dyn_cast<ConstantBool>(BI->getCondition()); - if (Cond == 0) // Or is a known constant in the caller... - Cond = dyn_cast_or_null<ConstantBool>(ValueMap[BI->getCondition()]); - if (Cond) { // Constant fold to uncond branch! - BasicBlock *Dest = BI->getSuccessor(!Cond->getValue()); + ConstantInt *Cond = dyn_cast<ConstantInt>(BI->getCondition()); + // Or is a known constant in the caller... + if (Cond == 0) + Cond = dyn_cast_or_null<ConstantInt>(ValueMap[BI->getCondition()]); + + // Constant fold to uncond branch! + if (Cond) { + BasicBlock *Dest = BI->getSuccessor(!Cond->getBoolValue()); ValueMap[OldTI] = new BranchInst(Dest, NewBB); CloneBlock(Dest); TerminatorDone = true; diff --git a/lib/Transforms/Utils/CodeExtractor.cpp b/lib/Transforms/Utils/CodeExtractor.cpp index ebf1ac6..f922a98 100644 --- a/lib/Transforms/Utils/CodeExtractor.cpp +++ b/lib/Transforms/Utils/CodeExtractor.cpp @@ -470,7 +470,7 @@ emitCallAndSwitchStatement(Function *newFunction, BasicBlock *codeReplacer, case 0: case 1: break; // No value needed. case 2: // Conditional branch, return a bool - brVal = ConstantBool::get(!SuccNum); + brVal = ConstantInt::get(!SuccNum); break; default: brVal = ConstantInt::get(Type::Int16Ty, SuccNum); diff --git a/lib/Transforms/Utils/Local.cpp b/lib/Transforms/Utils/Local.cpp index 236ec4b..f3d6ca8 100644 --- a/lib/Transforms/Utils/Local.cpp +++ b/lib/Transforms/Utils/Local.cpp @@ -173,11 +173,11 @@ bool llvm::ConstantFoldTerminator(BasicBlock *BB) { BasicBlock *Dest1 = cast<BasicBlock>(BI->getOperand(0)); BasicBlock *Dest2 = cast<BasicBlock>(BI->getOperand(1)); - if (ConstantBool *Cond = dyn_cast<ConstantBool>(BI->getCondition())) { + if (ConstantInt *Cond = dyn_cast<ConstantInt>(BI->getCondition())) { // Are we branching on constant? // YES. Change to unconditional branch... - BasicBlock *Destination = Cond->getValue() ? Dest1 : Dest2; - BasicBlock *OldDest = Cond->getValue() ? Dest2 : Dest1; + BasicBlock *Destination = Cond->getBoolValue() ? Dest1 : Dest2; + BasicBlock *OldDest = Cond->getBoolValue() ? Dest2 : Dest1; //cerr << "Function: " << T->getParent()->getParent() // << "\nRemoving branch from " << T->getParent() diff --git a/lib/Transforms/Utils/SimplifyCFG.cpp b/lib/Transforms/Utils/SimplifyCFG.cpp index b44ab09..0304aa3 100644 --- a/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/lib/Transforms/Utils/SimplifyCFG.cpp @@ -968,12 +968,14 @@ static bool FoldCondBranchOnPHI(BranchInst *BI) { // Okay, this is a simple enough basic block. See if any phi values are // constants. - for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) - if (ConstantBool *CB = dyn_cast<ConstantBool>(PN->getIncomingValue(i))) { + for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) { + ConstantInt *CB; + if ((CB = dyn_cast<ConstantInt>(PN->getIncomingValue(i))) && + CB->getType() == Type::BoolTy) { // Okay, we now know that all edges from PredBB should be revectored to // branch to RealDest. BasicBlock *PredBB = PN->getIncomingBlock(i); - BasicBlock *RealDest = BI->getSuccessor(!CB->getValue()); + BasicBlock *RealDest = BI->getSuccessor(!CB->getBoolValue()); if (RealDest == BB) continue; // Skip self loops. @@ -1037,6 +1039,7 @@ static bool FoldCondBranchOnPHI(BranchInst *BI) { // Recurse, simplifying any other constants. return FoldCondBranchOnPHI(BI) | true; } + } return false; } @@ -1506,7 +1509,7 @@ bool llvm::SimplifyCFG(BasicBlock *BB) { if (BB->getSinglePredecessor()) { // Turn this into a branch on constant. bool CondIsTrue = PBI->getSuccessor(0) == BB; - BI->setCondition(ConstantBool::get(CondIsTrue)); + BI->setCondition(ConstantInt::get(CondIsTrue)); return SimplifyCFG(BB); // Nuke the branch on constant. } @@ -1522,7 +1525,7 @@ bool llvm::SimplifyCFG(BasicBlock *BB) { PBI->getCondition() == BI->getCondition() && PBI->getSuccessor(0) != PBI->getSuccessor(1)) { bool CondIsTrue = PBI->getSuccessor(0) == BB; - NewPN->addIncoming(ConstantBool::get(CondIsTrue), *PI); + NewPN->addIncoming(ConstantInt::get(CondIsTrue), *PI); } else { NewPN->addIncoming(BI->getCondition(), *PI); } diff --git a/lib/Transforms/Utils/ValueMapper.cpp b/lib/Transforms/Utils/ValueMapper.cpp index f8afabc..371bee1 100644 --- a/lib/Transforms/Utils/ValueMapper.cpp +++ b/lib/Transforms/Utils/ValueMapper.cpp @@ -28,7 +28,7 @@ Value *llvm::MapValue(const Value *V, std::map<const Value*, Value*> &VM) { return VMSlot = const_cast<Value*>(V); if (Constant *C = const_cast<Constant*>(dyn_cast<Constant>(V))) { - if (isa<ConstantIntegral>(C) || isa<ConstantFP>(C) || + if (isa<ConstantInt>(C) || isa<ConstantFP>(C) || isa<ConstantPointerNull>(C) || isa<ConstantAggregateZero>(C) || isa<UndefValue>(C)) return VMSlot = C; // Primitive constants map directly diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp index a00b19e..99926f6 100644 --- a/lib/VMCore/AsmWriter.cpp +++ b/lib/VMCore/AsmWriter.cpp @@ -438,10 +438,10 @@ static void WriteConstantInt(std::ostream &Out, const Constant *CV, SlotMachine *Machine) { const int IndentSize = 4; static std::string Indent = "\n"; - if (const ConstantBool *CB = dyn_cast<ConstantBool>(CV)) { - Out << (CB->getValue() ? "true" : "false"); - } else if (const ConstantInt *CI = dyn_cast<ConstantInt>(CV)) { - Out << CI->getSExtValue(); + if (const ConstantInt *CI = dyn_cast<ConstantInt>(CV)) { + if (CI->getType() == Type::BoolTy) + Out << (CI->getBoolValue() ? "true" : "false"); + else Out << CI->getSExtValue(); } else if (const ConstantFP *CFP = dyn_cast<ConstantFP>(CV)) { // We would like to output the FP constant value in exponential notation, // but we cannot do this if doing so will lose precision. Check here to diff --git a/lib/VMCore/ConstantFold.cpp b/lib/VMCore/ConstantFold.cpp index fffba1e..3fdd579 100644 --- a/lib/VMCore/ConstantFold.cpp +++ b/lib/VMCore/ConstantFold.cpp @@ -174,11 +174,11 @@ Constant *llvm::ConstantFoldCastInstruction(unsigned opc, const Constant *V, return 0; // Can't fold. case Instruction::FPToUI: if (const ConstantFP *FPC = dyn_cast<ConstantFP>(V)) - return ConstantIntegral::get(DestTy,(uint64_t) FPC->getValue()); + return ConstantInt::get(DestTy,(uint64_t) FPC->getValue()); return 0; // Can't fold. case Instruction::FPToSI: if (const ConstantFP *FPC = dyn_cast<ConstantFP>(V)) - return ConstantIntegral::get(DestTy,(int64_t) FPC->getValue()); + return ConstantInt::get(DestTy,(int64_t) FPC->getValue()); return 0; // Can't fold. case Instruction::IntToPtr: //always treated as unsigned if (V->isNullValue()) // Is it an integral null value? @@ -186,27 +186,27 @@ Constant *llvm::ConstantFoldCastInstruction(unsigned opc, const Constant *V, return 0; // Other pointer types cannot be casted case Instruction::PtrToInt: // always treated as unsigned if (V->isNullValue()) // is it a null pointer value? - return ConstantIntegral::get(DestTy, 0); + return ConstantInt::get(DestTy, 0); return 0; // Other pointer types cannot be casted case Instruction::UIToFP: - if (const ConstantIntegral *CI = dyn_cast<ConstantIntegral>(V)) + if (const ConstantInt *CI = dyn_cast<ConstantInt>(V)) return ConstantFP::get(DestTy, double(CI->getZExtValue())); return 0; case Instruction::SIToFP: - if (const ConstantIntegral *CI = dyn_cast<ConstantIntegral>(V)) + if (const ConstantInt *CI = dyn_cast<ConstantInt>(V)) return ConstantFP::get(DestTy, double(CI->getSExtValue())); return 0; case Instruction::ZExt: - if (const ConstantIntegral *CI = dyn_cast<ConstantIntegral>(V)) + if (const ConstantInt *CI = dyn_cast<ConstantInt>(V)) return ConstantInt::get(DestTy, CI->getZExtValue()); return 0; case Instruction::SExt: - if (const ConstantIntegral *CI = dyn_cast<ConstantIntegral>(V)) + if (const ConstantInt *CI = dyn_cast<ConstantInt>(V)) return ConstantInt::get(DestTy, CI->getSExtValue()); return 0; case Instruction::Trunc: if (const ConstantInt *CI = dyn_cast<ConstantInt>(V)) // Can't trunc a bool - return ConstantIntegral::get(DestTy, CI->getZExtValue()); + return ConstantInt::get(DestTy, CI->getZExtValue()); return 0; case Instruction::BitCast: if (SrcTy == DestTy) @@ -316,8 +316,9 @@ Constant *llvm::ConstantFoldCastInstruction(unsigned opc, const Constant *V, Constant *llvm::ConstantFoldSelectInstruction(const Constant *Cond, const Constant *V1, const Constant *V2) { - if (const ConstantBool *CB = dyn_cast<ConstantBool>(Cond)) - return const_cast<Constant*>(CB->getValue() ? V1 : V2); + if (const ConstantInt *CB = dyn_cast<ConstantInt>(Cond)) + if (CB->getType() == Type::BoolTy) + return const_cast<Constant*>(CB->getBoolValue() ? V1 : V2); if (isa<UndefValue>(V1)) return const_cast<Constant*>(V2); if (isa<UndefValue>(V2)) return const_cast<Constant*>(V1); @@ -552,76 +553,70 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode, // At this point we know neither constant is an UndefValue nor a ConstantExpr // so look at directly computing the value. - if (const ConstantBool *CB1 = dyn_cast<ConstantBool>(C1)) { - if (const ConstantBool *CB2 = dyn_cast<ConstantBool>(C2)) { - switch (Opcode) { + if (const ConstantInt *CI1 = dyn_cast<ConstantInt>(C1)) { + if (const ConstantInt *CI2 = dyn_cast<ConstantInt>(C2)) { + if (CI1->getType() == Type::BoolTy && CI2->getType() == Type::BoolTy) { + switch (Opcode) { + default: + break; + case Instruction::And: + return ConstantInt::get(CI1->getBoolValue() & CI2->getBoolValue()); + case Instruction::Or: + return ConstantInt::get(CI1->getBoolValue() | CI2->getBoolValue()); + case Instruction::Xor: + return ConstantInt::get(CI1->getBoolValue() ^ CI2->getBoolValue()); + } + } else { + uint64_t C1Val = CI1->getZExtValue(); + uint64_t C2Val = CI2->getZExtValue(); + switch (Opcode) { default: break; + case Instruction::Add: + return ConstantInt::get(C1->getType(), C1Val + C2Val); + case Instruction::Sub: + return ConstantInt::get(C1->getType(), C1Val - C2Val); + case Instruction::Mul: + return ConstantInt::get(C1->getType(), C1Val * C2Val); + case Instruction::UDiv: + if (CI2->isNullValue()) // X / 0 -> can't fold + return 0; + return ConstantInt::get(C1->getType(), C1Val / C2Val); + case Instruction::SDiv: + if (CI2->isNullValue()) return 0; // X / 0 -> can't fold + if (CI2->isAllOnesValue() && + (((CI1->getType()->getPrimitiveSizeInBits() == 64) && + (CI1->getSExtValue() == INT64_MIN)) || + (CI1->getSExtValue() == -CI1->getSExtValue()))) + return 0; // MIN_INT / -1 -> overflow + return ConstantInt::get(C1->getType(), + CI1->getSExtValue() / CI2->getSExtValue()); + case Instruction::URem: + if (C2->isNullValue()) return 0; // X / 0 -> can't fold + return ConstantInt::get(C1->getType(), C1Val % C2Val); + case Instruction::SRem: + if (CI2->isNullValue()) return 0; // X % 0 -> can't fold + if (CI2->isAllOnesValue() && + (((CI1->getType()->getPrimitiveSizeInBits() == 64) && + (CI1->getSExtValue() == INT64_MIN)) || + (CI1->getSExtValue() == -CI1->getSExtValue()))) + return 0; // MIN_INT % -1 -> overflow + return ConstantInt::get(C1->getType(), + CI1->getSExtValue() % CI2->getSExtValue()); case Instruction::And: - return ConstantBool::get(CB1->getValue() & CB2->getValue()); + return ConstantInt::get(C1->getType(), C1Val & C2Val); case Instruction::Or: - return ConstantBool::get(CB1->getValue() | CB2->getValue()); + return ConstantInt::get(C1->getType(), C1Val | C2Val); case Instruction::Xor: - return ConstantBool::get(CB1->getValue() ^ CB2->getValue()); - } - } - } else if (const ConstantInt *CI1 = dyn_cast<ConstantInt>(C1)) { - if (const ConstantInt *CI2 = dyn_cast<ConstantInt>(C2)) { - uint64_t C1Val = CI1->getZExtValue(); - uint64_t C2Val = CI2->getZExtValue(); - switch (Opcode) { - default: - break; - case Instruction::Add: - return ConstantInt::get(C1->getType(), C1Val + C2Val); - case Instruction::Sub: - return ConstantInt::get(C1->getType(), C1Val - C2Val); - case Instruction::Mul: - return ConstantInt::get(C1->getType(), C1Val * C2Val); - case Instruction::UDiv: - if (CI2->isNullValue()) // X / 0 -> can't fold - return 0; - return ConstantInt::get(C1->getType(), C1Val / C2Val); - case Instruction::SDiv: - if (CI2->isNullValue()) return 0; // X / 0 -> can't fold - if (CI2->isAllOnesValue() && - (((CI1->getType()->getPrimitiveSizeInBits() == 64) && - (CI1->getSExtValue() == INT64_MIN)) || - (CI1->getSExtValue() == -CI1->getSExtValue()))) - return 0; // MIN_INT / -1 -> overflow - return ConstantInt::get(C1->getType(), - CI1->getSExtValue() / CI2->getSExtValue()); - case Instruction::URem: - if (C2->isNullValue()) return 0; // X / 0 -> can't fold - return ConstantInt::get(C1->getType(), C1Val % C2Val); - case Instruction::SRem: - if (CI2->isNullValue()) return 0; // X % 0 -> can't fold - if (CI2->isAllOnesValue() && - (((CI1->getType()->getPrimitiveSizeInBits() == 64) && - (CI1->getSExtValue() == INT64_MIN)) || - (CI1->getSExtValue() == -CI1->getSExtValue()))) - return 0; // MIN_INT % -1 -> overflow - return ConstantInt::get(C1->getType(), - CI1->getSExtValue() % CI2->getSExtValue()); - case Instruction::And: - return ConstantInt::get(C1->getType(), C1Val & C2Val); - case Instruction::Or: - return ConstantInt::get(C1->getType(), C1Val | C2Val); - case Instruction::Xor: - return ConstantInt::get(C1->getType(), C1Val ^ C2Val); - case Instruction::Shl: - if (C2Val >= CI1->getType()->getPrimitiveSizeInBits()) - C2Val = CI1->getType()->getPrimitiveSizeInBits() - 1; - return ConstantInt::get(C1->getType(), C1Val << C2Val); - case Instruction::LShr: - if (C2Val >= CI1->getType()->getPrimitiveSizeInBits()) - C2Val = CI1->getType()->getPrimitiveSizeInBits() - 1; - return ConstantInt::get(C1->getType(), C1Val >> C2Val); - case Instruction::AShr: - if (C2Val >= CI1->getType()->getPrimitiveSizeInBits()) - C2Val = CI1->getType()->getPrimitiveSizeInBits() - 1; - return ConstantInt::get(C1->getType(), - CI1->getSExtValue() >> C2Val); + return ConstantInt::get(C1->getType(), C1Val ^ C2Val); + case Instruction::Shl: + return ConstantInt::get(C1->getType(), C1Val << C2Val); + case Instruction::LShr: + return ConstantInt::get(C1->getType(), C1Val >> C2Val); + case Instruction::AShr: + return ConstantInt::get(C1->getType(), + CI1->getSExtValue() >> C2Val); + } } } } else if (const ConstantFP *CFP1 = dyn_cast<ConstantFP>(C1)) { @@ -765,20 +760,20 @@ static FCmpInst::Predicate evaluateFCmpRelation(const Constant *V1, if (!isa<ConstantExpr>(V1)) { if (!isa<ConstantExpr>(V2)) { // We distilled thisUse the standard constant folder for a few cases - ConstantBool *R = 0; + ConstantInt *R = 0; Constant *C1 = const_cast<Constant*>(V1); Constant *C2 = const_cast<Constant*>(V2); - R = dyn_cast<ConstantBool>( + R = dyn_cast<ConstantInt>( ConstantExpr::getFCmp(FCmpInst::FCMP_OEQ, C1, C2)); - if (R && R->getValue()) + if (R && R->getBoolValue()) return FCmpInst::FCMP_OEQ; - R = dyn_cast<ConstantBool>( + R = dyn_cast<ConstantInt>( ConstantExpr::getFCmp(FCmpInst::FCMP_OLT, C1, C2)); - if (R && R->getValue()) + if (R && R->getBoolValue()) return FCmpInst::FCMP_OLT; - R = dyn_cast<ConstantBool>( + R = dyn_cast<ConstantInt>( ConstantExpr::getFCmp(FCmpInst::FCMP_OGT, C1, C2)); - if (R && R->getValue()) + if (R && R->getBoolValue()) return FCmpInst::FCMP_OGT; // Nothing more we can do @@ -832,20 +827,20 @@ static ICmpInst::Predicate evaluateICmpRelation(const Constant *V1, if (!isa<GlobalValue>(V2) && !isa<ConstantExpr>(V2)) { // We distilled this down to a simple case, use the standard constant // folder. - ConstantBool *R = 0; + ConstantInt *R = 0; Constant *C1 = const_cast<Constant*>(V1); Constant *C2 = const_cast<Constant*>(V2); ICmpInst::Predicate pred = ICmpInst::ICMP_EQ; - R = dyn_cast<ConstantBool>(ConstantExpr::getICmp(pred, C1, C2)); - if (R && R->getValue()) + R = dyn_cast<ConstantInt>(ConstantExpr::getICmp(pred, C1, C2)); + if (R && R->getBoolValue()) return pred; pred = isSigned ? ICmpInst::ICMP_SLT : ICmpInst::ICMP_ULT; - R = dyn_cast<ConstantBool>(ConstantExpr::getICmp(pred, C1, C2)); - if (R && R->getValue()) + R = dyn_cast<ConstantInt>(ConstantExpr::getICmp(pred, C1, C2)); + if (R && R->getBoolValue()) return pred; pred = isSigned ? ICmpInst::ICMP_SGT : ICmpInst::ICMP_UGT; - R = dyn_cast<ConstantBool>(ConstantExpr::getICmp(pred, C1, C2)); - if (R && R->getValue()) + R = dyn_cast<ConstantInt>(ConstantExpr::getICmp(pred, C1, C2)); + if (R && R->getBoolValue()) return pred; // If we couldn't figure it out, bail. @@ -1013,14 +1008,14 @@ static ICmpInst::Predicate evaluateICmpRelation(const Constant *V1, // are non-zero then we have a difference, otherwise we are equal. for (; i < CE1->getNumOperands(); ++i) if (!CE1->getOperand(i)->isNullValue()) - if (isa<ConstantIntegral>(CE1->getOperand(i))) + if (isa<ConstantInt>(CE1->getOperand(i))) return isSigned ? ICmpInst::ICMP_SGT : ICmpInst::ICMP_UGT; else return ICmpInst::BAD_ICMP_PREDICATE; // Might be equal. for (; i < CE2->getNumOperands(); ++i) if (!CE2->getOperand(i)->isNullValue()) - if (isa<ConstantIntegral>(CE2->getOperand(i))) + if (isa<ConstantInt>(CE2->getOperand(i))) return isSigned ? ICmpInst::ICMP_SLT : ICmpInst::ICMP_ULT; else return ICmpInst::BAD_ICMP_PREDICATE; // Might be equal. @@ -1049,34 +1044,35 @@ Constant *llvm::ConstantFoldCompareInstruction(unsigned short pred, if (const GlobalValue *GV = dyn_cast<GlobalValue>(C2)) if (!GV->hasExternalWeakLinkage()) // External weak GV can be null if (pred == ICmpInst::ICMP_EQ) - return ConstantBool::getFalse(); + return ConstantInt::getFalse(); else if (pred == ICmpInst::ICMP_NE) - return ConstantBool::getTrue(); + return ConstantInt::getTrue(); // icmp eq/ne(GV,null) -> false/true } else if (C2->isNullValue()) { if (const GlobalValue *GV = dyn_cast<GlobalValue>(C1)) if (!GV->hasExternalWeakLinkage()) // External weak GV can be null if (pred == ICmpInst::ICMP_EQ) - return ConstantBool::getFalse(); + return ConstantInt::getFalse(); else if (pred == ICmpInst::ICMP_NE) - return ConstantBool::getTrue(); + return ConstantInt::getTrue(); } - if (isa<ConstantBool>(C1) && isa<ConstantBool>(C2)) { - bool C1Val = cast<ConstantBool>(C1)->getValue(); - bool C2Val = cast<ConstantBool>(C2)->getValue(); + if (isa<ConstantInt>(C1) && isa<ConstantInt>(C2) && + C1->getType() == Type::BoolTy && C2->getType() == Type::BoolTy) { + bool C1Val = cast<ConstantInt>(C1)->getBoolValue(); + bool C2Val = cast<ConstantInt>(C2)->getBoolValue(); switch (pred) { default: assert(0 && "Invalid ICmp Predicate"); return 0; - case ICmpInst::ICMP_EQ: return ConstantBool::get(C1Val == C2Val); - case ICmpInst::ICMP_NE: return ConstantBool::get(C1Val != C2Val); - case ICmpInst::ICMP_ULT:return ConstantBool::get(C1Val < C2Val); - case ICmpInst::ICMP_UGT:return ConstantBool::get(C1Val > C2Val); - case ICmpInst::ICMP_ULE:return ConstantBool::get(C1Val <= C2Val); - case ICmpInst::ICMP_UGE:return ConstantBool::get(C1Val >= C2Val); - case ICmpInst::ICMP_SLT:return ConstantBool::get(C1Val < C2Val); - case ICmpInst::ICMP_SGT:return ConstantBool::get(C1Val > C2Val); - case ICmpInst::ICMP_SLE:return ConstantBool::get(C1Val <= C2Val); - case ICmpInst::ICMP_SGE:return ConstantBool::get(C1Val >= C2Val); + case ICmpInst::ICMP_EQ: return ConstantInt::get(C1Val == C2Val); + case ICmpInst::ICMP_NE: return ConstantInt::get(C1Val != C2Val); + case ICmpInst::ICMP_ULT:return ConstantInt::get(C1Val < C2Val); + case ICmpInst::ICMP_UGT:return ConstantInt::get(C1Val > C2Val); + case ICmpInst::ICMP_ULE:return ConstantInt::get(C1Val <= C2Val); + case ICmpInst::ICMP_UGE:return ConstantInt::get(C1Val >= C2Val); + case ICmpInst::ICMP_SLT:return ConstantInt::get(C1Val < C2Val); + case ICmpInst::ICMP_SGT:return ConstantInt::get(C1Val > C2Val); + case ICmpInst::ICMP_SLE:return ConstantInt::get(C1Val <= C2Val); + case ICmpInst::ICMP_SGE:return ConstantInt::get(C1Val >= C2Val); } } else if (isa<ConstantInt>(C1) && isa<ConstantInt>(C2)) { if (ICmpInst::isSignedPredicate(ICmpInst::Predicate(pred))) { @@ -1084,22 +1080,22 @@ Constant *llvm::ConstantFoldCompareInstruction(unsigned short pred, int64_t V2 = cast<ConstantInt>(C2)->getSExtValue(); switch (pred) { default: assert(0 && "Invalid ICmp Predicate"); return 0; - case ICmpInst::ICMP_SLT:return ConstantBool::get(V1 < V2); - case ICmpInst::ICMP_SGT:return ConstantBool::get(V1 > V2); - case ICmpInst::ICMP_SLE:return ConstantBool::get(V1 <= V2); - case ICmpInst::ICMP_SGE:return ConstantBool::get(V1 >= V2); + case ICmpInst::ICMP_SLT:return ConstantInt::get(V1 < V2); + case ICmpInst::ICMP_SGT:return ConstantInt::get(V1 > V2); + case ICmpInst::ICMP_SLE:return ConstantInt::get(V1 <= V2); + case ICmpInst::ICMP_SGE:return ConstantInt::get(V1 >= V2); } } else { uint64_t V1 = cast<ConstantInt>(C1)->getZExtValue(); uint64_t V2 = cast<ConstantInt>(C2)->getZExtValue(); switch (pred) { default: assert(0 && "Invalid ICmp Predicate"); return 0; - case ICmpInst::ICMP_EQ: return ConstantBool::get(V1 == V2); - case ICmpInst::ICMP_NE: return ConstantBool::get(V1 != V2); - case ICmpInst::ICMP_ULT:return ConstantBool::get(V1 < V2); - case ICmpInst::ICMP_UGT:return ConstantBool::get(V1 > V2); - case ICmpInst::ICMP_ULE:return ConstantBool::get(V1 <= V2); - case ICmpInst::ICMP_UGE:return ConstantBool::get(V1 >= V2); + case ICmpInst::ICMP_EQ: return ConstantInt::get(V1 == V2); + case ICmpInst::ICMP_NE: return ConstantInt::get(V1 != V2); + case ICmpInst::ICMP_ULT:return ConstantInt::get(V1 < V2); + case ICmpInst::ICMP_UGT:return ConstantInt::get(V1 > V2); + case ICmpInst::ICMP_ULE:return ConstantInt::get(V1 <= V2); + case ICmpInst::ICMP_UGE:return ConstantInt::get(V1 >= V2); } } } else if (isa<ConstantFP>(C1) && isa<ConstantFP>(C2)) { @@ -1107,42 +1103,42 @@ Constant *llvm::ConstantFoldCompareInstruction(unsigned short pred, double C2Val = cast<ConstantFP>(C2)->getValue(); switch (pred) { default: assert(0 && "Invalid FCmp Predicate"); return 0; - case FCmpInst::FCMP_FALSE: return ConstantBool::getFalse(); - case FCmpInst::FCMP_TRUE: return ConstantBool::getTrue(); + case FCmpInst::FCMP_FALSE: return ConstantInt::getFalse(); + case FCmpInst::FCMP_TRUE: return ConstantInt::getTrue(); case FCmpInst::FCMP_UNO: - return ConstantBool::get(C1Val != C1Val || C2Val != C2Val); + return ConstantInt::get(C1Val != C1Val || C2Val != C2Val); case FCmpInst::FCMP_ORD: - return ConstantBool::get(C1Val == C1Val && C2Val == C2Val); + return ConstantInt::get(C1Val == C1Val && C2Val == C2Val); case FCmpInst::FCMP_UEQ: if (C1Val != C1Val || C2Val != C2Val) - return ConstantBool::getTrue(); + return ConstantInt::getTrue(); /* FALL THROUGH */ - case FCmpInst::FCMP_OEQ: return ConstantBool::get(C1Val == C2Val); + case FCmpInst::FCMP_OEQ: return ConstantInt::get(C1Val == C2Val); case FCmpInst::FCMP_UNE: if (C1Val != C1Val || C2Val != C2Val) - return ConstantBool::getTrue(); + return ConstantInt::getTrue(); /* FALL THROUGH */ - case FCmpInst::FCMP_ONE: return ConstantBool::get(C1Val != C2Val); + case FCmpInst::FCMP_ONE: return ConstantInt::get(C1Val != C2Val); case FCmpInst::FCMP_ULT: if (C1Val != C1Val || C2Val != C2Val) - return ConstantBool::getTrue(); + return ConstantInt::getTrue(); /* FALL THROUGH */ - case FCmpInst::FCMP_OLT: return ConstantBool::get(C1Val < C2Val); + case FCmpInst::FCMP_OLT: return ConstantInt::get(C1Val < C2Val); case FCmpInst::FCMP_UGT: if (C1Val != C1Val || C2Val != C2Val) - return ConstantBool::getTrue(); + return ConstantInt::getTrue(); /* FALL THROUGH */ - case FCmpInst::FCMP_OGT: return ConstantBool::get(C1Val > C2Val); + case FCmpInst::FCMP_OGT: return ConstantInt::get(C1Val > C2Val); case FCmpInst::FCMP_ULE: if (C1Val != C1Val || C2Val != C2Val) - return ConstantBool::getTrue(); + return ConstantInt::getTrue(); /* FALL THROUGH */ - case FCmpInst::FCMP_OLE: return ConstantBool::get(C1Val <= C2Val); + case FCmpInst::FCMP_OLE: return ConstantInt::get(C1Val <= C2Val); case FCmpInst::FCMP_UGE: if (C1Val != C1Val || C2Val != C2Val) - return ConstantBool::getTrue(); + return ConstantInt::getTrue(); /* FALL THROUGH */ - case FCmpInst::FCMP_OGE: return ConstantBool::get(C1Val >= C2Val); + case FCmpInst::FCMP_OGE: return ConstantInt::get(C1Val >= C2Val); } } else if (const ConstantPacked *CP1 = dyn_cast<ConstantPacked>(C1)) { if (const ConstantPacked *CP2 = dyn_cast<ConstantPacked>(C2)) { @@ -1151,7 +1147,7 @@ Constant *llvm::ConstantFoldCompareInstruction(unsigned short pred, Constant *C= ConstantExpr::getFCmp(FCmpInst::FCMP_OEQ, const_cast<Constant*>(CP1->getOperand(i)), const_cast<Constant*>(CP2->getOperand(i))); - if (ConstantBool *CB = dyn_cast<ConstantBool>(C)) + if (ConstantInt *CB = dyn_cast<ConstantInt>(C)) return CB; } // Otherwise, could not decide from any element pairs. @@ -1161,7 +1157,7 @@ Constant *llvm::ConstantFoldCompareInstruction(unsigned short pred, Constant *C = ConstantExpr::getICmp(ICmpInst::ICMP_EQ, const_cast<Constant*>(CP1->getOperand(i)), const_cast<Constant*>(CP2->getOperand(i))); - if (ConstantBool *CB = dyn_cast<ConstantBool>(C)) + if (ConstantInt *CB = dyn_cast<ConstantInt>(C)) return CB; } // Otherwise, could not decide from any element pairs. @@ -1186,40 +1182,40 @@ Constant *llvm::ConstantFoldCompareInstruction(unsigned short pred, case FCmpInst::BAD_FCMP_PREDICATE: break; // Couldn't determine anything about these constants. case FCmpInst::FCMP_OEQ: // We know that C1 == C2 - return ConstantBool::get( + return ConstantInt::get( pred == FCmpInst::FCMP_UEQ || pred == FCmpInst::FCMP_OEQ || pred == FCmpInst::FCMP_ULE || pred == FCmpInst::FCMP_OLE || pred == FCmpInst::FCMP_UGE || pred == FCmpInst::FCMP_OGE); case FCmpInst::FCMP_OLT: // We know that C1 < C2 - return ConstantBool::get( + return ConstantInt::get( pred == FCmpInst::FCMP_UNE || pred == FCmpInst::FCMP_ONE || pred == FCmpInst::FCMP_ULT || pred == FCmpInst::FCMP_OLT || pred == FCmpInst::FCMP_ULE || pred == FCmpInst::FCMP_OLE); case FCmpInst::FCMP_OGT: // We know that C1 > C2 - return ConstantBool::get( + return ConstantInt::get( pred == FCmpInst::FCMP_UNE || pred == FCmpInst::FCMP_ONE || pred == FCmpInst::FCMP_UGT || pred == FCmpInst::FCMP_OGT || pred == FCmpInst::FCMP_UGE || pred == FCmpInst::FCMP_OGE); case FCmpInst::FCMP_OLE: // We know that C1 <= C2 // We can only partially decide this relation. if (pred == FCmpInst::FCMP_UGT || pred == FCmpInst::FCMP_OGT) - return ConstantBool::getFalse(); + return ConstantInt::getFalse(); if (pred == FCmpInst::FCMP_ULT || pred == FCmpInst::FCMP_OLT) - return ConstantBool::getTrue(); + return ConstantInt::getTrue(); break; case FCmpInst::FCMP_OGE: // We known that C1 >= C2 // We can only partially decide this relation. if (pred == FCmpInst::FCMP_ULT || pred == FCmpInst::FCMP_OLT) - return ConstantBool::getFalse(); + return ConstantInt::getFalse(); if (pred == FCmpInst::FCMP_UGT || pred == FCmpInst::FCMP_OGT) - return ConstantBool::getTrue(); + return ConstantInt::getTrue(); break; case ICmpInst::ICMP_NE: // We know that C1 != C2 // We can only partially decide this relation. if (pred == FCmpInst::FCMP_OEQ || pred == FCmpInst::FCMP_UEQ) - return ConstantBool::getFalse(); + return ConstantInt::getFalse(); if (pred == FCmpInst::FCMP_ONE || pred == FCmpInst::FCMP_UNE) - return ConstantBool::getTrue(); + return ConstantInt::getTrue(); break; } } else { @@ -1231,61 +1227,61 @@ Constant *llvm::ConstantFoldCompareInstruction(unsigned short pred, case ICmpInst::ICMP_EQ: // We know the constants are equal! // If we know the constants are equal, we can decide the result of this // computation precisely. - return ConstantBool::get(pred == ICmpInst::ICMP_EQ || - pred == ICmpInst::ICMP_ULE || - pred == ICmpInst::ICMP_SLE || - pred == ICmpInst::ICMP_UGE || - pred == ICmpInst::ICMP_SGE); + return ConstantInt::get(pred == ICmpInst::ICMP_EQ || + pred == ICmpInst::ICMP_ULE || + pred == ICmpInst::ICMP_SLE || + pred == ICmpInst::ICMP_UGE || + pred == ICmpInst::ICMP_SGE); case ICmpInst::ICMP_ULT: // If we know that C1 < C2, we can decide the result of this computation // precisely. - return ConstantBool::get(pred == ICmpInst::ICMP_ULT || - pred == ICmpInst::ICMP_NE || - pred == ICmpInst::ICMP_ULE); + return ConstantInt::get(pred == ICmpInst::ICMP_ULT || + pred == ICmpInst::ICMP_NE || + pred == ICmpInst::ICMP_ULE); case ICmpInst::ICMP_SLT: // If we know that C1 < C2, we can decide the result of this computation // precisely. - return ConstantBool::get(pred == ICmpInst::ICMP_SLT || - pred == ICmpInst::ICMP_NE || - pred == ICmpInst::ICMP_SLE); + return ConstantInt::get(pred == ICmpInst::ICMP_SLT || + pred == ICmpInst::ICMP_NE || + pred == ICmpInst::ICMP_SLE); case ICmpInst::ICMP_UGT: // If we know that C1 > C2, we can decide the result of this computation // precisely. - return ConstantBool::get(pred == ICmpInst::ICMP_UGT || - pred == ICmpInst::ICMP_NE || - pred == ICmpInst::ICMP_UGE); + return ConstantInt::get(pred == ICmpInst::ICMP_UGT || + pred == ICmpInst::ICMP_NE || + pred == ICmpInst::ICMP_UGE); case ICmpInst::ICMP_SGT: // If we know that C1 > C2, we can decide the result of this computation // precisely. - return ConstantBool::get(pred == ICmpInst::ICMP_SGT || - pred == ICmpInst::ICMP_NE || - pred == ICmpInst::ICMP_SGE); + return ConstantInt::get(pred == ICmpInst::ICMP_SGT || + pred == ICmpInst::ICMP_NE || + pred == ICmpInst::ICMP_SGE); case ICmpInst::ICMP_ULE: // If we know that C1 <= C2, we can only partially decide this relation. - if (pred == ICmpInst::ICMP_UGT) return ConstantBool::getFalse(); - if (pred == ICmpInst::ICMP_ULT) return ConstantBool::getTrue(); + if (pred == ICmpInst::ICMP_UGT) return ConstantInt::getFalse(); + if (pred == ICmpInst::ICMP_ULT) return ConstantInt::getTrue(); break; case ICmpInst::ICMP_SLE: // If we know that C1 <= C2, we can only partially decide this relation. - if (pred == ICmpInst::ICMP_SGT) return ConstantBool::getFalse(); - if (pred == ICmpInst::ICMP_SLT) return ConstantBool::getTrue(); + if (pred == ICmpInst::ICMP_SGT) return ConstantInt::getFalse(); + if (pred == ICmpInst::ICMP_SLT) return ConstantInt::getTrue(); break; case ICmpInst::ICMP_UGE: // If we know that C1 >= C2, we can only partially decide this relation. - if (pred == ICmpInst::ICMP_ULT) return ConstantBool::getFalse(); - if (pred == ICmpInst::ICMP_UGT) return ConstantBool::getTrue(); + if (pred == ICmpInst::ICMP_ULT) return ConstantInt::getFalse(); + if (pred == ICmpInst::ICMP_UGT) return ConstantInt::getTrue(); break; case ICmpInst::ICMP_SGE: // If we know that C1 >= C2, we can only partially decide this relation. - if (pred == ICmpInst::ICMP_SLT) return ConstantBool::getFalse(); - if (pred == ICmpInst::ICMP_SGT) return ConstantBool::getTrue(); + if (pred == ICmpInst::ICMP_SLT) return ConstantInt::getFalse(); + if (pred == ICmpInst::ICMP_SGT) return ConstantInt::getTrue(); break; case ICmpInst::ICMP_NE: // If we know that C1 != C2, we can only partially decide this relation. - if (pred == ICmpInst::ICMP_EQ) return ConstantBool::getFalse(); - if (pred == ICmpInst::ICMP_NE) return ConstantBool::getTrue(); + if (pred == ICmpInst::ICMP_EQ) return ConstantInt::getFalse(); + if (pred == ICmpInst::ICMP_NE) return ConstantInt::getTrue(); break; } diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index dfdb1f7..74dc0dd 100644 --- a/lib/VMCore/Constants.cpp +++ b/lib/VMCore/Constants.cpp @@ -93,7 +93,7 @@ bool Constant::canTrap() const { Constant *Constant::getNullValue(const Type *Ty) { switch (Ty->getTypeID()) { case Type::BoolTyID: { - static Constant *NullBool = ConstantBool::get(false); + static Constant *NullBool = ConstantInt::get(false); return NullBool; } case Type::Int8TyID: { @@ -135,9 +135,9 @@ Constant *Constant::getNullValue(const Type *Ty) { // Static constructor to create an integral constant with all bits set -ConstantIntegral *ConstantIntegral::getAllOnesValue(const Type *Ty) { +ConstantInt *ConstantInt::getAllOnesValue(const Type *Ty) { switch (Ty->getTypeID()) { - case Type::BoolTyID: return ConstantBool::getTrue(); + case Type::BoolTyID: return ConstantInt::getTrue(); case Type::Int8TyID: case Type::Int16TyID: case Type::Int32TyID: @@ -152,7 +152,7 @@ ConstantIntegral *ConstantIntegral::getAllOnesValue(const Type *Ty) { ConstantPacked *ConstantPacked::getAllOnesValue(const PackedType *Ty) { std::vector<Constant*> Elts; Elts.resize(Ty->getNumElements(), - ConstantIntegral::getAllOnesValue(Ty->getElementType())); + ConstantInt::getAllOnesValue(Ty->getElementType())); assert(Elts[0] && "Not a packed integer type!"); return cast<ConstantPacked>(ConstantPacked::get(Elts)); } @@ -165,16 +165,12 @@ ConstantPacked *ConstantPacked::getAllOnesValue(const PackedType *Ty) { //===----------------------------------------------------------------------===// // Normal Constructors -ConstantIntegral::ConstantIntegral(const Type *Ty, ValueTy VT, uint64_t V) - : Constant(Ty, VT, 0, 0), Val(V) { -} - -ConstantBool::ConstantBool(bool V) - : ConstantIntegral(Type::BoolTy, ConstantBoolVal, uint64_t(V)) { +ConstantInt::ConstantInt(bool V) + : Constant(Type::BoolTy, ConstantIntVal, 0, 0), Val(uint64_t(V)) { } ConstantInt::ConstantInt(const Type *Ty, uint64_t V) - : ConstantIntegral(Ty, ConstantIntVal, V) { + : Constant(Ty, ConstantIntVal, 0, 0), Val(Ty == Type::BoolTy ? bool(V) : V) { } ConstantFP::ConstantFP(const Type *Ty, double V) @@ -383,9 +379,9 @@ Constant *ConstantExpr::getNeg(Constant *C) { return get(Instruction::Sub, ConstantFP::get(C->getType(), -0.0), C); } Constant *ConstantExpr::getNot(Constant *C) { - assert(isa<ConstantIntegral>(C) && "Cannot NOT a nonintegral type!"); + assert(isa<ConstantInt>(C) && "Cannot NOT a nonintegral type!"); return get(Instruction::Xor, C, - ConstantIntegral::getAllOnesValue(C->getType())); + ConstantInt::getAllOnesValue(C->getType())); } Constant *ConstantExpr::getAdd(Constant *C1, Constant *C2) { return get(Instruction::Add, C1, C2); @@ -555,6 +551,7 @@ getWithOperands(const std::vector<Constant*> &Ops) const { bool ConstantInt::isValueValidForType(const Type *Ty, uint64_t Val) { switch (Ty->getTypeID()) { default: return false; // These can't be represented as integers! + case Type::BoolTyID: return Val == 0 || Val == 1; case Type::Int8TyID: return Val <= UINT8_MAX; case Type::Int16TyID: return Val <= UINT16_MAX; case Type::Int32TyID: return Val <= UINT32_MAX; @@ -565,6 +562,7 @@ bool ConstantInt::isValueValidForType(const Type *Ty, uint64_t Val) { bool ConstantInt::isValueValidForType(const Type *Ty, int64_t Val) { switch (Ty->getTypeID()) { default: return false; // These can't be represented as integers! + case Type::BoolTyID: return (Val == 0 || Val == 1); case Type::Int8TyID: return (Val >= INT8_MIN && Val <= INT8_MAX); case Type::Int16TyID: return (Val >= INT16_MIN && Val <= UINT16_MAX); case Type::Int32TyID: return (Val >= INT32_MIN && Val <= UINT32_MAX); @@ -830,19 +828,6 @@ public: } -//---- ConstantBool::get*() implementation. - -ConstantBool *ConstantBool::getTrue() { - static ConstantBool *T = 0; - if (T) return T; - return T = new ConstantBool(true); -} -ConstantBool *ConstantBool::getFalse() { - static ConstantBool *F = 0; - if (F) return F; - return F = new ConstantBool(false); -} - //---- ConstantInt::get() implementations... // static ManagedStatic<ValueMap<uint64_t, Type, ConstantInt> > IntConstants; @@ -853,11 +838,7 @@ static ManagedStatic<ValueMap<uint64_t, Type, ConstantInt> > IntConstants; // just return the stored value while getSExtValue has to convert back to sign // extended. getZExtValue is more common in LLVM than getSExtValue(). ConstantInt *ConstantInt::get(const Type *Ty, int64_t V) { - return IntConstants->getOrCreate(Ty, V & Ty->getIntegralTypeMask()); -} - -ConstantIntegral *ConstantIntegral::get(const Type *Ty, int64_t V) { - if (Ty == Type::BoolTy) return ConstantBool::get(V&1); + if (Ty == Type::BoolTy) return ConstantInt::get(V&1); return IntConstants->getOrCreate(Ty, V & Ty->getIntegralTypeMask()); } diff --git a/lib/VMCore/Instructions.cpp b/lib/VMCore/Instructions.cpp index 8063331..adcf4cd 100644 --- a/lib/VMCore/Instructions.cpp +++ b/lib/VMCore/Instructions.cpp @@ -1118,10 +1118,10 @@ BinaryOperator *BinaryOperator::createNot(Value *Op, const std::string &Name, Instruction *InsertBefore) { Constant *C; if (const PackedType *PTy = dyn_cast<PackedType>(Op->getType())) { - C = ConstantIntegral::getAllOnesValue(PTy->getElementType()); + C = ConstantInt::getAllOnesValue(PTy->getElementType()); C = ConstantPacked::get(std::vector<Constant*>(PTy->getNumElements(), C)); } else { - C = ConstantIntegral::getAllOnesValue(Op->getType()); + C = ConstantInt::getAllOnesValue(Op->getType()); } return new BinaryOperator(Instruction::Xor, Op, C, @@ -1133,11 +1133,11 @@ BinaryOperator *BinaryOperator::createNot(Value *Op, const std::string &Name, Constant *AllOnes; if (const PackedType *PTy = dyn_cast<PackedType>(Op->getType())) { // Create a vector of all ones values. - Constant *Elt = ConstantIntegral::getAllOnesValue(PTy->getElementType()); + Constant *Elt = ConstantInt::getAllOnesValue(PTy->getElementType()); AllOnes = ConstantPacked::get(std::vector<Constant*>(PTy->getNumElements(), Elt)); } else { - AllOnes = ConstantIntegral::getAllOnesValue(Op->getType()); + AllOnes = ConstantInt::getAllOnesValue(Op->getType()); } return new BinaryOperator(Instruction::Xor, Op, AllOnes, @@ -1147,7 +1147,7 @@ BinaryOperator *BinaryOperator::createNot(Value *Op, const std::string &Name, // isConstantAllOnes - Helper function for several functions below static inline bool isConstantAllOnes(const Value *V) { - return isa<ConstantIntegral>(V) &&cast<ConstantIntegral>(V)->isAllOnesValue(); + return isa<ConstantInt>(V) &&cast<ConstantInt>(V)->isAllOnesValue(); } bool BinaryOperator::isNeg(const Value *V) { diff --git a/tools/llvm-upgrade/UpgradeParser.cpp b/tools/llvm-upgrade/UpgradeParser.cpp index ac0044b..50d98d9 100644 --- a/tools/llvm-upgrade/UpgradeParser.cpp +++ b/tools/llvm-upgrade/UpgradeParser.cpp @@ -368,7 +368,7 @@ /* Copy the first part of user declarations. */ -#line 14 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 14 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" #include "UpgradeInternals.h" #include <algorithm> @@ -1174,7 +1174,7 @@ std::string getGlobalName(const std::string* Name, const std::string Linkage, #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 802 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 802 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { std::string* String; const TypeInfo* Type; @@ -2684,7 +2684,7 @@ yyparse (void) #else int yyparse () - + ; #endif #endif { @@ -2931,26 +2931,26 @@ yyreduce: switch (yyn) { case 81: -#line 892 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 892 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[-1].String); ;} break; case 82: -#line 895 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 895 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 90: -#line 902 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 902 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 97: -#line 907 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 907 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += *(yyvsp[0].String); delete (yyvsp[0].String); @@ -2959,27 +2959,27 @@ yyreduce: break; case 98: -#line 912 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 912 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(""); ;} break; case 99: -#line 917 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 917 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 100: -#line 918 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 918 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;} break; case 101: -#line 921 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 921 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 102: -#line 922 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 922 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, ", "); *(yyvsp[-1].String) += " " + *(yyvsp[0].String); @@ -2989,7 +2989,7 @@ yyreduce: break; case 103: -#line 930 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 930 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -2998,17 +2998,17 @@ yyreduce: break; case 104: -#line 936 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 936 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 106: -#line 940 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 940 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 107: -#line 941 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 941 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, ", "); if (!(yyvsp[0].String)->empty()) @@ -3019,7 +3019,7 @@ yyreduce: break; case 109: -#line 951 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 951 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3028,28 +3028,28 @@ yyreduce: break; case 127: -#line 973 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 973 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Type) = TypeInfo::get(*(yyvsp[0].String), OpaqueTy); ;} break; case 128: -#line 976 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 976 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Type) = TypeInfo::get(*(yyvsp[0].String), UnresolvedTy); ;} break; case 129: -#line 979 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 979 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Type) = (yyvsp[0].Type); ;} break; case 130: -#line 982 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 982 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Type UpReference (yyvsp[0].String)->insert(0, "\\"); (yyval.Type) = TypeInfo::get(*(yyvsp[0].String), UpRefTy); @@ -3057,7 +3057,7 @@ yyreduce: break; case 131: -#line 986 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 986 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Function derived type? std::string newTy( (yyvsp[-3].Type)->getNewTy() + "("); for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) { @@ -3074,7 +3074,7 @@ yyreduce: break; case 132: -#line 999 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 999 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Sized array type? uint64_t elems = atoi((yyvsp[-3].String)->c_str()); (yyvsp[-3].String)->insert(0,"[ "); @@ -3084,7 +3084,7 @@ yyreduce: break; case 133: -#line 1005 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1005 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Packed array type? uint64_t elems = atoi((yyvsp[-3].String)->c_str()); (yyvsp[-3].String)->insert(0,"< "); @@ -3094,7 +3094,7 @@ yyreduce: break; case 134: -#line 1011 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1011 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Structure type? std::string newTy("{"); for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) { @@ -3108,14 +3108,14 @@ yyreduce: break; case 135: -#line 1021 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1021 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Empty structure type? (yyval.Type) = TypeInfo::get("{}", StructTy, new TypeList()); ;} break; case 136: -#line 1024 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1024 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Packed Structure type? std::string newTy("<{"); for (unsigned i = 0; i < (yyvsp[-2].TypeVec)->size(); ++i) { @@ -3129,21 +3129,21 @@ yyreduce: break; case 137: -#line 1034 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1034 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Empty packed structure type? (yyval.Type) = TypeInfo::get("<{}>", PackedStructTy, new TypeList()); ;} break; case 138: -#line 1037 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1037 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Pointer type? (yyval.Type) = (yyvsp[-1].Type)->getPointerType(); ;} break; case 139: -#line 1045 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1045 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = new TypeList(); (yyval.TypeVec)->push_back((yyvsp[0].Type)); @@ -3151,7 +3151,7 @@ yyreduce: break; case 140: -#line 1049 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1049 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = (yyvsp[-2].TypeVec); (yyval.TypeVec)->push_back((yyvsp[0].Type)); @@ -3159,7 +3159,7 @@ yyreduce: break; case 142: -#line 1057 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1057 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = (yyvsp[-2].TypeVec); (yyval.TypeVec)->push_back(TypeInfo::get("void",VoidTy)); @@ -3168,7 +3168,7 @@ yyreduce: break; case 143: -#line 1062 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1062 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = new TypeList(); (yyval.TypeVec)->push_back(TypeInfo::get("void",VoidTy)); @@ -3177,14 +3177,14 @@ yyreduce: break; case 144: -#line 1067 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1067 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVec) = new TypeList(); ;} break; case 145: -#line 1077 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1077 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr (yyval.Const).type = (yyvsp[-3].Type); (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); @@ -3194,7 +3194,7 @@ yyreduce: break; case 146: -#line 1083 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1083 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); @@ -3203,7 +3203,7 @@ yyreduce: break; case 147: -#line 1088 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1088 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); @@ -3213,7 +3213,7 @@ yyreduce: break; case 148: -#line 1094 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1094 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr (yyval.Const).type = (yyvsp[-3].Type); (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); @@ -3223,7 +3223,7 @@ yyreduce: break; case 149: -#line 1100 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1100 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-3].Type); (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy()); @@ -3233,7 +3233,7 @@ yyreduce: break; case 150: -#line 1106 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1106 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-2].Type); (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy()); @@ -3242,7 +3242,7 @@ yyreduce: break; case 151: -#line 1111 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1111 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -3252,7 +3252,7 @@ yyreduce: break; case 152: -#line 1117 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1117 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -3262,7 +3262,7 @@ yyreduce: break; case 153: -#line 1123 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1123 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[0].String), (yyvsp[-1].Type)->resolve(), true); (yyval.Const).type = (yyvsp[-1].Type); @@ -3273,7 +3273,7 @@ yyreduce: break; case 154: -#line 1130 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1130 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -3283,7 +3283,7 @@ yyreduce: break; case 155: -#line 1136 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1136 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -3293,7 +3293,7 @@ yyreduce: break; case 156: -#line 1142 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1142 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // integral constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -3303,7 +3303,7 @@ yyreduce: break; case 157: -#line 1148 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1148 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // integral constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -3313,7 +3313,7 @@ yyreduce: break; case 158: -#line 1154 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1154 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -3323,7 +3323,7 @@ yyreduce: break; case 159: -#line 1160 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1160 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -3333,7 +3333,7 @@ yyreduce: break; case 160: -#line 1166 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1166 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Float & Double constants (yyval.Const).type = (yyvsp[-1].Type); (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy()); @@ -3343,7 +3343,7 @@ yyreduce: break; case 161: -#line 1174 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1174 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string source = *(yyvsp[-3].Const).cnst; const TypeInfo* SrcTy = (yyvsp[-3].Const).type->resolve(); @@ -3361,7 +3361,7 @@ yyreduce: break; case 162: -#line 1188 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1188 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const).cnst; for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) { @@ -3377,7 +3377,7 @@ yyreduce: break; case 163: -#line 1200 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1200 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -3386,7 +3386,7 @@ yyreduce: break; case 164: -#line 1205 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1205 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const).type); (yyval.String) = new std::string(op); @@ -3396,7 +3396,7 @@ yyreduce: break; case 165: -#line 1211 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1211 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -3405,7 +3405,7 @@ yyreduce: break; case 166: -#line 1216 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1216 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) = getCompareOp(*(yyvsp[-5].String), (yyvsp[-3].Const).type); *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; @@ -3415,7 +3415,7 @@ yyreduce: break; case 167: -#line 1222 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1222 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " (" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -3424,7 +3424,7 @@ yyreduce: break; case 168: -#line 1227 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1227 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " (" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -3433,7 +3433,7 @@ yyreduce: break; case 169: -#line 1232 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1232 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { const char* shiftop = (yyvsp[-5].String)->c_str(); if (*(yyvsp[-5].String) == "shr") @@ -3445,7 +3445,7 @@ yyreduce: break; case 170: -#line 1240 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1240 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -3454,7 +3454,7 @@ yyreduce: break; case 171: -#line 1245 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1245 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -3463,7 +3463,7 @@ yyreduce: break; case 172: -#line 1250 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1250 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")"; (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy(); @@ -3472,7 +3472,7 @@ yyreduce: break; case 173: -#line 1260 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1260 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const).cnst; (yyvsp[0].Const).destroy(); @@ -3481,25 +3481,25 @@ yyreduce: break; case 174: -#line 1265 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1265 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(*(yyvsp[0].Const).cnst); (yyvsp[0].Const).destroy(); ;} break; case 177: -#line 1280 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1280 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 178: -#line 1285 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1285 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 179: -#line 1288 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1288 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3508,7 +3508,7 @@ yyreduce: break; case 180: -#line 1293 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1293 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *O << "module asm " << ' ' << *(yyvsp[0].String) << '\n'; (yyval.String) = 0; @@ -3516,7 +3516,7 @@ yyreduce: break; case 181: -#line 1297 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1297 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *O << "implementation\n"; (yyval.String) = 0; @@ -3524,17 +3524,17 @@ yyreduce: break; case 182: -#line 1301 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1301 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 184: -#line 1303 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1303 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;} break; case 185: -#line 1306 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1306 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { EnumeratedTypes.push_back((yyvsp[0].Type)); if (!(yyvsp[-2].String)->empty()) { @@ -3548,7 +3548,7 @@ yyreduce: break; case 186: -#line 1316 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1316 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Function prototypes can be in const pool *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3557,7 +3557,7 @@ yyreduce: break; case 187: -#line 1321 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1321 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Asm blocks can be in the const pool *O << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n'; delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String); @@ -3566,7 +3566,7 @@ yyreduce: break; case 188: -#line 1326 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1326 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String), (yyvsp[-1].Const).type->getPointerType(), @@ -3580,7 +3580,7 @@ yyreduce: break; case 189: -#line 1336 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1336 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String),(yyvsp[-1].Type)->getPointerType(), @@ -3594,7 +3594,7 @@ yyreduce: break; case 190: -#line 1346 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1346 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String),(yyvsp[-1].Type)->getPointerType(), @@ -3608,7 +3608,7 @@ yyreduce: break; case 191: -#line 1356 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1356 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].String)->empty()) { std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String),(yyvsp[-1].Type)->getPointerType(), @@ -3622,7 +3622,7 @@ yyreduce: break; case 192: -#line 1366 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1366 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n'; delete (yyvsp[-1].String); delete (yyvsp[0].String); @@ -3631,7 +3631,7 @@ yyreduce: break; case 193: -#line 1371 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1371 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << '\n'; delete (yyvsp[-2].String); delete (yyvsp[0].String); @@ -3640,14 +3640,14 @@ yyreduce: break; case 194: -#line 1376 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1376 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 198: -#line 1386 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1386 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3656,7 +3656,7 @@ yyreduce: break; case 199: -#line 1391 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1391 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); if (*(yyvsp[0].String) == "64") @@ -3667,7 +3667,7 @@ yyreduce: break; case 200: -#line 1398 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1398 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3676,7 +3676,7 @@ yyreduce: break; case 201: -#line 1403 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1403 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " = " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3685,7 +3685,7 @@ yyreduce: break; case 202: -#line 1410 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1410 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, "[ "); *(yyvsp[-1].String) += " ]"; @@ -3694,7 +3694,7 @@ yyreduce: break; case 203: -#line 1417 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1417 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3703,19 +3703,19 @@ yyreduce: break; case 205: -#line 1423 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1423 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 209: -#line 1432 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1432 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 210: -#line 1434 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1434 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string((yyvsp[-1].Type)->getNewTy()); if (!(yyvsp[0].String)->empty()) { @@ -3727,7 +3727,7 @@ yyreduce: break; case 211: -#line 1443 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1443 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -3735,21 +3735,21 @@ yyreduce: break; case 212: -#line 1447 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1447 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 213: -#line 1451 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1451 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 214: -#line 1454 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1454 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += ", ..."; (yyval.String) = (yyvsp[-2].String); @@ -3758,19 +3758,19 @@ yyreduce: break; case 215: -#line 1459 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1459 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); ;} break; case 216: -#line 1462 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1462 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 217: -#line 1465 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1465 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-7].String)->empty()) { *(yyvsp[-7].String) += " "; @@ -3791,17 +3791,17 @@ yyreduce: break; case 218: -#line 1483 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1483 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;} break; case 219: -#line 1484 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1484 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string ("{"); ;} break; case 220: -#line 1487 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1487 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *O << "define "; if (!(yyvsp[-2].String)->empty()) { @@ -3814,17 +3814,17 @@ yyreduce: break; case 221: -#line 1498 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1498 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;} break; case 222: -#line 1499 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1499 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string("}"); ;} break; case 223: -#line 1501 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1501 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[-1].String)) *O << *(yyvsp[-1].String); @@ -3835,12 +3835,12 @@ yyreduce: break; case 224: -#line 1510 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1510 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 227: -#line 1516 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1516 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-1].String)->empty()) *(yyvsp[-2].String) += " " + *(yyvsp[-1].String); @@ -3852,12 +3852,12 @@ yyreduce: break; case 228: -#line 1529 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1529 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 238: -#line 1535 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1535 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].String)->insert(0, "<"); *(yyvsp[-1].String) += ">"; @@ -3866,7 +3866,7 @@ yyreduce: break; case 240: -#line 1541 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1541 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-3].String)->empty()) { *(yyvsp[-4].String) += " " + *(yyvsp[-3].String); @@ -3878,7 +3878,7 @@ yyreduce: break; case 243: -#line 1554 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1554 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Value).val = (yyvsp[0].String); (yyval.Value).constant = false; @@ -3887,7 +3887,7 @@ yyreduce: break; case 244: -#line 1559 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1559 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Value).val = (yyvsp[0].String); (yyval.Value).constant = true; @@ -3896,7 +3896,7 @@ yyreduce: break; case 245: -#line 1569 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1569 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-1].Type) = (yyvsp[-1].Type)->resolve(); std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); @@ -3908,28 +3908,28 @@ yyreduce: break; case 246: -#line 1578 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1578 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 247: -#line 1581 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1581 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Do not allow functions with 0 basic blocks (yyval.String) = 0; ;} break; case 248: -#line 1589 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1589 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 249: -#line 1593 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1593 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3938,14 +3938,14 @@ yyreduce: break; case 250: -#line 1598 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1598 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = 0; ;} break; case 251: -#line 1601 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1601 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *O << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -3954,12 +3954,12 @@ yyreduce: break; case 253: -#line 1607 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1607 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;} break; case 254: -#line 1609 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1609 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Return with a result... *O << " " << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].Value).val << '\n'; delete (yyvsp[-1].String); (yyvsp[0].Value).destroy(); @@ -3968,7 +3968,7 @@ yyreduce: break; case 255: -#line 1614 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1614 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Return with no result... *O << " " << *(yyvsp[-1].String) << ' ' << (yyvsp[0].Type)->getNewTy() << '\n'; delete (yyvsp[-1].String); @@ -3977,7 +3977,7 @@ yyreduce: break; case 256: -#line 1619 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1619 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Unconditional Branch... *O << " " << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].Value).val << '\n'; delete (yyvsp[-2].String); (yyvsp[0].Value).destroy(); @@ -3986,7 +3986,7 @@ yyreduce: break; case 257: -#line 1624 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1624 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-6].Value).val, (yyvsp[-7].Type)); *O << " " << *(yyvsp[-8].String) << ' ' << (yyvsp[-7].Type)->getNewTy() << ' ' << Name << ", " @@ -3998,7 +3998,7 @@ yyreduce: break; case 258: -#line 1632 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1632 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-6].Value).val, (yyvsp[-7].Type)); *O << " " << *(yyvsp[-8].String) << ' ' << (yyvsp[-7].Type)->getNewTy() << ' ' << Name << ", " @@ -4010,7 +4010,7 @@ yyreduce: break; case 259: -#line 1640 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1640 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-5].Value).val, (yyvsp[-6].Type)); *O << " " << *(yyvsp[-7].String) << ' ' << (yyvsp[-6].Type)->getNewTy() << ' ' << Name << ", " @@ -4021,7 +4021,7 @@ yyreduce: break; case 260: -#line 1648 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1648 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { const TypeInfo* ResTy = getFunctionReturnType((yyvsp[-10].Type)); *O << " "; @@ -4046,7 +4046,7 @@ yyreduce: break; case 261: -#line 1669 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1669 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -4055,7 +4055,7 @@ yyreduce: break; case 262: -#line 1674 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1674 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *O << " " << *(yyvsp[0].String) << '\n'; delete (yyvsp[0].String); @@ -4064,7 +4064,7 @@ yyreduce: break; case 263: -#line 1680 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1680 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + " " + *(yyvsp[-3].String) + ", " + (yyvsp[-1].Type)->getNewTy() + " " + *(yyvsp[0].Value).val; @@ -4074,7 +4074,7 @@ yyreduce: break; case 264: -#line 1686 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1686 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyvsp[-3].String)->insert(0, (yyvsp[-4].Type)->getNewTy() + " " ); *(yyvsp[-3].String) += ", " + (yyvsp[-1].Type)->getNewTy() + " " + *(yyvsp[0].Value).val; @@ -4084,7 +4084,7 @@ yyreduce: break; case 265: -#line 1694 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1694 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-1].String)->empty()) { // Get a unique name for this value, based on its type. @@ -4104,7 +4104,7 @@ yyreduce: break; case 266: -#line 1712 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1712 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // Used for PHI nodes std::string Name = getUniqueName((yyvsp[-3].Value).val, (yyvsp[-5].Type)); Name.insert(0, (yyvsp[-5].Type)->getNewTy() + "["); @@ -4116,7 +4116,7 @@ yyreduce: break; case 267: -#line 1720 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1720 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-3].Value).val, (yyvsp[-6].Value).type); *(yyvsp[-6].Value).val += ", [" + Name + "," + *(yyvsp[-1].Value).val + "]"; @@ -4126,7 +4126,7 @@ yyreduce: break; case 268: -#line 1729 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1729 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = new ValueList(); (yyval.ValList)->push_back((yyvsp[0].Value)); @@ -4134,7 +4134,7 @@ yyreduce: break; case 269: -#line 1733 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1733 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = (yyvsp[-2].ValList); (yyval.ValList)->push_back((yyvsp[0].Value)); @@ -4142,17 +4142,17 @@ yyreduce: break; case 270: -#line 1740 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1740 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = (yyvsp[0].ValList); ;} break; case 271: -#line 1741 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1741 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = new ValueList(); ;} break; case 272: -#line 1745 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1745 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); @@ -4161,7 +4161,7 @@ yyreduce: break; case 274: -#line 1753 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1753 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { const char* op = getDivRemOpcode(*(yyvsp[-4].String), (yyvsp[-3].Type)); std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); @@ -4174,7 +4174,7 @@ yyreduce: break; case 275: -#line 1762 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1762 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); @@ -4186,7 +4186,7 @@ yyreduce: break; case 276: -#line 1770 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1770 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); @@ -4199,7 +4199,7 @@ yyreduce: break; case 277: -#line 1779 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1779 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); @@ -4211,7 +4211,7 @@ yyreduce: break; case 278: -#line 1787 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1787 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type)); std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type)); @@ -4223,7 +4223,7 @@ yyreduce: break; case 279: -#line 1795 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1795 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Value) = (yyvsp[0].Value); (yyval.Value).val->insert(0, *(yyvsp[-1].String) + " "); @@ -4232,7 +4232,7 @@ yyreduce: break; case 280: -#line 1800 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1800 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { const char* shiftop = (yyvsp[-3].String)->c_str(); if (*(yyvsp[-3].String) == "shr") @@ -4245,7 +4245,7 @@ yyreduce: break; case 281: -#line 1809 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1809 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string source = *(yyvsp[-2].Value).val; const TypeInfo* SrcTy = (yyvsp[-2].Value).type->resolve(); @@ -4277,7 +4277,7 @@ yyreduce: break; case 282: -#line 1837 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1837 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-5].String); @@ -4287,7 +4287,7 @@ yyreduce: break; case 283: -#line 1843 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1843 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + (yyvsp[0].Type)->getNewTy(); (yyval.Value).val = (yyvsp[-3].String); @@ -4297,7 +4297,7 @@ yyreduce: break; case 284: -#line 1849 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1849 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-3].String); @@ -4308,7 +4308,7 @@ yyreduce: break; case 285: -#line 1856 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1856 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-5].String); @@ -4318,7 +4318,7 @@ yyreduce: break; case 286: -#line 1862 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1862 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-5].String); @@ -4328,7 +4328,7 @@ yyreduce: break; case 287: -#line 1868 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1868 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-1].String); @@ -4338,7 +4338,7 @@ yyreduce: break; case 288: -#line 1874 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1874 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { // map llvm.isunordered to "fcmp uno" if (*(yyvsp[-3].Value).val == "%llvm.isunordered.f32" || @@ -4370,22 +4370,22 @@ yyreduce: break; case 290: -#line 1907 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1907 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = (yyvsp[0].ValList); ;} break; case 291: -#line 1908 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1908 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValList) = new ValueList(); ;} break; case 293: -#line 1913 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1913 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { (yyval.String) = new std::string(); ;} break; case 294: -#line 1916 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1916 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy(); if (!(yyvsp[0].String)->empty()) @@ -4397,7 +4397,7 @@ yyreduce: break; case 295: -#line 1924 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1924 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + ", " + (yyvsp[-2].Type)->getNewTy() + " " + Name; @@ -4410,7 +4410,7 @@ yyreduce: break; case 296: -#line 1933 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1933 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy(); if (!(yyvsp[0].String)->empty()) @@ -4422,7 +4422,7 @@ yyreduce: break; case 297: -#line 1941 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1941 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + ", " + (yyvsp[-2].Type)->getNewTy() + " " + Name; @@ -4435,7 +4435,7 @@ yyreduce: break; case 298: -#line 1950 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1950 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val; (yyval.Value).val = (yyvsp[-1].String); @@ -4445,7 +4445,7 @@ yyreduce: break; case 299: -#line 1956 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1956 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); if (!(yyvsp[-3].String)->empty()) @@ -4458,7 +4458,7 @@ yyreduce: break; case 300: -#line 1965 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1965 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type)); if (!(yyvsp[-5].String)->empty()) @@ -4471,7 +4471,7 @@ yyreduce: break; case 301: -#line 1974 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1974 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" { std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type)); // Upgrade the indices @@ -4769,7 +4769,7 @@ yyreturn: } -#line 1997 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 1997 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" int yyerror(const char *ErrorMsg) { diff --git a/tools/llvm-upgrade/UpgradeParser.h b/tools/llvm-upgrade/UpgradeParser.h index 3b247ca..36fd8b3 100644 --- a/tools/llvm-upgrade/UpgradeParser.h +++ b/tools/llvm-upgrade/UpgradeParser.h @@ -333,7 +333,7 @@ #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 802 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y" +#line 802 "/developer/zsth/llvm-gcc-dev/HEAD/llvm/llvm/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { std::string* String; const TypeInfo* Type; diff --git a/tools/llvm2cpp/CppWriter.cpp b/tools/llvm2cpp/CppWriter.cpp index b0eb120..313db9b 100644 --- a/tools/llvm2cpp/CppWriter.cpp +++ b/tools/llvm2cpp/CppWriter.cpp @@ -668,12 +668,13 @@ void CppWriter::printConstant(const Constant *CV) { // Skip variables and functions, we emit them elsewhere return; } - if (const ConstantBool *CB = dyn_cast<ConstantBool>(CV)) { - Out << "ConstantBool* " << constName << " = ConstantBool::get(" - << (CB->getValue() ? "true" : "false") << ");"; - } else if (const ConstantInt *CI = dyn_cast<ConstantInt>(CV)) { - Out << "ConstantInt* " << constName << " = ConstantInt::get(" - << typeName << ", " << CI->getZExtValue() << ");"; + if (const ConstantInt *CI = dyn_cast<ConstantInt>(CV)) { + if (CI->getType() == Type::BoolTy) + Out << "ConstantInt* " << constName << " = ConstantInt::get(" + << (CI->getBoolValue() ? "true" : "false") << ");"; + else + Out << "ConstantInt* " << constName << " = ConstantInt::get(" + << typeName << ", " << CI->getZExtValue() << ");"; } else if (isa<ConstantAggregateZero>(CV)) { Out << "ConstantAggregateZero* " << constName << " = ConstantAggregateZero::get(" << typeName << ");"; |