aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhou Sheng <zhousheng00@gmail.com>2007-01-11 12:24:14 +0000
committerZhou Sheng <zhousheng00@gmail.com>2007-01-11 12:24:14 +0000
commit6b6b6ef1677fa71b1072c2911b4c1f9524a558c9 (patch)
tree480ecf010ac5facd1bc29ab57441253691bb42d6
parent057809ac1c78c3456e8f1481330fa2bcd2b85029 (diff)
downloadexternal_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
-rw-r--r--include/llvm/Constants.h189
-rw-r--r--include/llvm/Support/ConstantRange.h11
-rw-r--r--include/llvm/Support/PatternMatch.h4
-rw-r--r--include/llvm/Value.h1
-rw-r--r--lib/Analysis/BasicAliasAnalysis.cpp15
-rw-r--r--lib/Analysis/ConstantRange.cpp50
-rw-r--r--lib/Analysis/ScalarEvolution.cpp28
-rw-r--r--lib/Analysis/ScalarEvolutionExpander.cpp2
-rw-r--r--lib/AsmParser/ParserInternals.h4
-rw-r--r--lib/AsmParser/llvmAsmParser.cpp.cvs1920
-rw-r--r--lib/AsmParser/llvmAsmParser.h.cvs2
-rw-r--r--lib/AsmParser/llvmAsmParser.y10
-rw-r--r--lib/AsmParser/llvmAsmParser.y.cvs62
-rw-r--r--lib/Bytecode/Reader/Reader.cpp2
-rw-r--r--lib/Bytecode/Writer/Writer.cpp2
-rw-r--r--lib/CodeGen/AsmPrinter.cpp10
-rw-r--r--lib/CodeGen/MachineDebugInfo.cpp6
-rw-r--r--lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp24
-rw-r--r--lib/ExecutionEngine/ExecutionEngine.cpp2
-rw-r--r--lib/ExecutionEngine/JIT/JIT.cpp2
-rw-r--r--lib/Support/ConstantRange.cpp50
-rw-r--r--lib/Target/CBackend/CBackend.cpp27
-rw-r--r--lib/Transforms/IPO/GlobalOpt.cpp21
-rw-r--r--lib/Transforms/Instrumentation/RSProfiling.cpp4
-rw-r--r--lib/Transforms/Scalar/CondPropagate.cpp5
-rw-r--r--lib/Transforms/Scalar/CorrelatedExprs.cpp156
-rw-r--r--lib/Transforms/Scalar/InstructionCombining.cpp218
-rw-r--r--lib/Transforms/Scalar/LoopUnswitch.cpp64
-rw-r--r--lib/Transforms/Scalar/PredicateSimplifier.cpp57
-rw-r--r--lib/Transforms/Scalar/Reassociate.cpp4
-rw-r--r--lib/Transforms/Scalar/SCCP.cpp22
-rw-r--r--lib/Transforms/Utils/CloneFunction.cpp13
-rw-r--r--lib/Transforms/Utils/CodeExtractor.cpp2
-rw-r--r--lib/Transforms/Utils/Local.cpp6
-rw-r--r--lib/Transforms/Utils/SimplifyCFG.cpp13
-rw-r--r--lib/Transforms/Utils/ValueMapper.cpp2
-rw-r--r--lib/VMCore/AsmWriter.cpp8
-rw-r--r--lib/VMCore/ConstantFold.cpp340
-rw-r--r--lib/VMCore/Constants.cpp43
-rw-r--r--lib/VMCore/Instructions.cpp10
-rw-r--r--tools/llvm-upgrade/UpgradeParser.cpp328
-rw-r--r--tools/llvm-upgrade/UpgradeParser.h2
-rw-r--r--tools/llvm2cpp/CppWriter.cpp13
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 << ");";