aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/DerivedTypes.h35
-rw-r--r--include/llvm/Intrinsics.td34
-rw-r--r--include/llvm/Target/TargetLowering.h17
-rw-r--r--include/llvm/Type.h59
-rw-r--r--lib/AsmParser/Lexer.cpp.cvs1457
-rw-r--r--lib/AsmParser/Lexer.l13
-rw-r--r--lib/AsmParser/Lexer.l.cvs13
-rw-r--r--lib/AsmParser/llvmAsmParser.cpp.cvs2861
-rw-r--r--lib/AsmParser/llvmAsmParser.h.cvs502
-rw-r--r--lib/AsmParser/llvmAsmParser.y14
-rw-r--r--lib/AsmParser/llvmAsmParser.y.cvs14
-rw-r--r--lib/Bytecode/Reader/Reader.cpp80
-rw-r--r--lib/Bytecode/Reader/Reader.h14
-rw-r--r--lib/Bytecode/Writer/SlotCalculator.cpp75
-rw-r--r--lib/Bytecode/Writer/SlotCalculator.h3
-rw-r--r--lib/Bytecode/Writer/Writer.cpp62
-rw-r--r--lib/CodeGen/AsmPrinter.cpp33
-rw-r--r--lib/CodeGen/MachOWriter.cpp68
-rw-r--r--lib/ExecutionEngine/ExecutionEngine.cpp303
-rw-r--r--lib/ExecutionEngine/Interpreter/Execution.cpp1065
-rw-r--r--lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp14
-rw-r--r--lib/ExecutionEngine/Interpreter/Interpreter.h37
-rw-r--r--lib/ExecutionEngine/JIT/JIT.cpp48
-rw-r--r--lib/Linker/LinkModules.cpp8
-rw-r--r--lib/Target/CBackend/CBackend.cpp74
-rw-r--r--lib/Target/TargetData.cpp21
-rw-r--r--lib/Target/X86/X86TargetAsmInfo.cpp18
-rw-r--r--lib/Transforms/IPO/DeadTypeElimination.cpp7
-rw-r--r--lib/Transforms/IPO/SimplifyLibCalls.cpp18
-rw-r--r--lib/Transforms/Scalar/IndVarSimplify.cpp20
-rw-r--r--lib/Transforms/Scalar/InstructionCombining.cpp33
-rw-r--r--lib/Transforms/Scalar/SCCP.cpp2
-rw-r--r--lib/Transforms/Scalar/ScalarReplAggregates.cpp7
-rw-r--r--lib/VMCore/AsmWriter.cpp18
-rw-r--r--lib/VMCore/ConstantFold.cpp16
-rw-r--r--lib/VMCore/Constants.cpp95
-rw-r--r--lib/VMCore/Instructions.cpp8
-rw-r--r--lib/VMCore/Type.cpp149
-rw-r--r--lib/VMCore/Verifier.cpp41
-rw-r--r--tools/llvm2cpp/CppWriter.cpp51
-rw-r--r--utils/TableGen/IntrinsicEmitter.cpp10
41 files changed, 4029 insertions, 3388 deletions
diff --git a/include/llvm/DerivedTypes.h b/include/llvm/DerivedTypes.h
index f8d9a1bf94..78759f1dea 100644
--- a/include/llvm/DerivedTypes.h
+++ b/include/llvm/DerivedTypes.h
@@ -29,6 +29,7 @@ class ArrayValType;
class StructValType;
class PointerValType;
class PackedValType;
+class IntegerValType;
class DerivedType : public Type {
friend class Type;
@@ -71,6 +72,40 @@ public:
}
};
+/// Class to represent integer types. Note that this class is also used to
+/// represent the built-in integer types: Int1Ty, Int8Ty, Int16Ty, Int32Ty and
+/// Int64Ty.
+/// @brief Integer representation type
+class IntegerType : public DerivedType {
+protected:
+ IntegerType(unsigned NumBits) : DerivedType(IntegerTyID) {
+ setSubclassData(NumBits);
+ }
+ friend class TypeMap<IntegerValType, IntegerType>;
+public:
+ /// This enum is just used to hold constants we need for IntegerType.
+ enum {
+ MIN_INT_BITS = 1, ///< Minimum number of bits that can be specified
+ MAX_INT_BITS = (1<<23)-1 ///< Maximum number of bits that can be specified
+ ///< Note that bit width is stored in the Type classes SubclassData field
+ ///< which has 23 bits. This yields a maximum bit width of 8,388,607 bits.
+ };
+
+ /// This static method is the primary way of constructing an IntegerType.
+ /// If an IntegerType with the same NumBits value was previously instantiated,
+ /// that instance will be returned. Otherwise a new one will be created. Only
+ /// one instance with a given NumBits value is ever created.
+ /// @brief Get or create an IntegerType instance.
+ static const IntegerType* get(unsigned NumBits);
+
+ /// @brief Get the number of bits in this IntegerType
+ unsigned getBitWidth() const { return getSubclassData(); }
+
+ // Methods for support type inquiry through isa, cast, and dyn_cast:
+ static inline bool classof(const IntegerType *T) { return true; }
+ static inline bool classof(const Type *T) { return T->isIntegral(); }
+};
+
/// FunctionType - Class to represent function types
///
diff --git a/include/llvm/Intrinsics.td b/include/llvm/Intrinsics.td
index ca6725b648..6bcbd6895f 100644
--- a/include/llvm/Intrinsics.td
+++ b/include/llvm/Intrinsics.td
@@ -57,6 +57,11 @@ class LLVMType<ValueType vt, string typeval> {
string TypeVal = typeval;
}
+class LLVMIntegerType<ValueType VT, int width>
+ : LLVMType<VT, "Type::IntegerTyID"> {
+ int Width = width;
+}
+
class LLVMPackedType<ValueType VT, int numelts, LLVMType elty>
: LLVMType<VT, "Type::PackedTyID">{
int NumElts = numelts;
@@ -64,25 +69,24 @@ class LLVMPackedType<ValueType VT, int numelts, LLVMType elty>
}
def llvm_void_ty : LLVMType<isVoid, "Type::VoidTyID">;
-def llvm_i1_ty : LLVMType<i1 , "Type::Int1TyID">;
-def llvm_i8_ty : LLVMType<i8 , "Type::Int8TyID">;
-def llvm_i16_ty : LLVMType<i16, "Type::Int16TyID">;
-def llvm_i32_ty : LLVMType<i32, "Type::Int32TyID">;
-def llvm_i64_ty : LLVMType<i64, "Type::Int64TyID">;
+def llvm_bool_ty : LLVMIntegerType<i1, 1>;
+def llvm_i8_ty : LLVMIntegerType<i8 , 8>;
+def llvm_i16_ty : LLVMIntegerType<i16, 16>;
+def llvm_i32_ty : LLVMIntegerType<i32, 32>;
+def llvm_i64_ty : LLVMIntegerType<i64, 64>;
def llvm_float_ty : LLVMType<f32, "Type::FloatTyID">;
def llvm_double_ty : LLVMType<f64, "Type::DoubleTyID">;
-def llvm_ptr_ty : LLVMType<iPTR, "Type::PointerTyID">; // sbyte*
-def llvm_ptrptr_ty : LLVMType<iPTR, "Type::PointerTyID">; // sbyte**
+def llvm_ptr_ty : LLVMType<iPTR, "Type::PointerTyID">; // i8*
+def llvm_ptrptr_ty : LLVMType<iPTR, "Type::PointerTyID">; // i8**
def llvm_descriptor_ty : LLVMType<iPTR, "Type::PointerTyID">; // global*
-def llvm_v16i8_ty : LLVMPackedType<v16i8,16, llvm_i8_ty>; // 16 x sbyte
-def llvm_v8i16_ty : LLVMPackedType<v8i16, 8, llvm_i16_ty>; // 8 x short
-
-def llvm_v2i64_ty : LLVMPackedType<v2i64, 2, llvm_i64_ty>; // 2 x long
-def llvm_v2i32_ty : LLVMPackedType<v2i32, 2, llvm_i32_ty>; // 2 x int
-def llvm_v4i32_ty : LLVMPackedType<v4i32, 4, llvm_i32_ty>; // 4 x int
-def llvm_v4f32_ty : LLVMPackedType<v4f32, 4, llvm_float_ty>; // 4 x float
-def llvm_v2f64_ty : LLVMPackedType<v2f64, 2, llvm_double_ty>; // 2 x double
+def llvm_v16i8_ty : LLVMPackedType<v16i8,16, llvm_i8_ty>; // 16 x i8
+def llvm_v8i16_ty : LLVMPackedType<v8i16, 8, llvm_i16_ty>; // 8 x i16
+def llvm_v2i64_ty : LLVMPackedType<v2i64, 2, llvm_i64_ty>; // 2 x i64
+def llvm_v2i32_ty : LLVMPackedType<v2i32, 2, llvm_i32_ty>; // 2 x i32
+def llvm_v4i32_ty : LLVMPackedType<v4i32, 4, llvm_i32_ty>; // 4 x i32
+def llvm_v4f32_ty : LLVMPackedType<v4f32, 4, llvm_float_ty>; // 4 x float
+def llvm_v2f64_ty : LLVMPackedType<v2f64, 2, llvm_double_ty>;// 2 x double
//===----------------------------------------------------------------------===//
// Intrinsic Definitions.
diff --git a/include/llvm/Target/TargetLowering.h b/include/llvm/Target/TargetLowering.h
index 5749d520d8..fd2caf8bf8 100644
--- a/include/llvm/Target/TargetLowering.h
+++ b/include/llvm/Target/TargetLowering.h
@@ -22,7 +22,7 @@
#ifndef LLVM_TARGET_TARGETLOWERING_H
#define LLVM_TARGET_TARGETLOWERING_H
-#include "llvm/Type.h"
+#include "llvm/DerivedTypes.h"
#include "llvm/CodeGen/SelectionDAGNodes.h"
#include <map>
@@ -429,11 +429,16 @@ public:
switch (Ty->getTypeID()) {
default: assert(0 && "Unknown type!");
case Type::VoidTyID: return MVT::isVoid;
- case Type::Int1TyID: return MVT::i1;
- case Type::Int8TyID: return MVT::i8;
- case Type::Int16TyID: return MVT::i16;
- case Type::Int32TyID: return MVT::i32;
- case Type::Int64TyID: return MVT::i64;
+ case Type::IntegerTyID:
+ switch (cast<IntegerType>(Ty)->getBitWidth()) {
+ default: assert(0 && "Invalid width for value type");
+ case 1: return MVT::i1;
+ case 8: return MVT::i8;
+ case 16: return MVT::i16;
+ case 32: return MVT::i32;
+ case 64: return MVT::i64;
+ }
+ break;
case Type::FloatTyID: return MVT::f32;
case Type::DoubleTyID: return MVT::f64;
case Type::PointerTyID: return PointerTy;
diff --git a/include/llvm/Type.h b/include/llvm/Type.h
index 29180a00e5..b95f146deb 100644
--- a/include/llvm/Type.h
+++ b/include/llvm/Type.h
@@ -71,32 +71,31 @@ public:
///
enum TypeID {
// PrimitiveTypes .. make sure LastPrimitiveTyID stays up to date
- VoidTyID = 0 , Int1TyID, // 0, 1: Basics...
- Int8TyID, // 2 : 8 bit type...
- Int16TyID, // 3 : 16 bit type...
- Int32TyID, // 4 : 32 bit type...
- Int64TyID, // 5 : 64 bit type...
- FloatTyID, DoubleTyID, // 6, 7: Floating point types...
- LabelTyID, // 8 : Labels...
+ VoidTyID = 0, ///< 0: type with no size
+ FloatTyID, ///< 1: 32 bit floating point type
+ DoubleTyID, ///< 2: 64 bit floating point type
+ LabelTyID, ///< 3: Labels
// Derived types... see DerivedTypes.h file...
// Make sure FirstDerivedTyID stays up to date!!!
- FunctionTyID , StructTyID, // Functions... Structs...
- ArrayTyID , PointerTyID, // Array... pointer...
- OpaqueTyID, // Opaque type instances...
- PackedTyID, // SIMD 'packed' format...
- BC_ONLY_PackedStructTyID, // packed struct, for BC rep only
- //...
+ IntegerTyID, ///< 4: Arbitrary bit width integers
+ FunctionTyID, ///< 5: Functions
+ StructTyID, ///< 6: Structures
+ PackedStructTyID,///< 7: Packed Structure. This is for bytecode only
+ ArrayTyID, ///< 8: Arrays
+ PointerTyID, ///< 9: Pointers
+ OpaqueTyID, ///< 10: Opaque: type with unknown structure
+ PackedTyID, ///< 11: SIMD 'packed' format, or other vector type
NumTypeIDs, // Must remain as last defined ID
LastPrimitiveTyID = LabelTyID,
- FirstDerivedTyID = FunctionTyID
+ FirstDerivedTyID = IntegerTyID
};
private:
TypeID ID : 8; // The current base type of this type.
bool Abstract : 1; // True if type contains an OpaqueType
- bool SubclassData : 1; //Space for subclasses to store a flag
+ unsigned SubclassData : 23; //Space for subclasses to store data
/// RefCount - This counts the number of PATypeHolders that are pointing to
/// this type. When this number falls to zero, if the type is abstract and
@@ -108,7 +107,8 @@ private:
const Type *getForwardedTypeInternal() const;
protected:
Type(const char *Name, TypeID id);
- Type(TypeID id) : ID(id), Abstract(false), RefCount(0), ForwardType(0) {}
+ Type(TypeID id) : ID(id), Abstract(false), SubclassData(0), RefCount(0),
+ ForwardType(0) {}
virtual ~Type() {
assert(AbstractTypeUsers.empty());
}
@@ -119,8 +119,8 @@ protected:
unsigned getRefCount() const { return RefCount; }
- bool getSubclassData() const { return SubclassData; }
- void setSubclassData(bool b) { SubclassData = b; }
+ unsigned getSubclassData() const { return SubclassData; }
+ void setSubclassData(unsigned val) { SubclassData = val; }
/// ForwardType - This field is used to implement the union find scheme for
/// abstract types. When types are refined to other types, this field is set
@@ -162,12 +162,12 @@ public:
/// isInteger - Equivalent to isSigned() || isUnsigned()
///
- bool isInteger() const { return ID >= Int8TyID && ID <= Int64TyID; }
+ bool isInteger() const { return ID == IntegerTyID && this != Int1Ty; }
/// isIntegral - Returns true if this is an integral type, which is either
/// Int1Ty or one of the Integer types.
///
- bool isIntegral() const { return isInteger() || this == Int1Ty; }
+ bool isIntegral() const { return ID == IntegerTyID; }
/// isFloatingPoint - Return true if this is one of the two floating point
/// types
@@ -200,7 +200,7 @@ public:
///
inline bool isFirstClassType() const {
return (ID != VoidTyID && ID <= LastPrimitiveTyID) ||
- ID == PointerTyID || ID == PackedTyID;
+ ID == IntegerTyID || ID == PointerTyID || ID == PackedTyID;
}
/// isSized - Return true if it makes sense to take the size of this type. To
@@ -209,11 +209,13 @@ public:
///
bool isSized() const {
// If it's a primitive, it is always sized.
- if (ID >= Int1TyID && ID <= DoubleTyID || ID == PointerTyID)
+ if (ID == IntegerTyID || (ID >= FloatTyID && ID <= DoubleTyID) ||
+ ID == PointerTyID)
return true;
// If it is not something that can have a size (e.g. a function or label),
// it doesn't have a size.
- if (ID != StructTyID && ID != ArrayTyID && ID != PackedTyID)
+ if (ID != StructTyID && ID != ArrayTyID && ID != PackedTyID &&
+ ID != PackedStructTyID)
return false;
// If it is something that can have a size and it's concrete, it definitely
// has a size, otherwise we have to try harder to decide.
@@ -224,7 +226,6 @@ public:
/// type. These are fixed by LLVM and are not target dependent. This will
/// return zero if the type does not have a size or is not a primitive type.
///
- unsigned getPrimitiveSize() const;
unsigned getPrimitiveSizeInBits() const;
/// getIntegralTypeMask - Return a bitmask with ones set for all of the bits
@@ -248,7 +249,7 @@ public:
/// will be promoted to if passed through a variable argument
/// function.
const Type *getVAArgsPromotedType() const {
- if (ID == Int1TyID || ID == Int8TyID || ID == Int16TyID)
+ if (ID == IntegerTyID && getSubclassData() < 32)
return Type::Int32Ty;
else if (ID == FloatTyID)
return Type::DoubleTy;
@@ -288,12 +289,8 @@ public:
//===--------------------------------------------------------------------===//
// These are the builtin types that are always available...
//
- static Type *VoidTy , *Int1Ty;
- static Type *Int8Ty , *Int16Ty,
- *Int32Ty, *Int64Ty;
- static Type *FloatTy, *DoubleTy;
-
- static Type* LabelTy;
+ static const Type *VoidTy, *LabelTy, *FloatTy, *DoubleTy;
+ static const Type *Int1Ty, *Int8Ty, *Int16Ty, *Int32Ty, *Int64Ty;
/// Methods for support type inquiry through isa, cast, and dyn_cast:
static inline bool classof(const Type *T) { return true; }
diff --git a/lib/AsmParser/Lexer.cpp.cvs b/lib/AsmParser/Lexer.cpp.cvs
index 55d32cdc22..b849caedbc 100644
--- a/lib/AsmParser/Lexer.cpp.cvs
+++ b/lib/AsmParser/Lexer.cpp.cvs
@@ -317,99 +317,99 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
*yy_cp = '\0'; \
yy_c_buf_p = yy_cp;
-#define YY_NUM_RULES 138
-#define YY_END_OF_BUFFER 139
-static yyconst short int yy_acclist[216] =
+#define YY_NUM_RULES 135
+#define YY_END_OF_BUFFER 136
+static yyconst short int yy_acclist[214] =
{ 0,
- 139, 137, 138, 136, 137, 138, 136, 138, 137, 138,
- 137, 138, 137, 138, 137, 138, 137, 138, 137, 138,
- 129, 137, 138, 129, 137, 138, 1, 137, 138, 137,
- 138, 137, 138, 137, 138, 137, 138, 137, 138, 137,
- 138, 137, 138, 137, 138, 137, 138, 137, 138, 137,
- 138, 137, 138, 137, 138, 137, 138, 137, 138, 137,
- 138, 137, 138, 137, 138, 137, 138, 137, 138, 137,
- 138, 128, 126, 125, 125, 132, 130, 134, 129, 1,
- 111, 39, 71, 48, 72, 67, 23, 128, 125, 125,
- 133, 134, 20, 134, 135, 57, 66, 37, 32, 40,
-
- 3, 49, 50, 51, 59, 81, 86, 84, 85, 83,
- 82, 87, 91, 110, 76, 74, 106, 75, 73, 58,
- 89, 80, 78, 79, 77, 90, 88, 68, 127, 134,
- 134, 108, 47, 92, 70, 62, 118, 65, 69, 119,
- 107, 22, 131, 61, 95, 64, 24, 4, 55, 60,
- 63, 46, 12, 94, 134, 34, 2, 5, 52, 97,
- 54, 120, 93, 21, 117, 43, 7, 53, 28, 42,
- 101, 100, 8, 113, 31, 116, 36, 56, 105, 99,
- 112, 25, 26, 98, 114, 109, 104, 41, 6, 27,
- 96, 35, 9, 17, 10, 102, 11, 103, 33, 13,
-
- 15, 14, 30, 38, 16, 29, 115, 121, 123, 124,
- 44, 122, 18, 45, 19
+ 136, 134, 135, 133, 134, 135, 133, 135, 134, 135,
+ 134, 135, 134, 135, 134, 135, 134, 135, 134, 135,
+ 126, 134, 135, 126, 134, 135, 1, 134, 135, 134,
+ 135, 134, 135, 134, 135, 134, 135, 134, 135, 134,
+ 135, 134, 135, 53, 134, 135, 134, 135, 134, 135,
+ 134, 135, 134, 135, 134, 135, 134, 135, 134, 135,
+ 134, 135, 134, 135, 134, 135, 134, 135, 134, 135,
+ 134, 135, 125, 123, 122, 122, 129, 127, 131, 126,
+ 1, 108, 39, 68, 53, 69, 64, 23, 125, 122,
+ 122, 130, 131, 20, 131, 132, 54, 63, 37, 32,
+
+ 40, 3, 56, 78, 83, 81, 82, 80, 79, 84,
+ 88, 107, 73, 71, 103, 72, 70, 55, 86, 77,
+ 75, 76, 74, 87, 85, 65, 124, 131, 131, 105,
+ 47, 89, 67, 59, 115, 62, 66, 116, 104, 22,
+ 128, 58, 92, 61, 24, 4, 51, 57, 60, 46,
+ 12, 91, 131, 34, 2, 5, 48, 94, 50, 117,
+ 90, 21, 114, 43, 7, 49, 28, 42, 98, 97,
+ 8, 110, 31, 113, 36, 52, 102, 96, 109, 25,
+ 26, 95, 111, 106, 101, 41, 6, 27, 93, 35,
+ 9, 17, 10, 99, 11, 100, 33, 13, 15, 14,
+
+ 30, 38, 16, 29, 112, 118, 120, 121, 44, 119,
+ 18, 45, 19
} ;
-static yyconst short int yy_accept[558] =
+static yyconst short int yy_accept[552] =
{ 0,
1, 1, 1, 2, 4, 7, 9, 11, 13, 15,
17, 19, 21, 24, 27, 30, 32, 34, 36, 38,
- 40, 42, 44, 46, 48, 50, 52, 54, 56, 58,
- 60, 62, 64, 66, 68, 70, 72, 72, 73, 73,
- 74, 75, 76, 77, 77, 78, 78, 79, 80, 80,
- 81, 81, 81, 81, 81, 81, 81, 81, 81, 82,
- 82, 83, 83, 83, 83, 83, 83, 83, 83, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 85, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 86, 86, 86, 86, 86, 86, 86,
-
- 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
+ 40, 42, 44, 47, 49, 51, 53, 55, 57, 59,
+ 61, 63, 65, 67, 69, 71, 73, 73, 74, 74,
+ 75, 76, 77, 78, 78, 79, 79, 80, 81, 81,
+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 83,
+ 83, 84, 84, 84, 84, 84, 84, 84, 84, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
87, 87, 87, 87, 87, 87, 87, 88, 88, 88,
+
88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 89, 90, 92, 93, 94, 95, 95,
- 96, 97, 97, 97, 98, 98, 98, 99, 99, 100,
- 100, 100, 100, 101, 101, 101, 101, 101, 101, 101,
- 101, 101, 101, 102, 102, 102, 102, 102, 102, 102,
- 102, 102, 102, 102, 102, 103, 104, 105, 105, 105,
- 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
- 106, 106, 107, 108, 109, 110, 111, 112, 112, 113,
-
- 114, 114, 114, 115, 115, 115, 115, 115, 115, 116,
- 117, 118, 118, 118, 118, 119, 120, 120, 120, 121,
- 121, 121, 121, 121, 121, 121, 121, 122, 123, 124,
- 124, 125, 126, 126, 127, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 129, 129, 129, 130, 131, 131,
- 131, 131, 132, 132, 132, 132, 133, 133, 133, 134,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 136, 137, 137, 137,
- 137, 137, 138, 139, 139, 139, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 141, 142, 142, 142, 143,
-
- 143, 143, 143, 144, 145, 145, 145, 146, 146, 146,
- 146, 147, 147, 147, 148, 148, 148, 149, 149, 150,
- 151, 151, 151, 151, 151, 152, 152, 153, 153, 154,
- 154, 154, 155, 156, 157, 157, 157, 158, 158, 158,
- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
- 158, 158, 159, 159, 160, 161, 161, 161, 161, 161,
- 161, 161, 161, 161, 161, 161, 162, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162, 162, 163,
- 163, 163, 163, 164, 164, 165, 165, 165, 165, 165,
- 165, 165, 165, 166, 166, 166, 167, 167, 167, 167,
-
- 167, 168, 168, 168, 168, 169, 170, 170, 170, 171,
- 172, 173, 173, 173, 174, 174, 174, 174, 174, 175,
- 175, 176, 177, 178, 179, 179, 179, 179, 180, 180,
- 180, 181, 182, 183, 184, 185, 185, 186, 187, 187,
- 187, 187, 187, 187, 188, 188, 189, 189, 190, 191,
- 191, 191, 191, 191, 191, 192, 192, 192, 192, 192,
- 192, 192, 192, 192, 193, 193, 193, 193, 193, 193,
- 193, 193, 193, 194, 194, 194, 194, 194, 195, 195,
- 195, 195, 195, 196, 197, 198, 198, 199, 199, 199,
- 199, 200, 200, 200, 200, 201, 201, 202, 203, 203,
-
- 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 204, 204, 204, 204, 204, 204, 204, 204, 205,
- 205, 205, 205, 205, 206, 206, 206, 206, 206, 207,
- 207, 208, 208, 208, 208, 208, 208, 208, 208, 208,
- 208, 208, 208, 208, 209, 209, 210, 211, 211, 212,
- 212, 213, 214, 215, 215, 216, 216
+ 88, 88, 88, 88, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 90, 91, 93, 94, 95, 96, 96, 97, 98, 98,
+ 98, 99, 99, 99, 100, 100, 101, 101, 101, 101,
+ 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
+ 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
+ 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
+ 103, 103, 103, 103, 104, 104, 105, 106, 107, 108,
+ 109, 110, 110, 111, 112, 112, 112, 113, 113, 113,
+
+ 113, 113, 113, 114, 115, 116, 116, 116, 116, 117,
+ 118, 118, 118, 119, 119, 119, 119, 119, 119, 119,
+ 119, 120, 121, 122, 122, 123, 124, 124, 125, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 127, 127,
+ 127, 128, 129, 129, 129, 129, 130, 130, 130, 130,
+ 131, 131, 131, 132, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 134, 135, 135, 135, 135, 135, 136, 137, 137, 137,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 139,
+ 140, 140, 140, 141, 141, 141, 141, 142, 143, 143,
+
+ 143, 144, 144, 144, 144, 145, 145, 145, 146, 146,
+ 146, 147, 147, 148, 149, 149, 149, 149, 149, 150,
+ 150, 151, 151, 152, 152, 152, 153, 154, 155, 155,
+ 155, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+ 156, 156, 156, 156, 156, 156, 157, 157, 158, 159,
+ 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+ 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+ 160, 160, 160, 161, 161, 161, 161, 162, 162, 163,
+ 163, 163, 163, 163, 163, 163, 163, 164, 164, 164,
+ 165, 165, 165, 165, 165, 166, 166, 166, 166, 167,
+
+ 168, 168, 168, 169, 170, 171, 171, 171, 172, 172,
+ 172, 172, 172, 173, 173, 174, 175, 176, 177, 177,
+ 177, 177, 178, 178, 178, 179, 180, 181, 182, 183,
+ 183, 184, 185, 185, 185, 185, 185, 185, 186, 186,
+ 187, 187, 188, 189, 189, 189, 189, 189, 189, 190,
+ 190, 190, 190, 190, 190, 190, 190, 190, 191, 191,
+ 191, 191, 191, 191, 191, 191, 191, 192, 192, 192,
+ 192, 192, 193, 193, 193, 193, 193, 194, 195, 196,
+ 196, 197, 197, 197, 197, 198, 198, 198, 198, 199,
+ 199, 200, 201, 201, 201, 201, 201, 201, 201, 201,
+
+ 201, 201, 201, 201, 201, 202, 202, 202, 202, 202,
+ 202, 202, 202, 203, 203, 203, 203, 203, 204, 204,
+ 204, 204, 204, 205, 205, 206, 206, 206, 206, 206,
+ 206, 206, 206, 206, 206, 206, 206, 206, 207, 207,
+ 208, 209, 209, 210, 210, 211, 212, 213, 213, 214,
+ 214
} ;
static yyconst int yy_ec[256] =
@@ -418,16 +418,16 @@ static yyconst int yy_ec[256] =
1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 1, 4, 1, 5, 6, 1, 1, 1,
- 1, 1, 7, 1, 8, 9, 1, 10, 11, 12,
- 13, 14, 15, 16, 15, 17, 15, 18, 19, 1,
- 1, 1, 1, 1, 20, 20, 20, 20, 21, 20,
+ 1, 1, 7, 1, 8, 9, 1, 10, 11, 11,
+ 11, 11, 11, 12, 11, 13, 11, 14, 15, 1,
+ 1, 1, 1, 1, 16, 16, 16, 16, 17, 16,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 1, 1, 1, 1, 22, 1, 23, 24, 25, 26,
+ 1, 1, 1, 1, 18, 1, 19, 20, 21, 22,
- 27, 28, 29, 30, 31, 5, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 1, 1, 1, 1, 1, 1, 1, 1,
+ 23, 24, 25, 26, 27, 5, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 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, 1, 1, 1, 1, 1, 1, 1,
@@ -444,269 +444,267 @@ static yyconst int yy_ec[256] =
1, 1, 1, 1, 1
} ;
-static yyconst int yy_meta[48] =
+static yyconst int yy_meta[44] =
{ 0,
- 1, 1, 2, 1, 3, 1, 4, 5, 3, 6,
- 6, 6, 6, 6, 6, 6, 6, 7, 1, 3,
- 8, 3, 3, 3, 3, 3, 8, 3, 3, 3,
+ 1, 1, 2, 1, 3, 1, 1, 3, 3, 3,
+ 3, 3, 3, 4, 1, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3
+ 3, 3, 3
} ;
-static yyconst short int yy_base[566] =
+static yyconst short int yy_base[556] =
{ 0,
- 0, 0, 1196, 1197, 1197, 1197, 1191, 1176, 40, 0,
- 48, 58, 68, 1148, 0, 68, 71, 81, 91, 52,
- 97, 98, 126, 110, 117, 120, 136, 138, 73, 170,
- 159, 205, 134, 131, 56, 137, 1188, 1197, 1173, 1197,
- 0, 235, 0, 1181, 1180, 158, 243, 1143, 261, 0,
- 70, 154, 93, 31, 160, 163, 175, 57, 1169, 173,
- 192, 189, 127, 54, 200, 202, 166, 195, 1168, 201,
- 250, 114, 171, 225, 273, 212, 251, 244, 53, 215,
- 249, 1167, 261, 275, 276, 278, 280, 281, 211, 285,
- 279, 289, 1166, 290, 288, 283, 293, 309, 307, 311,
-
- 310, 313, 314, 315, 295, 317, 321, 320, 325, 324,
- 333, 337, 327, 344, 339, 341, 1165, 351, 334, 355,
- 357, 358, 359, 360, 370, 363, 361, 371, 380, 376,
- 366, 373, 1164, 0, 0, 386, 1163, 0, 412, 0,
- 1162, 392, 397, 1161, 390, 393, 1160, 412, 1159, 413,
- 416, 417, 1158, 418, 419, 421, 422, 423, 424, 428,
- 433, 429, 434, 436, 439, 440, 448, 444, 449, 450,
- 452, 455, 451, 453, 1157, 1156, 1155, 456, 465, 472,
- 474, 458, 478, 94, 462, 482, 468, 479, 484, 1154,
- 486, 1153, 1152, 1151, 1150, 1149, 1148, 491, 1147, 1146,
-
- 488, 492, 1145, 524, 499, 502, 495, 512, 1144, 1143,
- 1142, 493, 498, 496, 1141, 1140, 528, 536, 1139, 537,
- 538, 539, 540, 545, 500, 541, 1138, 1137, 1136, 543,
- 1135, 1134, 542, 1133, 1132, 546, 552, 547, 564, 548,
- 567, 568, 506, 1131, 558, 570, 1197, 568, 258, 584,
- 589, 591, 575, 583, 584, 1130, 585, 586, 1129, 1128,
- 587, 588, 589, 595, 598, 596, 604, 597, 599, 605,
- 609, 600, 618, 607, 619, 1127, 1126, 606, 608, 622,
- 625, 1125, 1124, 627, 628, 1123, 630, 632, 634, 636,
- 637, 635, 638, 643, 1122, 1121, 641, 645, 1120, 640,
-
- 647, 648, 0, 1119, 652, 661, 1118, 657, 662, 663,
- 1117, 669, 672, 1116, 674, 675, 1115, 677, 1114, 1113,
- 676, 681, 680, 682, 1112, 687, 1111, 688, 1110, 692,
- 693, 1109, 0, 1108, 689, 695, 1107, 696, 697, 700,
- 709, 707, 698, 701, 715, 713, 717, 720, 722, 723,
- 724, 1106, 726, 1105, 1104, 725, 728, 727, 734, 730,
- 735, 737, 742, 746, 747, 1103, 749, 748, 754, 753,
- 755, 758, 750, 752, 768, 769, 771, 773, 1102, 774,
- 772, 776, 1101, 775, 1100, 780, 782, 777, 783, 793,
- 778, 789, 1099, 797, 779, 1098, 799, 800, 803, 804,
-
- 1097, 805, 808, 811, 1096, 1095, 814, 809, 1094, 1093,
- 1092, 815, 812, 1091, 821, 824, 820, 817, 1090, 834,
- 1089, 1088, 1087, 1086, 823, 835, 836, 1085, 837, 838,
- 1084, 1083, 1082, 1081, 1080, 839, 1079, 1078, 842, 843,
- 847, 845, 849, 1077, 850, 1076, 854, 1075, 1070, 856,
- 859, 860, 861, 862, 1067, 869, 864, 867, 868, 863,
- 870, 874, 875, 1064, 885, 888, 887, 890, 889, 893,
- 891, 894, 1056, 895, 901, 902, 904, 1053, 903, 906,
- 907, 908, 1050, 1044, 1033, 909, 1032, 911, 921, 926,
- 1031, 927, 931, 916, 1030, 915, 1026, 1025, 935, 933,
-
- 937, 939, 941, 943, 945, 946, 947, 948, 949, 950,
- 1024, 951, 954, 956, 958, 959, 967, 961, 1023, 971,
- 963, 973, 974, 1022, 977, 979, 982, 966, 1018, 985,
- 1016, 990, 987, 991, 992, 993, 997, 996, 999, 1000,
- 1001, 998, 1006, 549, 1011, 513, 466, 1010, 398, 1012,
- 331, 291, 208, 1013, 168, 1197, 1052, 1058, 1064, 177,
- 1072, 1078, 123, 1081, 1086
+ 0, 0, 1195, 1196, 1196, 1196, 1190, 1179, 36, 40,
+ 44, 50, 56, 62, 0, 63, 66, 81, 89, 47,
+ 108, 91, 134, 92, 72, 93, 152, 124, 109, 178,
+ 138, 209, 121, 111, 146, 119, 1188, 1196, 1177, 1196,
+ 0, 183, 198, 215, 236, 70, 241, 256, 261, 0,
+ 68, 122, 140, 125, 160, 101, 154, 31, 1176, 153,
+ 155, 183, 48, 184, 265, 170, 192, 149, 1175, 206,
+ 227, 203, 175, 225, 273, 274, 223, 262, 269, 277,
+ 228, 278, 215, 281, 287, 279, 290, 289, 294, 1174,
+ 295, 288, 302, 306, 307, 312, 313, 314, 318, 299,
+
+ 319, 46, 322, 323, 324, 328, 326, 332, 336, 339,
+ 340, 348, 351, 1173, 353, 337, 354, 358, 359, 360,
+ 362, 379, 365, 369, 376, 370, 386, 380, 381, 1172,
+ 0, 396, 413, 1171, 427, 444, 0, 1170, 396, 399,
+ 1169, 404, 398, 1168, 390, 1167, 414, 418, 420, 1166,
+ 431, 406, 445, 429, 432, 446, 448, 449, 450, 451,
+ 452, 453, 455, 344, 457, 460, 466, 467, 468, 470,
+ 474, 471, 472, 483, 486, 476, 489, 491, 481, 499,
+ 496, 497, 500, 1165, 501, 1164, 1163, 1162, 1161, 1160,
+ 1159, 502, 1158, 1157, 503, 506, 1156, 534, 510, 511,
+
+ 514, 515, 1155, 1154, 1153, 508, 519, 527, 1152, 1151,
+ 546, 526, 1150, 525, 549, 550, 551, 554, 556, 552,
+ 1149, 1148, 1147, 555, 1146, 1145, 557, 1144, 1143, 558,
+ 559, 553, 574, 513, 575, 568, 581, 1142, 560, 576,
+ 1196, 591, 599, 605, 609, 614, 615, 584, 616, 1141,
+ 617, 618, 1140, 1139, 619, 620, 621, 622, 624, 625,
+ 627, 628, 630, 635, 631, 638, 647, 639, 649, 1138,
+ 1137, 641, 645, 651, 653, 1136, 1135, 654, 657, 1134,
+ 658, 660, 661, 665, 666, 663, 670, 671, 1133, 1132,
+ 672, 674, 1131, 676, 679, 685, 0, 1130, 684, 687,
+
+ 1129, 691, 695, 696, 1128, 698, 692, 1127, 705, 693,
+ 1126, 709, 1125, 1124, 710, 711, 712, 713, 1123, 715,
+ 1122, 718, 1121, 722, 724, 1120, 729, 1119, 729, 723,
+ 1118, 733, 735, 738, 739, 740, 747, 748, 750, 751,
+ 752, 749, 759, 760, 754, 1117, 762, 1116, 1115, 753,
+ 765, 763, 764, 767, 772, 774, 775, 779, 781, 1114,
+ 783, 784, 787, 786, 796, 799, 789, 785, 791, 801,
+ 807, 804, 1113, 806, 809, 810, 1112, 811, 1111, 813,
+ 821, 815, 812, 822, 824, 828, 1110, 831, 833, 1109,
+ 834, 835, 836, 837, 1108, 838, 839, 840, 1107, 1106,
+
+ 848, 843, 1105, 1104, 1103, 854, 849, 1102, 841, 859,
+ 862, 855, 1101, 863, 1100, 1099, 1098, 1097, 869, 871,
+ 872, 1096, 873, 874, 1095, 1094, 1093, 1092, 1091, 875,
+ 1090, 1089, 876, 877, 885, 879, 880, 1088, 881, 1087,
+ 883, 1086, 1085, 886, 894, 895, 896, 900, 1084, 903,
+ 902, 898, 905, 906, 908, 910, 914, 1083, 916, 922,
+ 918, 924, 925, 928, 926, 929, 1080, 930, 934, 936,
+ 938, 1070, 943, 939, 942, 944, 1069, 1068, 1066, 950,
+ 1064, 946, 945, 960, 1063, 961, 962, 951, 1062, 969,
+ 1061, 1060, 970, 971, 972, 973, 974, 976, 977, 979,
+
+ 981, 982, 983, 986, 1058, 985, 988, 989, 993, 994,
+ 997, 1000, 1057, 1001, 1007, 1009, 1011, 1055, 1012, 1013,
+ 1014, 1015, 1054, 1017, 1053, 1018, 1030, 1025, 1028, 1019,
+ 1029, 1020, 1031, 1034, 1039, 1042, 1044, 719, 1048, 586,
+ 583, 1049, 469, 1050, 415, 248, 245, 1051, 208, 1196,
+ 1086, 1088, 169, 1092, 106
} ;
-static yyconst short int yy_def[566] =
+static yyconst short int yy_def[556] =
{ 0,
- 556, 1, 556, 556, 556, 556, 557, 558, 559, 560,
- 558, 558, 11, 13, 561, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 557, 556, 558, 556,
- 562, 562, 563, 560, 11, 558, 11, 13, 11, 561,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
-
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 556, 562, 42, 564, 558, 47, 11, 49,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
-
- 558, 558, 558, 49, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 556, 564, 565, 565,
- 139, 139, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
-
- 558, 558, 204, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 250, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
-
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
-
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 0, 556, 556, 556, 556,
- 556, 556, 556, 556, 556
+ 550, 1, 550, 550, 550, 550, 551, 552, 553, 550,
+ 552, 552, 552, 552, 554, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 551, 550, 552, 550,
+ 555, 555, 550, 550, 552, 552, 552, 552, 552, 554,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 23, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 550,
+ 555, 555, 550, 552, 552, 552, 49, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 49, 552, 552,
+
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 550, 550, 550, 550, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 198, 552, 552, 552,
+
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 550, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 552, 552, 552, 552, 0,
+ 550, 550, 550, 550, 550
} ;
-static yyconst short int yy_nxt[1245] =
+static yyconst short int yy_nxt[1240] =
{ 0,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 14, 14, 14, 14, 14, 14, 4, 15, 8,
- 8, 8, 16, 17, 18, 19, 20, 21, 22, 8,
- 23, 8, 24, 25, 26, 27, 28, 8, 29, 30,
- 31, 32, 33, 34, 35, 8, 36, 42, 40, 43,
- 43, 43, 43, 43, 43, 43, 43, 45, 45, 45,
- 45, 45, 45, 45, 45, 40, 46, 145, 175, 40,
- 40, 40, 130, 40, 40, 40, 47, 48, 48, 48,
- 48, 48, 48, 48, 48, 40, 68, 40, 40, 69,
- 40, 131, 151, 51, 157, 141, 70, 56, 40, 104,
-
- 52, 57, 53, 60, 54, 61, 58, 55, 40, 59,
- 40, 40, 49, 64, 40, 40, 62, 65, 144, 71,
- 63, 72, 73, 66, 77, 293, 67, 40, 43, 74,
- 78, 40, 86, 75, 40, 76, 79, 40, 80, 90,
- 87, 81, 82, 40, 40, 88, 93, 167, 40, 89,
- 83, 40, 91, 40, 40, 40, 127, 129, 92, 84,
- 85, 94, 95, 132, 96, 156, 137, 101, 97, 128,
- 98, 40, 99, 102, 100, 40, 40, 40, 103, 105,
- 40, 116, 44, 40, 142, 40, 143, 40, 40, 146,
- 40, 148, 40, 147, 117, 106, 107, 118, 108, 109,
-
- 110, 168, 111, 149, 119, 152, 40, 162, 112, 40,
- 113, 114, 40, 115, 105, 150, 153, 40, 40, 40,
- 163, 154, 40, 155, 158, 40, 176, 159, 40, 40,
- 120, 121, 40, 122, 161, 123, 160, 124, 172, 125,
- 187, 164, 40, 126, 135, 135, 135, 135, 135, 135,
- 135, 135, 138, 138, 138, 138, 138, 138, 138, 138,
- 169, 40, 177, 139, 250, 250, 40, 40, 40, 139,
- 140, 140, 140, 140, 140, 140, 140, 140, 40, 174,
- 140, 140, 165, 140, 140, 140, 140, 140, 140, 166,
- 40, 173, 40, 40, 178, 40, 40, 40, 40, 170,
-
- 40, 183, 40, 186, 189, 40, 40, 40, 40, 193,
- 40, 179, 40, 171, 184, 180, 181, 188, 182, 195,
- 185, 190, 191, 194, 40, 192, 40, 40, 40, 198,
- 40, 40, 40, 196, 40, 197, 199, 40, 40, 204,
- 200, 40, 40, 201, 40, 206, 209, 205, 40, 213,
- 40, 40, 202, 207, 40, 203, 40, 211, 40, 215,
- 210, 40, 218, 217, 214, 208, 212, 219, 40, 220,
- 225, 221, 40, 216, 40, 40, 40, 40, 40, 222,
- 40, 223, 239, 40, 228, 226, 231, 40, 40, 238,
- 40, 243, 224, 40, 227, 233, 234, 40, 229, 230,
-
- 232, 240, 242, 241, 244, 235, 249, 40, 236, 40,
- 40, 245, 249, 237, 40, 40, 255, 246, 250, 251,
- 253, 252, 252, 252, 252, 252, 252, 252, 252, 40,
- 40, 256, 254, 40, 40, 40, 40, 258, 40, 40,
- 40, 40, 257, 261, 264, 40, 40, 263, 259, 260,
- 40, 40, 270, 40, 266, 265, 40, 40, 262, 268,
- 267, 40, 272, 269, 271, 40, 40, 40, 40, 40,
- 40, 278, 40, 40, 273, 40, 285, 284, 274, 40,
- 275, 282, 40, 40, 276, 40, 277, 280, 283, 40,
- 281, 40, 286, 291, 279, 40, 40, 287, 288, 40,
-
- 289, 40, 294, 40, 292, 40, 296, 295, 40, 40,
- 40, 297, 40, 40, 290, 40, 40, 40, 299, 40,
- 308, 306, 301, 40, 309, 298, 319, 330, 300, 40,
- 40, 310, 302, 303, 303, 303, 303, 303, 303, 303,
- 303, 304, 305, 303, 303, 40, 303, 303, 303, 303,
- 303, 303, 307, 40, 40, 40, 40, 40, 40, 40,
- 40, 311, 40, 40, 40, 40, 40, 315, 322, 40,
- 314, 317, 323, 327, 312, 40, 316, 313, 321, 318,
- 325, 40, 324, 320, 40, 40, 326, 40, 249, 328,
- 556, 556, 40, 331, 249, 556, 39, 556, 39, 329,
-
- 40, 40, 40, 40, 40, 40, 40, 335, 338, 334,
- 332, 339, 40, 40, 40, 40, 40, 40, 336, 337,
- 343, 40, 40, 40, 40, 40, 40, 342, 340, 341,
- 344, 349, 347, 352, 345, 40, 40, 348, 350, 40,
- 351, 346, 40, 353, 40, 40, 354, 40, 355, 40,
- 360, 40, 40, 40, 40, 40, 361, 40, 40, 359,
- 40, 356, 40, 357, 40, 40, 358, 366, 365, 40,
- 362, 364, 363, 367, 40, 368, 369, 370, 40, 40,
- 40, 371, 374, 373, 376, 375, 40, 372, 377, 40,
- 378, 40, 40, 40, 40, 379, 380, 40, 40, 40,
-
- 381, 383, 386, 384, 40, 40, 40, 382, 385, 40,
- 40, 393, 40, 40, 40, 40, 387, 40, 40, 390,
- 394, 396, 397, 392, 40, 388, 40, 401, 389, 399,
- 40, 391, 40, 398, 40, 395, 400, 40, 402, 40,
- 40, 40, 40, 40, 40, 40, 405, 40, 408, 403,
- 409, 40, 40, 404, 40, 410, 406, 407, 411, 40,
- 413, 412, 414, 40, 40, 40, 40, 40, 415, 40,
- 40, 40, 40, 419, 421, 40, 417, 416, 422, 423,
- 426, 424, 418, 420, 425, 40, 40, 427, 40, 40,
- 40, 40, 40, 40, 40, 40, 40, 40, 430, 40,
-
- 40, 429, 434, 432, 436, 438, 40, 437, 428, 431,
- 40, 435, 433, 439, 40, 440, 40, 40, 441, 444,
- 40, 40, 40, 442, 446, 40, 40, 443, 40, 40,
- 448, 40, 40, 445, 40, 452, 453, 40, 40, 455,
- 40, 40, 459, 450, 449, 456, 451, 457, 447, 454,
- 458, 40, 40, 40, 40, 40, 40, 460, 461, 40,
- 40, 462, 40, 465, 40, 466, 40, 40, 467, 463,
- 464, 40, 470, 40, 468, 471, 40, 40, 40, 40,
- 40, 40, 469, 472, 40, 40, 40, 40, 479, 474,
- 473, 40, 40, 478, 475, 480, 485, 476, 481, 482,
-
- 483, 484, 40, 477, 40, 40, 40, 40, 40, 490,
- 40, 40, 40, 486, 489, 487, 491, 493, 40, 40,
- 40, 40, 495, 40, 40, 40, 40, 488, 40, 492,
- 499, 494, 40, 40, 503, 500, 496, 505, 40, 504,
- 501, 497, 498, 40, 40, 506, 510, 502, 40, 507,
- 40, 508, 40, 509, 40, 511, 40, 512, 40, 513,
- 40, 515, 40, 40, 40, 40, 40, 40, 40, 518,
- 521, 40, 523, 40, 516, 40, 40, 514, 40, 520,
- 40, 522, 524, 40, 40, 528, 519, 525, 40, 517,
- 40, 40, 526, 529, 40, 532, 40, 531, 527, 40,
-
- 538, 530, 40, 535, 40, 533, 534, 40, 40, 40,
- 40, 541, 537, 40, 40, 40, 40, 40, 40, 536,
- 539, 542, 540, 40, 548, 549, 543, 40, 40, 40,
- 40, 544, 545, 40, 553, 40, 546, 547, 554, 40,
- 40, 40, 40, 40, 550, 552, 551, 40, 40, 40,
- 40, 555, 37, 37, 37, 37, 37, 37, 37, 37,
- 39, 40, 39, 39, 39, 39, 41, 40, 41, 41,
- 40, 41, 50, 40, 50, 50, 50, 50, 50, 50,
- 134, 40, 134, 134, 40, 134, 248, 40, 248, 333,
- 333, 333, 40, 40, 40, 40, 40, 40, 40, 40,
+ 14, 14, 14, 4, 15, 8, 8, 8, 16, 17,
+ 18, 19, 20, 21, 22, 8, 23, 8, 24, 25,
+ 26, 27, 28, 8, 29, 30, 31, 32, 33, 34,
+ 35, 8, 36, 42, 40, 43, 43, 43, 43, 44,
+ 44, 44, 44, 45, 45, 45, 45, 40, 46, 40,
+ 40, 40, 148, 40, 47, 48, 48, 48, 48, 40,
+ 47, 48, 48, 48, 48, 40, 40, 68, 134, 40,
+ 69, 40, 153, 40, 51, 40, 198, 70, 56, 138,
+ 87, 52, 57, 53, 40, 54, 49, 58, 55, 60,
+
+ 59, 61, 40, 88, 40, 40, 40, 64, 131, 89,
+ 83, 65, 62, 77, 40, 90, 63, 66, 84, 78,
+ 67, 40, 40, 85, 40, 145, 71, 86, 72, 73,
+ 91, 101, 40, 126, 40, 40, 74, 40, 40, 124,
+ 75, 129, 76, 79, 79, 79, 79, 40, 139, 98,
+ 140, 40, 125, 40, 80, 99, 113, 142, 127, 40,
+ 100, 141, 40, 81, 82, 40, 40, 40, 40, 114,
+ 160, 41, 115, 40, 92, 150, 93, 128, 146, 116,
+ 94, 149, 95, 40, 96, 143, 97, 102, 40, 144,
+ 147, 40, 132, 132, 132, 132, 40, 40, 158, 103,
+
+ 104, 165, 105, 106, 107, 40, 108, 43, 43, 43,
+ 43, 151, 109, 152, 110, 111, 40, 112, 102, 40,
+ 154, 40, 40, 133, 44, 44, 44, 44, 40, 159,
+ 117, 118, 164, 119, 177, 120, 40, 121, 40, 122,
+ 40, 40, 161, 123, 47, 45, 45, 45, 45, 40,
+ 135, 135, 135, 135, 40, 162, 166, 136, 40, 170,
+ 173, 40, 163, 136, 47, 48, 48, 48, 48, 40,
+ 137, 137, 137, 137, 40, 40, 137, 137, 40, 137,
+ 137, 137, 137, 137, 137, 155, 40, 40, 156, 39,
+ 40, 40, 40, 171, 40, 167, 169, 157, 39, 39,
+
+ 40, 40, 40, 40, 181, 180, 172, 40, 40, 168,
+ 183, 178, 40, 174, 175, 40, 176, 179, 182, 40,
+ 40, 186, 184, 185, 187, 40, 40, 40, 189, 191,
+ 192, 40, 40, 196, 193, 40, 40, 40, 188, 40,
+ 194, 40, 190, 200, 195, 40, 203, 207, 199, 40,
+ 40, 201, 40, 40, 209, 197, 205, 40, 211, 213,
+ 204, 40, 208, 202, 40, 206, 40, 40, 210, 219,
+ 212, 40, 40, 40, 214, 40, 270, 215, 40, 217,
+ 220, 222, 40, 40, 225, 216, 233, 232, 236, 40,
+ 218, 221, 40, 40, 40, 223, 224, 237, 226, 40,
+
+ 227, 228, 234, 40, 235, 132, 132, 132, 132, 40,
+ 229, 40, 40, 230, 238, 239, 251, 40, 231, 40,
+ 247, 240, 242, 242, 242, 242, 249, 40, 40, 243,
+ 248, 40, 250, 40, 252, 243, 135, 135, 135, 135,
+ 40, 256, 40, 136, 40, 40, 253, 258, 254, 136,
+ 244, 245, 255, 246, 246, 246, 246, 40, 40, 40,
+ 259, 40, 40, 40, 40, 40, 40, 257, 40, 264,
+ 40, 262, 260, 40, 266, 263, 261, 265, 272, 40,
+ 40, 40, 40, 40, 40, 40, 267, 40, 268, 40,
+ 276, 269, 278, 279, 40, 271, 40, 277, 274, 40,
+
+ 281, 275, 40, 280, 40, 282, 273, 285, 283, 40,
+ 40, 286, 40, 40, 40, 40, 40, 288, 287, 40,
+ 289, 40, 284, 40, 40, 291, 40, 40, 40, 293,
+ 290, 302, 40, 295, 321, 294, 300, 292, 40, 40,
+ 40, 303, 296, 297, 297, 297, 297, 299, 298, 297,
+ 297, 301, 297, 297, 297, 297, 297, 297, 304, 40,
+ 306, 307, 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 309, 305, 311, 308, 313, 316,
+ 317, 40, 319, 310, 312, 318, 315, 40, 40, 40,
+ 314, 325, 320, 322, 40, 323, 40, 40, 324, 40,
+
+ 242, 242, 242, 242, 329, 244, 244, 243, 327, 327,
+ 327, 327, 326, 243, 327, 327, 327, 327, 246, 246,
+ 246, 246, 40, 246, 246, 246, 246, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 332, 40, 40, 333,
+ 40, 40, 337, 40, 40, 328, 330, 331, 40, 343,
+ 336, 40, 40, 339, 40, 338, 334, 335, 40, 341,
+ 40, 346, 40, 342, 40, 345, 40, 40, 340, 347,
+ 40, 40, 344, 40, 40, 354, 40, 348, 40, 40,
+ 355, 349, 353, 40, 40, 40, 350, 40, 351, 40,
+ 352, 360, 40, 359, 356, 357, 358, 40, 40, 362,
+
+ 40, 361, 364, 363, 40, 40, 40, 369, 40, 40,
+ 368, 40, 374, 365, 370, 366, 367, 371, 40, 372,
+ 373, 376, 40, 40, 40, 40, 40, 375, 40, 377,
+ 380, 40, 40, 378, 379, 40, 40, 40, 327, 327,
+ 327, 327, 40, 381, 388, 384, 40, 387, 40, 382,
+ 386, 40, 40, 40, 383, 390, 391, 385, 393, 392,
+ 40, 40, 40, 40, 40, 40, 40, 40, 389, 396,
+ 395, 399, 40, 40, 402, 40, 40, 40, 40, 404,
+ 40, 394, 403, 397, 398, 40, 407, 40, 40, 400,
+ 401, 405, 40, 406, 40, 408, 40, 40, 40, 40,
+
+ 40, 409, 40, 413, 40, 411, 415, 416, 417, 40,
+ 410, 412, 40, 414, 40, 420, 421, 40, 418, 40,
+ 40, 419, 40, 40, 40, 40, 40, 422, 40, 423,
+ 424, 426, 428, 430, 40, 40, 425, 40, 433, 432,
+ 434, 40, 431, 429, 40, 427, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 440, 40, 437, 436, 442,
+ 435, 40, 40, 451, 439, 446, 447, 40, 40, 438,
+ 444, 445, 40, 443, 449, 40, 40, 441, 450, 448,
+ 453, 452, 40, 455, 40, 40, 40, 40, 40, 40,
+ 40, 454, 40, 40, 40, 459, 40, 460, 40, 40,
+
+ 461, 457, 458, 456, 462, 465, 464, 40, 40, 40,
+ 466, 40, 463, 40, 468, 40, 40, 467, 40, 40,
+ 469, 40, 473, 40, 472, 474, 476, 40, 470, 40,
+ 479, 40, 475, 477, 471, 40, 484, 40, 40, 40,
+ 478, 40, 40, 40, 483, 480, 485, 40, 487, 40,
+ 481, 40, 40, 489, 482, 40, 40, 40, 40, 40,
+ 493, 486, 488, 40, 40, 500, 497, 490, 499, 495,
+ 491, 494, 492, 40, 40, 40, 498, 504, 496, 501,
+ 503, 502, 40, 40, 40, 40, 40, 40, 506, 40,
+ 40, 509, 40, 507, 40, 40, 40, 512, 40, 40,
+
+ 515, 40, 40, 510, 517, 505, 40, 40, 508, 514,
+ 40, 516, 518, 40, 40, 513, 522, 519, 511, 523,
+ 40, 520, 40, 525, 40, 40, 40, 40, 40, 521,
+ 40, 40, 40, 40, 529, 526, 524, 527, 40, 528,
+ 531, 40, 40, 40, 40, 532, 534, 40, 533, 530,
+ 535, 536, 40, 538, 542, 40, 540, 40, 537, 543,
+ 539, 40, 40, 40, 40, 541, 40, 40, 40, 547,
+ 40, 40, 548, 40, 40, 40, 40, 40, 546, 40,
+ 545, 40, 40, 40, 544, 549, 37, 37, 37, 37,
+ 39, 39, 50, 40, 50, 50, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
@@ -716,155 +714,153 @@ static yyconst short int yy_nxt[1245] =
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
- 40, 247, 40, 40, 40, 40, 40, 39, 47, 136,
- 40, 133, 39, 40, 38, 556, 3, 556, 556, 556,
-
- 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
- 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
- 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
- 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
- 556, 556, 556, 556
+ 40, 40, 40, 40, 40, 241, 40, 40, 40, 40,
+ 40, 130, 40, 38, 550, 3, 550, 550, 550, 550,
+
+ 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
+ 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
+ 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
+ 550, 550, 550, 550, 550, 550, 550, 550, 550
} ;
-static yyconst short int yy_chk[1245] =
+static yyconst short int yy_chk[1240] =
{ 0,
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, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 9, 54, 9,
- 9, 9, 9, 9, 9, 9, 9, 11, 11, 11,
- 11, 11, 11, 11, 11, 11, 12, 54, 79, 20,
- 79, 64, 35, 35, 58, 12, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 16, 20, 51, 17, 20,
- 29, 35, 58, 16, 64, 51, 20, 17, 18, 29,
-
- 16, 17, 16, 18, 16, 18, 17, 16, 19, 17,
- 53, 184, 13, 19, 21, 22, 18, 19, 53, 21,
- 18, 21, 21, 19, 22, 184, 19, 24, 563, 21,
- 22, 72, 24, 21, 25, 21, 23, 26, 23, 25,
- 24, 23, 23, 23, 63, 24, 26, 72, 34, 24,
- 23, 33, 25, 27, 36, 28, 33, 34, 25, 23,
- 23, 26, 27, 36, 27, 63, 46, 28, 27, 33,
- 27, 52, 27, 28, 27, 46, 31, 55, 28, 30,
- 56, 31, 560, 67, 52, 555, 52, 30, 73, 55,
- 60, 56, 57, 55, 31, 30, 30, 31, 30, 30,
-
- 30, 73, 30, 57, 31, 60, 62, 67, 30, 61,
- 30, 30, 68, 30, 32, 57, 61, 65, 70, 66,
- 68, 62, 32, 62, 65, 553, 80, 65, 89, 76,
- 32, 32, 80, 32, 66, 32, 65, 32, 76, 32,
- 89, 70, 74, 32, 42, 42, 42, 42, 42, 42,
- 42, 42, 47, 47, 47, 47, 47, 47, 47, 47,
- 74, 78, 81, 47, 249, 249, 81, 71, 77, 47,
- 49, 49, 49, 49, 49, 49, 49, 49, 83, 78,
- 49, 49, 71, 49, 49, 49, 49, 49, 49, 71,
- 75, 77, 84, 85, 83, 86, 91, 87, 88, 75,
-
- 96, 86, 90, 88, 91, 95, 92, 94, 552, 96,
- 97, 84, 105, 75, 87, 85, 85, 90, 85, 97,
- 87, 92, 94, 96, 99, 95, 98, 101, 100, 99,
- 102, 103, 104, 97, 106, 98, 100, 108, 107, 105,
- 101, 110, 109, 102, 113, 107, 108, 106, 551, 110,
- 111, 119, 103, 107, 112, 104, 115, 109, 116, 111,
- 108, 114, 113, 112, 110, 107, 109, 114, 118, 115,
- 119, 116, 120, 111, 121, 122, 123, 124, 127, 116,
- 126, 118, 127, 131, 122, 120, 124, 125, 128, 126,
- 132, 130, 118, 130, 121, 125, 125, 129, 122, 123,
-
- 124, 128, 129, 128, 131, 125, 136, 145, 125, 142,
- 146, 132, 136, 125, 143, 549, 145, 132, 139, 139,
- 142, 139, 139, 139, 139, 139, 139, 139, 139, 148,
- 150, 146, 143, 151, 152, 154, 155, 150, 156, 157,
- 158, 159, 148, 154, 157, 160, 162, 156, 151, 152,
- 161, 163, 162, 164, 159, 158, 165, 166, 155, 161,
- 160, 168, 164, 161, 163, 167, 169, 170, 173, 171,
- 174, 169, 172, 178, 164, 182, 174, 173, 165, 185,
- 166, 172, 179, 547, 167, 187, 168, 171, 172, 180,
- 171, 181, 178, 182, 170, 183, 188, 179, 180, 186,
-
- 181, 189, 185, 191, 183, 201, 187, 186, 198, 202,
- 212, 188, 207, 214, 181, 213, 205, 225, 191, 206,
- 212, 207, 201, 243, 213, 189, 225, 243, 198, 208,
- 546, 214, 202, 204, 204, 204, 204, 204, 204, 204,
- 204, 205, 206, 204, 204, 217, 204, 204, 204, 204,
- 204, 204, 208, 218, 220, 221, 222, 223, 226, 233,
- 230, 217, 224, 236, 238, 240, 544, 222, 233, 237,
- 221, 224, 236, 240, 218, 245, 223, 220, 230, 224,
- 238, 239, 237, 226, 241, 242, 239, 246, 248, 241,
- 250, 250, 253, 245, 248, 251, 251, 252, 252, 242,
-
- 254, 255, 257, 258, 261, 262, 263, 254, 258, 253,
- 246, 261, 264, 266, 268, 265, 269, 272, 255, 257,
- 265, 267, 270, 278, 274, 279, 271, 264, 262, 263,
- 266, 271, 269, 274, 267, 273, 275, 270, 272, 280,
- 273, 268, 281, 275, 284, 285, 278, 287, 279, 288,
- 285, 289, 292, 290, 291, 293, 287, 300, 297, 284,
- 294, 280, 298, 280, 301, 302, 281, 292, 291, 305,
- 288, 290, 289, 293, 308, 294, 297, 298, 306, 309,
- 310, 300, 305, 302, 308, 306, 312, 301, 309, 313,
- 310, 315, 316, 321, 318, 312, 313, 323, 322, 324,
-
- 315, 318, 323, 321, 326, 328, 335, 316, 322, 330,
- 331, 335, 336, 338, 339, 343, 324, 340, 344, 330,
- 336, 339, 340, 331, 342, 326, 341, 344, 328, 342,
- 346, 330, 345, 341, 347, 338, 343, 348, 345, 349,
- 350, 351, 356, 353, 358, 357, 348, 360, 351, 346,
- 353, 359, 361, 347, 362, 356, 349, 350, 357, 363,
- 359, 358, 360, 364, 365, 368, 367, 373, 361, 374,
- 370, 369, 371, 365, 368, 372, 363, 362, 369, 370,
- 373, 371, 364, 367, 372, 375, 376, 374, 377, 381,
- 378, 380, 384, 382, 388, 391, 395, 386, 377, 387,
-
- 389, 376, 382, 380, 386, 388, 392, 387, 375, 378,
- 390, 384, 381, 389, 394, 390, 397, 398, 391, 395,
- 399, 400, 402, 392, 398, 403, 408, 394, 404, 413,
- 400, 407, 412, 397, 418, 407, 407, 417, 415, 412,
- 425, 416, 417, 403, 402, 413, 404, 415, 399, 408,
- 416, 420, 426, 427, 429, 430, 436, 418, 420, 439,
- 440, 425, 442, 429, 441, 430, 443, 445, 436, 426,
- 427, 447, 441, 450, 439, 442, 451, 452, 453, 454,
- 460, 457, 440, 443, 458, 459, 456, 461, 454, 447,
- 445, 462, 463, 453, 450, 456, 461, 451, 457, 458,
-
- 459, 460, 465, 452, 467, 466, 469, 468, 471, 467,
- 470, 472, 474, 462, 466, 463, 468, 470, 475, 476,
- 479, 477, 472, 480, 481, 482, 486, 465, 488, 469,
- 477, 471, 496, 494, 482, 479, 474, 488, 489, 486,
- 480, 475, 476, 490, 492, 489, 494, 481, 493, 490,
- 500, 492, 499, 493, 501, 496, 502, 499, 503, 500,
- 504, 502, 505, 506, 507, 508, 509, 510, 512, 505,
- 508, 513, 510, 514, 503, 515, 516, 501, 518, 507,
- 521, 509, 512, 528, 517, 516, 506, 513, 520, 504,
- 522, 523, 514, 517, 525, 521, 526, 520, 515, 527,
-
- 528, 518, 530, 525, 533, 522, 523, 532, 534, 535,
- 536, 533, 527, 538, 537, 542, 539, 540, 541, 526,
- 530, 534, 532, 543, 540, 541, 535, 548, 545, 550,
- 554, 536, 537, 531, 548, 529, 538, 539, 550, 524,
- 519, 511, 498, 497, 542, 545, 543, 495, 491, 487,
- 485, 554, 557, 557, 557, 557, 557, 557, 557, 557,
- 558, 484, 558, 558, 558, 558, 559, 483, 559, 559,
- 478, 559, 561, 473, 561, 561, 561, 561, 561, 561,
- 562, 464, 562, 562, 455, 562, 564, 449, 564, 565,
- 565, 565, 448, 446, 444, 438, 437, 435, 434, 433,
-
- 432, 431, 428, 424, 423, 422, 421, 419, 414, 411,
- 410, 409, 406, 405, 401, 396, 393, 385, 383, 379,
- 366, 355, 354, 352, 337, 334, 332, 329, 327, 325,
- 320, 319, 317, 314, 311, 307, 304, 299, 296, 295,
- 286, 283, 282, 277, 276, 260, 259, 256, 244, 235,
- 234, 232, 231, 229, 228, 227, 219, 216, 215, 211,
- 210, 209, 203, 200, 199, 197, 196, 195, 194, 193,
- 192, 190, 177, 176, 175, 153, 149, 147, 144, 141,
- 137, 133, 117, 93, 82, 69, 59, 48, 45, 44,
- 39, 37, 14, 8, 7, 3, 556, 556, 556, 556,
-
- 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
- 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
- 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
- 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
- 556, 556, 556, 556
+ 1, 1, 1, 9, 58, 9, 9, 9, 9, 10,
+ 10, 10, 10, 11, 11, 11, 11, 11, 12, 102,
+ 20, 63, 58, 12, 13, 13, 13, 13, 13, 13,
+ 14, 14, 14, 14, 14, 14, 16, 20, 46, 17,
+ 20, 51, 63, 46, 16, 25, 102, 20, 17, 51,
+ 25, 16, 17, 16, 18, 16, 13, 17, 16, 18,
+
+ 17, 18, 19, 25, 22, 24, 26, 19, 555, 25,
+ 24, 19, 18, 22, 56, 26, 18, 19, 24, 22,
+ 19, 21, 29, 24, 34, 56, 21, 24, 21, 21,
+ 26, 29, 36, 34, 33, 52, 21, 28, 54, 33,
+ 21, 36, 21, 23, 23, 23, 23, 23, 52, 28,
+ 52, 31, 33, 53, 23, 28, 31, 54, 35, 35,
+ 28, 53, 68, 23, 23, 27, 60, 57, 61, 31,
+ 68, 553, 31, 55, 27, 61, 27, 35, 57, 31,
+ 27, 60, 27, 66, 27, 55, 27, 30, 73, 55,
+ 57, 30, 42, 42, 42, 42, 62, 64, 66, 30,
+
+ 30, 73, 30, 30, 30, 67, 30, 43, 43, 43,
+ 43, 62, 30, 62, 30, 30, 72, 30, 32, 70,
+ 64, 549, 32, 44, 44, 44, 44, 44, 83, 67,
+ 32, 32, 72, 32, 83, 32, 77, 32, 74, 32,
+ 71, 81, 70, 32, 45, 45, 45, 45, 45, 45,
+ 47, 47, 47, 47, 47, 71, 74, 47, 547, 77,
+ 81, 546, 71, 47, 48, 48, 48, 48, 48, 48,
+ 49, 49, 49, 49, 49, 78, 49, 49, 65, 49,
+ 49, 49, 49, 49, 49, 65, 75, 76, 65, 79,
+ 80, 82, 86, 78, 84, 75, 76, 65, 79, 79,
+
+ 85, 92, 88, 87, 86, 85, 80, 89, 91, 75,
+ 88, 84, 100, 82, 82, 93, 82, 84, 87, 94,
+ 95, 92, 89, 91, 93, 96, 97, 98, 94, 95,
+ 96, 99, 101, 100, 97, 103, 104, 105, 93, 107,
+ 98, 106, 94, 104, 99, 108, 105, 107, 103, 109,
+ 116, 104, 110, 111, 108, 101, 106, 164, 109, 111,
+ 105, 112, 107, 104, 113, 106, 115, 117, 108, 116,
+ 110, 118, 119, 120, 112, 121, 164, 113, 123, 115,
+ 117, 119, 124, 126, 121, 113, 124, 123, 126, 125,
+ 115, 118, 122, 128, 129, 119, 120, 127, 121, 127,
+
+ 122, 122, 125, 145, 125, 132, 132, 132, 132, 139,
+ 122, 143, 140, 122, 128, 129, 145, 142, 122, 152,
+ 139, 129, 133, 133, 133, 133, 142, 147, 545, 133,
+ 140, 148, 143, 149, 147, 133, 135, 135, 135, 135,
+ 135, 152, 154, 135, 151, 155, 148, 154, 149, 135,
+ 136, 136, 151, 136, 136, 136, 136, 136, 153, 156,
+ 155, 157, 158, 159, 160, 161, 162, 153, 163, 159,
+ 165, 158, 156, 166, 161, 158, 157, 160, 166, 167,
+ 168, 169, 543, 170, 172, 173, 161, 171, 162, 176,
+ 169, 163, 170, 171, 179, 165, 174, 169, 168, 175,
+
+ 173, 168, 177, 172, 178, 174, 167, 176, 175, 181,
+ 182, 177, 180, 183, 185, 192, 195, 179, 178, 196,
+ 180, 206, 175, 199, 200, 182, 234, 201, 202, 185,
+ 181, 206, 207, 195, 234, 192, 201, 183, 214, 212,
+ 208, 207, 196, 198, 198, 198, 198, 200, 199, 198,
+ 198, 202, 198, 198, 198, 198, 198, 198, 208, 211,
+ 212, 214, 215, 216, 217, 220, 232, 218, 224, 219,
+ 227, 230, 231, 239, 216, 211, 218, 215, 219, 227,
+ 230, 236, 232, 217, 218, 231, 224, 233, 235, 240,
+ 220, 239, 233, 235, 237, 236, 541, 248, 237, 540,
+
+ 242, 242, 242, 242, 248, 243, 243, 242, 243, 243,
+ 243, 243, 240, 242, 244, 244, 244, 244, 245, 245,
+ 245, 245, 245, 246, 246, 246, 246, 246, 247, 249,
+ 251, 252, 255, 256, 257, 258, 252, 259, 260, 255,
+ 261, 262, 259, 263, 265, 247, 249, 251, 264, 265,
+ 258, 266, 268, 261, 272, 260, 256, 257, 273, 263,
+ 267, 268, 269, 264, 274, 267, 275, 278, 262, 269,
+ 279, 281, 266, 282, 283, 279, 286, 272, 284, 285,
+ 281, 273, 278, 287, 288, 291, 274, 292, 274, 294,
+ 275, 286, 295, 285, 282, 283, 284, 299, 296, 288,
+
+ 300, 287, 292, 291, 302, 307, 310, 300, 303, 304,
+ 299, 306, 307, 294, 302, 295, 296, 303, 309, 304,
+ 306, 310, 312, 315, 316, 317, 318, 309, 320, 312,
+ 317, 322, 538, 315, 316, 324, 330, 325, 327, 327,
+ 327, 327, 329, 318, 330, 324, 332, 329, 333, 320,
+ 325, 334, 335, 336, 322, 333, 334, 324, 336, 335,
+ 337, 338, 342, 339, 340, 341, 350, 345, 332, 339,
+ 338, 342, 343, 344, 345, 347, 352, 353, 351, 350,
+ 354, 337, 347, 340, 341, 355, 353, 356, 357, 343,
+ 344, 351, 358, 352, 359, 354, 361, 362, 368, 364,
+
+ 363, 355, 367, 359, 369, 357, 362, 363, 364, 365,
+ 356, 358, 366, 361, 370, 367, 368, 372, 365, 374,
+ 371, 366, 375, 376, 378, 383, 380, 369, 382, 370,
+ 371, 374, 376, 380, 381, 384, 372, 385, 383, 382,
+ 384, 386, 381, 378, 388, 375, 389, 391, 392, 393,
+ 394, 396, 397, 398, 409, 392, 402, 388, 386, 394,
+ 385, 401, 407, 409, 391, 401, 401, 406, 412, 389,
+ 397, 398, 410, 396, 406, 411, 414, 393, 407, 402,
+ 411, 410, 419, 414, 420, 421, 423, 424, 430, 433,
+ 434, 412, 436, 437, 439, 423, 441, 424, 435, 444,
+
+ 430, 420, 421, 419, 433, 436, 435, 445, 446, 447,
+ 437, 452, 434, 448, 441, 451, 450, 439, 453, 454,
+ 444, 455, 448, 456, 447, 450, 452, 457, 445, 459,
+ 455, 461, 451, 453, 446, 460, 461, 462, 463, 465,
+ 454, 464, 466, 468, 460, 456, 462, 469, 464, 470,
+ 457, 471, 474, 466, 459, 475, 473, 476, 483, 482,
+ 471, 463, 465, 480, 488, 483, 476, 468, 482, 474,
+ 469, 473, 470, 484, 486, 487, 480, 488, 475, 484,
+ 487, 486, 490, 493, 494, 495, 496, 497, 493, 498,
+ 499, 496, 500, 494, 501, 502, 503, 499, 506, 504,
+
+ 502, 507, 508, 497, 504, 490, 509, 510, 495, 501,
+ 511, 503, 506, 512, 514, 500, 510, 507, 498, 511,
+ 515, 508, 516, 514, 517, 519, 520, 521, 522, 509,
+ 524, 526, 530, 532, 519, 515, 512, 516, 528, 517,
+ 521, 529, 531, 527, 533, 522, 526, 534, 524, 520,
+ 527, 528, 535, 530, 534, 536, 532, 537, 529, 535,
+ 531, 539, 542, 544, 548, 533, 525, 523, 518, 542,
+ 513, 505, 544, 492, 491, 489, 485, 481, 539, 479,
+ 537, 478, 477, 472, 536, 548, 551, 551, 551, 551,
+ 552, 552, 554, 467, 554, 554, 458, 449, 443, 442,
+
+ 440, 438, 432, 431, 429, 428, 427, 426, 425, 422,
+ 418, 417, 416, 415, 413, 408, 405, 404, 403, 400,
+ 399, 395, 390, 387, 379, 377, 373, 360, 349, 348,
+ 346, 331, 328, 326, 323, 321, 319, 314, 313, 311,
+ 308, 305, 301, 298, 293, 290, 289, 280, 277, 276,
+ 271, 270, 254, 253, 250, 238, 229, 228, 226, 225,
+ 223, 222, 221, 213, 210, 209, 205, 204, 203, 197,
+ 194, 193, 191, 190, 189, 188, 187, 186, 184, 150,
+ 146, 144, 141, 138, 134, 130, 114, 90, 69, 59,
+ 39, 37, 8, 7, 3, 550, 550, 550, 550, 550,
+
+ 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
+ 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
+ 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
+ 550, 550, 550, 550, 550, 550, 550, 550, 550
} ;
static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
@@ -881,7 +877,7 @@ goto find_rule; \
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
-#line 1 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 1 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
#define INITIAL 0
/*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===//
//
@@ -896,7 +892,7 @@ char *yytext;
//
//===----------------------------------------------------------------------===*/
#define YY_NEVER_INTERACTIVE 1
-#line 28 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 28 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
#include "ParserInternals.h"
#include "llvm/Module.h"
#include <list>
@@ -1029,7 +1025,7 @@ using namespace llvm;
/* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing
* it to deal with 64 bit numbers.
*/
-#line 1033 "Lexer.cpp"
+#line 1029 "Lexer.cpp"
/* Macros after this point can all be overridden by user definitions in
* section 1.
@@ -1180,10 +1176,10 @@ YY_DECL
register char *yy_cp = NULL, *yy_bp = NULL;
register int yy_act;
-#line 186 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 188 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
-#line 1187 "Lexer.cpp"
+#line 1183 "Lexer.cpp"
if ( yy_init )
{
@@ -1231,14 +1227,14 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 557 )
+ if ( yy_current_state >= 551 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
*yy_state_ptr++ = yy_current_state;
++yy_cp;
}
- while ( yy_current_state != 556 );
+ while ( yy_current_state != 550 );
yy_find_action:
yy_current_state = *--yy_state_ptr;
@@ -1276,636 +1272,627 @@ do_action: /* This label is used only to access EOF actions. */
{ /* beginning of action switch */
case 1:
YY_RULE_SETUP
-#line 188 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 190 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ /* Ignore comments for now */ }
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 190 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 192 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return BEGINTOK; }
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 191 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 193 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ENDTOK; }
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 192 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 194 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return TRUETOK; }
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 193 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 195 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return FALSETOK; }
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 194 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 196 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return DECLARE; }
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 195 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 197 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return DEFINE; }
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 196 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 198 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return GLOBAL; }
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 197 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 199 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return CONSTANT; }
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 198 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 200 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return INTERNAL; }
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 199 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 201 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return LINKONCE; }
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 200 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 202 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return WEAK; }
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 201 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 203 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return APPENDING; }
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 202 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 204 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return DLLIMPORT; }
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 203 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 205 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return DLLEXPORT; }
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 204 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 206 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return EXTERN_WEAK; }
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 205 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 207 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return EXTERNAL; }
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 206 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 208 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return IMPLEMENTATION; }
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 207 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 209 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ZEROINITIALIZER; }
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 208 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 210 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return DOTDOTDOT; }
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 209 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 211 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return UNDEF; }
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 210 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 212 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return NULL_TOK; }
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 211 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 213 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return TO; }
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 212 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 214 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return TAIL; }
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 213 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 215 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return TARGET; }
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 214 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 216 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return TRIPLE; }
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 215 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 217 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return DEPLIBS; }
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 216 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 218 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ENDIAN; }
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 217 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 219 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return POINTERSIZE; }
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 218 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 220 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return DATALAYOUT; }
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 219 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 221 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return LITTLE; }
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 220 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 222 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return BIG; }
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 221 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 223 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return VOLATILE; }
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 222 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 224 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ALIGN; }
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 223 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 225 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return SECTION; }
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 224 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 226 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return MODULE; }
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 225 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 227 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ASM_TOK; }
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 226 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 228 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return SIDEEFFECT; }
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 228 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 230 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return CC_TOK; }
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 229 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 231 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return CCC_TOK; }
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 230 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 232 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return CSRETCC_TOK; }
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 231 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 233 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return FASTCC_TOK; }
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 232 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 234 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return COLDCC_TOK; }
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 233 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 235 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return X86_STDCALLCC_TOK; }
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 234 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 236 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return X86_FASTCALLCC_TOK; }
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 236 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 238 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TY(Type::VoidTy, VOID); }
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 237 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 239 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TY(Type::Int1Ty, BOOL); }
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 238 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::Int8Ty, INT8); }
+#line 240 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::FloatTy, FLOAT); }
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 239 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::Int16Ty, INT16); }
+#line 241 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::DoubleTy,DOUBLE);}
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 240 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::Int32Ty, INT32); }
+#line 242 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::LabelTy, LABEL); }
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 241 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::Int64Ty, INT64); }
+#line 243 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
+{ return TYPE; }
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 242 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::FloatTy, FLOAT); }
+#line 244 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
+{ return OPAQUE; }
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 243 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::DoubleTy,DOUBLE);}
+#line 245 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
+{ uint64_t NumBits = atoull(yytext+1);
+ if (NumBits < IntegerType::MIN_INT_BITS ||
+ NumBits > IntegerType::MAX_INT_BITS)
+ GenerateError("Bitwidth for integer type out of range!");
+ const Type* Ty = IntegerType::get(NumBits);
+ RET_TY(Ty, INTTYPE);
+ }
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 244 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::LabelTy, LABEL); }
- YY_BREAK
-case 55:
-YY_RULE_SETUP
-#line 245 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return TYPE; }
- YY_BREAK
-case 56:
-YY_RULE_SETUP
-#line 246 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return OPAQUE; }
- YY_BREAK
-case 57:
-YY_RULE_SETUP
-#line 248 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 253 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, Add, ADD); }
YY_BREAK
-case 58:
+case 55:
YY_RULE_SETUP
-#line 249 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 254 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, Sub, SUB); }
YY_BREAK
-case 59:
+case 56:
YY_RULE_SETUP
-#line 250 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 255 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, Mul, MUL); }
YY_BREAK
-case 60:
+case 57:
YY_RULE_SETUP
-#line 251 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 256 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, UDiv, UDIV); }
YY_BREAK
-case 61:
+case 58:
YY_RULE_SETUP
-#line 252 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 257 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, SDiv, SDIV); }
YY_BREAK
-case 62:
+case 59:
YY_RULE_SETUP
-#line 253 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 258 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, FDiv, FDIV); }
YY_BREAK
-case 63:
+case 60:
YY_RULE_SETUP
-#line 254 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 259 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, URem, UREM); }
YY_BREAK
-case 64:
+case 61:
YY_RULE_SETUP
-#line 255 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 260 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, SRem, SREM); }
YY_BREAK
-case 65:
+case 62:
YY_RULE_SETUP
-#line 256 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 261 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, FRem, FREM); }
YY_BREAK
-case 66:
+case 63:
YY_RULE_SETUP
-#line 257 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 262 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, And, AND); }
YY_BREAK
-case 67:
+case 64:
YY_RULE_SETUP
-#line 258 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 263 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, Or , OR ); }
YY_BREAK
-case 68:
+case 65:
YY_RULE_SETUP
-#line 259 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 264 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(BinaryOpVal, Xor, XOR); }
YY_BREAK
-case 69:
+case 66:
YY_RULE_SETUP
-#line 260 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 265 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, ICmp, ICMP); }
YY_BREAK
-case 70:
+case 67:
YY_RULE_SETUP
-#line 261 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 266 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, FCmp, FCMP); }
YY_BREAK
-case 71:
+case 68:
YY_RULE_SETUP
-#line 262 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 267 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return EQ; }
YY_BREAK
-case 72:
+case 69:
YY_RULE_SETUP
-#line 263 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 268 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return NE; }
YY_BREAK
-case 73:
+case 70:
YY_RULE_SETUP
-#line 264 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 269 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return SLT; }
YY_BREAK
-case 74:
+case 71:
YY_RULE_SETUP
-#line 265 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 270 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return SGT; }
YY_BREAK
-case 75:
+case 72:
YY_RULE_SETUP
-#line 266 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 271 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return SLE; }
YY_BREAK
-case 76:
+case 73:
YY_RULE_SETUP
-#line 267 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 272 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return SGE; }
YY_BREAK
-case 77:
+case 74:
YY_RULE_SETUP
-#line 268 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 273 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ULT; }
YY_BREAK
-case 78:
+case 75:
YY_RULE_SETUP
-#line 269 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 274 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return UGT; }
YY_BREAK
-case 79:
+case 76:
YY_RULE_SETUP
-#line 270 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 275 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ULE; }
YY_BREAK
-case 80:
+case 77:
YY_RULE_SETUP
-#line 271 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 276 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return UGE; }
YY_BREAK
-case 81:
+case 78:
YY_RULE_SETUP
-#line 272 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 277 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return OEQ; }
YY_BREAK
-case 82:
+case 79:
YY_RULE_SETUP
-#line 273 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 278 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ONE; }
YY_BREAK
-case 83:
+case 80:
YY_RULE_SETUP
-#line 274 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 279 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return OLT; }
YY_BREAK
-case 84:
+case 81:
YY_RULE_SETUP
-#line 275 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 280 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return OGT; }
YY_BREAK
-case 85:
+case 82:
YY_RULE_SETUP
-#line 276 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 281 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return OLE; }
YY_BREAK
-case 86:
+case 83:
YY_RULE_SETUP
-#line 277 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 282 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return OGE; }
YY_BREAK
-case 87:
+case 84:
YY_RULE_SETUP
-#line 278 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 283 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return ORD; }
YY_BREAK
-case 88:
+case 85:
YY_RULE_SETUP
-#line 279 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 284 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return UNO; }
YY_BREAK
-case 89:
+case 86:
YY_RULE_SETUP
-#line 280 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 285 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return UEQ; }
YY_BREAK
-case 90:
+case 87:
YY_RULE_SETUP
-#line 281 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 286 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return UNE; }
YY_BREAK
-case 91:
+case 88:
YY_RULE_SETUP
-#line 283 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 288 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, PHI, PHI_TOK); }
YY_BREAK
-case 92:
+case 89:
YY_RULE_SETUP
-#line 284 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 289 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, Call, CALL); }
YY_BREAK
-case 93:
+case 90:
YY_RULE_SETUP
-#line 285 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 290 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, Trunc, TRUNC); }
YY_BREAK
-case 94:
+case 91:
YY_RULE_SETUP
-#line 286 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 291 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, ZExt, ZEXT); }
YY_BREAK
-case 95:
+case 92:
YY_RULE_SETUP
-#line 287 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 292 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, SExt, SEXT); }
YY_BREAK
-case 96:
+case 93:
YY_RULE_SETUP
-#line 288 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 293 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, FPTrunc, FPTRUNC); }
YY_BREAK
-case 97:
+case 94:
YY_RULE_SETUP
-#line 289 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 294 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, FPExt, FPEXT); }
YY_BREAK
-case 98:
+case 95:
YY_RULE_SETUP
-#line 290 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 295 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, UIToFP, UITOFP); }
YY_BREAK
-case 99:
+case 96:
YY_RULE_SETUP
-#line 291 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 296 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, SIToFP, SITOFP); }
YY_BREAK
-case 100:
+case 97:
YY_RULE_SETUP
-#line 292 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 297 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, FPToUI, FPTOUI); }
YY_BREAK
-case 101:
+case 98:
YY_RULE_SETUP
-#line 293 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 298 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, FPToSI, FPTOSI); }
YY_BREAK
-case 102:
+case 99:
YY_RULE_SETUP
-#line 294 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 299 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, IntToPtr, INTTOPTR); }
YY_BREAK
-case 103:
+case 100:
YY_RULE_SETUP
-#line 295 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 300 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, PtrToInt, PTRTOINT); }
YY_BREAK
-case 104:
+case 101:
YY_RULE_SETUP
-#line 296 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 301 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(CastOpVal, BitCast, BITCAST); }
YY_BREAK
-case 105:
+case 102:
YY_RULE_SETUP
-#line 297 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 302 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, Select, SELECT); }
YY_BREAK
-case 106:
+case 103:
YY_RULE_SETUP
-#line 298 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 303 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, Shl, SHL); }
YY_BREAK
-case 107:
+case 104:
YY_RULE_SETUP
-#line 299 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 304 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, LShr, LSHR); }
YY_BREAK
-case 108:
+case 105:
YY_RULE_SETUP
-#line 300 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 305 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, AShr, ASHR); }
YY_BREAK
-case 109:
+case 106:
YY_RULE_SETUP
-#line 301 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 306 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, VAArg , VAARG); }
YY_BREAK
-case 110:
+case 107:
YY_RULE_SETUP
-#line 302 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 307 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Ret, RET); }
YY_BREAK
-case 111:
+case 108:
YY_RULE_SETUP
-#line 303 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 308 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Br, BR); }
YY_BREAK
-case 112:
+case 109:
YY_RULE_SETUP
-#line 304 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 309 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Switch, SWITCH); }
YY_BREAK
-case 113:
+case 110:
YY_RULE_SETUP
-#line 305 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 310 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Invoke, INVOKE); }
YY_BREAK
-case 114:
+case 111:
YY_RULE_SETUP
-#line 306 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 311 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Unwind, UNWIND); }
YY_BREAK
-case 115:
+case 112:
YY_RULE_SETUP
-#line 307 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 312 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(TermOpVal, Unreachable, UNREACHABLE); }
YY_BREAK
-case 116:
+case 113:
YY_RULE_SETUP
-#line 309 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 314 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Malloc, MALLOC); }
YY_BREAK
-case 117:
+case 114:
YY_RULE_SETUP
-#line 310 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 315 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Alloca, ALLOCA); }
YY_BREAK
-case 118:
+case 115:
YY_RULE_SETUP
-#line 311 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 316 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Free, FREE); }
YY_BREAK
-case 119:
+case 116:
YY_RULE_SETUP
-#line 312 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 317 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Load, LOAD); }
YY_BREAK
-case 120:
+case 117:
YY_RULE_SETUP
-#line 313 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 318 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, Store, STORE); }
YY_BREAK
-case 121:
+case 118:
YY_RULE_SETUP
-#line 314 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 319 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); }
YY_BREAK
-case 122:
+case 119:
YY_RULE_SETUP
-#line 316 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 321 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); }
YY_BREAK
-case 123:
+case 120:
YY_RULE_SETUP
-#line 317 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 322 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); }
YY_BREAK
-case 124:
+case 121:
YY_RULE_SETUP
-#line 318 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 323 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); }
YY_BREAK
-case 125:
+case 122:
YY_RULE_SETUP
-#line 321 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 326 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{
UnEscapeLexed(yytext+1);
llvmAsmlval.StrVal = strdup(yytext+1); // Skip %
return VAR_ID;
}
YY_BREAK
-case 126:
+case 123:
YY_RULE_SETUP
-#line 326 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 331 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{
yytext[strlen(yytext)-1] = 0; // nuke colon
UnEscapeLexed(yytext);
@@ -1913,9 +1900,9 @@ YY_RULE_SETUP
return LABELSTR;
}
YY_BREAK
-case 127:
+case 124:
YY_RULE_SETUP
-#line 332 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 337 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{
yytext[strlen(yytext)-2] = 0; // nuke colon, end quote
UnEscapeLexed(yytext+1);
@@ -1923,9 +1910,9 @@ YY_RULE_SETUP
return LABELSTR;
}
YY_BREAK
-case 128:
+case 125:
YY_RULE_SETUP
-#line 339 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 344 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ // Note that we cannot unescape a string constant here! The
// string constant might contain a \00 which would not be
// understood by the string stuff. It is valid to make a
@@ -1936,14 +1923,14 @@ YY_RULE_SETUP
return STRINGCONSTANT;
}
YY_BREAK
-case 129:
+case 126:
YY_RULE_SETUP
-#line 350 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 355 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ llvmAsmlval.UInt64Val = atoull(yytext); return EUINT64VAL; }
YY_BREAK
-case 130:
+case 127:
YY_RULE_SETUP
-#line 351 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 356 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{
uint64_t Val = atoull(yytext+1);
// +1: we have bigger negative range
@@ -1953,17 +1940,17 @@ YY_RULE_SETUP
return ESINT64VAL;
}
YY_BREAK
-case 131:
+case 128:
YY_RULE_SETUP
-#line 359 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 364 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{
llvmAsmlval.UInt64Val = HexIntToVal(yytext+3);
return yytext[0] == 's' ? ESINT64VAL : EUINT64VAL;
}
YY_BREAK
-case 132:
+case 129:
YY_RULE_SETUP
-#line 364 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 369 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{
uint64_t Val = atoull(yytext+1);
if ((unsigned)Val != Val)
@@ -1972,9 +1959,9 @@ YY_RULE_SETUP
return UINTVAL;
}
YY_BREAK
-case 133:
+case 130:
YY_RULE_SETUP
-#line 371 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 376 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{
uint64_t Val = atoull(yytext+2);
// +1: we have bigger negative range
@@ -1984,18 +1971,18 @@ YY_RULE_SETUP
return SINTVAL;
}
YY_BREAK
-case 134:
+case 131:
YY_RULE_SETUP
-#line 380 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 385 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ llvmAsmlval.FPVal = atof(yytext); return FPVAL; }
YY_BREAK
-case 135:
+case 132:
YY_RULE_SETUP
-#line 381 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 386 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ llvmAsmlval.FPVal = HexToFP(yytext); return FPVAL; }
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 383 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 388 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{
/* Make sure to free the internal buffers for flex when we are
* done reading our input!
@@ -2004,22 +1991,22 @@ case YY_STATE_EOF(INITIAL):
return EOF;
}
YY_BREAK
-case 136:
+case 133:
YY_RULE_SETUP
-#line 391 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 396 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ /* Ignore whitespace */ }
YY_BREAK
-case 137:
+case 134:
YY_RULE_SETUP
-#line 392 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 397 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
{ return yytext[0]; }
YY_BREAK
-case 138:
+case 135:
YY_RULE_SETUP
-#line 394 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 399 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
-#line 2023 "Lexer.cpp"
+#line 2010 "Lexer.cpp"
case YY_END_OF_BUFFER:
{
@@ -2306,7 +2293,7 @@ static yy_state_type yy_get_previous_state()
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 557 )
+ if ( yy_current_state >= 551 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2336,11 +2323,11 @@ yy_state_type yy_current_state;
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 557 )
+ if ( yy_current_state >= 551 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 556);
+ yy_is_jam = (yy_current_state == 550);
if ( ! yy_is_jam )
*yy_state_ptr++ = yy_current_state;
@@ -2897,5 +2884,5 @@ int main()
return 0;
}
#endif
-#line 394 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 399 "/proj/llvm/llvm-1/lib/AsmParser/Lexer.l"
diff --git a/lib/AsmParser/Lexer.l b/lib/AsmParser/Lexer.l
index e13c56b7e7..9f1eddd0f4 100644
--- a/lib/AsmParser/Lexer.l
+++ b/lib/AsmParser/Lexer.l
@@ -165,6 +165,8 @@ StringConstant \"[^\"]*\"
EPInteger %[0-9]+
ENInteger %-[0-9]+
+IntegerType i[0-9]*
+
/* E[PN]Integer: match positive and negative literal integer values */
PInteger [0-9]+
@@ -235,15 +237,18 @@ x86_fastcallcc { return X86_FASTCALLCC_TOK; }
void { RET_TY(Type::VoidTy, VOID); }
bool { RET_TY(Type::Int1Ty, BOOL); }
-i8 { RET_TY(Type::Int8Ty, INT8); }
-i16 { RET_TY(Type::Int16Ty, INT16); }
-i32 { RET_TY(Type::Int32Ty, INT32); }
-i64 { RET_TY(Type::Int64Ty, INT64); }
float { RET_TY(Type::FloatTy, FLOAT); }
double { RET_TY(Type::DoubleTy,DOUBLE);}
label { RET_TY(Type::LabelTy, LABEL); }
type { return TYPE; }
opaque { return OPAQUE; }
+{IntegerType} { uint64_t NumBits = atoull(yytext+1);
+ if (NumBits < IntegerType::MIN_INT_BITS ||
+ NumBits > IntegerType::MAX_INT_BITS)
+ GenerateError("Bitwidth for integer type out of range!");
+ const Type* Ty = IntegerType::get(NumBits);
+ RET_TY(Ty, INTTYPE);
+ }
add { RET_TOK(BinaryOpVal, Add, ADD); }
sub { RET_TOK(BinaryOpVal, Sub, SUB); }
diff --git a/lib/AsmParser/Lexer.l.cvs b/lib/AsmParser/Lexer.l.cvs
index e13c56b7e7..9f1eddd0f4 100644
--- a/lib/AsmParser/Lexer.l.cvs
+++ b/lib/AsmParser/Lexer.l.cvs
@@ -165,6 +165,8 @@ StringConstant \"[^\"]*\"
EPInteger %[0-9]+
ENInteger %-[0-9]+
+IntegerType i[0-9]*
+
/* E[PN]Integer: match positive and negative literal integer values */
PInteger [0-9]+
@@ -235,15 +237,18 @@ x86_fastcallcc { return X86_FASTCALLCC_TOK; }
void { RET_TY(Type::VoidTy, VOID); }
bool { RET_TY(Type::Int1Ty, BOOL); }
-i8 { RET_TY(Type::Int8Ty, INT8); }
-i16 { RET_TY(Type::Int16Ty, INT16); }
-i32 { RET_TY(Type::Int32Ty, INT32); }
-i64 { RET_TY(Type::Int64Ty, INT64); }
float { RET_TY(Type::FloatTy, FLOAT); }
double { RET_TY(Type::DoubleTy,DOUBLE);}
label { RET_TY(Type::LabelTy, LABEL); }
type { return TYPE; }
opaque { return OPAQUE; }
+{IntegerType} { uint64_t NumBits = atoull(yytext+1);
+ if (NumBits < IntegerType::MIN_INT_BITS ||
+ NumBits > IntegerType::MAX_INT_BITS)
+ GenerateError("Bitwidth for integer type out of range!");
+ const Type* Ty = IntegerType::get(NumBits);
+ RET_TY(Ty, INTTYPE);
+ }
add { RET_TOK(BinaryOpVal, Add, ADD); }
sub { RET_TOK(BinaryOpVal, Sub, SUB); }
diff --git a/lib/AsmParser/llvmAsmParser.cpp.cvs b/lib/AsmParser/llvmAsmParser.cpp.cvs
index 7091018442..2e540c350c 100644
--- a/lib/AsmParser/llvmAsmParser.cpp.cvs
+++ b/lib/AsmParser/llvmAsmParser.cpp.cvs
@@ -71,132 +71,129 @@
FPVAL = 262,
VOID = 263,
BOOL = 264,
- INT8 = 265,
- INT16 = 266,
- INT32 = 267,
- INT64 = 268,
- FLOAT = 269,
- DOUBLE = 270,
- LABEL = 271,
- TYPE = 272,
- VAR_ID = 273,
- LABELSTR = 274,
- STRINGCONSTANT = 275,
- IMPLEMENTATION = 276,
- ZEROINITIALIZER = 277,
- TRUETOK = 278,
- FALSETOK = 279,
- BEGINTOK = 280,
- ENDTOK = 281,
- DECLARE = 282,
- DEFINE = 283,
- GLOBAL = 284,
- CONSTANT = 285,
- SECTION = 286,
- VOLATILE = 287,
- TO = 288,
- DOTDOTDOT = 289,
- NULL_TOK = 290,
- UNDEF = 291,
- INTERNAL = 292,
- LINKONCE = 293,
- WEAK = 294,
- APPENDING = 295,
- DLLIMPORT = 296,
- DLLEXPORT = 297,
- EXTERN_WEAK = 298,
- OPAQUE = 299,
- NOT = 300,
- EXTERNAL = 301,
- TARGET = 302,
- TRIPLE = 303,
- ENDIAN = 304,
- POINTERSIZE = 305,
- LITTLE = 306,
- BIG = 307,
- ALIGN = 308,
- DEPLIBS = 309,
- CALL = 310,
- TAIL = 311,
- ASM_TOK = 312,
- MODULE = 313,
- SIDEEFFECT = 314,
- CC_TOK = 315,
- CCC_TOK = 316,
- CSRETCC_TOK = 317,
- FASTCC_TOK = 318,
- COLDCC_TOK = 319,
- X86_STDCALLCC_TOK = 320,
- X86_FASTCALLCC_TOK = 321,
- DATALAYOUT = 322,
- RET = 323,
- BR = 324,
- SWITCH = 325,
- INVOKE = 326,
- UNWIND = 327,
- UNREACHABLE = 328,
- ADD = 329,
- SUB = 330,
- MUL = 331,
- UDIV = 332,
- SDIV = 333,
- FDIV = 334,
- UREM = 335,
- SREM = 336,
- FREM = 337,
- AND = 338,
- OR = 339,
- XOR = 340,
- ICMP = 341,
- FCMP = 342,
- EQ = 343,
- NE = 344,
- SLT = 345,
- SGT = 346,
- SLE = 347,
- SGE = 348,
- ULT = 349,
- UGT = 350,
- ULE = 351,
- UGE = 352,
- OEQ = 353,
- ONE = 354,
- OLT = 355,
- OGT = 356,
- OLE = 357,
- OGE = 358,
- ORD = 359,
- UNO = 360,
- UEQ = 361,
- UNE = 362,
- MALLOC = 363,
- ALLOCA = 364,
- FREE = 365,
- LOAD = 366,
- STORE = 367,
- GETELEMENTPTR = 368,
- TRUNC = 369,
- ZEXT = 370,
- SEXT = 371,
- FPTRUNC = 372,
- FPEXT = 373,
- BITCAST = 374,
- UITOFP = 375,
- SITOFP = 376,
- FPTOUI = 377,
- FPTOSI = 378,
- INTTOPTR = 379,
- PTRTOINT = 380,
- PHI_TOK = 381,
- SELECT = 382,
- SHL = 383,
- LSHR = 384,
- ASHR = 385,
- VAARG = 386,
- EXTRACTELEMENT = 387,
- INSERTELEMENT = 388,
- SHUFFLEVECTOR = 389,
- NORETURN = 390
+ INTTYPE = 265,
+ FLOAT = 266,
+ DOUBLE = 267,
+ LABEL = 268,
+ TYPE = 269,
+ VAR_ID = 270,
+ LABELSTR = 271,
+ STRINGCONSTANT = 272,
+ IMPLEMENTATION = 273,
+ ZEROINITIALIZER = 274,
+ TRUETOK = 275,
+ FALSETOK = 276,
+ BEGINTOK = 277,
+ ENDTOK = 278,
+ DECLARE = 279,
+ DEFINE = 280,
+ GLOBAL = 281,
+ CONSTANT = 282,
+ SECTION = 283,
+ VOLATILE = 284,
+ TO = 285,
+ DOTDOTDOT = 286,
+ NULL_TOK = 287,
+ UNDEF = 288,
+ INTERNAL = 289,
+ LINKONCE = 290,
+ WEAK = 291,
+ APPENDING = 292,
+ DLLIMPORT = 293,
+ DLLEXPORT = 294,
+ EXTERN_WEAK = 295,
+ OPAQUE = 296,
+ NOT = 297,
+ EXTERNAL = 298,
+ TARGET = 299,
+ TRIPLE = 300,
+ ENDIAN = 301,
+ POINTERSIZE = 302,
+ LITTLE = 303,
+ BIG = 304,
+ ALIGN = 305,
+ DEPLIBS = 306,
+ CALL = 307,
+ TAIL = 308,
+ ASM_TOK = 309,
+ MODULE = 310,
+ SIDEEFFECT = 311,
+ CC_TOK = 312,
+ CCC_TOK = 313,
+ CSRETCC_TOK = 314,
+ FASTCC_TOK = 315,
+ COLDCC_TOK = 316,
+ X86_STDCALLCC_TOK = 317,
+ X86_FASTCALLCC_TOK = 318,
+ DATALAYOUT = 319,
+ RET = 320,
+ BR = 321,
+ SWITCH = 322,
+ INVOKE = 323,
+ UNWIND = 324,
+ UNREACHABLE = 325,
+ ADD = 326,
+ SUB = 327,
+ MUL = 328,
+ UDIV = 329,
+ SDIV = 330,
+ FDIV = 331,
+ UREM = 332,
+ SREM = 333,
+ FREM = 334,
+ AND = 335,
+ OR = 336,
+ XOR = 337,
+ ICMP = 338,
+ FCMP = 339,
+ EQ = 340,
+ NE = 341,
+ SLT = 342,
+ SGT = 343,
+ SLE = 344,
+ SGE = 345,
+ ULT = 346,
+ UGT = 347,
+ ULE = 348,
+ UGE = 349,
+ OEQ = 350,
+ ONE = 351,
+ OLT = 352,
+ OGT = 353,
+ OLE = 354,
+ OGE = 355,
+ ORD = 356,
+ UNO = 357,
+ UEQ = 358,
+ UNE = 359,
+ MALLOC = 360,
+ ALLOCA = 361,
+ FREE = 362,
+ LOAD = 363,
+ STORE = 364,
+ GETELEMENTPTR = 365,
+ TRUNC = 366,
+ ZEXT = 367,
+ SEXT = 368,
+ FPTRUNC = 369,
+ FPEXT = 370,
+ BITCAST = 371,
+ UITOFP = 372,
+ SITOFP = 373,
+ FPTOUI = 374,
+ FPTOSI = 375,
+ INTTOPTR = 376,
+ PTRTOINT = 377,
+ PHI_TOK = 378,
+ SELECT = 379,
+ SHL = 380,
+ LSHR = 381,
+ ASHR = 382,
+ VAARG = 383,
+ EXTRACTELEMENT = 384,
+ INSERTELEMENT = 385,
+ SHUFFLEVECTOR = 386,
+ NORETURN = 387
};
#endif
/* Tokens. */
@@ -207,138 +204,135 @@
#define FPVAL 262
#define VOID 263
#define BOOL 264
-#define INT8 265
-#define INT16 266
-#define INT32 267
-#define INT64 268
-#define FLOAT 269
-#define DOUBLE 270
-#define LABEL 271
-#define TYPE 272
-#define VAR_ID 273
-#define LABELSTR 274
-#define STRINGCONSTANT 275
-#define IMPLEMENTATION 276
-#define ZEROINITIALIZER 277
-#define TRUETOK 278
-#define FALSETOK 279
-#define BEGINTOK 280
-#define ENDTOK 281
-#define DECLARE 282
-#define DEFINE 283
-#define GLOBAL 284
-#define CONSTANT 285
-#define SECTION 286
-#define VOLATILE 287
-#define TO 288
-#define DOTDOTDOT 289
-#define NULL_TOK 290
-#define UNDEF 291
-#define INTERNAL 292
-#define LINKONCE 293
-#define WEAK 294
-#define APPENDING 295
-#define DLLIMPORT 296
-#define DLLEXPORT 297
-#define EXTERN_WEAK 298
-#define OPAQUE 299
-#define NOT 300
-#define EXTERNAL 301
-#define TARGET 302
-#define TRIPLE 303
-#define ENDIAN 304
-#define POINTERSIZE 305
-#define LITTLE 306
-#define BIG 307
-#define ALIGN 308
-#define DEPLIBS 309
-#define CALL 310
-#define TAIL 311
-#define ASM_TOK 312
-#define MODULE 313
-#define SIDEEFFECT 314
-#define CC_TOK 315
-#define CCC_TOK 316
-#define CSRETCC_TOK 317
-#define FASTCC_TOK 318
-#define COLDCC_TOK 319
-#define X86_STDCALLCC_TOK 320
-#define X86_FASTCALLCC_TOK 321
-#define DATALAYOUT 322
-#define RET 323
-#define BR 324
-#define SWITCH 325
-#define INVOKE 326
-#define UNWIND 327
-#define UNREACHABLE 328
-#define ADD 329
-#define SUB 330
-#define MUL 331
-#define UDIV 332
-#define SDIV 333
-#define FDIV 334
-#define UREM 335
-#define SREM 336
-#define FREM 337
-#define AND 338
-#define OR 339
-#define XOR 340
-#define ICMP 341
-#define FCMP 342
-#define EQ 343
-#define NE 344
-#define SLT 345
-#define SGT 346
-#define SLE 347
-#define SGE 348
-#define ULT 349
-#define UGT 350
-#define ULE 351
-#define UGE 352
-#define OEQ 353
-#define ONE 354
-#define OLT 355
-#define OGT 356
-#define OLE 357
-#define OGE 358
-#define ORD 359
-#define UNO 360
-#define UEQ 361
-#define UNE 362
-#define MALLOC 363
-#define ALLOCA 364
-#define FREE 365
-#define LOAD 366
-#define STORE 367
-#define GETELEMENTPTR 368
-#define TRUNC 369
-#define ZEXT 370
-#define SEXT 371
-#define FPTRUNC 372
-#define FPEXT 373
-#define BITCAST 374
-#define UITOFP 375
-#define SITOFP 376
-#define FPTOUI 377
-#define FPTOSI 378
-#define INTTOPTR 379
-#define PTRTOINT 380
-#define PHI_TOK 381
-#define SELECT 382
-#define SHL 383
-#define LSHR 384
-#define ASHR 385
-#define VAARG 386
-#define EXTRACTELEMENT 387
-#define INSERTELEMENT 388
-#define SHUFFLEVECTOR 389
-#define NORETURN 390
+#define INTTYPE 265
+#define FLOAT 266
+#define DOUBLE 267
+#define LABEL 268
+#define TYPE 269
+#define VAR_ID 270
+#define LABELSTR 271
+#define STRINGCONSTANT 272
+#define IMPLEMENTATION 273
+#define ZEROINITIALIZER 274
+#define TRUETOK 275
+#define FALSETOK 276
+#define BEGINTOK 277
+#define ENDTOK 278
+#define DECLARE 279
+#define DEFINE 280
+#define GLOBAL 281
+#define CONSTANT 282
+#define SECTION 283
+#define VOLATILE 284
+#define TO 285
+#define DOTDOTDOT 286
+#define NULL_TOK 287
+#define UNDEF 288
+#define INTERNAL 289
+#define LINKONCE 290
+#define WEAK 291
+#define APPENDING 292
+#define DLLIMPORT 293
+#define DLLEXPORT 294
+#define EXTERN_WEAK 295
+#define OPAQUE 296
+#define NOT 297
+#define EXTERNAL 298
+#define TARGET 299
+#define TRIPLE 300
+#define ENDIAN 301
+#define POINTERSIZE 302
+#define LITTLE 303
+#define BIG 304
+#define ALIGN 305
+#define DEPLIBS 306
+#define CALL 307
+#define TAIL 308
+#define ASM_TOK 309
+#define MODULE 310
+#define SIDEEFFECT 311
+#define CC_TOK 312
+#define CCC_TOK 313
+#define CSRETCC_TOK 314
+#define FASTCC_TOK 315
+#define COLDCC_TOK 316
+#define X86_STDCALLCC_TOK 317
+#define X86_FASTCALLCC_TOK 318
+#define DATALAYOUT 319
+#define RET 320
+#define BR 321
+#define SWITCH 322
+#define INVOKE 323
+#define UNWIND 324
+#define UNREACHABLE 325
+#define ADD 326
+#define SUB 327
+#define MUL 328
+#define UDIV 329
+#define SDIV 330
+#define FDIV 331
+#define UREM 332
+#define SREM 333
+#define FREM 334
+#define AND 335
+#define OR 336
+#define XOR 337
+#define ICMP 338
+#define FCMP 339
+#define EQ 340
+#define NE 341
+#define SLT 342
+#define SGT 343
+#define SLE 344
+#define SGE 345
+#define ULT 346
+#define UGT 347
+#define ULE 348
+#define UGE 349
+#define OEQ 350
+#define ONE 351
+#define OLT 352
+#define OGT 353
+#define OLE 354
+#define OGE 355
+#define ORD 356
+#define UNO 357
+#define UEQ 358
+#define UNE 359
+#define MALLOC 360
+#define ALLOCA 361
+#define FREE 362
+#define LOAD 363
+#define STORE 364
+#define GETELEMENTPTR 365
+#define TRUNC 366
+#define ZEXT 367
+#define SEXT 368
+#define FPTRUNC 369
+#define FPEXT 370
+#define BITCAST 371
+#define UITOFP 372
+#define SITOFP 373
+#define FPTOUI 374
+#define FPTOSI 375
+#define INTTOPTR 376
+#define PTRTOINT 377
+#define PHI_TOK 378
+#define SELECT 379
+#define SHL 380
+#define LSHR 381
+#define ASHR 382
+#define VAARG 383
+#define EXTRACTELEMENT 384
+#define INSERTELEMENT 385
+#define SHUFFLEVECTOR 386
+#define NORETURN 387
/* Copy the first part of user declarations. */
-#line 14 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 14 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
#include "ParserInternals.h"
#include "llvm/CallingConv.h"
@@ -1220,7 +1214,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {
#endif
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 876 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 876 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
typedef union YYSTYPE {
llvm::Module *ModuleVal;
llvm::Function *FunctionVal;
@@ -1267,7 +1261,7 @@ typedef union YYSTYPE {
llvm::FCmpInst::Predicate FPredicate;
} YYSTYPE;
/* Line 196 of yacc.c. */
-#line 1271 "llvmAsmParser.tab.c"
+#line 1265 "llvmAsmParser.tab.c"
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
@@ -1279,7 +1273,7 @@ typedef union YYSTYPE {
/* Line 219 of yacc.c. */
-#line 1283 "llvmAsmParser.tab.c"
+#line 1277 "llvmAsmParser.tab.c"
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
# define YYSIZE_T __SIZE_TYPE__
@@ -1430,20 +1424,20 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 37
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 1584
+#define YYLAST 1512
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 150
+#define YYNTOKENS 147
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 78
/* YYNRULES -- Number of rules. */
-#define YYNRULES 291
+#define YYNRULES 285
/* YYNRULES -- Number of states. */
-#define YYNSTATES 576
+#define YYNSTATES 567
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 390
+#define YYMAXUTOK 387
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -1455,15 +1449,15 @@ static const unsigned char yytranslate[] =
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 140, 141, 138, 2, 137, 2, 2, 2, 2, 2,
+ 137, 138, 135, 2, 134, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 145, 136, 146, 2, 2, 2, 2, 2, 2, 2,
+ 142, 133, 143, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 142, 139, 144, 2, 2, 2, 2, 2, 149,
+ 2, 139, 136, 141, 2, 2, 2, 2, 2, 146,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 143, 2, 2, 147, 2, 148, 2, 2, 2, 2,
+ 140, 2, 2, 144, 2, 145, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -1489,8 +1483,7 @@ static const unsigned char yytranslate[] =
95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135
+ 125, 126, 127, 128, 129, 130, 131, 132
};
#if YYDEBUG
@@ -1504,128 +1497,126 @@ static const unsigned short int yyprhs[] =
59, 61, 63, 65, 67, 69, 71, 73, 75, 77,
79, 81, 83, 85, 87, 89, 91, 93, 95, 97,
99, 101, 103, 105, 107, 109, 111, 113, 115, 117,
- 119, 121, 123, 125, 128, 129, 131, 133, 135, 137,
- 139, 141, 143, 145, 146, 148, 150, 151, 153, 155,
- 157, 159, 160, 162, 164, 166, 168, 170, 172, 175,
- 177, 179, 180, 183, 185, 187, 188, 191, 192, 195,
- 196, 200, 203, 204, 206, 207, 211, 213, 216, 218,
- 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, 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
+ 119, 122, 123, 125, 127, 129, 131, 133, 135, 137,
+ 139, 140, 142, 144, 145, 147, 149, 151, 153, 154,
+ 156, 158, 160, 162, 164, 166, 169, 171, 173, 174,
+ 177, 179, 181, 182, 185, 186, 189, 190, 194, 197,
+ 198, 200, 201, 205, 207, 210, 212, 214, 216, 218,
+ 220, 222, 224, 227, 229, 232, 238, 244, 250, 256,
+ 260, 263, 269, 274, 277, 279, 281, 283, 287, 289,
+ 293, 295, 296, 298, 302, 307, 311, 315, 320, 325,
+ 329, 336, 342, 345, 348, 351, 354, 357, 360, 363,
+ 366, 369, 372, 379, 385, 394, 401, 408, 416, 424,
+ 431, 438, 447, 456, 460, 462, 464, 466, 468, 469,
+ 471, 474, 475, 479, 480, 484, 488, 490, 494, 498,
+ 499, 505, 506, 513, 514, 521, 524, 528, 530, 532,
+ 534, 538, 542, 546, 550, 554, 558, 560, 561, 563,
+ 565, 567, 568, 574, 578, 580, 584, 586, 587, 597,
+ 599, 601, 605, 607, 609, 612, 615, 616, 618, 620,
+ 622, 624, 626, 628, 630, 632, 634, 638, 640, 646,
+ 648, 650, 652, 654, 657, 660, 663, 667, 670, 671,
+ 673, 676, 679, 683, 693, 703, 712, 727, 729, 731,
+ 738, 744, 747, 754, 762, 766, 772, 773, 774, 778,
+ 781, 783, 789, 795, 802, 809, 812, 817, 822, 829,
+ 834, 839, 846, 853, 856, 865, 867, 869, 870, 874,
+ 881, 885, 892, 895, 900, 907
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const short int yyrhs[] =
{
- 187, 0, -1, 5, -1, 6, -1, 74, -1, 75,
- -1, 76, -1, 77, -1, 78, -1, 79, -1, 80,
- -1, 81, -1, 82, -1, 83, -1, 84, -1, 85,
- -1, 114, -1, 115, -1, 116, -1, 117, -1, 118,
- -1, 119, -1, 120, -1, 121, -1, 122, -1, 123,
- -1, 124, -1, 125, -1, 128, -1, 129, -1, 130,
- -1, 88, -1, 89, -1, 90, -1, 91, -1, 92,
- -1, 93, -1, 94, -1, 95, -1, 96, -1, 97,
- -1, 98, -1, 99, -1, 100, -1, 101, -1, 102,
- -1, 103, -1, 104, -1, 105, -1, 106, -1, 107,
- -1, 94, -1, 95, -1, 96, -1, 97, -1, 23,
- -1, 24, -1, 13, -1, 12, -1, 11, -1, 10,
- -1, 14, -1, 15, -1, 200, 136, -1, -1, 37,
- -1, 39, -1, 38, -1, 40, -1, 42, -1, 41,
- -1, 43, -1, 46, -1, -1, 41, -1, 43, -1,
- -1, 37, -1, 38, -1, 39, -1, 42, -1, -1,
- 61, -1, 62, -1, 63, -1, 64, -1, 65, -1,
- 66, -1, 60, 4, -1, 115, -1, 116, -1, -1,
- 167, 166, -1, 135, -1, 166, -1, -1, 169, 168,
- -1, -1, 53, 4, -1, -1, 137, 53, 4, -1,
- 31, 20, -1, -1, 172, -1, -1, 137, 175, 174,
- -1, 172, -1, 53, 4, -1, 9, -1, 10, -1,
- 11, -1, 12, -1, 13, -1, 14, -1, 15, -1,
- 16, -1, 44, -1, 176, -1, 177, 138, -1, 212,
- -1, 139, 4, -1, 177, 140, 181, 141, 169, -1,
- 8, 140, 181, 141, 169, -1, 142, 4, 143, 177,
- 144, -1, 145, 4, 143, 177, 146, -1, 147, 182,
- 148, -1, 147, 148, -1, 145, 147, 182, 148, 146,
- -1, 145, 147, 148, 146, -1, 177, 167, -1, 177,
- -1, 8, -1, 178, -1, 180, 137, 178, -1, 180,
- -1, 180, 137, 34, -1, 34, -1, -1, 177, -1,
- 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, 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
+ 184, 0, -1, 5, -1, 6, -1, 71, -1, 72,
+ -1, 73, -1, 74, -1, 75, -1, 76, -1, 77,
+ -1, 78, -1, 79, -1, 80, -1, 81, -1, 82,
+ -1, 111, -1, 112, -1, 113, -1, 114, -1, 115,
+ -1, 116, -1, 117, -1, 118, -1, 119, -1, 120,
+ -1, 121, -1, 122, -1, 125, -1, 126, -1, 127,
+ -1, 85, -1, 86, -1, 87, -1, 88, -1, 89,
+ -1, 90, -1, 91, -1, 92, -1, 93, -1, 94,
+ -1, 95, -1, 96, -1, 97, -1, 98, -1, 99,
+ -1, 100, -1, 101, -1, 102, -1, 103, -1, 104,
+ -1, 91, -1, 92, -1, 93, -1, 94, -1, 20,
+ -1, 21, -1, 10, -1, 11, -1, 12, -1, 197,
+ 133, -1, -1, 34, -1, 36, -1, 35, -1, 37,
+ -1, 39, -1, 38, -1, 40, -1, 43, -1, -1,
+ 38, -1, 40, -1, -1, 34, -1, 35, -1, 36,
+ -1, 39, -1, -1, 58, -1, 59, -1, 60, -1,
+ 61, -1, 62, -1, 63, -1, 57, 4, -1, 112,
+ -1, 113, -1, -1, 164, 163, -1, 132, -1, 163,
+ -1, -1, 166, 165, -1, -1, 50, 4, -1, -1,
+ 134, 50, 4, -1, 28, 17, -1, -1, 169, -1,
+ -1, 134, 172, 171, -1, 169, -1, 50, 4, -1,
+ 9, -1, 10, -1, 11, -1, 12, -1, 13, -1,
+ 41, -1, 173, -1, 174, 135, -1, 209, -1, 136,
+ 4, -1, 174, 137, 178, 138, 166, -1, 8, 137,
+ 178, 138, 166, -1, 139, 4, 140, 174, 141, -1,
+ 142, 4, 140, 174, 143, -1, 144, 179, 145, -1,
+ 144, 145, -1, 142, 144, 179, 145, 143, -1, 142,
+ 144, 145, 143, -1, 174, 164, -1, 174, -1, 8,
+ -1, 175, -1, 177, 134, 175, -1, 177, -1, 177,
+ 134, 31, -1, 31, -1, -1, 174, -1, 179, 134,
+ 174, -1, 174, 139, 182, 141, -1, 174, 139, 141,
+ -1, 174, 146, 17, -1, 174, 142, 182, 143, -1,
+ 174, 144, 182, 145, -1, 174, 144, 145, -1, 174,
+ 142, 144, 182, 145, 143, -1, 174, 142, 144, 145,
+ 143, -1, 174, 32, -1, 174, 33, -1, 174, 209,
+ -1, 174, 181, -1, 174, 19, -1, 155, 3, -1,
+ 155, 4, -1, 9, 20, -1, 9, 21, -1, 156,
+ 7, -1, 151, 137, 180, 30, 174, 138, -1, 110,
+ 137, 180, 220, 138, -1, 124, 137, 180, 134, 180,
+ 134, 180, 138, -1, 149, 137, 180, 134, 180, 138,
+ -1, 150, 137, 180, 134, 180, 138, -1, 83, 153,
+ 137, 180, 134, 180, 138, -1, 84, 154, 137, 180,
+ 134, 180, 138, -1, 152, 137, 180, 134, 180, 138,
+ -1, 129, 137, 180, 134, 180, 138, -1, 130, 137,
+ 180, 134, 180, 134, 180, 138, -1, 131, 137, 180,
+ 134, 180, 134, 180, 138, -1, 182, 134, 180, -1,
+ 180, -1, 26, -1, 27, -1, 185, -1, -1, 186,
+ -1, 185, 186, -1, -1, 25, 187, 205, -1, -1,
+ 24, 188, 206, -1, 55, 54, 192, -1, 18, -1,
+ 157, 14, 174, -1, 157, 14, 8, -1, -1, 157,
+ 183, 180, 189, 171, -1, -1, 157, 158, 183, 180,
+ 190, 171, -1, -1, 157, 159, 183, 174, 191, 171,
+ -1, 44, 194, -1, 51, 133, 195, -1, 17, -1,
+ 49, -1, 48, -1, 46, 133, 193, -1, 47, 133,
+ 4, -1, 45, 133, 17, -1, 64, 133, 17, -1,
+ 139, 196, 141, -1, 196, 134, 17, -1, 17, -1,
+ -1, 15, -1, 17, -1, 197, -1, -1, 199, 134,
+ 174, 164, 198, -1, 174, 164, 198, -1, 199, -1,
+ 199, 134, 31, -1, 31, -1, -1, 162, 176, 197,
+ 137, 200, 138, 166, 170, 167, -1, 22, -1, 144,
+ -1, 161, 201, 202, -1, 23, -1, 145, -1, 212,
+ 204, -1, 160, 201, -1, -1, 56, -1, 3, -1,
+ 4, -1, 7, -1, 20, -1, 21, -1, 32, -1,
+ 33, -1, 19, -1, 142, 182, 143, -1, 181, -1,
+ 54, 207, 17, 134, 17, -1, 148, -1, 197, -1,
+ 209, -1, 208, -1, 174, 210, -1, 212, 213, -1,
+ 203, 213, -1, 214, 157, 215, -1, 214, 217, -1,
+ -1, 16, -1, 65, 211, -1, 65, 8, -1, 66,
+ 13, 210, -1, 66, 9, 210, 134, 13, 210, 134,
+ 13, 210, -1, 67, 155, 210, 134, 13, 210, 139,
+ 216, 141, -1, 67, 155, 210, 134, 13, 210, 139,
+ 141, -1, 68, 162, 176, 210, 137, 219, 138, 166,
+ 30, 13, 210, 69, 13, 210, -1, 69, -1, 70,
+ -1, 216, 155, 208, 134, 13, 210, -1, 155, 208,
+ 134, 13, 210, -1, 157, 222, -1, 174, 139, 210,
+ 134, 210, 141, -1, 218, 134, 139, 210, 134, 210,
+ 141, -1, 174, 210, 164, -1, 219, 134, 174, 210,
+ 164, -1, -1, -1, 220, 134, 211, -1, 53, 52,
+ -1, 52, -1, 149, 174, 210, 134, 210, -1, 150,
+ 174, 210, 134, 210, -1, 83, 153, 174, 210, 134,
+ 210, -1, 84, 154, 174, 210, 134, 210, -1, 42,
+ 211, -1, 152, 211, 134, 211, -1, 151, 211, 30,
+ 174, -1, 124, 211, 134, 211, 134, 211, -1, 128,
+ 211, 134, 174, -1, 129, 211, 134, 211, -1, 130,
+ 211, 134, 211, 134, 211, -1, 131, 211, 134, 211,
+ 134, 211, -1, 123, 218, -1, 221, 162, 176, 210,
+ 137, 219, 138, 166, -1, 224, -1, 29, -1, -1,
+ 105, 174, 168, -1, 105, 174, 134, 10, 210, 168,
+ -1, 106, 174, 168, -1, 106, 174, 134, 10, 210,
+ 168, -1, 107, 211, -1, 223, 108, 174, 210, -1,
+ 223, 109, 211, 134, 174, 210, -1, 110, 174, 210,
+ 220, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
@@ -1636,31 +1627,30 @@ static const unsigned short int yyrline[] =
1032, 1032, 1033, 1033, 1033, 1033, 1033, 1033, 1034, 1034,
1034, 1036, 1036, 1037, 1037, 1038, 1038, 1039, 1039, 1040,
1040, 1044, 1044, 1045, 1045, 1046, 1046, 1047, 1047, 1048,
- 1048, 1049, 1049, 1050, 1050, 1051, 1052, 1057, 1057, 1057,
- 1057, 1058, 1058, 1061, 1065, 1071, 1072, 1073, 1074, 1075,
- 1079, 1080, 1081, 1085, 1086, 1087, 1091, 1092, 1093, 1094,
- 1095, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1112,
- 1113, 1116, 1117, 1122, 1123, 1126, 1127, 1134, 1135, 1141,
- 1142, 1150, 1158, 1159, 1164, 1165, 1166, 1171, 1184, 1184,
- 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, 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
+ 1048, 1049, 1049, 1050, 1050, 1051, 1052, 1057, 1058, 1058,
+ 1061, 1065, 1071, 1072, 1073, 1074, 1075, 1079, 1080, 1081,
+ 1085, 1086, 1087, 1091, 1092, 1093, 1094, 1095, 1098, 1099,
+ 1100, 1101, 1102, 1103, 1104, 1105, 1112, 1113, 1116, 1117,
+ 1122, 1123, 1126, 1127, 1134, 1135, 1141, 1142, 1150, 1158,
+ 1159, 1164, 1165, 1166, 1171, 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, 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
@@ -1670,43 +1660,43 @@ static const unsigned short int yyrline[] =
static const char *const yytname[] =
{
"$end", "error", "$undefined", "ESINT64VAL", "EUINT64VAL", "SINTVAL",
- "UINTVAL", "FPVAL", "VOID", "BOOL", "INT8", "INT16", "INT32", "INT64",
- "FLOAT", "DOUBLE", "LABEL", "TYPE", "VAR_ID", "LABELSTR",
- "STRINGCONSTANT", "IMPLEMENTATION", "ZEROINITIALIZER", "TRUETOK",
- "FALSETOK", "BEGINTOK", "ENDTOK", "DECLARE", "DEFINE", "GLOBAL",
- "CONSTANT", "SECTION", "VOLATILE", "TO", "DOTDOTDOT", "NULL_TOK",
- "UNDEF", "INTERNAL", "LINKONCE", "WEAK", "APPENDING", "DLLIMPORT",
- "DLLEXPORT", "EXTERN_WEAK", "OPAQUE", "NOT", "EXTERNAL", "TARGET",
- "TRIPLE", "ENDIAN", "POINTERSIZE", "LITTLE", "BIG", "ALIGN", "DEPLIBS",
- "CALL", "TAIL", "ASM_TOK", "MODULE", "SIDEEFFECT", "CC_TOK", "CCC_TOK",
- "CSRETCC_TOK", "FASTCC_TOK", "COLDCC_TOK", "X86_STDCALLCC_TOK",
- "X86_FASTCALLCC_TOK", "DATALAYOUT", "RET", "BR", "SWITCH", "INVOKE",
- "UNWIND", "UNREACHABLE", "ADD", "SUB", "MUL", "UDIV", "SDIV", "FDIV",
- "UREM", "SREM", "FREM", "AND", "OR", "XOR", "ICMP", "FCMP", "EQ", "NE",
- "SLT", "SGT", "SLE", "SGE", "ULT", "UGT", "ULE", "UGE", "OEQ", "ONE",
- "OLT", "OGT", "OLE", "OGE", "ORD", "UNO", "UEQ", "UNE", "MALLOC",
- "ALLOCA", "FREE", "LOAD", "STORE", "GETELEMENTPTR", "TRUNC", "ZEXT",
- "SEXT", "FPTRUNC", "FPEXT", "BITCAST", "UITOFP", "SITOFP", "FPTOUI",
- "FPTOSI", "INTTOPTR", "PTRTOINT", "PHI_TOK", "SELECT", "SHL", "LSHR",
- "ASHR", "VAARG", "EXTRACTELEMENT", "INSERTELEMENT", "SHUFFLEVECTOR",
- "NORETURN", "'='", "','", "'*'", "'\\\\'", "'('", "')'", "'['", "'x'",
- "']'", "'<'", "'>'", "'{'", "'}'", "'c'", "$accept", "INTVAL",
- "ArithmeticOps", "LogicalOps", "CastOps", "ShiftOps", "IPredicates",
- "FPredicates", "IntType", "FPType", "OptAssign", "GVInternalLinkage",
- "GVExternalLinkage", "FunctionDeclareLinkage", "FunctionDefineLinkage",
- "OptCallingConv", "ParamAttr", "OptParamAttrs", "FuncAttr",
- "OptFuncAttrs", "OptAlign", "OptCAlign", "SectionString", "OptSection",
- "GlobalVarAttributes", "GlobalVarAttribute", "PrimType", "Types",
- "ArgType", "ResultTypes", "ArgTypeList", "ArgTypeListI", "TypeListI",
- "ConstVal", "ConstExpr", "ConstVector", "GlobalType", "Module",
- "DefinitionList", "Definition", "@1", "@2", "@3", "@4", "@5", "AsmBlock",
- "BigOrLittle", "TargetDefinition", "LibrariesDefinition", "LibList",
- "Name", "OptName", "ArgListH", "ArgList", "FunctionHeaderH", "BEGIN",
- "FunctionHeader", "END", "Function", "FunctionProto", "OptSideEffect",
- "ConstValueRef", "SymbolicValueRef", "ValueRef", "ResolvedVal",
- "BasicBlockList", "BasicBlock", "InstructionList", "BBTerminatorInst",
- "JumpTable", "Inst", "PHIList", "ValueRefList", "IndexList",
- "OptTailCall", "InstVal", "OptVolatile", "MemoryInst", 0
+ "UINTVAL", "FPVAL", "VOID", "BOOL", "INTTYPE", "FLOAT", "DOUBLE",
+ "LABEL", "TYPE", "VAR_ID", "LABELSTR", "STRINGCONSTANT",
+ "IMPLEMENTATION", "ZEROINITIALIZER", "TRUETOK", "FALSETOK", "BEGINTOK",
+ "ENDTOK", "DECLARE", "DEFINE", "GLOBAL", "CONSTANT", "SECTION",
+ "VOLATILE", "TO", "DOTDOTDOT", "NULL_TOK", "UNDEF", "INTERNAL",
+ "LINKONCE", "WEAK", "APPENDING", "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK",
+ "OPAQUE", "NOT", "EXTERNAL", "TARGET", "TRIPLE", "ENDIAN", "POINTERSIZE",
+ "LITTLE", "BIG", "ALIGN", "DEPLIBS", "CALL", "TAIL", "ASM_TOK", "MODULE",
+ "SIDEEFFECT", "CC_TOK", "CCC_TOK", "CSRETCC_TOK", "FASTCC_TOK",
+ "COLDCC_TOK", "X86_STDCALLCC_TOK", "X86_FASTCALLCC_TOK", "DATALAYOUT",
+ "RET", "BR", "SWITCH", "INVOKE", "UNWIND", "UNREACHABLE", "ADD", "SUB",
+ "MUL", "UDIV", "SDIV", "FDIV", "UREM", "SREM", "FREM", "AND", "OR",
+ "XOR", "ICMP", "FCMP", "EQ", "NE", "SLT", "SGT", "SLE", "SGE", "ULT",
+ "UGT", "ULE", "UGE", "OEQ", "ONE", "OLT", "OGT", "OLE", "OGE", "ORD",
+ "UNO", "UEQ", "UNE", "MALLOC", "ALLOCA", "FREE", "LOAD", "STORE",
+ "GETELEMENTPTR", "TRUNC", "ZEXT", "SEXT", "FPTRUNC", "FPEXT", "BITCAST",
+ "UITOFP", "SITOFP", "FPTOUI", "FPTOSI", "INTTOPTR", "PTRTOINT",
+ "PHI_TOK", "SELECT", "SHL", "LSHR", "ASHR", "VAARG", "EXTRACTELEMENT",
+ "INSERTELEMENT", "SHUFFLEVECTOR", "NORETURN", "'='", "','", "'*'",
+ "'\\\\'", "'('", "')'", "'['", "'x'", "']'", "'<'", "'>'", "'{'", "'}'",
+ "'c'", "$accept", "INTVAL", "ArithmeticOps", "LogicalOps", "CastOps",
+ "ShiftOps", "IPredicates", "FPredicates", "IntType", "FPType",
+ "OptAssign", "GVInternalLinkage", "GVExternalLinkage",
+ "FunctionDeclareLinkage", "FunctionDefineLinkage", "OptCallingConv",
+ "ParamAttr", "OptParamAttrs", "FuncAttr", "OptFuncAttrs", "OptAlign",
+ "OptCAlign", "SectionString", "OptSection", "GlobalVarAttributes",
+ "GlobalVarAttribute", "PrimType", "Types", "ArgType", "ResultTypes",
+ "ArgTypeList", "ArgTypeListI", "TypeListI", "ConstVal", "ConstExpr",
+ "ConstVector", "GlobalType", "Module", "DefinitionList", "Definition",
+ "@1", "@2", "@3", "@4", "@5", "AsmBlock", "BigOrLittle",
+ "TargetDefinition", "LibrariesDefinition", "LibList", "Name", "OptName",
+ "ArgListH", "ArgList", "FunctionHeaderH", "BEGIN", "FunctionHeader",
+ "END", "Function", "FunctionProto", "OptSideEffect", "ConstValueRef",
+ "SymbolicValueRef", "ValueRef", "ResolvedVal", "BasicBlockList",
+ "BasicBlock", "InstructionList", "BBTerminatorInst", "JumpTable", "Inst",
+ "PHIList", "ValueRefList", "IndexList", "OptTailCall", "InstVal",
+ "OptVolatile", "MemoryInst", 0
};
#endif
@@ -1728,44 +1718,43 @@ static const unsigned short int yytoknum[] =
355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 61, 44, 42, 92,
- 40, 41, 91, 120, 93, 60, 62, 123, 125, 99
+ 385, 386, 387, 61, 44, 42, 92, 40, 41, 91,
+ 120, 93, 60, 62, 123, 125, 99
};
# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const unsigned char yyr1[] =
{
- 0, 150, 151, 151, 152, 152, 152, 152, 152, 152,
- 152, 152, 152, 153, 153, 153, 154, 154, 154, 154,
- 154, 154, 154, 154, 154, 154, 154, 154, 155, 155,
- 155, 156, 156, 156, 156, 156, 156, 156, 156, 156,
- 156, 157, 157, 157, 157, 157, 157, 157, 157, 157,
- 157, 157, 157, 157, 157, 157, 157, 158, 158, 158,
- 158, 159, 159, 160, 160, 161, 161, 161, 161, 161,
- 162, 162, 162, 163, 163, 163, 164, 164, 164, 164,
- 164, 165, 165, 165, 165, 165, 165, 165, 165, 166,
- 166, 167, 167, 168, 168, 169, 169, 170, 170, 171,
- 171, 172, 173, 173, 174, 174, 175, 175, 176, 176,
- 176, 176, 176, 176, 176, 176, 177, 177, 177, 177,
- 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, 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,
- 225, 225, 226, 226, 227, 227, 227, 227, 227, 227,
- 227, 227
+ 0, 147, 148, 148, 149, 149, 149, 149, 149, 149,
+ 149, 149, 149, 150, 150, 150, 151, 151, 151, 151,
+ 151, 151, 151, 151, 151, 151, 151, 151, 152, 152,
+ 152, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+ 153, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+ 154, 154, 154, 154, 154, 154, 154, 155, 156, 156,
+ 157, 157, 158, 158, 158, 158, 158, 159, 159, 159,
+ 160, 160, 160, 161, 161, 161, 161, 161, 162, 162,
+ 162, 162, 162, 162, 162, 162, 163, 163, 164, 164,
+ 165, 165, 166, 166, 167, 167, 168, 168, 169, 170,
+ 170, 171, 171, 172, 172, 173, 173, 173, 173, 173,
+ 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+ 174, 174, 174, 175, 176, 176, 177, 177, 178, 178,
+ 178, 178, 179, 179, 180, 180, 180, 180, 180, 180,
+ 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
+ 180, 180, 181, 181, 181, 181, 181, 181, 181, 181,
+ 181, 181, 181, 182, 182, 183, 183, 184, 184, 185,
+ 185, 187, 186, 188, 186, 186, 186, 186, 186, 189,
+ 186, 190, 186, 191, 186, 186, 186, 192, 193, 193,
+ 194, 194, 194, 194, 195, 196, 196, 196, 197, 197,
+ 198, 198, 199, 199, 200, 200, 200, 200, 201, 202,
+ 202, 203, 204, 204, 205, 206, 207, 207, 208, 208,
+ 208, 208, 208, 208, 208, 208, 208, 208, 208, 209,
+ 209, 210, 210, 211, 212, 212, 213, 214, 214, 214,
+ 215, 215, 215, 215, 215, 215, 215, 215, 215, 216,
+ 216, 217, 218, 218, 219, 219, 219, 220, 220, 221,
+ 221, 222, 222, 222, 222, 222, 222, 222, 222, 222,
+ 222, 222, 222, 222, 222, 222, 223, 223, 224, 224,
+ 224, 224, 224, 224, 224, 224
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@@ -1777,30 +1766,29 @@ static const unsigned char yyr2[] =
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, 1, 1, 2, 0, 1, 1, 1, 1, 1,
- 1, 1, 1, 0, 1, 1, 0, 1, 1, 1,
- 1, 0, 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 0, 2, 1, 1, 0, 2, 0, 2, 0,
- 3, 2, 0, 1, 0, 3, 1, 2, 1, 1,
- 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, 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
+ 2, 0, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 1, 1, 0, 1, 1, 1, 1, 0, 1,
+ 1, 1, 1, 1, 1, 2, 1, 1, 0, 2,
+ 1, 1, 0, 2, 0, 2, 0, 3, 2, 0,
+ 1, 0, 3, 1, 2, 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,
+ 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
@@ -1808,550 +1796,533 @@ static const unsigned char yyr2[] =
means the default is an error. */
static const unsigned short int yydefact[] =
{
- 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, 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,
- 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, 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, 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, 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
+ 61, 198, 199, 176, 173, 171, 0, 0, 0, 0,
+ 0, 61, 169, 0, 70, 73, 0, 0, 0, 0,
+ 185, 0, 0, 0, 165, 166, 62, 64, 63, 65,
+ 67, 66, 68, 69, 0, 0, 0, 1, 170, 60,
+ 71, 72, 78, 174, 74, 75, 76, 77, 78, 238,
+ 172, 238, 0, 0, 0, 0, 197, 186, 187, 175,
+ 2, 3, 178, 105, 106, 107, 108, 109, 110, 0,
+ 0, 0, 0, 229, 111, 177, 230, 113, 0, 0,
+ 0, 105, 106, 107, 108, 0, 0, 0, 179, 0,
+ 79, 80, 81, 82, 83, 84, 0, 215, 0, 239,
+ 235, 61, 212, 213, 214, 234, 192, 189, 188, 190,
+ 191, 193, 196, 0, 131, 114, 0, 0, 0, 120,
+ 132, 0, 112, 131, 181, 183, 149, 150, 147, 148,
+ 151, 146, 142, 143, 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, 145, 144, 101, 85,
+ 125, 124, 0, 209, 210, 211, 277, 237, 0, 194,
+ 130, 88, 126, 128, 0, 0, 0, 0, 0, 0,
+ 119, 0, 101, 101, 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, 135, 164, 0,
+ 0, 0, 139, 0, 136, 0, 0, 0, 0, 0,
+ 180, 0, 276, 0, 260, 0, 0, 0, 0, 78,
+ 247, 248, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 236, 78,
+ 251, 0, 275, 195, 123, 0, 92, 0, 0, 122,
+ 0, 133, 92, 182, 184, 0, 0, 257, 0, 0,
+ 0, 0, 0, 134, 120, 132, 0, 137, 138, 0,
+ 0, 0, 0, 0, 0, 103, 101, 207, 0, 265,
+ 259, 241, 240, 0, 0, 57, 0, 0, 0, 0,
+ 96, 96, 282, 0, 0, 273, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 86, 87,
+ 89, 129, 127, 116, 117, 118, 121, 115, 0, 0,
+ 0, 0, 0, 0, 0, 163, 141, 0, 0, 0,
+ 0, 0, 98, 104, 102, 206, 88, 204, 0, 218,
+ 219, 220, 225, 221, 222, 223, 224, 216, 0, 227,
+ 232, 231, 233, 0, 242, 0, 0, 0, 0, 0,
+ 278, 0, 280, 257, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 90, 91,
+ 93, 0, 0, 0, 153, 0, 0, 0, 0, 140,
+ 0, 0, 0, 0, 201, 0, 92, 217, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 285, 0,
+ 0, 0, 269, 270, 0, 0, 0, 0, 267, 266,
+ 0, 283, 0, 0, 0, 258, 0, 160, 0, 0,
+ 155, 156, 152, 159, 200, 203, 205, 88, 99, 0,
+ 226, 0, 0, 256, 0, 0, 96, 97, 96, 0,
+ 0, 0, 0, 0, 261, 262, 256, 0, 157, 158,
+ 0, 0, 0, 201, 100, 94, 0, 0, 0, 0,
+ 0, 263, 264, 0, 279, 281, 0, 0, 268, 271,
+ 272, 0, 284, 154, 161, 162, 202, 0, 208, 228,
+ 0, 0, 88, 0, 92, 252, 0, 92, 95, 0,
+ 245, 0, 0, 254, 0, 0, 253, 274, 243, 0,
+ 244, 0, 88, 0, 0, 0, 255, 0, 0, 0,
+ 0, 250, 0, 0, 249, 0, 246
};
/* YYDEFGOTO[NTERM-NUM]. */
static const short int yydefgoto[] =
{
- -1, 76, 178, 179, 180, 181, 220, 237, 91, 92,
- 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, 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
+ -1, 73, 172, 173, 174, 175, 214, 231, 85, 86,
+ 9, 34, 35, 42, 48, 96, 350, 284, 420, 353,
+ 528, 400, 315, 505, 250, 316, 74, 87, 192, 182,
+ 193, 194, 121, 238, 389, 239, 36, 10, 11, 12,
+ 15, 14, 178, 202, 203, 59, 109, 20, 57, 113,
+ 76, 475, 377, 378, 97, 185, 49, 104, 50, 43,
+ 438, 390, 77, 392, 319, 51, 100, 101, 278, 542,
+ 187, 335, 510, 360, 279, 280, 281, 282
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -457
+#define YYPACT_NINF -509
static const short int yypact[] =
{
- 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
+ 54, -509, -509, -509, -509, -509, -7, -83, 53, 273,
+ 87, 68, -509, -5, 44, 103, 18, 31, 37, 49,
+ -509, 22, 124, 353, -509, -509, -509, -509, -509, -509,
+ -509, -509, -509, -509, 174, 174, 1146, -509, -509, -509,
+ -509, -509, 177, -509, -509, -509, -509, -509, 177, 151,
+ -509, 8, 239, 157, 253, 242, 243, -509, -509, -509,
+ -509, -509, 126, -509, -509, -509, -509, -509, -509, 257,
+ 260, 0, 10, -509, -509, 59, -509, -509, 1146, 1251,
+ 126, 193, 212, 258, 259, 215, 261, 599, -509, 263,
+ -509, -509, -509, -509, -509, -509, 1288, -509, 6, -509,
+ -509, 130, -509, -509, -509, -509, -509, -509, -509, -509,
+ -509, -509, -509, -60, 781, -509, 129, 132, 681, -509,
+ 59, -46, -509, 781, -509, 59, -509, -509, -509, -509,
+ -509, -509, -509, -509, -509, -509, -509, -509, -509, -509,
+ -509, -509, -509, -509, -509, -509, 99, 383, 136, -509,
+ -509, -509, -509, -509, -509, -509, -509, -509, -509, -509,
+ -509, 137, -509, -509, -509, 139, 141, 142, 921, 1301,
+ 741, 266, 147, 148, 152, 153, -509, -509, 154, -509,
+ 126, 59, 130, -509, -509, -509, 1381, -509, 274, -509,
+ -509, 59, -509, 158, 155, 1251, 1251, 159, -44, 1251,
+ -509, 160, 154, 154, -509, -509, -509, -509, -509, -509,
+ -509, -509, -509, -509, 164, -509, -509, -509, -509, -509,
+ -509, -509, -509, -509, -509, -509, -509, -509, -509, -509,
+ -509, 166, 1146, 1146, 1146, 1146, 1146, -509, -509, -21,
+ 754, -54, -509, -37, -509, 1146, 1146, 1146, 1146, 13,
+ -509, 178, -509, 1251, -509, 244, 1338, 33, 285, 177,
+ -509, -509, 99, 383, 1251, 1251, 1251, 1251, 1251, 1251,
+ 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, -509, 177,
+ -509, 118, -509, -509, 116, 999, -509, -8, -19, -509,
+ 175, 59, -509, -509, -509, 1146, 1146, -509, 163, 183,
+ 185, 186, 1146, -509, 182, 599, -28, -509, -509, 187,
+ 192, 298, 195, 313, 327, -509, 154, 1191, 830, -509,
+ -509, 126, -509, 970, 970, -509, 970, 1288, 1251, 1251,
+ 34, 40, -509, 830, 21, 200, 206, 207, 211, 214,
+ 218, 830, 830, 319, 219, 1288, 1251, 1251, -509, -509,
+ -509, -509, -509, -65, -509, -509, -509, -65, 220, 221,
+ -13, 1146, 1146, 1146, 1146, -509, -509, 213, 1146, 1146,
+ 1251, 1146, -509, -509, -509, -509, 59, 223, 222, -509,
+ -509, -509, -509, -509, -509, -509, -509, 311, 1146, -509,
+ -509, -509, -509, 235, -509, 237, 970, 830, 830, 25,
+ -509, 27, -509, -509, 970, 233, 1251, 1251, 1251, 1251,
+ 1251, 240, 241, 1251, 1251, 970, 830, 245, -509, -509,
+ -509, 1146, 1146, 1251, -509, 246, 238, 247, 248, -509,
+ 250, 251, 43, 254, 19, 1234, -509, -509, 356, -40,
+ 364, 365, 256, 264, 265, 970, 391, 970, 267, 268,
+ 970, 275, 59, -509, 276, 277, 970, 970, 59, -509,
+ 271, -509, 1251, 278, 279, -509, 1146, -509, 1146, 1146,
+ -509, -509, -509, -509, -509, -509, -509, 59, -2, 280,
+ -509, 970, 970, 1251, 970, 970, 281, -509, 281, 970,
+ 284, 1251, 1251, 1251, -509, -509, 1251, 830, -509, -509,
+ 282, 283, 288, 19, -509, 369, 405, 289, 290, 830,
+ -12, -509, -509, 381, -509, -509, 291, 970, -509, -509,
+ -509, 28, -509, -509, -509, -509, -509, 429, -509, -509,
+ 421, -1, -509, 1251, -509, -509, 295, -509, -509, 970,
+ -509, 1099, 7, 116, 830, 2, -509, -65, -509, 304,
+ -509, 1099, -509, 427, 434, 308, 116, 970, 970, 435,
+ 380, -509, 970, 437, -509, 970, -509
};
/* YYPGOTO[NTERM-NUM]. */
static const short int yypgoto[] =
{
- -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
+ -509, -509, 269, 272, 286, 302, 189, 190, -256, -509,
+ 351, -509, -509, -509, -509, -215, -343, -373, -509, -279,
+ -509, -323, -17, -509, -173, -509, -509, -23, 172, -275,
+ -509, 339, 345, -25, -80, -164, 197, -509, -509, 453,
+ -509, -509, -509, -509, -509, -509, -509, -509, -509, -509,
+ 1, -36, -509, -509, 423, -509, -509, -509, -509, -509,
+ -509, -508, 9, 104, -211, -509, 445, -509, -509, -509,
+ -509, -509, 3, 100, -509, -509, -509, -509
};
/* 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 -175
+#define YYTABLE_NINF -169
static const short int yytable[] =
{
- 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, 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, 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, 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,
+ 75, 13, 326, 434, 117, 241, 243, 176, 402, 325,
+ 419, 88, 13, 357, 419, 60, 61, 325, 80, 63,
+ 64, 65, 66, 67, 99, 1, 313, 2, 183, 293,
+ 294, 102, 553, 549, 1, 445, 2, 447, 16, 17,
+ 18, 313, 323, 555, 327, 322, 324, 348, 349, 120,
+ 21, 68, 396, 124, -168, 332, 125, 19, 336, 337,
+ 338, 339, 340, 314, 345, 343, 344, 418, -167, 1,
+ 415, 2, 3, 181, 188, 446, 306, 446, 4, 5,
+ 302, 189, 40, 1, 41, 2, 3, 37, 199, 307,
+ 199, 191, 4, 5, 302, 120, 177, 302, 6, 200,
+ 191, 290, 13, 480, 503, 7, 302, 22, 308, 8,
+ 348, 349, 6, 302, 348, 349, 122, 367, 123, 7,
+ 303, 423, 533, 8, 355, 424, 534, 122, 39, 123,
+ 418, 348, 349, 354, 418, 419, 417, 44, 45, 46,
+ 540, 58, 47, 374, 118, 1, 69, 2, 550, 70,
+ 184, 52, 71, 103, 72, 119, 122, 478, 123, 543,
+ 404, 56, 533, 514, 53, 515, 537, 99, 399, 122,
+ 54, 123, 287, 288, 401, 122, 291, 123, 122, 556,
+ 123, 472, 55, 251, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 122, 451, 123, 453, 454, 455,
+ 24, 25, 419, 459, 419, 107, 108, 297, 298, 299,
+ 300, 301, 465, 126, 127, -57, -57, 305, 128, 129,
+ 309, 310, 311, 312, 439, 176, 346, 347, 348, 349,
+ 318, 78, 79, 318, 89, 90, 91, 92, 93, 94,
+ 95, 330, 331, 318, 333, 334, 318, 318, 318, 318,
+ 318, 341, 342, 318, 318, 545, 106, 110, 547, 111,
+ 112, 115, 191, 114, 116, -58, -59, 179, 130, 195,
+ 358, 359, 196, 232, 233, 541, 234, 365, 235, 236,
+ 518, 519, 520, 244, 245, 246, 551, 23, 249, 247,
+ 248, 283, 285, 286, 376, 325, 320, 361, 292, 24,
+ 25, 295, 289, 296, 181, 397, 398, 26, 27, 28,
+ 29, 30, 31, 32, 177, 317, 33, 362, 356, 363,
+ 364, 368, 181, 416, 318, 366, 369, 391, 370, 371,
+ 372, 373, 391, 391, 405, 391, 425, 426, 427, 428,
+ 406, 407, 391, 430, 431, 408, 433, 432, 409, 413,
+ 391, 391, 410, 414, 421, 422, 429, 435, 60, 61,
+ 436, 62, 63, 64, 65, 66, 67, 437, 1, 440,
+ 2, 441, 450, 479, 456, 457, 467, 481, 482, 462,
+ 466, 468, 469, 318, 452, 318, 318, 318, 470, 471,
+ 458, 318, 473, 483, 68, 487, 463, 464, 484, 485,
+ 318, 423, 489, 215, 216, 391, 391, 391, 496, 491,
+ 492, 493, 477, 391, 506, 513, 498, 499, 517, 527,
+ 523, 524, 529, 530, 391, 391, 525, 393, 394, 531,
+ 395, 446, 535, 538, 539, 474, 546, 403, 554, 497,
+ 557, 500, 559, 501, 502, 411, 412, 558, 562, 563,
+ 565, 328, 186, 329, 391, 274, 391, 352, 275, 391,
+ 509, 504, 201, 198, 38, 391, 391, 526, 318, 318,
+ 318, 98, 276, 509, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 277, 69,
+ 391, 391, 70, 391, 391, 71, 105, 72, 391, 521,
+ 442, 443, 444, 448, 474, 0, 391, 0, 449, 0,
+ 544, 0, 0, 0, 0, 0, 0, 0, 391, 460,
+ 461, 0, 0, 0, 0, 0, 391, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 391, 486,
+ 0, 488, 0, 391, 490, 0, 0, 0, 0, 0,
+ 494, 495, 0, 0, 0, 0, 391, 391, 0, 0,
+ 0, 391, 0, 0, 391, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 507, 508, 0, 511, 512,
+ 0, 0, 0, 516, 0, 0, 0, 0, 0, 0,
+ 0, 522, 0, 0, 60, 61, 0, 0, 0, 0,
+ 0, 0, 0, 532, 1, 0, 2, 0, 131, 0,
+ 0, 536, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 132, 133, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 548, 0, 0, 0, 0, 552, 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, 560, 561, 0, 0, 0, 564, 0, 0, 566,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 0, 0, 60, 61, 0, 80,
+ 63, 64, 65, 66, 67, 0, 1, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 148,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 68, 161, 162, 163, 164, 0, 165, 166,
+ 167, 0, 0, 0, 122, 0, 123, 0, 168, 0,
+ 0, 169, 0, 170, 0, 171, 60, 61, 0, 80,
+ 81, 82, 83, 84, 67, 0, 1, 0, 2, 60,
+ 61, 0, 80, 81, 82, 83, 84, 67, 0, 1,
+ 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 68, 0, 0, 0, 60, 61, 0, 80,
+ 63, 64, 65, 66, 67, 68, 1, 0, 2, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 394, 395, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 190, 0, 0, 0, 0, 69, 0, 0,
+ 70, 0, 68, 71, 0, 72, 197, 0, 0, 0,
+ 0, 0, 0, 379, 380, 60, 61, 381, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 2, 0, 382,
+ 383, 384, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 385, 386, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 69, 0, 0,
+ 70, 0, 0, 71, 387, 72, 242, 0, 0, 0,
+ 69, 0, 0, 70, 0, 0, 71, 0, 72, 304,
+ 0, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 0, 0, 69, 0, 0,
+ 70, 0, 0, 71, 0, 72, 60, 61, 0, 80,
+ 81, 82, 83, 84, 67, 0, 1, 0, 2, 0,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 0, 161, 162, 163, 164, 0, 165,
+ 166, 167, 68, 0, 0, 122, 0, 123, 0, 0,
+ 0, 0, 388, 379, 380, 60, 61, 381, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 2, 0, 382,
+ 383, 384, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 385, 386, 60, 61, 0, 80, 63, 64,
+ 65, 66, 67, 0, 1, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 387, 0, 0, 0, 0, 0,
+ 351, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 0, 0, 69, 0, 0,
+ 70, 0, 237, 71, 0, 72, 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, 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, 71, 0, 0, 0, 0, 0, 0, 0, 0,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 0, 161, 162, 163, 164, 0, 165,
+ 166, 167, 379, 380, 0, 0, 381, 0, 0, 0,
+ 0, 0, 388, 0, 0, 0, 0, 0, 382, 383,
+ 384, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 385, 386, 0, 0, 69, 0, 0, 70, 0,
+ 0, 71, 0, 72, 0, 0, 0, 0, 0, 0,
+ 0, 60, 61, 387, 80, 81, 82, 83, 84, 67,
+ 0, 1, 0, 2, 0, 0, 0, 0, 0, 0,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 0, 0, 0, 68, 0, 0,
+ 0, 0, 0, 0, 0, 0, 60, 61, 0, 80,
+ 63, 64, 65, 66, 67, 0, 1, 0, 2, 148,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 375, 161, 162, 163, 164, 0, 165, 166,
+ 167, 0, 68, 0, 0, 0, 0, 0, 0, 60,
+ 61, 388, 80, 63, 64, 65, 66, 67, 0, 1,
+ 0, 2, 0, 0, 0, 0, 60, 61, 0, 80,
+ 63, 64, 65, 66, 67, 476, 1, 0, 2, 0,
+ 0, 0, 0, 0, 0, 68, 0, 0, 0, 0,
+ 0, 0, 69, 0, 0, 70, 0, 0, 71, 0,
+ 72, 0, 68, 60, 61, 0, 180, 63, 64, 65,
+ 66, 67, 0, 1, 0, 2, 60, 61, 0, 80,
+ 81, 82, 83, 84, 67, 0, 1, 0, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 69, 0, 68,
+ 70, 0, 0, 71, 0, 72, 0, 0, 0, 0,
+ 0, 0, 68, 60, 61, 0, 321, 63, 64, 65,
+ 66, 67, 0, 1, 0, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,
+ 69, 0, 0, 70, 0, 0, 71, 0, 72, 68,
+ 0, 0, 0, 0, 0, 0, 0, 69, 0, 0,
+ 70, 0, 0, 71, 0, 72, 0, 0, 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
+ 252, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 253, 69, 0, 0, 70, 0, 0,
+ 71, 0, 72, 254, 255, 0, 0, 69, 0, 0,
+ 70, 0, 0, 71, 0, 240, 256, 257, 258, 259,
+ 260, 261, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 145, 262, 263, 0, 0, 0, 0,
+ 0, 0, 0, 0, 69, 0, 0, 70, 0, 0,
+ 71, 0, 72, 0, 0, 0, 264, 265, 266, 0,
+ 0, 267, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 268, 269, 162, 163, 164, 270,
+ 271, 272, 273
};
static const short int yycheck[] =
{
- 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,
- 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, 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, -1, -1, -1,
- -1, -1, -1, -1, -1, 35, 36, -1, -1, -1,
- -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, 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,
+ 23, 0, 258, 376, 4, 169, 170, 87, 331, 10,
+ 353, 36, 11, 292, 357, 5, 6, 10, 8, 9,
+ 10, 11, 12, 13, 16, 15, 28, 17, 22, 202,
+ 203, 23, 30, 541, 15, 10, 17, 10, 45, 46,
+ 47, 28, 9, 551, 259, 256, 13, 112, 113, 72,
+ 133, 41, 327, 78, 0, 266, 79, 64, 269, 270,
+ 271, 272, 273, 50, 279, 276, 277, 132, 0, 15,
+ 345, 17, 18, 96, 134, 50, 240, 50, 24, 25,
+ 134, 141, 38, 15, 40, 17, 18, 0, 134, 143,
+ 134, 114, 24, 25, 134, 118, 87, 134, 44, 145,
+ 123, 145, 101, 143, 477, 51, 134, 54, 145, 55,
+ 112, 113, 44, 134, 112, 113, 135, 145, 137, 51,
+ 141, 134, 134, 55, 143, 138, 138, 135, 133, 137,
+ 132, 112, 113, 141, 132, 478, 347, 34, 35, 36,
+ 141, 17, 39, 316, 144, 15, 136, 17, 141, 139,
+ 144, 133, 142, 145, 144, 145, 135, 436, 137, 532,
+ 139, 139, 134, 486, 133, 488, 138, 16, 134, 135,
+ 133, 137, 195, 196, 134, 135, 199, 137, 135, 552,
+ 137, 138, 133, 182, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 135, 406, 137, 408, 409, 410,
+ 26, 27, 545, 414, 547, 48, 49, 232, 233, 234,
+ 235, 236, 423, 20, 21, 3, 4, 240, 3, 4,
+ 245, 246, 247, 248, 388, 305, 108, 109, 112, 113,
+ 253, 34, 35, 256, 57, 58, 59, 60, 61, 62,
+ 63, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 534, 17, 4, 537, 17,
+ 17, 4, 285, 137, 4, 7, 7, 4, 7, 140,
+ 295, 296, 140, 137, 137, 531, 137, 302, 137, 137,
+ 491, 492, 493, 17, 137, 137, 542, 14, 134, 137,
+ 137, 17, 134, 138, 317, 10, 52, 134, 138, 26,
+ 27, 137, 143, 137, 327, 328, 329, 34, 35, 36,
+ 37, 38, 39, 40, 305, 137, 43, 134, 143, 134,
+ 134, 134, 345, 346, 347, 143, 134, 318, 30, 134,
+ 17, 4, 323, 324, 134, 326, 361, 362, 363, 364,
+ 134, 134, 333, 368, 369, 134, 371, 370, 134, 30,
+ 341, 342, 134, 134, 134, 134, 143, 134, 5, 6,
+ 138, 8, 9, 10, 11, 12, 13, 56, 15, 134,
+ 17, 134, 139, 17, 134, 134, 138, 13, 13, 134,
+ 134, 134, 134, 406, 407, 408, 409, 410, 138, 138,
+ 413, 414, 138, 137, 41, 4, 421, 422, 134, 134,
+ 423, 134, 134, 20, 21, 396, 397, 398, 137, 134,
+ 134, 134, 435, 404, 134, 134, 138, 138, 134, 50,
+ 138, 138, 17, 134, 415, 416, 138, 323, 324, 139,
+ 326, 50, 141, 4, 13, 434, 141, 333, 134, 462,
+ 13, 466, 134, 468, 469, 341, 342, 13, 13, 69,
+ 13, 262, 101, 263, 445, 186, 447, 285, 186, 450,
+ 483, 478, 123, 118, 11, 456, 457, 503, 491, 492,
+ 493, 48, 186, 496, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 186, 136,
+ 481, 482, 139, 484, 485, 142, 51, 144, 489, 496,
+ 396, 397, 398, 403, 503, -1, 497, -1, 404, -1,
+ 533, -1, -1, -1, -1, -1, -1, -1, 509, 415,
+ 416, -1, -1, -1, -1, -1, 517, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 539, 445,
+ -1, 447, -1, 544, 450, -1, -1, -1, -1, -1,
+ 456, 457, -1, -1, -1, -1, 557, 558, -1, -1,
+ -1, 562, -1, -1, 565, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 481, 482, -1, 484, 485,
+ -1, -1, -1, 489, -1, -1, -1, -1, -1, -1,
+ -1, 497, -1, -1, 5, 6, -1, -1, -1, -1,
+ -1, -1, -1, 509, 15, -1, 17, -1, 19, -1,
+ -1, 517, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 32, 33, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 539, -1, -1, -1, -1, 544, -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, 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, 557, 558, -1, -1, -1, 562, -1, -1, 565,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, -1, -1, 5, 6, -1, 8,
+ 9, 10, 11, 12, 13, -1, 15, -1, 17, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 41, 124, 125, 126, 127, -1, 129, 130,
+ 131, -1, -1, -1, 135, -1, 137, -1, 139, -1,
+ -1, 142, -1, 144, -1, 146, 5, 6, -1, 8,
+ 9, 10, 11, 12, 13, -1, 15, -1, 17, 5,
+ 6, -1, 8, 9, 10, 11, 12, 13, -1, 15,
+ -1, 17, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 41, -1, -1, -1, 5, 6, -1, 8,
+ 9, 10, 11, 12, 13, 41, 15, -1, 17, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 35, 36, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 31, -1, -1, -1, -1, 136, -1, -1,
+ 139, -1, 41, 142, -1, 144, 145, -1, -1, -1,
+ -1, -1, -1, 3, 4, 5, 6, 7, -1, -1,
+ -1, -1, -1, -1, -1, 15, -1, 17, -1, 19,
+ 20, 21, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 32, 33, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 136, -1, -1,
+ 139, -1, -1, 142, 54, 144, 145, -1, -1, -1,
+ 136, -1, -1, 139, -1, -1, 142, -1, 144, 145,
+ -1, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, -1, -1, 136, -1, -1,
+ 139, -1, -1, 142, -1, 144, 5, 6, -1, 8,
+ 9, 10, 11, 12, 13, -1, 15, -1, 17, -1,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, -1, 124, 125, 126, 127, -1, 129,
+ 130, 131, 41, -1, -1, 135, -1, 137, -1, -1,
+ -1, -1, 142, 3, 4, 5, 6, 7, -1, -1,
+ -1, -1, -1, -1, -1, 15, -1, 17, -1, 19,
+ 20, 21, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 32, 33, 5, 6, -1, 8, 9, 10,
+ 11, 12, 13, -1, 15, -1, 17, -1, -1, -1,
+ -1, -1, -1, -1, 54, -1, -1, -1, -1, -1,
+ 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 41, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, -1, -1, 136, -1, -1,
+ 139, -1, 141, 142, -1, 144, -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, 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, 44, -1, -1, -1, -1, -1, -1, -1, -1,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, -1, 124, 125, 126, 127, -1, 129,
+ 130, 131, 3, 4, -1, -1, 7, -1, -1, -1,
+ -1, -1, 142, -1, -1, -1, -1, -1, 19, 20,
+ 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 32, 33, -1, -1, 136, -1, -1, 139, -1,
+ -1, 142, -1, 144, -1, -1, -1, -1, -1, -1,
+ -1, 5, 6, 54, 8, 9, 10, 11, 12, 13,
+ -1, 15, -1, 17, -1, -1, -1, -1, -1, -1,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, -1, -1, -1, 41, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5, 6, -1, 8,
+ 9, 10, 11, 12, 13, -1, 15, -1, 17, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 31, 124, 125, 126, 127, -1, 129, 130,
+ 131, -1, 41, -1, -1, -1, -1, -1, -1, 5,
+ 6, 142, 8, 9, 10, 11, 12, 13, -1, 15,
+ -1, 17, -1, -1, -1, -1, 5, 6, -1, 8,
+ 9, 10, 11, 12, 13, 31, 15, -1, 17, -1,
+ -1, -1, -1, -1, -1, 41, -1, -1, -1, -1,
+ -1, -1, 136, -1, -1, 139, -1, -1, 142, -1,
+ 144, -1, 41, 5, 6, -1, 8, 9, 10, 11,
+ 12, 13, -1, 15, -1, 17, 5, 6, -1, 8,
+ 9, 10, 11, 12, 13, -1, 15, -1, 17, -1,
+ -1, -1, -1, -1, -1, -1, -1, 136, -1, 41,
+ 139, -1, -1, 142, -1, 144, -1, -1, -1, -1,
+ -1, -1, 41, 5, 6, -1, 8, 9, 10, 11,
+ 12, 13, -1, 15, -1, 17, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -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, -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,
+ 136, -1, -1, 139, -1, -1, 142, -1, 144, 41,
+ -1, -1, -1, -1, -1, -1, -1, 136, -1, -1,
+ 139, -1, -1, 142, -1, 144, -1, -1, -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
+ 29, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 42, 136, -1, -1, 139, -1, -1,
+ 142, -1, 144, 52, 53, -1, -1, 136, -1, -1,
+ 139, -1, -1, 142, -1, 144, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, -1, -1, -1, -1,
+ -1, -1, -1, -1, 136, -1, -1, 139, -1, -1,
+ 142, -1, 144, -1, -1, -1, 105, 106, 107, -1,
+ -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const unsigned char yystos[] =
{
- 0, 18, 20, 21, 27, 28, 47, 54, 58, 160,
- 187, 188, 189, 200, 191, 190, 48, 49, 50, 67,
- 197, 136, 57, 17, 29, 30, 37, 38, 39, 40,
- 41, 42, 43, 46, 161, 162, 186, 0, 189, 136,
- 41, 43, 163, 209, 37, 38, 39, 42, 164, 206,
- 208, 215, 136, 136, 136, 136, 142, 198, 20, 195,
- 5, 6, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 44, 139, 142, 145, 147, 151, 176, 177, 200,
- 212, 186, 186, 8, 9, 10, 11, 12, 13, 14,
- 15, 158, 159, 177, 183, 60, 61, 62, 63, 64,
- 65, 66, 165, 204, 204, 19, 216, 217, 26, 148,
- 207, 216, 20, 51, 52, 196, 4, 20, 20, 199,
- 140, 4, 4, 4, 147, 148, 177, 182, 138, 140,
- 183, 177, 23, 24, 3, 4, 7, 22, 35, 36,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 127, 128, 129,
- 130, 132, 133, 134, 142, 145, 147, 149, 152, 153,
- 154, 155, 184, 212, 192, 4, 8, 177, 179, 25,
- 147, 205, 160, 220, 137, 144, 34, 177, 178, 180,
- 181, 143, 143, 148, 182, 137, 148, 181, 193, 194,
- 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, 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
+ 0, 15, 17, 18, 24, 25, 44, 51, 55, 157,
+ 184, 185, 186, 197, 188, 187, 45, 46, 47, 64,
+ 194, 133, 54, 14, 26, 27, 34, 35, 36, 37,
+ 38, 39, 40, 43, 158, 159, 183, 0, 186, 133,
+ 38, 40, 160, 206, 34, 35, 36, 39, 161, 203,
+ 205, 212, 133, 133, 133, 133, 139, 195, 17, 192,
+ 5, 6, 8, 9, 10, 11, 12, 13, 41, 136,
+ 139, 142, 144, 148, 173, 174, 197, 209, 183, 183,
+ 8, 9, 10, 11, 12, 155, 156, 174, 180, 57,
+ 58, 59, 60, 61, 62, 63, 162, 201, 201, 16,
+ 213, 214, 23, 145, 204, 213, 17, 48, 49, 193,
+ 4, 17, 17, 196, 137, 4, 4, 4, 144, 145,
+ 174, 179, 135, 137, 180, 174, 20, 21, 3, 4,
+ 7, 19, 32, 33, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 124, 125, 126, 127, 129, 130, 131, 139, 142,
+ 144, 146, 149, 150, 151, 152, 181, 209, 189, 4,
+ 8, 174, 176, 22, 144, 202, 157, 217, 134, 141,
+ 31, 174, 175, 177, 178, 140, 140, 145, 179, 134,
+ 145, 178, 190, 191, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 153, 20, 21, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 154, 137, 137, 137, 137, 137, 141, 180, 182,
+ 144, 182, 145, 182, 17, 137, 137, 137, 137, 134,
+ 171, 197, 29, 42, 52, 53, 65, 66, 67, 68,
+ 69, 70, 83, 84, 105, 106, 107, 110, 123, 124,
+ 128, 129, 130, 131, 149, 150, 151, 152, 215, 221,
+ 222, 223, 224, 17, 164, 134, 138, 174, 174, 143,
+ 145, 174, 138, 171, 171, 137, 137, 180, 180, 180,
+ 180, 180, 134, 141, 145, 174, 182, 143, 145, 180,
+ 180, 180, 180, 28, 50, 169, 172, 137, 174, 211,
+ 52, 8, 211, 9, 13, 10, 155, 162, 153, 154,
+ 174, 174, 211, 174, 174, 218, 211, 211, 211, 211,
+ 211, 174, 174, 211, 211, 162, 108, 109, 112, 113,
+ 163, 31, 175, 166, 141, 143, 143, 166, 180, 180,
+ 220, 134, 134, 134, 134, 180, 143, 145, 134, 134,
+ 30, 134, 17, 4, 171, 31, 174, 199, 200, 3,
+ 4, 7, 19, 20, 21, 32, 33, 54, 142, 181,
+ 208, 209, 210, 210, 210, 210, 176, 174, 174, 134,
+ 168, 134, 168, 210, 139, 134, 134, 134, 134, 134,
+ 134, 210, 210, 30, 134, 176, 174, 211, 132, 163,
+ 165, 134, 134, 134, 138, 180, 180, 180, 180, 143,
+ 180, 180, 174, 180, 164, 134, 138, 56, 207, 182,
+ 134, 134, 210, 210, 210, 10, 50, 10, 220, 210,
+ 139, 211, 174, 211, 211, 211, 134, 134, 174, 211,
+ 210, 210, 134, 180, 180, 211, 134, 138, 134, 134,
+ 138, 138, 138, 138, 197, 198, 31, 174, 166, 17,
+ 143, 13, 13, 137, 134, 134, 210, 4, 210, 134,
+ 210, 134, 134, 134, 210, 210, 137, 174, 138, 138,
+ 180, 180, 180, 164, 169, 170, 134, 210, 210, 174,
+ 219, 210, 210, 134, 168, 168, 210, 134, 211, 211,
+ 211, 219, 210, 138, 138, 138, 198, 50, 167, 17,
+ 134, 139, 210, 134, 138, 141, 210, 138, 4, 13,
+ 141, 155, 216, 164, 174, 166, 141, 166, 210, 208,
+ 141, 155, 210, 30, 134, 208, 164, 13, 13, 134,
+ 210, 210, 13, 69, 210, 13, 210
};
#define yyerrok (yyerrstatus = 0)
@@ -3021,7 +2992,7 @@ yyreduce:
switch (yyn)
{
case 3:
-#line 1020 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1020 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[0].UIntVal) > (uint32_t)INT32_MAX) // Outside of my range!
GEN_ERROR("Value too large for type!");
@@ -3031,268 +3002,268 @@ yyreduce:
break;
case 31:
-#line 1036 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1036 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;}
break;
case 32:
-#line 1036 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1036 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.IPredicate) = ICmpInst::ICMP_NE; ;}
break;
case 33:
-#line 1037 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1037 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;}
break;
case 34:
-#line 1037 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1037 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;}
break;
case 35:
-#line 1038 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1038 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;}
break;
case 36:
-#line 1038 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1038 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;}
break;
case 37:
-#line 1039 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1039 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;}
break;
case 38:
-#line 1039 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1039 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;}
break;
case 39:
-#line 1040 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1040 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;}
break;
case 40:
-#line 1040 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1040 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;}
break;
case 41:
-#line 1044 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1044 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;}
break;
case 42:
-#line 1044 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1044 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;}
break;
case 43:
-#line 1045 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1045 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;}
break;
case 44:
-#line 1045 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1045 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;}
break;
case 45:
-#line 1046 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1046 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;}
break;
case 46:
-#line 1046 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1046 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;}
break;
case 47:
-#line 1047 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1047 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;}
break;
case 48:
-#line 1047 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1047 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;}
break;
case 49:
-#line 1048 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1048 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;}
break;
case 50:
-#line 1048 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1048 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;}
break;
case 51:
-#line 1049 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1049 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;}
break;
case 52:
-#line 1049 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1049 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;}
break;
case 53:
-#line 1050 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1050 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;}
break;
case 54:
-#line 1050 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1050 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;}
break;
case 55:
-#line 1051 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1051 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;}
break;
case 56:
-#line 1052 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 1052 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;}
break;
- case 63:
-#line 1061 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 60:
+#line 1061 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.StrVal) = (yyvsp[-1].StrVal);
CHECK_FOR_ERROR
;}
break;
- case 64:
-#line 1065 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 61:
+#line 1065 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.StrVal) = 0;
CHECK_FOR_ERROR
;}
break;
- case 65:
-#line 1071 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 62:
+#line 1071 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
break;
- case 66:
-#line 1072 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 63:
+#line 1072 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
break;
- case 67:
-#line 1073 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 64:
+#line 1073 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
break;
- case 68:
-#line 1074 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 65:
+#line 1074 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::AppendingLinkage; ;}
break;
- case 69:
-#line 1075 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 66:
+#line 1075 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
break;
- case 70:
-#line 1079 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 67:
+#line 1079 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
break;
- case 71:
-#line 1080 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 68:
+#line 1080 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
break;
- case 72:
-#line 1081 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 69:
+#line 1081 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
break;
- case 73:
-#line 1085 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 70:
+#line 1085 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
break;
- case 74:
-#line 1086 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 71:
+#line 1086 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
break;
- case 75:
-#line 1087 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 72:
+#line 1087 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
break;
- case 76:
-#line 1091 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 73:
+#line 1091 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
break;
- case 77:
-#line 1092 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 74:
+#line 1092 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
break;
- case 78:
-#line 1093 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 75:
+#line 1093 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
break;
- case 79:
-#line 1094 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 76:
+#line 1094 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
break;
- case 80:
-#line 1095 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 77:
+#line 1095 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
break;
- case 81:
-#line 1098 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 78:
+#line 1098 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::C; ;}
break;
- case 82:
-#line 1099 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 79:
+#line 1099 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::C; ;}
break;
- case 83:
-#line 1100 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 80:
+#line 1100 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::CSRet; ;}
break;
- case 84:
-#line 1101 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 81:
+#line 1101 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::Fast; ;}
break;
- case 85:
-#line 1102 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 82:
+#line 1102 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::Cold; ;}
break;
- case 86:
-#line 1103 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 83:
+#line 1103 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::X86_StdCall; ;}
break;
- case 87:
-#line 1104 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 84:
+#line 1104 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::X86_FastCall; ;}
break;
- case 88:
-#line 1105 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 85:
+#line 1105 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val))
GEN_ERROR("Calling conv too large!");
@@ -3301,52 +3272,52 @@ yyreduce:
;}
break;
- case 89:
-#line 1112 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 86:
+#line 1112 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.ParamAttrs) = FunctionType::ZExtAttribute; ;}
break;
- case 90:
-#line 1113 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 87:
+#line 1113 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.ParamAttrs) = FunctionType::SExtAttribute; ;}
break;
- case 91:
-#line 1116 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 88:
+#line 1116 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.ParamAttrs) = FunctionType::NoAttributeSet; ;}
break;
- case 92:
-#line 1117 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 89:
+#line 1117 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[-1].ParamAttrs) | (yyvsp[0].ParamAttrs));
;}
break;
- case 93:
-#line 1122 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 90:
+#line 1122 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.ParamAttrs) = FunctionType::NoReturnAttribute; ;}
break;
- case 95:
-#line 1126 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 92:
+#line 1126 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.ParamAttrs) = FunctionType::NoAttributeSet; ;}
break;
- case 96:
-#line 1127 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 93:
+#line 1127 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[-1].ParamAttrs) | (yyvsp[0].ParamAttrs));
;}
break;
- case 97:
-#line 1134 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 94:
+#line 1134 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = 0; ;}
break;
- case 98:
-#line 1135 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 95:
+#line 1135 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.UIntVal) = (yyvsp[0].UInt64Val);
if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
@@ -3355,13 +3326,13 @@ yyreduce:
;}
break;
- case 99:
-#line 1141 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 96:
+#line 1141 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = 0; ;}
break;
- case 100:
-#line 1142 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 97:
+#line 1142 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.UIntVal) = (yyvsp[0].UInt64Val);
if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
@@ -3370,8 +3341,8 @@ yyreduce:
;}
break;
- case 101:
-#line 1150 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 98:
+#line 1150 "/proj/llvm/llvm-1/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] == '\\')
@@ -3381,28 +3352,28 @@ yyreduce:
;}
break;
- case 102:
-#line 1158 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 99:
+#line 1158 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.StrVal) = 0; ;}
break;
- case 103:
-#line 1159 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 100:
+#line 1159 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.StrVal) = (yyvsp[0].StrVal); ;}
break;
- case 104:
-#line 1164 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 101:
+#line 1164 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{;}
break;
- case 105:
-#line 1165 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 102:
+#line 1165 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{;}
break;
- case 106:
-#line 1166 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 103:
+#line 1166 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CurGV->setSection((yyvsp[0].StrVal));
free((yyvsp[0].StrVal));
@@ -3410,8 +3381,8 @@ yyreduce:
;}
break;
- case 107:
-#line 1171 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 104:
+#line 1171 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val)))
GEN_ERROR("Alignment must be a power of two!");
@@ -3420,24 +3391,24 @@ yyreduce:
;}
break;
- case 116:
-#line 1187 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 110:
+#line 1187 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeVal) = new PATypeHolder(OpaqueType::get());
CHECK_FOR_ERROR
;}
break;
- case 117:
-#line 1191 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 111:
+#line 1191 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType));
CHECK_FOR_ERROR
;}
break;
- case 118:
-#line 1195 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 112:
+#line 1195 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Pointer type?
if (*(yyvsp[-1].TypeVal) == Type::LabelTy)
GEN_ERROR("Cannot form a pointer to a basic block");
@@ -3447,8 +3418,8 @@ yyreduce:
;}
break;
- case 119:
-#line 1202 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 113:
+#line 1202 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Named types are also simple types...
const Type* tmp = getTypeVal((yyvsp[0].ValIDVal));
CHECK_FOR_ERROR
@@ -3456,8 +3427,8 @@ yyreduce:
;}
break;
- case 120:
-#line 1207 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 114:
+#line 1207 "/proj/llvm/llvm-1/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
@@ -3468,8 +3439,8 @@ yyreduce:
;}
break;
- case 121:
-#line 1215 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 115:
+#line 1215 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
std::vector<const Type*> Params;
std::vector<FunctionType::ParameterAttributes> Attrs;
@@ -3490,8 +3461,8 @@ yyreduce:
;}
break;
- case 122:
-#line 1233 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 116:
+#line 1233 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
std::vector<const Type*> Params;
std::vector<FunctionType::ParameterAttributes> Attrs;
@@ -3511,8 +3482,8 @@ yyreduce:
;}
break;
- case 123:
-#line 1251 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 117:
+#line 1251 "/proj/llvm/llvm-1/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);
@@ -3520,14 +3491,14 @@ yyreduce:
;}
break;
- case 124:
-#line 1256 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 118:
+#line 1256 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Packed array type?
const llvm::Type* ElemTy = (yyvsp[-1].TypeVal)->get();
if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val))
GEN_ERROR("Unsigned result not equal to signed result");
- if (!ElemTy->isPrimitiveType())
- GEN_ERROR("Elemental type of a PackedType must be primitive");
+ if (!ElemTy->isFloatingPoint() && !ElemTy->isInteger())
+ GEN_ERROR("Element type of a PackedType must be primitive");
if (!isPowerOf2_32((yyvsp[-3].UInt64Val)))
GEN_ERROR("Vector length should be a power of 2!");
(yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PackedType::get(*(yyvsp[-1].TypeVal), (unsigned)(yyvsp[-3].UInt64Val))));
@@ -3536,8 +3507,8 @@ yyreduce:
;}
break;
- case 125:
-#line 1268 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 119:
+#line 1268 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Structure type?
std::vector<const Type*> Elements;
for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-1].TypeList)->begin(),
@@ -3550,16 +3521,16 @@ yyreduce:
;}
break;
- case 126:
-#line 1278 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 120:
+#line 1278 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Empty structure type?
(yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>()));
CHECK_FOR_ERROR
;}
break;
- case 127:
-#line 1282 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 121:
+#line 1282 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
std::vector<const Type*> Elements;
for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-2].TypeList)->begin(),
@@ -3572,24 +3543,24 @@ yyreduce:
;}
break;
- case 128:
-#line 1292 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 122:
+#line 1292 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Empty structure type?
(yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>(), true));
CHECK_FOR_ERROR
;}
break;
- case 129:
-#line 1299 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 123:
+#line 1299 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeWithAttrs).Ty = (yyvsp[-1].TypeVal);
(yyval.TypeWithAttrs).Attrs = (yyvsp[0].ParamAttrs);
;}
break;
- case 130:
-#line 1306 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 124:
+#line 1306 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
@@ -3599,15 +3570,15 @@ yyreduce:
;}
break;
- case 131:
-#line 1313 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 125:
+#line 1313 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeVal) = new PATypeHolder(Type::VoidTy);
;}
break;
- case 132:
-#line 1318 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 126:
+#line 1318 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeWithAttrsList) = new TypeWithAttrsList();
(yyval.TypeWithAttrsList)->push_back((yyvsp[0].TypeWithAttrs));
@@ -3615,16 +3586,16 @@ yyreduce:
;}
break;
- case 133:
-#line 1323 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 127:
+#line 1323 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
((yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList))->push_back((yyvsp[0].TypeWithAttrs));
CHECK_FOR_ERROR
;}
break;
- case 135:
-#line 1331 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 129:
+#line 1331 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList);
TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet;
@@ -3634,8 +3605,8 @@ yyreduce:
;}
break;
- case 136:
-#line 1338 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 130:
+#line 1338 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeWithAttrsList) = new TypeWithAttrsList;
TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet;
@@ -3645,16 +3616,16 @@ yyreduce:
;}
break;
- case 137:
-#line 1345 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 131:
+#line 1345 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeWithAttrsList) = new TypeWithAttrsList();
CHECK_FOR_ERROR
;}
break;
- case 138:
-#line 1353 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 132:
+#line 1353 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeList) = new std::list<PATypeHolder>();
(yyval.TypeList)->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal);
@@ -3662,16 +3633,16 @@ yyreduce:
;}
break;
- case 139:
-#line 1358 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 133:
+#line 1358 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal);
CHECK_FOR_ERROR
;}
break;
- case 140:
-#line 1369 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 134:
+#line 1369 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Nonempty unsized arr
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
@@ -3702,8 +3673,8 @@ yyreduce:
;}
break;
- case 141:
-#line 1397 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 135:
+#line 1397 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -3722,8 +3693,8 @@ yyreduce:
;}
break;
- case 142:
-#line 1413 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 136:
+#line 1413 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -3755,8 +3726,8 @@ yyreduce:
;}
break;
- case 143:
-#line 1442 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 137:
+#line 1442 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Nonempty unsized arr
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
@@ -3787,8 +3758,8 @@ yyreduce:
;}
break;
- case 144:
-#line 1470 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 138:
+#line 1470 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
const StructType *STy = dyn_cast<StructType>((yyvsp[-3].TypeVal)->get());
if (STy == 0)
@@ -3816,8 +3787,8 @@ yyreduce:
;}
break;
- case 145:
-#line 1495 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 139:
+#line 1495 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -3839,8 +3810,8 @@ yyreduce:
;}
break;
- case 146:
-#line 1514 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 140:
+#line 1514 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
const StructType *STy = dyn_cast<StructType>((yyvsp[-5].TypeVal)->get());
if (STy == 0)
@@ -3868,8 +3839,8 @@ yyreduce:
;}
break;
- case 147:
-#line 1539 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 141:
+#line 1539 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription());
@@ -3891,8 +3862,8 @@ yyreduce:
;}
break;
- case 148:
-#line 1558 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 142:
+#line 1558 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -3907,8 +3878,8 @@ yyreduce:
;}
break;
- case 149:
-#line 1570 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 143:
+#line 1570 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -3918,8 +3889,8 @@ yyreduce:
;}
break;
- case 150:
-#line 1577 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 144:
+#line 1577 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -3985,8 +3956,8 @@ yyreduce:
;}
break;
- case 151:
-#line 1640 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 145:
+#line 1640 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -3999,8 +3970,8 @@ yyreduce:
;}
break;
- case 152:
-#line 1650 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 146:
+#line 1650 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -4013,8 +3984,8 @@ yyreduce:
;}
break;
- case 153:
-#line 1660 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 147:
+#line 1660 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // integral constants
if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val)))
GEN_ERROR("Constant value doesn't fit in type!");
@@ -4023,8 +3994,8 @@ yyreduce:
;}
break;
- case 154:
-#line 1666 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 148:
+#line 1666 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // integral constants
if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val)))
GEN_ERROR("Constant value doesn't fit in type!");
@@ -4033,24 +4004,24 @@ yyreduce:
;}
break;
- case 155:
-#line 1672 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 149:
+#line 1672 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Boolean constants
(yyval.ConstVal) = ConstantInt::getTrue();
CHECK_FOR_ERROR
;}
break;
- case 156:
-#line 1676 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 150:
+#line 1676 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Boolean constants
(yyval.ConstVal) = ConstantInt::getFalse();
CHECK_FOR_ERROR
;}
break;
- case 157:
-#line 1680 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 151:
+#line 1680 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Float & Double constants
if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].FPVal)))
GEN_ERROR("Floating point constant invalid for type!!");
@@ -4059,8 +4030,8 @@ yyreduce:
;}
break;
- case 158:
-#line 1688 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 152:
+#line 1688 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -4077,8 +4048,8 @@ yyreduce:
;}
break;
- case 159:
-#line 1702 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 153:
+#line 1702 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!isa<PointerType>((yyvsp[-2].ConstVal)->getType()))
GEN_ERROR("GetElementPtr requires a pointer operand!");
@@ -4102,8 +4073,8 @@ yyreduce:
;}
break;
- case 160:
-#line 1723 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 154:
+#line 1723 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[-5].ConstVal)->getType() != Type::Int1Ty)
GEN_ERROR("Select condition must be of boolean type!");
@@ -4114,8 +4085,8 @@ yyreduce:
;}
break;
- case 161:
-#line 1731 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 155:
+#line 1731 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
GEN_ERROR("Binary operator types must match!");
@@ -4124,8 +4095,8 @@ yyreduce:
;}
break;
- case 162:
-#line 1737 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 156:
+#line 1737 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
GEN_ERROR("Logical operator types must match!");
@@ -4139,8 +4110,8 @@ yyreduce:
;}
break;
- case 163:
-#line 1748 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 157:
+#line 1748 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
GEN_ERROR("icmp operand types must match!");
@@ -4148,8 +4119,8 @@ yyreduce:
;}
break;
- case 164:
-#line 1753 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 158:
+#line 1753 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
GEN_ERROR("fcmp operand types must match!");
@@ -4157,8 +4128,8 @@ yyreduce:
;}
break;
- case 165:
-#line 1758 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 159:
+#line 1758 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[-1].ConstVal)->getType() != Type::Int8Ty)
GEN_ERROR("Shift count for shift constant must be i8 type!");
@@ -4170,8 +4141,8 @@ yyreduce:
;}
break;
- case 166:
-#line 1767 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 160:
+#line 1767 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
GEN_ERROR("Invalid extractelement operands!");
@@ -4180,8 +4151,8 @@ yyreduce:
;}
break;
- case 167:
-#line 1773 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 161:
+#line 1773 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
GEN_ERROR("Invalid insertelement operands!");
@@ -4190,8 +4161,8 @@ yyreduce:
;}
break;
- case 168:
-#line 1779 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 162:
+#line 1779 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
GEN_ERROR("Invalid shufflevector operands!");
@@ -4200,16 +4171,16 @@ yyreduce:
;}
break;
- case 169:
-#line 1788 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 163:
+#line 1788 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal));
CHECK_FOR_ERROR
;}
break;
- case 170:
-#line 1792 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 164:
+#line 1792 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ConstVector) = new std::vector<Constant*>();
(yyval.ConstVector)->push_back((yyvsp[0].ConstVal));
@@ -4217,18 +4188,18 @@ yyreduce:
;}
break;
- case 171:
-#line 1800 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 165:
+#line 1800 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.BoolVal) = false; ;}
break;
- case 172:
-#line 1800 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 166:
+#line 1800 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.BoolVal) = true; ;}
break;
- case 173:
-#line 1811 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 167:
+#line 1811 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
CurModule.ModuleDone();
@@ -4236,8 +4207,8 @@ yyreduce:
;}
break;
- case 174:
-#line 1816 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 168:
+#line 1816 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
CurModule.ModuleDone();
@@ -4245,40 +4216,40 @@ yyreduce:
;}
break;
- case 177:
-#line 1829 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 171:
+#line 1829 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ CurFun.isDeclare = false ;}
break;
- case 178:
-#line 1829 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 172:
+#line 1829 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CurFun.FunctionDone();
CHECK_FOR_ERROR
;}
break;
- case 179:
-#line 1833 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 173:
+#line 1833 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ CurFun.isDeclare = true; ;}
break;
- case 180:
-#line 1833 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 174:
+#line 1833 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CHECK_FOR_ERROR
;}
break;
- case 181:
-#line 1836 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 175:
+#line 1836 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CHECK_FOR_ERROR
;}
break;
- case 182:
-#line 1839 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 176:
+#line 1839 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
// Emit an error if there are any unresolved types left.
if (!CurModule.LateResolveTypes.empty()) {
@@ -4293,8 +4264,8 @@ yyreduce:
;}
break;
- case 183:
-#line 1851 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 177:
+#line 1851 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
@@ -4321,8 +4292,8 @@ yyreduce:
;}
break;
- case 184:
-#line 1875 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 178:
+#line 1875 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
ResolveTypeTo((yyvsp[-2].StrVal), (yyvsp[0].PrimType));
@@ -4336,8 +4307,8 @@ yyreduce:
;}
break;
- case 185:
-#line 1886 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 179:
+#line 1886 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ /* "Externally Visible" Linkage */
if ((yyvsp[0].ConstVal) == 0)
GEN_ERROR("Global value initializer is not a constant!");
@@ -4347,15 +4318,15 @@ yyreduce:
;}
break;
- case 186:
-#line 1892 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 180:
+#line 1892 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CurGV = 0;
;}
break;
- case 187:
-#line 1895 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 181:
+#line 1895 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[0].ConstVal) == 0)
GEN_ERROR("Global value initializer is not a constant!");
@@ -4364,15 +4335,15 @@ yyreduce:
;}
break;
- case 188:
-#line 1900 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 182:
+#line 1900 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CurGV = 0;
;}
break;
- case 189:
-#line 1903 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 183:
+#line 1903 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
@@ -4382,30 +4353,30 @@ yyreduce:
;}
break;
- case 190:
-#line 1909 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 184:
+#line 1909 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CurGV = 0;
CHECK_FOR_ERROR
;}
break;
- case 191:
-#line 1913 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 185:
+#line 1913 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CHECK_FOR_ERROR
;}
break;
- case 192:
-#line 1916 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 186:
+#line 1916 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CHECK_FOR_ERROR
;}
break;
- case 193:
-#line 1922 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 187:
+#line 1922 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm();
char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true);
@@ -4420,26 +4391,26 @@ yyreduce:
;}
break;
- case 194:
-#line 1935 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 188:
+#line 1935 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Endianness) = Module::BigEndian; ;}
break;
- case 195:
-#line 1936 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 189:
+#line 1936 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Endianness) = Module::LittleEndian; ;}
break;
- case 196:
-#line 1938 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 190:
+#line 1938 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CurModule.CurrentModule->setEndianness((yyvsp[0].Endianness));
CHECK_FOR_ERROR
;}
break;
- case 197:
-#line 1942 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 191:
+#line 1942 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[0].UInt64Val) == 32)
CurModule.CurrentModule->setPointerSize(Module::Pointer32);
@@ -4451,24 +4422,24 @@ yyreduce:
;}
break;
- case 198:
-#line 1951 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 192:
+#line 1951 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal));
free((yyvsp[0].StrVal));
;}
break;
- case 199:
-#line 1955 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 193:
+#line 1955 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal));
free((yyvsp[0].StrVal));
;}
break;
- case 201:
-#line 1962 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 195:
+#line 1962 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal));
free((yyvsp[0].StrVal));
@@ -4476,8 +4447,8 @@ yyreduce:
;}
break;
- case 202:
-#line 1967 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 196:
+#line 1967 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal));
free((yyvsp[0].StrVal));
@@ -4485,20 +4456,20 @@ yyreduce:
;}
break;
- case 203:
-#line 1972 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 197:
+#line 1972 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CHECK_FOR_ERROR
;}
break;
- case 207:
-#line 1982 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 201:
+#line 1982 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.StrVal) = 0; ;}
break;
- case 208:
-#line 1984 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 202:
+#line 1984 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -4511,8 +4482,8 @@ yyreduce:
;}
break;
- case 209:
-#line 1994 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 203:
+#line 1994 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -4525,16 +4496,16 @@ yyreduce:
;}
break;
- case 210:
-#line 2005 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 204:
+#line 2005 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ArgList) = (yyvsp[0].ArgList);
CHECK_FOR_ERROR
;}
break;
- case 211:
-#line 2009 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 205:
+#line 2009 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ArgList) = (yyvsp[-2].ArgList);
struct ArgListEntry E;
@@ -4546,8 +4517,8 @@ yyreduce:
;}
break;
- case 212:
-#line 2018 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 206:
+#line 2018 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ArgList) = new ArgListType;
struct ArgListEntry E;
@@ -4559,16 +4530,16 @@ yyreduce:
;}
break;
- case 213:
-#line 2027 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 207:
+#line 2027 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ArgList) = 0;
CHECK_FOR_ERROR
;}
break;
- case 214:
-#line 2033 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 208:
+#line 2033 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
UnEscapeLexed((yyvsp[-6].StrVal));
std::string FunctionName((yyvsp[-6].StrVal));
@@ -4674,8 +4645,8 @@ yyreduce:
;}
break;
- case 217:
-#line 2139 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 211:
+#line 2139 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.FunctionVal) = CurFun.CurrentFunction;
@@ -4685,16 +4656,16 @@ yyreduce:
;}
break;
- case 220:
-#line 2149 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 214:
+#line 2149 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
CHECK_FOR_ERROR
;}
break;
- case 221:
-#line 2154 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 215:
+#line 2154 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
CurFun.CurrentFunction->setLinkage((yyvsp[-1].Linkage));
(yyval.FunctionVal) = CurFun.CurrentFunction;
@@ -4703,88 +4674,88 @@ yyreduce:
;}
break;
- case 222:
-#line 2165 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 216:
+#line 2165 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BoolVal) = false;
CHECK_FOR_ERROR
;}
break;
- case 223:
-#line 2169 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 217:
+#line 2169 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BoolVal) = true;
CHECK_FOR_ERROR
;}
break;
- case 224:
-#line 2174 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 218:
+#line 2174 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // A reference to a direct constant
(yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val));
CHECK_FOR_ERROR
;}
break;
- case 225:
-#line 2178 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 219:
+#line 2178 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val));
CHECK_FOR_ERROR
;}
break;
- case 226:
-#line 2182 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 220:
+#line 2182 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Perhaps it's an FP constant?
(yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal));
CHECK_FOR_ERROR
;}
break;
- case 227:
-#line 2186 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 221:
+#line 2186 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValIDVal) = ValID::create(ConstantInt::getTrue());
CHECK_FOR_ERROR
;}
break;
- case 228:
-#line 2190 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 222:
+#line 2190 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValIDVal) = ValID::create(ConstantInt::getFalse());
CHECK_FOR_ERROR
;}
break;
- case 229:
-#line 2194 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 223:
+#line 2194 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValIDVal) = ValID::createNull();
CHECK_FOR_ERROR
;}
break;
- case 230:
-#line 2198 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 224:
+#line 2198 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValIDVal) = ValID::createUndef();
CHECK_FOR_ERROR
;}
break;
- case 231:
-#line 2202 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 225:
+#line 2202 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // A vector zero constant.
(yyval.ValIDVal) = ValID::createZeroInit();
CHECK_FOR_ERROR
;}
break;
- case 232:
-#line 2206 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 226:
+#line 2206 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Nonempty unsized packed vector
const Type *ETy = (*(yyvsp[-1].ConstVector))[0]->getType();
int NumElements = (yyvsp[-1].ConstVector)->size();
@@ -4812,16 +4783,16 @@ yyreduce:
;}
break;
- case 233:
-#line 2231 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 227:
+#line 2231 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal));
CHECK_FOR_ERROR
;}
break;
- case 234:
-#line 2235 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 228:
+#line 2235 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
char *End = UnEscapeLexed((yyvsp[-2].StrVal), true);
std::string AsmStr = std::string((yyvsp[-2].StrVal), End);
@@ -4834,24 +4805,24 @@ yyreduce:
;}
break;
- case 235:
-#line 2249 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 229:
+#line 2249 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Is it an integer reference...?
(yyval.ValIDVal) = ValID::create((yyvsp[0].SIntVal));
CHECK_FOR_ERROR
;}
break;
- case 236:
-#line 2253 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 230:
+#line 2253 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Is it a named reference...?
(yyval.ValIDVal) = ValID::create((yyvsp[0].StrVal));
CHECK_FOR_ERROR
;}
break;
- case 239:
-#line 2265 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 233:
+#line 2265 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -4861,24 +4832,24 @@ yyreduce:
;}
break;
- case 240:
-#line 2274 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 234:
+#line 2274 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
CHECK_FOR_ERROR
;}
break;
- case 241:
-#line 2278 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 235:
+#line 2278 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Do not allow functions with 0 basic blocks
(yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
CHECK_FOR_ERROR
;}
break;
- case 242:
-#line 2287 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 236:
+#line 2287 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal));
CHECK_FOR_ERROR
@@ -4891,8 +4862,8 @@ yyreduce:
;}
break;
- case 243:
-#line 2298 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 237:
+#line 2298 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (CastInst *CI1 = dyn_cast<CastInst>((yyvsp[0].InstVal)))
if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0)))
@@ -4904,8 +4875,8 @@ yyreduce:
;}
break;
- case 244:
-#line 2307 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 238:
+#line 2307 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BasicBlockVal) = getBBVal(ValID::create((int)CurFun.NextBBNum++), true);
CHECK_FOR_ERROR
@@ -4920,8 +4891,8 @@ yyreduce:
;}
break;
- case 245:
-#line 2319 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 239:
+#line 2319 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BasicBlockVal) = getBBVal(ValID::create((yyvsp[0].StrVal)), true);
CHECK_FOR_ERROR
@@ -4936,24 +4907,24 @@ yyreduce:
;}
break;
- case 246:
-#line 2332 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 240:
+#line 2332 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Return with a result...
(yyval.TermInstVal) = new ReturnInst((yyvsp[0].ValueVal));
CHECK_FOR_ERROR
;}
break;
- case 247:
-#line 2336 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 241:
+#line 2336 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Return with no result...
(yyval.TermInstVal) = new ReturnInst();
CHECK_FOR_ERROR
;}
break;
- case 248:
-#line 2340 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 242:
+#line 2340 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Unconditional Branch...
BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal));
CHECK_FOR_ERROR
@@ -4961,8 +4932,8 @@ yyreduce:
;}
break;
- case 249:
-#line 2345 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 243:
+#line 2345 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
BasicBlock* tmpBBA = getBBVal((yyvsp[-3].ValIDVal));
CHECK_FOR_ERROR
@@ -4974,8 +4945,8 @@ yyreduce:
;}
break;
- case 250:
-#line 2354 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 244:
+#line 2354 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
Value* tmpVal = getVal((yyvsp[-7].PrimType), (yyvsp[-6].ValIDVal));
CHECK_FOR_ERROR
@@ -4997,8 +4968,8 @@ yyreduce:
;}
break;
- case 251:
-#line 2373 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 245:
+#line 2373 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
Value* tmpVal = getVal((yyvsp[-6].PrimType), (yyvsp[-5].ValIDVal));
CHECK_FOR_ERROR
@@ -5010,8 +4981,8 @@ yyreduce:
;}
break;
- case 252:
-#line 2383 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 246:
+#line 2383 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
// Handle the short syntax
@@ -5080,24 +5051,24 @@ yyreduce:
;}
break;
- case 253:
-#line 2449 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 247:
+#line 2449 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TermInstVal) = new UnwindInst();
CHECK_FOR_ERROR
;}
break;
- case 254:
-#line 2453 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 248:
+#line 2453 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TermInstVal) = new UnreachableInst();
CHECK_FOR_ERROR
;}
break;
- case 255:
-#line 2460 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 249:
+#line 2460 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.JumpTable) = (yyvsp[-5].JumpTable);
Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal)));
@@ -5111,8 +5082,8 @@ yyreduce:
;}
break;
- case 256:
-#line 2471 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 250:
+#line 2471 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >();
Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal)));
@@ -5127,8 +5098,8 @@ yyreduce:
;}
break;
- case 257:
-#line 2484 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 251:
+#line 2484 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
// Is this definition named?? if so, assign the name...
setValueName((yyvsp[0].InstVal), (yyvsp[-1].StrVal));
@@ -5139,8 +5110,8 @@ yyreduce:
;}
break;
- case 258:
-#line 2493 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 252:
+#line 2493 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ // Used for PHI nodes
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-5].TypeVal))->getDescription());
@@ -5154,8 +5125,8 @@ yyreduce:
;}
break;
- case 259:
-#line 2504 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 253:
+#line 2504 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.PHIList) = (yyvsp[-6].PHIList);
Value* tmpVal = getVal((yyvsp[-6].PHIList)->front().first->getType(), (yyvsp[-3].ValIDVal));
@@ -5166,8 +5137,8 @@ yyreduce:
;}
break;
- case 260:
-#line 2514 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 254:
+#line 2514 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -5178,8 +5149,8 @@ yyreduce:
;}
break;
- case 261:
-#line 2522 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 255:
+#line 2522 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -5190,18 +5161,18 @@ yyreduce:
;}
break;
- case 262:
-#line 2530 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 256:
+#line 2530 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.ValueRefList) = new ValueRefList(); ;}
break;
- case 263:
-#line 2533 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 257:
+#line 2533 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{ (yyval.ValueList) = new std::vector<Value*>(); ;}
break;
- case 264:
-#line 2534 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 258:
+#line 2534 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValueList) = (yyvsp[-2].ValueList);
(yyval.ValueList)->push_back((yyvsp[0].ValueVal));
@@ -5209,24 +5180,24 @@ yyreduce:
;}
break;
- case 265:
-#line 2541 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 259:
+#line 2541 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BoolVal) = true;
CHECK_FOR_ERROR
;}
break;
- case 266:
-#line 2545 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 260:
+#line 2545 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BoolVal) = false;
CHECK_FOR_ERROR
;}
break;
- case 267:
-#line 2550 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 261:
+#line 2550 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
@@ -5250,8 +5221,8 @@ yyreduce:
;}
break;
- case 268:
-#line 2571 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 262:
+#line 2571 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
@@ -5271,8 +5242,8 @@ yyreduce:
;}
break;
- case 269:
-#line 2588 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 263:
+#line 2588 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
@@ -5288,8 +5259,8 @@ yyreduce:
;}
break;
- case 270:
-#line 2601 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 264:
+#line 2601 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
@@ -5305,8 +5276,8 @@ yyreduce:
;}
break;
- case 271:
-#line 2614 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 265:
+#line 2614 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
cerr << "WARNING: Use of eliminated 'not' instruction:"
<< " Replacing with 'xor'.\n";
@@ -5322,8 +5293,8 @@ yyreduce:
;}
break;
- case 272:
-#line 2627 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 266:
+#line 2627 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[0].ValueVal)->getType() != Type::Int8Ty)
GEN_ERROR("Shift amount must be i8 type!");
@@ -5335,8 +5306,8 @@ yyreduce:
;}
break;
- case 273:
-#line 2636 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 267:
+#line 2636 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
@@ -5352,8 +5323,8 @@ yyreduce:
;}
break;
- case 274:
-#line 2649 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 268:
+#line 2649 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[-4].ValueVal)->getType() != Type::Int1Ty)
GEN_ERROR("select condition must be boolean!");
@@ -5364,8 +5335,8 @@ yyreduce:
;}
break;
- case 275:
-#line 2657 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 269:
+#line 2657 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
@@ -5375,8 +5346,8 @@ yyreduce:
;}
break;
- case 276:
-#line 2664 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 270:
+#line 2664 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
GEN_ERROR("Invalid extractelement operands!");
@@ -5385,8 +5356,8 @@ yyreduce:
;}
break;
- case 277:
-#line 2670 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 271:
+#line 2670 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
GEN_ERROR("Invalid insertelement operands!");
@@ -5395,8 +5366,8 @@ yyreduce:
;}
break;
- case 278:
-#line 2676 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 272:
+#line 2676 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
GEN_ERROR("Invalid shufflevector operands!");
@@ -5405,8 +5376,8 @@ yyreduce:
;}
break;
- case 279:
-#line 2682 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 273:
+#line 2682 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
const Type *Ty = (yyvsp[0].PHIList)->front().first->getType();
if (!Ty->isFirstClassType())
@@ -5424,8 +5395,8 @@ yyreduce:
;}
break;
- case 280:
-#line 2698 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 274:
+#line 2698 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
// Handle the short syntax
@@ -5490,32 +5461,32 @@ yyreduce:
;}
break;
- case 281:
-#line 2760 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 275:
+#line 2760 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.InstVal) = (yyvsp[0].InstVal);
CHECK_FOR_ERROR
;}
break;
- case 282:
-#line 2765 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 276:
+#line 2765 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BoolVal) = true;
CHECK_FOR_ERROR
;}
break;
- case 283:
-#line 2769 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 277:
+#line 2769 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BoolVal) = false;
CHECK_FOR_ERROR
;}
break;
- case 284:
-#line 2776 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 278:
+#line 2776 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -5525,8 +5496,8 @@ yyreduce:
;}
break;
- case 285:
-#line 2783 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 279:
+#line 2783 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription());
@@ -5537,8 +5508,8 @@ yyreduce:
;}
break;
- case 286:
-#line 2791 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 280:
+#line 2791 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -5548,8 +5519,8 @@ yyreduce:
;}
break;
- case 287:
-#line 2798 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 281:
+#line 2798 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription());
@@ -5560,8 +5531,8 @@ yyreduce:
;}
break;
- case 288:
-#line 2806 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 282:
+#line 2806 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!isa<PointerType>((yyvsp[0].ValueVal)->getType()))
GEN_ERROR("Trying to free nonpointer type " +
@@ -5571,8 +5542,8 @@ yyreduce:
;}
break;
- case 289:
-#line 2814 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 283:
+#line 2814 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -5589,8 +5560,8 @@ yyreduce:
;}
break;
- case 290:
-#line 2828 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 284:
+#line 2828 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
@@ -5610,8 +5581,8 @@ yyreduce:
;}
break;
- case 291:
-#line 2845 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+ case 285:
+#line 2845 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
@@ -5634,7 +5605,7 @@ yyreduce:
}
/* Line 1126 of yacc.c. */
-#line 5638 "llvmAsmParser.tab.c"
+#line 5609 "llvmAsmParser.tab.c"
yyvsp -= yylen;
yyssp -= yylen;
@@ -5902,7 +5873,7 @@ yyreturn:
}
-#line 2862 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 2862 "/proj/llvm/llvm-1/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 645b041ff0..5433242db5 100644
--- a/lib/AsmParser/llvmAsmParser.h.cvs
+++ b/lib/AsmParser/llvmAsmParser.h.cvs
@@ -36,132 +36,129 @@
FPVAL = 262,
VOID = 263,
BOOL = 264,
- INT8 = 265,
- INT16 = 266,
- INT32 = 267,
- INT64 = 268,
- FLOAT = 269,
- DOUBLE = 270,
- LABEL = 271,
- TYPE = 272,
- VAR_ID = 273,
- LABELSTR = 274,
- STRINGCONSTANT = 275,
- IMPLEMENTATION = 276,
- ZEROINITIALIZER = 277,
- TRUETOK = 278,
- FALSETOK = 279,
- BEGINTOK = 280,
- ENDTOK = 281,
- DECLARE = 282,
- DEFINE = 283,
- GLOBAL = 284,
- CONSTANT = 285,
- SECTION = 286,
- VOLATILE = 287,
- TO = 288,
- DOTDOTDOT = 289,
- NULL_TOK = 290,
- UNDEF = 291,
- INTERNAL = 292,
- LINKONCE = 293,
- WEAK = 294,
- APPENDING = 295,
- DLLIMPORT = 296,
- DLLEXPORT = 297,
- EXTERN_WEAK = 298,
- OPAQUE = 299,
- NOT = 300,
- EXTERNAL = 301,
- TARGET = 302,
- TRIPLE = 303,
- ENDIAN = 304,
- POINTERSIZE = 305,
- LITTLE = 306,
- BIG = 307,
- ALIGN = 308,
- DEPLIBS = 309,
- CALL = 310,
- TAIL = 311,
- ASM_TOK = 312,
- MODULE = 313,
- SIDEEFFECT = 314,
- CC_TOK = 315,
- CCC_TOK = 316,
- CSRETCC_TOK = 317,
- FASTCC_TOK = 318,
- COLDCC_TOK = 319,
- X86_STDCALLCC_TOK = 320,
- X86_FASTCALLCC_TOK = 321,
- DATALAYOUT = 322,
- RET = 323,
- BR = 324,
- SWITCH = 325,
- INVOKE = 326,
- UNWIND = 327,
- UNREACHABLE = 328,
- ADD = 329,
- SUB = 330,
- MUL = 331,
- UDIV = 332,
- SDIV = 333,
- FDIV = 334,
- UREM = 335,
- SREM = 336,
- FREM = 337,
- AND = 338,
- OR = 339,
- XOR = 340,
- ICMP = 341,
- FCMP = 342,
- EQ = 343,
- NE = 344,
- SLT = 345,
- SGT = 346,
- SLE = 347,
- SGE = 348,
- ULT = 349,
- UGT = 350,
- ULE = 351,
- UGE = 352,
- OEQ = 353,
- ONE = 354,
- OLT = 355,
- OGT = 356,
- OLE = 357,
- OGE = 358,
- ORD = 359,
- UNO = 360,
- UEQ = 361,
- UNE = 362,
- MALLOC = 363,
- ALLOCA = 364,
- FREE = 365,
- LOAD = 366,
- STORE = 367,
- GETELEMENTPTR = 368,
- TRUNC = 369,
- ZEXT = 370,
- SEXT = 371,
- FPTRUNC = 372,
- FPEXT = 373,
- BITCAST = 374,
- UITOFP = 375,
- SITOFP = 376,
- FPTOUI = 377,
- FPTOSI = 378,
- INTTOPTR = 379,
- PTRTOINT = 380,
- PHI_TOK = 381,
- SELECT = 382,
- SHL = 383,
- LSHR = 384,
- ASHR = 385,
- VAARG = 386,
- EXTRACTELEMENT = 387,
- INSERTELEMENT = 388,
- SHUFFLEVECTOR = 389,
- NORETURN = 390
+ INTTYPE = 265,
+ FLOAT = 266,
+ DOUBLE = 267,
+ LABEL = 268,
+ TYPE = 269,
+ VAR_ID = 270,
+ LABELSTR = 271,
+ STRINGCONSTANT = 272,
+ IMPLEMENTATION = 273,
+ ZEROINITIALIZER = 274,
+ TRUETOK = 275,
+ FALSETOK = 276,
+ BEGINTOK = 277,
+ ENDTOK = 278,
+ DECLARE = 279,
+ DEFINE = 280,
+ GLOBAL = 281,
+ CONSTANT = 282,
+ SECTION = 283,
+ VOLATILE = 284,
+ TO = 285,
+ DOTDOTDOT = 286,
+ NULL_TOK = 287,
+ UNDEF = 288,
+ INTERNAL = 289,
+ LINKONCE = 290,
+ WEAK = 291,
+ APPENDING = 292,
+ DLLIMPORT = 293,
+ DLLEXPORT = 294,
+ EXTERN_WEAK = 295,
+ OPAQUE = 296,
+ NOT = 297,
+ EXTERNAL = 298,
+ TARGET = 299,
+ TRIPLE = 300,
+ ENDIAN = 301,
+ POINTERSIZE = 302,
+ LITTLE = 303,
+ BIG = 304,
+ ALIGN = 305,
+ DEPLIBS = 306,
+ CALL = 307,
+ TAIL = 308,
+ ASM_TOK = 309,
+ MODULE = 310,
+ SIDEEFFECT = 311,
+ CC_TOK = 312,
+ CCC_TOK = 313,
+ CSRETCC_TOK = 314,
+ FASTCC_TOK = 315,
+ COLDCC_TOK = 316,
+ X86_STDCALLCC_TOK = 317,
+ X86_FASTCALLCC_TOK = 318,
+ DATALAYOUT = 319,
+ RET = 320,
+ BR = 321,
+ SWITCH = 322,
+ INVOKE = 323,
+ UNWIND = 324,
+ UNREACHABLE = 325,
+ ADD = 326,
+ SUB = 327,
+ MUL = 328,
+ UDIV = 329,
+ SDIV = 330,
+ FDIV = 331,
+ UREM = 332,
+ SREM = 333,
+ FREM = 334,
+ AND = 335,
+ OR = 336,
+ XOR = 337,
+ ICMP = 338,
+ FCMP = 339,
+ EQ = 340,
+ NE = 341,
+ SLT = 342,
+ SGT = 343,
+ SLE = 344,
+ SGE = 345,
+ ULT = 346,
+ UGT = 347,
+ ULE = 348,
+ UGE = 349,
+ OEQ = 350,
+ ONE = 351,
+ OLT = 352,
+ OGT = 353,
+ OLE = 354,
+ OGE = 355,
+ ORD = 356,
+ UNO = 357,
+ UEQ = 358,
+ UNE = 359,
+ MALLOC = 360,
+ ALLOCA = 361,
+ FREE = 362,
+ LOAD = 363,
+ STORE = 364,
+ GETELEMENTPTR = 365,
+ TRUNC = 366,
+ ZEXT = 367,
+ SEXT = 368,
+ FPTRUNC = 369,
+ FPEXT = 370,
+ BITCAST = 371,
+ UITOFP = 372,
+ SITOFP = 373,
+ FPTOUI = 374,
+ FPTOSI = 375,
+ INTTOPTR = 376,
+ PTRTOINT = 377,
+ PHI_TOK = 378,
+ SELECT = 379,
+ SHL = 380,
+ LSHR = 381,
+ ASHR = 382,
+ VAARG = 383,
+ EXTRACTELEMENT = 384,
+ INSERTELEMENT = 385,
+ SHUFFLEVECTOR = 386,
+ NORETURN = 387
};
#endif
/* Tokens. */
@@ -172,138 +169,135 @@
#define FPVAL 262
#define VOID 263
#define BOOL 264
-#define INT8 265
-#define INT16 266
-#define INT32 267
-#define INT64 268
-#define FLOAT 269
-#define DOUBLE 270
-#define LABEL 271
-#define TYPE 272
-#define VAR_ID 273
-#define LABELSTR 274
-#define STRINGCONSTANT 275
-#define IMPLEMENTATION 276
-#define ZEROINITIALIZER 277
-#define TRUETOK 278
-#define FALSETOK 279
-#define BEGINTOK 280
-#define ENDTOK 281
-#define DECLARE 282
-#define DEFINE 283
-#define GLOBAL 284
-#define CONSTANT 285
-#define SECTION 286
-#define VOLATILE 287
-#define TO 288
-#define DOTDOTDOT 289
-#define NULL_TOK 290
-#define UNDEF 291
-#define INTERNAL 292
-#define LINKONCE 293
-#define WEAK 294
-#define APPENDING 295
-#define DLLIMPORT 296
-#define DLLEXPORT 297
-#define EXTERN_WEAK 298
-#define OPAQUE 299
-#define NOT 300
-#define EXTERNAL 301
-#define TARGET 302
-#define TRIPLE 303
-#define ENDIAN 304
-#define POINTERSIZE 305
-#define LITTLE 306
-#define BIG 307
-#define ALIGN 308
-#define DEPLIBS 309
-#define CALL 310
-#define TAIL 311
-#define ASM_TOK 312
-#define MODULE 313
-#define SIDEEFFECT 314
-#define CC_TOK 315
-#define CCC_TOK 316
-#define CSRETCC_TOK 317
-#define FASTCC_TOK 318
-#define COLDCC_TOK 319
-#define X86_STDCALLCC_TOK 320
-#define X86_FASTCALLCC_TOK 321
-#define DATALAYOUT 322
-#define RET 323
-#define BR 324
-#define SWITCH 325
-#define INVOKE 326
-#define UNWIND 327
-#define UNREACHABLE 328
-#define ADD 329
-#define SUB 330
-#define MUL 331
-#define UDIV 332
-#define SDIV 333
-#define FDIV 334
-#define UREM 335
-#define SREM 336
-#define FREM 337
-#define AND 338
-#define OR 339
-#define XOR 340
-#define ICMP 341
-#define FCMP 342
-#define EQ 343
-#define NE 344
-#define SLT 345
-#define SGT 346
-#define SLE 347
-#define SGE 348
-#define ULT 349
-#define UGT 350
-#define ULE 351
-#define UGE 352
-#define OEQ 353
-#define ONE 354
-#define OLT 355
-#define OGT 356
-#define OLE 357
-#define OGE 358
-#define ORD 359
-#define UNO 360
-#define UEQ 361
-#define UNE 362
-#define MALLOC 363
-#define ALLOCA 364
-#define FREE 365
-#define LOAD 366
-#define STORE 367
-#define GETELEMENTPTR 368
-#define TRUNC 369
-#define ZEXT 370
-#define SEXT 371
-#define FPTRUNC 372
-#define FPEXT 373
-#define BITCAST 374
-#define UITOFP 375
-#define SITOFP 376
-#define FPTOUI 377
-#define FPTOSI 378
-#define INTTOPTR 379
-#define PTRTOINT 380
-#define PHI_TOK 381
-#define SELECT 382
-#define SHL 383
-#define LSHR 384
-#define ASHR 385
-#define VAARG 386
-#define EXTRACTELEMENT 387
-#define INSERTELEMENT 388
-#define SHUFFLEVECTOR 389
-#define NORETURN 390
+#define INTTYPE 265
+#define FLOAT 266
+#define DOUBLE 267
+#define LABEL 268
+#define TYPE 269
+#define VAR_ID 270
+#define LABELSTR 271
+#define STRINGCONSTANT 272
+#define IMPLEMENTATION 273
+#define ZEROINITIALIZER 274
+#define TRUETOK 275
+#define FALSETOK 276
+#define BEGINTOK 277
+#define ENDTOK 278
+#define DECLARE 279
+#define DEFINE 280
+#define GLOBAL 281
+#define CONSTANT 282
+#define SECTION 283
+#define VOLATILE 284
+#define TO 285
+#define DOTDOTDOT 286
+#define NULL_TOK 287
+#define UNDEF 288
+#define INTERNAL 289
+#define LINKONCE 290
+#define WEAK 291
+#define APPENDING 292
+#define DLLIMPORT 293
+#define DLLEXPORT 294
+#define EXTERN_WEAK 295
+#define OPAQUE 296
+#define NOT 297
+#define EXTERNAL 298
+#define TARGET 299
+#define TRIPLE 300
+#define ENDIAN 301
+#define POINTERSIZE 302
+#define LITTLE 303
+#define BIG 304
+#define ALIGN 305
+#define DEPLIBS 306
+#define CALL 307
+#define TAIL 308
+#define ASM_TOK 309
+#define MODULE 310
+#define SIDEEFFECT 311
+#define CC_TOK 312
+#define CCC_TOK 313
+#define CSRETCC_TOK 314
+#define FASTCC_TOK 315
+#define COLDCC_TOK 316
+#define X86_STDCALLCC_TOK 317
+#define X86_FASTCALLCC_TOK 318
+#define DATALAYOUT 319
+#define RET 320
+#define BR 321
+#define SWITCH 322
+#define INVOKE 323
+#define UNWIND 324
+#define UNREACHABLE 325
+#define ADD 326
+#define SUB 327
+#define MUL 328
+#define UDIV 329
+#define SDIV 330
+#define FDIV 331
+#define UREM 332
+#define SREM 333
+#define FREM 334
+#define AND 335
+#define OR 336
+#define XOR 337
+#define ICMP 338
+#define FCMP 339
+#define EQ 340
+#define NE 341
+#define SLT 342
+#define SGT 343
+#define SLE 344
+#define SGE 345
+#define ULT 346
+#define UGT 347
+#define ULE 348
+#define UGE 349
+#define OEQ 350
+#define ONE 351
+#define OLT 352
+#define OGT 353
+#define OLE 354
+#define OGE 355
+#define ORD 356
+#define UNO 357
+#define UEQ 358
+#define UNE 359
+#define MALLOC 360
+#define ALLOCA 361
+#define FREE 362
+#define LOAD 363
+#define STORE 364
+#define GETELEMENTPTR 365
+#define TRUNC 366
+#define ZEXT 367
+#define SEXT 368
+#define FPTRUNC 369
+#define FPEXT 370
+#define BITCAST 371
+#define UITOFP 372
+#define SITOFP 373
+#define FPTOUI 374
+#define FPTOSI 375
+#define INTTOPTR 376
+#define PTRTOINT 377
+#define PHI_TOK 378
+#define SELECT 379
+#define SHL 380
+#define LSHR 381
+#define ASHR 382
+#define VAARG 383
+#define EXTRACTELEMENT 384
+#define INSERTELEMENT 385
+#define SHUFFLEVECTOR 386
+#define NORETURN 387
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 876 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+#line 876 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
typedef union YYSTYPE {
llvm::Module *ModuleVal;
llvm::Function *FunctionVal;
@@ -350,7 +344,7 @@ typedef union YYSTYPE {
llvm::FCmpInst::Predicate FPredicate;
} YYSTYPE;
/* Line 1447 of yacc.c. */
-#line 354 "llvmAsmParser.tab.h"
+#line 348 "llvmAsmParser.tab.h"
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y
index dbd61884a7..57ab7c5ec0 100644
--- a/lib/AsmParser/llvmAsmParser.y
+++ b/lib/AsmParser/llvmAsmParser.y
@@ -961,7 +961,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {
// Built in types...
%type <TypeVal> Types ResultTypes
%type <PrimType> IntType FPType PrimType // Classifications
-%token <PrimType> VOID BOOL INT8 INT16 INT32 INT64
+%token <PrimType> VOID BOOL INTTYPE
%token <PrimType> FLOAT DOUBLE LABEL
%token TYPE
@@ -1054,7 +1054,7 @@ FPredicates
// These are some types that allow classification if we only want a particular
// thing... for example, only a signed, unsigned, or integral type.
-IntType : INT64 | INT32 | INT16 | INT8;
+IntType : INTTYPE;
FPType : FLOAT | DOUBLE;
// OptAssign - Value producing statements have an optional assignment component
@@ -1181,7 +1181,7 @@ GlobalVarAttribute : SectionString {
// Derived types are added later...
//
-PrimType : BOOL | INT8 | INT16 | INT32 | INT64 | FLOAT | DOUBLE | LABEL ;
+PrimType : BOOL | INTTYPE | FLOAT | DOUBLE | LABEL ;
Types
: OPAQUE {
@@ -1257,8 +1257,8 @@ Types
const llvm::Type* ElemTy = $4->get();
if ((unsigned)$2 != $2)
GEN_ERROR("Unsigned result not equal to signed result");
- if (!ElemTy->isPrimitiveType())
- GEN_ERROR("Elemental type of a PackedType must be primitive");
+ if (!ElemTy->isFloatingPoint() && !ElemTy->isInteger())
+ GEN_ERROR("Element type of a PackedType must be primitive");
if (!isPowerOf2_32($2))
GEN_ERROR("Vector length should be a power of 2!");
$$ = new PATypeHolder(HandleUpRefs(PackedType::get(*$4, (unsigned)$2)));
@@ -2780,7 +2780,7 @@ MemoryInst : MALLOC Types OptCAlign {
delete $2;
CHECK_FOR_ERROR
}
- | MALLOC Types ',' INT32 ValueRef OptCAlign {
+ | MALLOC Types ',' INTTYPE ValueRef OptCAlign {
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription());
Value* tmpVal = getVal($4, $5);
@@ -2795,7 +2795,7 @@ MemoryInst : MALLOC Types OptCAlign {
delete $2;
CHECK_FOR_ERROR
}
- | ALLOCA Types ',' INT32 ValueRef OptCAlign {
+ | ALLOCA Types ',' INTTYPE ValueRef OptCAlign {
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription());
Value* tmpVal = getVal($4, $5);
diff --git a/lib/AsmParser/llvmAsmParser.y.cvs b/lib/AsmParser/llvmAsmParser.y.cvs
index dbd61884a7..57ab7c5ec0 100644
--- a/lib/AsmParser/llvmAsmParser.y.cvs
+++ b/lib/AsmParser/llvmAsmParser.y.cvs
@@ -961,7 +961,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {
// Built in types...
%type <TypeVal> Types ResultTypes
%type <PrimType> IntType FPType PrimType // Classifications
-%token <PrimType> VOID BOOL INT8 INT16 INT32 INT64
+%token <PrimType> VOID BOOL INTTYPE
%token <PrimType> FLOAT DOUBLE LABEL
%token TYPE
@@ -1054,7 +1054,7 @@ FPredicates
// These are some types that allow classification if we only want a particular
// thing... for example, only a signed, unsigned, or integral type.
-IntType : INT64 | INT32 | INT16 | INT8;
+IntType : INTTYPE;
FPType : FLOAT | DOUBLE;
// OptAssign - Value producing statements have an optional assignment component
@@ -1181,7 +1181,7 @@ GlobalVarAttribute : SectionString {
// Derived types are added later...
//
-PrimType : BOOL | INT8 | INT16 | INT32 | INT64 | FLOAT | DOUBLE | LABEL ;
+PrimType : BOOL | INTTYPE | FLOAT | DOUBLE | LABEL ;
Types
: OPAQUE {
@@ -1257,8 +1257,8 @@ Types
const llvm::Type* ElemTy = $4->get();
if ((unsigned)$2 != $2)
GEN_ERROR("Unsigned result not equal to signed result");
- if (!ElemTy->isPrimitiveType())
- GEN_ERROR("Elemental type of a PackedType must be primitive");
+ if (!ElemTy->isFloatingPoint() && !ElemTy->isInteger())
+ GEN_ERROR("Element type of a PackedType must be primitive");
if (!isPowerOf2_32($2))
GEN_ERROR("Vector length should be a power of 2!");
$$ = new PATypeHolder(HandleUpRefs(PackedType::get(*$4, (unsigned)$2)));
@@ -2780,7 +2780,7 @@ MemoryInst : MALLOC Types OptCAlign {
delete $2;
CHECK_FOR_ERROR
}
- | MALLOC Types ',' INT32 ValueRef OptCAlign {
+ | MALLOC Types ',' INTTYPE ValueRef OptCAlign {
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription());
Value* tmpVal = getVal($4, $5);
@@ -2795,7 +2795,7 @@ MemoryInst : MALLOC Types OptCAlign {
delete $2;
CHECK_FOR_ERROR
}
- | ALLOCA Types ',' INT32 ValueRef OptCAlign {
+ | ALLOCA Types ',' INTTYPE ValueRef OptCAlign {
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription());
Value* tmpVal = getVal($4, $5);
diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp
index 787d000c23..ce3826cb24 100644
--- a/lib/Bytecode/Reader/Reader.cpp
+++ b/lib/Bytecode/Reader/Reader.cpp
@@ -189,7 +189,7 @@ inline bool BytecodeReader::hasImplicitNull(unsigned TyID) {
/// Obtain a type given a typeid and account for things like compaction tables,
/// function level vs module level, and the offsetting for the primitive types.
const Type *BytecodeReader::getType(unsigned ID) {
- if (ID < Type::FirstDerivedTyID)
+ if (ID <= Type::LastPrimitiveTyID)
if (const Type *T = Type::getPrimitiveType((Type::TypeID)ID))
return T; // Asked for a primitive type...
@@ -573,7 +573,7 @@ void BytecodeReader::ParseInstruction(std::vector<unsigned> &Oprnds,
if (Oprnds.size() != 2)
error("Invalid extractelement instruction!");
Value *V1 = getValue(iType, Oprnds[0]);
- Value *V2 = getValue(Type::Int32TyID, Oprnds[1]);
+ Value *V2 = getValue(Int32TySlot, Oprnds[1]);
if (!ExtractElementInst::isValidOperands(V1, V2))
error("Invalid extractelement instruction!");
@@ -588,7 +588,7 @@ void BytecodeReader::ParseInstruction(std::vector<unsigned> &Oprnds,
Value *V1 = getValue(iType, Oprnds[0]);
Value *V2 = getValue(getTypeSlot(PackedTy->getElementType()),Oprnds[1]);
- Value *V3 = getValue(Type::Int32TyID, Oprnds[2]);
+ Value *V3 = getValue(Int32TySlot, Oprnds[2]);
if (!InsertElementInst::isValidOperands(V1, V2, V3))
error("Invalid insertelement instruction!");
@@ -684,7 +684,7 @@ void BytecodeReader::ParseInstruction(std::vector<unsigned> &Oprnds,
case Instruction::Select:
if (Oprnds.size() != 3)
error("Invalid Select instruction!");
- Result = new SelectInst(getValue(Type::Int1TyID, Oprnds[0]),
+ Result = new SelectInst(getValue(BoolTySlot, Oprnds[0]),
getValue(iType, Oprnds[1]),
getValue(iType, Oprnds[2]));
break;
@@ -714,7 +714,7 @@ void BytecodeReader::ParseInstruction(std::vector<unsigned> &Oprnds,
case Instruction::AShr:
Result = new ShiftInst(Instruction::OtherOps(Opcode),
getValue(iType, Oprnds[0]),
- getValue(Type::Int8TyID, Oprnds[1]));
+ getValue(Int8TySlot, Oprnds[1]));
break;
case Instruction::Ret:
if (Oprnds.size() == 0)
@@ -730,7 +730,7 @@ void BytecodeReader::ParseInstruction(std::vector<unsigned> &Oprnds,
Result = new BranchInst(getBasicBlock(Oprnds[0]));
else if (Oprnds.size() == 3)
Result = new BranchInst(getBasicBlock(Oprnds[0]),
- getBasicBlock(Oprnds[1]), getValue(Type::Int1TyID , Oprnds[2]));
+ getBasicBlock(Oprnds[1]), getValue(BoolTySlot, Oprnds[2]));
else
error("Invalid number of operands for a 'br' instruction!");
break;
@@ -877,7 +877,7 @@ void BytecodeReader::ParseInstruction(std::vector<unsigned> &Oprnds,
error("Invalid malloc instruction!");
Result = new MallocInst(cast<PointerType>(InstTy)->getElementType(),
- getValue(Type::Int32TyID, Oprnds[0]), Align);
+ getValue(Int32TySlot, Oprnds[0]), Align);
break;
}
case Instruction::Alloca: {
@@ -890,7 +890,7 @@ void BytecodeReader::ParseInstruction(std::vector<unsigned> &Oprnds,
error("Invalid alloca instruction!");
Result = new AllocaInst(cast<PointerType>(InstTy)->getElementType(),
- getValue(Type::Int32TyID, Oprnds[0]), Align);
+ getValue(Int32TySlot, Oprnds[0]), Align);
break;
}
case Instruction::Free:
@@ -916,12 +916,12 @@ void BytecodeReader::ParseInstruction(std::vector<unsigned> &Oprnds,
// any of the 32 or 64-bit integer types. The actual choice of
// type is encoded in the low bit of the slot number.
if (isa<StructType>(TopTy))
- IdxTy = Type::Int32TyID;
+ IdxTy = Int32TySlot;
else {
switch (ValIdx & 1) {
default:
- case 0: IdxTy = Type::Int32TyID; break;
- case 1: IdxTy = Type::Int64TyID; break;
+ case 0: IdxTy = Int32TySlot; break;
+ case 1: IdxTy = Int64TySlot; break;
}
ValIdx >>= 1;
}
@@ -1064,7 +1064,7 @@ void BytecodeReader::ParseValueSymbolTable(Function *CurrentFunction,
unsigned slot = read_vbr_uint();
std::string Name = read_str();
Value *V = 0;
- if (Typ == Type::LabelTyID) {
+ if (Typ == LabelTySlot) {
if (slot < BBMap.size())
V = BBMap[slot];
} else {
@@ -1160,6 +1160,11 @@ const Type *BytecodeReader::ParseType() {
return Result;
switch (PrimType) {
+ case Type::IntegerTyID: {
+ unsigned NumBits = read_vbr_uint();
+ Result = IntegerType::get(NumBits);
+ break;
+ }
case Type::FunctionTyID: {
const Type *RetType = readType();
unsigned RetAttr = read_vbr_uint();
@@ -1204,7 +1209,7 @@ const Type *BytecodeReader::ParseType() {
Result = StructType::get(Elements, false);
break;
}
- case Type::BC_ONLY_PackedStructTyID: {
+ case Type::PackedStructTyID: {
std::vector<const Type*> Elements;
unsigned Typ = read_vbr_uint();
while (Typ) { // List is terminated by void/0 typeid
@@ -1399,32 +1404,29 @@ Value *BytecodeReader::ParseConstantPoolValue(unsigned TypeID) {
const Type *Ty = getType(TypeID);
Constant *Result = 0;
switch (Ty->getTypeID()) {
- case Type::Int1TyID: {
- unsigned Val = read_vbr_uint();
- if (Val != 0 && Val != 1)
- error("Invalid boolean value read.");
- Result = ConstantInt::get(Type::Int1Ty, Val == 1);
- if (Handler) Handler->handleConstantValue(Result);
- break;
- }
-
- case Type::Int8TyID: // Unsigned integer types...
- case Type::Int16TyID:
- case Type::Int32TyID: {
- unsigned Val = read_vbr_uint();
- if (!ConstantInt::isValueValidForType(Ty, uint64_t(Val)))
- error("Invalid unsigned byte/short/int read.");
- Result = ConstantInt::get(Ty, Val);
- if (Handler) Handler->handleConstantValue(Result);
- break;
- }
-
- case Type::Int64TyID: {
- uint64_t Val = read_vbr_uint64();
- if (!ConstantInt::isValueValidForType(Ty, Val))
- error("Invalid constant integer read.");
- Result = ConstantInt::get(Ty, Val);
- if (Handler) Handler->handleConstantValue(Result);
+ case Type::IntegerTyID: {
+ const IntegerType *IT = cast<IntegerType>(Ty);
+ if (IT->getBitWidth() <= 32) {
+ uint32_t Val = read_vbr_uint();
+ if (IT->getBitWidth() == 1) {
+ if (Val != 0 && Val != 1)
+ error("Invalid boolean value read.");
+ Result = ConstantInt::get(Type::Int1Ty, Val == 1);
+ if (Handler) Handler->handleConstantValue(Result);
+ } else {
+ if (!ConstantInt::isValueValidForType(Ty, uint64_t(Val)))
+ error("Integer value read is invalid for type.");
+ Result = ConstantInt::get(IT, Val);
+ if (Handler) Handler->handleConstantValue(Result);
+ }
+ } else if (IT->getBitWidth() <= 64) {
+ uint64_t Val = read_vbr_uint64();
+ if (!ConstantInt::isValueValidForType(Ty, Val))
+ error("Invalid constant integer read.");
+ Result = ConstantInt::get(IT, Val);
+ if (Handler) Handler->handleConstantValue(Result);
+ } else
+ assert("Integer types > 64 bits not supported");
break;
}
case Type::FloatTyID: {
diff --git a/lib/Bytecode/Reader/Reader.h b/lib/Bytecode/Reader/Reader.h
index 677c39f99f..3e64f2d027 100644
--- a/lib/Bytecode/Reader/Reader.h
+++ b/lib/Bytecode/Reader/Reader.h
@@ -415,6 +415,20 @@ private:
BytecodeReader(const BytecodeReader &); // DO NOT IMPLEMENT
void operator=(const BytecodeReader &); // DO NOT IMPLEMENT
+ // This enum provides the values of the well-known type slots that are always
+ // emitted as the first few types in the table by the BytecodeWriter class.
+ enum WellKnownTypeSlots {
+ VoidTypeSlot = 0, ///< TypeID == VoidTyID
+ FloatTySlot = 1, ///< TypeID == FloatTyID
+ DoubleTySlot = 2, ///< TypeID == DoubleTyID
+ LabelTySlot = 3, ///< TypeID == LabelTyID
+ BoolTySlot = 4, ///< TypeID == IntegerTyID, width = 1
+ Int8TySlot = 5, ///< TypeID == IntegerTyID, width = 8
+ Int16TySlot = 6, ///< TypeID == IntegerTyID, width = 16
+ Int32TySlot = 7, ///< TypeID == IntegerTyID, width = 32
+ Int64TySlot = 8 ///< TypeID == IntegerTyID, width = 64
+ };
+
/// @}
/// @name Reader Primitives
/// @{
diff --git a/lib/Bytecode/Writer/SlotCalculator.cpp b/lib/Bytecode/Writer/SlotCalculator.cpp
index fdf7174b85..2d4cd0c4cb 100644
--- a/lib/Bytecode/Writer/SlotCalculator.cpp
+++ b/lib/Bytecode/Writer/SlotCalculator.cpp
@@ -31,26 +31,45 @@
#include <functional>
using namespace llvm;
-#if 0
+#ifndef NDEBUG
#include "llvm/Support/Streams.h"
-#define SC_DEBUG(X) cerr << X
+#include "llvm/Support/CommandLine.h"
+static cl::opt<bool> SlotCalculatorDebugOption("scdebug",cl::init(false),
+ cl::desc("Enable SlotCalculator debug output"), cl::Hidden);
+#define SC_DEBUG(X) if (SlotCalculatorDebugOption) cerr << X
#else
#define SC_DEBUG(X)
#endif
+void SlotCalculator::insertPrimitives() {
+ // Preload the table with the built-in types. These built-in types are
+ // inserted first to ensure that they have low integer indices which helps to
+ // keep bytecode sizes small. Note that the first group of indices must match
+ // the Type::TypeIDs for the primitive types. After that the integer types are
+ // added, but the order and value is not critical. What is critical is that
+ // the indices of these "well known" slot numbers be properly maintained in
+ // Reader.h which uses them directly to extract values of these types.
+ SC_DEBUG("Inserting primitive types:\n");
+ // See WellKnownTypeSlots in Reader.h
+ insertType(Type::VoidTy, true); // 0: VoidTySlot
+ insertType(Type::FloatTy, true); // 1: FloatTySlot
+ insertType(Type::DoubleTy, true); // 2: DoubleTySlot
+ insertType(Type::LabelTy, true); // 3: LabelTySlot
+ assert(TypeMap.size() == Type::FirstDerivedTyID && "Invalid primitive insert");
+ // Above here *must* correspond 1:1 with the primitive types.
+ insertType(Type::Int1Ty, true); // 4: BoolTySlot
+ insertType(Type::Int8Ty, true); // 5: Int8TySlot
+ insertType(Type::Int16Ty, true); // 6: Int16TySlot
+ insertType(Type::Int32Ty, true); // 7: Int32TySlot
+ insertType(Type::Int64Ty, true); // 8: Int64TySlot
+}
+
SlotCalculator::SlotCalculator(const Module *M ) {
ModuleContainsAllFunctionConstants = false;
ModuleTypeLevel = 0;
TheModule = M;
- // Preload table... Make sure that all of the primitive types are in the table
- // and that their Primitive ID is equal to their slot #
- //
- SC_DEBUG("Inserting primitive types:\n");
- for (unsigned i = 0; i < Type::FirstDerivedTyID; ++i) {
- assert(Type::getPrimitiveType((Type::TypeID)i));
- insertType(Type::getPrimitiveType((Type::TypeID)i), true);
- }
+ insertPrimitives();
if (M == 0) return; // Empty table...
processModule();
@@ -60,14 +79,7 @@ SlotCalculator::SlotCalculator(const Function *M ) {
ModuleContainsAllFunctionConstants = false;
TheModule = M ? M->getParent() : 0;
- // Preload table... Make sure that all of the primitive types are in the table
- // and that their Primitive ID is equal to their slot #
- //
- SC_DEBUG("Inserting primitive types:\n");
- for (unsigned i = 0; i < Type::FirstDerivedTyID; ++i) {
- assert(Type::getPrimitiveType((Type::TypeID)i));
- insertType(Type::getPrimitiveType((Type::TypeID)i), true);
- }
+ insertPrimitives();
if (TheModule == 0) return; // Empty table...
@@ -423,15 +435,14 @@ unsigned SlotCalculator::getOrCreateCompactionTableSlot(const Value *V) {
/// getOrCreateCompactionTableSlot - This method is used to build up the initial
/// approximation of the compaction table.
unsigned SlotCalculator::getOrCreateCompactionTableSlot(const Type *T) {
- std::map<const Type*, unsigned>::iterator I =
- CompactionTypeMap.lower_bound(T);
+ CompactionTypeMapType::iterator I = CompactionTypeMap.lower_bound(T);
if (I != CompactionTypeMap.end() && I->first == T)
return I->second; // Already exists?
unsigned SlotNo = CompactionTypes.size();
- SC_DEBUG("Inserting Compaction Type #" << SlotNo << ": " << T << "\n");
+ SC_DEBUG("Inserting Compaction Type #" << SlotNo << ": " << *T << "\n");
CompactionTypes.push_back(T);
- CompactionTypeMap.insert(std::make_pair(T, SlotNo));
+ CompactionTypeMap[T] = SlotNo;
return SlotNo;
}
@@ -452,6 +463,16 @@ void SlotCalculator::buildCompactionTable(const Function *F) {
CompactionTypes.push_back(PrimTy);
CompactionTypeMap[PrimTy] = i;
}
+ CompactionTypeMap[Type::Int1Ty] = CompactionTypes.size();
+ CompactionTypes.push_back(Type::Int1Ty);
+ CompactionTypeMap[Type::Int8Ty] = CompactionTypes.size();
+ CompactionTypes.push_back(Type::Int8Ty);
+ CompactionTypeMap[Type::Int16Ty] = CompactionTypes.size();
+ CompactionTypes.push_back(Type::Int16Ty);
+ CompactionTypeMap[Type::Int32Ty] = CompactionTypes.size();
+ CompactionTypes.push_back(Type::Int32Ty);
+ CompactionTypeMap[Type::Int64Ty] = CompactionTypes.size();
+ CompactionTypes.push_back(Type::Int64Ty);
// Next, include any types used by function arguments.
for (Function::const_arg_iterator I = F->arg_begin(), E = F->arg_end();
@@ -485,7 +506,7 @@ void SlotCalculator::buildCompactionTable(const Function *F) {
if (CompactionTable[i].empty() && (i != Type::VoidTyID) &&
i != Type::LabelTyID) {
const Type *Ty = CompactionTypes[i];
- SC_DEBUG("Getting Null Value #" << i << " for Type " << Ty << "\n");
+ SC_DEBUG("Getting Null Value #" << i << " for Type " << *Ty << "\n");
assert(Ty->getTypeID() != Type::VoidTyID);
assert(Ty->getTypeID() != Type::LabelTyID);
getOrCreateCompactionTableSlot(Constant::getNullValue(Ty));
@@ -618,7 +639,8 @@ void SlotCalculator::pruneCompactionTable() {
/// to determine if its actually empty.
bool SlotCalculator::CompactionTableIsEmpty() const {
// Check a degenerate case, just in case.
- if (CompactionTable.size() == 0) return true;
+ if (CompactionTable.size() == 0)
+ return true;
// Check each plane
for (unsigned i = 0, e = CompactionTable.size(); i < e; ++i) {
@@ -830,7 +852,7 @@ int SlotCalculator::doInsertValue(const Value *D) {
unsigned DestSlot = NodeMap[D] = Table[Ty].size();
Table[Ty].push_back(D);
- SC_DEBUG(" Inserting value [" << Ty << "] = " << D << " slot=" <<
+ SC_DEBUG(" Inserting value [" << Ty << "] = " << *D << " slot=" <<
DestSlot << " [");
// G = Global, C = Constant, T = Type, F = Function, o = other
SC_DEBUG((isa<GlobalVariable>(D) ? "G" : (isa<Constant>(D) ? "C" :
@@ -848,7 +870,6 @@ int SlotCalculator::doInsertType(const Type *Ty) {
unsigned DestSlot = TypeMap[Ty] = Types.size();
Types.push_back(Ty);
- SC_DEBUG(" Inserting type [" << DestSlot << "] = " << Ty << "\n" );
+ SC_DEBUG(" Inserting type [" << DestSlot << "] = " << *Ty << "\n" );
return (int)DestSlot;
}
-
diff --git a/lib/Bytecode/Writer/SlotCalculator.h b/lib/Bytecode/Writer/SlotCalculator.h
index 405c0edbd3..de91d2e8f5 100644
--- a/lib/Bytecode/Writer/SlotCalculator.h
+++ b/lib/Bytecode/Writer/SlotCalculator.h
@@ -177,6 +177,9 @@ private:
unsigned getOrCreateCompactionTableSlot(const Value *V);
unsigned getOrCreateCompactionTableSlot(const Type *V);
void pruneCompactionTable();
+
+ // insertPrimitives - helper for constructors to insert primitive types.
+ void insertPrimitives();
};
} // End llvm namespace
diff --git a/lib/Bytecode/Writer/Writer.cpp b/lib/Bytecode/Writer/Writer.cpp
index 9a04428007..c7003cdd7f 100644
--- a/lib/Bytecode/Writer/Writer.cpp
+++ b/lib/Bytecode/Writer/Writer.cpp
@@ -200,16 +200,18 @@ inline BytecodeBlock::~BytecodeBlock() { // Do backpatch when block goes out
void BytecodeWriter::outputType(const Type *T) {
const StructType* STy = dyn_cast<StructType>(T);
if(STy && STy->isPacked())
- output_vbr((unsigned)Type::BC_ONLY_PackedStructTyID);
+ output_vbr((unsigned)Type::PackedStructTyID);
else
output_vbr((unsigned)T->getTypeID());
// That's all there is to handling primitive types...
- if (T->isPrimitiveType()) {
+ if (T->isPrimitiveType())
return; // We might do this if we alias a prim type: %x = type int
- }
switch (T->getTypeID()) { // Handle derived types now.
+ case Type::IntegerTyID:
+ output_vbr(cast<IntegerType>(T)->getBitWidth());
+ break;
case Type::FunctionTyID: {
const FunctionType *MT = cast<FunctionType>(T);
int Slot = Table.getSlot(MT->getReturnType());
@@ -290,8 +292,8 @@ void BytecodeWriter::outputType(const Type *T) {
}
void BytecodeWriter::outputConstant(const Constant *CPV) {
- assert((CPV->getType()->isPrimitiveType() || !CPV->isNullValue()) &&
- "Shouldn't output null constants!");
+ assert(((CPV->getType()->isPrimitiveType() || CPV->getType()->isIntegral()) ||
+ !CPV->isNullValue()) && "Shouldn't output null constants!");
// We must check for a ConstantExpr before switching by type because
// a ConstantExpr can be of any type, and has no explicit value.
@@ -321,19 +323,21 @@ void BytecodeWriter::outputConstant(const Constant *CPV) {
}
switch (CPV->getType()->getTypeID()) {
- case Type::Int1TyID: // Boolean Types
- if (cast<ConstantInt>(CPV)->getZExtValue())
- output_vbr(1U);
- else
- output_vbr(0U);
- break;
-
- case Type::Int8TyID: // Unsigned integer types...
- case Type::Int16TyID:
- case Type::Int32TyID:
- case Type::Int64TyID:
- output_vbr(cast<ConstantInt>(CPV)->getZExtValue());
+ case Type::IntegerTyID: { // Integer types...
+ unsigned NumBits = cast<IntegerType>(CPV->getType())->getBitWidth();
+ if (NumBits == 1)
+ if (cast<ConstantInt>(CPV)->getZExtValue())
+ output_vbr(1U);
+ else
+ output_vbr(0U);
+ else if (NumBits <= 32)
+ output_vbr(uint32_t(cast<ConstantInt>(CPV)->getZExtValue()));
+ else if (NumBits <= 64)
+ output_vbr(uint64_t(cast<ConstantInt>(CPV)->getZExtValue()));
+ else
+ assert("Integer types > 64 bits not supported.");
break;
+ }
case Type::ArrayTyID: {
const ConstantArray *CPA = cast<ConstantArray>(CPV);
@@ -484,12 +488,12 @@ void BytecodeWriter::outputInstructionFormat0(const Instruction *I,
assert(Slot >= 0 && "No slot number for value!?!?");
if (isa<SequentialType>(*TI)) {
- unsigned IdxId;
- switch (I->getOperand(Idx)->getType()->getTypeID()) {
- default: assert(0 && "Unknown index type!");
- case Type::Int32TyID: IdxId = 0; break;
- case Type::Int64TyID: IdxId = 1; break;
- }
+ // These should be either 32-bits or 64-bits, however, with bit
+ // accurate types we just distinguish between less than or equal to
+ // 32-bits or greater than 32-bits.
+ const IntegerType *IdxTy =
+ cast<IntegerType>(I->getOperand(Idx)->getType());
+ unsigned IdxId = IdxTy->getBitWidth() <= 32 ? 0 : 1;
Slot = (Slot << 1) | IdxId;
}
output_vbr(unsigned(Slot));
@@ -735,12 +739,12 @@ void BytecodeWriter::outputInstruction(const Instruction &I) {
for (gep_type_iterator I = gep_type_begin(GEP), E = gep_type_end(GEP);
I != E; ++I, ++Idx)
if (isa<SequentialType>(*I)) {
- unsigned IdxId;
- switch (GEP->getOperand(Idx)->getType()->getTypeID()) {
- default: assert(0 && "Unknown index type!");
- case Type::Int32TyID: IdxId = 0; break;
- case Type::Int64TyID: IdxId = 1; break;
- }
+ // These should be either 32-bits or 64-bits, however, with bit
+ // accurate types we just distinguish between less than or equal to
+ // 32-bits or greater than 32-bits.
+ const IntegerType *IdxTy =
+ cast<IntegerType>(GEP->getOperand(Idx)->getType());
+ unsigned IdxId = IdxTy->getBitWidth() <= 32 ? 0 : 1;
Slots[Idx] = (Slots[Idx] << 1) | IdxId;
if (Slots[Idx] > MaxOpSlot) MaxOpSlot = Slots[Idx];
}
diff --git a/lib/CodeGen/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter.cpp
index d7a134e46d..aba97c1cfc 100644
--- a/lib/CodeGen/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter.cpp
@@ -459,7 +459,7 @@ void AsmPrinter::EmitConstantValueOnly(const Constant *CV) {
// We can emit the pointer value into this slot if the slot is an
// integer slot greater or equal to the size of the pointer.
if (Ty->isIntegral() &&
- Ty->getPrimitiveSize() >= TD->getTypeSize(Op->getType()))
+ TD->getTypeSize(Ty) >= TD->getTypeSize(Op->getType()))
return EmitConstantValueOnly(Op);
assert(0 && "FIXME: Don't yet support this kind of constant cast expr");
@@ -917,28 +917,29 @@ void AsmPrinter::printSetLabel(unsigned uid, unsigned uid2,
void AsmPrinter::printDataDirective(const Type *type) {
const TargetData *TD = TM.getTargetData();
switch (type->getTypeID()) {
- case Type::Int1TyID:
- case Type::Int8TyID:
- O << TAI->getData8bitsDirective();
- break;
- case Type::Int16TyID:
- O << TAI->getData16bitsDirective();
+ case Type::IntegerTyID: {
+ unsigned BitWidth = cast<IntegerType>(type)->getBitWidth();
+ if (BitWidth <= 8)
+ O << TAI->getData8bitsDirective();
+ else if (BitWidth <= 16)
+ O << TAI->getData16bitsDirective();
+ else if (BitWidth <= 32)
+ O << TAI->getData32bitsDirective();
+ else if (BitWidth <= 64) {
+ assert(TAI->getData64bitsDirective() &&
+ "Target cannot handle 64-bit constant exprs!");
+ O << TAI->getData64bitsDirective();
+ }
break;
+ }
case Type::PointerTyID:
if (TD->getPointerSize() == 8) {
assert(TAI->getData64bitsDirective() &&
"Target cannot handle 64-bit pointer exprs!");
O << TAI->getData64bitsDirective();
- break;
+ } else {
+ O << TAI->getData32bitsDirective();
}
- //Fall through for pointer size == int size
- case Type::Int32TyID:
- O << TAI->getData32bitsDirective();
- break;
- case Type::Int64TyID:
- assert(TAI->getData64bitsDirective() &&
- "Target cannot handle 64-bit constant exprs!");
- O << TAI->getData64bitsDirective();
break;
case Type::FloatTyID: case Type::DoubleTyID:
assert (0 && "Should have already output floating point constant.");
diff --git a/lib/CodeGen/MachOWriter.cpp b/lib/CodeGen/MachOWriter.cpp
index af870e4e3b..49c7457e41 100644
--- a/lib/CodeGen/MachOWriter.cpp
+++ b/lib/CodeGen/MachOWriter.cpp
@@ -708,8 +708,7 @@ void MachOWriter::InitMem(const Constant *C, void *Addr, intptr_t Offset,
if (isa<UndefValue>(PC)) {
continue;
} else if (const ConstantPacked *CP = dyn_cast<ConstantPacked>(PC)) {
- unsigned ElementSize =
- CP->getType()->getElementType()->getPrimitiveSize();
+ unsigned ElementSize = TD->getTypeSize(CP->getType()->getElementType());
for (unsigned i = 0, e = CP->getNumOperands(); i != e; ++i)
WorkList.push_back(CPair(CP->getOperand(i), PA+i*ElementSize));
} else if (const ConstantExpr *CE = dyn_cast<ConstantExpr>(PC)) {
@@ -726,27 +725,42 @@ void MachOWriter::InitMem(const Constant *C, void *Addr, intptr_t Offset,
}
} else if (PC->getType()->isFirstClassType()) {
unsigned char *ptr = (unsigned char *)PA;
- uint64_t val;
-
switch (PC->getType()->getTypeID()) {
- case Type::Int1TyID:
- case Type::Int8TyID:
- ptr[0] = cast<ConstantInt>(PC)->getZExtValue();
- break;
- case Type::Int16TyID:
- val = cast<ConstantInt>(PC)->getZExtValue();
- if (TD->isBigEndian())
- val = ByteSwap_16(val);
- ptr[0] = val;
- ptr[1] = val >> 8;
- break;
- case Type::Int32TyID:
- case Type::FloatTyID:
- if (PC->getType()->getTypeID() == Type::FloatTyID) {
- val = FloatToBits(cast<ConstantFP>(PC)->getValue());
+ case Type::IntegerTyID: {
+ unsigned NumBits = cast<IntegerType>(PC->getType())->getBitWidth();
+ uint64_t val = cast<ConstantInt>(PC)->getZExtValue();
+ if (NumBits <= 8)
+ ptr[0] = val;
+ else if (NumBits <= 16) {
+ if (TD->isBigEndian())
+ val = ByteSwap_16(val);
+ ptr[0] = val;
+ ptr[1] = val >> 8;
+ } else if (NumBits <= 32) {
+ if (TD->isBigEndian())
+ val = ByteSwap_32(val);
+ ptr[0] = val;
+ ptr[1] = val >> 8;
+ ptr[2] = val >> 16;
+ ptr[3] = val >> 24;
+ } else if (NumBits <= 64) {
+ if (TD->isBigEndian())
+ val = ByteSwap_64(val);
+ ptr[0] = val;
+ ptr[1] = val >> 8;
+ ptr[2] = val >> 16;
+ ptr[3] = val >> 24;
+ ptr[4] = val >> 32;
+ ptr[5] = val >> 40;
+ ptr[6] = val >> 48;
+ ptr[7] = val >> 56;
} else {
- val = cast<ConstantInt>(PC)->getZExtValue();
+ assert(0 && "Not implemented: bit widths > 64");
}
+ break;
+ }
+ case Type::FloatTyID: {
+ uint64_t val = FloatToBits(cast<ConstantFP>(PC)->getValue());
if (TD->isBigEndian())
val = ByteSwap_32(val);
ptr[0] = val;
@@ -754,13 +768,9 @@ void MachOWriter::InitMem(const Constant *C, void *Addr, intptr_t Offset,
ptr[2] = val >> 16;
ptr[3] = val >> 24;
break;
- case Type::DoubleTyID:
- case Type::Int64TyID:
- if (PC->getType()->getTypeID() == Type::DoubleTyID) {
- val = DoubleToBits(cast<ConstantFP>(PC)->getValue());
- } else {
- val = cast<ConstantInt>(PC)->getZExtValue();
- }
+ }
+ case Type::DoubleTyID: {
+ uint64_t val = DoubleToBits(cast<ConstantFP>(PC)->getValue());
if (TD->isBigEndian())
val = ByteSwap_64(val);
ptr[0] = val;
@@ -772,6 +782,7 @@ void MachOWriter::InitMem(const Constant *C, void *Addr, intptr_t Offset,
ptr[6] = val >> 48;
ptr[7] = val >> 56;
break;
+ }
case Type::PointerTyID:
if (isa<ConstantPointerNull>(C))
memset(ptr, 0, TD->getPointerSize());
@@ -790,8 +801,7 @@ void MachOWriter::InitMem(const Constant *C, void *Addr, intptr_t Offset,
} else if (isa<ConstantAggregateZero>(PC)) {
memset((void*)PA, 0, (size_t)TD->getTypeSize(PC->getType()));
} else if (const ConstantArray *CPA = dyn_cast<ConstantArray>(PC)) {
- unsigned ElementSize =
- CPA->getType()->getElementType()->getPrimitiveSize();
+ unsigned ElementSize = TD->getTypeSize(CPA->getType()->getElementType());
for (unsigned i = 0, e = CPA->getNumOperands(); i != e; ++i)
WorkList.push_back(CPair(CPA->getOperand(i), PA+i*ElementSize));
} else if (const ConstantStruct *CPS = dyn_cast<ConstantStruct>(PC)) {
diff --git a/lib/ExecutionEngine/ExecutionEngine.cpp b/lib/ExecutionEngine/ExecutionEngine.cpp
index e5f9ea1f40..26f51d0502 100644
--- a/lib/ExecutionEngine/ExecutionEngine.cpp
+++ b/lib/ExecutionEngine/ExecutionEngine.cpp
@@ -296,6 +296,28 @@ void *ExecutionEngine::getPointerToGlobal(const GlobalValue *GV) {
return state.getGlobalAddressMap(locked)[GV];
}
+/// This macro is used to handle a variety of situations involing integer
+/// values where the action should be done to one of the GenericValue members.
+/// THEINTTY is a const Type * for the integer type. ACTION1 comes before
+/// the GenericValue, ACTION2 comes after.
+#define DO_FOR_INTEGER(THEINTTY, ACTION) \
+ { \
+ unsigned BitWidth = cast<IntegerType>(THEINTTY)->getBitWidth(); \
+ if (BitWidth == 1) {\
+ ACTION(Int1Val); \
+ } else if (BitWidth <= 8) {\
+ ACTION(Int8Val); \
+ } else if (BitWidth <= 16) {\
+ ACTION(Int16Val); \
+ } else if (BitWidth <= 32) { \
+ ACTION(Int32Val); \
+ } else if (BitWidth <= 64) { \
+ ACTION(Int64Val); \
+ } else {\
+ assert(0 && "Not implemented: integer types > 64 bits"); \
+ } \
+ }
+
/// This function converts a Constant* into a GenericValue. The interesting
/// part is if C is a ConstantExpr.
/// @brief Get a GenericValue for a Constnat*
@@ -350,34 +372,21 @@ GenericValue ExecutionEngine::getConstantValue(const Constant *C) {
// IntToPtr casts are just so special. Cast to intptr_t first.
Constant *Op = CE->getOperand(0);
GenericValue GV = getConstantValue(Op);
- switch (Op->getType()->getTypeID()) {
- case Type::Int1TyID: return PTOGV((void*)(uintptr_t)GV.Int1Val);
- case Type::Int8TyID: return PTOGV((void*)(uintptr_t)GV.Int8Val);
- case Type::Int16TyID: return PTOGV((void*)(uintptr_t)GV.Int16Val);
- case Type::Int32TyID: return PTOGV((void*)(uintptr_t)GV.Int32Val);
- case Type::Int64TyID: return PTOGV((void*)(uintptr_t)GV.Int64Val);
- default: assert(0 && "Unknown integral type!");
- }
+#define INT_TO_PTR_ACTION(FIELD) \
+ return PTOGV((void*)(uintptr_t)GV.FIELD)
+ DO_FOR_INTEGER(Op->getType(), INT_TO_PTR_ACTION)
+#undef INT_TO_PTR_ACTION
break;
}
case Instruction::Add:
switch (CE->getOperand(0)->getType()->getTypeID()) {
default: assert(0 && "Bad add type!"); abort();
- case Type::Int64TyID:
- Result.Int64Val = getConstantValue(CE->getOperand(0)).Int64Val +
- getConstantValue(CE->getOperand(1)).Int64Val;
- break;
- case Type::Int32TyID:
- Result.Int32Val = getConstantValue(CE->getOperand(0)).Int32Val +
- getConstantValue(CE->getOperand(1)).Int32Val;
- break;
- case Type::Int16TyID:
- Result.Int16Val = getConstantValue(CE->getOperand(0)).Int16Val +
- getConstantValue(CE->getOperand(1)).Int16Val;
- break;
- case Type::Int8TyID:
- Result.Int8Val = getConstantValue(CE->getOperand(0)).Int8Val +
- getConstantValue(CE->getOperand(1)).Int8Val;
+ case Type::IntegerTyID:
+#define ADD_ACTION(FIELD) \
+ Result.FIELD = getConstantValue(CE->getOperand(0)).FIELD + \
+ getConstantValue(CE->getOperand(1)).FIELD;
+ DO_FOR_INTEGER(CE->getOperand(0)->getType(),ADD_ACTION);
+#undef ADD_ACTION
break;
case Type::FloatTyID:
Result.FloatVal = getConstantValue(CE->getOperand(0)).FloatVal +
@@ -399,14 +408,26 @@ 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(Int1 , bool , ConstantInt, getZExtValue);
- GET_CONST_VAL(Int8 , unsigned char , ConstantInt, getZExtValue);
- GET_CONST_VAL(Int16 , unsigned short, ConstantInt, getZExtValue);
- GET_CONST_VAL(Int32 , unsigned int , ConstantInt, getZExtValue);
- GET_CONST_VAL(Int64 , uint64_t , ConstantInt, getZExtValue);
GET_CONST_VAL(Float , float , ConstantFP, getValue);
GET_CONST_VAL(Double, double , ConstantFP, getValue);
#undef GET_CONST_VAL
+ case Type::IntegerTyID: {
+ unsigned BitWidth = cast<IntegerType>(C->getType())->getBitWidth();
+ if (BitWidth == 1)
+ Result.Int1Val = (bool)cast<ConstantInt>(C)->getZExtValue();
+ else if (BitWidth <= 8)
+ Result.Int8Val = (uint8_t )cast<ConstantInt>(C)->getZExtValue();
+ else if (BitWidth <= 16)
+ Result.Int16Val = (uint16_t )cast<ConstantInt>(C)->getZExtValue();
+ else if (BitWidth <= 32)
+ Result.Int32Val = (uint32_t )cast<ConstantInt>(C)->getZExtValue();
+ else if (BitWidth <= 64)
+ Result.Int64Val = (uint64_t )cast<ConstantInt>(C)->getZExtValue();
+ else
+ assert("Integers with > 64-bits not implemented");
+ break;
+ }
+
case Type::PointerTyID:
if (isa<ConstantPointerNull>(C))
Result.PointerVal = 0;
@@ -433,22 +454,43 @@ void ExecutionEngine::StoreValueToMemory(GenericValue Val, GenericValue *Ptr,
const Type *Ty) {
if (getTargetData()->isLittleEndian()) {
switch (Ty->getTypeID()) {
- case Type::Int1TyID:
- case Type::Int8TyID: Ptr->Untyped[0] = Val.Int8Val; break;
- case Type::Int16TyID: Ptr->Untyped[0] = Val.Int16Val & 255;
- Ptr->Untyped[1] = (Val.Int16Val >> 8) & 255;
- break;
- Store4BytesLittleEndian:
+ case Type::IntegerTyID: {
+ unsigned BitWidth = cast<IntegerType>(Ty)->getBitWidth();
+ if (BitWidth <= 8)
+ Ptr->Untyped[0] = Val.Int8Val;
+ else if (BitWidth <= 16) {
+ Ptr->Untyped[0] = Val.Int16Val & 255;
+ Ptr->Untyped[1] = (Val.Int16Val >> 8) & 255;
+ } else if (BitWidth <= 32) {
+ Ptr->Untyped[0] = Val.Int32Val & 255;
+ Ptr->Untyped[1] = (Val.Int32Val >> 8) & 255;
+ Ptr->Untyped[2] = (Val.Int32Val >> 16) & 255;
+ Ptr->Untyped[3] = (Val.Int32Val >> 24) & 255;
+ } else if (BitWidth <= 64) {
+ Ptr->Untyped[0] = (unsigned char)(Val.Int64Val );
+ Ptr->Untyped[1] = (unsigned char)(Val.Int64Val >> 8);
+ Ptr->Untyped[2] = (unsigned char)(Val.Int64Val >> 16);
+ Ptr->Untyped[3] = (unsigned char)(Val.Int64Val >> 24);
+ Ptr->Untyped[4] = (unsigned char)(Val.Int64Val >> 32);
+ Ptr->Untyped[5] = (unsigned char)(Val.Int64Val >> 40);
+ Ptr->Untyped[6] = (unsigned char)(Val.Int64Val >> 48);
+ Ptr->Untyped[7] = (unsigned char)(Val.Int64Val >> 56);
+ } else
+ assert(0 && "Integer types > 64 bits not supported");
+ break;
+ }
+Store4BytesLittleEndian:
case Type::FloatTyID:
- case Type::Int32TyID: Ptr->Untyped[0] = Val.Int32Val & 255;
- Ptr->Untyped[1] = (Val.Int32Val >> 8) & 255;
- Ptr->Untyped[2] = (Val.Int32Val >> 16) & 255;
- Ptr->Untyped[3] = (Val.Int32Val >> 24) & 255;
- break;
- case Type::PointerTyID: if (getTargetData()->getPointerSize() == 4)
- goto Store4BytesLittleEndian;
+ Ptr->Untyped[0] = Val.Int32Val & 255;
+ Ptr->Untyped[1] = (Val.Int32Val >> 8) & 255;
+ Ptr->Untyped[2] = (Val.Int32Val >> 16) & 255;
+ Ptr->Untyped[3] = (Val.Int32Val >> 24) & 255;
+ break;
+ case Type::PointerTyID:
+ if (getTargetData()->getPointerSize() == 4)
+ goto Store4BytesLittleEndian;
+ /* FALL THROUGH */
case Type::DoubleTyID:
- case Type::Int64TyID:
Ptr->Untyped[0] = (unsigned char)(Val.Int64Val );
Ptr->Untyped[1] = (unsigned char)(Val.Int64Val >> 8);
Ptr->Untyped[2] = (unsigned char)(Val.Int64Val >> 16);
@@ -463,22 +505,43 @@ void ExecutionEngine::StoreValueToMemory(GenericValue Val, GenericValue *Ptr,
}
} else {
switch (Ty->getTypeID()) {
- case Type::Int1TyID:
- case Type::Int8TyID: Ptr->Untyped[0] = Val.Int8Val; break;
- case Type::Int16TyID: Ptr->Untyped[1] = Val.Int16Val & 255;
- Ptr->Untyped[0] = (Val.Int16Val >> 8) & 255;
- break;
+ case Type::IntegerTyID: {
+ unsigned BitWidth = cast<IntegerType>(Ty)->getBitWidth();
+ if (BitWidth <= 8)
+ Ptr->Untyped[0] = Val.Int8Val;
+ else if (BitWidth <= 16) {
+ Ptr->Untyped[1] = Val.Int16Val & 255;
+ Ptr->Untyped[0] = (Val.Int16Val >> 8) & 255;
+ } else if (BitWidth <= 32) {
+ Ptr->Untyped[3] = Val.Int32Val & 255;
+ Ptr->Untyped[2] = (Val.Int32Val >> 8) & 255;
+ Ptr->Untyped[1] = (Val.Int32Val >> 16) & 255;
+ Ptr->Untyped[0] = (Val.Int32Val >> 24) & 255;
+ } else if (BitWidth <= 64) {
+ Ptr->Untyped[7] = (unsigned char)(Val.Int64Val );
+ Ptr->Untyped[6] = (unsigned char)(Val.Int64Val >> 8);
+ Ptr->Untyped[5] = (unsigned char)(Val.Int64Val >> 16);
+ Ptr->Untyped[4] = (unsigned char)(Val.Int64Val >> 24);
+ Ptr->Untyped[3] = (unsigned char)(Val.Int64Val >> 32);
+ Ptr->Untyped[2] = (unsigned char)(Val.Int64Val >> 40);
+ Ptr->Untyped[1] = (unsigned char)(Val.Int64Val >> 48);
+ Ptr->Untyped[0] = (unsigned char)(Val.Int64Val >> 56);
+ } else
+ assert(0 && "Integer types > 64 bits not supported");
+ break;
+ }
Store4BytesBigEndian:
case Type::FloatTyID:
- case Type::Int32TyID: Ptr->Untyped[3] = Val.Int32Val & 255;
- Ptr->Untyped[2] = (Val.Int32Val >> 8) & 255;
- Ptr->Untyped[1] = (Val.Int32Val >> 16) & 255;
- Ptr->Untyped[0] = (Val.Int32Val >> 24) & 255;
- break;
- case Type::PointerTyID: if (getTargetData()->getPointerSize() == 4)
- goto Store4BytesBigEndian;
+ Ptr->Untyped[3] = Val.Int32Val & 255;
+ Ptr->Untyped[2] = (Val.Int32Val >> 8) & 255;
+ Ptr->Untyped[1] = (Val.Int32Val >> 16) & 255;
+ Ptr->Untyped[0] = (Val.Int32Val >> 24) & 255;
+ break;
+ case Type::PointerTyID:
+ if (getTargetData()->getPointerSize() == 4)
+ goto Store4BytesBigEndian;
+ /* FALL THROUGH */
case Type::DoubleTyID:
- case Type::Int64TyID:
Ptr->Untyped[7] = (unsigned char)(Val.Int64Val );
Ptr->Untyped[6] = (unsigned char)(Val.Int64Val >> 8);
Ptr->Untyped[5] = (unsigned char)(Val.Int64Val >> 16);
@@ -501,60 +564,104 @@ GenericValue ExecutionEngine::LoadValueFromMemory(GenericValue *Ptr,
GenericValue Result;
if (getTargetData()->isLittleEndian()) {
switch (Ty->getTypeID()) {
- case Type::Int1TyID:
- case Type::Int8TyID: Result.Int8Val = Ptr->Untyped[0]; break;
- case Type::Int16TyID: Result.Int16Val = (unsigned)Ptr->Untyped[0] |
- ((unsigned)Ptr->Untyped[1] << 8);
- break;
+ case Type::IntegerTyID: {
+ unsigned BitWidth = cast<IntegerType>(Ty)->getBitWidth();
+ if (BitWidth <= 8)
+ Result.Int8Val = Ptr->Untyped[0];
+ else if (BitWidth <= 16) {
+ Result.Int16Val = (unsigned)Ptr->Untyped[0] |
+ ((unsigned)Ptr->Untyped[1] << 8);
+ } else if (BitWidth <= 32) {
+ Result.Int32Val = (unsigned)Ptr->Untyped[0] |
+ ((unsigned)Ptr->Untyped[1] << 8) |
+ ((unsigned)Ptr->Untyped[2] << 16) |
+ ((unsigned)Ptr->Untyped[3] << 24);
+ } else if (BitWidth <= 64) {
+ Result.Int64Val = (uint64_t)Ptr->Untyped[0] |
+ ((uint64_t)Ptr->Untyped[1] << 8) |
+ ((uint64_t)Ptr->Untyped[2] << 16) |
+ ((uint64_t)Ptr->Untyped[3] << 24) |
+ ((uint64_t)Ptr->Untyped[4] << 32) |
+ ((uint64_t)Ptr->Untyped[5] << 40) |
+ ((uint64_t)Ptr->Untyped[6] << 48) |
+ ((uint64_t)Ptr->Untyped[7] << 56);
+ } else
+ assert(0 && "Integer types > 64 bits not supported");
+ break;
+ }
Load4BytesLittleEndian:
case Type::FloatTyID:
- case Type::Int32TyID: Result.Int32Val = (unsigned)Ptr->Untyped[0] |
- ((unsigned)Ptr->Untyped[1] << 8) |
- ((unsigned)Ptr->Untyped[2] << 16) |
- ((unsigned)Ptr->Untyped[3] << 24);
- break;
- case Type::PointerTyID: if (getTargetData()->getPointerSize() == 4)
- goto Load4BytesLittleEndian;
+ Result.Int32Val = (unsigned)Ptr->Untyped[0] |
+ ((unsigned)Ptr->Untyped[1] << 8) |
+ ((unsigned)Ptr->Untyped[2] << 16) |
+ ((unsigned)Ptr->Untyped[3] << 24);
+ break;
+ case Type::PointerTyID:
+ if (getTargetData()->getPointerSize() == 4)
+ goto Load4BytesLittleEndian;
+ /* FALL THROUGH */
case Type::DoubleTyID:
- case Type::Int64TyID: Result.Int64Val = (uint64_t)Ptr->Untyped[0] |
- ((uint64_t)Ptr->Untyped[1] << 8) |
- ((uint64_t)Ptr->Untyped[2] << 16) |
- ((uint64_t)Ptr->Untyped[3] << 24) |
- ((uint64_t)Ptr->Untyped[4] << 32) |
- ((uint64_t)Ptr->Untyped[5] << 40) |
- ((uint64_t)Ptr->Untyped[6] << 48) |
- ((uint64_t)Ptr->Untyped[7] << 56);
- break;
+ Result.Int64Val = (uint64_t)Ptr->Untyped[0] |
+ ((uint64_t)Ptr->Untyped[1] << 8) |
+ ((uint64_t)Ptr->Untyped[2] << 16) |
+ ((uint64_t)Ptr->Untyped[3] << 24) |
+ ((uint64_t)Ptr->Untyped[4] << 32) |
+ ((uint64_t)Ptr->Untyped[5] << 40) |
+ ((uint64_t)Ptr->Untyped[6] << 48) |
+ ((uint64_t)Ptr->Untyped[7] << 56);
+ break;
default:
cerr << "Cannot load value of type " << *Ty << "!\n";
abort();
}
} else {
switch (Ty->getTypeID()) {
- case Type::Int1TyID:
- case Type::Int8TyID: Result.Int8Val = Ptr->Untyped[0]; break;
- case Type::Int16TyID: Result.Int16Val = (unsigned)Ptr->Untyped[1] |
- ((unsigned)Ptr->Untyped[0] << 8);
- break;
+ case Type::IntegerTyID: {
+ unsigned BitWidth = cast<IntegerType>(Ty)->getBitWidth();
+ if (BitWidth <= 8)
+ Result.Int8Val = Ptr->Untyped[0];
+ else if (BitWidth <= 16) {
+ Result.Int16Val = (unsigned)Ptr->Untyped[1] |
+ ((unsigned)Ptr->Untyped[0] << 8);
+ } else if (BitWidth <= 32) {
+ Result.Int32Val = (unsigned)Ptr->Untyped[3] |
+ ((unsigned)Ptr->Untyped[2] << 8) |
+ ((unsigned)Ptr->Untyped[1] << 16) |
+ ((unsigned)Ptr->Untyped[0] << 24);
+ } else if (BitWidth <= 64) {
+ Result.Int64Val = (uint64_t)Ptr->Untyped[7] |
+ ((uint64_t)Ptr->Untyped[6] << 8) |
+ ((uint64_t)Ptr->Untyped[5] << 16) |
+ ((uint64_t)Ptr->Untyped[4] << 24) |
+ ((uint64_t)Ptr->Untyped[3] << 32) |
+ ((uint64_t)Ptr->Untyped[2] << 40) |
+ ((uint64_t)Ptr->Untyped[1] << 48) |
+ ((uint64_t)Ptr->Untyped[0] << 56);
+ } else
+ assert(0 && "Integer types > 64 bits not supported");
+ break;
+ }
Load4BytesBigEndian:
case Type::FloatTyID:
- case Type::Int32TyID: Result.Int32Val =(unsigned)Ptr->Untyped[3] |
- ((unsigned)Ptr->Untyped[2] << 8) |
- ((unsigned)Ptr->Untyped[1] << 16) |
- ((unsigned)Ptr->Untyped[0] << 24);
+ Result.Int32Val = (unsigned)Ptr->Untyped[3] |
+ ((unsigned)Ptr->Untyped[2] << 8) |
+ ((unsigned)Ptr->Untyped[1] << 16) |
+ ((unsigned)Ptr->Untyped[0] << 24);
break;
- case Type::PointerTyID: if (getTargetData()->getPointerSize() == 4)
- goto Load4BytesBigEndian;
+ case Type::PointerTyID:
+ if (getTargetData()->getPointerSize() == 4)
+ goto Load4BytesBigEndian;
+ /* FALL THROUGH */
case Type::DoubleTyID:
- case Type::Int64TyID: Result.Int64Val = (uint64_t)Ptr->Untyped[7] |
- ((uint64_t)Ptr->Untyped[6] << 8) |
- ((uint64_t)Ptr->Untyped[5] << 16) |
- ((uint64_t)Ptr->Untyped[4] << 24) |
- ((uint64_t)Ptr->Untyped[3] << 32) |
- ((uint64_t)Ptr->Untyped[2] << 40) |
- ((uint64_t)Ptr->Untyped[1] << 48) |
- ((uint64_t)Ptr->Untyped[0] << 56);
- break;
+ Result.Int64Val = (uint64_t)Ptr->Untyped[7] |
+ ((uint64_t)Ptr->Untyped[6] << 8) |
+ ((uint64_t)Ptr->Untyped[5] << 16) |
+ ((uint64_t)Ptr->Untyped[4] << 24) |
+ ((uint64_t)Ptr->Untyped[3] << 32) |
+ ((uint64_t)Ptr->Untyped[2] << 40) |
+ ((uint64_t)Ptr->Untyped[1] << 48) |
+ ((uint64_t)Ptr->Untyped[0] << 56);
+ break;
default:
cerr << "Cannot load value of type " << *Ty << "!\n";
abort();
@@ -708,8 +815,8 @@ void ExecutionEngine::emitGlobals() {
}
}
- // Now that all of the globals are set up in memory, loop through them all and
- // initialize their contents.
+ // Now that all of the globals are set up in memory, loop through them all
+ // and initialize their contents.
for (Module::const_global_iterator I = M.global_begin(), E = M.global_end();
I != E; ++I) {
if (!I->isExternal()) {
diff --git a/lib/ExecutionEngine/Interpreter/Execution.cpp b/lib/ExecutionEngine/Interpreter/Execution.cpp
index 0a0fbce134..681fb67b92 100644
--- a/lib/ExecutionEngine/Interpreter/Execution.cpp
+++ b/lib/ExecutionEngine/Interpreter/Execution.cpp
@@ -20,6 +20,7 @@
#include "llvm/Support/GetElementPtrTypeIterator.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Support/Debug.h"
+#include "llvm/Support/MathExtras.h"
#include <cmath>
using namespace llvm;
@@ -69,20 +70,30 @@ static GenericValue executeSelectInst(GenericValue Src1, GenericValue Src2,
GenericValue Interpreter::getConstantExprValue (ConstantExpr *CE,
ExecutionContext &SF) {
switch (CE->getOpcode()) {
- case Instruction::Trunc:
+ case Instruction::Trunc:
+ return executeTruncInst(CE->getOperand(0), CE->getType(), SF);
case Instruction::ZExt:
+ return executeZExtInst(CE->getOperand(0), CE->getType(), SF);
case Instruction::SExt:
+ return executeSExtInst(CE->getOperand(0), CE->getType(), SF);
case Instruction::FPTrunc:
+ return executeFPTruncInst(CE->getOperand(0), CE->getType(), SF);
case Instruction::FPExt:
+ return executeFPExtInst(CE->getOperand(0), CE->getType(), SF);
case Instruction::UIToFP:
+ return executeUIToFPInst(CE->getOperand(0), CE->getType(), SF);
case Instruction::SIToFP:
+ return executeSIToFPInst(CE->getOperand(0), CE->getType(), SF);
case Instruction::FPToUI:
+ return executeFPToUIInst(CE->getOperand(0), CE->getType(), SF);
case Instruction::FPToSI:
+ return executeFPToSIInst(CE->getOperand(0), CE->getType(), SF);
case Instruction::PtrToInt:
+ return executePtrToIntInst(CE->getOperand(0), CE->getType(), SF);
case Instruction::IntToPtr:
+ return executeIntToPtrInst(CE->getOperand(0), CE->getType(), SF);
case Instruction::BitCast:
- return executeCastOperation(Instruction::CastOps(CE->getOpcode()),
- CE->getOperand(0), CE->getType(), SF);
+ return executeBitCastInst(CE->getOperand(0), CE->getType(), SF);
case Instruction::GetElementPtr:
return executeGEPOperation(CE->getOperand(0), gep_type_begin(CE),
gep_type_end(CE), SF);
@@ -190,14 +201,69 @@ void Interpreter::initializeExecutionEngine() {
#define IMPLEMENT_BINARY_OPERATOR(OP, TY) \
case Type::TY##TyID: Dest.TY##Val = Src1.TY##Val OP Src2.TY##Val; break
+#define IMPLEMENT_INTEGER_BINOP(OP, TY) \
+ case Type::IntegerTyID: { \
+ unsigned BitWidth = cast<IntegerType>(TY)->getBitWidth(); \
+ if (BitWidth == 1) \
+ Dest.Int1Val = Src1.Int1Val OP Src2.Int1Val; \
+ else if (BitWidth <= 8) \
+ Dest.Int8Val = Src1.Int8Val OP Src2.Int8Val; \
+ else if (BitWidth <= 16) \
+ Dest.Int16Val = Src1.Int16Val OP Src2.Int16Val; \
+ else if (BitWidth <= 32) \
+ Dest.Int32Val = Src1.Int32Val OP Src2.Int32Val; \
+ else if (BitWidth <= 64) \
+ Dest.Int64Val = Src1.Int64Val OP Src2.Int64Val; \
+ else \
+ cerr << "Integer types > 64 bits not supported: " << *Ty << "\n"; \
+ break; \
+ }
+
+#define IMPLEMENT_SIGNED_BINOP(OP, TY) \
+ if (const IntegerType *ITy = dyn_cast<IntegerType>(TY)) { \
+ unsigned BitWidth = ITy->getBitWidth(); \
+ if (BitWidth <= 8) \
+ Dest.Int8Val = ((int8_t)Src1.Int8Val) OP ((int8_t)Src2.Int8Val); \
+ else if (BitWidth <= 16) \
+ Dest.Int16Val = ((int16_t)Src1.Int16Val) OP ((int16_t)Src2.Int16Val); \
+ else if (BitWidth <= 32) \
+ Dest.Int32Val = ((int32_t)Src1.Int32Val) OP ((int32_t)Src2.Int32Val); \
+ else if (BitWidth <= 64) \
+ Dest.Int64Val = ((int64_t)Src1.Int64Val) OP ((int64_t)Src2.Int64Val); \
+ else { \
+ cerr << "Integer types > 64 bits not supported: " << *Ty << "\n"; \
+ abort(); \
+ } \
+ } else { \
+ cerr << "Unhandled type for " #OP " operator: " << *Ty << "\n"; \
+ abort(); \
+ }
+
+#define IMPLEMENT_UNSIGNED_BINOP(OP, TY) \
+ if (const IntegerType *ITy = dyn_cast<IntegerType>(TY)) { \
+ unsigned BitWidth = ITy->getBitWidth(); \
+ if (BitWidth <= 8) \
+ Dest.Int8Val = ((uint8_t)Src1.Int8Val) OP ((uint8_t)Src2.Int8Val); \
+ else if (BitWidth <= 16) \
+ Dest.Int16Val = ((uint16_t)Src1.Int16Val) OP ((uint16_t)Src2.Int16Val); \
+ else if (BitWidth <= 32) \
+ Dest.Int32Val = ((uint32_t)Src1.Int32Val) OP ((uint32_t)Src2.Int32Val); \
+ else if (BitWidth <= 64) \
+ Dest.Int64Val = ((uint64_t)Src1.Int64Val) OP ((uint64_t)Src2.Int64Val); \
+ else { \
+ cerr << "Integer types > 64 bits not supported: " << *Ty << "\n"; \
+ abort(); \
+ } \
+ } else { \
+ cerr << "Unhandled type for " #OP " operator: " << *Ty << "\n"; \
+ abort(); \
+ }
+
static GenericValue executeAddInst(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
- IMPLEMENT_BINARY_OPERATOR(+, Int8);
- IMPLEMENT_BINARY_OPERATOR(+, Int16);
- IMPLEMENT_BINARY_OPERATOR(+, Int32);
- IMPLEMENT_BINARY_OPERATOR(+, Int64);
+ IMPLEMENT_INTEGER_BINOP(+, Ty);
IMPLEMENT_BINARY_OPERATOR(+, Float);
IMPLEMENT_BINARY_OPERATOR(+, Double);
default:
@@ -211,10 +277,7 @@ static GenericValue executeSubInst(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
- IMPLEMENT_BINARY_OPERATOR(-, Int8);
- IMPLEMENT_BINARY_OPERATOR(-, Int16);
- IMPLEMENT_BINARY_OPERATOR(-, Int32);
- IMPLEMENT_BINARY_OPERATOR(-, Int64);
+ IMPLEMENT_INTEGER_BINOP(-, Ty);
IMPLEMENT_BINARY_OPERATOR(-, Float);
IMPLEMENT_BINARY_OPERATOR(-, Double);
default:
@@ -228,10 +291,7 @@ static GenericValue executeMulInst(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
- IMPLEMENT_BINARY_OPERATOR(*, Int8);
- IMPLEMENT_BINARY_OPERATOR(*, Int16);
- IMPLEMENT_BINARY_OPERATOR(*, Int32);
- IMPLEMENT_BINARY_OPERATOR(*, Int64);
+ IMPLEMENT_INTEGER_BINOP(*, Ty);
IMPLEMENT_BINARY_OPERATOR(*, Float);
IMPLEMENT_BINARY_OPERATOR(*, Double);
default:
@@ -241,37 +301,17 @@ static GenericValue executeMulInst(GenericValue Src1, GenericValue Src2,
return Dest;
}
-#define IMPLEMENT_SIGNLESS_BINOP(OP, TY, CAST) \
- case Type::TY##TyID: Dest.TY##Val = \
- ((CAST)Src1.TY##Val) OP ((CAST)Src2.TY##Val); break
-
static GenericValue executeUDivInst(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
- switch (Ty->getTypeID()) {
- IMPLEMENT_SIGNLESS_BINOP(/, Int8, uint8_t);
- IMPLEMENT_SIGNLESS_BINOP(/, Int16, uint16_t);
- IMPLEMENT_SIGNLESS_BINOP(/, Int32, uint32_t);
- IMPLEMENT_SIGNLESS_BINOP(/, Int64, uint64_t);
- default:
- cerr << "Unhandled type for UDiv instruction: " << *Ty << "\n";
- abort();
- }
+ IMPLEMENT_UNSIGNED_BINOP(/,Ty)
return Dest;
}
static GenericValue executeSDivInst(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
- switch (Ty->getTypeID()) {
- IMPLEMENT_SIGNLESS_BINOP(/, Int8, int8_t);
- IMPLEMENT_SIGNLESS_BINOP(/, Int16, int16_t);
- IMPLEMENT_SIGNLESS_BINOP(/, Int32, int32_t);
- IMPLEMENT_SIGNLESS_BINOP(/, Int64, int64_t);
- default:
- cerr << "Unhandled type for SDiv instruction: " << *Ty << "\n";
- abort();
- }
+ IMPLEMENT_SIGNED_BINOP(/,Ty)
return Dest;
}
@@ -282,7 +322,7 @@ static GenericValue executeFDivInst(GenericValue Src1, GenericValue Src2,
IMPLEMENT_BINARY_OPERATOR(/, Float);
IMPLEMENT_BINARY_OPERATOR(/, Double);
default:
- cerr << "Unhandled type for Div instruction: " << *Ty << "\n";
+ cerr << "Unhandled type for FDiv instruction: " << *Ty << "\n";
abort();
}
return Dest;
@@ -291,30 +331,14 @@ static GenericValue executeFDivInst(GenericValue Src1, GenericValue Src2,
static GenericValue executeURemInst(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
- switch (Ty->getTypeID()) {
- IMPLEMENT_SIGNLESS_BINOP(%, Int8, uint8_t);
- IMPLEMENT_SIGNLESS_BINOP(%, Int16, uint16_t);
- IMPLEMENT_SIGNLESS_BINOP(%, Int32, uint32_t);
- IMPLEMENT_SIGNLESS_BINOP(%, Int64, uint64_t );
- default:
- cerr << "Unhandled type for URem instruction: " << *Ty << "\n";
- abort();
- }
+ IMPLEMENT_UNSIGNED_BINOP(%, Ty)
return Dest;
}
static GenericValue executeSRemInst(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
- switch (Ty->getTypeID()) {
- IMPLEMENT_SIGNLESS_BINOP(%, Int8, int8_t);
- IMPLEMENT_SIGNLESS_BINOP(%, Int16, int16_t);
- IMPLEMENT_SIGNLESS_BINOP(%, Int32, int32_t);
- IMPLEMENT_SIGNLESS_BINOP(%, Int64, int64_t);
- default:
- cerr << "Unhandled type for Rem instruction: " << *Ty << "\n";
- abort();
- }
+ IMPLEMENT_SIGNED_BINOP(%, Ty)
return Dest;
}
@@ -338,60 +362,69 @@ static GenericValue executeFRemInst(GenericValue Src1, GenericValue Src2,
static GenericValue executeAndInst(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
- switch (Ty->getTypeID()) {
- IMPLEMENT_BINARY_OPERATOR(&, Int1);
- IMPLEMENT_BINARY_OPERATOR(&, Int8);
- IMPLEMENT_BINARY_OPERATOR(&, Int16);
- IMPLEMENT_BINARY_OPERATOR(&, Int32);
- IMPLEMENT_BINARY_OPERATOR(&, Int64);
- default:
- cerr << "Unhandled type for And instruction: " << *Ty << "\n";
- abort();
- }
+ IMPLEMENT_UNSIGNED_BINOP(&, Ty)
return Dest;
}
static GenericValue executeOrInst(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
- switch (Ty->getTypeID()) {
- IMPLEMENT_BINARY_OPERATOR(|, Int1);
- IMPLEMENT_BINARY_OPERATOR(|, Int8);
- IMPLEMENT_BINARY_OPERATOR(|, Int16);
- IMPLEMENT_BINARY_OPERATOR(|, Int32);
- IMPLEMENT_BINARY_OPERATOR(|, Int64);
- default:
- cerr << "Unhandled type for Or instruction: " << *Ty << "\n";
- abort();
- }
+ IMPLEMENT_UNSIGNED_BINOP(|, Ty)
return Dest;
}
static GenericValue executeXorInst(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
- switch (Ty->getTypeID()) {
- IMPLEMENT_BINARY_OPERATOR(^, Int1);
- IMPLEMENT_BINARY_OPERATOR(^, Int8);
- IMPLEMENT_BINARY_OPERATOR(^, Int16);
- IMPLEMENT_BINARY_OPERATOR(^, Int32);
- IMPLEMENT_BINARY_OPERATOR(^, Int64);
- default:
- cerr << "Unhandled type for Xor instruction: " << *Ty << "\n";
- abort();
- }
+ IMPLEMENT_UNSIGNED_BINOP(^, Ty)
return Dest;
}
-#define IMPLEMENT_ICMP(OP, TY, CAST) \
- case Type::TY##TyID: Dest.Int1Val = \
- ((CAST)Src1.TY##Val) OP ((CAST)Src2.TY##Val); break
+#define IMPLEMENT_SIGNED_ICMP(OP, TY) \
+ case Type::IntegerTyID: { \
+ unsigned BitWidth = cast<IntegerType>(TY)->getBitWidth(); \
+ if (BitWidth == 1) \
+ Dest.Int1Val = ((int8_t)Src1.Int1Val) OP ((int8_t)Src2.Int1Val); \
+ else if (BitWidth <= 8) \
+ Dest.Int1Val = ((int8_t)Src1.Int8Val) OP ((int8_t)Src2.Int8Val); \
+ else if (BitWidth <= 16) \
+ Dest.Int1Val = ((int16_t)Src1.Int16Val) OP ((int16_t)Src2.Int16Val); \
+ else if (BitWidth <= 32) \
+ Dest.Int1Val = ((int32_t)Src1.Int32Val) OP ((int32_t)Src2.Int32Val); \
+ else if (BitWidth <= 64) \
+ Dest.Int1Val = ((int64_t)Src1.Int64Val) OP ((int64_t)Src2.Int64Val); \
+ else { \
+ cerr << "Integer types > 64 bits not supported: " << *Ty << "\n"; \
+ abort(); \
+ } \
+ break; \
+ }
+
+#define IMPLEMENT_UNSIGNED_ICMP(OP, TY) \
+ case Type::IntegerTyID: { \
+ unsigned BitWidth = cast<IntegerType>(TY)->getBitWidth(); \
+ if (BitWidth == 1) \
+ Dest.Int1Val = ((uint8_t)Src1.Int1Val) OP ((uint8_t)Src2.Int1Val); \
+ else if (BitWidth <= 8) \
+ Dest.Int1Val = ((uint8_t)Src1.Int8Val) OP ((uint8_t)Src2.Int8Val); \
+ else if (BitWidth <= 16) \
+ Dest.Int1Val = ((uint16_t)Src1.Int16Val) OP ((uint16_t)Src2.Int16Val); \
+ else if (BitWidth <= 32) \
+ Dest.Int1Val = ((uint32_t)Src1.Int32Val) OP ((uint32_t)Src2.Int32Val); \
+ else if (BitWidth <= 64) \
+ Dest.Int1Val = ((uint64_t)Src1.Int64Val) OP ((uint64_t)Src2.Int64Val); \
+ else { \
+ cerr << "Integer types > 64 bits not supported: " << *Ty << "\n"; \
+ abort(); \
+ } \
+ break; \
+ }
// Handle pointers specially because they must be compared with only as much
// width as the host has. We _do not_ want to be comparing 64 bit values when
// running on a 32-bit target, otherwise the upper 32 bits might mess up
// comparisons if they contain garbage.
-#define IMPLEMENT_POINTERCMP(OP) \
+#define IMPLEMENT_POINTER_ICMP(OP) \
case Type::PointerTyID: \
Dest.Int1Val = (void*)(intptr_t)Src1.PointerVal OP \
(void*)(intptr_t)Src2.PointerVal; break
@@ -400,11 +433,8 @@ static GenericValue executeICMP_EQ(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
- IMPLEMENT_ICMP(==, Int8, uint8_t);
- IMPLEMENT_ICMP(==, Int16, uint16_t);
- IMPLEMENT_ICMP(==, Int32, uint32_t);
- IMPLEMENT_ICMP(==, Int64, uint64_t);
- IMPLEMENT_POINTERCMP(==);
+ IMPLEMENT_UNSIGNED_ICMP(==, Ty);
+ IMPLEMENT_POINTER_ICMP(==);
default:
cerr << "Unhandled type for ICMP_EQ predicate: " << *Ty << "\n";
abort();
@@ -416,11 +446,8 @@ static GenericValue executeICMP_NE(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
- IMPLEMENT_ICMP(!=, Int8, uint8_t);
- IMPLEMENT_ICMP(!=, Int16, uint16_t);
- IMPLEMENT_ICMP(!=, Int32, uint32_t);
- IMPLEMENT_ICMP(!=, Int64, uint64_t);
- IMPLEMENT_POINTERCMP(!=);
+ IMPLEMENT_UNSIGNED_ICMP(!=, Ty);
+ IMPLEMENT_POINTER_ICMP(!=);
default:
cerr << "Unhandled type for ICMP_NE predicate: " << *Ty << "\n";
abort();
@@ -432,11 +459,8 @@ static GenericValue executeICMP_ULT(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
- IMPLEMENT_ICMP(<, Int8, uint8_t);
- IMPLEMENT_ICMP(<, Int16, uint16_t);
- IMPLEMENT_ICMP(<, Int32, uint32_t);
- IMPLEMENT_ICMP(<, Int64, uint64_t);
- IMPLEMENT_POINTERCMP(<);
+ IMPLEMENT_UNSIGNED_ICMP(<, Ty);
+ IMPLEMENT_POINTER_ICMP(<);
default:
cerr << "Unhandled type for ICMP_ULT predicate: " << *Ty << "\n";
abort();
@@ -448,11 +472,8 @@ static GenericValue executeICMP_SLT(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
- IMPLEMENT_ICMP(<, Int8, int8_t);
- IMPLEMENT_ICMP(<, Int16, int16_t);
- IMPLEMENT_ICMP(<, Int32, int32_t);
- IMPLEMENT_ICMP(<, Int64, int64_t);
- IMPLEMENT_POINTERCMP(<);
+ IMPLEMENT_SIGNED_ICMP(<, Ty);
+ IMPLEMENT_POINTER_ICMP(<);
default:
cerr << "Unhandled type for ICMP_SLT predicate: " << *Ty << "\n";
abort();
@@ -464,11 +485,8 @@ static GenericValue executeICMP_UGT(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
- IMPLEMENT_ICMP(>, Int8, uint8_t);
- IMPLEMENT_ICMP(>, Int16, uint16_t);
- IMPLEMENT_ICMP(>, Int32, uint32_t);
- IMPLEMENT_ICMP(>, Int64, uint64_t);
- IMPLEMENT_POINTERCMP(>);
+ IMPLEMENT_UNSIGNED_ICMP(>, Ty);
+ IMPLEMENT_POINTER_ICMP(>);
default:
cerr << "Unhandled type for ICMP_UGT predicate: " << *Ty << "\n";
abort();
@@ -480,11 +498,8 @@ static GenericValue executeICMP_SGT(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
- IMPLEMENT_ICMP(>, Int8, int8_t);
- IMPLEMENT_ICMP(>, Int16, int16_t);
- IMPLEMENT_ICMP(>, Int32, int32_t);
- IMPLEMENT_ICMP(>, Int64, int64_t);
- IMPLEMENT_POINTERCMP(>);
+ IMPLEMENT_SIGNED_ICMP(>, Ty);
+ IMPLEMENT_POINTER_ICMP(>);
default:
cerr << "Unhandled type for ICMP_SGT predicate: " << *Ty << "\n";
abort();
@@ -496,11 +511,8 @@ static GenericValue executeICMP_ULE(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
- IMPLEMENT_ICMP(<=, Int8, uint8_t);
- IMPLEMENT_ICMP(<=, Int16, uint16_t);
- IMPLEMENT_ICMP(<=, Int32, uint32_t);
- IMPLEMENT_ICMP(<=, Int64, uint64_t);
- IMPLEMENT_POINTERCMP(<=);
+ IMPLEMENT_UNSIGNED_ICMP(<=, Ty);
+ IMPLEMENT_POINTER_ICMP(<=);
default:
cerr << "Unhandled type for ICMP_ULE predicate: " << *Ty << "\n";
abort();
@@ -512,11 +524,8 @@ static GenericValue executeICMP_SLE(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
- IMPLEMENT_ICMP(<=, Int8, int8_t);
- IMPLEMENT_ICMP(<=, Int16, int16_t);
- IMPLEMENT_ICMP(<=, Int32, int32_t);
- IMPLEMENT_ICMP(<=, Int64, int64_t);
- IMPLEMENT_POINTERCMP(<=);
+ IMPLEMENT_SIGNED_ICMP(<=, Ty);
+ IMPLEMENT_POINTER_ICMP(<=);
default:
cerr << "Unhandled type for ICMP_SLE predicate: " << *Ty << "\n";
abort();
@@ -528,11 +537,8 @@ static GenericValue executeICMP_UGE(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
- IMPLEMENT_ICMP(>=, Int8, uint8_t);
- IMPLEMENT_ICMP(>=, Int16, uint16_t);
- IMPLEMENT_ICMP(>=, Int32, uint32_t);
- IMPLEMENT_ICMP(>=, Int64, uint64_t);
- IMPLEMENT_POINTERCMP(>=);
+ IMPLEMENT_UNSIGNED_ICMP(>=,Ty);
+ IMPLEMENT_POINTER_ICMP(>=);
default:
cerr << "Unhandled type for ICMP_UGE predicate: " << *Ty << "\n";
abort();
@@ -544,11 +550,8 @@ static GenericValue executeICMP_SGE(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
- IMPLEMENT_ICMP(>=, Int8, int8_t);
- IMPLEMENT_ICMP(>=, Int16, int16_t);
- IMPLEMENT_ICMP(>=, Int32, int32_t);
- IMPLEMENT_ICMP(>=, Int64, int64_t);
- IMPLEMENT_POINTERCMP(>=);
+ IMPLEMENT_SIGNED_ICMP(>=, Ty);
+ IMPLEMENT_POINTER_ICMP(>=);
default:
cerr << "Unhandled type for ICMP_SGE predicate: " << *Ty << "\n";
abort();
@@ -564,8 +567,8 @@ void Interpreter::visitICmpInst(ICmpInst &I) {
GenericValue R; // Result
switch (I.getPredicate()) {
- case ICmpInst::ICMP_EQ: R = executeICMP_EQ(Src1, Src2, Ty); break;
- case ICmpInst::ICMP_NE: R = executeICMP_NE(Src1, Src2, Ty); break;
+ case ICmpInst::ICMP_EQ: R = executeICMP_EQ(Src1, Src2, Ty); break;
+ case ICmpInst::ICMP_NE: R = executeICMP_NE(Src1, Src2, Ty); break;
case ICmpInst::ICMP_ULT: R = executeICMP_ULT(Src1, Src2, Ty); break;
case ICmpInst::ICMP_SLT: R = executeICMP_SLT(Src1, Src2, Ty); break;
case ICmpInst::ICMP_UGT: R = executeICMP_UGT(Src1, Src2, Ty); break;
@@ -585,20 +588,20 @@ void Interpreter::visitICmpInst(ICmpInst &I) {
#define IMPLEMENT_FCMP(OP, TY) \
case Type::TY##TyID: Dest.Int1Val = Src1.TY##Val OP Src2.TY##Val; break
-static GenericValue executeFCMP_EQ(GenericValue Src1, GenericValue Src2,
+static GenericValue executeFCMP_OEQ(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
IMPLEMENT_FCMP(==, Float);
IMPLEMENT_FCMP(==, Double);
default:
- cerr << "Unhandled type for SetEQ instruction: " << *Ty << "\n";
+ cerr << "Unhandled type for FCmp EQ instruction: " << *Ty << "\n";
abort();
}
return Dest;
}
-static GenericValue executeFCMP_NE(GenericValue Src1, GenericValue Src2,
+static GenericValue executeFCMP_ONE(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
@@ -606,64 +609,142 @@ static GenericValue executeFCMP_NE(GenericValue Src1, GenericValue Src2,
IMPLEMENT_FCMP(!=, Double);
default:
- cerr << "Unhandled type for SetNE instruction: " << *Ty << "\n";
+ cerr << "Unhandled type for FCmp NE instruction: " << *Ty << "\n";
abort();
}
return Dest;
}
-static GenericValue executeFCMP_LE(GenericValue Src1, GenericValue Src2,
+static GenericValue executeFCMP_OLE(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
IMPLEMENT_FCMP(<=, Float);
IMPLEMENT_FCMP(<=, Double);
default:
- cerr << "Unhandled type for SetLE instruction: " << *Ty << "\n";
+ cerr << "Unhandled type for FCmp LE instruction: " << *Ty << "\n";
abort();
}
return Dest;
}
-static GenericValue executeFCMP_GE(GenericValue Src1, GenericValue Src2,
+static GenericValue executeFCMP_OGE(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
IMPLEMENT_FCMP(>=, Float);
IMPLEMENT_FCMP(>=, Double);
default:
- cerr << "Unhandled type for SetGE instruction: " << *Ty << "\n";
+ cerr << "Unhandled type for FCmp GE instruction: " << *Ty << "\n";
abort();
}
return Dest;
}
-static GenericValue executeFCMP_LT(GenericValue Src1, GenericValue Src2,
+static GenericValue executeFCMP_OLT(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
IMPLEMENT_FCMP(<, Float);
IMPLEMENT_FCMP(<, Double);
default:
- cerr << "Unhandled type for SetLT instruction: " << *Ty << "\n";
+ cerr << "Unhandled type for FCmp LT instruction: " << *Ty << "\n";
abort();
}
return Dest;
}
-static GenericValue executeFCMP_GT(GenericValue Src1, GenericValue Src2,
+static GenericValue executeFCMP_OGT(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
switch (Ty->getTypeID()) {
IMPLEMENT_FCMP(>, Float);
IMPLEMENT_FCMP(>, Double);
default:
- cerr << "Unhandled type for SetGT instruction: " << *Ty << "\n";
+ cerr << "Unhandled type for FCmp GT instruction: " << *Ty << "\n";
abort();
}
return Dest;
}
+#define IMPLEMENT_UNORDERED(TY, X,Y) \
+ if (TY == Type::FloatTy) \
+ if (X.FloatVal != X.FloatVal || Y.FloatVal != Y.FloatVal) { \
+ Dest.Int1Val = true; \
+ return Dest; \
+ } \
+ else if (X.DoubleVal != X.DoubleVal || Y.DoubleVal != Y.DoubleVal) { \
+ Dest.Int1Val = true; \
+ return Dest; \
+ }
+
+
+static GenericValue executeFCMP_UEQ(GenericValue Src1, GenericValue Src2,
+ const Type *Ty) {
+ GenericValue Dest;
+ IMPLEMENT_UNORDERED(Ty, Src1, Src2)
+ return executeFCMP_OEQ(Src1, Src2, Ty);
+}
+
+static GenericValue executeFCMP_UNE(GenericValue Src1, GenericValue Src2,
+ const Type *Ty) {
+ GenericValue Dest;
+ IMPLEMENT_UNORDERED(Ty, Src1, Src2)
+ return executeFCMP_ONE(Src1, Src2, Ty);
+}
+
+static GenericValue executeFCMP_ULE(GenericValue Src1, GenericValue Src2,
+ const Type *Ty) {
+ GenericValue Dest;
+ IMPLEMENT_UNORDERED(Ty, Src1, Src2)
+ return executeFCMP_OLE(Src1, Src2, Ty);
+}
+
+static GenericValue executeFCMP_UGE(GenericValue Src1, GenericValue Src2,
+ const Type *Ty) {
+ GenericValue Dest;
+ IMPLEMENT_UNORDERED(Ty, Src1, Src2)
+ return executeFCMP_OGE(Src1, Src2, Ty);
+}
+
+static GenericValue executeFCMP_ULT(GenericValue Src1, GenericValue Src2,
+ const Type *Ty) {
+ GenericValue Dest;
+ IMPLEMENT_UNORDERED(Ty, Src1, Src2)
+ return executeFCMP_OLT(Src1, Src2, Ty);
+}
+
+static GenericValue executeFCMP_UGT(GenericValue Src1, GenericValue Src2,
+ const Type *Ty) {
+ GenericValue Dest;
+ IMPLEMENT_UNORDERED(Ty, Src1, Src2)
+ return executeFCMP_OGT(Src1, Src2, Ty);
+}
+
+static GenericValue executeFCMP_ORD(GenericValue Src1, GenericValue Src2,
+ const Type *Ty) {
+ GenericValue Dest;
+ if (Ty == Type::FloatTy)
+ Dest.Int1Val = (Src1.FloatVal == Src1.FloatVal &&
+ Src2.FloatVal == Src2.FloatVal);
+ else
+ Dest.Int1Val = (Src1.DoubleVal == Src1.DoubleVal &&
+ Src2.DoubleVal == Src2.DoubleVal);
+ return Dest;
+}
+
+static GenericValue executeFCMP_UNO(GenericValue Src1, GenericValue Src2,
+ const Type *Ty) {
+ GenericValue Dest;
+ if (Ty == Type::FloatTy)
+ Dest.Int1Val = (Src1.FloatVal != Src1.FloatVal ||
+ Src2.FloatVal != Src2.FloatVal);
+ else
+ Dest.Int1Val = (Src1.DoubleVal != Src1.DoubleVal ||
+ Src2.DoubleVal != Src2.DoubleVal);
+ return Dest;
+}
+
void Interpreter::visitFCmpInst(FCmpInst &I) {
ExecutionContext &SF = ECStack.back();
const Type *Ty = I.getOperand(0)->getType();
@@ -672,22 +753,22 @@ void Interpreter::visitFCmpInst(FCmpInst &I) {
GenericValue R; // Result
switch (I.getPredicate()) {
- case FCmpInst::FCMP_FALSE: R.Int1Val = false;
- case FCmpInst::FCMP_ORD: R = executeFCMP_EQ(Src1, Src2, Ty); break; ///???
- case FCmpInst::FCMP_UNO: R = executeFCMP_NE(Src1, Src2, Ty); break; ///???
- case FCmpInst::FCMP_OEQ:
- case FCmpInst::FCMP_UEQ: R = executeFCMP_EQ(Src1, Src2, Ty); break;
- case FCmpInst::FCMP_ONE:
- case FCmpInst::FCMP_UNE: R = executeFCMP_NE(Src1, Src2, Ty); break;
- case FCmpInst::FCMP_OLT:
- case FCmpInst::FCMP_ULT: R = executeFCMP_LT(Src1, Src2, Ty); break;
- case FCmpInst::FCMP_OGT:
- case FCmpInst::FCMP_UGT: R = executeFCMP_GT(Src1, Src2, Ty); break;
- case FCmpInst::FCMP_OLE:
- case FCmpInst::FCMP_ULE: R = executeFCMP_LE(Src1, Src2, Ty); break;
- case FCmpInst::FCMP_OGE:
- case FCmpInst::FCMP_UGE: R = executeFCMP_GE(Src1, Src2, Ty); break;
- case FCmpInst::FCMP_TRUE: R.Int1Val = true;
+ case FCmpInst::FCMP_FALSE: R.Int1Val = false; break;
+ case FCmpInst::FCMP_TRUE: R.Int1Val = true; break;
+ case FCmpInst::FCMP_ORD: R = executeFCMP_ORD(Src1, Src2, Ty); break;
+ case FCmpInst::FCMP_UNO: R = executeFCMP_UNO(Src1, Src2, Ty); break;
+ case FCmpInst::FCMP_UEQ: R = executeFCMP_UEQ(Src1, Src2, Ty); break;
+ case FCmpInst::FCMP_OEQ: R = executeFCMP_OEQ(Src1, Src2, Ty); break;
+ case FCmpInst::FCMP_UNE: R = executeFCMP_UNE(Src1, Src2, Ty); break;
+ case FCmpInst::FCMP_ONE: R = executeFCMP_ONE(Src1, Src2, Ty); break;
+ case FCmpInst::FCMP_ULT: R = executeFCMP_ULT(Src1, Src2, Ty); break;
+ case FCmpInst::FCMP_OLT: R = executeFCMP_OLT(Src1, Src2, Ty); break;
+ case FCmpInst::FCMP_UGT: R = executeFCMP_UGT(Src1, Src2, Ty); break;
+ case FCmpInst::FCMP_OGT: R = executeFCMP_OGT(Src1, Src2, Ty); break;
+ case FCmpInst::FCMP_ULE: R = executeFCMP_ULE(Src1, Src2, Ty); break;
+ case FCmpInst::FCMP_OLE: R = executeFCMP_OLE(Src1, Src2, Ty); break;
+ case FCmpInst::FCMP_UGE: R = executeFCMP_UGE(Src1, Src2, Ty); break;
+ case FCmpInst::FCMP_OGE: R = executeFCMP_OGE(Src1, Src2, Ty); break;
default:
cerr << "Don't know how to handle this FCmp predicate!\n-->" << I;
abort();
@@ -710,20 +791,20 @@ static GenericValue executeCmpInst(unsigned predicate, GenericValue Src1,
case ICmpInst::ICMP_SGE: return executeICMP_SGE(Src1, Src2, Ty);
case ICmpInst::ICMP_ULE: return executeICMP_ULE(Src1, Src2, Ty);
case ICmpInst::ICMP_SLE: return executeICMP_SLE(Src1, Src2, Ty);
- case FCmpInst::FCMP_ORD: return executeFCMP_EQ(Src1, Src2, Ty); break;
- case FCmpInst::FCMP_UNO: return executeFCMP_NE(Src1, Src2, Ty); break;
- case FCmpInst::FCMP_OEQ:
- case FCmpInst::FCMP_UEQ: return executeFCMP_EQ(Src1, Src2, Ty); break;
- case FCmpInst::FCMP_ONE:
- case FCmpInst::FCMP_UNE: return executeFCMP_NE(Src1, Src2, Ty); break;
- case FCmpInst::FCMP_OLT:
- case FCmpInst::FCMP_ULT: return executeFCMP_LT(Src1, Src2, Ty); break;
- case FCmpInst::FCMP_OGT:
- case FCmpInst::FCMP_UGT: return executeFCMP_GT(Src1, Src2, Ty); break;
- case FCmpInst::FCMP_OLE:
- case FCmpInst::FCMP_ULE: return executeFCMP_LE(Src1, Src2, Ty); break;
- case FCmpInst::FCMP_OGE:
- case FCmpInst::FCMP_UGE: return executeFCMP_GE(Src1, Src2, Ty); break;
+ case FCmpInst::FCMP_ORD: return executeFCMP_ORD(Src1, Src2, Ty);
+ case FCmpInst::FCMP_UNO: return executeFCMP_UNO(Src1, Src2, Ty);
+ case FCmpInst::FCMP_OEQ: return executeFCMP_OEQ(Src1, Src2, Ty);
+ case FCmpInst::FCMP_UEQ: return executeFCMP_UEQ(Src1, Src2, Ty);
+ case FCmpInst::FCMP_ONE: return executeFCMP_ONE(Src1, Src2, Ty);
+ case FCmpInst::FCMP_UNE: return executeFCMP_UNE(Src1, Src2, Ty);
+ case FCmpInst::FCMP_OLT: return executeFCMP_OLT(Src1, Src2, Ty);
+ case FCmpInst::FCMP_ULT: return executeFCMP_ULT(Src1, Src2, Ty);
+ case FCmpInst::FCMP_OGT: return executeFCMP_OGT(Src1, Src2, Ty);
+ case FCmpInst::FCMP_UGT: return executeFCMP_UGT(Src1, Src2, Ty);
+ case FCmpInst::FCMP_OLE: return executeFCMP_OLE(Src1, Src2, Ty);
+ case FCmpInst::FCMP_ULE: return executeFCMP_ULE(Src1, Src2, Ty);
+ case FCmpInst::FCMP_OGE: return executeFCMP_OGE(Src1, Src2, Ty);
+ case FCmpInst::FCMP_UGE: return executeFCMP_UGE(Src1, Src2, Ty);
case FCmpInst::FCMP_FALSE: {
GenericValue Result;
Result.Int1Val = false;
@@ -989,14 +1070,19 @@ GenericValue Interpreter::executeGEPOperation(Value *Ptr, gep_type_iterator I,
// Get the index number for the array... which must be long type...
GenericValue IdxGV = getOperandValue(I.getOperand(), SF);
- uint64_t Idx;
- switch (I.getOperand()->getType()->getTypeID()) {
- default: assert(0 && "Illegal getelementptr index for sequential type!");
- case Type::Int8TyID: Idx = IdxGV.Int8Val; break;
- case Type::Int16TyID: Idx = IdxGV.Int16Val; break;
- case Type::Int32TyID: Idx = IdxGV.Int32Val; break;
- case Type::Int64TyID: Idx = IdxGV.Int64Val; break;
- }
+ int64_t Idx;
+ unsigned BitWidth =
+ cast<IntegerType>(I.getOperand()->getType())->getBitWidth();
+ if (BitWidth <= 8)
+ Idx = (int64_t)(int8_t)IdxGV.Int8Val;
+ else if (BitWidth <= 16)
+ Idx = (int64_t)(int16_t)IdxGV.Int16Val;
+ else if (BitWidth <= 32)
+ Idx = (int64_t)(int32_t)IdxGV.Int32Val;
+ else if (BitWidth <= 64)
+ Idx = (int64_t)IdxGV.Int64Val;
+ else
+ assert(0 && "Integer types >64 bits not supported");
Total += PointerTy(TD.getTypeSize(ST->getElementType())*Idx);
}
}
@@ -1084,15 +1170,13 @@ void Interpreter::visitCallSite(CallSite CS) {
// this by zero or sign extending the value as appropriate according to the
// source type.
const Type *Ty = V->getType();
- if (Ty->isIntegral() && Ty->getPrimitiveSize() < 4) {
- if (Ty == Type::Int16Ty)
- ArgVals.back().Int32Val = ArgVals.back().Int16Val;
- else if (Ty == Type::Int8Ty)
- ArgVals.back().Int32Val = ArgVals.back().Int8Val;
- else if (Ty == Type::Int1Ty)
+ if (Ty->isIntegral()) {
+ if (Ty->getPrimitiveSizeInBits() == 1)
ArgVals.back().Int32Val = ArgVals.back().Int1Val;
- else
- assert(0 && "Unknown type!");
+ else if (Ty->getPrimitiveSizeInBits() <= 8)
+ ArgVals.back().Int32Val = ArgVals.back().Int8Val;
+ else if (Ty->getPrimitiveSizeInBits() <= 16)
+ ArgVals.back().Int32Val = ArgVals.back().Int16Val;
}
}
@@ -1102,23 +1186,26 @@ void Interpreter::visitCallSite(CallSite CS) {
callFunction((Function*)GVTOP(SRC), ArgVals);
}
-#define IMPLEMENT_SHIFT(OP, TY) \
- case Type::TY##TyID: Dest.TY##Val = Src1.TY##Val OP Src2.Int8Val; break
-
-#define IMPLEMENT_SIGNLESS_SHIFT(OP, TY, CAST) \
- case Type::TY##TyID: Dest.TY##Val = ((CAST)Src1.TY##Val) OP Src2.Int8Val; \
- break
-
static GenericValue executeShlInst(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
- switch (Ty->getTypeID()) {
- IMPLEMENT_SHIFT(<<, Int8);
- IMPLEMENT_SHIFT(<<, Int16);
- IMPLEMENT_SHIFT(<<, Int32);
- IMPLEMENT_SHIFT(<<, Int64);
- default:
+ if (const IntegerType *ITy = cast<IntegerType>(Ty)) {
+ unsigned BitWidth = ITy->getBitWidth();
+ if (BitWidth <= 8)
+ Dest.Int8Val = ((uint8_t)Src1.Int8Val) << ((uint32_t)Src2.Int8Val);
+ else if (BitWidth <= 16)
+ Dest.Int16Val = ((uint16_t)Src1.Int16Val) << ((uint32_t)Src2.Int8Val);
+ else if (BitWidth <= 32)
+ Dest.Int32Val = ((uint32_t)Src1.Int32Val) << ((uint32_t)Src2.Int8Val);
+ else if (BitWidth <= 64)
+ Dest.Int64Val = ((uint64_t)Src1.Int64Val) << ((uint32_t)Src2.Int8Val);
+ else {
+ cerr << "Integer types > 64 bits not supported: " << *Ty << "\n";
+ abort();
+ }
+ } else {
cerr << "Unhandled type for Shl instruction: " << *Ty << "\n";
+ abort();
}
return Dest;
}
@@ -1126,12 +1213,21 @@ static GenericValue executeShlInst(GenericValue Src1, GenericValue Src2,
static GenericValue executeLShrInst(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
- switch (Ty->getTypeID()) {
- IMPLEMENT_SIGNLESS_SHIFT(>>, Int8, uint8_t);
- IMPLEMENT_SIGNLESS_SHIFT(>>, Int16, uint16_t);
- IMPLEMENT_SIGNLESS_SHIFT(>>, Int32, uint32_t);
- IMPLEMENT_SIGNLESS_SHIFT(>>, Int64, uint64_t);
- default:
+ if (const IntegerType *ITy = cast<IntegerType>(Ty)) {
+ unsigned BitWidth = ITy->getBitWidth();
+ if (BitWidth <= 8)
+ Dest.Int8Val = ((uint8_t)Src1.Int8Val) >> ((uint32_t)Src2.Int8Val);
+ else if (BitWidth <= 16)
+ Dest.Int16Val = ((uint16_t)Src1.Int16Val) >> ((uint32_t)Src2.Int8Val);
+ else if (BitWidth <= 32)
+ Dest.Int32Val = ((uint32_t)Src1.Int32Val) >> ((uint32_t)Src2.Int8Val);
+ else if (BitWidth <= 64)
+ Dest.Int64Val = ((uint64_t)Src1.Int64Val) >> ((uint32_t)Src2.Int8Val);
+ else {
+ cerr << "Integer types > 64 bits not supported: " << *Ty << "\n";
+ abort();
+ }
+ } else {
cerr << "Unhandled type for LShr instruction: " << *Ty << "\n";
abort();
}
@@ -1141,12 +1237,21 @@ static GenericValue executeLShrInst(GenericValue Src1, GenericValue Src2,
static GenericValue executeAShrInst(GenericValue Src1, GenericValue Src2,
const Type *Ty) {
GenericValue Dest;
- switch (Ty->getTypeID()) {
- IMPLEMENT_SIGNLESS_SHIFT(>>, Int8, int8_t);
- IMPLEMENT_SIGNLESS_SHIFT(>>, Int16, int16_t);
- IMPLEMENT_SIGNLESS_SHIFT(>>, Int32, int32_t);
- IMPLEMENT_SIGNLESS_SHIFT(>>, Int64, int64_t);
- default:
+ if (const IntegerType *ITy = cast<IntegerType>(Ty)) {
+ unsigned BitWidth = ITy->getBitWidth();
+ if (BitWidth <= 8)
+ Dest.Int8Val = ((int8_t)Src1.Int8Val) >> ((int32_t)Src2.Int8Val);
+ else if (BitWidth <= 16)
+ Dest.Int16Val = ((int16_t)Src1.Int16Val) >> ((int32_t)Src2.Int8Val);
+ else if (BitWidth <= 32)
+ Dest.Int32Val = ((int32_t)Src1.Int32Val) >> ((int32_t)Src2.Int8Val);
+ else if (BitWidth <= 64)
+ Dest.Int64Val = ((int64_t)Src1.Int64Val) >> ((int32_t)Src2.Int8Val);
+ else {
+ cerr << "Integer types > 64 bits not supported: " << *Ty << "\n"; \
+ abort();
+ }
+ } else {
cerr << "Unhandled type for AShr instruction: " << *Ty << "\n";
abort();
}
@@ -1183,165 +1288,357 @@ void Interpreter::visitAShr(ShiftInst &I) {
SetValue(&I, Dest, SF);
}
-#define IMPLEMENT_CAST_START \
- switch (DstTy->getTypeID()) {
-
-#define IMPLEMENT_CAST(STY, DTY, CAST) \
- case Type::STY##TyID: Dest.DTY##Val = (CAST(Src.STY##Val)); break;
-
-#define IMPLEMENT_CAST_CASE(DTY, CAST) \
- case Type::DTY##TyID: \
- switch (SrcTy->getTypeID()) { \
- IMPLEMENT_CAST(Int1, DTY, CAST); \
- IMPLEMENT_CAST(Int8, DTY, CAST); \
- IMPLEMENT_CAST(Int16, DTY, CAST); \
- IMPLEMENT_CAST(Int32, DTY, CAST); \
- IMPLEMENT_CAST(Int64, DTY, CAST); \
- IMPLEMENT_CAST(Pointer,DTY, CAST); \
- IMPLEMENT_CAST(Float, DTY, CAST); \
- IMPLEMENT_CAST(Double, DTY, CAST); \
- default: \
- cerr << "Unhandled cast: " \
- << *SrcTy << " to " << *DstTy << "\n"; \
- abort(); \
- } \
- break
-
-#define IMPLEMENT_CAST_END \
- default: cerr \
- << "Unhandled dest type for cast instruction: " \
- << *DstTy << "\n"; \
- abort(); \
- }
+#define INTEGER_ASSIGN(DEST, BITWIDTH, VAL) \
+ if (BITWIDTH == 1) { \
+ Dest.Int1Val = (bool) VAL; \
+ } else if (BITWIDTH <= 8) { \
+ Dest.Int8Val = (uint8_t) VAL; \
+ } else if (BITWIDTH <= 16) { \
+ Dest.Int16Val = (uint16_t) VAL; \
+ } else if (BITWIDTH <= 32) { \
+ Dest.Int32Val = (uint32_t) VAL; \
+ } else \
+ Dest.Int64Val = (uint64_t) VAL;
+
+GenericValue Interpreter::executeTruncInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF) {
+ const Type *SrcTy = SrcVal->getType();
+ GenericValue Dest, Src = getOperandValue(SrcVal, SF);
+ const IntegerType *DITy = cast<IntegerType>(DstTy);
+ const IntegerType *SITy = cast<IntegerType>(SrcTy);
+ unsigned DBitWidth = DITy->getBitWidth();
+ unsigned SBitWidth = SITy->getBitWidth();
+ assert(SBitWidth <= 64 && DBitWidth <= 64 &&
+ "Integer types > 64 bits not supported");
+ assert(SBitWidth > DBitWidth && "Invalid truncate");
+
+ // Mask the source value to its actual bit width. This ensures that any
+ // high order bits are cleared.
+ uint64_t Mask = (1ULL << DBitWidth) - 1;
+ uint64_t MaskedVal = 0;
+ if (SBitWidth <= 8)
+ MaskedVal = Src.Int8Val & Mask;
+ else if (SBitWidth <= 16)
+ MaskedVal = Src.Int16Val & Mask;
+ else if (SBitWidth <= 32)
+ MaskedVal = Src.Int32Val & Mask;
+ else
+ MaskedVal = Src.Int64Val & Mask;
+
+ INTEGER_ASSIGN(Dest, DBitWidth, MaskedVal);
+ return Dest;
+}
-GenericValue Interpreter::executeCastOperation(Instruction::CastOps opcode,
- Value *SrcVal, const Type *DstTy,
- ExecutionContext &SF) {
+GenericValue Interpreter::executeSExtInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF) {
const Type *SrcTy = SrcVal->getType();
GenericValue Dest, Src = getOperandValue(SrcVal, SF);
+ const IntegerType *DITy = cast<IntegerType>(DstTy);
+ const IntegerType *SITy = cast<IntegerType>(SrcTy);
+ unsigned DBitWidth = DITy->getBitWidth();
+ unsigned SBitWidth = SITy->getBitWidth();
+ assert(SBitWidth <= 64 && DBitWidth <= 64 &&
+ "Integer types > 64 bits not supported");
+ assert(SBitWidth < DBitWidth && "Invalid sign extend");
+ int64_t Extended = 0;
+ if (SBitWidth == 1)
+ // For sign extension from bool, we must extend the source bits.
+ Extended = 0 - (Src.Int1Val & 1);
+ else if (SBitWidth <= 8)
+ Extended = (int64_t) (int8_t)Src.Int8Val;
+ else if (SBitWidth <= 16)
+ Extended = (int64_t) (int16_t)Src.Int16Val;
+ else if (SBitWidth <= 32)
+ Extended = (int64_t) (int32_t)Src.Int32Val;
+ else
+ Extended = (int64_t) Src.Int64Val;
+
+ // Now that we have a sign extended value, assign it to the destination
+ INTEGER_ASSIGN(Dest, DBitWidth, Extended);
+ return Dest;
+}
- if (opcode == Instruction::Trunc && DstTy->getTypeID() == Type::Int1TyID) {
- // For truncations to bool, we must clear the high order bits of the source
- switch (SrcTy->getTypeID()) {
- case Type::Int1TyID: Src.Int1Val &= 1; break;
- case Type::Int8TyID: Src.Int8Val &= 1; break;
- case Type::Int16TyID: Src.Int16Val &= 1; break;
- case Type::Int32TyID: Src.Int32Val &= 1; break;
- case Type::Int64TyID: Src.Int64Val &= 1; break;
- default:
- assert(0 && "Can't trunc a non-integer!");
- break;
- }
- } else if (opcode == Instruction::SExt &&
- SrcTy->getTypeID() == Type::Int1TyID) {
+GenericValue Interpreter::executeZExtInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF) {
+ const Type *SrcTy = SrcVal->getType();
+ GenericValue Dest, Src = getOperandValue(SrcVal, SF);
+ const IntegerType *DITy = cast<IntegerType>(DstTy);
+ const IntegerType *SITy = cast<IntegerType>(SrcTy);
+ unsigned DBitWidth = DITy->getBitWidth();
+ unsigned SBitWidth = SITy->getBitWidth();
+ assert(SBitWidth <= 64 && DBitWidth <= 64 &&
+ "Integer types > 64 bits not supported");
+ assert(SBitWidth < DBitWidth && "Invalid sign extend");
+ uint64_t Extended = 0;
+ if (SBitWidth == 1)
// For sign extension from bool, we must extend the source bits.
- SrcTy = Type::Int64Ty;
- Src.Int64Val = 0 - Src.Int1Val;
- }
+ Extended = (uint64_t) (Src.Int1Val & 1);
+ else if (SBitWidth <= 8)
+ Extended = (uint64_t) (uint8_t)Src.Int8Val;
+ else if (SBitWidth <= 16)
+ Extended = (uint64_t) (uint16_t)Src.Int16Val;
+ else if (SBitWidth <= 32)
+ Extended = (uint64_t) (uint32_t)Src.Int32Val;
+ else
+ Extended = (uint64_t) Src.Int64Val;
+
+ // Now that we have a sign extended value, assign it to the destination
+ INTEGER_ASSIGN(Dest, DBitWidth, Extended);
+ return Dest;
+}
- switch (opcode) {
- case Instruction::Trunc: // src integer, dest integral (can't be long)
- IMPLEMENT_CAST_START
- IMPLEMENT_CAST_CASE(Int1 , (bool));
- IMPLEMENT_CAST_CASE(Int8 , (uint8_t));
- IMPLEMENT_CAST_CASE(Int16, (uint16_t));
- IMPLEMENT_CAST_CASE(Int32, (uint32_t));
- IMPLEMENT_CAST_CASE(Int64, (uint64_t));
- IMPLEMENT_CAST_END
- break;
- case Instruction::ZExt: // src integral (can't be long), dest integer
- IMPLEMENT_CAST_START
- IMPLEMENT_CAST_CASE(Int8 , (uint8_t));
- IMPLEMENT_CAST_CASE(Int16, (uint16_t));
- IMPLEMENT_CAST_CASE(Int32, (uint32_t));
- IMPLEMENT_CAST_CASE(Int64, (uint64_t));
- IMPLEMENT_CAST_END
- break;
- case Instruction::SExt: // src integral (can't be long), dest integer
- IMPLEMENT_CAST_START
- IMPLEMENT_CAST_CASE(Int8 , (uint8_t)(int8_t));
- IMPLEMENT_CAST_CASE(Int16, (uint16_t)(int16_t));
- IMPLEMENT_CAST_CASE(Int32, (uint32_t)(int32_t));
- IMPLEMENT_CAST_CASE(Int64, (uint64_t)(int64_t));
- IMPLEMENT_CAST_END
- break;
- case Instruction::FPTrunc: // src double, dest float
- IMPLEMENT_CAST_START
- IMPLEMENT_CAST_CASE(Float , (float));
- IMPLEMENT_CAST_END
- break;
- case Instruction::FPExt: // src float, dest double
- IMPLEMENT_CAST_START
- IMPLEMENT_CAST_CASE(Double , (double));
- IMPLEMENT_CAST_END
- break;
- case Instruction::UIToFP: // src integral, dest floating
- IMPLEMENT_CAST_START
- IMPLEMENT_CAST_CASE(Float , (float)(uint64_t));
- IMPLEMENT_CAST_CASE(Double , (double)(uint64_t));
- IMPLEMENT_CAST_END
- break;
- case Instruction::SIToFP: // src integeral, dest floating
- IMPLEMENT_CAST_START
- IMPLEMENT_CAST_CASE(Float , (float)(int64_t));
- IMPLEMENT_CAST_CASE(Double , (double)(int64_t));
- IMPLEMENT_CAST_END
- break;
- case Instruction::FPToUI: // src floating, dest integral
- IMPLEMENT_CAST_START
- IMPLEMENT_CAST_CASE(Int1 , (bool));
- IMPLEMENT_CAST_CASE(Int8 , (uint8_t));
- IMPLEMENT_CAST_CASE(Int16, (uint16_t));
- IMPLEMENT_CAST_CASE(Int32, (uint32_t ));
- IMPLEMENT_CAST_CASE(Int64, (uint64_t));
- IMPLEMENT_CAST_END
- break;
- case Instruction::FPToSI: // src floating, dest integral
- IMPLEMENT_CAST_START
- IMPLEMENT_CAST_CASE(Int1 , (bool));
- IMPLEMENT_CAST_CASE(Int8 , (uint8_t) (int8_t));
- IMPLEMENT_CAST_CASE(Int16, (uint16_t)(int16_t));
- IMPLEMENT_CAST_CASE(Int32, (uint32_t)(int32_t));
- IMPLEMENT_CAST_CASE(Int64, (uint64_t)(int64_t));
- IMPLEMENT_CAST_END
- break;
- case Instruction::PtrToInt: // src pointer, dest integral
- IMPLEMENT_CAST_START
- IMPLEMENT_CAST_CASE(Int1 , (bool));
- IMPLEMENT_CAST_CASE(Int8 , (uint8_t));
- IMPLEMENT_CAST_CASE(Int16, (uint16_t));
- IMPLEMENT_CAST_CASE(Int32, (uint32_t));
- IMPLEMENT_CAST_CASE(Int64, (uint64_t));
- IMPLEMENT_CAST_END
- break;
- case Instruction::IntToPtr: // src integral, dest pointer
- IMPLEMENT_CAST_START
- IMPLEMENT_CAST_CASE(Pointer, (PointerTy));
- IMPLEMENT_CAST_END
- break;
- case Instruction::BitCast: // src any, dest any (same size)
- IMPLEMENT_CAST_START
- IMPLEMENT_CAST_CASE(Int1 , (bool));
- IMPLEMENT_CAST_CASE(Int8 , (uint8_t));
- IMPLEMENT_CAST_CASE(Int16 , (uint16_t));
- IMPLEMENT_CAST_CASE(Int32 , (uint32_t));
- IMPLEMENT_CAST_CASE(Int64 , (uint64_t));
- IMPLEMENT_CAST_CASE(Pointer, (PointerTy));
- IMPLEMENT_CAST_CASE(Float , (float));
- IMPLEMENT_CAST_CASE(Double , (double));
- IMPLEMENT_CAST_END
- break;
- default:
- cerr << "Invalid cast opcode for cast instruction: " << opcode << "\n";
- abort();
- }
+GenericValue Interpreter::executeFPTruncInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF) {
+ const Type *SrcTy = SrcVal->getType();
+ GenericValue Dest, Src = getOperandValue(SrcVal, SF);
+ assert(SrcTy == Type::DoubleTy && DstTy == Type::FloatTy &&
+ "Invalid FPTrunc instruction");
+ Dest.FloatVal = (float) Src.DoubleVal;
+ return Dest;
+}
+
+GenericValue Interpreter::executeFPExtInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF) {
+ const Type *SrcTy = SrcVal->getType();
+ GenericValue Dest, Src = getOperandValue(SrcVal, SF);
+ assert(SrcTy == Type::FloatTy && DstTy == Type::DoubleTy &&
+ "Invalid FPTrunc instruction");
+ Dest.DoubleVal = (double) Src.FloatVal;
+ return Dest;
+}
+
+GenericValue Interpreter::executeFPToUIInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF) {
+ const Type *SrcTy = SrcVal->getType();
+ GenericValue Dest, Src = getOperandValue(SrcVal, SF);
+ const IntegerType *DITy = cast<IntegerType>(DstTy);
+ unsigned DBitWidth = DITy->getBitWidth();
+ assert(DBitWidth <= 64 && "Integer types > 64 bits not supported");
+ assert(SrcTy->isFloatingPoint() && "Invalid FPToUI instruction");
+ uint64_t Converted = 0;
+ if (SrcTy->getTypeID() == Type::FloatTyID)
+ Converted = (uint64_t) Src.FloatVal;
+ else
+ Converted = (uint64_t) Src.DoubleVal;
+
+ INTEGER_ASSIGN(Dest, DBitWidth, Converted);
+ return Dest;
+}
+
+GenericValue Interpreter::executeFPToSIInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF) {
+ const Type *SrcTy = SrcVal->getType();
+ GenericValue Dest, Src = getOperandValue(SrcVal, SF);
+ const IntegerType *DITy = cast<IntegerType>(DstTy);
+ unsigned DBitWidth = DITy->getBitWidth();
+ assert(DBitWidth <= 64 && "Integer types > 64 bits not supported");
+ assert(SrcTy->isFloatingPoint() && "Invalid FPToSI instruction");
+ int64_t Converted = 0;
+ if (SrcTy->getTypeID() == Type::FloatTyID)
+ Converted = (int64_t) Src.FloatVal;
+ else
+ Converted = (int64_t) Src.DoubleVal;
+
+ INTEGER_ASSIGN(Dest, DBitWidth, Converted);
+ return Dest;
+}
+
+GenericValue Interpreter::executeUIToFPInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF) {
+ const Type *SrcTy = SrcVal->getType();
+ GenericValue Dest, Src = getOperandValue(SrcVal, SF);
+ const IntegerType *SITy = cast<IntegerType>(SrcTy);
+ unsigned SBitWidth = SITy->getBitWidth();
+ assert(SBitWidth <= 64 && "Integer types > 64 bits not supported");
+ assert(DstTy->isFloatingPoint() && "Invalid UIToFP instruction");
+ uint64_t Converted = 0;
+ if (SBitWidth == 1)
+ Converted = (uint64_t) Src.Int1Val;
+ else if (SBitWidth <= 8)
+ Converted = (uint64_t) Src.Int8Val;
+ else if (SBitWidth <= 16)
+ Converted = (uint64_t) Src.Int16Val;
+ else if (SBitWidth <= 32)
+ Converted = (uint64_t) Src.Int32Val;
+ else
+ Converted = (uint64_t) Src.Int64Val;
+
+ if (DstTy->getTypeID() == Type::FloatTyID)
+ Dest.FloatVal = (float) Converted;
+ else
+ Dest.DoubleVal = (double) Converted;
+ return Dest;
+}
+
+GenericValue Interpreter::executeSIToFPInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF) {
+ const Type *SrcTy = SrcVal->getType();
+ GenericValue Dest, Src = getOperandValue(SrcVal, SF);
+ const IntegerType *SITy = cast<IntegerType>(SrcTy);
+ unsigned SBitWidth = SITy->getBitWidth();
+ assert(SBitWidth <= 64 && "Integer types > 64 bits not supported");
+ assert(DstTy->isFloatingPoint() && "Invalid UIToFP instruction");
+ int64_t Converted = 0;
+ if (SBitWidth == 1)
+ Converted = 0LL - Src.Int1Val;
+ else if (SBitWidth <= 8)
+ Converted = (int64_t) (int8_t)Src.Int8Val;
+ else if (SBitWidth <= 16)
+ Converted = (int64_t) (int16_t)Src.Int16Val;
+ else if (SBitWidth <= 32)
+ Converted = (int64_t) (int32_t)Src.Int32Val;
+ else
+ Converted = (int64_t) Src.Int64Val;
+
+ if (DstTy->getTypeID() == Type::FloatTyID)
+ Dest.FloatVal = (float) Converted;
+ else
+ Dest.DoubleVal = (double) Converted;
+ return Dest;
+}
+
+GenericValue Interpreter::executePtrToIntInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF) {
+ const Type *SrcTy = SrcVal->getType();
+ GenericValue Dest, Src = getOperandValue(SrcVal, SF);
+ const IntegerType *DITy = cast<IntegerType>(DstTy);
+ unsigned DBitWidth = DITy->getBitWidth();
+ assert(DBitWidth <= 64 && "Integer types > 64 bits not supported");
+ assert(isa<PointerType>(SrcTy) && "Invalid PtrToInt instruction");
+ INTEGER_ASSIGN(Dest, DBitWidth, (intptr_t) Src.PointerVal);
return Dest;
}
-void Interpreter::visitCastInst(CastInst &I) {
+GenericValue Interpreter::executeIntToPtrInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF) {
+ const Type *SrcTy = SrcVal->getType();
+ GenericValue Dest, Src = getOperandValue(SrcVal, SF);
+ const IntegerType *SITy = cast<IntegerType>(SrcTy);
+ unsigned SBitWidth = SITy->getBitWidth();
+ assert(SBitWidth <= 64 && "Integer types > 64 bits not supported");
+ assert(isa<PointerType>(DstTy) && "Invalid PtrToInt instruction");
+ uint64_t Converted = 0;
+ if (SBitWidth == 1)
+ Converted = (uint64_t) Src.Int1Val;
+ else if (SBitWidth <= 8)
+ Converted = (uint64_t) Src.Int8Val;
+ else if (SBitWidth <= 16)
+ Converted = (uint64_t) Src.Int16Val;
+ else if (SBitWidth <= 32)
+ Converted = (uint64_t) Src.Int32Val;
+ else
+ Converted = (uint64_t) Src.Int64Val;
+
+ Dest.PointerVal = (PointerTy) Converted;
+ return Dest;
+}
+
+GenericValue Interpreter::executeBitCastInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF) {
+
+ const Type *SrcTy = SrcVal->getType();
+ GenericValue Dest, Src = getOperandValue(SrcVal, SF);
+ if (isa<PointerType>(DstTy)) {
+ assert(isa<PointerType>(SrcTy) && "Invalid BitCast");
+ Dest.PointerVal = Src.PointerVal;
+ } else if (DstTy->isInteger()) {
+ const IntegerType *DITy = cast<IntegerType>(DstTy);
+ unsigned DBitWidth = DITy->getBitWidth();
+ if (SrcTy == Type::FloatTy) {
+ Dest.Int32Val = FloatToBits(Src.FloatVal);
+ } else if (SrcTy == Type::DoubleTy) {
+ Dest.Int64Val = DoubleToBits(Src.DoubleVal);
+ } else if (SrcTy->isInteger()) {
+ const IntegerType *SITy = cast<IntegerType>(SrcTy);
+ unsigned SBitWidth = SITy->getBitWidth();
+ assert(SBitWidth <= 64 && "Integer types > 64 bits not supported");
+ assert(SBitWidth == DBitWidth && "Invalid BitCast");
+ if (SBitWidth == 1)
+ Dest.Int1Val = Src.Int1Val;
+ else if (SBitWidth <= 8)
+ Dest.Int8Val = Src.Int8Val;
+ else if (SBitWidth <= 16)
+ Dest.Int16Val = Src.Int16Val;
+ else if (SBitWidth <= 32)
+ Dest.Int32Val = Src.Int32Val;
+ else
+ Dest.Int64Val = Src.Int64Val;
+ } else
+ assert(0 && "Invalid BitCast");
+ } else if (DstTy == Type::FloatTy) {
+ if (SrcTy->isInteger())
+ Dest.FloatVal = BitsToFloat(Src.Int32Val);
+ else
+ Dest.FloatVal = Src.FloatVal;
+ } else if (DstTy == Type::DoubleTy) {
+ if (SrcTy->isInteger())
+ Dest.DoubleVal = BitsToDouble(Src.Int64Val);
+ else
+ Dest.DoubleVal = Src.DoubleVal;
+ } else
+ assert(0 && "Invalid Bitcast");
+
+ return Dest;
+}
+
+void Interpreter::visitTruncInst(TruncInst &I) {
+ ExecutionContext &SF = ECStack.back();
+ SetValue(&I, executeTruncInst(I.getOperand(0), I.getType(), SF), SF);
+}
+
+void Interpreter::visitSExtInst(SExtInst &I) {
+ ExecutionContext &SF = ECStack.back();
+ SetValue(&I, executeSExtInst(I.getOperand(0), I.getType(), SF), SF);
+}
+
+void Interpreter::visitZExtInst(ZExtInst &I) {
+ ExecutionContext &SF = ECStack.back();
+ SetValue(&I, executeZExtInst(I.getOperand(0), I.getType(), SF), SF);
+}
+
+void Interpreter::visitFPTruncInst(FPTruncInst &I) {
+ ExecutionContext &SF = ECStack.back();
+ SetValue(&I, executeFPTruncInst(I.getOperand(0), I.getType(), SF), SF);
+}
+
+void Interpreter::visitFPExtInst(FPExtInst &I) {
ExecutionContext &SF = ECStack.back();
- SetValue(&I, executeCastOperation(I.getOpcode(), I.getOperand(0),
- I.getType(), SF), SF);
+ SetValue(&I, executeFPExtInst(I.getOperand(0), I.getType(), SF), SF);
+}
+
+void Interpreter::visitUIToFPInst(UIToFPInst &I) {
+ ExecutionContext &SF = ECStack.back();
+ SetValue(&I, executeUIToFPInst(I.getOperand(0), I.getType(), SF), SF);
+}
+
+void Interpreter::visitSIToFPInst(SIToFPInst &I) {
+ ExecutionContext &SF = ECStack.back();
+ SetValue(&I, executeSIToFPInst(I.getOperand(0), I.getType(), SF), SF);
+}
+
+void Interpreter::visitFPToUIInst(FPToUIInst &I) {
+ ExecutionContext &SF = ECStack.back();
+ SetValue(&I, executeFPToUIInst(I.getOperand(0), I.getType(), SF), SF);
+}
+
+void Interpreter::visitFPToSIInst(FPToSIInst &I) {
+ ExecutionContext &SF = ECStack.back();
+ SetValue(&I, executeFPToSIInst(I.getOperand(0), I.getType(), SF), SF);
+}
+
+void Interpreter::visitPtrToIntInst(PtrToIntInst &I) {
+ ExecutionContext &SF = ECStack.back();
+ SetValue(&I, executePtrToIntInst(I.getOperand(0), I.getType(), SF), SF);
+}
+
+void Interpreter::visitIntToPtrInst(IntToPtrInst &I) {
+ ExecutionContext &SF = ECStack.back();
+ SetValue(&I, executeIntToPtrInst(I.getOperand(0), I.getType(), SF), SF);
+}
+
+void Interpreter::visitBitCastInst(BitCastInst &I) {
+ ExecutionContext &SF = ECStack.back();
+ SetValue(&I, executeBitCastInst(I.getOperand(0), I.getType(), SF), SF);
}
#define IMPLEMENT_VAARG(TY) \
@@ -1358,14 +1655,24 @@ void Interpreter::visitVAArgInst(VAArgInst &I) {
.VarArgs[VAList.UIntPairVal.second];
const Type *Ty = I.getType();
switch (Ty->getTypeID()) {
- IMPLEMENT_VAARG(Int8);
- IMPLEMENT_VAARG(Int16);
- IMPLEMENT_VAARG(Int32);
- IMPLEMENT_VAARG(Int64);
+ case Type::IntegerTyID: {
+ unsigned BitWidth = cast<IntegerType>(Ty)->getBitWidth();
+ if (BitWidth == 1)
+ Dest.Int1Val = Src.Int1Val;
+ else if (BitWidth <= 8)
+ Dest.Int8Val = Src.Int8Val;
+ else if (BitWidth <= 16)
+ Dest.Int16Val = Src.Int16Val;
+ else if (BitWidth <= 32)
+ Dest.Int32Val = Src.Int32Val;
+ else if (BitWidth <= 64)
+ Dest.Int64Val = Src.Int64Val;
+ else
+ assert("Integer types > 64 bits not supported");
+ }
IMPLEMENT_VAARG(Pointer);
IMPLEMENT_VAARG(Float);
IMPLEMENT_VAARG(Double);
- IMPLEMENT_VAARG(Int1);
default:
cerr << "Unhandled dest type for vaarg instruction: " << *Ty << "\n";
abort();
diff --git a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp
index 52d3cfa684..b1c2ee4b6a 100644
--- a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp
+++ b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp
@@ -41,11 +41,15 @@ static Interpreter *TheInterpreter;
static char getTypeID(const Type *Ty) {
switch (Ty->getTypeID()) {
case Type::VoidTyID: return 'V';
- case Type::Int1TyID: return 'o';
- case Type::Int8TyID: return 'B';
- case Type::Int16TyID: return 'S';
- case Type::Int32TyID: return 'I';
- case Type::Int64TyID: return 'L';
+ case Type::IntegerTyID:
+ switch (cast<IntegerType>(Ty)->getBitWidth()) {
+ case 1: return 'o';
+ case 8: return 'B';
+ case 16: return 'S';
+ case 32: return 'I';
+ case 64: return 'L';
+ default: return 'N';
+ }
case Type::FloatTyID: return 'F';
case Type::DoubleTyID: return 'D';
case Type::PointerTyID: return 'P';
diff --git a/lib/ExecutionEngine/Interpreter/Interpreter.h b/lib/ExecutionEngine/Interpreter/Interpreter.h
index 559c7dc505..c62249bdb9 100644
--- a/lib/ExecutionEngine/Interpreter/Interpreter.h
+++ b/lib/ExecutionEngine/Interpreter/Interpreter.h
@@ -144,7 +144,18 @@ public:
void visitStoreInst(StoreInst &I);
void visitGetElementPtrInst(GetElementPtrInst &I);
void visitPHINode(PHINode &PN) { assert(0 && "PHI nodes already handled!"); }
- void visitCastInst(CastInst &I);
+ void visitTruncInst(TruncInst &I);
+ void visitZExtInst(ZExtInst &I);
+ void visitSExtInst(SExtInst &I);
+ void visitFPTruncInst(FPTruncInst &I);
+ void visitFPExtInst(FPExtInst &I);
+ void visitUIToFPInst(UIToFPInst &I);
+ void visitSIToFPInst(SIToFPInst &I);
+ void visitFPToUIInst(FPToUIInst &I);
+ void visitFPToSIInst(FPToSIInst &I);
+ void visitPtrToIntInst(PtrToIntInst &I);
+ void visitIntToPtrInst(IntToPtrInst &I);
+ void visitBitCastInst(BitCastInst &I);
void visitSelectInst(SelectInst &I);
@@ -193,6 +204,30 @@ private: // Helper functions
void initializeExternalFunctions();
GenericValue getConstantExprValue(ConstantExpr *CE, ExecutionContext &SF);
GenericValue getOperandValue(Value *V, ExecutionContext &SF);
+ GenericValue executeTruncInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF);
+ GenericValue executeSExtInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF);
+ GenericValue executeZExtInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF);
+ GenericValue executeFPTruncInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF);
+ GenericValue executeFPExtInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF);
+ GenericValue executeFPToUIInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF);
+ GenericValue executeFPToSIInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF);
+ GenericValue executeUIToFPInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF);
+ GenericValue executeSIToFPInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF);
+ GenericValue executePtrToIntInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF);
+ GenericValue executeIntToPtrInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF);
+ GenericValue executeBitCastInst(Value *SrcVal, const Type *DstTy,
+ ExecutionContext &SF);
GenericValue executeCastOperation(Instruction::CastOps opcode, Value *SrcVal,
const Type *Ty, ExecutionContext &SF);
void popStackAndReturnValueToCaller(const Type *RetTy, GenericValue Result);
diff --git a/lib/ExecutionEngine/JIT/JIT.cpp b/lib/ExecutionEngine/JIT/JIT.cpp
index 13ee7199d9..7fd62cc6e0 100644
--- a/lib/ExecutionEngine/JIT/JIT.cpp
+++ b/lib/ExecutionEngine/JIT/JIT.cpp
@@ -142,22 +142,25 @@ GenericValue JIT::runFunction(Function *F,
GenericValue rv;
switch (RetTy->getTypeID()) {
default: assert(0 && "Unknown return type for function call!");
- case Type::Int1TyID:
- rv.Int1Val = ((bool(*)())(intptr_t)FPtr)();
- return rv;
- case Type::Int8TyID:
- rv.Int8Val = ((char(*)())(intptr_t)FPtr)();
- return rv;
- case Type::Int16TyID:
- rv.Int16Val = ((short(*)())(intptr_t)FPtr)();
+ case Type::IntegerTyID: {
+ unsigned BitWidth = cast<IntegerType>(RetTy)->getBitWidth();
+ if (BitWidth == 1)
+ rv.Int1Val = ((bool(*)())(intptr_t)FPtr)();
+ else if (BitWidth <= 8)
+ rv.Int8Val = ((char(*)())(intptr_t)FPtr)();
+ else if (BitWidth <= 16)
+ rv.Int16Val = ((short(*)())(intptr_t)FPtr)();
+ else if (BitWidth <= 32)
+ rv.Int32Val = ((int(*)())(intptr_t)FPtr)();
+ else if (BitWidth <= 64)
+ rv.Int64Val = ((int64_t(*)())(intptr_t)FPtr)();
+ else
+ assert(0 && "Integer types > 64 bits not supported");
return rv;
+ }
case Type::VoidTyID:
- case Type::Int32TyID:
rv.Int32Val = ((int(*)())(intptr_t)FPtr)();
return rv;
- case Type::Int64TyID:
- rv.Int64Val = ((int64_t(*)())(intptr_t)FPtr)();
- return rv;
case Type::FloatTyID:
rv.FloatVal = ((float(*)())(intptr_t)FPtr)();
return rv;
@@ -191,11 +194,22 @@ GenericValue JIT::runFunction(Function *F,
const GenericValue &AV = ArgValues[i];
switch (ArgTy->getTypeID()) {
default: assert(0 && "Unknown argument type for function call!");
- case Type::Int1TyID: C = ConstantInt::get(ArgTy, AV.Int1Val); 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;
- case Type::Int64TyID: C = ConstantInt::get(ArgTy, AV.Int64Val); break;
+ case Type::IntegerTyID: {
+ unsigned BitWidth = cast<IntegerType>(ArgTy)->getBitWidth();
+ if (BitWidth == 1)
+ C = ConstantInt::get(ArgTy, AV.Int1Val);
+ else if (BitWidth <= 8)
+ C = ConstantInt::get(ArgTy, AV.Int8Val);
+ else if (BitWidth <= 16)
+ C = ConstantInt::get(ArgTy, AV.Int16Val);
+ else if (BitWidth <= 32)
+ C = ConstantInt::get(ArgTy, AV.Int32Val);
+ else if (BitWidth <= 64)
+ C = ConstantInt::get(ArgTy, AV.Int64Val);
+ else
+ assert(0 && "Integer types > 64 bits not supported");
+ break;
+ }
case Type::FloatTyID: C = ConstantFP ::get(ArgTy, AV.FloatVal); break;
case Type::DoubleTyID: C = ConstantFP ::get(ArgTy, AV.DoubleVal); break;
case Type::PointerTyID:
diff --git a/lib/Linker/LinkModules.cpp b/lib/Linker/LinkModules.cpp
index 4e298898b1..753ebcc955 100644
--- a/lib/Linker/LinkModules.cpp
+++ b/lib/Linker/LinkModules.cpp
@@ -111,6 +111,12 @@ static bool RecursiveResolveTypesI(const PATypeHolder &DestTy,
// Otherwise, resolve the used type used by this derived type...
switch (DestTyT->getTypeID()) {
+ case Type::IntegerTyID: {
+ if (cast<IntegerType>(DestTyT)->getBitWidth() !=
+ cast<IntegerType>(SrcTyT)->getBitWidth())
+ return true;
+ return false;
+ }
case Type::FunctionTyID: {
if (cast<FunctionType>(DestTyT)->isVarArg() !=
cast<FunctionType>(SrcTyT)->isVarArg() ||
@@ -275,7 +281,7 @@ static Value *RemapOperand(const Value *In,
Value *Result = 0;
if (const Constant *CPV = dyn_cast<Constant>(In)) {
if ((!isa<DerivedType>(CPV->getType()) && !isa<ConstantExpr>(CPV)) ||
- isa<ConstantAggregateZero>(CPV))
+ isa<ConstantInt>(CPV) || isa<ConstantAggregateZero>(CPV))
return const_cast<Constant*>(CPV); // Simple constants stay identical.
if (const ConstantArray *CPA = dyn_cast<ConstantArray>(CPV)) {
diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp
index 23465c5f6e..a0b4ceb7f1 100644
--- a/lib/Target/CBackend/CBackend.cpp
+++ b/lib/Target/CBackend/CBackend.cpp
@@ -118,7 +118,7 @@ namespace {
bool isSigned = false,
const std::string &VariableName = "",
bool IgnoreName = false);
- std::ostream &printPrimitiveType(std::ostream &Out, const Type *Ty,
+ std::ostream &printSimpleType(std::ostream &Out, const Type *Ty,
bool isSigned,
const std::string &NameSoFar = "");
@@ -364,22 +364,29 @@ void CWriter::printStructReturnPointerFunctionType(std::ostream &Out,
}
std::ostream &
-CWriter::printPrimitiveType(std::ostream &Out, const Type *Ty, bool isSigned,
+CWriter::printSimpleType(std::ostream &Out, const Type *Ty, bool isSigned,
const std::string &NameSoFar) {
- assert(Ty->isPrimitiveType() && "Invalid type for printPrimitiveType");
+ assert((Ty->isPrimitiveType() || Ty->isIntegral()) &&
+ "Invalid type for printSimpleType");
switch (Ty->getTypeID()) {
- case Type::VoidTyID: return Out << "void " << NameSoFar;
- case Type::Int1TyID: return Out << "bool " << NameSoFar;
- case Type::Int8TyID:
- return Out << (isSigned?"signed":"unsigned") << " char " << NameSoFar;
- case Type::Int16TyID:
- return Out << (isSigned?"signed":"unsigned") << " short " << NameSoFar;
- case Type::Int32TyID:
- return Out << (isSigned?"signed":"unsigned") << " int " << NameSoFar;
- case Type::Int64TyID:
- return Out << (isSigned?"signed":"unsigned") << " long long " << NameSoFar;
- case Type::FloatTyID: return Out << "float " << NameSoFar;
- case Type::DoubleTyID: return Out << "double " << NameSoFar;
+ case Type::VoidTyID: return Out << "void " << NameSoFar;
+ case Type::IntegerTyID: {
+ unsigned NumBits = cast<IntegerType>(Ty)->getBitWidth();
+ if (NumBits == 1)
+ return Out << "bool " << NameSoFar;
+ else if (NumBits <= 8)
+ return Out << (isSigned?"signed":"unsigned") << " char " << NameSoFar;
+ else if (NumBits <= 16)
+ return Out << (isSigned?"signed":"unsigned") << " short " << NameSoFar;
+ else if (NumBits <= 32)
+ return Out << (isSigned?"signed":"unsigned") << " int " << NameSoFar;
+ else {
+ assert(NumBits <= 64 && "Bit widths > 64 not implemented yet");
+ return Out << (isSigned?"signed":"unsigned") << " long long "<< NameSoFar;
+ }
+ }
+ case Type::FloatTyID: return Out << "float " << NameSoFar;
+ case Type::DoubleTyID: return Out << "double " << NameSoFar;
default :
cerr << "Unknown primitive type: " << *Ty << "\n";
abort();
@@ -392,11 +399,11 @@ CWriter::printPrimitiveType(std::ostream &Out, const Type *Ty, bool isSigned,
std::ostream &CWriter::printType(std::ostream &Out, const Type *Ty,
bool isSigned, const std::string &NameSoFar,
bool IgnoreName) {
- if (Ty->isPrimitiveType()) {
+ if (Ty->isPrimitiveType() || Ty->isIntegral()) {
// FIXME:Signedness. When integer types are signless, this should just
// always pass "false" for the sign of the primitive type. The instructions
// will figure out how the value is to be interpreted.
- printPrimitiveType(Out, Ty, isSigned, NameSoFar);
+ printSimpleType(Out, Ty, isSigned, NameSoFar);
return Out;
}
@@ -624,13 +631,13 @@ void CWriter::printCast(unsigned opc, const Type *SrcTy, const Type *DstTy) {
case Instruction::PtrToInt:
case Instruction::FPToUI: // For these, make sure we get an unsigned dest
Out << '(';
- printPrimitiveType(Out, DstTy, false);
+ printSimpleType(Out, DstTy, false);
Out << ')';
break;
case Instruction::SExt:
case Instruction::FPToSI: // For these, make sure we get a signed dest
Out << '(';
- printPrimitiveType(Out, DstTy, true);
+ printSimpleType(Out, DstTy, true);
Out << ')';
break;
default:
@@ -642,13 +649,13 @@ void CWriter::printCast(unsigned opc, const Type *SrcTy, const Type *DstTy) {
case Instruction::UIToFP:
case Instruction::ZExt:
Out << '(';
- printPrimitiveType(Out, SrcTy, false);
+ printSimpleType(Out, SrcTy, false);
Out << ')';
break;
case Instruction::SIToFP:
case Instruction::SExt:
Out << '(';
- printPrimitiveType(Out, SrcTy, true);
+ printSimpleType(Out, SrcTy, true);
Out << ')';
break;
case Instruction::IntToPtr:
@@ -832,7 +839,7 @@ void CWriter::printConstant(Constant *CPV) {
Out << (CI->getZExtValue() ? '1' : '0') ;
else {
Out << "((";
- printPrimitiveType(Out, Ty, false) << ')';
+ printSimpleType(Out, Ty, false) << ')';
if (CI->isMinValue(true))
Out << CI->getZExtValue() << 'u';
else
@@ -1019,7 +1026,7 @@ bool CWriter::printConstExprCast(const ConstantExpr* CE) {
if (NeedsExplicitCast) {
Out << "((";
if (Ty->isInteger())
- printPrimitiveType(Out, Ty, TypeIsSigned);
+ printSimpleType(Out, Ty, TypeIsSigned);
else
printType(Out, Ty); // not integer, sign doesn't matter
Out << ")(";
@@ -1064,7 +1071,7 @@ void CWriter::printConstantWithCast(Constant* CPV, unsigned Opcode) {
// operand.
if (shouldCast) {
Out << "((";
- printPrimitiveType(Out, OpTy, typeIsSigned);
+ printSimpleType(Out, OpTy, typeIsSigned);
Out << ")";
printConstant(CPV);
Out << ")";
@@ -1120,14 +1127,14 @@ bool CWriter::writeInstructionCast(const Instruction &I) {
case Instruction::URem:
case Instruction::UDiv:
Out << "((";
- printPrimitiveType(Out, Ty, false);
+ printSimpleType(Out, Ty, false);
Out << ")(";
return true;
case Instruction::AShr:
case Instruction::SRem:
case Instruction::SDiv:
Out << "((";
- printPrimitiveType(Out, Ty, true);
+ printSimpleType(Out, Ty, true);
Out << ")(";
return true;
default: break;
@@ -1174,7 +1181,7 @@ void CWriter::writeOperandWithCast(Value* Operand, unsigned Opcode) {
// operand.
if (shouldCast) {
Out << "((";
- printPrimitiveType(Out, OpTy, castIsSigned);
+ printSimpleType(Out, OpTy, castIsSigned);
Out << ")";
writeOperand(Operand);
Out << ")";
@@ -1222,7 +1229,7 @@ void CWriter::writeOperandWithCast(Value* Operand, ICmpInst::Predicate predicate
if (shouldCast) {
Out << "((";
if (OpTy->isInteger())
- printPrimitiveType(Out, OpTy, castIsSigned);
+ printSimpleType(Out, OpTy, castIsSigned);
else
printType(Out, OpTy); // not integer, sign doesn't matter
Out << ")";
@@ -1711,7 +1718,7 @@ void CWriter::printModuleTypes(const TypeSymbolTable &TST) {
void CWriter::printContainedStructs(const Type *Ty,
std::set<const StructType*> &StructPrinted){
// Don't walk through pointers.
- if (isa<PointerType>(Ty) || Ty->isPrimitiveType()) return;
+ if (isa<PointerType>(Ty) || Ty->isPrimitiveType() || Ty->isIntegral()) return;
// Print all contained types first.
for (Type::subtype_iterator I = Ty->subtype_begin(),
@@ -2237,9 +2244,14 @@ static const char * getFloatBitCastField(const Type *Ty) {
switch (Ty->getTypeID()) {
default: assert(0 && "Invalid Type");
case Type::FloatTyID: return "Float";
- case Type::Int32TyID: return "Int32";
case Type::DoubleTyID: return "Double";
- case Type::Int64TyID: return "Int64";
+ case Type::IntegerTyID: {
+ unsigned NumBits = cast<IntegerType>(Ty)->getBitWidth();
+ if (NumBits <= 32)
+ return "Int32";
+ else
+ return "Int64";
+ }
}
}
diff --git a/lib/Target/TargetData.cpp b/lib/Target/TargetData.cpp
index 59dc0dca50..c0b0670b96 100644
--- a/lib/Target/TargetData.cpp
+++ b/lib/Target/TargetData.cpp
@@ -241,12 +241,21 @@ static inline void getTypeInfo(const Type *Ty, const TargetData *TD,
uint64_t &Size, unsigned char &Alignment) {
assert(Ty->isSized() && "Cannot getTypeInfo() on a type that is unsized!");
switch (Ty->getTypeID()) {
- case Type::Int1TyID: Size = 1; Alignment = TD->getBoolAlignment(); return;
- case Type::VoidTyID:
- case Type::Int8TyID: Size = 1; Alignment = TD->getByteAlignment(); return;
- case Type::Int16TyID: Size = 2; Alignment = TD->getShortAlignment(); return;
- case Type::Int32TyID: Size = 4; Alignment = TD->getIntAlignment(); return;
- case Type::Int64TyID: Size = 8; Alignment = TD->getLongAlignment(); return;
+ case Type::IntegerTyID: {
+ unsigned BitWidth = cast<IntegerType>(Ty)->getBitWidth();
+ if (BitWidth <= 8) {
+ Size = 1; Alignment = TD->getByteAlignment();
+ } else if (BitWidth <= 16) {
+ Size = 2; Alignment = TD->getShortAlignment();
+ } else if (BitWidth <= 32) {
+ Size = 4; Alignment = TD->getIntAlignment();
+ } else if (BitWidth <= 64) {
+ Size = 8; Alignment = TD->getLongAlignment();
+ } else
+ assert(0 && "Integer types > 64 bits not supported.");
+ return;
+ }
+ case Type::VoidTyID: Size = 1; Alignment = TD->getByteAlignment(); return;
case Type::FloatTyID: Size = 4; Alignment = TD->getFloatAlignment(); return;
case Type::DoubleTyID: Size = 8; Alignment = TD->getDoubleAlignment(); return;
case Type::LabelTyID:
diff --git a/lib/Target/X86/X86TargetAsmInfo.cpp b/lib/Target/X86/X86TargetAsmInfo.cpp
index 8c212b6224..9249b8d4ca 100644
--- a/lib/Target/X86/X86TargetAsmInfo.cpp
+++ b/lib/Target/X86/X86TargetAsmInfo.cpp
@@ -176,12 +176,18 @@ bool X86TargetAsmInfo::LowerToBSwap(CallInst *CI) const {
const Type *Ty = CI->getType();
const char *IntName;
- switch (Ty->getTypeID()) {
- default: return false;
- case Type::Int16TyID: IntName = "llvm.bswap.i16"; break;
- case Type::Int32TyID: IntName = "llvm.bswap.i32"; break;
- case Type::Int64TyID: IntName = "llvm.bswap.i64"; break;
- }
+ if (const IntegerType *ITy = dyn_cast<IntegerType>(Ty)) {
+ unsigned BitWidth = ITy->getBitWidth();
+ if (BitWidth > 8 && BitWidth <= 16)
+ IntName = "llvm.bswap.i16";
+ else if (BitWidth > 24 && BitWidth <= 32)
+ IntName = "llvm.bswap.i32";
+ else if (BitWidth > 56 && BitWidth <= 64)
+ IntName = "llvm.bswap.i64";
+ else
+ return false;
+ } else
+ return false;
// Okay, we can do this xform, do so now.
Module *M = CI->getParent()->getParent()->getParent();
diff --git a/lib/Transforms/IPO/DeadTypeElimination.cpp b/lib/Transforms/IPO/DeadTypeElimination.cpp
index 871bcff158..b599e5a089 100644
--- a/lib/Transforms/IPO/DeadTypeElimination.cpp
+++ b/lib/Transforms/IPO/DeadTypeElimination.cpp
@@ -52,11 +52,14 @@ ModulePass *llvm::createDeadTypeEliminationPass() {
//
static inline bool ShouldNukeSymtabEntry(const Type *Ty){
// Nuke all names for primitive types!
- if (Ty->isPrimitiveType()) return true;
+ if (Ty->isPrimitiveType() || Ty->isIntegral())
+ return true;
// Nuke all pointers to primitive types as well...
if (const PointerType *PT = dyn_cast<PointerType>(Ty))
- if (PT->getElementType()->isPrimitiveType()) return true;
+ if (PT->getElementType()->isPrimitiveType() ||
+ PT->getElementType()->isIntegral())
+ return true;
return false;
}
diff --git a/lib/Transforms/IPO/SimplifyLibCalls.cpp b/lib/Transforms/IPO/SimplifyLibCalls.cpp
index d2ab638288..70821f8f90 100644
--- a/lib/Transforms/IPO/SimplifyLibCalls.cpp
+++ b/lib/Transforms/IPO/SimplifyLibCalls.cpp
@@ -1820,13 +1820,17 @@ public:
// ffsll(x) -> x == 0 ? 0 : llvm.cttz(x)+1
const Type *ArgType = TheCall->getOperand(1)->getType();
const char *CTTZName;
- switch (ArgType->getTypeID()) {
- default: assert(0 && "Unknown unsigned type!");
- case Type::Int8TyID : CTTZName = "llvm.cttz.i8" ; break;
- case Type::Int16TyID: CTTZName = "llvm.cttz.i16"; break;
- case Type::Int32TyID : CTTZName = "llvm.cttz.i32"; break;
- case Type::Int64TyID : CTTZName = "llvm.cttz.i64"; break;
- }
+ assert(ArgType->getTypeID() == Type::IntegerTyID &&
+ "llvm.cttz argument is not an integer?");
+ unsigned BitWidth = cast<IntegerType>(ArgType)->getBitWidth();
+ if (BitWidth <= 8)
+ CTTZName = "llvm.cttz.i8";
+ else if (BitWidth <= 16)
+ CTTZName = "llvm.cttz.i16";
+ else if (BitWidth <= 32)
+ CTTZName = "llvm.cttz.i32";
+ else
+ CTTZName = "llvm.cttz.i64";
Constant *F = SLC.getModule()->getOrInsertFunction(CTTZName, ArgType,
ArgType, NULL);
diff --git a/lib/Transforms/Scalar/IndVarSimplify.cpp b/lib/Transforms/Scalar/IndVarSimplify.cpp
index a5a9f69c2a..0643e75ab3 100644
--- a/lib/Transforms/Scalar/IndVarSimplify.cpp
+++ b/lib/Transforms/Scalar/IndVarSimplify.cpp
@@ -50,6 +50,7 @@
#include "llvm/Support/GetElementPtrTypeIterator.h"
#include "llvm/Transforms/Utils/Local.h"
#include "llvm/Support/CommandLine.h"
+#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
using namespace llvm;
@@ -528,18 +529,27 @@ void IndVarSimplify::runOnLoop(Loop *L) {
// induction variable to the right size for them, avoiding the need for the
// code evaluation methods to insert induction variables of different sizes.
if (DifferingSizes) {
- bool InsertedSizes[17] = { false };
- InsertedSizes[LargestType->getPrimitiveSize()] = true;
- for (unsigned i = 0, e = IndVars.size(); i != e; ++i)
- if (!InsertedSizes[IndVars[i].first->getType()->getPrimitiveSize()]) {
+ SmallVector<unsigned,4> InsertedSizes;
+ InsertedSizes.push_back(LargestType->getPrimitiveSizeInBits());
+ for (unsigned i = 0, e = IndVars.size(); i != e; ++i) {
+ unsigned ithSize = IndVars[i].first->getType()->getPrimitiveSizeInBits();
+ bool alreadyInsertedSize = false;
+ for (SmallVector<unsigned,4>::iterator I = InsertedSizes.begin(),
+ E = InsertedSizes.end(); I != E; ++I)
+ if (*I == ithSize) {
+ alreadyInsertedSize = true;
+ break;
+ }
+ if (!alreadyInsertedSize) {
PHINode *PN = IndVars[i].first;
- InsertedSizes[PN->getType()->getPrimitiveSize()] = true;
+ InsertedSizes.push_back(ithSize);
Instruction *New = new TruncInst(IndVar, PN->getType(), "indvar",
InsertPt);
Rewriter.addInsertedValue(New, SE->getSCEV(New));
DOUT << "INDVARS: Made trunc IV for " << *PN
<< " NewVal = " << *New << "\n";
}
+ }
}
// Rewrite all induction variables in terms of the canonical induction
diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp
index c039b3999a..aecc9a93ef 100644
--- a/lib/Transforms/Scalar/InstructionCombining.cpp
+++ b/lib/Transforms/Scalar/InstructionCombining.cpp
@@ -339,12 +339,12 @@ static bool isOnlyUse(Value *V) {
// getPromotedType - Return the specified type promoted as it would be to pass
// though a va_arg area...
static const Type *getPromotedType(const Type *Ty) {
- switch (Ty->getTypeID()) {
- case Type::Int8TyID:
- case Type::Int16TyID: return Type::Int32Ty;
- case Type::FloatTyID: return Type::DoubleTy;
- default: return Ty;
- }
+ if (const IntegerType* ITy = dyn_cast<IntegerType>(Ty)) {
+ if (ITy->getBitWidth() < 32)
+ return Type::Int32Ty;
+ } else if (Ty == Type::FloatTy)
+ return Type::DoubleTy;
+ return Ty;
}
/// getBitCastOperand - If the specified operand is a CastInst or a constant
@@ -531,7 +531,6 @@ static ConstantInt *SubOne(ConstantInt *C) {
ConstantInt::get(C->getType(), 1)));
}
-
/// ComputeMaskedBits - Determine which of the bits specified in Mask are
/// known to be either zero or one and return them in the KnownZero/KnownOne
/// bitsets. This code only analyzes bits in Mask, in order to short-circuit
@@ -3516,7 +3515,7 @@ Instruction *InstCombiner::MatchBSwap(BinaryOperator &I) {
/// ByteValues - For each byte of the result, we keep track of which value
/// defines each byte.
std::vector<Value*> ByteValues;
- ByteValues.resize(I.getType()->getPrimitiveSize());
+ ByteValues.resize(TD->getTypeSize(I.getType()));
// Try to find all the pieces corresponding to the bswap.
if (CollectBSwapParts(I.getOperand(0), ByteValues) ||
@@ -6580,9 +6579,7 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) {
}
if (SI.getType() == Type::Int1Ty) {
- ConstantInt *C;
- if ((C = dyn_cast<ConstantInt>(TrueVal)) &&
- C->getType() == Type::Int1Ty) {
+ if (ConstantInt *C = dyn_cast<ConstantInt>(TrueVal)) {
if (C->getZExtValue()) {
// Change: A = select B, true, C --> A = or B, C
return BinaryOperator::createOr(CondVal, FalseVal);
@@ -6593,8 +6590,7 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) {
"not."+CondVal->getName()), SI);
return BinaryOperator::createAnd(NotCond, FalseVal);
}
- } else if ((C = dyn_cast<ConstantInt>(FalseVal)) &&
- C->getType() == Type::Int1Ty) {
+ } else if (ConstantInt *C = dyn_cast<ConstantInt>(FalseVal)) {
if (C->getZExtValue() == false) {
// Change: A = select B, C, false --> A = and B, C
return BinaryOperator::createAnd(CondVal, TrueVal);
@@ -7649,7 +7645,7 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
}
} else if (SrcTy->getPrimitiveSizeInBits() <
DestTy->getPrimitiveSizeInBits() &&
- SrcTy->getPrimitiveSize() == 4) {
+ SrcTy->getPrimitiveSizeInBits() == 32) {
// We can eliminate a cast from [u]int to [u]long iff the target
// is a 32-bit pointer target.
if (SrcTy->getPrimitiveSizeInBits() >= TD->getPointerSizeInBits()) {
@@ -7664,7 +7660,7 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
// insert it. This explicit cast can make subsequent optimizations more
// obvious.
Value *Op = GEP.getOperand(i);
- if (Op->getType()->getPrimitiveSize() > TD->getPointerSize())
+ if (TD->getTypeSize(Op->getType()) > TD->getPointerSize())
if (Constant *C = dyn_cast<Constant>(Op)) {
GEP.setOperand(i, ConstantExpr::getTrunc(C, TD->getIntPtrType()));
MadeChange = true;
@@ -7722,11 +7718,11 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
GO1 = ConstantExpr::getIntegerCast(GO1C, SO1->getType(), true);
} else {
unsigned PS = TD->getPointerSize();
- if (SO1->getType()->getPrimitiveSize() == PS) {
+ if (TD->getTypeSize(SO1->getType()) == PS) {
// Convert GO1 to SO1's type.
GO1 = InsertCastToIntPtrTy(GO1, SO1->getType(), &GEP, this);
- } else if (GO1->getType()->getPrimitiveSize() == PS) {
+ } else if (TD->getTypeSize(GO1->getType()) == PS) {
// Convert SO1 to GO1's type.
SO1 = InsertCastToIntPtrTy(SO1, GO1->getType(), &GEP, this);
} else {
@@ -9056,8 +9052,7 @@ 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<ConstantInt>(BI->getCondition()) &&
- BI->getCondition()->getType() == Type::Int1Ty) {
+ if (BI->isConditional() && isa<ConstantInt>(BI->getCondition())) {
bool CondVal = cast<ConstantInt>(BI->getCondition())->getZExtValue();
AddReachableCodeToWorklist(BI->getSuccessor(!CondVal), Visited, WorkList,
TD);
diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp
index 2bc000440a..1ebc1cf4a9 100644
--- a/lib/Transforms/Scalar/SCCP.cpp
+++ b/lib/Transforms/Scalar/SCCP.cpp
@@ -1611,7 +1611,7 @@ bool IPSCCP::runOnModule(Module &M) {
Instruction *I = cast<Instruction>(DeadBB->use_back());
bool Folded = ConstantFoldTerminator(I->getParent());
if (!Folded) {
- // The constant folder may not have been able to fold the termiantor
+ // The constant folder may not have been able to fold the terminator
// if this is a branch or switch on undef. Fold it manually as a
// branch to the first successor.
if (BranchInst *BI = dyn_cast<BranchInst>(I)) {
diff --git a/lib/Transforms/Scalar/ScalarReplAggregates.cpp b/lib/Transforms/Scalar/ScalarReplAggregates.cpp
index 00e58180bd..a92459b809 100644
--- a/lib/Transforms/Scalar/ScalarReplAggregates.cpp
+++ b/lib/Transforms/Scalar/ScalarReplAggregates.cpp
@@ -444,7 +444,8 @@ static bool MergeInType(const Type *In, const Type *&Accum,
// Noop.
} else if (In->isIntegral() && Accum->isIntegral()) { // integer union.
// Otherwise pick whichever type is larger.
- if (In->getTypeID() > Accum->getTypeID())
+ if (cast<IntegerType>(In)->getBitWidth() >
+ cast<IntegerType>(Accum)->getBitWidth())
Accum = In;
} else if (isa<PointerType>(In) && isa<PointerType>(Accum)) {
// Pointer unions just stay as one of the pointers.
@@ -643,8 +644,8 @@ void SROA::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI, unsigned Offset) {
} else {
// Must be an element access.
unsigned Elt = Offset/(TD.getTypeSize(PTy->getElementType())*8);
- NV = new ExtractElementInst(NV, ConstantInt::get(Type::Int32Ty, Elt),
- "tmp", LI);
+ NV = new ExtractElementInst(
+ NV, ConstantInt::get(Type::Int32Ty, Elt), "tmp", LI);
}
} else if (isa<PointerType>(NV->getType())) {
assert(isa<PointerType>(LI->getType()));
diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp
index 138ab3520f..4730c3166b 100644
--- a/lib/VMCore/AsmWriter.cpp
+++ b/lib/VMCore/AsmWriter.cpp
@@ -222,6 +222,7 @@ static void fillTypeNameTable(const Module *M,
const Type *Ty = cast<Type>(TI->second);
if (!isa<PointerType>(Ty) ||
!cast<PointerType>(Ty)->getElementType()->isPrimitiveType() ||
+ !cast<PointerType>(Ty)->getElementType()->isIntegral() ||
isa<OpaqueType>(cast<PointerType>(Ty)->getElementType()))
TypeNames.insert(std::make_pair(Ty, getLLVMName(TI->first)));
}
@@ -233,7 +234,7 @@ static void calcTypeName(const Type *Ty,
std::vector<const Type *> &TypeStack,
std::map<const Type *, std::string> &TypeNames,
std::string & Result){
- if (Ty->isPrimitiveType() && !isa<OpaqueType>(Ty)) {
+ if (Ty->isIntegral() || (Ty->isPrimitiveType() && !isa<OpaqueType>(Ty))) {
Result += Ty->getDescription(); // Base case
return;
}
@@ -265,6 +266,15 @@ static void calcTypeName(const Type *Ty,
TypeStack.push_back(Ty); // Recursive case: Add us to the stack..
switch (Ty->getTypeID()) {
+ case Type::IntegerTyID: {
+ unsigned BitWidth = cast<IntegerType>(Ty)->getBitWidth();
+ if (BitWidth == 1)
+ Result += "bool";
+ else {
+ Result += "i" + utostr(BitWidth);
+ }
+ break;
+ }
case Type::FunctionTyID: {
const FunctionType *FTy = cast<FunctionType>(Ty);
calcTypeName(FTy->getReturnType(), TypeStack, TypeNames, Result);
@@ -347,7 +357,7 @@ static std::ostream &printTypeInt(std::ostream &Out, const Type *Ty,
// Primitive types always print out their description, regardless of whether
// they have been named or not.
//
- if (Ty->isPrimitiveType() && !isa<OpaqueType>(Ty))
+ if (Ty->isIntegral() || (Ty->isPrimitiveType() && !isa<OpaqueType>(Ty)))
return Out << Ty->getDescription();
// Check to see if the type is named.
@@ -706,7 +716,9 @@ private:
/// without considering any symbolic types that we may have equal to it.
///
std::ostream &AssemblyWriter::printTypeAtLeastOneLevel(const Type *Ty) {
- if (const FunctionType *FTy = dyn_cast<FunctionType>(Ty)) {
+ if (const IntegerType *ITy = dyn_cast<IntegerType>(Ty))
+ Out << "i" << utostr(ITy->getBitWidth());
+ else if (const FunctionType *FTy = dyn_cast<FunctionType>(Ty)) {
printType(FTy->getReturnType());
Out << " (";
unsigned Idx = 1;
diff --git a/lib/VMCore/ConstantFold.cpp b/lib/VMCore/ConstantFold.cpp
index 1f5aeb35ca..8aeca7b47a 100644
--- a/lib/VMCore/ConstantFold.cpp
+++ b/lib/VMCore/ConstantFold.cpp
@@ -1364,22 +1364,6 @@ Constant *llvm::ConstantFoldGetElementPtr(const Constant *C,
assert(Ty != 0 && "Invalid indices for GEP!");
return ConstantPointerNull::get(PointerType::get(Ty));
}
-
- if (IdxList.size() == 1) {
- const Type *ElTy = cast<PointerType>(C->getType())->getElementType();
- if (uint32_t ElSize = ElTy->getPrimitiveSize()) {
- // gep null, C is equal to C*sizeof(nullty). If nullty is a known llvm
- // type, we can statically fold this.
- Constant *R = ConstantInt::get(Type::Int32Ty, ElSize);
- // We know R is unsigned, Idx0 is signed because it must be an index
- // through a sequential type (gep pointer operand) which is always
- // signed.
- R = ConstantExpr::getSExtOrBitCast(R, Idx0->getType());
- R = ConstantExpr::getMul(R, Idx0); // signed multiply
- // R is a signed integer, C is the GEP pointer so -> IntToPtr
- return ConstantExpr::getIntToPtr(R, C->getType());
- }
- }
}
if (ConstantExpr *CE = dyn_cast<ConstantExpr>(const_cast<Constant*>(C))) {
diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp
index 73490912a5..c2332c6e61 100644
--- a/lib/VMCore/Constants.cpp
+++ b/lib/VMCore/Constants.cpp
@@ -92,25 +92,32 @@ bool Constant::canTrap() const {
// Static constructor to create a '0' constant of arbitrary type...
Constant *Constant::getNullValue(const Type *Ty) {
switch (Ty->getTypeID()) {
- case Type::Int1TyID: {
- static Constant *NullBool = ConstantInt::get(Type::Int1Ty, false);
- return NullBool;
- }
- case Type::Int8TyID: {
- static Constant *NullInt8 = ConstantInt::get(Type::Int8Ty, 0);
- return NullInt8;
- }
- case Type::Int16TyID: {
- static Constant *NullInt16 = ConstantInt::get(Type::Int16Ty, 0);
- return NullInt16;
- }
- case Type::Int32TyID: {
- static Constant *NullInt32 = ConstantInt::get(Type::Int32Ty, 0);
- return NullInt32;
- }
- case Type::Int64TyID: {
- static Constant *NullInt64 = ConstantInt::get(Type::Int64Ty, 0);
- return NullInt64;
+ case Type::IntegerTyID: {
+ const IntegerType *ITy = dyn_cast<IntegerType>(Ty);
+ switch (ITy->getBitWidth()) {
+ case 1: {
+ static Constant *NullBool = ConstantInt::get(Ty, false);
+ return NullBool;
+ }
+ case 8: {
+ static Constant *NullInt8 = ConstantInt::get(Ty, 0);
+ return NullInt8;
+ }
+ case 16: {
+ static Constant *NullInt16 = ConstantInt::get(Ty, 0);
+ return NullInt16;
+ }
+ case 32: {
+ static Constant *NullInt32 = ConstantInt::get(Ty, 0);
+ return NullInt32;
+ }
+ case 64: {
+ static Constant *NullInt64 = ConstantInt::get(Ty, 0);
+ return NullInt64;
+ }
+ default:
+ return ConstantInt::get(Ty, 0);
+ }
}
case Type::FloatTyID: {
static Constant *NullFloat = ConstantFP::get(Type::FloatTy, 0);
@@ -136,14 +143,12 @@ Constant *Constant::getNullValue(const Type *Ty) {
// Static constructor to create an integral constant with all bits set
ConstantInt *ConstantInt::getAllOnesValue(const Type *Ty) {
- switch (Ty->getTypeID()) {
- case Type::Int1TyID: return ConstantInt::getTrue();
- case Type::Int8TyID:
- case Type::Int16TyID:
- case Type::Int32TyID:
- case Type::Int64TyID: return ConstantInt::get(Ty, int64_t(-1));
- default: return 0;
- }
+ if (const IntegerType* ITy = dyn_cast<IntegerType>(Ty))
+ if (ITy->getBitWidth() == 1)
+ return ConstantInt::getTrue();
+ else
+ return ConstantInt::get(Ty, int64_t(-1));
+ return 0;
}
/// @returns the value for an packed integer constant of the given type that
@@ -549,25 +554,26 @@ getWithOperands(const std::vector<Constant*> &Ops) const {
// isValueValidForType implementations
bool ConstantInt::isValueValidForType(const Type *Ty, uint64_t Val) {
- switch (Ty->getTypeID()) {
- default: return false; // These can't be represented as integers!
- case Type::Int1TyID: 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;
- case Type::Int64TyID: return true; // always true, has to fit in largest type
- }
+ unsigned NumBits = cast<IntegerType>(Ty)->getBitWidth(); // assert okay
+ assert(NumBits <= 64 && "Not implemented: integers > 64-bits");
+ if (Ty == Type::Int1Ty)
+ return Val == 0 || Val == 1;
+ if (NumBits == 64)
+ return true; // always true, has to fit in largest type
+ uint64_t Max = (1ll << NumBits) - 1;
+ return Val <= Max;
}
bool ConstantInt::isValueValidForType(const Type *Ty, int64_t Val) {
- switch (Ty->getTypeID()) {
- default: return false; // These can't be represented as integers!
- case Type::Int1TyID: 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);
- case Type::Int64TyID: return true; // always true, has to fit in largest type
- }
+ unsigned NumBits = cast<IntegerType>(Ty)->getBitWidth(); // assert okay
+ assert(NumBits <= 64 && "Not implemented: integers > 64-bits");
+ if (Ty == Type::Int1Ty)
+ return Val == 0 || Val == 1;
+ if (NumBits == 64)
+ return true; // always true, has to fit in largest type
+ int64_t Min = -(1ll << (NumBits-1));
+ int64_t Max = (1ll << (NumBits-1)) - 1;
+ return (Val >= Min && Val <= Max);
}
bool ConstantFP::isValueValidForType(const Type *Ty, double Val) {
@@ -1441,8 +1447,7 @@ Constant *ConstantExpr::getTruncOrBitCast(Constant *C, const Type *Ty) {
Constant *ConstantExpr::getPointerCast(Constant *S, const Type *Ty) {
assert(isa<PointerType>(S->getType()) && "Invalid cast");
- assert((Ty->isIntegral() || Ty->getTypeID() == Type::PointerTyID) &&
- "Invalid cast");
+ assert((Ty->isIntegral() || isa<PointerType>(Ty)) && "Invalid cast");
if (Ty->isIntegral())
return getCast(Instruction::PtrToInt, S, Ty);
diff --git a/lib/VMCore/Instructions.cpp b/lib/VMCore/Instructions.cpp
index b9a4770b3d..9486fb86d7 100644
--- a/lib/VMCore/Instructions.cpp
+++ b/lib/VMCore/Instructions.cpp
@@ -1528,7 +1528,7 @@ CastInst *CastInst::createPointerCast(Value *S, const Type *Ty,
const std::string &Name,
BasicBlock *InsertAtEnd) {
assert(isa<PointerType>(S->getType()) && "Invalid cast");
- assert((Ty->isIntegral() || Ty->getTypeID() == Type::PointerTyID) &&
+ assert((Ty->isIntegral() || isa<PointerType>(Ty)) &&
"Invalid cast");
if (Ty->isIntegral())
@@ -1541,7 +1541,7 @@ CastInst *CastInst::createPointerCast(Value *S, const Type *Ty,
const std::string &Name,
Instruction *InsertBefore) {
assert(isa<PointerType>(S->getType()) && "Invalid cast");
- assert((Ty->isIntegral() || Ty->getTypeID() == Type::PointerTyID) &&
+ assert((Ty->isIntegral() || isa<PointerType>(Ty)) &&
"Invalid cast");
if (Ty->isIntegral())
@@ -1913,7 +1913,7 @@ CmpInst::CmpInst(OtherOps op, unsigned short predicate, Value *LHS, Value *RHS,
assert(Op0Ty == Op1Ty &&
"Both operands to ICmp instruction are not of the same type!");
// Check that the operands are the right type
- assert(Op0Ty->isIntegral() || Op0Ty->getTypeID() == Type::PointerTyID ||
+ assert(Op0Ty->isIntegral() || isa<PointerType>(Op0Ty) ||
(isa<PackedType>(Op0Ty) &&
cast<PackedType>(Op0Ty)->getElementType()->isIntegral()) &&
"Invalid operand types for ICmp instruction");
@@ -1948,7 +1948,7 @@ CmpInst::CmpInst(OtherOps op, unsigned short predicate, Value *LHS, Value *RHS,
assert(Op0Ty == Op1Ty &&
"Both operands to ICmp instruction are not of the same type!");
// Check that the operands are the right type
- assert(Op0Ty->isIntegral() || Op0Ty->getTypeID() == Type::PointerTyID ||
+ assert(Op0Ty->isIntegral() || isa<PointerType>(Op0Ty) ||
(isa<PackedType>(Op0Ty) &&
cast<PackedType>(Op0Ty)->getElementType()->isIntegral()) &&
"Invalid operand types for ICmp instruction");
diff --git a/lib/VMCore/Type.cpp b/lib/VMCore/Type.cpp
index 8ab1afd343..b70cd5f431 100644
--- a/lib/VMCore/Type.cpp
+++ b/lib/VMCore/Type.cpp
@@ -64,7 +64,7 @@ static ManagedStatic<std::map<const Type*,
std::string> > AbstractTypeDescriptions;
Type::Type(const char *Name, TypeID id)
- : ID(id), Abstract(false), RefCount(0), ForwardType(0) {
+ : ID(id), Abstract(false), SubclassData(0), RefCount(0), ForwardType(0) {
assert(Name && Name[0] && "Should use other ctor if no name!");
(*ConcreteTypeDescriptions)[this] = Name;
}
@@ -73,11 +73,6 @@ Type::Type(const char *Name, TypeID id)
const Type *Type::getPrimitiveType(TypeID IDNumber) {
switch (IDNumber) {
case VoidTyID : return VoidTy;
- case Int1TyID : return Int1Ty;
- case Int8TyID : return Int8Ty;
- case Int16TyID : return Int16Ty;
- case Int32TyID : return Int32Ty;
- case Int64TyID : return Int64Ty;
case FloatTyID : return FloatTy;
case DoubleTyID: return DoubleTy;
case LabelTyID : return LabelTy;
@@ -116,41 +111,17 @@ bool Type::canLosslesslyBitCastTo(const Type *Ty) const {
// At this point we have only various mismatches of the first class types
// remaining and ptr->ptr. Just select the lossless conversions. Everything
// else is not lossless.
- if (getTypeID() == Type::PointerTyID)
+ if (isa<PointerType>(this))
return isa<PointerType>(Ty);
return false; // Other types have no identity values
}
-// getPrimitiveSize - Return the basic size of this type if it is a primitive
-// type. These are fixed by LLVM and are not target dependent. This will
-// return zero if the type does not have a size or is not a primitive type.
-//
-unsigned Type::getPrimitiveSize() const {
- switch (getTypeID()) {
- case Type::Int1TyID:
- case Type::Int8TyID: return 1;
- case Type::Int16TyID: return 2;
- case Type::FloatTyID:
- case Type::Int32TyID: return 4;
- case Type::Int64TyID:
- case Type::DoubleTyID: return 8;
- default: return 0;
- }
-}
-
unsigned Type::getPrimitiveSizeInBits() const {
switch (getTypeID()) {
- case Type::Int1TyID: return 1;
- case Type::Int8TyID: return 8;
- case Type::Int16TyID: return 16;
- case Type::FloatTyID:
- case Type::Int32TyID:return 32;
- case Type::Int64TyID:
+ case Type::FloatTyID: return 32;
case Type::DoubleTyID: return 64;
- case Type::PackedTyID: {
- const PackedType *PTy = cast<PackedType>(this);
- return PTy->getBitWidth();
- }
+ case Type::IntegerTyID: return cast<IntegerType>(this)->getBitWidth();
+ case Type::PackedTyID: return cast<PackedType>(this)->getBitWidth();
default: return 0;
}
}
@@ -165,11 +136,13 @@ bool Type::isSizedDerivedType() const {
if (const PackedType *PTy = dyn_cast<PackedType>(this))
return PTy->getElementType()->isSized();
- if (!isa<StructType>(this)) return false;
+ if (!isa<StructType>(this))
+ return false;
// Okay, our struct is sized if all of the elements are...
for (subtype_iterator I = subtype_begin(), E = subtype_end(); I != E; ++I)
- if (!(*I)->isSized()) return false;
+ if (!(*I)->isSized())
+ return false;
return true;
}
@@ -243,6 +216,14 @@ static std::string getTypeDescription(const Type *Ty,
TypeStack.push_back(Ty); // Add us to the stack..
switch (Ty->getTypeID()) {
+ case Type::IntegerTyID: {
+ const IntegerType *ITy = cast<IntegerType>(Ty);
+ if (ITy->getBitWidth() == 1)
+ Result = "bool"; // FIXME: eventually this becomes i1
+ else
+ Result = "i" + utostr(ITy->getBitWidth());
+ break;
+ }
case Type::FunctionTyID: {
const FunctionType *FTy = cast<FunctionType>(Ty);
if (!Result.empty())
@@ -267,6 +248,7 @@ static std::string getTypeDescription(const Type *Ty,
}
break;
}
+ case Type::PackedStructTyID:
case Type::StructTyID: {
const StructType *STy = cast<StructType>(Ty);
if (STy->isPacked())
@@ -353,7 +335,6 @@ const Type *StructType::getTypeAtIndex(const Value *V) const {
return ContainedTys[Idx];
}
-
//===----------------------------------------------------------------------===//
// Primitive 'Type' data
//===----------------------------------------------------------------------===//
@@ -365,17 +346,26 @@ const Type *StructType::getTypeAtIndex(const Value *V) const {
}; \
} \
static ManagedStatic<TY##Type> The##TY##Ty; \
- Type *Type::TY##Ty = &*The##TY##Ty
+ const Type *Type::TY##Ty = &*The##TY##Ty
+
+#define DeclareIntegerType(TY, BitWidth) \
+ namespace { \
+ struct VISIBILITY_HIDDEN TY##Type : public IntegerType { \
+ TY##Type() : IntegerType(BitWidth) {} \
+ }; \
+ } \
+ static ManagedStatic<TY##Type> The##TY##Ty; \
+ const Type *Type::TY##Ty = &*The##TY##Ty
DeclarePrimType(Void, "void");
-DeclarePrimType(Int1, "bool");
-DeclarePrimType(Int8, "i8");
-DeclarePrimType(Int16, "i16");
-DeclarePrimType(Int32, "i32");
-DeclarePrimType(Int64, "i64");
DeclarePrimType(Float, "float");
DeclarePrimType(Double, "double");
DeclarePrimType(Label, "label");
+DeclareIntegerType(Int1, 1);
+DeclareIntegerType(Int8, 8);
+DeclareIntegerType(Int16, 16);
+DeclareIntegerType(Int32, 32);
+DeclareIntegerType(Int64, 64);
#undef DeclarePrimType
@@ -584,7 +574,10 @@ static bool TypesEqual(const Type *Ty, const Type *Ty2,
// algorithm is the fact that arraytypes have sizes that differentiates types,
// and that function types can be varargs or not. Consider this now.
//
- if (const PointerType *PTy = dyn_cast<PointerType>(Ty)) {
+ if (const IntegerType *ITy = dyn_cast<IntegerType>(Ty)) {
+ const IntegerType *ITy2 = cast<IntegerType>(Ty2);
+ return ITy->getBitWidth() == ITy2->getBitWidth();
+ } else if (const PointerType *PTy = dyn_cast<PointerType>(Ty)) {
return TypesEqual(PTy->getElementType(),
cast<PointerType>(Ty2)->getElementType(), EqTypes);
} else if (const StructType *STy = dyn_cast<StructType>(Ty)) {
@@ -695,6 +688,9 @@ static unsigned getSubElementHash(const Type *Ty) {
switch (SubTy->getTypeID()) {
default: break;
case Type::OpaqueTyID: return 0; // Opaque -> hash = 0 no matter what.
+ case Type::IntegerTyID:
+ HashVal ^= (cast<IntegerType>(SubTy)->getBitWidth() << 3);
+ break;
case Type::FunctionTyID:
HashVal ^= cast<FunctionType>(SubTy)->getNumParams()*2 +
cast<FunctionType>(SubTy)->isVarArg();
@@ -928,6 +924,60 @@ public:
// Function Type Factory and Value Class...
//
+//===----------------------------------------------------------------------===//
+// Integer Type Factory...
+//
+namespace llvm {
+class IntegerValType {
+ uint16_t bits;
+public:
+ IntegerValType(uint16_t numbits) : bits(numbits) {}
+
+ static IntegerValType get(const IntegerType *Ty) {
+ return IntegerValType(Ty->getBitWidth());
+ }
+
+ static unsigned hashTypeStructure(const IntegerType *Ty) {
+ return (unsigned)Ty->getBitWidth();
+ }
+
+ inline bool operator<(const IntegerValType &IVT) const {
+ return bits < IVT.bits;
+ }
+};
+}
+
+static ManagedStatic<TypeMap<IntegerValType, IntegerType> > IntegerTypes;
+
+const IntegerType *IntegerType::get(unsigned NumBits) {
+ assert(NumBits >= MIN_INT_BITS && "bitwidth too small");
+ assert(NumBits <= MAX_INT_BITS && "bitwidth too large");
+
+ // Check for the built-in integer types
+ switch (NumBits) {
+ case 1: return cast<IntegerType>(Type::Int1Ty);
+ case 8: return cast<IntegerType>(Type::Int8Ty);
+ case 16: return cast<IntegerType>(Type::Int16Ty);
+ case 32: return cast<IntegerType>(Type::Int32Ty);
+ case 64: return cast<IntegerType>(Type::Int64Ty);
+ default:
+ break;
+ }
+
+ IntegerValType IVT(NumBits);
+ IntegerType *ITy = IntegerTypes->get(IVT);
+ if (ITy) return ITy; // Found a match, return it!
+
+ // Value not found. Derive a new type!
+ ITy = new IntegerType(NumBits);
+ IntegerTypes->add(IVT, ITy);
+
+#ifdef DEBUG_MERGE_TYPES
+ DOUT << "Derived new type: " << *ITy << "\n";
+#endif
+ return ITy;
+}
+
// FunctionValType - Define a class to hold the key that goes into the TypeMap
//
namespace llvm {
@@ -1440,14 +1490,9 @@ void PointerType::typeBecameConcrete(const DerivedType *AbsTy) {
}
bool SequentialType::indexValid(const Value *V) const {
- const Type *Ty = V->getType();
- switch (Ty->getTypeID()) {
- case Type::Int32TyID:
- case Type::Int64TyID:
- return true;
- default:
- return false;
- }
+ if (const IntegerType *IT = dyn_cast<IntegerType>(V->getType()))
+ return IT->getBitWidth() == 32 || IT->getBitWidth() == 64;
+ return false;
}
namespace llvm {
diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp
index 4431c81d29..05b8514d9d 100644
--- a/lib/VMCore/Verifier.cpp
+++ b/lib/VMCore/Verifier.cpp
@@ -743,7 +743,7 @@ void Verifier::visitICmpInst(ICmpInst& IC) {
Assert1(Op0Ty == Op1Ty,
"Both operands to ICmp instruction are not of the same type!", &IC);
// Check that the operands are the right type
- Assert1(Op0Ty->isIntegral() || Op0Ty->getTypeID() == Type::PointerTyID,
+ Assert1(Op0Ty->isIntegral() || isa<PointerType>(Op0Ty),
"Invalid operand types for ICmp instruction", &IC);
visitInstruction(IC);
}
@@ -1005,7 +1005,7 @@ void Verifier::VerifyIntrinsicPrototype(Function *F, ...) {
else
Ty = FTy->getParamType(ArgNo-1);
- if (Ty->getTypeID() != TypeID) {
+ if (TypeID != Ty->getTypeID()) {
if (ArgNo == 0)
CheckFailed("Intrinsic prototype has incorrect result type!", F);
else
@@ -1013,18 +1013,43 @@ void Verifier::VerifyIntrinsicPrototype(Function *F, ...) {
break;
}
- // If this is a packed argument, verify the number and type of elements.
- if (TypeID == Type::PackedTyID) {
+ if (TypeID == Type::IntegerTyID) {
+ unsigned GotBits = (unsigned) va_arg(VA, int);
+ unsigned ExpectBits = cast<IntegerType>(Ty)->getBitWidth();
+ if (GotBits != ExpectBits) {
+ std::string bitmsg = " Expecting " + utostr(ExpectBits) + " but got " +
+ utostr(GotBits) + " bits.";
+ if (ArgNo == 0)
+ CheckFailed("Intrinsic prototype has incorrect integer result width!"
+ + bitmsg, F);
+ else
+ CheckFailed("Intrinsic parameter #" + utostr(ArgNo-1) + " has "
+ "incorrect integer width!" + bitmsg, F);
+ break;
+ }
+ } else if (TypeID == Type::PackedTyID) {
+ // If this is a packed argument, verify the number and type of elements.
const PackedType *PTy = cast<PackedType>(Ty);
- if (va_arg(VA, int) != PTy->getElementType()->getTypeID()) {
- CheckFailed("Intrinsic prototype has incorrect vector element type!",F);
+ int ElemTy = va_arg(VA, int);
+ if (ElemTy != PTy->getElementType()->getTypeID()) {
+ CheckFailed("Intrinsic prototype has incorrect vector element type!",
+ F);
break;
}
-
+ if (ElemTy == Type::IntegerTyID) {
+ unsigned NumBits = (unsigned)va_arg(VA, int);
+ unsigned ExpectedBits =
+ cast<IntegerType>(PTy->getElementType())->getBitWidth();
+ if (NumBits != ExpectedBits) {
+ CheckFailed("Intrinsic prototype has incorrect vector element type!",
+ F);
+ break;
+ }
+ }
if ((unsigned)va_arg(VA, int) != PTy->getNumElements()) {
CheckFailed("Intrinsic prototype has incorrect number of "
"vector elements!",F);
- break;
+ break;
}
}
}
diff --git a/tools/llvm2cpp/CppWriter.cpp b/tools/llvm2cpp/CppWriter.cpp
index 1f6cbaf288..82997cebcc 100644
--- a/tools/llvm2cpp/CppWriter.cpp
+++ b/tools/llvm2cpp/CppWriter.cpp
@@ -161,28 +161,25 @@ sanitize(std::string& str) {
str[i] = '_';
}
-inline const char*
+inline std::string
getTypePrefix(const Type* Ty ) {
- const char* prefix;
switch (Ty->getTypeID()) {
- case Type::VoidTyID: prefix = "void_"; break;
- case Type::Int1TyID: prefix = "bool_"; break;
- case Type::Int8TyID: prefix = "int8_"; break;
- case Type::Int16TyID: prefix = "int16_"; break;
- case Type::Int32TyID: prefix = "int32_"; break;
- case Type::Int64TyID: prefix = "int64_"; break;
- case Type::FloatTyID: prefix = "float_"; break;
- case Type::DoubleTyID: prefix = "double_"; break;
- case Type::LabelTyID: prefix = "label_"; break;
- case Type::FunctionTyID: prefix = "func_"; break;
- case Type::StructTyID: prefix = "struct_"; break;
- case Type::ArrayTyID: prefix = "array_"; break;
- case Type::PointerTyID: prefix = "ptr_"; break;
- case Type::PackedTyID: prefix = "packed_"; break;
- case Type::OpaqueTyID: prefix = "opaque_"; break;
- default: prefix = "other_"; break;
+ case Type::VoidTyID: return "void_";
+ case Type::IntegerTyID:
+ return std::string("int") + utostr(cast<IntegerType>(Ty)->getBitWidth()) +
+ "_";
+ case Type::FloatTyID: return "float_";
+ case Type::DoubleTyID: return "double_";
+ case Type::LabelTyID: return "label_";
+ case Type::FunctionTyID: return "func_";
+ case Type::StructTyID: return "struct_";
+ case Type::ArrayTyID: return "array_";
+ case Type::PointerTyID: return "ptr_";
+ case Type::PackedTyID: return "packed_";
+ case Type::OpaqueTyID: return "opaque_";
+ default: return "other_";
}
- return prefix;
+ return "unknown_";
}
// Looks up the type in the symbol table and returns a pointer to its name or
@@ -313,14 +310,13 @@ std::string
CppWriter::getCppName(const Type* Ty)
{
// First, handle the primitive types .. easy
- if (Ty->isPrimitiveType()) {
+ if (Ty->isPrimitiveType() || Ty->isIntegral()) {
switch (Ty->getTypeID()) {
case Type::VoidTyID: return "Type::VoidTy";
- case Type::Int1TyID: return "Type::Int1Ty";
- case Type::Int8TyID: return "Type::Int8Ty";
- case Type::Int16TyID: return "Type::Int16Ty";
- case Type::Int32TyID: return "Type::Int32Ty";
- case Type::Int64TyID: return "Type::Int64Ty";
+ case Type::IntegerTyID: {
+ unsigned BitWidth = cast<IntegerType>(Ty)->getBitWidth();
+ return "IntegerType::get(" + utostr(BitWidth) + ")";
+ }
case Type::FloatTyID: return "Type::FloatTy";
case Type::DoubleTyID: return "Type::DoubleTy";
case Type::LabelTyID: return "Type::LabelTy";
@@ -414,7 +410,7 @@ CppWriter::printCppName(const Value* val) {
bool
CppWriter::printTypeInternal(const Type* Ty) {
// We don't print definitions for primitive types
- if (Ty->isPrimitiveType())
+ if (Ty->isPrimitiveType() || Ty->isIntegral())
return false;
// If we already defined this type, we don't need to define it again.
@@ -603,7 +599,8 @@ CppWriter::printTypes(const Module* M) {
// For primitive types and types already defined, just add a name
TypeMap::const_iterator TNI = TypeNames.find(TI->second);
- if (TI->second->isPrimitiveType() || TNI != TypeNames.end()) {
+ if (TI->second->isIntegral() || TI->second->isPrimitiveType() ||
+ TNI != TypeNames.end()) {
Out << "mod->addTypeName(\"";
printEscapedString(TI->first);
Out << "\", " << getCppName(TI->second) << ");";
diff --git a/utils/TableGen/IntrinsicEmitter.cpp b/utils/TableGen/IntrinsicEmitter.cpp
index fabb7e7714..7cd03751de 100644
--- a/utils/TableGen/IntrinsicEmitter.cpp
+++ b/utils/TableGen/IntrinsicEmitter.cpp
@@ -110,12 +110,14 @@ EmitIntrinsicToNameTable(const std::vector<CodeGenIntrinsic> &Ints,
static void EmitTypeVerify(std::ostream &OS, Record *ArgType) {
OS << "(int)" << ArgType->getValueAsString("TypeVal") << ", ";
+ // If this is an integer type, check the width is correct.
+ if (ArgType->isSubClassOf("LLVMIntegerType"))
+ OS << ArgType->getValueAsInt("Width") << ", ";
// If this is a packed type, check that the subtype and size are correct.
- if (ArgType->isSubClassOf("LLVMPackedType")) {
- Record *SubType = ArgType->getValueAsDef("ElTy");
- OS << "(int)" << SubType->getValueAsString("TypeVal") << ", "
- << ArgType->getValueAsInt("NumElts") << ", ";
+ else if (ArgType->isSubClassOf("LLVMPackedType")) {
+ EmitTypeVerify(OS, ArgType->getValueAsDef("ElTy"));
+ OS << ArgType->getValueAsInt("NumElts") << ", ";
}
}