From 832254e1c2387c0cbeb0a820b8315fbe85cb003a Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Fri, 2 Feb 2007 02:16:23 +0000 Subject: [PATCH] Changes to support making the shift instructions be true BinaryOperators. This feature is needed in order to support shifts of more than 255 bits on large integer types. This changes the syntax for llvm assembly to make shl, ashr and lshr instructions look like a binary operator: shl i32 %X, 1 instead of shl i32 %X, i8 1 Additionally, this should help a few passes perform additional optimizations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33776 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Constants.h | 2 - include/llvm/Instruction.def | 70 +- include/llvm/Instruction.h | 21 + include/llvm/Instructions.h | 77 - include/llvm/Support/InstVisitor.h | 1 - include/llvm/Support/PatternMatch.h | 32 +- lib/Analysis/ConstantFolding.cpp | 4 - lib/Analysis/IPA/Andersens.cpp | 3 - lib/Analysis/ScalarEvolution.cpp | 2 +- lib/AsmParser/Lexer.cpp.cvs | 2160 +++-- lib/AsmParser/Lexer.l | 12 +- lib/AsmParser/Lexer.l.cvs | 12 +- lib/AsmParser/llvmAsmParser.cpp.cvs | 7073 +++++++++-------- lib/AsmParser/llvmAsmParser.h.cvs | 439 +- lib/AsmParser/llvmAsmParser.y | 31 +- lib/AsmParser/llvmAsmParser.y.cvs | 31 +- lib/Bytecode/Reader/Reader.cpp | 7 - lib/CodeGen/IntrinsicLowering.cpp | 64 +- lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 5 +- lib/ExecutionEngine/Interpreter/Execution.cpp | 6 +- lib/ExecutionEngine/Interpreter/Interpreter.h | 7 +- lib/Makefile | 2 +- lib/Target/CBackend/CBackend.cpp | 17 +- lib/Transforms/ExprTypeConvert.cpp | 10 +- lib/Transforms/IPO/GlobalOpt.cpp | 4 - .../Scalar/InstructionCombining.cpp | 295 +- lib/Transforms/Scalar/LICM.cpp | 2 +- lib/Transforms/Scalar/SCCP.cpp | 1 - .../Scalar/ScalarReplAggregates.cpp | 12 +- lib/VMCore/AsmWriter.cpp | 3 +- lib/VMCore/Constants.cpp | 37 +- lib/VMCore/Instructions.cpp | 9 +- lib/VMCore/Verifier.cpp | 29 +- .../2003-05-21-MalformedShiftCrash.llx | 4 +- test/Assembler/2007-02-01-UpgradeShift.ll | 18 + test/CodeGen/ARM/2007-01-19-InfiniteLoop.ll | 12 +- test/CodeGen/ARM/2007-01-31-RegInfoAssert.ll | 2 +- test/CodeGen/ARM/bits.ll | 42 +- test/CodeGen/ARM/long_shift.ll | 16 +- test/CodeGen/ARM/sxt_rot.ll | 8 +- test/CodeGen/ARM/uxt_rot.ll | 4 +- test/CodeGen/Alpha/add.ll | 32 +- test/CodeGen/PowerPC/and-elim.ll | 4 +- test/CodeGen/PowerPC/and_sext.ll | 4 +- test/CodeGen/PowerPC/rlwinm2.ll | 43 +- test/CodeGen/PowerPC/rotl.ll | 67 +- test/CodeGen/X86/2007-01-13-StackPtrIndex.ll | 22 +- test/CodeGen/X86/trunc-to-bool.ll | 3 +- test/Integer/BitBit.ll | 9 +- test/Integer/a1.ll | 8 +- test/Integer/a15.ll | 12 +- test/Integer/a17.ll | 12 +- test/Integer/a31.ll | 12 +- test/Integer/a33.ll | 12 +- test/Integer/a63.ll | 12 +- test/Integer/a7.ll | 14 +- test/Integer/a9.ll | 12 +- test/Integer/testarith_bt.ll | 6 +- test/Integer/testlogical_new_bt.ll | 6 +- test/Transforms/InstCombine/add.ll | 6 +- test/Transforms/InstCombine/shift-simplify.ll | 33 +- test/Transforms/InstCombine/shift-sra.ll | 3 +- test/Transforms/InstCombine/signext.ll | 3 +- test/Transforms/Reassociate/shifttest.ll | 2 +- tools/llvm-upgrade/UpgradeInternals.h | 6 +- tools/llvm-upgrade/UpgradeLexer.cpp.cvs | 2160 +++-- tools/llvm-upgrade/UpgradeLexer.l | 9 +- tools/llvm-upgrade/UpgradeLexer.l.cvs | 9 +- tools/llvm-upgrade/UpgradeParser.cpp.cvs | 1480 ++-- tools/llvm-upgrade/UpgradeParser.h.cvs | 82 +- tools/llvm-upgrade/UpgradeParser.y | 50 +- tools/llvm-upgrade/UpgradeParser.y.cvs | 50 +- 72 files changed, 7699 insertions(+), 7070 deletions(-) create mode 100644 test/Assembler/2007-02-01-UpgradeShift.ll diff --git a/include/llvm/Constants.h b/include/llvm/Constants.h index e502a71f539..3d4ff90fccb 100644 --- a/include/llvm/Constants.h +++ b/include/llvm/Constants.h @@ -442,8 +442,6 @@ protected: Constant *C1, Constant *C2); static Constant *getCompareTy(unsigned short pred, Constant *C1, Constant *C2); - static Constant *getShiftTy(const Type *Ty, - unsigned Opcode, Constant *C1, Constant *C2); static Constant *getSelectTy(const Type *Ty, Constant *C1, Constant *C2, Constant *C3); static Constant *getGetElementPtrTy(const Type *Ty, Constant *C, diff --git a/include/llvm/Instruction.def b/include/llvm/Instruction.def index c33c4483be6..41540c2a9c4 100644 --- a/include/llvm/Instruction.def +++ b/include/llvm/Instruction.def @@ -114,49 +114,49 @@ HANDLE_BINARY_INST(13, URem , BinaryOperator) HANDLE_BINARY_INST(14, SRem , BinaryOperator) HANDLE_BINARY_INST(15, FRem , BinaryOperator) -// Logical operators... -HANDLE_BINARY_INST(16, And , BinaryOperator) -HANDLE_BINARY_INST(17, Or , BinaryOperator) -HANDLE_BINARY_INST(18, Xor , BinaryOperator) - LAST_BINARY_INST(18) +// Logical operators (integer operands) +HANDLE_BINARY_INST(16, Shl , BinaryOperator) // Shift left (logical) +HANDLE_BINARY_INST(17, LShr , BinaryOperator) // Shift right (logical) +HANDLE_BINARY_INST(18, AShr , BinaryOperator) // shift right (arithmetic) +HANDLE_BINARY_INST(19, And , BinaryOperator) +HANDLE_BINARY_INST(20, Or , BinaryOperator) +HANDLE_BINARY_INST(21, Xor , BinaryOperator) + LAST_BINARY_INST(21) // Memory operators... - FIRST_MEMORY_INST(19) -HANDLE_MEMORY_INST(19, Malloc, MallocInst) // Heap management instructions -HANDLE_MEMORY_INST(20, Free , FreeInst ) -HANDLE_MEMORY_INST(21, Alloca, AllocaInst) // Stack management -HANDLE_MEMORY_INST(22, Load , LoadInst ) // Memory manipulation instrs -HANDLE_MEMORY_INST(23, Store , StoreInst ) -HANDLE_MEMORY_INST(24, GetElementPtr, GetElementPtrInst) - LAST_MEMORY_INST(24) + FIRST_MEMORY_INST(22) +HANDLE_MEMORY_INST(22, Malloc, MallocInst) // Heap management instructions +HANDLE_MEMORY_INST(23, Free , FreeInst ) +HANDLE_MEMORY_INST(24, Alloca, AllocaInst) // Stack management +HANDLE_MEMORY_INST(25, Load , LoadInst ) // Memory manipulation instrs +HANDLE_MEMORY_INST(26, Store , StoreInst ) +HANDLE_MEMORY_INST(27, GetElementPtr, GetElementPtrInst) + LAST_MEMORY_INST(27) // Cast operators ... // NOTE: The order matters here because CastInst::isEliminableCastPair // NOTE: (see Instructions.cpp) encodes a table based on this ordering. - FIRST_CAST_INST(25) -HANDLE_CAST_INST(25, Trunc , TruncInst ) // Truncate integers -HANDLE_CAST_INST(26, ZExt , ZExtInst ) // Zero extend integers -HANDLE_CAST_INST(27, SExt , SExtInst ) // Sign extend integers -HANDLE_CAST_INST(28, FPToUI , FPToUIInst ) // floating point -> UInt -HANDLE_CAST_INST(29, FPToSI , FPToSIInst ) // floating point -> SInt -HANDLE_CAST_INST(30, UIToFP , UIToFPInst ) // UInt -> floating point -HANDLE_CAST_INST(31, SIToFP , SIToFPInst ) // SInt -> floating point -HANDLE_CAST_INST(32, FPTrunc , FPTruncInst ) // Truncate floating point -HANDLE_CAST_INST(33, FPExt , FPExtInst ) // Extend floating point -HANDLE_CAST_INST(34, PtrToInt, PtrToIntInst) // Pointer -> Integer -HANDLE_CAST_INST(35, IntToPtr, IntToPtrInst) // Integer -> Pointer -HANDLE_CAST_INST(36, BitCast , BitCastInst ) // Type cast - LAST_CAST_INST(36) + FIRST_CAST_INST(28) +HANDLE_CAST_INST(28, Trunc , TruncInst ) // Truncate integers +HANDLE_CAST_INST(29, ZExt , ZExtInst ) // Zero extend integers +HANDLE_CAST_INST(30, SExt , SExtInst ) // Sign extend integers +HANDLE_CAST_INST(31, FPToUI , FPToUIInst ) // floating point -> UInt +HANDLE_CAST_INST(32, FPToSI , FPToSIInst ) // floating point -> SInt +HANDLE_CAST_INST(33, UIToFP , UIToFPInst ) // UInt -> floating point +HANDLE_CAST_INST(34, SIToFP , SIToFPInst ) // SInt -> floating point +HANDLE_CAST_INST(35, FPTrunc , FPTruncInst ) // Truncate floating point +HANDLE_CAST_INST(36, FPExt , FPExtInst ) // Extend floating point +HANDLE_CAST_INST(37, PtrToInt, PtrToIntInst) // Pointer -> Integer +HANDLE_CAST_INST(38, IntToPtr, IntToPtrInst) // Integer -> Pointer +HANDLE_CAST_INST(39, BitCast , BitCastInst ) // Type cast + LAST_CAST_INST(39) // Other operators... - FIRST_OTHER_INST(37) -HANDLE_OTHER_INST(37, ICmp , ICmpInst ) // Integer comparison instruction -HANDLE_OTHER_INST(38, FCmp , FCmpInst ) // Floating point comparison instr. -HANDLE_OTHER_INST(39, PHI , PHINode ) // PHI node instruction -HANDLE_OTHER_INST(40, Call , CallInst ) // Call a function -HANDLE_OTHER_INST(41, Shl , ShiftInst ) // Shift Left operations (logical) -HANDLE_OTHER_INST(42, LShr , ShiftInst ) // Logical Shift right (unsigned) -HANDLE_OTHER_INST(43, AShr , ShiftInst ) // Arithmetic shift right (signed) + FIRST_OTHER_INST(40) +HANDLE_OTHER_INST(40, ICmp , ICmpInst ) // Integer comparison instruction +HANDLE_OTHER_INST(41, FCmp , FCmpInst ) // Floating point comparison instr. +HANDLE_OTHER_INST(42, PHI , PHINode ) // PHI node instruction +HANDLE_OTHER_INST(43, Call , CallInst ) // Call a function HANDLE_OTHER_INST(44, Select , SelectInst ) // select instruction HANDLE_OTHER_INST(45, UserOp1, Instruction) // May be used internally in a pass HANDLE_OTHER_INST(46, UserOp2, Instruction) // Internal to passes only diff --git a/include/llvm/Instruction.h b/include/llvm/Instruction.h index 3e9f749602d..15c59193044 100644 --- a/include/llvm/Instruction.h +++ b/include/llvm/Instruction.h @@ -129,6 +129,27 @@ public: return getOpcode() >= BinaryOpsBegin && getOpcode() < BinaryOpsEnd; } + /// @brief Determine if the Opcode is one of the shift instructions. + static inline bool isShift(unsigned Opcode) { + return Opcode >= Shl && Opcode <= AShr; + } + + /// @brief Determine if the instruction's opcode is one of the shift + /// instructions. + inline bool isShift() { return isShift(getOpcode()); } + + /// isLogicalShift - Return true if this is a logical shift left or a logical + /// shift right. + inline bool isLogicalShift() { + return getOpcode() == Shl || getOpcode() == LShr; + } + + /// isLogicalShift - Return true if this is a logical shift left or a logical + /// shift right. + inline bool isArithmeticShift() { + return getOpcode() == AShr; + } + /// @brief Determine if the OpCode is one of the CastInst instructions. static inline bool isCast(unsigned OpCode) { return OpCode >= CastOpsBegin && OpCode < CastOpsEnd; diff --git a/include/llvm/Instructions.h b/include/llvm/Instructions.h index 7812cdb5913..1c79bb4dda5 100644 --- a/include/llvm/Instructions.h +++ b/include/llvm/Instructions.h @@ -760,83 +760,6 @@ public: } }; - -//===----------------------------------------------------------------------===// -// ShiftInst Class -//===----------------------------------------------------------------------===// - -/// ShiftInst - This class represents left and right shift instructions. -/// -class ShiftInst : public Instruction { - Use Ops[2]; - ShiftInst(const ShiftInst &SI) - : Instruction(SI.getType(), SI.getOpcode(), Ops, 2) { - Ops[0].init(SI.Ops[0], this); - Ops[1].init(SI.Ops[1], this); - } - void init(OtherOps Opcode, Value *S, Value *SA) { - assert((Opcode == Shl || Opcode == LShr || Opcode == AShr) && - "ShiftInst Opcode invalid!"); - Ops[0].init(S, this); - Ops[1].init(SA, this); - } - -public: - ShiftInst(OtherOps Opcode, Value *S, Value *SA, const std::string &Name = "", - Instruction *InsertBefore = 0) - : Instruction(S->getType(), Opcode, Ops, 2, Name, InsertBefore) { - init(Opcode, S, SA); - } - ShiftInst(OtherOps Opcode, Value *S, Value *SA, const std::string &Name, - BasicBlock *InsertAtEnd) - : Instruction(S->getType(), Opcode, Ops, 2, Name, InsertAtEnd) { - init(Opcode, S, SA); - } - - OtherOps getOpcode() const { - return static_cast(Instruction::getOpcode()); - } - - /// Transparently provide more efficient getOperand methods. - Value *getOperand(unsigned i) const { - assert(i < 2 && "getOperand() out of range!"); - return Ops[i]; - } - void setOperand(unsigned i, Value *Val) { - assert(i < 2 && "setOperand() out of range!"); - Ops[i] = Val; - } - unsigned getNumOperands() const { return 2; } - - /// isLogicalShift - Return true if this is a logical shift left or a logical - /// shift right. - bool isLogicalShift() const { - unsigned opcode = getOpcode(); - return opcode == Instruction::Shl || opcode == Instruction::LShr; - } - - - /// isArithmeticShift - Return true if this is a sign-extending shift right - /// operation. - bool isArithmeticShift() const { - return !isLogicalShift(); - } - - - virtual ShiftInst *clone() const; - - // Methods for support type inquiry through isa, cast, and dyn_cast: - static inline bool classof(const ShiftInst *) { return true; } - static inline bool classof(const Instruction *I) { - return (I->getOpcode() == Instruction::LShr) | - (I->getOpcode() == Instruction::AShr) | - (I->getOpcode() == Instruction::Shl); - } - static inline bool classof(const Value *V) { - return isa(V) && classof(cast(V)); - } -}; - //===----------------------------------------------------------------------===// // SelectInst Class //===----------------------------------------------------------------------===// diff --git a/include/llvm/Support/InstVisitor.h b/include/llvm/Support/InstVisitor.h index 15e5e9822b1..e848c9b5761 100644 --- a/include/llvm/Support/InstVisitor.h +++ b/include/llvm/Support/InstVisitor.h @@ -190,7 +190,6 @@ public: RetTy visitBitCastInst(BitCastInst &I) { DELEGATE(CastInst); } RetTy visitSelectInst(SelectInst &I) { DELEGATE(Instruction); } RetTy visitCallInst(CallInst &I) { DELEGATE(Instruction); } - RetTy visitShiftInst(ShiftInst &I) { DELEGATE(Instruction); } RetTy visitVAArgInst(VAArgInst &I) { DELEGATE(Instruction); } RetTy visitExtractElementInst(ExtractElementInst &I) { DELEGATE(Instruction);} RetTy visitInsertElementInst(InsertElementInst &I) { DELEGATE(Instruction); } diff --git a/include/llvm/Support/PatternMatch.h b/include/llvm/Support/PatternMatch.h index 97e9b5f961c..3cf037fa057 100644 --- a/include/llvm/Support/PatternMatch.h +++ b/include/llvm/Support/PatternMatch.h @@ -166,27 +166,27 @@ inline BinaryOp_match m_Xor(const LHS &L, } template -inline BinaryOp_match m_Shl(const LHS &L, const RHS &R) { - return BinaryOp_match(L, R); +inline BinaryOp_match m_Shl(const LHS &L, + const RHS &R) { + return BinaryOp_match(L, R); } template -inline BinaryOp_match m_LShr(const LHS &L, const RHS &R) { - return BinaryOp_match(L, R); +inline BinaryOp_match m_LShr(const LHS &L, + const RHS &R) { + return BinaryOp_match(L, R); } template -inline BinaryOp_match m_AShr(const LHS &L, const RHS &R) { - return BinaryOp_match(L, R); +inline BinaryOp_match m_AShr(const LHS &L, + const RHS &R) { + return BinaryOp_match(L, R); } //===----------------------------------------------------------------------===// // Matchers for either AShr or LShr .. for convenience // -template +template struct Shr_match { LHS_t L; RHS_t R; @@ -248,18 +248,18 @@ struct BinaryOpClass_match { }; template -inline BinaryOpClass_match -m_Shift(Instruction::OtherOps &Op, const LHS &L, const RHS &R) { +inline BinaryOpClass_match +m_Shift(Instruction::BinaryOps &Op, const LHS &L, const RHS &R) { return BinaryOpClass_match(Op, L, R); + BinaryOperator, Instruction::BinaryOps>(Op, L, R); } template -inline BinaryOpClass_match +inline BinaryOpClass_match m_Shift(const LHS &L, const RHS &R) { - Instruction::OtherOps Op; + Instruction::BinaryOps Op; return BinaryOpClass_match(Op, L, R); + BinaryOperator, Instruction::BinaryOps>(Op, L, R); } //===----------------------------------------------------------------------===// diff --git a/lib/Analysis/ConstantFolding.cpp b/lib/Analysis/ConstantFolding.cpp index 1bf6b50333e..25a64ab9a68 100644 --- a/lib/Analysis/ConstantFolding.cpp +++ b/lib/Analysis/ConstantFolding.cpp @@ -216,10 +216,6 @@ Constant *llvm::ConstantFoldInstOperands(const Instruction* I, case Instruction::FCmp: return ConstantExpr::getCompare(cast(I)->getPredicate(), Ops[0], Ops[1]); - case Instruction::Shl: - case Instruction::LShr: - case Instruction::AShr: - return ConstantExpr::get(Opc, Ops[0], Ops[1]); case Instruction::Trunc: case Instruction::ZExt: case Instruction::SExt: diff --git a/lib/Analysis/IPA/Andersens.cpp b/lib/Analysis/IPA/Andersens.cpp index b6855f65030..aa2188bc951 100644 --- a/lib/Analysis/IPA/Andersens.cpp +++ b/lib/Analysis/IPA/Andersens.cpp @@ -776,9 +776,6 @@ void Andersens::visitInstruction(Instruction &I) { case Instruction::Unwind: case Instruction::Unreachable: case Instruction::Free: - case Instruction::Shl: - case Instruction::LShr: - case Instruction::AShr: case Instruction::ICmp: case Instruction::FCmp: return; diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp index 75dabf7cadc..a81f24f117f 100644 --- a/lib/Analysis/ScalarEvolution.cpp +++ b/lib/Analysis/ScalarEvolution.cpp @@ -1736,7 +1736,7 @@ ComputeLoadConstantCompareIterationCount(LoadInst *LI, Constant *RHS, /// CanConstantFold - Return true if we can constant fold an instruction of the /// specified type, assuming that all operands were constants. static bool CanConstantFold(const Instruction *I) { - if (isa(I) || isa(I) || isa(I) || + if (isa(I) || isa(I) || isa(I) || isa(I) || isa(I)) return true; diff --git a/lib/AsmParser/Lexer.cpp.cvs b/lib/AsmParser/Lexer.cpp.cvs index 991f4690dd9..f2e3e13a92a 100644 --- a/lib/AsmParser/Lexer.cpp.cvs +++ b/lib/AsmParser/Lexer.cpp.cvs @@ -1,94 +1,51 @@ -#line 2 "Lexer.cpp" - -#line 4 "Lexer.cpp" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ +#define yy_create_buffer llvmAsm_create_buffer +#define yy_delete_buffer llvmAsm_delete_buffer +#define yy_scan_buffer llvmAsm_scan_buffer +#define yy_scan_string llvmAsm_scan_string +#define yy_scan_bytes llvmAsm_scan_bytes +#define yy_flex_debug llvmAsm_flex_debug +#define yy_init_buffer llvmAsm_init_buffer +#define yy_flush_buffer llvmAsm_flush_buffer +#define yy_load_buffer_state llvmAsm_load_buffer_state +#define yy_switch_to_buffer llvmAsm_switch_to_buffer +#define yyin llvmAsmin +#define yyleng llvmAsmleng +#define yylex llvmAsmlex +#define yyout llvmAsmout +#define yyrestart llvmAsmrestart +#define yytext llvmAsmtext +#define yylineno llvmAsmlineno + +#line 20 "Lexer.cpp" +/* A lexical scanner generated by flex*/ + +/* Scanner skeleton version: + * $Header$ + */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 33 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ -/* begin standard C headers. */ #include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif +#include -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) +/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ +#ifdef c_plusplus +#ifndef __cplusplus +#define __cplusplus #endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) #endif -#endif /* ! FLEXINT_H */ #ifdef __cplusplus +#include + +/* Use prototypes in function declarations. */ +#define YY_USE_PROTOS + /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST @@ -96,17 +53,34 @@ typedef unsigned int flex_uint32_t; #if __STDC__ +#define YY_USE_PROTOS #define YY_USE_CONST #endif /* __STDC__ */ #endif /* ! __cplusplus */ +#ifdef __TURBOC__ + #pragma warn -rch + #pragma warn -use +#include +#include +#define YY_USE_CONST +#define YY_USE_PROTOS +#endif + #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif + +#ifdef YY_USE_PROTOS +#define YY_PROTO(proto) proto +#else +#define YY_PROTO(proto) () +#endif + /* Returned upon end-of-file. */ #define YY_NULL 0 @@ -121,88 +95,80 @@ typedef unsigned int flex_uint32_t; * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ -#define BEGIN (yy_start) = 1 + 2 * +#define BEGIN yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ -#define YY_START (((yy_start) - 1) / 2) +#define YY_START ((yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE llvmAsmrestart(llvmAsmin ) +#define YY_NEW_FILE yyrestart( yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ -#ifndef YY_BUF_SIZE #define YY_BUF_SIZE (16384*64) -#endif -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -extern int llvmAsmleng; -extern FILE *llvmAsmin, *llvmAsmout; +extern int yyleng; +extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires - * access to the local variable yy_act. Since yyless() is a macro, it would break - * existing scanners that call yyless() from OUTSIDE llvmAsmlex. - * One obvious solution it to make yy_act a global. I tried that, and saw - * a 5% performance hit in a non-llvmAsmlineno scanner, because yy_act is - * normally declared as a register variable-- so it is not worth it. - */ - #define YY_LESS_LINENO(n) \ - do { \ - int yyl;\ - for ( yyl = n; yyl < llvmAsmleng; ++yyl )\ - if ( llvmAsmtext[yyl] == '\n' )\ - --llvmAsmlineno;\ - }while(0) - -/* Return all but the first "n" matched characters back to the input stream. */ +/* The funky do-while in the following #define is used to turn the definition + * int a single C statement (which needs a semi-colon terminator). This + * avoids problems with code like: + * + * if ( condition_holds ) + * yyless( 5 ); + * else + * do_something_else(); + * + * Prior to using the do-while the compiler would get upset at the + * "else" because it interpreted the "if" statement as being all + * done when it reached the ';' after the yyless() call. + */ + +/* Return all but the first 'n' matched characters back to the input stream. */ + #define yyless(n) \ do \ { \ - /* Undo effects of setting up llvmAsmtext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ + /* Undo effects of setting up yytext. */ \ + *yy_cp = yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up llvmAsmtext again */ \ + yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) -#define unput(c) yyunput( c, (yytext_ptr) ) +#define unput(c) yyunput( c, yytext_ptr ) + +/* Some routines like yy_flex_realloc() are emitted as static but are + not called by all lexers. This generates warnings in some compilers, + notably GCC. Arrange to suppress these. */ +#ifdef __GNUC__ +#define YY_MAY_BE_UNUSED __attribute__((unused)) +#else +#define YY_MAY_BE_UNUSED +#endif /* The following is because we cannot portably get our hands on size_t * (without autoconf's help, which isn't available because we want * flex-generated scanners to compile on their own). */ - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T typedef unsigned int yy_size_t; -#endif -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE + struct yy_buffer_state { FILE *yy_input_file; @@ -239,16 +205,12 @@ struct yy_buffer_state */ int yy_at_bol; - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; - #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process @@ -258,201 +220,197 @@ struct yy_buffer_state * possible backing-up. * * When we actually see the EOF, we change the status to "new" - * (via llvmAsmrestart()), so that the user can continue scanning by - * just pointing llvmAsmin at a new input file. + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ +static YY_BUFFER_STATE yy_current_buffer = 0; /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". - * - * Returns the top of the stack, or NULL. */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) +#define YY_CURRENT_BUFFER yy_current_buffer -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] -/* yy_hold_char holds the character lost when llvmAsmtext is formed. */ +/* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; + static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int llvmAsmleng; + + +int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; -static int yy_init = 0; /* whether we need to initialize */ +static int yy_init = 1; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ -/* Flag which is used to allow llvmAsmwrap()'s to do buffer switches - * instead of setting up a fresh llvmAsmin. A bit of a hack ... +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; -void llvmAsmrestart (FILE *input_file ); -void llvmAsm_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE llvmAsm_create_buffer (FILE *file,int size ); -void llvmAsm_delete_buffer (YY_BUFFER_STATE b ); -void llvmAsm_flush_buffer (YY_BUFFER_STATE b ); -void llvmAsmpush_buffer_state (YY_BUFFER_STATE new_buffer ); -void llvmAsmpop_buffer_state (void ); +void yyrestart YY_PROTO(( FILE *input_file )); -static void llvmAsmensure_buffer_stack (void ); -static void llvmAsm_load_buffer_state (void ); -static void llvmAsm_init_buffer (YY_BUFFER_STATE b,FILE *file ); +void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); +void yy_load_buffer_state YY_PROTO(( void )); +YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); +void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); +void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); +void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); +#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) -#define YY_FLUSH_BUFFER llvmAsm_flush_buffer(YY_CURRENT_BUFFER ) +YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); +YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); +YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); -YY_BUFFER_STATE llvmAsm_scan_buffer (char *base,yy_size_t size ); -YY_BUFFER_STATE llvmAsm_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE llvmAsm_scan_bytes (yyconst char *bytes,int len ); +static void *yy_flex_alloc YY_PROTO(( yy_size_t )); +static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED; +static void yy_flex_free YY_PROTO(( void * )); -void *llvmAsmalloc (yy_size_t ); -void *llvmAsmrealloc (void *,yy_size_t ); -void llvmAsmfree (void * ); - -#define yy_new_buffer llvmAsm_create_buffer +#define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ - if ( ! YY_CURRENT_BUFFER ){ \ - llvmAsmensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ - if ( ! YY_CURRENT_BUFFER ){\ - llvmAsmensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_at_bol = at_bol; \ } -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) +#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) -/* Begin user sect3 */ -#define llvmAsmwrap(n) 1 -#define YY_SKIP_YYWRAP +#define YY_USES_REJECT +#define yywrap() 1 +#define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; - -FILE *llvmAsmin = (FILE *) 0, *llvmAsmout = (FILE *) 0; - +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; typedef int yy_state_type; +extern int yylineno; +int yylineno = 1; +extern char *yytext; +#define yytext_ptr yytext -extern int llvmAsmlineno; - -int llvmAsmlineno = 1; - -extern char *llvmAsmtext; -#define yytext_ptr llvmAsmtext - -static yy_state_type yy_get_previous_state (void ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); -static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); +static yy_state_type yy_get_previous_state YY_PROTO(( void )); +static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); +static int yy_get_next_buffer YY_PROTO(( void )); +static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); /* Done after the current pattern has been matched and before the - * corresponding action - sets up llvmAsmtext. + * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - llvmAsmleng = (size_t) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ + yytext_ptr = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; + yy_c_buf_p = yy_cp; #define YY_NUM_RULES 134 #define YY_END_OF_BUFFER 135 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[539] = +static yyconst short int yy_acclist[215] = { 0, - 0, 0, 135, 133, 132, 132, 133, 133, 133, 133, - 133, 133, 125, 125, 1, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 0, 123, - 0, 121, 119, 128, 0, 126, 0, 130, 125, 0, - 1, 0, 120, 129, 0, 0, 0, 0, 0, 0, - 0, 105, 0, 36, 0, 0, 0, 0, 0, 0, - 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 64, 0, 0, 0, 0, 0, 0, 59, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 123, 119, 130, 21, 130, 0, 131, 0, 124, - 120, 49, 0, 0, 58, 0, 0, 34, 0, 0, - 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 51, 0, 73, 78, 76, - 77, 75, 74, 0, 79, 83, 0, 104, 0, 0, - - 0, 0, 0, 68, 66, 100, 0, 0, 0, 67, - 65, 0, 0, 50, 0, 0, 0, 0, 0, 0, - 0, 81, 72, 70, 0, 71, 69, 0, 82, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, - 0, 122, 130, 0, 0, 0, 130, 0, 0, 0, - 102, 0, 0, 84, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 62, 54, 0, - 0, 0, 0, 112, 57, 0, 0, 0, 61, 0, - 0, 0, 0, 0, 0, 0, 0, 113, 101, 0, - 0, 23, 0, 0, 127, 53, 0, 0, 87, 0, - - 0, 0, 56, 89, 0, 0, 25, 0, 0, 4, - 0, 46, 52, 0, 0, 0, 0, 55, 0, 42, - 0, 12, 0, 0, 86, 130, 31, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 5, 0, 43, 91, 0, 0, 0, 0, - 0, 0, 0, 88, 0, 0, 0, 0, 45, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, - 0, 0, 0, 85, 0, 22, 0, 0, 0, 0, - 0, 0, 0, 111, 0, 0, 39, 0, 0, 0, - 7, 0, 0, 0, 44, 0, 0, 38, 95, 94, - - 0, 0, 8, 16, 0, 0, 0, 0, 107, 0, - 110, 33, 47, 0, 0, 99, 0, 0, 93, 106, - 26, 27, 92, 0, 108, 103, 0, 0, 0, 0, - 0, 98, 0, 0, 6, 28, 0, 0, 0, 0, - 0, 90, 0, 0, 0, 0, 0, 0, 0, 32, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, - 0, 0, 0, 18, 0, 0, 0, 0, 10, 96, - 11, 97, 0, 0, 0, 30, 0, 0, 0, 13, - 0, 15, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, - - 0, 35, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 115, 0, 117, 118, 0, - 40, 0, 116, 19, 41, 0, 20, 0 + 135, 133, 134, 132, 133, 134, 132, 134, 133, 134, + 133, 134, 133, 134, 133, 134, 133, 134, 133, 134, + 125, 133, 134, 125, 133, 134, 1, 133, 134, 133, + 134, 133, 134, 133, 134, 133, 134, 133, 134, 133, + 134, 133, 134, 133, 134, 133, 134, 133, 134, 133, + 134, 133, 134, 133, 134, 133, 134, 133, 134, 133, + 134, 133, 134, 133, 134, 133, 134, 133, 134, 133, + 134, 133, 134, 133, 134, 123, 121, 119, 128, 126, + 130, 125, 1, 120, 129, 105, 36, 68, 50, 69, + 64, 24, 123, 119, 130, 21, 130, 131, 124, 120, + + 51, 63, 34, 37, 3, 53, 78, 83, 81, 82, + 80, 79, 84, 88, 104, 73, 71, 60, 72, 70, + 52, 86, 77, 75, 76, 74, 87, 85, 65, 122, + 130, 130, 62, 89, 67, 56, 112, 59, 66, 113, + 61, 23, 127, 55, 92, 58, 43, 25, 4, 48, + 54, 57, 44, 12, 91, 130, 31, 2, 5, 45, + 94, 42, 47, 114, 90, 22, 111, 39, 7, 46, + 38, 98, 97, 8, 16, 107, 110, 33, 49, 102, + 96, 106, 26, 27, 95, 108, 103, 101, 6, 28, + 93, 32, 9, 18, 10, 99, 11, 100, 30, 13, + + 15, 14, 29, 35, 17, 109, 115, 117, 118, 40, + 116, 19, 41, 20 } ; -static yyconst flex_int32_t yy_ec[256] = +static yyconst short int yy_accept[540] = + { 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, 74, 76, 76, + 77, 77, 78, 79, 80, 80, 81, 81, 82, 83, + 83, 84, 84, 85, 86, 86, 86, 86, 86, 86, + 86, 86, 87, 87, 88, 88, 88, 88, 88, 88, + 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 91, 91, 91, 91, 91, 91, 91, + + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 94, 95, 96, 97, 98, 98, 99, 99, + 100, 101, 102, 102, 102, 103, 103, 103, 104, 104, + 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 107, 107, 108, 109, + 110, 111, 112, 113, 113, 114, 115, 115, 116, 116, + + 116, 116, 116, 116, 117, 118, 119, 119, 119, 119, + 120, 121, 121, 121, 122, 122, 122, 122, 122, 122, + 122, 122, 123, 124, 125, 125, 126, 127, 127, 128, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 130, + 130, 130, 131, 132, 132, 132, 132, 133, 133, 133, + 133, 134, 134, 134, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 136, 137, + 137, 137, 137, 137, 138, 139, 139, 139, 139, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 141, 142, + 142, 142, 143, 143, 143, 144, 145, 145, 145, 146, + + 146, 146, 146, 147, 148, 148, 148, 149, 149, 149, + 150, 150, 151, 152, 152, 152, 152, 152, 153, 153, + 154, 154, 155, 155, 155, 156, 157, 158, 158, 158, + 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, + 159, 159, 159, 160, 160, 161, 162, 162, 162, 162, + 162, 162, 162, 162, 163, 163, 163, 163, 163, 164, + 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, + 165, 165, 165, 165, 166, 166, 167, 167, 167, 167, + 167, 167, 167, 167, 168, 168, 168, 169, 169, 169, + 169, 170, 170, 170, 170, 171, 171, 171, 172, 173, + + 174, 174, 174, 175, 176, 176, 176, 176, 176, 177, + 177, 178, 179, 180, 180, 180, 181, 181, 181, 182, + 183, 184, 185, 186, 186, 187, 188, 188, 188, 188, + 188, 188, 189, 189, 189, 190, 191, 191, 191, 191, + 191, 191, 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, 199, 199, 199, 199, 200, 200, 200, 200, + 201, 201, 202, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 204, 204, 204, 204, 204, + + 204, 204, 205, 205, 205, 205, 205, 206, 206, 206, + 206, 206, 206, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 208, 208, 209, 210, + 210, 211, 211, 212, 213, 214, 214, 215, 215 + } ; + +static yyconst int yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, @@ -484,7 +442,7 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[45] = +static yyconst int yy_meta[45] = { 0, 1, 1, 2, 3, 4, 1, 1, 4, 4, 4, 4, 4, 4, 5, 1, 1, 4, 4, 4, 4, @@ -493,7 +451,7 @@ static yyconst flex_int32_t yy_meta[45] = 4, 4, 4, 4 } ; -static yyconst flex_int16_t yy_base[547] = +static yyconst short int yy_base[547] = { 0, 0, 0, 1173, 1174, 1174, 1174, 1168, 1157, 35, 39, 43, 49, 55, 61, 0, 72, 64, 67, 66, 86, @@ -557,7 +515,7 @@ static yyconst flex_int16_t yy_base[547] = 254, 1054, 1057, 220, 1061, 167 } ; -static yyconst flex_int16_t yy_def[547] = +static yyconst short int yy_def[547] = { 0, 538, 1, 538, 538, 538, 538, 539, 540, 541, 538, 540, 540, 540, 540, 542, 543, 540, 540, 540, 540, @@ -621,7 +579,7 @@ static yyconst flex_int16_t yy_def[547] = 538, 538, 538, 538, 538, 538 } ; -static yyconst flex_int16_t yy_nxt[1219] = +static yyconst short int yy_nxt[1219] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 14, 14, 4, 15, 16, 8, 8, 8, 17, @@ -759,7 +717,7 @@ static yyconst flex_int16_t yy_nxt[1219] = 538, 538, 538, 538, 538, 538, 538, 538 } ; -static yyconst flex_int16_t yy_chk[1219] = +static yyconst short int yy_chk[1219] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -897,32 +855,22 @@ static yyconst flex_int16_t yy_chk[1219] = 538, 538, 538, 538, 538, 538, 538, 538 } ; -/* Table of booleans, true if rule could match eol. */ -static yyconst flex_int32_t yy_rule_can_match_eol[135] = - { 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, }; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -extern int llvmAsm_flex_debug; -int llvmAsm_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected +static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; +static char *yy_full_match; +static int yy_lp; +#define REJECT \ +{ \ +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \ +yy_cp = yy_full_match; /* restore poss. backed-over text */ \ +++yy_lp; \ +goto find_rule; \ +} #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET -char *llvmAsmtext; -#line 1 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +char *yytext; +#line 1 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +#define INITIAL 0 /*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===// // // The LLVM Compiler Infrastructure @@ -935,7 +883,8 @@ char *llvmAsmtext; // This file implements the flex scanner for LLVM assembly languages files. // //===----------------------------------------------------------------------===*/ -#line 28 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#define YY_NEVER_INTERACTIVE 1 +#line 28 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" #include "ParserInternals.h" #include "llvm/Module.h" #include @@ -944,10 +893,10 @@ char *llvmAsmtext; #include void set_scan_file(FILE * F){ - llvmAsm_switch_to_buffer(llvmAsm_create_buffer(F,YY_BUF_SIZE ) ); + yy_switch_to_buffer(yy_create_buffer( F, YY_BUF_SIZE ) ); } void set_scan_string (const char * str) { - llvmAsm_scan_string (str); + yy_scan_string (str); } // Construct a token value for a non-obsolete token @@ -1068,23 +1017,7 @@ using namespace llvm; /* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing * it to deal with 64 bit numbers. */ -#line 1072 "Lexer.cpp" - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals (void ); +#line 1021 "Lexer.cpp" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1092,30 +1025,65 @@ static int yy_init_globals (void ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int llvmAsmwrap (void ); +extern "C" int yywrap YY_PROTO(( void )); #else -extern int llvmAsmwrap (void ); +extern int yywrap YY_PROTO(( void )); +#endif #endif + +#ifndef YY_NO_UNPUT +static inline void yyunput YY_PROTO(( int c, char *buf_ptr )); #endif - static inline void yyunput (int c,char *buf_ptr ); - #ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); +static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); +static int yy_flex_strlen YY_PROTO(( yyconst char * )); #endif #ifndef YY_NO_INPUT - #ifdef __cplusplus -static int yyinput (void ); +static int yyinput YY_PROTO(( void )); +#else +static int input YY_PROTO(( void )); +#endif +#endif + +#if YY_STACK_USED +static int yy_start_stack_ptr = 0; +static int yy_start_stack_depth = 0; +static int *yy_start_stack = 0; +#ifndef YY_NO_PUSH_STATE +static void yy_push_state YY_PROTO(( int new_state )); +#endif +#ifndef YY_NO_POP_STATE +static void yy_pop_state YY_PROTO(( void )); +#endif +#ifndef YY_NO_TOP_STATE +static int yy_top_state YY_PROTO(( void )); +#endif + #else -static int input (void ); +#define YY_NO_PUSH_STATE 1 +#define YY_NO_POP_STATE 1 +#define YY_NO_TOP_STATE 1 #endif +#ifdef YY_MALLOC_DECL +YY_MALLOC_DECL +#else +#if __STDC__ +#ifndef __cplusplus +#include +#endif +#else +/* Just try to get by without declaring the routines. This will fail + * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) + * or sizeof(void*) != sizeof(int). + */ +#endif #endif /* Amount of stuff to slurp up with each read. */ @@ -1124,11 +1092,12 @@ static int input (void ); #endif /* Copy whatever the last rule matched to the standard output. */ + #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO (void) fwrite( llvmAsmtext, llvmAsmleng, 1, llvmAsmout ) +#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -1136,35 +1105,21 @@ static int input (void ); */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + if ( yy_current_buffer->yy_is_interactive ) \ { \ - int c = '*'; \ - size_t n; \ + int c = '*', n; \ for ( n = 0; n < max_size && \ - (c = getc( llvmAsmin )) != EOF && c != '\n'; ++n ) \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ - if ( c == EOF && ferror( llvmAsmin ) ) \ + if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, llvmAsmin))==0 && ferror(llvmAsmin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(llvmAsmin); \ - } \ - }\ -\ - + else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ + && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - @@ -1185,20 +1140,14 @@ static int input (void ); #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif -/* end tables serialization structures and prototypes */ - /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int llvmAsmlex (void); - -#define YY_DECL int llvmAsmlex (void) -#endif /* !YY_DECL */ +#define YY_DECL int yylex YY_PROTO(( void )) +#endif -/* Code executed at the beginning of each rule, after llvmAsmtext and llvmAsmleng +/* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION @@ -1213,67 +1162,60 @@ extern int llvmAsmlex (void); #define YY_RULE_SETUP \ YY_USER_ACTION -/** The main scanner function which does all the work. - */ YY_DECL -{ + { register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; + register char *yy_cp = NULL, *yy_bp = NULL; register int yy_act; - -#line 189 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" + +#line 189 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" -#line 1228 "Lexer.cpp" +#line 1175 "Lexer.cpp" - if ( !(yy_init) ) + if ( yy_init ) { - (yy_init) = 1; + yy_init = 0; #ifdef YY_USER_INIT YY_USER_INIT; #endif - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ + if ( ! yy_start ) + yy_start = 1; /* first start state */ - if ( ! llvmAsmin ) - llvmAsmin = stdin; + if ( ! yyin ) + yyin = stdin; - if ( ! llvmAsmout ) - llvmAsmout = stdout; + if ( ! yyout ) + yyout = stdout; - if ( ! YY_CURRENT_BUFFER ) { - llvmAsmensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE ); - } + if ( ! yy_current_buffer ) + yy_current_buffer = + yy_create_buffer( yyin, YY_BUF_SIZE ); - llvmAsm_load_buffer_state( ); + yy_load_buffer_state(); } while ( 1 ) /* loops until end-of-file is reached */ { - yy_cp = (yy_c_buf_p); + yy_cp = yy_c_buf_p; - /* Support of llvmAsmtext. */ - *yy_cp = (yy_hold_char); + /* Support of yytext. */ + *yy_cp = yy_hold_char; /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; - yy_current_state = (yy_start); + yy_current_state = yy_start; + yy_state_ptr = yy_state_buf; + *yy_state_ptr++ = yy_current_state; yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; @@ -1281,707 +1223,711 @@ yy_match: 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 != 538 ); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); yy_find_action: - yy_act = yy_accept[yy_current_state]; + yy_current_state = *--yy_state_ptr; + yy_lp = yy_accept[yy_current_state]; +find_rule: /* we branch to this label when backing up */ + for ( ; ; ) /* until we find what rule we matched */ + { + if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] ) + { + yy_act = yy_acclist[yy_lp]; + { + yy_full_match = yy_cp; + break; + } + } + --yy_cp; + yy_current_state = *--yy_state_ptr; + yy_lp = yy_accept[yy_current_state]; + } YY_DO_BEFORE_ACTION; - if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) + if ( yy_act != YY_END_OF_BUFFER ) { int yyl; - for ( yyl = 0; yyl < llvmAsmleng; ++yyl ) - if ( llvmAsmtext[yyl] == '\n' ) - - llvmAsmlineno++; -; + for ( yyl = 0; yyl < yyleng; ++yyl ) + if ( yytext[yyl] == '\n' ) + ++yylineno; } do_action: /* This label is used only to access EOF actions. */ + switch ( yy_act ) { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = (yy_hold_char); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - case 1: YY_RULE_SETUP -#line 191 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 191 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { /* Ignore comments for now */ } YY_BREAK case 2: YY_RULE_SETUP -#line 193 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 193 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return BEGINTOK; } YY_BREAK case 3: YY_RULE_SETUP -#line 194 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 194 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return ENDTOK; } YY_BREAK case 4: YY_RULE_SETUP -#line 195 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 195 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return TRUETOK; } YY_BREAK case 5: YY_RULE_SETUP -#line 196 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 196 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return FALSETOK; } YY_BREAK case 6: YY_RULE_SETUP -#line 197 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 197 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return DECLARE; } YY_BREAK case 7: YY_RULE_SETUP -#line 198 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 198 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return DEFINE; } YY_BREAK case 8: YY_RULE_SETUP -#line 199 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 199 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return GLOBAL; } YY_BREAK case 9: YY_RULE_SETUP -#line 200 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 200 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return CONSTANT; } YY_BREAK case 10: YY_RULE_SETUP -#line 201 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 201 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return INTERNAL; } YY_BREAK case 11: YY_RULE_SETUP -#line 202 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 202 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return LINKONCE; } YY_BREAK case 12: YY_RULE_SETUP -#line 203 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 203 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return WEAK; } YY_BREAK case 13: YY_RULE_SETUP -#line 204 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 204 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return APPENDING; } YY_BREAK case 14: YY_RULE_SETUP -#line 205 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 205 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return DLLIMPORT; } YY_BREAK case 15: YY_RULE_SETUP -#line 206 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 206 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return DLLEXPORT; } YY_BREAK case 16: YY_RULE_SETUP -#line 207 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 207 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return HIDDEN; } YY_BREAK case 17: YY_RULE_SETUP -#line 208 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 208 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return EXTERN_WEAK; } YY_BREAK case 18: YY_RULE_SETUP -#line 209 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 209 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return EXTERNAL; } YY_BREAK case 19: YY_RULE_SETUP -#line 210 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 210 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return IMPLEMENTATION; } YY_BREAK case 20: YY_RULE_SETUP -#line 211 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 211 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return ZEROINITIALIZER; } YY_BREAK case 21: YY_RULE_SETUP -#line 212 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 212 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return DOTDOTDOT; } YY_BREAK case 22: YY_RULE_SETUP -#line 213 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 213 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return UNDEF; } YY_BREAK case 23: YY_RULE_SETUP -#line 214 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 214 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return NULL_TOK; } YY_BREAK case 24: YY_RULE_SETUP -#line 215 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 215 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return TO; } YY_BREAK case 25: YY_RULE_SETUP -#line 216 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 216 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return TAIL; } YY_BREAK case 26: YY_RULE_SETUP -#line 217 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 217 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return TARGET; } YY_BREAK case 27: YY_RULE_SETUP -#line 218 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 218 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return TRIPLE; } YY_BREAK case 28: YY_RULE_SETUP -#line 219 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 219 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return DEPLIBS; } YY_BREAK case 29: YY_RULE_SETUP -#line 220 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 220 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return DATALAYOUT; } YY_BREAK case 30: YY_RULE_SETUP -#line 221 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 221 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return VOLATILE; } YY_BREAK case 31: YY_RULE_SETUP -#line 222 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 222 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return ALIGN; } YY_BREAK case 32: YY_RULE_SETUP -#line 223 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 223 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return SECTION; } YY_BREAK case 33: YY_RULE_SETUP -#line 224 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 224 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return MODULE; } YY_BREAK case 34: YY_RULE_SETUP -#line 225 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 225 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return ASM_TOK; } YY_BREAK case 35: YY_RULE_SETUP -#line 226 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 226 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return SIDEEFFECT; } YY_BREAK case 36: YY_RULE_SETUP -#line 228 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 228 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return CC_TOK; } YY_BREAK case 37: YY_RULE_SETUP -#line 229 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 229 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return CCC_TOK; } YY_BREAK case 38: YY_RULE_SETUP -#line 230 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 230 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return FASTCC_TOK; } YY_BREAK case 39: YY_RULE_SETUP -#line 231 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 231 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return COLDCC_TOK; } YY_BREAK case 40: YY_RULE_SETUP -#line 232 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 232 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return X86_STDCALLCC_TOK; } YY_BREAK case 41: YY_RULE_SETUP -#line 233 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 233 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { return X86_FASTCALLCC_TOK; } YY_BREAK case 42: YY_RULE_SETUP -#line 235 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TY(Type::VoidTy, VOID); } +#line 235 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return INREG; } YY_BREAK case 43: YY_RULE_SETUP -#line 236 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TY(Type::FloatTy, FLOAT); } +#line 236 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return SRET; } YY_BREAK case 44: YY_RULE_SETUP -#line 237 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TY(Type::DoubleTy,DOUBLE);} +#line 238 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TY(Type::VoidTy, VOID); } YY_BREAK case 45: YY_RULE_SETUP -#line 238 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TY(Type::LabelTy, LABEL); } +#line 239 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TY(Type::FloatTy, FLOAT); } YY_BREAK case 46: YY_RULE_SETUP -#line 239 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return TYPE; } +#line 240 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TY(Type::DoubleTy,DOUBLE);} YY_BREAK case 47: YY_RULE_SETUP -#line 240 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return OPAQUE; } +#line 241 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TY(Type::LabelTy, LABEL); } YY_BREAK case 48: YY_RULE_SETUP -#line 241 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ uint64_t NumBits = atoull(llvmAsmtext+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); - } +#line 242 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return TYPE; } YY_BREAK case 49: YY_RULE_SETUP -#line 249 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(BinaryOpVal, Add, ADD); } +#line 243 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return OPAQUE; } YY_BREAK case 50: YY_RULE_SETUP -#line 250 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(BinaryOpVal, Sub, SUB); } +#line 244 "/proj/llvm/llvm-4/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 51: YY_RULE_SETUP -#line 251 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(BinaryOpVal, Mul, MUL); } +#line 252 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, Add, ADD); } YY_BREAK case 52: YY_RULE_SETUP -#line 252 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(BinaryOpVal, UDiv, UDIV); } +#line 253 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, Sub, SUB); } YY_BREAK case 53: YY_RULE_SETUP -#line 253 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(BinaryOpVal, SDiv, SDIV); } +#line 254 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, Mul, MUL); } YY_BREAK case 54: YY_RULE_SETUP -#line 254 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(BinaryOpVal, FDiv, FDIV); } +#line 255 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, UDiv, UDIV); } YY_BREAK case 55: YY_RULE_SETUP -#line 255 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(BinaryOpVal, URem, UREM); } +#line 256 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, SDiv, SDIV); } YY_BREAK case 56: YY_RULE_SETUP -#line 256 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(BinaryOpVal, SRem, SREM); } +#line 257 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, FDiv, FDIV); } YY_BREAK case 57: YY_RULE_SETUP -#line 257 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(BinaryOpVal, FRem, FREM); } +#line 258 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, URem, UREM); } YY_BREAK case 58: YY_RULE_SETUP -#line 258 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(BinaryOpVal, And, AND); } +#line 259 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, SRem, SREM); } YY_BREAK case 59: YY_RULE_SETUP -#line 259 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(BinaryOpVal, Or , OR ); } +#line 260 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, FRem, FREM); } YY_BREAK case 60: YY_RULE_SETUP -#line 260 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(BinaryOpVal, Xor, XOR); } +#line 261 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, Shl, SHL); } YY_BREAK case 61: YY_RULE_SETUP -#line 261 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, ICmp, ICMP); } +#line 262 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, LShr, LSHR); } YY_BREAK case 62: YY_RULE_SETUP -#line 262 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, FCmp, FCMP); } +#line 263 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, AShr, ASHR); } YY_BREAK case 63: YY_RULE_SETUP -#line 263 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return EQ; } +#line 264 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, And, AND); } YY_BREAK case 64: YY_RULE_SETUP -#line 264 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return NE; } +#line 265 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, Or , OR ); } YY_BREAK case 65: YY_RULE_SETUP -#line 265 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return SLT; } +#line 266 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(BinaryOpVal, Xor, XOR); } YY_BREAK case 66: YY_RULE_SETUP -#line 266 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return SGT; } +#line 267 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(OtherOpVal, ICmp, ICMP); } YY_BREAK case 67: YY_RULE_SETUP -#line 267 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return SLE; } +#line 268 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(OtherOpVal, FCmp, FCMP); } YY_BREAK case 68: YY_RULE_SETUP -#line 268 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return SGE; } +#line 270 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return EQ; } YY_BREAK case 69: YY_RULE_SETUP -#line 269 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return ULT; } +#line 271 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return NE; } YY_BREAK case 70: YY_RULE_SETUP -#line 270 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return UGT; } +#line 272 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return SLT; } YY_BREAK case 71: YY_RULE_SETUP -#line 271 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return ULE; } +#line 273 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return SGT; } YY_BREAK case 72: YY_RULE_SETUP -#line 272 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return UGE; } +#line 274 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return SLE; } YY_BREAK case 73: YY_RULE_SETUP -#line 273 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return OEQ; } +#line 275 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return SGE; } YY_BREAK case 74: YY_RULE_SETUP -#line 274 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return ONE; } +#line 276 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return ULT; } YY_BREAK case 75: YY_RULE_SETUP -#line 275 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return OLT; } +#line 277 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return UGT; } YY_BREAK case 76: YY_RULE_SETUP -#line 276 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return OGT; } +#line 278 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return ULE; } YY_BREAK case 77: YY_RULE_SETUP -#line 277 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return OLE; } +#line 279 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return UGE; } YY_BREAK case 78: YY_RULE_SETUP -#line 278 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return OGE; } +#line 280 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return OEQ; } YY_BREAK case 79: YY_RULE_SETUP -#line 279 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return ORD; } +#line 281 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return ONE; } YY_BREAK case 80: YY_RULE_SETUP -#line 280 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return UNO; } +#line 282 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return OLT; } YY_BREAK case 81: YY_RULE_SETUP -#line 281 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return UEQ; } +#line 283 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return OGT; } YY_BREAK case 82: YY_RULE_SETUP -#line 282 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return UNE; } +#line 284 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return OLE; } YY_BREAK case 83: YY_RULE_SETUP -#line 284 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, PHI, PHI_TOK); } +#line 285 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return OGE; } YY_BREAK case 84: YY_RULE_SETUP -#line 285 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, Call, CALL); } +#line 286 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return ORD; } YY_BREAK case 85: YY_RULE_SETUP -#line 286 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(CastOpVal, Trunc, TRUNC); } +#line 287 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return UNO; } YY_BREAK case 86: YY_RULE_SETUP -#line 287 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(CastOpVal, ZExt, ZEXT); } +#line 288 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return UEQ; } YY_BREAK case 87: YY_RULE_SETUP -#line 288 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(CastOpVal, SExt, SEXT); } +#line 289 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return UNE; } YY_BREAK case 88: YY_RULE_SETUP -#line 289 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return INREG; } +#line 291 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(OtherOpVal, PHI, PHI_TOK); } YY_BREAK case 89: YY_RULE_SETUP -#line 290 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return SRET; } +#line 292 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(OtherOpVal, Call, CALL); } YY_BREAK case 90: YY_RULE_SETUP -#line 291 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(CastOpVal, FPTrunc, FPTRUNC); } +#line 293 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, Trunc, TRUNC); } YY_BREAK case 91: YY_RULE_SETUP -#line 292 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(CastOpVal, FPExt, FPEXT); } +#line 294 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, ZExt, ZEXT); } YY_BREAK case 92: YY_RULE_SETUP -#line 293 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(CastOpVal, UIToFP, UITOFP); } +#line 295 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, SExt, SEXT); } YY_BREAK case 93: YY_RULE_SETUP -#line 294 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(CastOpVal, SIToFP, SITOFP); } +#line 296 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, FPTrunc, FPTRUNC); } YY_BREAK case 94: YY_RULE_SETUP -#line 295 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(CastOpVal, FPToUI, FPTOUI); } +#line 297 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, FPExt, FPEXT); } YY_BREAK case 95: YY_RULE_SETUP -#line 296 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(CastOpVal, FPToSI, FPTOSI); } +#line 298 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, UIToFP, UITOFP); } YY_BREAK case 96: YY_RULE_SETUP -#line 297 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(CastOpVal, IntToPtr, INTTOPTR); } +#line 299 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, SIToFP, SITOFP); } YY_BREAK case 97: YY_RULE_SETUP -#line 298 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(CastOpVal, PtrToInt, PTRTOINT); } +#line 300 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, FPToUI, FPTOUI); } YY_BREAK case 98: YY_RULE_SETUP -#line 299 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(CastOpVal, BitCast, BITCAST); } +#line 301 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, FPToSI, FPTOSI); } YY_BREAK case 99: YY_RULE_SETUP -#line 300 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, Select, SELECT); } +#line 302 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, IntToPtr, INTTOPTR); } YY_BREAK case 100: YY_RULE_SETUP -#line 301 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, Shl, SHL); } +#line 303 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, PtrToInt, PTRTOINT); } YY_BREAK case 101: YY_RULE_SETUP -#line 302 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, LShr, LSHR); } +#line 304 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(CastOpVal, BitCast, BITCAST); } YY_BREAK case 102: YY_RULE_SETUP -#line 303 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ RET_TOK(OtherOpVal, AShr, ASHR); } +#line 305 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ RET_TOK(OtherOpVal, Select, SELECT); } YY_BREAK case 103: YY_RULE_SETUP -#line 304 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 306 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, VAArg , VAARG); } YY_BREAK case 104: YY_RULE_SETUP -#line 305 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 307 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(TermOpVal, Ret, RET); } YY_BREAK case 105: YY_RULE_SETUP -#line 306 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 308 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(TermOpVal, Br, BR); } YY_BREAK case 106: YY_RULE_SETUP -#line 307 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 309 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(TermOpVal, Switch, SWITCH); } YY_BREAK case 107: YY_RULE_SETUP -#line 308 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 310 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(TermOpVal, Invoke, INVOKE); } YY_BREAK case 108: YY_RULE_SETUP -#line 309 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 311 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(TermOpVal, Unwind, UNWIND); } YY_BREAK case 109: YY_RULE_SETUP -#line 310 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 312 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(TermOpVal, Unreachable, UNREACHABLE); } YY_BREAK case 110: YY_RULE_SETUP -#line 312 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 314 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(MemOpVal, Malloc, MALLOC); } YY_BREAK case 111: YY_RULE_SETUP -#line 313 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 315 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(MemOpVal, Alloca, ALLOCA); } YY_BREAK case 112: YY_RULE_SETUP -#line 314 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 316 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(MemOpVal, Free, FREE); } YY_BREAK case 113: YY_RULE_SETUP -#line 315 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 317 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(MemOpVal, Load, LOAD); } YY_BREAK case 114: YY_RULE_SETUP -#line 316 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 318 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(MemOpVal, Store, STORE); } YY_BREAK case 115: YY_RULE_SETUP -#line 317 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 319 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); } YY_BREAK case 116: YY_RULE_SETUP -#line 319 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 321 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); } YY_BREAK case 117: YY_RULE_SETUP -#line 320 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 322 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); } YY_BREAK case 118: YY_RULE_SETUP -#line 321 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 323 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); } YY_BREAK case 119: YY_RULE_SETUP -#line 324 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 326 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { - UnEscapeLexed(llvmAsmtext+1); - llvmAsmlval.StrVal = strdup(llvmAsmtext+1); // Skip % + UnEscapeLexed(yytext+1); + llvmAsmlval.StrVal = strdup(yytext+1); // Skip % return LOCALVAR; } YY_BREAK case 120: YY_RULE_SETUP -#line 329 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 331 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { - UnEscapeLexed(llvmAsmtext+1); - llvmAsmlval.StrVal = strdup(llvmAsmtext+1); // Skip @ + UnEscapeLexed(yytext+1); + llvmAsmlval.StrVal = strdup(yytext+1); // Skip @ return GLOBALVAR; } YY_BREAK case 121: YY_RULE_SETUP -#line 334 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 336 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { - llvmAsmtext[strlen(llvmAsmtext)-1] = 0; // nuke colon - UnEscapeLexed(llvmAsmtext); - llvmAsmlval.StrVal = strdup(llvmAsmtext); + yytext[strlen(yytext)-1] = 0; // nuke colon + UnEscapeLexed(yytext); + llvmAsmlval.StrVal = strdup(yytext); return LABELSTR; } YY_BREAK case 122: -/* rule 122 can match eol */ YY_RULE_SETUP -#line 340 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 342 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { - llvmAsmtext[strlen(llvmAsmtext)-2] = 0; // nuke colon, end quote - UnEscapeLexed(llvmAsmtext+1); - llvmAsmlval.StrVal = strdup(llvmAsmtext+1); + yytext[strlen(yytext)-2] = 0; // nuke colon, end quote + UnEscapeLexed(yytext+1); + llvmAsmlval.StrVal = strdup(yytext+1); return LABELSTR; } YY_BREAK case 123: -/* rule 123 can match eol */ YY_RULE_SETUP -#line 347 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 349 "/proj/llvm/llvm-4/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 // [sbyte] c"Hello World\00" constant, for example. // - llvmAsmtext[strlen(llvmAsmtext)-1] = 0; // nuke end quote - llvmAsmlval.StrVal = strdup(llvmAsmtext+1); // Nuke start quote + yytext[strlen(yytext)-1] = 0; // nuke end quote + llvmAsmlval.StrVal = strdup(yytext+1); // Nuke start quote return STRINGCONSTANT; } YY_BREAK case 124: -/* rule 124 can match eol */ YY_RULE_SETUP -#line 356 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 358 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { - llvmAsmtext[strlen(llvmAsmtext)-1] = 0; // nuke end quote - llvmAsmlval.StrVal = strdup(llvmAsmtext+2); // Nuke @, quote + yytext[strlen(yytext)-1] = 0; // nuke end quote + llvmAsmlval.StrVal = strdup(yytext+2); // Nuke @, quote return ATSTRINGCONSTANT; } YY_BREAK case 125: YY_RULE_SETUP -#line 364 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ llvmAsmlval.UInt64Val = atoull(llvmAsmtext); return EUINT64VAL; } +#line 366 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ llvmAsmlval.UInt64Val = atoull(yytext); return EUINT64VAL; } YY_BREAK case 126: YY_RULE_SETUP -#line 365 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 367 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { - uint64_t Val = atoull(llvmAsmtext+1); + uint64_t Val = atoull(yytext+1); // +1: we have bigger negative range if (Val > (uint64_t)INT64_MAX+1) GenerateError("Constant too large for signed 64 bits!"); @@ -1991,17 +1937,17 @@ YY_RULE_SETUP YY_BREAK case 127: YY_RULE_SETUP -#line 373 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 375 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { - llvmAsmlval.UInt64Val = HexIntToVal(llvmAsmtext+3); - return llvmAsmtext[0] == 's' ? ESINT64VAL : EUINT64VAL; + llvmAsmlval.UInt64Val = HexIntToVal(yytext+3); + return yytext[0] == 's' ? ESINT64VAL : EUINT64VAL; } YY_BREAK case 128: YY_RULE_SETUP -#line 378 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 380 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { - uint64_t Val = atoull(llvmAsmtext+1); + uint64_t Val = atoull(yytext+1); if ((unsigned)Val != Val) GenerateError("Invalid value number (too large)!"); llvmAsmlval.UIntVal = unsigned(Val); @@ -2010,9 +1956,9 @@ YY_RULE_SETUP YY_BREAK case 129: YY_RULE_SETUP -#line 385 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 387 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { - uint64_t Val = atoull(llvmAsmtext+1); + uint64_t Val = atoull(yytext+1); if ((unsigned)Val != Val) GenerateError("Invalid value number (too large)!"); llvmAsmlval.UIntVal = unsigned(Val); @@ -2021,65 +1967,64 @@ YY_RULE_SETUP YY_BREAK case 130: YY_RULE_SETUP -#line 393 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ llvmAsmlval.FPVal = atof(llvmAsmtext); return FPVAL; } +#line 395 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ llvmAsmlval.FPVal = atof(yytext); return FPVAL; } YY_BREAK case 131: YY_RULE_SETUP -#line 394 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ llvmAsmlval.FPVal = HexToFP(llvmAsmtext); return FPVAL; } +#line 396 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ llvmAsmlval.FPVal = HexToFP(yytext); return FPVAL; } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 396 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 398 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { /* Make sure to free the internal buffers for flex when we are * done reading our input! */ - llvmAsm_delete_buffer(YY_CURRENT_BUFFER); + yy_delete_buffer(YY_CURRENT_BUFFER); return EOF; } YY_BREAK case 132: -/* rule 132 can match eol */ YY_RULE_SETUP -#line 404 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 406 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" { /* Ignore whitespace */ } YY_BREAK case 133: YY_RULE_SETUP -#line 405 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" -{ return llvmAsmtext[0]; } +#line 407 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" +{ return yytext[0]; } YY_BREAK case 134: YY_RULE_SETUP -#line 407 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" +#line 409 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2059 "Lexer.cpp" +#line 2004 "Lexer.cpp" case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); + *yy_cp = yy_hold_char; YY_RESTORE_YY_MORE_OFFSET - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user - * just pointed llvmAsmin at a new source and called - * llvmAsmlex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between yy_current_buffer and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = llvmAsmin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + yy_n_chars = yy_current_buffer->yy_n_chars; + yy_current_buffer->yy_input_file = yyin; + yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position @@ -2089,13 +2034,13 @@ YY_FATAL_ERROR( "flex scanner jammed" ); * end-of-buffer state). Contrast this with the test * in input(). */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) { /* This was really a NUL. */ yy_state_type yy_next_state; - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; - yy_current_state = yy_get_previous_state( ); + yy_current_state = yy_get_previous_state(); /* Okay, we're now positioned to make the NUL * transition. We couldn't have @@ -2108,42 +2053,41 @@ YY_FATAL_ERROR( "flex scanner jammed" ); yy_next_state = yy_try_NUL_trans( yy_current_state ); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; + yy_bp = yytext_ptr + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); + yy_cp = ++yy_c_buf_p; yy_current_state = yy_next_state; goto yy_match; } else { - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); + yy_cp = yy_c_buf_p; goto yy_find_action; } } - else switch ( yy_get_next_buffer( ) ) + else switch ( yy_get_next_buffer() ) { case EOB_ACT_END_OF_FILE: { - (yy_did_buffer_switch_on_eof) = 0; + yy_did_buffer_switch_on_eof = 0; - if ( llvmAsmwrap( ) ) + if ( yywrap() ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up - * llvmAsmtext, we can now set up + * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; @@ -2151,30 +2095,30 @@ YY_FATAL_ERROR( "flex scanner jammed" ); else { - if ( ! (yy_did_buffer_switch_on_eof) ) + if ( ! yy_did_buffer_switch_on_eof ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; + yy_c_buf_p = + yytext_ptr + yy_amount_of_matched_text; - yy_current_state = yy_get_previous_state( ); + yy_current_state = yy_get_previous_state(); - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + yy_c_buf_p = + &yy_current_buffer->yy_ch_buf[yy_n_chars]; - yy_current_state = yy_get_previous_state( ); + yy_current_state = yy_get_previous_state(); - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; goto yy_find_action; } break; @@ -2185,7 +2129,8 @@ YY_FATAL_ERROR( "flex scanner jammed" ); "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ -} /* end of llvmAsmlex */ + } /* end of yylex */ + /* yy_get_next_buffer - try to read in a new buffer * @@ -2194,20 +2139,21 @@ YY_FATAL_ERROR( "flex scanner jammed" ); * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ -static int yy_get_next_buffer (void) -{ - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); + +static int yy_get_next_buffer() + { + register char *dest = yy_current_buffer->yy_ch_buf; + register char *source = yytext_ptr; register int number_to_move, i; int ret_val; - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + if ( yy_current_buffer->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. @@ -2227,30 +2173,34 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + yy_current_buffer->yy_n_chars = yy_n_chars = 0; else { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + int num_to_read = + yy_current_buffer->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ +#ifdef YY_USES_REJECT + YY_FATAL_ERROR( +"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +#else /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + YY_BUFFER_STATE b = yy_current_buffer; int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); + (int) (yy_c_buf_p - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { @@ -2263,7 +2213,8 @@ static int yy_get_next_buffer (void) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - llvmAsmrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + yy_flex_realloc( (void *) b->yy_ch_buf, + b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ @@ -2273,35 +2224,35 @@ static int yy_get_next_buffer (void) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + num_to_read = yy_current_buffer->yy_buf_size - number_to_move - 1; - +#endif } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); + YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), + yy_n_chars, num_to_read ); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + yy_current_buffer->yy_n_chars = yy_n_chars; } - if ( (yy_n_chars) == 0 ) + if ( yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - llvmAsmrestart(llvmAsmin ); + yyrestart( yyin ); } else { ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + yy_current_buffer->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } @@ -2309,32 +2260,30 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + yy_n_chars += number_to_move; + yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; + yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; return ret_val; -} + } + /* yy_get_previous_state - get the state just before the EOB char was reached */ - static yy_state_type yy_get_previous_state (void) -{ +static yy_state_type yy_get_previous_state() + { register yy_state_type yy_current_state; register char *yy_cp; - - yy_current_state = (yy_start); - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + yy_current_state = yy_start; + yy_state_ptr = yy_state_buf; + *yy_state_ptr++ = yy_current_state; + + for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; @@ -2342,27 +2291,29 @@ static int yy_get_next_buffer (void) 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; } return yy_current_state; -} + } + /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ + +#ifdef YY_USE_PROTOS +static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) +#else +static yy_state_type yy_try_NUL_trans( yy_current_state ) +yy_state_type yy_current_state; +#endif + { register int yy_is_jam; - register char *yy_cp = (yy_c_buf_p); register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; @@ -2371,79 +2322,87 @@ static int yy_get_next_buffer (void) } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 538); + if ( ! yy_is_jam ) + *yy_state_ptr++ = yy_current_state; return yy_is_jam ? 0 : yy_current_state; -} + } - static inline void yyunput (int c, register char * yy_bp ) -{ - register char *yy_cp; - - yy_cp = (yy_c_buf_p); - /* undo effects of setting up llvmAsmtext */ - *yy_cp = (yy_hold_char); +#ifndef YY_NO_UNPUT +#ifdef YY_USE_PROTOS +static inline void yyunput( int c, register char *yy_bp ) +#else +static inline void yyunput( c, yy_bp ) +int c; +register char *yy_bp; +#endif + { + register char *yy_cp = yy_c_buf_p; - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + /* undo effects of setting up yytext */ + *yy_cp = yy_hold_char; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - register int number_to_move = (yy_n_chars) + 2; - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + register int number_to_move = yy_n_chars + 2; + register char *dest = &yy_current_buffer->yy_ch_buf[ + yy_current_buffer->yy_buf_size + 2]; register char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + &yy_current_buffer->yy_ch_buf[number_to_move]; - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + while ( source > yy_current_buffer->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + yy_current_buffer->yy_n_chars = + yy_n_chars = yy_current_buffer->yy_buf_size; - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; - if ( c == '\n' ){ - --llvmAsmlineno; - } + if ( c == '\n' ) + --yylineno; + + yytext_ptr = yy_bp; + yy_hold_char = *yy_cp; + yy_c_buf_p = yy_cp; + } +#endif /* ifndef YY_NO_UNPUT */ - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} #ifndef YY_NO_INPUT #ifdef __cplusplus - static int yyinput (void) +static int yyinput() #else - static int input (void) +static int input() #endif - -{ + { int c; - - *(yy_c_buf_p) = (yy_hold_char); - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + *yy_c_buf_p = yy_hold_char; + + if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; + *yy_c_buf_p = '\0'; else { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); - ++(yy_c_buf_p); + int offset = yy_c_buf_p - yytext_ptr; + ++yy_c_buf_p; - switch ( yy_get_next_buffer( ) ) + switch ( yy_get_next_buffer() ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() @@ -2457,16 +2416,16 @@ static int yy_get_next_buffer (void) */ /* Reset buffer status. */ - llvmAsmrestart(llvmAsmin ); + yyrestart( yyin ); - /*FALLTHROUGH*/ + /* fall through */ case EOB_ACT_END_OF_FILE: { - if ( llvmAsmwrap( ) ) + if ( yywrap() ) return EOF; - if ( ! (yy_did_buffer_switch_on_eof) ) + if ( ! yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); @@ -2476,170 +2435,169 @@ static int yy_get_next_buffer (void) } case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; + yy_c_buf_p = yytext_ptr + offset; break; } } } - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve llvmAsmtext */ - (yy_hold_char) = *++(yy_c_buf_p); + c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ + *yy_c_buf_p = '\0'; /* preserve yytext */ + yy_hold_char = *++yy_c_buf_p; if ( c == '\n' ) - - llvmAsmlineno++; -; + ++yylineno; return c; -} -#endif /* ifndef YY_NO_INPUT */ + } +#endif /* YY_NO_INPUT */ -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void llvmAsmrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - llvmAsmensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE ); +#ifdef YY_USE_PROTOS +void yyrestart( FILE *input_file ) +#else +void yyrestart( input_file ) +FILE *input_file; +#endif + { + if ( ! yy_current_buffer ) + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_init_buffer( yy_current_buffer, input_file ); + yy_load_buffer_state(); } - llvmAsm_init_buffer(YY_CURRENT_BUFFER,input_file ); - llvmAsm_load_buffer_state( ); -} -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void llvmAsm_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * llvmAsmpop_buffer_state(); - * llvmAsmpush_buffer_state(new_buffer); - */ - llvmAsmensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) +#ifdef YY_USE_PROTOS +void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) +#else +void yy_switch_to_buffer( new_buffer ) +YY_BUFFER_STATE new_buffer; +#endif + { + if ( yy_current_buffer == new_buffer ) return; - if ( YY_CURRENT_BUFFER ) + if ( yy_current_buffer ) { /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + *yy_c_buf_p = yy_hold_char; + yy_current_buffer->yy_buf_pos = yy_c_buf_p; + yy_current_buffer->yy_n_chars = yy_n_chars; } - YY_CURRENT_BUFFER_LVALUE = new_buffer; - llvmAsm_load_buffer_state( ); + yy_current_buffer = new_buffer; + yy_load_buffer_state(); /* We don't actually know whether we did this switch during - * EOF (llvmAsmwrap()) processing, but the only time this flag - * is looked at is after llvmAsmwrap() is called, so it's safe + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ - (yy_did_buffer_switch_on_eof) = 1; -} + yy_did_buffer_switch_on_eof = 1; + } -static void llvmAsm_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - llvmAsmin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE llvmAsm_create_buffer (FILE * file, int size ) -{ +#ifdef YY_USE_PROTOS +void yy_load_buffer_state( void ) +#else +void yy_load_buffer_state() +#endif + { + yy_n_chars = yy_current_buffer->yy_n_chars; + yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; + yyin = yy_current_buffer->yy_input_file; + yy_hold_char = *yy_c_buf_p; + } + + +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) +#else +YY_BUFFER_STATE yy_create_buffer( file, size ) +FILE *file; +int size; +#endif + { YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) llvmAsmalloc(sizeof( struct yy_buffer_state ) ); + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) llvmAsmalloc(b->yy_buf_size + 2 ); + b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; - llvmAsm_init_buffer(b,file ); + yy_init_buffer( b, file ); return b; -} + } -/** Destroy the buffer. - * @param b a buffer created with llvmAsm_create_buffer() - * - */ - void llvmAsm_delete_buffer (YY_BUFFER_STATE b ) -{ - + +#ifdef YY_USE_PROTOS +void yy_delete_buffer( YY_BUFFER_STATE b ) +#else +void yy_delete_buffer( b ) +YY_BUFFER_STATE b; +#endif + { if ( ! b ) return; - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + if ( b == yy_current_buffer ) + yy_current_buffer = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - llvmAsmfree((void *) b->yy_ch_buf ); + yy_flex_free( (void *) b->yy_ch_buf ); - llvmAsmfree((void *) b ); -} + yy_flex_free( (void *) b ); + } -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a llvmAsmrestart() or at EOF. - */ - static void llvmAsm_init_buffer (YY_BUFFER_STATE b, FILE * file ) -{ - int oerrno = errno; - - llvmAsm_flush_buffer(b ); + +#ifdef YY_USE_PROTOS +void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) +#else +void yy_init_buffer( b, file ) +YY_BUFFER_STATE b; +FILE *file; +#endif + + + { + yy_flush_buffer( b ); b->yy_input_file = file; b->yy_fill_buffer = 1; - /* If b is the current buffer, then llvmAsm_init_buffer was _probably_ - * called from llvmAsmrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } +#if YY_ALWAYS_INTERACTIVE + b->yy_is_interactive = 1; +#else +#if YY_NEVER_INTERACTIVE + b->yy_is_interactive = 0; +#else + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; +#endif +#endif + } - b->yy_is_interactive = 0; - - errno = oerrno; -} -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void llvmAsm_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) +#ifdef YY_USE_PROTOS +void yy_flush_buffer( YY_BUFFER_STATE b ) +#else +void yy_flush_buffer( b ) +YY_BUFFER_STATE b; +#endif + + { + if ( ! b ) return; b->yy_n_chars = 0; @@ -2656,123 +2614,31 @@ static void llvmAsm_load_buffer_state (void) b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; - if ( b == YY_CURRENT_BUFFER ) - llvmAsm_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void llvmAsmpush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - llvmAsmensure_buffer_stack(); - - /* This block is copied from llvmAsm_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from llvmAsm_switch_to_buffer. */ - llvmAsm_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void llvmAsmpop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - llvmAsm_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - llvmAsm_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; + if ( b == yy_current_buffer ) + yy_load_buffer_state(); } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void llvmAsmensure_buffer_stack (void) -{ - int num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - (yy_buffer_stack) = (struct yy_buffer_state**)llvmAsmalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)llvmAsmrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE llvmAsm_scan_buffer (char * base, yy_size_t size ) -{ +#ifndef YY_NO_SCAN_BUFFER +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) +#else +YY_BUFFER_STATE yy_scan_buffer( base, size ) +char *base; +yy_size_t size; +#endif + { YY_BUFFER_STATE b; - + if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; - b = (YY_BUFFER_STATE) llvmAsmalloc(sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_scan_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; @@ -2784,53 +2650,58 @@ YY_BUFFER_STATE llvmAsm_scan_buffer (char * base, yy_size_t size ) b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; - llvmAsm_switch_to_buffer(b ); + yy_switch_to_buffer( b ); return b; -} + } +#endif -/** Setup the input buffer state to scan a string. The next call to llvmAsmlex() will - * scan from a @e copy of @a str. - * @param str a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * llvmAsm_scan_bytes() instead. - */ -YY_BUFFER_STATE llvmAsm_scan_string (yyconst char * yystr ) -{ - - return llvmAsm_scan_bytes(yystr,strlen(yystr) ); -} -/** Setup the input buffer state to scan the given bytes. The next call to llvmAsmlex() will - * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE llvmAsm_scan_bytes (yyconst char * yybytes, int _yybytes_len ) -{ +#ifndef YY_NO_SCAN_STRING +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) +#else +YY_BUFFER_STATE yy_scan_string( yy_str ) +yyconst char *yy_str; +#endif + { + int len; + for ( len = 0; yy_str[len]; ++len ) + ; + + return yy_scan_bytes( yy_str, len ); + } +#endif + + +#ifndef YY_NO_SCAN_BYTES +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) +#else +YY_BUFFER_STATE yy_scan_bytes( bytes, len ) +yyconst char *bytes; +int len; +#endif + { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; - + /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) llvmAsmalloc(n ); + n = len + 2; + buf = (char *) yy_flex_alloc( n ); if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_scan_bytes()" ); + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; + for ( i = 0; i < len; ++i ) + buf[i] = bytes[i]; - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - b = llvmAsm_scan_buffer(buf,n ); + b = yy_scan_buffer( buf, n ); if ( ! b ) - YY_FATAL_ERROR( "bad buffer in llvmAsm_scan_bytes()" ); + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. @@ -2838,199 +2709,148 @@ YY_BUFFER_STATE llvmAsm_scan_bytes (yyconst char * yybytes, int _yybytes_len ) b->yy_is_our_buffer = 1; return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 + } #endif -static void yy_fatal_error (yyconst char* msg ) -{ - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up llvmAsmtext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - llvmAsmtext[llvmAsmleng] = (yy_hold_char); \ - (yy_c_buf_p) = llvmAsmtext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - llvmAsmleng = yyless_macro_arg; \ - } \ - while ( 0 ) +#ifndef YY_NO_PUSH_STATE +#ifdef YY_USE_PROTOS +static void yy_push_state( int new_state ) +#else +static void yy_push_state( new_state ) +int new_state; +#endif + { + if ( yy_start_stack_ptr >= yy_start_stack_depth ) + { + yy_size_t new_size; -/* Accessor methods (get/set functions) to struct members. */ + yy_start_stack_depth += YY_START_STACK_INCR; + new_size = yy_start_stack_depth * sizeof( int ); -/** Get the current line number. - * - */ -int llvmAsmget_lineno (void) -{ - - return llvmAsmlineno; -} + if ( ! yy_start_stack ) + yy_start_stack = (int *) yy_flex_alloc( new_size ); -/** Get the input stream. - * - */ -FILE *llvmAsmget_in (void) -{ - return llvmAsmin; -} + else + yy_start_stack = (int *) yy_flex_realloc( + (void *) yy_start_stack, new_size ); -/** Get the output stream. - * - */ -FILE *llvmAsmget_out (void) -{ - return llvmAsmout; -} + if ( ! yy_start_stack ) + YY_FATAL_ERROR( + "out of memory expanding start-condition stack" ); + } -/** Get the length of the current token. - * - */ -int llvmAsmget_leng (void) -{ - return llvmAsmleng; -} + yy_start_stack[yy_start_stack_ptr++] = YY_START; -/** Get the current token. - * - */ + BEGIN(new_state); + } +#endif -char *llvmAsmget_text (void) -{ - return llvmAsmtext; -} -/** Set the current line number. - * @param line_number - * - */ -void llvmAsmset_lineno (int line_number ) -{ - - llvmAsmlineno = line_number; -} +#ifndef YY_NO_POP_STATE +static void yy_pop_state() + { + if ( --yy_start_stack_ptr < 0 ) + YY_FATAL_ERROR( "start-condition stack underflow" ); -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * - * @see llvmAsm_switch_to_buffer - */ -void llvmAsmset_in (FILE * in_str ) -{ - llvmAsmin = in_str ; -} + BEGIN(yy_start_stack[yy_start_stack_ptr]); + } +#endif -void llvmAsmset_out (FILE * out_str ) -{ - llvmAsmout = out_str ; -} -int llvmAsmget_debug (void) -{ - return llvmAsm_flex_debug; -} +#ifndef YY_NO_TOP_STATE +static int yy_top_state() + { + return yy_start_stack[yy_start_stack_ptr - 1]; + } +#endif -void llvmAsmset_debug (int bdebug ) -{ - llvmAsm_flex_debug = bdebug ; -} +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from llvmAsmlex_destroy(), so don't allocate here. - */ - - /* We do not touch llvmAsmlineno unless the option is enabled. */ - llvmAsmlineno = 1; - - (yy_buffer_stack) = 0; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = (char *) 0; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - llvmAsmin = stdin; - llvmAsmout = stdout; +#ifdef YY_USE_PROTOS +static void yy_fatal_error( yyconst char msg[] ) #else - llvmAsmin = (FILE *) 0; - llvmAsmout = (FILE *) 0; +static void yy_fatal_error( msg ) +char msg[]; #endif + { + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); + } - /* For future reference: Set errno on error, since we are called by - * llvmAsmlex_init() - */ - return 0; -} -/* llvmAsmlex_destroy is for both reentrant and non-reentrant scanners. */ -int llvmAsmlex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - llvmAsm_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - llvmAsmpop_buffer_state(); - } - /* Destroy the stack itself. */ - llvmAsmfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; +/* Redefine yyless() so it works in section 3 code. */ - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * llvmAsmlex() is called, initialization will occur. */ - yy_init_globals( ); +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + yytext[yyleng] = yy_hold_char; \ + yy_c_buf_p = yytext + n; \ + yy_hold_char = *yy_c_buf_p; \ + *yy_c_buf_p = '\0'; \ + yyleng = n; \ + } \ + while ( 0 ) - return 0; -} -/* - * Internal utility routines. - */ +/* Internal utility routines. */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) -{ +#ifdef YY_USE_PROTOS +static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) +#else +static void yy_flex_strncpy( s1, s2, n ) +char *s1; +yyconst char *s2; +int n; +#endif + { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; -} + } #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) -{ +#ifdef YY_USE_PROTOS +static int yy_flex_strlen( yyconst char *s ) +#else +static int yy_flex_strlen( s ) +yyconst char *s; +#endif + { register int n; for ( n = 0; s[n]; ++n ) ; return n; -} + } #endif -void *llvmAsmalloc (yy_size_t size ) -{ + +#ifdef YY_USE_PROTOS +static void *yy_flex_alloc( yy_size_t size ) +#else +static void *yy_flex_alloc( size ) +yy_size_t size; +#endif + { return (void *) malloc( size ); -} + } -void *llvmAsmrealloc (void * ptr, yy_size_t size ) -{ +#ifdef YY_USE_PROTOS +static inline void *yy_flex_realloc( void *ptr, yy_size_t size ) +#else +static inline void *yy_flex_realloc( ptr, size ) +void *ptr; +yy_size_t size; +#endif + { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -3039,16 +2859,24 @@ void *llvmAsmrealloc (void * ptr, yy_size_t size ) * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); -} - -void llvmAsmfree (void * ptr ) -{ - free( (char *) ptr ); /* see llvmAsmrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#line 407 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l" + } +#ifdef YY_USE_PROTOS +static void yy_flex_free( void *ptr ) +#else +static void yy_flex_free( ptr ) +void *ptr; +#endif + { + free( ptr ); + } +#if YY_MAIN +int main() + { + yylex(); + return 0; + } +#endif +#line 409 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l" diff --git a/lib/AsmParser/Lexer.l b/lib/AsmParser/Lexer.l index 96eedff5d51..e5e8256bc11 100644 --- a/lib/AsmParser/Lexer.l +++ b/lib/AsmParser/Lexer.l @@ -232,6 +232,9 @@ coldcc { return COLDCC_TOK; } x86_stdcallcc { return X86_STDCALLCC_TOK; } x86_fastcallcc { return X86_FASTCALLCC_TOK; } +inreg { return INREG; } +sret { return SRET; } + void { RET_TY(Type::VoidTy, VOID); } float { RET_TY(Type::FloatTy, FLOAT); } double { RET_TY(Type::DoubleTy,DOUBLE);} @@ -255,11 +258,15 @@ fdiv { RET_TOK(BinaryOpVal, FDiv, FDIV); } urem { RET_TOK(BinaryOpVal, URem, UREM); } srem { RET_TOK(BinaryOpVal, SRem, SREM); } frem { RET_TOK(BinaryOpVal, FRem, FREM); } +shl { RET_TOK(BinaryOpVal, Shl, SHL); } +lshr { RET_TOK(BinaryOpVal, LShr, LSHR); } +ashr { RET_TOK(BinaryOpVal, AShr, ASHR); } and { RET_TOK(BinaryOpVal, And, AND); } or { RET_TOK(BinaryOpVal, Or , OR ); } xor { RET_TOK(BinaryOpVal, Xor, XOR); } icmp { RET_TOK(OtherOpVal, ICmp, ICMP); } fcmp { RET_TOK(OtherOpVal, FCmp, FCMP); } + eq { return EQ; } ne { return NE; } slt { return SLT; } @@ -286,8 +293,6 @@ call { RET_TOK(OtherOpVal, Call, CALL); } trunc { RET_TOK(CastOpVal, Trunc, TRUNC); } zext { RET_TOK(CastOpVal, ZExt, ZEXT); } sext { RET_TOK(CastOpVal, SExt, SEXT); } -inreg { return INREG; } -sret { return SRET; } fptrunc { RET_TOK(CastOpVal, FPTrunc, FPTRUNC); } fpext { RET_TOK(CastOpVal, FPExt, FPEXT); } uitofp { RET_TOK(CastOpVal, UIToFP, UITOFP); } @@ -298,9 +303,6 @@ inttoptr { RET_TOK(CastOpVal, IntToPtr, INTTOPTR); } ptrtoint { RET_TOK(CastOpVal, PtrToInt, PTRTOINT); } bitcast { RET_TOK(CastOpVal, BitCast, BITCAST); } select { RET_TOK(OtherOpVal, Select, SELECT); } -shl { RET_TOK(OtherOpVal, Shl, SHL); } -lshr { RET_TOK(OtherOpVal, LShr, LSHR); } -ashr { RET_TOK(OtherOpVal, AShr, ASHR); } va_arg { RET_TOK(OtherOpVal, VAArg , VAARG); } ret { RET_TOK(TermOpVal, Ret, RET); } br { RET_TOK(TermOpVal, Br, BR); } diff --git a/lib/AsmParser/Lexer.l.cvs b/lib/AsmParser/Lexer.l.cvs index 96eedff5d51..e5e8256bc11 100644 --- a/lib/AsmParser/Lexer.l.cvs +++ b/lib/AsmParser/Lexer.l.cvs @@ -232,6 +232,9 @@ coldcc { return COLDCC_TOK; } x86_stdcallcc { return X86_STDCALLCC_TOK; } x86_fastcallcc { return X86_FASTCALLCC_TOK; } +inreg { return INREG; } +sret { return SRET; } + void { RET_TY(Type::VoidTy, VOID); } float { RET_TY(Type::FloatTy, FLOAT); } double { RET_TY(Type::DoubleTy,DOUBLE);} @@ -255,11 +258,15 @@ fdiv { RET_TOK(BinaryOpVal, FDiv, FDIV); } urem { RET_TOK(BinaryOpVal, URem, UREM); } srem { RET_TOK(BinaryOpVal, SRem, SREM); } frem { RET_TOK(BinaryOpVal, FRem, FREM); } +shl { RET_TOK(BinaryOpVal, Shl, SHL); } +lshr { RET_TOK(BinaryOpVal, LShr, LSHR); } +ashr { RET_TOK(BinaryOpVal, AShr, ASHR); } and { RET_TOK(BinaryOpVal, And, AND); } or { RET_TOK(BinaryOpVal, Or , OR ); } xor { RET_TOK(BinaryOpVal, Xor, XOR); } icmp { RET_TOK(OtherOpVal, ICmp, ICMP); } fcmp { RET_TOK(OtherOpVal, FCmp, FCMP); } + eq { return EQ; } ne { return NE; } slt { return SLT; } @@ -286,8 +293,6 @@ call { RET_TOK(OtherOpVal, Call, CALL); } trunc { RET_TOK(CastOpVal, Trunc, TRUNC); } zext { RET_TOK(CastOpVal, ZExt, ZEXT); } sext { RET_TOK(CastOpVal, SExt, SEXT); } -inreg { return INREG; } -sret { return SRET; } fptrunc { RET_TOK(CastOpVal, FPTrunc, FPTRUNC); } fpext { RET_TOK(CastOpVal, FPExt, FPEXT); } uitofp { RET_TOK(CastOpVal, UIToFP, UITOFP); } @@ -298,9 +303,6 @@ inttoptr { RET_TOK(CastOpVal, IntToPtr, INTTOPTR); } ptrtoint { RET_TOK(CastOpVal, PtrToInt, PTRTOINT); } bitcast { RET_TOK(CastOpVal, BitCast, BITCAST); } select { RET_TOK(OtherOpVal, Select, SELECT); } -shl { RET_TOK(OtherOpVal, Shl, SHL); } -lshr { RET_TOK(OtherOpVal, LShr, LSHR); } -ashr { RET_TOK(OtherOpVal, AShr, ASHR); } va_arg { RET_TOK(OtherOpVal, VAArg , VAARG); } ret { RET_TOK(TermOpVal, Ret, RET); } br { RET_TOK(TermOpVal, Br, BR); } diff --git a/lib/AsmParser/llvmAsmParser.cpp.cvs b/lib/AsmParser/llvmAsmParser.cpp.cvs index d611dc99bb0..91170417056 100644 --- a/lib/AsmParser/llvmAsmParser.cpp.cvs +++ b/lib/AsmParser/llvmAsmParser.cpp.cvs @@ -1,147 +1,336 @@ +/* A Bison parser, made by GNU Bison 2.1. */ -/* A Bison parser, made from /Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y - by GNU Bison version 1.28 */ +/* Skeleton parser for Yacc-like parsing with Bison, + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -#define YYBISON 1 /* Identify Bison output. */ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* Written by Richard Stallman by simplifying the original so called + ``semantic'' parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.1" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 +/* Substitute the variable and function names. */ #define yyparse llvmAsmparse -#define yylex llvmAsmlex +#define yylex llvmAsmlex #define yyerror llvmAsmerror -#define yylval llvmAsmlval -#define yychar llvmAsmchar +#define yylval llvmAsmlval +#define yychar llvmAsmchar #define yydebug llvmAsmdebug #define yynerrs llvmAsmnerrs -#define ESINT64VAL 257 -#define EUINT64VAL 258 -#define LOCALVAL_ID 259 -#define GLOBALVAL_ID 260 -#define FPVAL 261 -#define VOID 262 -#define INTTYPE 263 -#define FLOAT 264 -#define DOUBLE 265 -#define LABEL 266 -#define TYPE 267 -#define LOCALVAR 268 -#define GLOBALVAR 269 -#define LABELSTR 270 -#define STRINGCONSTANT 271 -#define ATSTRINGCONSTANT 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 EXTERNAL 297 -#define TARGET 298 -#define TRIPLE 299 -#define ALIGN 300 -#define DEPLIBS 301 -#define CALL 302 -#define TAIL 303 -#define ASM_TOK 304 -#define MODULE 305 -#define SIDEEFFECT 306 -#define CC_TOK 307 -#define CCC_TOK 308 -#define FASTCC_TOK 309 -#define COLDCC_TOK 310 -#define X86_STDCALLCC_TOK 311 -#define X86_FASTCALLCC_TOK 312 -#define DATALAYOUT 313 -#define RET 314 -#define BR 315 -#define SWITCH 316 -#define INVOKE 317 -#define UNWIND 318 -#define UNREACHABLE 319 -#define ADD 320 -#define SUB 321 -#define MUL 322 -#define UDIV 323 -#define SDIV 324 -#define FDIV 325 -#define UREM 326 -#define SREM 327 -#define FREM 328 -#define AND 329 -#define OR 330 -#define XOR 331 -#define ICMP 332 -#define FCMP 333 -#define EQ 334 -#define NE 335 -#define SLT 336 -#define SGT 337 -#define SLE 338 -#define SGE 339 -#define ULT 340 -#define UGT 341 -#define ULE 342 -#define UGE 343 -#define OEQ 344 -#define ONE 345 -#define OLT 346 -#define OGT 347 -#define OLE 348 -#define OGE 349 -#define ORD 350 -#define UNO 351 -#define UEQ 352 -#define UNE 353 -#define MALLOC 354 -#define ALLOCA 355 -#define FREE 356 -#define LOAD 357 -#define STORE 358 -#define GETELEMENTPTR 359 -#define TRUNC 360 -#define ZEXT 361 -#define SEXT 362 -#define FPTRUNC 363 -#define FPEXT 364 -#define BITCAST 365 -#define UITOFP 366 -#define SITOFP 367 -#define FPTOUI 368 -#define FPTOSI 369 -#define INTTOPTR 370 -#define PTRTOINT 371 -#define PHI_TOK 372 -#define SELECT 373 -#define SHL 374 -#define LSHR 375 -#define ASHR 376 -#define VAARG 377 -#define EXTRACTELEMENT 378 -#define INSERTELEMENT 379 -#define SHUFFLEVECTOR 380 -#define NORETURN 381 -#define INREG 382 -#define SRET 383 -#define DEFAULT 384 -#define HIDDEN 385 - -#line 14 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + ESINT64VAL = 258, + EUINT64VAL = 259, + LOCALVAL_ID = 260, + GLOBALVAL_ID = 261, + FPVAL = 262, + VOID = 263, + INTTYPE = 264, + FLOAT = 265, + DOUBLE = 266, + LABEL = 267, + TYPE = 268, + LOCALVAR = 269, + GLOBALVAR = 270, + LABELSTR = 271, + STRINGCONSTANT = 272, + ATSTRINGCONSTANT = 273, + IMPLEMENTATION = 274, + ZEROINITIALIZER = 275, + TRUETOK = 276, + FALSETOK = 277, + BEGINTOK = 278, + ENDTOK = 279, + DECLARE = 280, + DEFINE = 281, + GLOBAL = 282, + CONSTANT = 283, + SECTION = 284, + VOLATILE = 285, + TO = 286, + DOTDOTDOT = 287, + NULL_TOK = 288, + UNDEF = 289, + INTERNAL = 290, + LINKONCE = 291, + WEAK = 292, + APPENDING = 293, + DLLIMPORT = 294, + DLLEXPORT = 295, + EXTERN_WEAK = 296, + OPAQUE = 297, + EXTERNAL = 298, + TARGET = 299, + TRIPLE = 300, + ALIGN = 301, + DEPLIBS = 302, + CALL = 303, + TAIL = 304, + ASM_TOK = 305, + MODULE = 306, + SIDEEFFECT = 307, + CC_TOK = 308, + CCC_TOK = 309, + FASTCC_TOK = 310, + COLDCC_TOK = 311, + X86_STDCALLCC_TOK = 312, + X86_FASTCALLCC_TOK = 313, + DATALAYOUT = 314, + RET = 315, + BR = 316, + SWITCH = 317, + INVOKE = 318, + UNWIND = 319, + UNREACHABLE = 320, + ADD = 321, + SUB = 322, + MUL = 323, + UDIV = 324, + SDIV = 325, + FDIV = 326, + UREM = 327, + SREM = 328, + FREM = 329, + AND = 330, + OR = 331, + XOR = 332, + SHL = 333, + LSHR = 334, + ASHR = 335, + ICMP = 336, + FCMP = 337, + EQ = 338, + NE = 339, + SLT = 340, + SGT = 341, + SLE = 342, + SGE = 343, + ULT = 344, + UGT = 345, + ULE = 346, + UGE = 347, + OEQ = 348, + ONE = 349, + OLT = 350, + OGT = 351, + OLE = 352, + OGE = 353, + ORD = 354, + UNO = 355, + UEQ = 356, + UNE = 357, + MALLOC = 358, + ALLOCA = 359, + FREE = 360, + LOAD = 361, + STORE = 362, + GETELEMENTPTR = 363, + TRUNC = 364, + ZEXT = 365, + SEXT = 366, + FPTRUNC = 367, + FPEXT = 368, + BITCAST = 369, + UITOFP = 370, + SITOFP = 371, + FPTOUI = 372, + FPTOSI = 373, + INTTOPTR = 374, + PTRTOINT = 375, + PHI_TOK = 376, + SELECT = 377, + VAARG = 378, + EXTRACTELEMENT = 379, + INSERTELEMENT = 380, + SHUFFLEVECTOR = 381, + NORETURN = 382, + INREG = 383, + SRET = 384, + DEFAULT = 385, + HIDDEN = 386 + }; +#endif +/* Tokens. */ +#define ESINT64VAL 258 +#define EUINT64VAL 259 +#define LOCALVAL_ID 260 +#define GLOBALVAL_ID 261 +#define FPVAL 262 +#define VOID 263 +#define INTTYPE 264 +#define FLOAT 265 +#define DOUBLE 266 +#define LABEL 267 +#define TYPE 268 +#define LOCALVAR 269 +#define GLOBALVAR 270 +#define LABELSTR 271 +#define STRINGCONSTANT 272 +#define ATSTRINGCONSTANT 273 +#define IMPLEMENTATION 274 +#define ZEROINITIALIZER 275 +#define TRUETOK 276 +#define FALSETOK 277 +#define BEGINTOK 278 +#define ENDTOK 279 +#define DECLARE 280 +#define DEFINE 281 +#define GLOBAL 282 +#define CONSTANT 283 +#define SECTION 284 +#define VOLATILE 285 +#define TO 286 +#define DOTDOTDOT 287 +#define NULL_TOK 288 +#define UNDEF 289 +#define INTERNAL 290 +#define LINKONCE 291 +#define WEAK 292 +#define APPENDING 293 +#define DLLIMPORT 294 +#define DLLEXPORT 295 +#define EXTERN_WEAK 296 +#define OPAQUE 297 +#define EXTERNAL 298 +#define TARGET 299 +#define TRIPLE 300 +#define ALIGN 301 +#define DEPLIBS 302 +#define CALL 303 +#define TAIL 304 +#define ASM_TOK 305 +#define MODULE 306 +#define SIDEEFFECT 307 +#define CC_TOK 308 +#define CCC_TOK 309 +#define FASTCC_TOK 310 +#define COLDCC_TOK 311 +#define X86_STDCALLCC_TOK 312 +#define X86_FASTCALLCC_TOK 313 +#define DATALAYOUT 314 +#define RET 315 +#define BR 316 +#define SWITCH 317 +#define INVOKE 318 +#define UNWIND 319 +#define UNREACHABLE 320 +#define ADD 321 +#define SUB 322 +#define MUL 323 +#define UDIV 324 +#define SDIV 325 +#define FDIV 326 +#define UREM 327 +#define SREM 328 +#define FREM 329 +#define AND 330 +#define OR 331 +#define XOR 332 +#define SHL 333 +#define LSHR 334 +#define ASHR 335 +#define ICMP 336 +#define FCMP 337 +#define EQ 338 +#define NE 339 +#define SLT 340 +#define SGT 341 +#define SLE 342 +#define SGE 343 +#define ULT 344 +#define UGT 345 +#define ULE 346 +#define UGE 347 +#define OEQ 348 +#define ONE 349 +#define OLT 350 +#define OGT 351 +#define OLE 352 +#define OGE 353 +#define ORD 354 +#define UNO 355 +#define UEQ 356 +#define UNE 357 +#define MALLOC 358 +#define ALLOCA 359 +#define FREE 360 +#define LOAD 361 +#define STORE 362 +#define GETELEMENTPTR 363 +#define TRUNC 364 +#define ZEXT 365 +#define SEXT 366 +#define FPTRUNC 367 +#define FPEXT 368 +#define BITCAST 369 +#define UITOFP 370 +#define SITOFP 371 +#define FPTOUI 372 +#define FPTOSI 373 +#define INTTOPTR 374 +#define PTRTOINT 375 +#define PHI_TOK 376 +#define SELECT 377 +#define VAARG 378 +#define EXTRACTELEMENT 379 +#define INSERTELEMENT 380 +#define SHUFFLEVECTOR 381 +#define NORETURN 382 +#define INREG 383 +#define SRET 384 +#define DEFAULT 385 +#define HIDDEN 386 + + + + +/* Copy the first part of user declarations. */ +#line 14 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" #include "ParserInternals.h" #include "llvm/CallingConv.h" @@ -1013,8 +1202,28 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { } -#line 886 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -typedef union { + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) +#line 886 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" +typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; llvm::BasicBlock *BasicBlockVal; @@ -1059,1062 +1268,1519 @@ typedef union { llvm::ICmpInst::Predicate IPredicate; llvm::FCmpInst::Predicate FPredicate; } YYSTYPE; -#include - -#ifndef __cplusplus -#ifndef __STDC__ -#define const -#endif +/* Line 196 of yacc.c. */ +#line 1273 "llvmAsmParser.tab.c" +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 #endif -#define YYFINAL 567 -#define YYFLAG -32768 -#define YYNTBASE 146 - -#define YYTRANSLATE(x) ((unsigned)(x) <= 385 ? yytranslate[x] : 224) - -static const short yytranslate[] = { 0, - 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, 2, 2, 2, 2, 2, 136, - 137, 134, 2, 133, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 141, - 132, 142, 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, - 138, 135, 140, 2, 2, 2, 2, 2, 145, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 139, - 2, 2, 143, 2, 144, 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, 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, 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, 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, 1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 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 -}; +/* Copy the second part of user declarations. */ -#if YYDEBUG != 0 -static const short yyprhs[] = { 0, - 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, - 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, - 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, - 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, - 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, - 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, - 119, 122, 123, 125, 127, 130, 131, 133, 135, 137, - 139, 141, 143, 145, 147, 148, 150, 151, 153, 155, - 156, 158, 160, 162, 164, 165, 167, 169, 171, 173, - 175, 178, 180, 182, 184, 186, 187, 190, 192, 194, - 195, 198, 199, 202, 203, 207, 210, 211, 213, 214, - 218, 220, 223, 225, 227, 229, 231, 233, 235, 238, - 240, 243, 249, 255, 261, 267, 271, 274, 280, 285, - 288, 290, 292, 294, 298, 300, 304, 306, 307, 309, - 313, 318, 322, 326, 331, 336, 340, 347, 353, 356, - 359, 362, 365, 368, 371, 374, 377, 380, 383, 390, - 396, 405, 412, 419, 427, 435, 442, 449, 458, 467, - 471, 473, 475, 477, 479, 480, 482, 485, 486, 490, - 491, 495, 499, 501, 505, 509, 510, 517, 518, 526, - 527, 535, 538, 542, 544, 548, 552, 556, 560, 562, - 563, 569, 573, 575, 579, 581, 582, 592, 594, 596, - 601, 603, 605, 608, 612, 613, 615, 617, 619, 621, - 623, 625, 627, 629, 631, 635, 637, 643, 645, 647, - 649, 651, 653, 655, 658, 661, 664, 668, 671, 672, - 674, 677, 680, 684, 694, 704, 713, 728, 730, 732, - 739, 745, 748, 755, 763, 767, 773, 774, 775, 779, - 782, 784, 790, 796, 803, 810, 815, 820, 827, 832, - 837, 844, 851, 854, 863, 865, 867, 868, 872, 879, - 883, 890, 893, 898, 905 -}; -static const short yyrhs[] = { 66, - 0, 67, 0, 68, 0, 69, 0, 70, 0, 71, - 0, 72, 0, 73, 0, 74, 0, 75, 0, 76, - 0, 77, 0, 106, 0, 107, 0, 108, 0, 109, - 0, 110, 0, 111, 0, 112, 0, 113, 0, 114, - 0, 115, 0, 116, 0, 117, 0, 120, 0, 121, - 0, 122, 0, 80, 0, 81, 0, 82, 0, 83, - 0, 84, 0, 85, 0, 86, 0, 87, 0, 88, - 0, 89, 0, 90, 0, 91, 0, 92, 0, 93, - 0, 94, 0, 95, 0, 96, 0, 97, 0, 98, - 0, 99, 0, 86, 0, 87, 0, 88, 0, 89, - 0, 21, 0, 22, 0, 9, 0, 10, 0, 11, - 0, 14, 0, 17, 0, 154, 0, 0, 154, 132, - 0, 0, 15, 0, 18, 0, 157, 132, 0, 0, - 35, 0, 37, 0, 36, 0, 38, 0, 40, 0, - 39, 0, 41, 0, 43, 0, 0, 131, 0, 0, - 39, 0, 41, 0, 0, 35, 0, 36, 0, 37, - 0, 40, 0, 0, 54, 0, 55, 0, 56, 0, - 57, 0, 58, 0, 53, 4, 0, 107, 0, 108, - 0, 128, 0, 129, 0, 0, 166, 165, 0, 127, - 0, 165, 0, 0, 168, 167, 0, 0, 46, 4, - 0, 0, 133, 46, 4, 0, 29, 17, 0, 0, - 171, 0, 0, 133, 174, 173, 0, 171, 0, 46, - 4, 0, 9, 0, 10, 0, 11, 0, 12, 0, - 42, 0, 175, 0, 176, 134, 0, 208, 0, 135, - 4, 0, 176, 136, 180, 137, 168, 0, 8, 136, - 180, 137, 168, 0, 138, 4, 139, 176, 140, 0, - 141, 4, 139, 176, 142, 0, 143, 181, 144, 0, - 143, 144, 0, 141, 143, 181, 144, 142, 0, 141, - 143, 144, 142, 0, 176, 166, 0, 176, 0, 8, - 0, 177, 0, 179, 133, 177, 0, 179, 0, 179, - 133, 32, 0, 32, 0, 0, 176, 0, 181, 133, - 176, 0, 176, 138, 184, 140, 0, 176, 138, 140, - 0, 176, 145, 17, 0, 176, 141, 184, 142, 0, - 176, 143, 184, 144, 0, 176, 143, 144, 0, 176, - 141, 143, 184, 144, 142, 0, 176, 141, 143, 144, - 142, 0, 176, 33, 0, 176, 34, 0, 176, 208, - 0, 176, 183, 0, 176, 20, 0, 152, 3, 0, - 152, 4, 0, 9, 21, 0, 9, 22, 0, 153, - 7, 0, 148, 136, 182, 31, 176, 137, 0, 105, - 136, 182, 219, 137, 0, 119, 136, 182, 133, 182, - 133, 182, 137, 0, 146, 136, 182, 133, 182, 137, - 0, 147, 136, 182, 133, 182, 137, 0, 78, 150, - 136, 182, 133, 182, 137, 0, 79, 151, 136, 182, - 133, 182, 137, 0, 149, 136, 182, 133, 182, 137, - 0, 124, 136, 182, 133, 182, 137, 0, 125, 136, - 182, 133, 182, 133, 182, 137, 0, 126, 136, 182, - 133, 182, 133, 182, 137, 0, 184, 133, 182, 0, - 182, 0, 27, 0, 28, 0, 187, 0, 0, 188, - 0, 187, 188, 0, 0, 26, 189, 204, 0, 0, - 25, 190, 205, 0, 51, 50, 194, 0, 19, 0, - 156, 13, 176, 0, 156, 13, 8, 0, 0, 158, - 161, 185, 182, 191, 173, 0, 0, 158, 159, 161, - 185, 182, 192, 173, 0, 0, 158, 160, 161, 185, - 176, 193, 173, 0, 44, 195, 0, 47, 132, 196, - 0, 17, 0, 45, 132, 17, 0, 59, 132, 17, - 0, 138, 197, 140, 0, 197, 133, 17, 0, 17, - 0, 0, 198, 133, 176, 166, 155, 0, 176, 166, - 155, 0, 198, 0, 198, 133, 32, 0, 32, 0, - 0, 164, 178, 157, 136, 199, 137, 168, 172, 169, - 0, 23, 0, 143, 0, 163, 161, 200, 201, 0, - 24, 0, 144, 0, 211, 203, 0, 162, 161, 200, - 0, 0, 52, 0, 3, 0, 4, 0, 7, 0, - 21, 0, 22, 0, 33, 0, 34, 0, 20, 0, - 141, 184, 142, 0, 183, 0, 50, 206, 17, 133, - 17, 0, 5, 0, 6, 0, 154, 0, 157, 0, - 208, 0, 207, 0, 176, 209, 0, 211, 212, 0, - 202, 212, 0, 213, 156, 214, 0, 213, 216, 0, - 0, 16, 0, 60, 210, 0, 60, 8, 0, 61, - 12, 209, 0, 61, 9, 209, 133, 12, 209, 133, - 12, 209, 0, 62, 152, 209, 133, 12, 209, 138, - 215, 140, 0, 62, 152, 209, 133, 12, 209, 138, - 140, 0, 63, 164, 178, 209, 136, 218, 137, 168, - 31, 12, 209, 64, 12, 209, 0, 64, 0, 65, - 0, 215, 152, 207, 133, 12, 209, 0, 152, 207, - 133, 12, 209, 0, 156, 221, 0, 176, 138, 209, - 133, 209, 140, 0, 217, 133, 138, 209, 133, 209, - 140, 0, 176, 209, 166, 0, 218, 133, 176, 209, - 166, 0, 0, 0, 219, 133, 210, 0, 49, 48, - 0, 48, 0, 146, 176, 209, 133, 209, 0, 147, - 176, 209, 133, 209, 0, 78, 150, 176, 209, 133, - 209, 0, 79, 151, 176, 209, 133, 209, 0, 149, - 210, 133, 210, 0, 148, 210, 31, 176, 0, 119, - 210, 133, 210, 133, 210, 0, 123, 210, 133, 176, - 0, 124, 210, 133, 210, 0, 125, 210, 133, 210, - 133, 210, 0, 126, 210, 133, 210, 133, 210, 0, - 118, 217, 0, 220, 164, 178, 209, 136, 218, 137, - 168, 0, 223, 0, 30, 0, 0, 100, 176, 170, - 0, 100, 176, 133, 9, 209, 170, 0, 101, 176, - 170, 0, 101, 176, 133, 9, 209, 170, 0, 102, - 210, 0, 222, 103, 176, 209, 0, 222, 104, 210, - 133, 176, 209, 0, 105, 176, 209, 219, 0 -}; +/* Line 219 of yacc.c. */ +#line 1285 "llvmAsmParser.tab.c" +#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) +# define YYSIZE_T __SIZE_TYPE__ +#endif +#if ! defined (YYSIZE_T) && defined (size_t) +# define YYSIZE_T size_t +#endif +#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus)) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +#endif +#if ! defined (YYSIZE_T) +# define YYSIZE_T unsigned int #endif -#if YYDEBUG != 0 -static const short yyrline[] = { 0, - 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033, - 1033, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1035, - 1035, 1035, 1035, 1035, 1036, 1036, 1036, 1038, 1038, 1039, - 1039, 1040, 1040, 1041, 1041, 1042, 1042, 1046, 1046, 1047, - 1047, 1048, 1048, 1049, 1049, 1050, 1050, 1051, 1051, 1052, - 1052, 1053, 1054, 1059, 1060, 1060, 1062, 1062, 1063, 1063, - 1067, 1071, 1076, 1076, 1078, 1082, 1088, 1089, 1090, 1091, - 1092, 1096, 1097, 1098, 1102, 1103, 1107, 1108, 1109, 1113, - 1114, 1115, 1116, 1117, 1120, 1120, 1121, 1122, 1123, 1124, - 1125, 1133, 1134, 1135, 1136, 1139, 1140, 1145, 1146, 1149, - 1150, 1157, 1157, 1164, 1164, 1173, 1181, 1181, 1187, 1187, - 1189, 1194, 1207, 1207, 1207, 1207, 1210, 1214, 1218, 1225, - 1230, 1238, 1256, 1274, 1279, 1291, 1301, 1305, 1315, 1322, - 1329, 1336, 1341, 1346, 1353, 1354, 1361, 1368, 1376, 1381, - 1392, 1420, 1436, 1465, 1493, 1518, 1537, 1562, 1581, 1593, - 1600, 1666, 1676, 1686, 1692, 1698, 1703, 1708, 1716, 1728, - 1749, 1757, 1763, 1774, 1779, 1784, 1793, 1799, 1805, 1814, - 1818, 1826, 1826, 1837, 1842, 1850, 1851, 1855, 1855, 1859, - 1859, 1862, 1865, 1877, 1901, 1912, 1919, 1922, 1927, 1930, - 1936, 1940, 1943, 1949, 1962, 1966, 1971, 1973, 1978, 1983, - 1992, 2002, 2013, 2017, 2026, 2035, 2040, 2146, 2146, 2148, - 2157, 2157, 2159, 2164, 2176, 2180, 2185, 2189, 2193, 2197, - 2201, 2205, 2209, 2213, 2217, 2242, 2246, 2260, 2264, 2268, - 2272, 2278, 2278, 2284, 2293, 2297, 2306, 2317, 2326, 2338, - 2351, 2355, 2359, 2364, 2374, 2393, 2402, 2469, 2473, 2480, - 2491, 2504, 2513, 2524, 2534, 2542, 2550, 2553, 2554, 2561, - 2565, 2570, 2591, 2608, 2621, 2634, 2643, 2655, 2663, 2670, - 2676, 2682, 2688, 2703, 2767, 2772, 2776, 2783, 2790, 2798, - 2805, 2813, 2821, 2835, 2852 -}; +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif #endif +#if ! defined (yyoverflow) || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# else +# define YYSTACK_ALLOC alloca +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYINCLUDED_STDLIB_H +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1) +# endif +# ifdef __cplusplus +extern "C" { +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \ + && (defined (__STDC__) || defined (__cplusplus))) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \ + && (defined (__STDC__) || defined (__cplusplus))) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifdef __cplusplus +} +# endif +# endif +#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ + + +#if (! defined (yyoverflow) \ + && (! defined (__cplusplus) \ + || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + short int yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined (__GNUC__) && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (0) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) -#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) - -static const char * const yytname[] = { "$","error","$undefined.","ESINT64VAL", -"EUINT64VAL","LOCALVAL_ID","GLOBALVAL_ID","FPVAL","VOID","INTTYPE","FLOAT","DOUBLE", -"LABEL","TYPE","LOCALVAR","GLOBALVAR","LABELSTR","STRINGCONSTANT","ATSTRINGCONSTANT", -"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","EXTERNAL","TARGET","TRIPLE","ALIGN","DEPLIBS","CALL", -"TAIL","ASM_TOK","MODULE","SIDEEFFECT","CC_TOK","CCC_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","INREG","SRET","DEFAULT","HIDDEN","'='","','","'*'", -"'\\\\'","'('","')'","'['","'x'","']'","'<'","'>'","'{'","'}'","'c'","ArithmeticOps", -"LogicalOps","CastOps","ShiftOps","IPredicates","FPredicates","IntType","FPType", -"LocalName","OptLocalName","OptLocalAssign","GlobalName","OptGlobalAssign","GVInternalLinkage", -"GVExternalLinkage","GVVisibilityStyle","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","TargetDefinition","LibrariesDefinition", -"LibList","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", NULL -}; #endif -static const short yyr1[] = { 0, - 146, 146, 146, 146, 146, 146, 146, 146, 146, 147, - 147, 147, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 149, 149, 149, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 152, 153, 153, 154, 154, 155, 155, - 156, 156, 157, 157, 158, 158, 159, 159, 159, 159, - 159, 160, 160, 160, 161, 161, 162, 162, 162, 163, - 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, - 164, 165, 165, 165, 165, 166, 166, 167, 167, 168, - 168, 169, 169, 170, 170, 171, 172, 172, 173, 173, - 174, 174, 175, 175, 175, 175, 176, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 177, - 178, 178, 179, 179, 180, 180, 180, 180, 181, 181, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 182, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 184, - 184, 185, 185, 186, 186, 187, 187, 189, 188, 190, - 188, 188, 188, 188, 188, 191, 188, 192, 188, 193, - 188, 188, 188, 194, 195, 195, 196, 197, 197, 197, - 198, 198, 199, 199, 199, 199, 200, 201, 201, 202, - 203, 203, 204, 205, 206, 206, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 208, 208, 208, - 208, 209, 209, 210, 211, 211, 212, 213, 213, 213, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 215, - 215, 216, 217, 217, 218, 218, 218, 219, 219, 220, - 220, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 222, 222, 223, 223, 223, - 223, 223, 223, 223, 223 -}; +#if defined (__STDC__) || defined (__cplusplus) + typedef signed char yysigned_char; +#else + typedef short int yysigned_char; +#endif -static const short yyr2[] = { 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, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 2, 0, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, - 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, - 2, 1, 1, 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, 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, 6, 0, 7, 0, - 7, 2, 3, 1, 3, 3, 3, 3, 1, 0, - 5, 3, 1, 3, 1, 0, 9, 1, 1, 4, - 1, 1, 2, 3, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 1, 5, 1, 1, 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, 4, 4, 6, 4, 4, - 6, 6, 2, 8, 1, 1, 0, 3, 6, 3, - 6, 2, 4, 6, 4 +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 40 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 1439 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 146 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 78 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 284 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 557 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 386 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const unsigned char yytranslate[] = +{ + 0, 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, 2, 2, 2, 2, 2, + 136, 137, 134, 2, 133, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 141, 132, 142, 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, 138, 135, 140, 2, 2, 2, 2, 2, 145, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 139, 2, 2, 143, 2, 144, 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, + 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, 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, 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, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 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 }; -static const short yydefact[] = { 66, - 57, 63, 58, 64, 183, 180, 178, 0, 0, 0, - 0, 0, 0, 75, 66, 176, 77, 80, 0, 0, - 192, 0, 0, 61, 0, 65, 67, 69, 68, 70, - 72, 71, 73, 74, 76, 75, 75, 0, 177, 78, - 79, 75, 181, 81, 82, 83, 84, 75, 239, 179, - 239, 0, 0, 200, 193, 194, 182, 228, 229, 185, - 113, 114, 115, 116, 117, 0, 0, 0, 0, 230, - 231, 118, 184, 120, 0, 0, 172, 173, 0, 85, - 85, 240, 236, 62, 211, 212, 213, 235, 195, 196, - 199, 0, 138, 121, 0, 0, 0, 0, 127, 139, - 0, 119, 138, 0, 0, 113, 114, 115, 0, 0, - 0, 186, 0, 86, 87, 88, 89, 90, 0, 214, - 0, 277, 238, 0, 197, 137, 96, 133, 135, 0, - 0, 0, 0, 0, 0, 126, 0, 188, 190, 156, - 157, 154, 155, 158, 153, 149, 150, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, - 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 0, 25, 26, 27, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, - 151, 109, 91, 132, 131, 0, 208, 209, 210, 276, - 261, 0, 0, 0, 0, 85, 248, 249, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 85, 252, 0, 275, 198, - 130, 0, 100, 0, 0, 129, 0, 140, 100, 109, - 109, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 0, 52, 53, 48, 49, 50, 51, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, - 0, 0, 0, 0, 142, 171, 0, 0, 0, 146, - 0, 143, 0, 0, 0, 0, 0, 187, 0, 260, - 242, 0, 241, 0, 0, 54, 0, 0, 0, 0, - 104, 104, 282, 0, 0, 273, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 92, 93, - 94, 95, 97, 136, 134, 123, 124, 125, 128, 122, - 189, 191, 0, 0, 258, 0, 0, 0, 0, 0, - 141, 127, 139, 0, 144, 145, 0, 0, 0, 0, - 0, 0, 111, 109, 206, 217, 218, 219, 224, 220, - 221, 222, 223, 215, 0, 226, 233, 232, 234, 0, - 243, 0, 0, 0, 0, 0, 278, 0, 280, 258, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 98, 99, 101, 0, 0, 0, - 0, 0, 0, 0, 170, 148, 0, 0, 0, 0, - 0, 106, 112, 110, 205, 96, 203, 0, 216, 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, 0, 160, 0, 0, - 0, 0, 147, 0, 0, 0, 0, 60, 0, 100, - 0, 225, 0, 0, 257, 0, 0, 104, 105, 104, - 0, 0, 0, 0, 0, 262, 263, 257, 0, 0, - 0, 259, 0, 167, 0, 0, 162, 163, 159, 166, - 59, 202, 204, 96, 107, 0, 0, 0, 0, 0, - 264, 265, 0, 279, 281, 0, 0, 268, 271, 272, - 0, 284, 164, 165, 0, 0, 0, 60, 108, 102, - 227, 0, 0, 96, 0, 100, 253, 0, 100, 161, - 168, 169, 201, 0, 207, 0, 246, 0, 0, 255, - 0, 0, 254, 274, 103, 244, 0, 245, 0, 96, - 0, 0, 0, 256, 0, 0, 0, 0, 251, 0, - 0, 250, 0, 247, 0, 0, 0 +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const unsigned short int yyprhs[] = +{ + 0, 0, 3, 5, 7, 9, 11, 13, 15, 17, + 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, + 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, + 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, 122, 125, 126, 128, 130, 133, 134, 136, + 138, 140, 142, 144, 146, 148, 150, 151, 153, 154, + 156, 158, 159, 161, 163, 165, 167, 168, 170, 172, + 174, 176, 178, 181, 183, 185, 187, 189, 190, 193, + 195, 197, 198, 201, 202, 205, 206, 210, 213, 214, + 216, 217, 221, 223, 226, 228, 230, 232, 234, 236, + 238, 241, 243, 246, 252, 258, 264, 270, 274, 277, + 283, 288, 291, 293, 295, 297, 301, 303, 307, 309, + 310, 312, 316, 321, 325, 329, 334, 339, 343, 350, + 356, 359, 362, 365, 368, 371, 374, 377, 380, 383, + 386, 393, 399, 408, 415, 422, 430, 438, 445, 454, + 463, 467, 469, 471, 473, 475, 476, 478, 481, 482, + 486, 487, 491, 495, 497, 501, 505, 506, 513, 514, + 522, 523, 531, 534, 538, 540, 544, 548, 552, 556, + 558, 559, 565, 569, 571, 575, 577, 578, 588, 590, + 592, 597, 599, 601, 604, 608, 609, 611, 613, 615, + 617, 619, 621, 623, 625, 627, 631, 633, 639, 641, + 643, 645, 647, 649, 651, 654, 657, 660, 664, 667, + 668, 670, 673, 676, 680, 690, 700, 709, 724, 726, + 728, 735, 741, 744, 751, 759, 763, 769, 770, 771, + 775, 778, 780, 786, 792, 799, 806, 811, 818, 823, + 828, 835, 842, 845, 854, 856, 858, 859, 863, 870, + 874, 881, 884, 889, 896 }; -static const short yydefgoto[] = { 186, - 187, 188, 189, 252, 269, 109, 110, 70, 492, 12, - 71, 14, 36, 37, 38, 42, 48, 119, 323, 231, - 397, 326, 535, 377, 353, 520, 288, 354, 72, 111, - 128, 196, 129, 130, 101, 276, 366, 277, 79, 565, - 15, 16, 18, 17, 192, 240, 241, 57, 21, 55, - 92, 417, 418, 120, 199, 49, 87, 50, 43, 420, - 367, 74, 369, 293, 51, 83, 84, 225, 539, 123, - 306, 500, 400, 226, 227, 228, 229 +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const short int yyrhs[] = +{ + 186, 0, -1, 66, -1, 67, -1, 68, -1, 69, + -1, 70, -1, 71, -1, 72, -1, 73, -1, 74, + -1, 78, -1, 79, -1, 80, -1, 75, -1, 76, + -1, 77, -1, 109, -1, 110, -1, 111, -1, 112, + -1, 113, -1, 114, -1, 115, -1, 116, -1, 117, + -1, 118, -1, 119, -1, 120, -1, 83, -1, 84, + -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, 89, -1, 90, + -1, 91, -1, 92, -1, 21, -1, 22, -1, 9, + -1, 10, -1, 11, -1, 14, -1, 17, -1, 154, + -1, -1, 154, 132, -1, -1, 15, -1, 18, -1, + 157, 132, -1, -1, 35, -1, 37, -1, 36, -1, + 38, -1, 40, -1, 39, -1, 41, -1, 43, -1, + -1, 131, -1, -1, 39, -1, 41, -1, -1, 35, + -1, 36, -1, 37, -1, 40, -1, -1, 54, -1, + 55, -1, 56, -1, 57, -1, 58, -1, 53, 4, + -1, 110, -1, 111, -1, 128, -1, 129, -1, -1, + 166, 165, -1, 127, -1, 165, -1, -1, 168, 167, + -1, -1, 46, 4, -1, -1, 133, 46, 4, -1, + 29, 17, -1, -1, 171, -1, -1, 133, 174, 173, + -1, 171, -1, 46, 4, -1, 9, -1, 10, -1, + 11, -1, 12, -1, 42, -1, 175, -1, 176, 134, + -1, 208, -1, 135, 4, -1, 176, 136, 180, 137, + 168, -1, 8, 136, 180, 137, 168, -1, 138, 4, + 139, 176, 140, -1, 141, 4, 139, 176, 142, -1, + 143, 181, 144, -1, 143, 144, -1, 141, 143, 181, + 144, 142, -1, 141, 143, 144, 142, -1, 176, 166, + -1, 176, -1, 8, -1, 177, -1, 179, 133, 177, + -1, 179, -1, 179, 133, 32, -1, 32, -1, -1, + 176, -1, 181, 133, 176, -1, 176, 138, 184, 140, + -1, 176, 138, 140, -1, 176, 145, 17, -1, 176, + 141, 184, 142, -1, 176, 143, 184, 144, -1, 176, + 143, 144, -1, 176, 141, 143, 184, 144, 142, -1, + 176, 141, 143, 144, 142, -1, 176, 33, -1, 176, + 34, -1, 176, 208, -1, 176, 183, -1, 176, 20, + -1, 152, 3, -1, 152, 4, -1, 9, 21, -1, + 9, 22, -1, 153, 7, -1, 149, 136, 182, 31, + 176, 137, -1, 108, 136, 182, 219, 137, -1, 122, + 136, 182, 133, 182, 133, 182, 137, -1, 147, 136, + 182, 133, 182, 137, -1, 148, 136, 182, 133, 182, + 137, -1, 81, 150, 136, 182, 133, 182, 137, -1, + 82, 151, 136, 182, 133, 182, 137, -1, 124, 136, + 182, 133, 182, 137, -1, 125, 136, 182, 133, 182, + 133, 182, 137, -1, 126, 136, 182, 133, 182, 133, + 182, 137, -1, 184, 133, 182, -1, 182, -1, 27, + -1, 28, -1, 187, -1, -1, 188, -1, 187, 188, + -1, -1, 26, 189, 204, -1, -1, 25, 190, 205, + -1, 51, 50, 194, -1, 19, -1, 156, 13, 176, + -1, 156, 13, 8, -1, -1, 158, 161, 185, 182, + 191, 173, -1, -1, 158, 159, 161, 185, 182, 192, + 173, -1, -1, 158, 160, 161, 185, 176, 193, 173, + -1, 44, 195, -1, 47, 132, 196, -1, 17, -1, + 45, 132, 17, -1, 59, 132, 17, -1, 138, 197, + 140, -1, 197, 133, 17, -1, 17, -1, -1, 198, + 133, 176, 166, 155, -1, 176, 166, 155, -1, 198, + -1, 198, 133, 32, -1, 32, -1, -1, 164, 178, + 157, 136, 199, 137, 168, 172, 169, -1, 23, -1, + 143, -1, 163, 161, 200, 201, -1, 24, -1, 144, + -1, 211, 203, -1, 162, 161, 200, -1, -1, 52, + -1, 3, -1, 4, -1, 7, -1, 21, -1, 22, + -1, 33, -1, 34, -1, 20, -1, 141, 184, 142, + -1, 183, -1, 50, 206, 17, 133, 17, -1, 5, + -1, 6, -1, 154, -1, 157, -1, 208, -1, 207, + -1, 176, 209, -1, 211, 212, -1, 202, 212, -1, + 213, 156, 214, -1, 213, 216, -1, -1, 16, -1, + 60, 210, -1, 60, 8, -1, 61, 12, 209, -1, + 61, 9, 209, 133, 12, 209, 133, 12, 209, -1, + 62, 152, 209, 133, 12, 209, 138, 215, 140, -1, + 62, 152, 209, 133, 12, 209, 138, 140, -1, 63, + 164, 178, 209, 136, 218, 137, 168, 31, 12, 209, + 64, 12, 209, -1, 64, -1, 65, -1, 215, 152, + 207, 133, 12, 209, -1, 152, 207, 133, 12, 209, + -1, 156, 221, -1, 176, 138, 209, 133, 209, 140, + -1, 217, 133, 138, 209, 133, 209, 140, -1, 176, + 209, 166, -1, 218, 133, 176, 209, 166, -1, -1, + -1, 219, 133, 210, -1, 49, 48, -1, 48, -1, + 147, 176, 209, 133, 209, -1, 148, 176, 209, 133, + 209, -1, 81, 150, 176, 209, 133, 209, -1, 82, + 151, 176, 209, 133, 209, -1, 149, 210, 31, 176, + -1, 122, 210, 133, 210, 133, 210, -1, 123, 210, + 133, 176, -1, 124, 210, 133, 210, -1, 125, 210, + 133, 210, 133, 210, -1, 126, 210, 133, 210, 133, + 210, -1, 121, 217, -1, 220, 164, 178, 209, 136, + 218, 137, 168, -1, 223, -1, 30, -1, -1, 103, + 176, 170, -1, 103, 176, 133, 9, 209, 170, -1, + 104, 176, 170, -1, 104, 176, 133, 9, 209, 170, + -1, 105, 210, -1, 222, 106, 176, 209, -1, 222, + 107, 210, 133, 176, 209, -1, 108, 176, 209, 219, + -1 }; -static const short yypact[] = { 356, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 4, -115, -2, - -52, 93, -4, 51, 593,-32768, 195, 140, 41, 99, --32768, 87, 141,-32768, 125,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 128, 128, 47,-32768,-32768, --32768, 128,-32768,-32768,-32768,-32768,-32768, 128, 251,-32768, - 17, 262, 264, 269,-32768,-32768,-32768,-32768,-32768, 151, --32768,-32768,-32768,-32768,-32768, 287, 292, 3, 13,-32768, --32768,-32768, 113,-32768, 47, 47,-32768,-32768, 840, 290, - 290,-32768,-32768, 88,-32768,-32768,-32768,-32768,-32768,-32768, --32768, -90, 1094,-32768, 158, 164, 107, 151,-32768, 113, - -91,-32768, 1094, 840, 1054, 79, 295, 297, 208, 298, - 616,-32768, 302,-32768,-32768,-32768,-32768,-32768, 1197,-32768, - -14, 1319,-32768, 291,-32768,-32768, 113,-32768, 179, 176, - 1054, 1054, 175, -82, 1054,-32768, 200,-32768, 113,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 241, - 474, 202,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 205,-32768,-32768,-32768, 213, 214, - 215, 802, 1213, 460, 335, 218, 221, 232, 236,-32768, --32768, 245,-32768, 151, 113, 163,-32768,-32768,-32768,-32768, --32768, 331, 1235, 210, 371, 290,-32768,-32768, 241, 474, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054,-32768, 290,-32768, 181,-32768,-32768, - -61, 1133,-32768, 26, -64,-32768, 242, 113,-32768, 245, - 245,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 247,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 249, 840, - 840, 840, 840, 840,-32768,-32768, -30, 517, -10,-32768, - -40,-32768, 840, 840, 840, 840, 10,-32768, 252,-32768, - 151, 759,-32768, 884, 884,-32768, 884, 1197, 1054, 1054, - 19, 144,-32768, 759, 119, 254, 258, 261, 263, 265, - 266, 759, 759, 364, 268, 1197, 1054, 1054,-32768,-32768, --32768,-32768,-32768,-32768,-32768, -31,-32768,-32768,-32768, -31, --32768,-32768, 840, 840,-32768, 271, 273, 275, 276, 840, --32768, 260, 616, -6,-32768,-32768, 277, 278, 387, 286, - 404, 420,-32768, 245, 1149,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 374, 840,-32768,-32768,-32768,-32768, 294, --32768, 296, 884, 759, 759, 20,-32768, 25,-32768,-32768, - 884, 299, 1054, 1054, 1054, 1054, 1054, 301, 303, 1054, - 1054, 884, 759, 305,-32768,-32768,-32768, 306, 307, 32, - 840, 840, 840, 840,-32768,-32768, 300, 840, 840, 1054, - 840,-32768,-32768,-32768,-32768, 113, 310, 308,-32768, 411, - 8, 432, 434, 311, 315, 319, 884, 428, 884, 320, - 322, 884, 323, 113,-32768, 324, 326, 884, 884, 113, --32768, 325,-32768, 1054, 840, 840, 1054,-32768, 327, 336, - 330, 343,-32768, 342, 346, 136, 347, 154, 1168,-32768, - 352,-32768, 884, 884, 1054, 884, 884, 354,-32768, 354, - 884, 355, 1054, 1054, 1054,-32768,-32768, 1054, 759, 353, - 357,-32768, 840,-32768, 840, 840,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 113, 56, 447, 365, 359, 759, 73, --32768,-32768, 454,-32768,-32768, 340, 884,-32768,-32768,-32768, - 100,-32768,-32768,-32768, 366, 367, 368, 154,-32768, 461, --32768, 494, 5,-32768, 1054,-32768,-32768, 369,-32768,-32768, --32768,-32768,-32768, 504,-32768, 884,-32768, 1008, 7, -61, - 759, 182,-32768, -31,-32768,-32768, 379,-32768, 1008,-32768, - 501, 502, 382, -61, 884, 884, 505, 452,-32768, 884, - 507,-32768, 884,-32768, 520, 521,-32768 +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const unsigned short int yyrline[] = +{ + 0, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, + 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1035, 1035, 1035, + 1035, 1035, 1035, 1036, 1036, 1036, 1036, 1036, 1036, 1039, + 1039, 1040, 1040, 1041, 1041, 1042, 1042, 1043, 1043, 1047, + 1047, 1048, 1048, 1049, 1049, 1050, 1050, 1051, 1051, 1052, + 1052, 1053, 1053, 1054, 1055, 1060, 1061, 1061, 1063, 1063, + 1064, 1064, 1068, 1072, 1077, 1077, 1079, 1083, 1089, 1090, + 1091, 1092, 1093, 1097, 1098, 1099, 1103, 1104, 1108, 1109, + 1110, 1114, 1115, 1116, 1117, 1118, 1121, 1122, 1123, 1124, + 1125, 1126, 1127, 1134, 1135, 1136, 1137, 1140, 1141, 1146, + 1147, 1150, 1151, 1158, 1159, 1165, 1166, 1174, 1182, 1183, + 1188, 1189, 1190, 1195, 1208, 1208, 1208, 1208, 1211, 1215, + 1219, 1226, 1231, 1239, 1257, 1275, 1280, 1292, 1302, 1306, + 1316, 1323, 1330, 1337, 1342, 1347, 1354, 1355, 1362, 1369, + 1377, 1382, 1393, 1421, 1437, 1466, 1494, 1519, 1538, 1563, + 1582, 1594, 1601, 1667, 1677, 1687, 1693, 1699, 1704, 1709, + 1717, 1729, 1750, 1758, 1764, 1775, 1780, 1785, 1791, 1797, + 1806, 1810, 1818, 1818, 1829, 1834, 1842, 1843, 1847, 1847, + 1851, 1851, 1854, 1857, 1869, 1893, 1904, 1904, 1914, 1914, + 1922, 1922, 1932, 1935, 1941, 1954, 1958, 1963, 1965, 1970, + 1975, 1984, 1994, 2005, 2009, 2018, 2027, 2032, 2138, 2138, + 2140, 2149, 2149, 2151, 2156, 2168, 2172, 2177, 2181, 2185, + 2189, 2193, 2197, 2201, 2205, 2209, 2234, 2238, 2252, 2256, + 2260, 2264, 2270, 2270, 2276, 2285, 2289, 2298, 2309, 2318, + 2330, 2343, 2347, 2351, 2356, 2366, 2385, 2394, 2461, 2465, + 2472, 2483, 2496, 2505, 2516, 2526, 2534, 2542, 2545, 2546, + 2553, 2557, 2562, 2583, 2600, 2613, 2626, 2638, 2646, 2653, + 2659, 2665, 2671, 2686, 2750, 2755, 2759, 2766, 2773, 2781, + 2788, 2796, 2804, 2818, 2835 }; +#endif -static const short yypgoto[] = { 402, - 408, 414, 415, 329, 332, -203,-32768, 0, 15, 455, - 11,-32768,-32768,-32768, 204,-32768,-32768, -174, -286, -380, --32768, -231,-32768, -296, 45,-32768, -228,-32768,-32768, -24, - 309, -278,-32768, 440, 449, -69, -108, -179, 168,-32768, --32768, 529,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 467,-32768,-32768,-32768,-32768,-32768,-32768, - -429, -74, 118, -159,-32768, 498,-32768,-32768,-32768,-32768, --32768, 74, 171,-32768,-32768,-32768,-32768 +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "ESINT64VAL", "EUINT64VAL", + "LOCALVAL_ID", "GLOBALVAL_ID", "FPVAL", "VOID", "INTTYPE", "FLOAT", + "DOUBLE", "LABEL", "TYPE", "LOCALVAR", "GLOBALVAR", "LABELSTR", + "STRINGCONSTANT", "ATSTRINGCONSTANT", "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", + "EXTERNAL", "TARGET", "TRIPLE", "ALIGN", "DEPLIBS", "CALL", "TAIL", + "ASM_TOK", "MODULE", "SIDEEFFECT", "CC_TOK", "CCC_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", "SHL", "LSHR", "ASHR", "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", "VAARG", "EXTRACTELEMENT", + "INSERTELEMENT", "SHUFFLEVECTOR", "NORETURN", "INREG", "SRET", "DEFAULT", + "HIDDEN", "'='", "','", "'*'", "'\\\\'", "'('", "')'", "'['", "'x'", + "']'", "'<'", "'>'", "'{'", "'}'", "'c'", "$accept", "ArithmeticOps", + "LogicalOps", "CastOps", "IPredicates", "FPredicates", "IntType", + "FPType", "LocalName", "OptLocalName", "OptLocalAssign", "GlobalName", + "OptGlobalAssign", "GVInternalLinkage", "GVExternalLinkage", + "GVVisibilityStyle", "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", + "TargetDefinition", "LibrariesDefinition", "LibList", "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 - -#define YYLAST 1445 - - -static const short yytable[] = { 11, - 73, 297, 190, 279, 281, 379, 96, 330, 197, 112, - 13, 331, 332, 296, 11, 296, 22, 58, 59, 373, - 98, 61, 62, 63, 64, 13, 1, 2, 427, 3, - 4, 298, 82, 429, 138, 458, 191, 392, 351, 396, - 85, 135, 124, 396, 100, 319, 320, 23, 19, 125, - 135, 316, 136, 303, 65, 352, 307, 308, 309, 310, - 311, 237, 20, 314, 315, 428, 321, 322, 127, 102, - 428, 103, 100, 77, 78, 319, 320, 328, 127, 24, - 139, -54, -54, 11, 351, 27, 28, 29, 30, 31, - 32, 33, 340, 34, 195, 395, 321, 322, 344, 140, - 141, 1, 340, 346, 3, 25, 234, 235, 547, 341, - 238, 58, 59, 518, 98, 61, 62, 63, 64, 553, - 1, 2, 340, 3, 4, 414, 340, 26, 198, 58, - 59, 345, 60, 61, 62, 63, 64, 407, 1, 2, - 340, 3, 4, 540, 537, 97, 548, 66, 65, 462, - 67, 376, 102, 68, 103, 69, 99, 56, 394, 102, - 86, 103, 319, 320, 447, 327, 65, 1, 448, 554, - 3, 504, 52, 505, 44, 45, 46, 2, 292, 47, - 4, 35, 395, 321, 322, 421, 301, 302, 292, 304, - 305, 292, 292, 292, 292, 292, 312, 313, 292, 292, - 335, 336, 337, 338, 339, 525, 289, 127, 396, 526, - 142, 143, 551, 347, 348, 349, 350, 368, 294, 368, - 368, 295, 368, 433, 54, 435, 436, 437, 495, 368, - 53, 441, 525, 40, 190, 41, 529, 368, 368, 75, - 76, 66, 104, 105, 67, 80, 102, 68, 103, 69, - 133, 81, 102, 343, 103, 396, 381, 396, 35, 66, - 319, 320, 67, 398, 399, 68, 82, 69, 191, 102, - 405, 103, 489, 195, 374, 375, 378, 102, 89, 103, - 90, 321, 322, 317, 318, 91, 93, 482, 319, 320, - 94, 195, 393, 292, 542, 95, 131, 544, 368, 368, - 368, -55, 132, -56, 144, 193, 368, 230, 395, 321, - 322, 232, 233, 508, 509, 510, 236, 368, 368, 538, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 416, 449, 450, 451, 452, 549, 239, 270, 454, 455, - 271, 457, 113, 114, 115, 116, 117, 118, 272, 273, - 274, 282, 368, 283, 368, -175, 284, 368, 292, 434, - 292, 292, 292, 368, 368, 440, 292, 285, -62, 1, - 2, 286, 3, 4, 5, 480, 481, 287, 290, 296, - 6, 7, 333, 329, 334, 456, 382, 355, 368, 368, - 383, 368, 368, 384, 390, 385, 368, 386, 387, 8, - 391, 406, 9, 401, 368, 402, 10, 403, 404, 408, - 409, 370, 371, 515, 372, 516, 517, 410, 411, 479, - 412, 380, 292, 413, 368, 419, 422, 461, 423, 388, - 389, 469, 368, 438, 494, 439, 432, 444, 445, 446, - 499, 453, 459, 463, 460, 464, 465, 466, 292, 292, - 292, 467, 447, 499, 471, 473, 474, 491, 475, 483, - 478, 368, 485, 521, 58, 59, 368, 98, 106, 107, - 108, 64, 484, 1, 2, 486, 3, 4, 487, 527, - 368, 368, 488, 490, 496, 368, 503, 507, 368, 513, - 424, 425, 426, 514, 253, 254, 523, 522, 431, 428, - 541, 65, 530, 531, 532, 536, 534, 545, 543, 442, - 443, 552, 555, 556, 557, 561, 560, 491, 563, 566, - 567, 58, 59, 221, 98, 106, 107, 108, 64, 222, - 1, 2, 533, 3, 4, 223, 224, 299, 122, 519, - 325, 300, 137, 39, 468, 134, 470, 121, 88, 472, - 430, 511, 0, 0, 0, 476, 477, 0, 65, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 0, 0, 0, 0, 0, 0, 0, - 497, 498, 0, 501, 502, 0, 0, 0, 506, 0, - 0, 0, -174, 0, 66, 0, 512, 67, 0, 0, - 68, 0, 69, 280, 0, -62, 1, 2, 0, 3, - 4, 5, 0, 0, 0, 0, 524, 6, 7, 0, - 58, 59, 0, 0, 528, 0, 0, 0, 0, 1, - 2, 0, 3, 4, 0, 145, 8, 0, 0, 9, - 0, 0, 0, 10, 0, 0, 0, 0, 146, 147, - 0, 66, 0, 546, 67, 0, 0, 68, 550, 69, - 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 558, 559, 0, 0, 0, 562, 0, 0, - 564, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 0, 175, 176, 177, 178, 0, 179, - 180, 181, 0, 0, 0, 0, 0, 0, 0, 102, - 0, 103, 0, 182, 0, 0, 183, 0, 184, 0, - 185, 356, 357, 58, 59, 358, 0, 0, 0, 0, - 0, 0, 1, 2, 0, 3, 4, 0, 359, 360, - 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 362, 363, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 58, 59, 364, 98, - 106, 107, 108, 64, 0, 1, 2, 0, 3, 4, - 0, 0, 0, 0, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 0, 0, - 0, 0, 0, 65, 58, 59, 0, 98, 106, 107, - 108, 64, 0, 1, 2, 0, 3, 4, 0, 0, - 0, 0, 0, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 0, 175, 176, 177, - 178, 65, 179, 180, 181, 0, 356, 357, 58, 59, - 358, 0, 102, 0, 103, 0, 0, 1, 2, 365, - 3, 4, 0, 359, 360, 361, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 362, 363, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 364, 0, 0, 66, 0, 0, 67, - 0, 275, 68, 0, 69, 0, 0, 0, 0, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, - 68, 0, 69, 0, 0, 0, 0, 0, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 0, 175, 176, 177, 178, 0, 179, 180, 181, - 356, 357, 0, 0, 358, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 365, 0, 0, 359, 360, 361, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 362, 363, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 364, 58, 59, - 0, 98, 61, 62, 63, 64, 0, 1, 2, 0, - 3, 4, 0, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 0, 0, 0, - 0, 0, 0, 0, 0, 65, 0, 0, 58, 59, - 0, 98, 61, 62, 63, 64, 0, 1, 2, 0, - 3, 4, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 126, 175, 176, 177, 178, - 0, 179, 180, 181, 0, 65, 0, 58, 59, 0, - 98, 61, 62, 63, 64, 0, 1, 2, 365, 3, - 4, 0, 0, 58, 59, 0, 98, 61, 62, 63, - 64, 0, 1, 2, 324, 3, 4, 0, 0, 0, - 0, 0, 58, 59, 65, 98, 61, 62, 63, 64, - 415, 1, 2, 0, 3, 4, 0, 0, 66, 0, - 65, 67, 0, 0, 68, 0, 69, 0, 0, 493, - 0, 58, 59, 0, 194, 61, 62, 63, 64, 65, - 1, 2, 0, 3, 4, 0, 0, 58, 59, 0, - 98, 106, 107, 108, 64, 0, 1, 2, 66, 3, - 4, 67, 0, 0, 68, 0, 69, 0, 65, 58, - 59, 0, 291, 61, 62, 63, 64, 0, 1, 2, - 0, 3, 4, 0, 65, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, - 67, 0, 0, 68, 0, 69, 65, 0, 0, 0, - 0, 0, 0, 66, 0, 0, 67, 0, 0, 68, - 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 66, 0, 0, 67, 0, 0, 68, 0, - 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 66, 0, 0, 67, 0, 0, 68, 0, 69, - 0, 0, 0, 0, 0, 0, 0, 66, 200, 0, - 67, 0, 0, 68, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 201, 202, 0, 66, - 0, 0, 67, 0, 0, 68, 0, 69, 203, 204, - 205, 206, 207, 208, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 209, 210, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 211, 212, - 213, 0, 0, 214, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 215, 216, 176, 177, - 178, 217, 218, 219, 220 +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const unsigned short int yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 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, 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, 146, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 148, 148, 148, 148, 148, 148, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 152, 153, 153, 154, 154, + 155, 155, 156, 156, 157, 157, 158, 158, 159, 159, + 159, 159, 159, 160, 160, 160, 161, 161, 162, 162, + 162, 163, 163, 163, 163, 163, 164, 164, 164, 164, + 164, 164, 164, 165, 165, 165, 165, 166, 166, 167, + 167, 168, 168, 169, 169, 170, 170, 171, 172, 172, + 173, 173, 174, 174, 175, 175, 175, 175, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 177, 178, 178, 179, 179, 180, 180, 180, 180, + 181, 181, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 184, 184, 185, 185, 186, 186, 187, 187, 189, 188, + 190, 188, 188, 188, 188, 188, 191, 188, 192, 188, + 193, 188, 188, 188, 194, 195, 195, 196, 197, 197, + 197, 198, 198, 199, 199, 199, 199, 200, 201, 201, + 202, 203, 203, 204, 205, 206, 206, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 208, 208, + 208, 208, 209, 209, 210, 211, 211, 212, 213, 213, + 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, + 215, 215, 216, 217, 217, 218, 218, 218, 219, 219, + 220, 220, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 222, 222, 223, 223, 223, + 223, 223, 223, 223, 223 }; -static const short yycheck[] = { 0, - 25, 205, 111, 183, 184, 302, 4, 239, 23, 79, - 0, 240, 241, 9, 15, 9, 132, 5, 6, 298, - 8, 9, 10, 11, 12, 15, 14, 15, 9, 17, - 18, 206, 16, 9, 104, 416, 111, 316, 29, 326, - 24, 133, 133, 330, 69, 107, 108, 50, 45, 140, - 133, 226, 144, 213, 42, 46, 216, 217, 218, 219, - 220, 144, 59, 223, 224, 46, 128, 129, 93, 134, - 46, 136, 97, 27, 28, 107, 108, 142, 103, 132, - 105, 3, 4, 84, 29, 35, 36, 37, 38, 39, - 40, 41, 133, 43, 119, 127, 128, 129, 278, 21, - 22, 14, 133, 144, 17, 13, 131, 132, 538, 140, - 135, 5, 6, 494, 8, 9, 10, 11, 12, 549, - 14, 15, 133, 17, 18, 354, 133, 132, 143, 5, - 6, 142, 8, 9, 10, 11, 12, 144, 14, 15, - 133, 17, 18, 524, 140, 143, 140, 135, 42, 142, - 138, 133, 134, 141, 136, 143, 144, 17, 318, 134, - 144, 136, 107, 108, 133, 140, 42, 14, 137, 550, - 17, 468, 132, 470, 35, 36, 37, 15, 203, 40, - 18, 131, 127, 128, 129, 365, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 270, 271, 272, 273, 274, 133, 196, 232, 495, 137, - 3, 4, 31, 283, 284, 285, 286, 292, 9, 294, - 295, 12, 297, 383, 138, 385, 386, 387, 460, 304, - 132, 391, 133, 39, 343, 41, 137, 312, 313, 36, - 37, 135, 75, 76, 138, 42, 134, 141, 136, 143, - 144, 48, 134, 278, 136, 542, 138, 544, 131, 135, - 107, 108, 138, 333, 334, 141, 16, 143, 343, 134, - 340, 136, 137, 298, 299, 300, 133, 134, 17, 136, - 17, 128, 129, 103, 104, 17, 136, 447, 107, 108, - 4, 316, 317, 318, 526, 4, 139, 529, 373, 374, - 375, 7, 139, 7, 7, 4, 381, 17, 127, 128, - 129, 133, 137, 473, 474, 475, 142, 392, 393, 523, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 355, 401, 402, 403, 404, 539, 137, 136, 408, 409, - 136, 411, 53, 54, 55, 56, 57, 58, 136, 136, - 136, 17, 427, 136, 429, 0, 136, 432, 383, 384, - 385, 386, 387, 438, 439, 390, 391, 136, 13, 14, - 15, 136, 17, 18, 19, 445, 446, 133, 48, 9, - 25, 26, 136, 142, 136, 410, 133, 136, 463, 464, - 133, 466, 467, 133, 31, 133, 471, 133, 133, 44, - 133, 142, 47, 133, 479, 133, 51, 133, 133, 133, - 133, 294, 295, 483, 297, 485, 486, 31, 133, 444, - 17, 304, 447, 4, 499, 52, 133, 17, 133, 312, - 313, 4, 507, 133, 459, 133, 138, 133, 133, 133, - 465, 142, 133, 12, 137, 12, 136, 133, 473, 474, - 475, 133, 133, 478, 133, 133, 133, 458, 133, 133, - 136, 536, 133, 17, 5, 6, 541, 8, 9, 10, - 11, 12, 137, 14, 15, 133, 17, 18, 137, 140, - 555, 556, 137, 137, 133, 560, 133, 133, 563, 137, - 373, 374, 375, 137, 21, 22, 138, 133, 381, 46, - 525, 42, 137, 137, 137, 12, 46, 4, 140, 392, - 393, 133, 12, 12, 133, 64, 12, 518, 12, 0, - 0, 5, 6, 122, 8, 9, 10, 11, 12, 122, - 14, 15, 518, 17, 18, 122, 122, 209, 84, 495, - 232, 210, 103, 15, 427, 97, 429, 81, 51, 432, - 380, 478, -1, -1, -1, 438, 439, -1, 42, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, - 463, 464, -1, 466, 467, -1, -1, -1, 471, -1, - -1, -1, 0, -1, 135, -1, 479, 138, -1, -1, - 141, -1, 143, 144, -1, 13, 14, 15, -1, 17, - 18, 19, -1, -1, -1, -1, 499, 25, 26, -1, - 5, 6, -1, -1, 507, -1, -1, -1, -1, 14, - 15, -1, 17, 18, -1, 20, 44, -1, -1, 47, - -1, -1, -1, 51, -1, -1, -1, -1, 33, 34, - -1, 135, -1, 536, 138, -1, -1, 141, 541, 143, - 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 555, 556, -1, -1, -1, 560, -1, -1, - 563, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, -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, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, -1, 119, 120, 121, 122, -1, 124, - 125, 126, -1, -1, -1, -1, -1, -1, -1, 134, - -1, 136, -1, 138, -1, -1, 141, -1, 143, -1, - 145, 3, 4, 5, 6, 7, -1, -1, -1, -1, - -1, -1, 14, 15, -1, 17, 18, -1, 20, 21, - 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 33, 34, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 5, 6, 50, 8, - 9, 10, 11, 12, -1, 14, 15, -1, 17, 18, - -1, -1, -1, -1, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, -1, -1, - -1, -1, -1, 42, 5, 6, -1, 8, 9, 10, - 11, 12, -1, 14, 15, -1, 17, 18, -1, -1, - -1, -1, -1, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, - 122, 42, 124, 125, 126, -1, 3, 4, 5, 6, - 7, -1, 134, -1, 136, -1, -1, 14, 15, 141, - 17, 18, -1, 20, 21, 22, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 33, 34, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 50, -1, -1, 135, -1, -1, 138, - -1, 140, 141, -1, 143, -1, -1, -1, -1, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 135, -1, -1, 138, -1, -1, - 141, -1, 143, -1, -1, -1, -1, -1, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, -1, 119, 120, 121, 122, -1, 124, 125, 126, - 3, 4, -1, -1, 7, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 141, -1, -1, 20, 21, 22, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 50, 5, 6, - -1, 8, 9, 10, 11, 12, -1, 14, 15, -1, - 17, 18, -1, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, -1, -1, -1, - -1, -1, -1, -1, -1, 42, -1, -1, 5, 6, - -1, 8, 9, 10, 11, 12, -1, 14, 15, -1, - 17, 18, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 32, 119, 120, 121, 122, - -1, 124, 125, 126, -1, 42, -1, 5, 6, -1, - 8, 9, 10, 11, 12, -1, 14, 15, 141, 17, - 18, -1, -1, 5, 6, -1, 8, 9, 10, 11, - 12, -1, 14, 15, 32, 17, 18, -1, -1, -1, - -1, -1, 5, 6, 42, 8, 9, 10, 11, 12, - 32, 14, 15, -1, 17, 18, -1, -1, 135, -1, - 42, 138, -1, -1, 141, -1, 143, -1, -1, 32, - -1, 5, 6, -1, 8, 9, 10, 11, 12, 42, - 14, 15, -1, 17, 18, -1, -1, 5, 6, -1, - 8, 9, 10, 11, 12, -1, 14, 15, 135, 17, - 18, 138, -1, -1, 141, -1, 143, -1, 42, 5, - 6, -1, 8, 9, 10, 11, 12, -1, 14, 15, - -1, 17, 18, -1, 42, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 135, -1, -1, - 138, -1, -1, 141, -1, 143, 42, -1, -1, -1, - -1, -1, -1, 135, -1, -1, 138, -1, -1, 141, - -1, 143, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 135, -1, -1, 138, -1, -1, 141, -1, - 143, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 135, -1, -1, 138, -1, -1, 141, -1, 143, - -1, -1, -1, -1, -1, -1, -1, 135, 30, -1, - 138, -1, -1, 141, -1, 143, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 48, 49, -1, 135, - -1, -1, 138, -1, -1, 141, -1, 143, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 100, 101, - 102, -1, -1, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126 +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const unsigned char yyr2[] = +{ + 0, 2, 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, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 2, 0, 1, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, + 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, + 1, 1, 2, 1, 1, 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, + 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, 8, 8, + 3, 1, 1, 1, 1, 0, 1, 2, 0, 3, + 0, 3, 3, 1, 3, 3, 0, 6, 0, 7, + 0, 7, 2, 3, 1, 3, 3, 3, 3, 1, + 0, 5, 3, 1, 3, 1, 0, 9, 1, 1, + 4, 1, 1, 2, 3, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 1, 5, 1, 1, + 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, 4, 6, 4, 4, + 6, 6, 2, 8, 1, 1, 0, 3, 6, 3, + 6, 2, 4, 6, 4 }; -/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/share/bison.simple" -/* This file comes from bison-1.28. */ -/* Skeleton output parser for bison, - Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const unsigned short int yydefact[] = +{ + 67, 58, 64, 59, 65, 183, 180, 178, 0, 0, + 0, 0, 0, 0, 76, 0, 67, 176, 78, 81, + 0, 0, 192, 0, 0, 62, 0, 66, 68, 70, + 69, 71, 73, 72, 74, 75, 77, 76, 76, 0, + 1, 177, 79, 80, 76, 181, 82, 83, 84, 85, + 76, 239, 179, 239, 0, 0, 200, 193, 194, 182, + 228, 229, 185, 114, 115, 116, 117, 118, 0, 0, + 0, 0, 230, 231, 119, 184, 121, 0, 0, 172, + 173, 0, 86, 86, 240, 236, 63, 211, 212, 213, + 235, 195, 196, 199, 0, 139, 122, 0, 0, 0, + 0, 128, 140, 0, 120, 139, 0, 0, 114, 115, + 116, 0, 0, 0, 186, 0, 87, 88, 89, 90, + 91, 0, 214, 0, 276, 238, 0, 197, 138, 97, + 134, 136, 0, 0, 0, 0, 0, 0, 127, 0, + 188, 190, 157, 158, 155, 156, 159, 154, 150, 151, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 14, + 15, 16, 11, 12, 13, 0, 0, 0, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 153, 152, 110, 92, 133, 132, 0, 208, 209, + 210, 275, 261, 0, 0, 0, 0, 86, 248, 249, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 237, 86, 252, 0, 274, + 198, 131, 0, 101, 0, 0, 130, 0, 141, 101, + 110, 110, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 0, 53, 54, 49, 50, 51, 52, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 0, + 0, 0, 0, 0, 0, 143, 171, 0, 0, 0, + 147, 0, 144, 0, 0, 0, 0, 187, 0, 260, + 242, 0, 241, 0, 0, 55, 0, 0, 0, 0, + 105, 105, 281, 0, 0, 272, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 93, 94, 95, + 96, 98, 137, 135, 124, 125, 126, 129, 123, 189, + 191, 0, 0, 258, 0, 0, 0, 0, 0, 142, + 128, 140, 0, 145, 146, 0, 0, 0, 0, 0, + 112, 110, 206, 217, 218, 219, 224, 220, 221, 222, + 223, 215, 0, 226, 233, 232, 234, 0, 243, 0, + 0, 0, 0, 0, 277, 0, 279, 258, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 99, 100, 102, 0, 0, 0, 0, 0, 0, + 0, 170, 149, 0, 0, 0, 0, 107, 113, 111, + 205, 97, 203, 0, 216, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 284, 0, 0, 0, 268, + 269, 0, 0, 0, 0, 266, 0, 282, 0, 0, + 0, 0, 161, 0, 0, 0, 0, 148, 0, 0, + 0, 61, 0, 101, 0, 225, 0, 0, 257, 0, + 0, 105, 106, 105, 0, 0, 0, 0, 0, 262, + 263, 257, 0, 0, 0, 259, 0, 167, 0, 0, + 163, 164, 160, 60, 202, 204, 97, 108, 0, 0, + 0, 0, 0, 264, 265, 0, 278, 280, 0, 0, + 267, 270, 271, 0, 283, 165, 166, 0, 0, 0, + 61, 109, 103, 227, 0, 0, 97, 0, 101, 253, + 0, 101, 162, 168, 169, 201, 0, 207, 0, 246, + 0, 0, 255, 0, 0, 254, 273, 104, 244, 0, + 245, 0, 97, 0, 0, 0, 256, 0, 0, 0, + 0, 251, 0, 0, 250, 0, 247 +}; - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. +/* YYDEFGOTO[NTERM-NUM]. */ +static const short int yydefgoto[] = +{ + -1, 188, 189, 190, 252, 269, 111, 112, 72, 484, + 12, 73, 14, 37, 38, 39, 44, 50, 121, 321, + 231, 393, 324, 527, 374, 350, 512, 287, 351, 74, + 113, 130, 197, 131, 132, 103, 276, 363, 277, 81, + 15, 16, 17, 19, 18, 193, 240, 241, 59, 22, + 57, 94, 412, 413, 122, 200, 51, 89, 52, 45, + 415, 364, 76, 366, 292, 53, 85, 86, 225, 531, + 125, 305, 492, 396, 226, 227, 228, 229 +}; - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -399 +static const short int yypact[] = +{ + 406, -399, -399, -399, -399, -399, -399, -399, -26, -114, + -16, -53, 92, -11, 54, 136, 526, -399, 247, 173, + 43, 49, -399, 62, 194, -399, 814, -399, -399, -399, + -399, -399, -399, -399, -399, -399, -399, 134, 134, 99, + -399, -399, -399, -399, 134, -399, -399, -399, -399, -399, + 134, 212, -399, -1, 219, 225, 253, -399, -399, -399, + -399, -399, 135, -399, -399, -399, -399, -399, 271, 275, + 3, 33, -399, -399, -399, 160, -399, 99, 99, -399, + -399, 1029, 287, 287, -399, -399, 220, -399, -399, -399, + -399, -399, -399, -399, 20, 1071, -399, 141, 148, 105, + 135, -399, 160, -75, -399, 1071, 1029, 1174, 32, 286, + 293, 151, 294, 590, -399, 298, -399, -399, -399, -399, + -399, 1190, -399, -13, 1313, -399, 289, -399, -399, 160, + -399, 170, 167, 1174, 1174, 165, -68, 1174, -399, 174, + -399, 160, -399, -399, -399, -399, -399, -399, -399, -399, + -399, -399, -399, -399, -399, -399, -399, -399, -399, -399, + -399, -399, -399, -399, -399, 495, 591, 176, -399, -399, + -399, -399, -399, -399, -399, -399, -399, -399, -399, -399, + 177, 178, 182, 183, 776, 1212, 123, 305, 187, 188, + 189, -399, -399, 193, -399, 135, 160, 266, -399, -399, + -399, -399, -399, 284, 1229, 283, 325, 287, -399, -399, + 495, 591, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, + 1174, 1174, 1174, 1174, 1174, -399, 287, -399, 144, -399, + -399, -4, 1110, -399, -63, -110, -399, 204, 160, -399, + 193, 193, -399, -399, -399, -399, -399, -399, -399, -399, + -399, -399, 211, -399, -399, -399, -399, -399, -399, -399, + -399, -399, -399, -399, -399, -399, -399, -399, -399, 214, + 1029, 1029, 1029, 1029, 1029, -399, -399, 79, 494, -111, + -399, -66, -399, 1029, 1029, 1029, 39, -399, 216, -399, + 135, 733, -399, 858, 858, -399, 858, 1190, 1174, 1174, + 50, 111, -399, 733, 97, 215, 230, 231, 232, 233, + 234, 733, 733, 322, 1190, 1174, 1174, -399, -399, -399, + -399, -399, -399, -399, -27, -399, -399, -399, -27, -399, + -399, 1029, 1029, -399, 235, 236, 239, 240, 1029, -399, + 237, 590, 26, -399, -399, 241, 242, 345, 360, 374, + -399, 193, 1126, -399, -399, -399, -399, -399, -399, -399, + -399, 328, 1029, -399, -399, -399, -399, 249, -399, 252, + 858, 733, 733, 11, -399, 18, -399, -399, 858, 250, + 1174, 1174, 1174, 1174, 1174, 256, 257, 1174, 858, 733, + 259, -399, -399, -399, 262, 264, -34, 1029, 1029, 1029, + 1029, -399, -399, 258, 1029, 1029, 1174, -399, -399, -399, + -399, 160, 265, 267, -399, 384, -61, 390, 393, 272, + 281, 282, 858, 413, 858, 295, 296, 858, 297, 160, + -399, 301, 302, 858, 858, 160, 300, -399, 1174, 1029, + 1029, 1174, -399, 304, 285, 306, 307, -399, 308, 310, + 118, 38, 1145, -399, 311, -399, 858, 858, 1174, 858, + 858, 315, -399, 315, 858, 316, 1174, 1174, 1174, -399, + -399, 1174, 733, 317, 319, -399, 1029, -399, 1029, 1029, + -399, -399, -399, -399, -399, -399, 160, 149, 421, 326, + 314, 733, 19, -399, -399, 412, -399, -399, 321, 858, + -399, -399, -399, 36, -399, -399, -399, 327, 329, 330, + 38, -399, 416, -399, 451, 2, -399, 1174, -399, -399, + 333, -399, -399, -399, -399, -399, 461, -399, 858, -399, + 982, 5, -4, 733, 210, -399, -27, -399, -399, 335, + -399, 982, -399, 457, 464, 344, -4, 858, 858, 468, + 417, -399, 858, 471, -399, 858, -399 +}; - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ +/* YYPGOTO[NTERM-NUM]. */ +static const short int yypgoto[] = +{ + -399, 361, 362, 363, 274, 279, -198, -399, 0, -19, + 407, 9, -399, -399, -399, 113, -399, -399, -177, -307, + -398, -399, -236, -399, -299, 7, -399, -212, -399, -399, + -25, 263, -210, -399, 391, 398, -69, -109, -180, 179, + -399, -399, 482, -399, -399, -399, -399, -399, -399, -399, + -399, -399, -399, -399, 418, -399, -399, -399, -399, -399, + -399, -369, -73, 100, -158, -399, 454, -399, -399, -399, + -399, -399, 42, 137, -399, -399, -399, -399 +}; -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ +/* 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 -176 +static const short int yytable[] = +{ + 11, 75, 376, 328, 191, 279, 281, 98, 296, 13, + 198, 295, 114, 451, 295, 84, 11, 392, 23, 20, + 422, 392, 338, 87, 104, 13, 105, 424, 329, 330, + 297, 343, 326, 21, 24, -55, -55, 140, 60, 61, + 192, 100, 63, 64, 65, 66, 102, 1, 2, 314, + 3, 4, 1, 142, 143, 3, 302, 423, 137, 306, + 307, 308, 309, 310, 423, 137, 313, 338, 348, 138, + 129, 104, 338, 105, 102, 67, 237, 325, 344, 25, + 129, 455, 141, 317, 318, 349, 11, 370, 510, 28, + 29, 30, 31, 32, 33, 34, 196, 35, 342, 441, + 391, 319, 320, 442, 388, 26, 317, 318, 234, 235, + 60, 61, 238, 100, 63, 64, 65, 66, 532, 1, + 2, 27, 3, 4, 319, 320, 79, 80, 60, 61, + 199, 100, 108, 109, 110, 66, 40, 1, 2, 409, + 3, 4, 529, 88, 546, 540, 99, 67, 317, 318, + 77, 78, 517, 126, 144, 145, 518, 82, 390, 338, + 127, 539, 496, 83, 497, 67, 319, 320, 68, 517, + 403, 69, 545, 521, 70, 54, 71, 101, 348, 291, + 392, 55, 416, 373, 104, 36, 105, 300, 301, 291, + 303, 304, 291, 291, 291, 291, 291, 311, 312, 291, + 56, 333, 334, 335, 336, 337, 288, 129, 46, 47, + 48, 58, 338, 49, 345, 346, 347, 487, 365, 339, + 365, 365, 428, 365, 430, 431, 432, 392, 84, 392, + 365, 104, 191, 105, 1, 378, 91, 3, 365, 365, + 68, 543, 92, 69, 375, 104, 70, 105, 71, 135, + 315, 316, 104, 341, 105, 482, 106, 107, 68, 317, + 318, 69, 394, 395, 70, 36, 71, 280, 192, 401, + 93, 95, 196, 371, 372, 96, 391, 319, 320, 97, + 133, 2, 534, 475, 4, 536, 42, 134, 43, 196, + 389, 291, 293, -56, 104, 294, 105, 365, 365, 365, + -57, 146, 194, 232, 233, 365, 230, 236, 500, 501, + 502, 239, 270, 271, 272, 365, 365, 530, 273, 274, + 317, 318, 282, 283, 284, 285, 286, 411, 443, 444, + 445, 446, 289, 541, 295, 448, 449, 391, 319, 320, + 115, 116, 117, 118, 119, 120, 327, 331, 379, 365, + 332, 365, 352, 387, 365, 291, 429, 291, 291, 291, + 365, 365, 435, 380, 381, 382, 383, 384, 397, 398, + 473, 474, 399, 400, 404, 405, 406, 407, 408, 402, + 414, 450, 417, 365, 365, 418, 365, 365, 427, 433, + 434, 365, 438, 367, 368, 439, 369, 440, 452, 365, + 447, 454, 456, 377, 453, 457, -175, 507, 458, 508, + 509, 385, 386, 472, 459, 460, 291, 462, 365, -63, + 1, 2, 477, 3, 4, 5, 365, 486, 441, 464, + 466, 6, 7, 491, 467, 468, 471, 476, 513, 478, + 479, 291, 291, 291, 488, 480, 491, 481, 495, 499, + 8, 483, 515, 9, 505, 365, 506, 10, 423, 514, + 365, 519, 526, 528, 522, 537, 523, 524, 544, 547, + 419, 420, 421, 535, 365, 365, 548, 549, 426, 365, + 552, 553, 365, 555, 298, 222, 223, 224, 436, 437, + 299, 525, 533, 124, 511, 323, 139, 136, 41, 60, + 61, 123, 100, 108, 109, 110, 66, 90, 1, 2, + 483, 3, 4, 503, 425, 0, 0, 0, 0, 0, + 0, 0, 461, 0, 463, 0, -174, 465, 0, 0, + 0, 0, 0, 469, 470, 0, 67, 0, 0, -63, + 1, 2, 0, 3, 4, 5, 0, 0, 0, 0, + 0, 6, 7, 0, 0, 0, 489, 490, 0, 493, + 494, 0, 0, 0, 498, 0, 0, 0, 0, 0, + 8, 0, 504, 9, 0, 0, 0, 10, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 0, 0, + 0, 516, 0, 0, 0, 60, 61, 0, 0, 520, + 0, 0, 0, 0, 1, 2, 0, 3, 4, 0, + 147, 0, 253, 254, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 148, 149, 0, 0, 0, 538, 68, + 0, 0, 69, 542, 0, 70, 0, 71, 340, 0, + 0, 0, 0, 0, 0, 0, 0, 550, 551, 0, + 0, 0, 554, 0, 0, 556, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 0, 0, 0, 0, 0, 0, 0, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 0, 0, 0, 0, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 0, 180, 0, 181, 182, 183, 0, 0, 0, + 0, 0, 0, 0, 104, 0, 105, 0, 184, 0, + 0, 185, 0, 186, 0, 187, 353, 354, 60, 61, + 355, 0, 0, 0, 0, 0, 0, 1, 2, 0, + 3, 4, 0, 356, 357, 358, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 359, 360, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 60, 61, 361, 100, 108, 109, 110, 66, 0, + 1, 2, 0, 3, 4, 0, 0, 0, 0, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 0, 0, 67, 60, + 61, 0, 62, 63, 64, 65, 66, 0, 1, 2, + 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 0, 180, 67, 181, 182, 183, + 0, 353, 354, 60, 61, 355, 0, 104, 0, 105, + 0, 0, 1, 2, 362, 3, 4, 0, 356, 357, + 358, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 359, 360, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 361, 0, + 0, 68, 0, 0, 69, 0, 275, 70, 0, 71, + 0, 0, 0, 0, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 0, 0, 0, 0, 0, 0, 0, 0, 68, + 0, 0, 69, 0, 0, 70, 0, 71, 0, 0, + 0, 0, 0, 0, 0, 0, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 0, + 180, 0, 181, 182, 183, 353, 354, 0, 0, 355, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 362, + 0, 0, 356, 357, 358, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 359, 360, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 361, 0, 60, 61, 0, 100, 108, 109, + 110, 66, 0, 1, 2, 0, 3, 4, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 0, 0, 0, 0, 0, + 0, 67, 0, 0, 0, 0, 60, 61, 0, 100, + 63, 64, 65, 66, 0, 1, 2, 0, 3, 4, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 128, 180, 0, 181, 182, 183, 0, + 0, 0, 0, 67, 0, 60, 61, 0, 100, 63, + 64, 65, 66, 362, 1, 2, 0, 3, 4, 0, + 0, 60, 61, 0, 100, 63, 64, 65, 66, 0, + 1, 2, 322, 3, 4, 0, 0, 0, 0, 0, + 60, 61, 67, 100, 63, 64, 65, 66, 410, 1, + 2, 0, 3, 4, 68, 0, 0, 69, 67, 0, + 70, 0, 71, 0, 0, 0, 0, 485, 0, 60, + 61, 0, 100, 63, 64, 65, 66, 67, 1, 2, + 0, 3, 4, 0, 0, 60, 61, 0, 195, 63, + 64, 65, 66, 0, 1, 2, 68, 3, 4, 69, + 0, 0, 70, 0, 71, 0, 67, 60, 61, 0, + 100, 108, 109, 110, 66, 0, 1, 2, 0, 3, + 4, 0, 67, 0, 60, 61, 0, 290, 63, 64, + 65, 66, 0, 1, 2, 68, 3, 4, 69, 0, + 0, 70, 0, 71, 67, 0, 0, 0, 0, 0, + 0, 68, 0, 0, 69, 0, 0, 70, 0, 71, + 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 0, 0, 69, 0, 0, 70, 0, 71, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, + 0, 0, 69, 0, 0, 70, 0, 71, 0, 0, + 0, 0, 0, 0, 0, 68, 0, 0, 69, 0, + 0, 70, 0, 71, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 201, 0, 0, 0, 68, 0, 0, + 69, 0, 0, 70, 0, 278, 0, 0, 0, 0, + 0, 202, 203, 0, 68, 0, 0, 69, 0, 0, + 70, 0, 71, 204, 205, 206, 207, 208, 209, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 210, 211, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 212, 213, 214, 0, + 0, 215, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 216, 217, 218, 219, 220, 221 +}; -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ - -#ifndef YYSTACK_USE_ALLOCA -#ifdef alloca -#define YYSTACK_USE_ALLOCA -#else /* alloca not defined */ -#ifdef __GNUC__ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca -#else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) -#define YYSTACK_USE_ALLOCA -#include -#else /* not sparc */ -/* We think this test detects Watcom and Microsoft C. */ -/* This used to test MSDOS, but that is a bad idea - since that symbol is in the user namespace. */ -#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) -#if 0 /* No need for malloc.h, which pollutes the namespace; - instead, just don't use alloca. */ -#include -#endif -#else /* not MSDOS, or __TURBOC__ */ -#if defined(_AIX) -/* I don't know what this was needed for, but it pollutes the namespace. - So I turned it off. rms, 2 May 1997. */ -/* #include */ - #pragma alloca -#define YYSTACK_USE_ALLOCA -#else /* not MSDOS, or __TURBOC__, or _AIX */ -#if 0 -#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, - and on HPUX 10. Eventually we can turn this on. */ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca -#endif /* __hpux */ -#endif -#endif /* not _AIX */ -#endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc */ -#endif /* not GNU C */ -#endif /* alloca not defined */ -#endif /* YYSTACK_USE_ALLOCA not defined */ - -#ifdef YYSTACK_USE_ALLOCA -#define YYSTACK_ALLOC alloca -#else -#define YYSTACK_ALLOC malloc -#endif +static const short int yycheck[] = +{ + 0, 26, 301, 239, 113, 185, 186, 4, 206, 0, + 23, 9, 81, 411, 9, 16, 16, 324, 132, 45, + 9, 328, 133, 24, 134, 16, 136, 9, 240, 241, + 207, 142, 142, 59, 50, 3, 4, 106, 5, 6, + 113, 8, 9, 10, 11, 12, 71, 14, 15, 226, + 17, 18, 14, 21, 22, 17, 214, 46, 133, 217, + 218, 219, 220, 221, 46, 133, 224, 133, 29, 144, + 95, 134, 133, 136, 99, 42, 144, 140, 144, 132, + 105, 142, 107, 110, 111, 46, 86, 297, 486, 35, + 36, 37, 38, 39, 40, 41, 121, 43, 278, 133, + 127, 128, 129, 137, 314, 13, 110, 111, 133, 134, + 5, 6, 137, 8, 9, 10, 11, 12, 516, 14, + 15, 132, 17, 18, 128, 129, 27, 28, 5, 6, + 143, 8, 9, 10, 11, 12, 0, 14, 15, 351, + 17, 18, 140, 144, 542, 140, 143, 42, 110, 111, + 37, 38, 133, 133, 3, 4, 137, 44, 316, 133, + 140, 530, 461, 50, 463, 42, 128, 129, 135, 133, + 144, 138, 541, 137, 141, 132, 143, 144, 29, 204, + 487, 132, 362, 133, 134, 131, 136, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 138, 270, 271, 272, 273, 274, 197, 232, 35, 36, + 37, 17, 133, 40, 283, 284, 285, 453, 291, 140, + 293, 294, 380, 296, 382, 383, 384, 534, 16, 536, + 303, 134, 341, 136, 14, 138, 17, 17, 311, 312, + 135, 31, 17, 138, 133, 134, 141, 136, 143, 144, + 106, 107, 134, 278, 136, 137, 77, 78, 135, 110, + 111, 138, 331, 332, 141, 131, 143, 144, 341, 338, + 17, 136, 297, 298, 299, 4, 127, 128, 129, 4, + 139, 15, 518, 441, 18, 521, 39, 139, 41, 314, + 315, 316, 9, 7, 134, 12, 136, 370, 371, 372, + 7, 7, 4, 133, 137, 378, 17, 142, 466, 467, + 468, 137, 136, 136, 136, 388, 389, 515, 136, 136, + 110, 111, 17, 136, 136, 136, 133, 352, 397, 398, + 399, 400, 48, 531, 9, 404, 405, 127, 128, 129, + 53, 54, 55, 56, 57, 58, 142, 136, 133, 422, + 136, 424, 136, 31, 427, 380, 381, 382, 383, 384, + 433, 434, 387, 133, 133, 133, 133, 133, 133, 133, + 439, 440, 133, 133, 133, 133, 31, 17, 4, 142, + 52, 406, 133, 456, 457, 133, 459, 460, 138, 133, + 133, 464, 133, 293, 294, 133, 296, 133, 133, 472, + 142, 17, 12, 303, 137, 12, 0, 476, 136, 478, + 479, 311, 312, 438, 133, 133, 441, 4, 491, 13, + 14, 15, 137, 17, 18, 19, 499, 452, 133, 133, + 133, 25, 26, 458, 133, 133, 136, 133, 17, 133, + 133, 466, 467, 468, 133, 137, 471, 137, 133, 133, + 44, 451, 138, 47, 137, 528, 137, 51, 46, 133, + 533, 140, 46, 12, 137, 4, 137, 137, 133, 12, + 370, 371, 372, 140, 547, 548, 12, 133, 378, 552, + 12, 64, 555, 12, 210, 124, 124, 124, 388, 389, + 211, 510, 517, 86, 487, 232, 105, 99, 16, 5, + 6, 83, 8, 9, 10, 11, 12, 53, 14, 15, + 510, 17, 18, 471, 377, -1, -1, -1, -1, -1, + -1, -1, 422, -1, 424, -1, 0, 427, -1, -1, + -1, -1, -1, 433, 434, -1, 42, -1, -1, 13, + 14, 15, -1, 17, 18, 19, -1, -1, -1, -1, + -1, 25, 26, -1, -1, -1, 456, 457, -1, 459, + 460, -1, -1, -1, 464, -1, -1, -1, -1, -1, + 44, -1, 472, 47, -1, -1, -1, 51, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, + -1, 491, -1, -1, -1, 5, 6, -1, -1, 499, + -1, -1, -1, -1, 14, 15, -1, 17, 18, -1, + 20, -1, 21, 22, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, 34, -1, -1, -1, 528, 135, + -1, -1, 138, 533, -1, 141, -1, 143, 144, -1, + -1, -1, -1, -1, -1, -1, -1, 547, 548, -1, + -1, -1, 552, -1, -1, 555, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, -1, -1, -1, -1, -1, -1, -1, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, -1, -1, -1, -1, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, -1, 122, -1, 124, 125, 126, -1, -1, -1, + -1, -1, -1, -1, 134, -1, 136, -1, 138, -1, + -1, 141, -1, 143, -1, 145, 3, 4, 5, 6, + 7, -1, -1, -1, -1, -1, -1, 14, 15, -1, + 17, 18, -1, 20, 21, 22, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 33, 34, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5, 6, 50, 8, 9, 10, 11, 12, -1, + 14, 15, -1, 17, 18, -1, -1, -1, -1, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, -1, 42, 5, + 6, -1, 8, 9, 10, 11, 12, -1, 14, 15, + -1, 17, 18, -1, -1, -1, -1, -1, -1, -1, + -1, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, -1, 122, 42, 124, 125, 126, + -1, 3, 4, 5, 6, 7, -1, 134, -1, 136, + -1, -1, 14, 15, 141, 17, 18, -1, 20, 21, + 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 33, 34, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 50, -1, + -1, 135, -1, -1, 138, -1, 140, 141, -1, 143, + -1, -1, -1, -1, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, -1, -1, -1, -1, -1, -1, -1, -1, 135, + -1, -1, 138, -1, -1, 141, -1, 143, -1, -1, + -1, -1, -1, -1, -1, -1, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, -1, + 122, -1, 124, 125, 126, 3, 4, -1, -1, 7, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 141, + -1, -1, 20, 21, 22, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 50, -1, 5, 6, -1, 8, 9, 10, + 11, 12, -1, 14, 15, -1, 17, 18, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, -1, -1, -1, -1, -1, + -1, 42, -1, -1, -1, -1, 5, 6, -1, 8, + 9, 10, 11, 12, -1, 14, 15, -1, 17, 18, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 32, 122, -1, 124, 125, 126, -1, + -1, -1, -1, 42, -1, 5, 6, -1, 8, 9, + 10, 11, 12, 141, 14, 15, -1, 17, 18, -1, + -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, + 14, 15, 32, 17, 18, -1, -1, -1, -1, -1, + 5, 6, 42, 8, 9, 10, 11, 12, 32, 14, + 15, -1, 17, 18, 135, -1, -1, 138, 42, -1, + 141, -1, 143, -1, -1, -1, -1, 32, -1, 5, + 6, -1, 8, 9, 10, 11, 12, 42, 14, 15, + -1, 17, 18, -1, -1, 5, 6, -1, 8, 9, + 10, 11, 12, -1, 14, 15, 135, 17, 18, 138, + -1, -1, 141, -1, 143, -1, 42, 5, 6, -1, + 8, 9, 10, 11, 12, -1, 14, 15, -1, 17, + 18, -1, 42, -1, 5, 6, -1, 8, 9, 10, + 11, 12, -1, 14, 15, 135, 17, 18, 138, -1, + -1, 141, -1, 143, 42, -1, -1, -1, -1, -1, + -1, 135, -1, -1, 138, -1, -1, 141, -1, 143, + -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, + 135, -1, -1, 138, -1, -1, 141, -1, 143, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 135, + -1, -1, 138, -1, -1, 141, -1, 143, -1, -1, + -1, -1, -1, -1, -1, 135, -1, -1, 138, -1, + -1, 141, -1, 143, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 30, -1, -1, -1, 135, -1, -1, + 138, -1, -1, 141, -1, 143, -1, -1, -1, -1, + -1, 48, 49, -1, 135, -1, -1, 138, -1, -1, + 141, -1, 143, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 103, 104, 105, -1, + -1, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126 +}; -/* Note: there must be only one dollar sign in this file. - It is replaced by the list of actions, each action - as one case of the switch. */ +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const unsigned char yystos[] = +{ + 0, 14, 15, 17, 18, 19, 25, 26, 44, 47, + 51, 154, 156, 157, 158, 186, 187, 188, 190, 189, + 45, 59, 195, 132, 50, 132, 13, 132, 35, 36, + 37, 38, 39, 40, 41, 43, 131, 159, 160, 161, + 0, 188, 39, 41, 162, 205, 35, 36, 37, 40, + 163, 202, 204, 211, 132, 132, 138, 196, 17, 194, + 5, 6, 8, 9, 10, 11, 12, 42, 135, 138, + 141, 143, 154, 157, 175, 176, 208, 161, 161, 27, + 28, 185, 161, 161, 16, 212, 213, 24, 144, 203, + 212, 17, 17, 17, 197, 136, 4, 4, 4, 143, + 8, 144, 176, 181, 134, 136, 185, 185, 9, 10, + 11, 152, 153, 176, 182, 53, 54, 55, 56, 57, + 58, 164, 200, 200, 156, 216, 133, 140, 32, 176, + 177, 179, 180, 139, 139, 144, 181, 133, 144, 180, + 182, 176, 21, 22, 3, 4, 7, 20, 33, 34, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 122, 124, 125, 126, 138, 141, 143, 145, 147, 148, + 149, 183, 208, 191, 4, 8, 176, 178, 23, 143, + 201, 30, 48, 49, 60, 61, 62, 63, 64, 65, + 81, 82, 103, 104, 105, 108, 121, 122, 123, 124, + 125, 126, 147, 148, 149, 214, 220, 221, 222, 223, + 17, 166, 133, 137, 176, 176, 142, 144, 176, 137, + 192, 193, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 150, 21, 22, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 151, + 136, 136, 136, 136, 136, 140, 182, 184, 143, 184, + 144, 184, 17, 136, 136, 136, 133, 173, 157, 48, + 8, 176, 210, 9, 12, 9, 152, 164, 150, 151, + 176, 176, 210, 176, 176, 217, 210, 210, 210, 210, + 210, 176, 176, 210, 164, 106, 107, 110, 111, 128, + 129, 165, 32, 177, 168, 140, 142, 142, 168, 173, + 173, 136, 136, 182, 182, 182, 182, 182, 133, 140, + 144, 176, 184, 142, 144, 182, 182, 182, 29, 46, + 171, 174, 136, 3, 4, 7, 20, 21, 22, 33, + 34, 50, 141, 183, 207, 208, 209, 209, 209, 209, + 178, 176, 176, 133, 170, 133, 170, 209, 138, 133, + 133, 133, 133, 133, 133, 209, 209, 31, 178, 176, + 210, 127, 165, 167, 182, 182, 219, 133, 133, 133, + 133, 182, 142, 144, 133, 133, 31, 17, 4, 173, + 32, 176, 198, 199, 52, 206, 184, 133, 133, 209, + 209, 209, 9, 46, 9, 219, 209, 138, 210, 176, + 210, 210, 210, 133, 133, 176, 209, 209, 133, 133, + 133, 133, 137, 182, 182, 182, 182, 142, 182, 182, + 176, 166, 133, 137, 17, 142, 12, 12, 136, 133, + 133, 209, 4, 209, 133, 209, 133, 133, 133, 209, + 209, 136, 176, 182, 182, 210, 133, 137, 133, 133, + 137, 137, 137, 154, 155, 32, 176, 168, 133, 209, + 209, 176, 218, 209, 209, 133, 170, 170, 209, 133, + 210, 210, 210, 218, 209, 137, 137, 182, 182, 182, + 166, 171, 172, 17, 133, 138, 209, 133, 137, 140, + 209, 137, 137, 137, 137, 155, 46, 169, 12, 140, + 152, 215, 166, 176, 168, 140, 168, 4, 209, 207, + 140, 152, 209, 31, 133, 207, 166, 12, 12, 133, + 209, 209, 12, 64, 209, 12, 209 +}; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) -#define YYEMPTY -2 +#define YYEMPTY (-2) #define YYEOF 0 + #define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. - This remains here temporarily to ease the - transition to the new meaning of YYERROR, for GCC. +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ + #define YYFAIL goto yyerrlab + #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(token, value) \ + +#define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ - { yychar = (token), yylval = (value); \ - yychar1 = YYTRANSLATE (yychar); \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK; \ goto yybackup; \ } \ else \ - { yyerror ("syntax error: cannot back up"); YYERROR; } \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ while (0) + #define YYTERROR 1 #define YYERRCODE 256 -#ifndef YYPURE -#define YYLEX yylex() + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (N) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (0) #endif -#ifdef YYPURE -#ifdef YYLSP_NEEDED -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval, &yylloc) + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif #endif -#else /* not YYLSP_NEEDED */ + + +/* YYLEX -- calling `yylex' with the right arguments. */ + #ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, YYLEX_PARAM) +# define YYLEX yylex (YYLEX_PARAM) #else -#define YYLEX yylex(&yylval) -#endif -#endif /* not YYLSP_NEEDED */ +# define YYLEX yylex () #endif -/* If nonreentrant, generate the variables here */ +/* Enable debugging if requested. */ +#if YYDEBUG -#ifndef YYPURE +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yysymprint (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) -int yychar; /* the lookahead symbol */ -YYSTYPE yylval; /* the semantic value of the */ - /* lookahead symbol */ +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ -#ifdef YYLSP_NEEDED -YYLTYPE yylloc; /* location data for the lookahead */ - /* symbol */ +#if defined (__STDC__) || defined (__cplusplus) +static void +yy_stack_print (short int *bottom, short int *top) +#else +static void +yy_stack_print (bottom, top) + short int *bottom; + short int *top; #endif +{ + YYFPRINTF (stderr, "Stack now"); + for (/* Nothing. */; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) -int yynerrs; /* number of parse errors so far */ -#endif /* not YYPURE */ -#if YYDEBUG != 0 -int yydebug; /* nonzero means print parse trace */ -/* Since this is uninitialized, it does not stop multiple parsers - from coexisting. */ +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yy_reduce_print (int yyrule) +#else +static void +yy_reduce_print (yyrule) + int yyrule; #endif +{ + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ", + yyrule - 1, yylno); + /* Print the symbols being reduced, and their result. */ + for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) + YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]); + YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]); +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (Rule); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ -/* YYINITDEPTH indicates the initial size of the parser's stacks */ +/* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH -#define YYINITDEPTH 200 +# define YYINITDEPTH 200 #endif -/* YYMAXDEPTH is the maximum size the stacks can grow to - (effective only if the built-in stack extension method is used). */ +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). -#if YYMAXDEPTH == 0 -#undef YYMAXDEPTH -#endif + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH -#define YYMAXDEPTH 10000 +# define YYMAXDEPTH 10000 #endif + -/* Define __yy_memcpy. Note that the size argument - should be passed with type unsigned int, because that is what the non-GCC - definitions require. With GCC, __builtin_memcpy takes an arg - of type size_t, but it can handle unsigned int. */ - -#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) -#else /* not GNU C or C++ */ -#ifndef __cplusplus - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (to, from, count) - char *to; - char *from; - unsigned int count; + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined (__GLIBC__) && defined (_STRING_H) +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +static YYSIZE_T +# if defined (__STDC__) || defined (__cplusplus) +yystrlen (const char *yystr) +# else +yystrlen (yystr) + const char *yystr; +# endif { - register char *f = from; - register char *t = to; - register int i = count; + const char *yys = yystr; + + while (*yys++ != '\0') + continue; + + return yys - yystr - 1; +} +# endif +# endif + +# ifndef yystpcpy +# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +# if defined (__STDC__) || defined (__cplusplus) +yystpcpy (char *yydest, const char *yysrc) +# else +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +# endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + size_t yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); - while (i-- > 0) - *t++ = *f++; + return yystpcpy (yyres, yystr) - yyres; } +# endif + +#endif /* YYERROR_VERBOSE */ + + -#else /* __cplusplus */ +#if YYDEBUG +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ +#if defined (__STDC__) || defined (__cplusplus) +static void +yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep) +#else static void -__yy_memcpy (char *to, char *from, unsigned int count) +yysymprint (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE *yyvaluep; +#endif { - register char *t = to; - register char *f = from; - register int i = count; + /* Pacify ``unused variable'' warnings. */ + (void) yyvaluep; - while (i-- > 0) - *t++ = *f++; + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + switch (yytype) + { + default: + break; + } + YYFPRINTF (yyoutput, ")"); } +#endif /* ! YYDEBUG */ +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; #endif -#endif +{ + /* Pacify ``unused variable'' warnings. */ + (void) yyvaluep; + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} -#line 217 "/usr/share/bison.simple" -/* The user can define YYPARSE_PARAM as the name of an argument to be passed - into yyparse. The argument should have type void *. - It should actually point to an object. - Grammar actions can access the variable by casting it - to the proper pointer type. */ +/* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM -#ifdef __cplusplus -#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#else /* not __cplusplus */ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM -#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -#endif /* not __cplusplus */ -#else /* not YYPARSE_PARAM */ -#define YYPARSE_PARAM_ARG -#define YYPARSE_PARAM_DECL -#endif /* not YYPARSE_PARAM */ - -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -#ifdef YYPARSE_PARAM -int yyparse (void *); -#else +# if defined (__STDC__) || defined (__cplusplus) +int yyparse (void *YYPARSE_PARAM); +# else +int yyparse (); +# endif +#else /* ! YYPARSE_PARAM */ +#if defined (__STDC__) || defined (__cplusplus) int yyparse (void); +#else +int yyparse (); #endif -#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +# if defined (__STDC__) || defined (__cplusplus) +int yyparse (void *YYPARSE_PARAM) +# else +int yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +# endif +#else /* ! YYPARSE_PARAM */ +#if defined (__STDC__) || defined (__cplusplus) +int +yyparse (void) +#else int -yyparse(YYPARSE_PARAM_ARG) - YYPARSE_PARAM_DECL +yyparse () + +#endif +#endif { - register int yystate; - register int yyn; - register short *yyssp; - register YYSTYPE *yyvsp; - int yyerrstatus; /* number of tokens to shift before error messages enabled */ - int yychar1 = 0; /* lookahead token as an internal (translated) token number */ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; - short yyssa[YYINITDEPTH]; /* the state stack */ - YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + short int yyssa[YYINITDEPTH]; + short int *yyss = yyssa; + short int *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; - short *yyss = yyssa; /* refer to the stacks thru separate pointers */ - YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ -#ifdef YYLSP_NEEDED - YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; -#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) -#else #define YYPOPSTACK (yyvsp--, yyssp--) -#endif - int yystacksize = YYINITDEPTH; - int yyfree_stacks = 0; + YYSIZE_T yystacksize = YYINITDEPTH; -#ifdef YYPURE - int yychar; - YYSTYPE yylval; - int yynerrs; -#ifdef YYLSP_NEEDED - YYLTYPE yylloc; -#endif -#endif + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; - YYSTYPE yyval; /* the variable used to return */ - /* semantic values from the action */ - /* routines */ + /* When reducing, the number of symbols on the RHS of the reduced + rule. */ int yylen; -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Starting parse\n"); -#endif + YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; @@ -2126,644 +2792,675 @@ yyparse(YYPARSE_PARAM_ARG) so that they stay on the same level as the state stack. The wasted elements are never initialized. */ - yyssp = yyss - 1; + yyssp = yyss; yyvsp = yyvs; -#ifdef YYLSP_NEEDED - yylsp = yyls; -#endif -/* Push a new state, which is found in yystate . */ -/* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. */ -yynewstate: + goto yysetstate; - *++yyssp = yystate; +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. + */ + yyssp++; - if (yyssp >= yyss + yystacksize - 1) - { - /* Give user a chance to reallocate the stack */ - /* Use copies of these so that the &'s don't force the real ones into memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; -#ifdef YYLSP_NEEDED - YYLTYPE *yyls1 = yyls; -#endif + yysetstate: + *yyssp = yystate; + if (yyss + yystacksize - 1 <= yyssp) + { /* Get the current used size of the three stacks, in elements. */ - int size = yyssp - yyss + 1; + YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow - /* Each stack pointer address is followed by the size of - the data in use in that stack, in bytes. */ -#ifdef YYLSP_NEEDED - /* This used to be a conditional around just the two extra args, - but that might be undefined if yyoverflow is a macro. */ - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yyls1, size * sizeof (*yylsp), - &yystacksize); -#else - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yystacksize); -#endif - - yyss = yyss1; yyvs = yyvs1; -#ifdef YYLSP_NEEDED - yyls = yyls1; -#endif + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + short int *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } #else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else /* Extend the stack our own way. */ - if (yystacksize >= YYMAXDEPTH) - { - yyerror("parser stack overflow"); - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 2; - } + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; yystacksize *= 2; - if (yystacksize > YYMAXDEPTH) + if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; -#ifndef YYSTACK_USE_ALLOCA - yyfree_stacks = 1; -#endif - yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, - size * (unsigned int) sizeof (*yyssp)); - yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, - size * (unsigned int) sizeof (*yyvsp)); -#ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, - size * (unsigned int) sizeof (*yylsp)); -#endif + + { + short int *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif #endif /* no yyoverflow */ - yyssp = yyss + size - 1; - yyvsp = yyvs + size - 1; -#ifdef YYLSP_NEEDED - yylsp = yyls + size - 1; -#endif + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Stack size increased to %d\n", yystacksize); -#endif - if (yyssp >= yyss + yystacksize - 1) + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) YYABORT; } -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Entering state %d\n", yystate); -#endif + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; - yybackup: + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: /* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ +/* Read a look-ahead token if we need one and don't already have one. */ /* yyresume: */ - /* First try to decide what to do without reference to lookahead token. */ + /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; - if (yyn == YYFLAG) + if (yyn == YYPACT_NINF) goto yydefault; - /* Not known => get a lookahead token if don't already have one. */ - - /* yychar is either YYEMPTY or YYEOF - or a valid token in external form. */ + /* Not known => get a look-ahead token if don't already have one. */ + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Reading a token: "); -#endif + YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } - /* Convert token to internal form (in yychar1) for indexing tables with */ - - if (yychar <= 0) /* This means end of input. */ + if (yychar <= YYEOF) { - yychar1 = 0; - yychar = YYEOF; /* Don't call YYLEX any more */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Now at end of input.\n"); -#endif + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); } else { - yychar1 = YYTRANSLATE(yychar); - -#if YYDEBUG != 0 - if (yydebug) - { - fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise meaning - of a token, for further debugging info. */ -#ifdef YYPRINT - YYPRINT (stderr, yychar, yylval); -#endif - fprintf (stderr, ")\n"); - } -#endif + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } - yyn += yychar1; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; - yyn = yytable[yyn]; - - /* yyn is what to do for this token type in this state. - Negative => reduce, -yyn is rule number. - Positive => shift, yyn is new state. - New state is final state => don't bother to shift, - just return success. - 0, or most negative number => error. */ - - if (yyn < 0) + if (yyn <= 0) { - if (yyn == YYFLAG) + if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } - else if (yyn == 0) - goto yyerrlab; if (yyn == YYFINAL) YYACCEPT; - /* Shift the lookahead token. */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); -#endif + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - /* count tokens shifted since error; after three, turn off error status. */ - if (yyerrstatus) yyerrstatus--; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; yystate = yyn; goto yynewstate; -/* Do the default action for the current state. */ -yydefault: +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; + goto yyreduce; + -/* Do a reduction. yyn is the number of a rule to reduce with. */ +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ yyreduce: + /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; - if (yylen > 0) - yyval = yyvsp[1-yylen]; /* implement default value of the action */ -#if YYDEBUG != 0 - if (yydebug) + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) { - int i; + case 29: +#line 1039 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;} + break; - fprintf (stderr, "Reducing via rule %d (line %d), ", - yyn, yyrline[yyn]); + case 30: +#line 1039 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;} + break; - /* Print the symbols being reduced, and their result. */ - for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) - fprintf (stderr, "%s ", yytname[yyrhs[i]]); - fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); - } -#endif + case 31: +#line 1040 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;} + break; + case 32: +#line 1040 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;} + break; - switch (yyn) { - -case 28: -#line 1038 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.IPredicate = ICmpInst::ICMP_EQ; ; - break;} -case 29: -#line 1038 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.IPredicate = ICmpInst::ICMP_NE; ; - break;} -case 30: -#line 1039 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.IPredicate = ICmpInst::ICMP_SLT; ; - break;} -case 31: -#line 1039 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.IPredicate = ICmpInst::ICMP_SGT; ; - break;} -case 32: -#line 1040 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.IPredicate = ICmpInst::ICMP_SLE; ; - break;} -case 33: -#line 1040 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.IPredicate = ICmpInst::ICMP_SGE; ; - break;} -case 34: -#line 1041 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.IPredicate = ICmpInst::ICMP_ULT; ; - break;} -case 35: -#line 1041 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.IPredicate = ICmpInst::ICMP_UGT; ; - break;} -case 36: -#line 1042 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.IPredicate = ICmpInst::ICMP_ULE; ; - break;} -case 37: -#line 1042 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.IPredicate = ICmpInst::ICMP_UGE; ; - break;} -case 38: -#line 1046 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_OEQ; ; - break;} -case 39: -#line 1046 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_ONE; ; - break;} -case 40: -#line 1047 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_OLT; ; - break;} -case 41: -#line 1047 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_OGT; ; - break;} -case 42: -#line 1048 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_OLE; ; - break;} -case 43: -#line 1048 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_OGE; ; - break;} -case 44: -#line 1049 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_ORD; ; - break;} -case 45: -#line 1049 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_UNO; ; - break;} -case 46: -#line 1050 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_UEQ; ; - break;} -case 47: -#line 1050 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_UNE; ; - break;} -case 48: -#line 1051 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_ULT; ; - break;} -case 49: -#line 1051 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_UGT; ; - break;} -case 50: -#line 1052 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_ULE; ; - break;} -case 51: -#line 1052 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_UGE; ; - break;} -case 52: -#line 1053 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_TRUE; ; - break;} -case 53: -#line 1054 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.FPredicate = FCmpInst::FCMP_FALSE; ; - break;} -case 60: -#line 1063 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.StrVal = 0; ; - break;} -case 61: -#line 1067 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.StrVal = yyvsp[-1].StrVal; - CHECK_FOR_ERROR - ; - break;} -case 62: -#line 1071 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.StrVal = 0; - CHECK_FOR_ERROR - ; - break;} -case 65: -#line 1078 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.StrVal = yyvsp[-1].StrVal; - CHECK_FOR_ERROR - ; - break;} -case 66: -#line 1082 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.StrVal = 0; - CHECK_FOR_ERROR - ; - break;} -case 67: -#line 1088 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::InternalLinkage; ; - break;} -case 68: -#line 1089 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::WeakLinkage; ; - break;} -case 69: -#line 1090 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::LinkOnceLinkage; ; - break;} -case 70: -#line 1091 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::AppendingLinkage; ; - break;} -case 71: -#line 1092 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::DLLExportLinkage; ; - break;} -case 72: -#line 1096 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::DLLImportLinkage; ; - break;} -case 73: -#line 1097 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::ExternalWeakLinkage; ; - break;} -case 74: -#line 1098 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::ExternalLinkage; ; - break;} -case 75: -#line 1102 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Visibility = GlobalValue::DefaultVisibility; ; - break;} -case 76: -#line 1103 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Visibility = GlobalValue::HiddenVisibility; ; - break;} -case 77: -#line 1107 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::ExternalLinkage; ; - break;} -case 78: -#line 1108 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::DLLImportLinkage; ; - break;} -case 79: -#line 1109 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::ExternalWeakLinkage; ; - break;} -case 80: -#line 1113 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::ExternalLinkage; ; - break;} -case 81: -#line 1114 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::InternalLinkage; ; - break;} -case 82: -#line 1115 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::LinkOnceLinkage; ; - break;} -case 83: -#line 1116 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::WeakLinkage; ; - break;} -case 84: -#line 1117 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.Linkage = GlobalValue::DLLExportLinkage; ; - break;} -case 85: -#line 1120 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.UIntVal = CallingConv::C; ; - break;} -case 86: -#line 1121 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.UIntVal = CallingConv::C; ; - break;} -case 87: -#line 1122 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.UIntVal = CallingConv::Fast; ; - break;} -case 88: -#line 1123 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.UIntVal = CallingConv::Cold; ; - break;} -case 89: -#line 1124 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.UIntVal = CallingConv::X86_StdCall; ; - break;} -case 90: -#line 1125 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.UIntVal = CallingConv::X86_FastCall; ; - break;} -case 91: -#line 1126 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if ((unsigned)yyvsp[0].UInt64Val != yyvsp[0].UInt64Val) - GEN_ERROR("Calling conv too large!"); - yyval.UIntVal = yyvsp[0].UInt64Val; - CHECK_FOR_ERROR - ; - break;} -case 92: -#line 1133 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.ParamAttrs = FunctionType::ZExtAttribute; ; - break;} -case 93: -#line 1134 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.ParamAttrs = FunctionType::SExtAttribute; ; - break;} -case 94: -#line 1135 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.ParamAttrs = FunctionType::InRegAttribute; ; - break;} -case 95: -#line 1136 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.ParamAttrs = FunctionType::StructRetAttribute; ; - break;} -case 96: -#line 1139 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.ParamAttrs = FunctionType::NoAttributeSet; ; - break;} -case 97: -#line 1140 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ParamAttrs = FunctionType::ParameterAttributes(yyvsp[-1].ParamAttrs | yyvsp[0].ParamAttrs); - ; - break;} -case 98: -#line 1145 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.ParamAttrs = FunctionType::NoReturnAttribute; ; - break;} -case 100: -#line 1149 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.ParamAttrs = FunctionType::NoAttributeSet; ; - break;} -case 101: -#line 1150 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ParamAttrs = FunctionType::ParameterAttributes(yyvsp[-1].ParamAttrs | yyvsp[0].ParamAttrs); - ; - break;} -case 102: -#line 1157 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.UIntVal = 0; ; - break;} -case 103: -#line 1158 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.UIntVal = yyvsp[0].UInt64Val; - if (yyval.UIntVal != 0 && !isPowerOf2_32(yyval.UIntVal)) - GEN_ERROR("Alignment must be a power of two!"); - CHECK_FOR_ERROR -; - break;} -case 104: -#line 1164 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.UIntVal = 0; ; - break;} -case 105: -#line 1165 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.UIntVal = yyvsp[0].UInt64Val; - if (yyval.UIntVal != 0 && !isPowerOf2_32(yyval.UIntVal)) - GEN_ERROR("Alignment must be a power of two!"); - CHECK_FOR_ERROR -; - break;} -case 106: -#line 1173 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - for (unsigned i = 0, e = strlen(yyvsp[0].StrVal); i != e; ++i) - if (yyvsp[0].StrVal[i] == '"' || yyvsp[0].StrVal[i] == '\\') + case 33: +#line 1041 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;} + break; + + case 34: +#line 1041 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;} + break; + + case 35: +#line 1042 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;} + break; + + case 36: +#line 1042 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;} + break; + + case 37: +#line 1043 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;} + break; + + case 38: +#line 1043 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;} + break; + + case 39: +#line 1047 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;} + break; + + case 40: +#line 1047 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;} + break; + + case 41: +#line 1048 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;} + break; + + case 42: +#line 1048 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;} + break; + + case 43: +#line 1049 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;} + break; + + case 44: +#line 1049 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;} + break; + + case 45: +#line 1050 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;} + break; + + case 46: +#line 1050 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;} + break; + + case 47: +#line 1051 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;} + break; + + case 48: +#line 1051 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;} + break; + + case 49: +#line 1052 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;} + break; + + case 50: +#line 1052 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;} + break; + + case 51: +#line 1053 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;} + break; + + case 52: +#line 1053 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;} + break; + + case 53: +#line 1054 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;} + break; + + case 54: +#line 1055 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;} + break; + + case 61: +#line 1064 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.StrVal) = 0; ;} + break; + + case 62: +#line 1068 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.StrVal) = (yyvsp[-1].StrVal); + CHECK_FOR_ERROR + ;} + break; + + case 63: +#line 1072 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.StrVal) = 0; + CHECK_FOR_ERROR + ;} + break; + + case 66: +#line 1079 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.StrVal) = (yyvsp[-1].StrVal); + CHECK_FOR_ERROR + ;} + break; + + case 67: +#line 1083 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.StrVal) = 0; + CHECK_FOR_ERROR + ;} + break; + + case 68: +#line 1089 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} + break; + + case 69: +#line 1090 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} + break; + + case 70: +#line 1091 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} + break; + + case 71: +#line 1092 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;} + break; + + case 72: +#line 1093 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} + break; + + case 73: +#line 1097 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} + break; + + case 74: +#line 1098 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} + break; + + case 75: +#line 1099 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} + break; + + case 76: +#line 1103 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Visibility) = GlobalValue::DefaultVisibility; ;} + break; + + case 77: +#line 1104 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Visibility) = GlobalValue::HiddenVisibility; ;} + break; + + case 78: +#line 1108 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} + break; + + case 79: +#line 1109 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} + break; + + case 80: +#line 1110 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} + break; + + case 81: +#line 1114 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} + break; + + case 82: +#line 1115 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} + break; + + case 83: +#line 1116 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} + break; + + case 84: +#line 1117 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} + break; + + case 85: +#line 1118 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} + break; + + case 86: +#line 1121 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = CallingConv::C; ;} + break; + + case 87: +#line 1122 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = CallingConv::C; ;} + break; + + case 88: +#line 1123 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = CallingConv::Fast; ;} + break; + + case 89: +#line 1124 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = CallingConv::Cold; ;} + break; + + case 90: +#line 1125 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = CallingConv::X86_StdCall; ;} + break; + + case 91: +#line 1126 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = CallingConv::X86_FastCall; ;} + break; + + case 92: +#line 1127 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val)) + GEN_ERROR("Calling conv too large!"); + (yyval.UIntVal) = (yyvsp[0].UInt64Val); + CHECK_FOR_ERROR + ;} + break; + + case 93: +#line 1134 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.ParamAttrs) = FunctionType::ZExtAttribute; ;} + break; + + case 94: +#line 1135 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.ParamAttrs) = FunctionType::SExtAttribute; ;} + break; + + case 95: +#line 1136 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.ParamAttrs) = FunctionType::InRegAttribute; ;} + break; + + case 96: +#line 1137 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.ParamAttrs) = FunctionType::StructRetAttribute; ;} + break; + + case 97: +#line 1140 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.ParamAttrs) = FunctionType::NoAttributeSet; ;} + break; + + case 98: +#line 1141 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[-1].ParamAttrs) | (yyvsp[0].ParamAttrs)); + ;} + break; + + case 99: +#line 1146 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.ParamAttrs) = FunctionType::NoReturnAttribute; ;} + break; + + case 101: +#line 1150 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.ParamAttrs) = FunctionType::NoAttributeSet; ;} + break; + + case 102: +#line 1151 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[-1].ParamAttrs) | (yyvsp[0].ParamAttrs)); + ;} + break; + + case 103: +#line 1158 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = 0; ;} + break; + + case 104: +#line 1159 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.UIntVal) = (yyvsp[0].UInt64Val); + if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) + GEN_ERROR("Alignment must be a power of two!"); + CHECK_FOR_ERROR +;} + break; + + case 105: +#line 1165 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.UIntVal) = 0; ;} + break; + + case 106: +#line 1166 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.UIntVal) = (yyvsp[0].UInt64Val); + if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) + GEN_ERROR("Alignment must be a power of two!"); + CHECK_FOR_ERROR +;} + break; + + case 107: +#line 1174 "/proj/llvm/llvm-4/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] == '\\') GEN_ERROR("Invalid character in section name!"); - yyval.StrVal = yyvsp[0].StrVal; + (yyval.StrVal) = (yyvsp[0].StrVal); CHECK_FOR_ERROR -; - break;} -case 107: -#line 1181 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.StrVal = 0; ; - break;} -case 108: -#line 1182 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.StrVal = yyvsp[0].StrVal; ; - break;} -case 109: -#line 1187 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{; - break;} -case 110: -#line 1188 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{; - break;} -case 111: -#line 1189 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - CurGV->setSection(yyvsp[0].StrVal); - free(yyvsp[0].StrVal); +;} + break; + + case 108: +#line 1182 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.StrVal) = 0; ;} + break; + + case 109: +#line 1183 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.StrVal) = (yyvsp[0].StrVal); ;} + break; + + case 110: +#line 1188 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + {;} + break; + + case 111: +#line 1189 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + {;} + break; + + case 112: +#line 1190 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + CurGV->setSection((yyvsp[0].StrVal)); + free((yyvsp[0].StrVal)); CHECK_FOR_ERROR - ; - break;} -case 112: -#line 1194 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (yyvsp[0].UInt64Val != 0 && !isPowerOf2_32(yyvsp[0].UInt64Val)) + ;} + break; + + case 113: +#line 1195 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val))) GEN_ERROR("Alignment must be a power of two!"); - CurGV->setAlignment(yyvsp[0].UInt64Val); + CurGV->setAlignment((yyvsp[0].UInt64Val)); CHECK_FOR_ERROR - ; - break;} -case 117: -#line 1210 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.TypeVal = new PATypeHolder(OpaqueType::get()); + ;} + break; + + case 118: +#line 1211 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TypeVal) = new PATypeHolder(OpaqueType::get()); CHECK_FOR_ERROR - ; - break;} -case 118: -#line 1214 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); - CHECK_FOR_ERROR - ; - break;} -case 119: -#line 1218 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Pointer type? - if (*yyvsp[-1].TypeVal == Type::LabelTy) + ;} + break; + + case 119: +#line 1215 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType)); + CHECK_FOR_ERROR + ;} + break; + + case 120: +#line 1219 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Pointer type? + if (*(yyvsp[-1].TypeVal) == Type::LabelTy) GEN_ERROR("Cannot form a pointer to a basic block"); - yyval.TypeVal = new PATypeHolder(HandleUpRefs(PointerType::get(*yyvsp[-1].TypeVal))); - delete yyvsp[-1].TypeVal; - CHECK_FOR_ERROR - ; - break;} -case 120: -#line 1225 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Named types are also simple types... - const Type* tmp = getTypeVal(yyvsp[0].ValIDVal); - CHECK_FOR_ERROR - yyval.TypeVal = new PATypeHolder(tmp); - ; - break;} -case 121: -#line 1230 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Type UpReference - if (yyvsp[0].UInt64Val > (uint64_t)~0U) GEN_ERROR("Value out of range!"); + (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PointerType::get(*(yyvsp[-1].TypeVal)))); + delete (yyvsp[-1].TypeVal); + CHECK_FOR_ERROR + ;} + break; + + case 121: +#line 1226 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Named types are also simple types... + const Type* tmp = getTypeVal((yyvsp[0].ValIDVal)); + CHECK_FOR_ERROR + (yyval.TypeVal) = new PATypeHolder(tmp); + ;} + break; + + case 122: +#line 1231 "/proj/llvm/llvm-4/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 - UpRefs.push_back(UpRefRecord((unsigned)yyvsp[0].UInt64Val, OT)); // Add to vector... - yyval.TypeVal = new PATypeHolder(OT); + UpRefs.push_back(UpRefRecord((unsigned)(yyvsp[0].UInt64Val), OT)); // Add to vector... + (yyval.TypeVal) = new PATypeHolder(OT); UR_OUT("New Upreference!\n"); CHECK_FOR_ERROR - ; - break;} -case 122: -#line 1238 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 123: +#line 1239 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { std::vector Params; std::vector Attrs; - Attrs.push_back(yyvsp[0].ParamAttrs); - for (TypeWithAttrsList::iterator I=yyvsp[-2].TypeWithAttrsList->begin(), E=yyvsp[-2].TypeWithAttrsList->end(); I != E; ++I) { + Attrs.push_back((yyvsp[0].ParamAttrs)); + for (TypeWithAttrsList::iterator I=(yyvsp[-2].TypeWithAttrsList)->begin(), E=(yyvsp[-2].TypeWithAttrsList)->end(); I != E; ++I) { Params.push_back(I->Ty->get()); if (I->Ty->get() != Type::VoidTy) Attrs.push_back(I->Attrs); @@ -2771,20 +3468,21 @@ case 122: bool isVarArg = Params.size() && Params.back() == Type::VoidTy; if (isVarArg) Params.pop_back(); - FunctionType *FT = FunctionType::get(*yyvsp[-4].TypeVal, Params, isVarArg, Attrs); - delete yyvsp[-2].TypeWithAttrsList; // Delete the argument list - delete yyvsp[-4].TypeVal; // Delete the return type handle - yyval.TypeVal = new PATypeHolder(HandleUpRefs(FT)); + FunctionType *FT = FunctionType::get(*(yyvsp[-4].TypeVal), Params, isVarArg, Attrs); + delete (yyvsp[-2].TypeWithAttrsList); // Delete the argument list + delete (yyvsp[-4].TypeVal); // Delete the return type handle + (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT)); CHECK_FOR_ERROR - ; - break;} -case 123: -#line 1256 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 124: +#line 1257 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { std::vector Params; std::vector Attrs; - Attrs.push_back(yyvsp[0].ParamAttrs); - for (TypeWithAttrsList::iterator I=yyvsp[-2].TypeWithAttrsList->begin(), E=yyvsp[-2].TypeWithAttrsList->end(); I != E; ++I) { + Attrs.push_back((yyvsp[0].ParamAttrs)); + for (TypeWithAttrsList::iterator I=(yyvsp[-2].TypeWithAttrsList)->begin(), E=(yyvsp[-2].TypeWithAttrsList)->end(); I != E; ++I) { Params.push_back(I->Ty->get()); if (I->Ty->get() != Type::VoidTy) Attrs.push_back(I->Attrs); @@ -2792,282 +3490,303 @@ case 123: bool isVarArg = Params.size() && Params.back() == Type::VoidTy; if (isVarArg) Params.pop_back(); - FunctionType *FT = FunctionType::get(yyvsp[-4].PrimType, Params, isVarArg, Attrs); - delete yyvsp[-2].TypeWithAttrsList; // Delete the argument list - yyval.TypeVal = new PATypeHolder(HandleUpRefs(FT)); - CHECK_FOR_ERROR - ; - break;} -case 124: -#line 1274 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Sized array type? - yyval.TypeVal = new PATypeHolder(HandleUpRefs(ArrayType::get(*yyvsp[-1].TypeVal, (unsigned)yyvsp[-3].UInt64Val))); - delete yyvsp[-1].TypeVal; - CHECK_FOR_ERROR - ; - break;} -case 125: -#line 1279 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Packed array type? - const llvm::Type* ElemTy = yyvsp[-1].TypeVal->get(); - if ((unsigned)yyvsp[-3].UInt64Val != yyvsp[-3].UInt64Val) + FunctionType *FT = FunctionType::get((yyvsp[-4].PrimType), Params, isVarArg, Attrs); + delete (yyvsp[-2].TypeWithAttrsList); // Delete the argument list + (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT)); + CHECK_FOR_ERROR + ;} + break; + + case 125: +#line 1275 "/proj/llvm/llvm-4/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); + CHECK_FOR_ERROR + ;} + break; + + case 126: +#line 1280 "/proj/llvm/llvm-4/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->isFloatingPoint() && !ElemTy->isInteger()) GEN_ERROR("Element type of a PackedType must be primitive"); - if (!isPowerOf2_32(yyvsp[-3].UInt64Val)) + if (!isPowerOf2_32((yyvsp[-3].UInt64Val))) GEN_ERROR("Vector length should be a power of 2!"); - yyval.TypeVal = new PATypeHolder(HandleUpRefs(PackedType::get(*yyvsp[-1].TypeVal, (unsigned)yyvsp[-3].UInt64Val))); - delete yyvsp[-1].TypeVal; + (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PackedType::get(*(yyvsp[-1].TypeVal), (unsigned)(yyvsp[-3].UInt64Val)))); + delete (yyvsp[-1].TypeVal); CHECK_FOR_ERROR - ; - break;} -case 126: -#line 1291 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Structure type? + ;} + break; + + case 127: +#line 1292 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Structure type? std::vector Elements; - for (std::list::iterator I = yyvsp[-1].TypeList->begin(), - E = yyvsp[-1].TypeList->end(); I != E; ++I) + for (std::list::iterator I = (yyvsp[-1].TypeList)->begin(), + E = (yyvsp[-1].TypeList)->end(); I != E; ++I) Elements.push_back(*I); - yyval.TypeVal = new PATypeHolder(HandleUpRefs(StructType::get(Elements))); - delete yyvsp[-1].TypeList; + (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(StructType::get(Elements))); + delete (yyvsp[-1].TypeList); CHECK_FOR_ERROR - ; - break;} -case 127: -#line 1301 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Empty structure type? - yyval.TypeVal = new PATypeHolder(StructType::get(std::vector())); + ;} + break; + + case 128: +#line 1302 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Empty structure type? + (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector())); CHECK_FOR_ERROR - ; - break;} -case 128: -#line 1305 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 129: +#line 1306 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { std::vector Elements; - for (std::list::iterator I = yyvsp[-2].TypeList->begin(), - E = yyvsp[-2].TypeList->end(); I != E; ++I) + for (std::list::iterator I = (yyvsp[-2].TypeList)->begin(), + E = (yyvsp[-2].TypeList)->end(); I != E; ++I) Elements.push_back(*I); - yyval.TypeVal = new PATypeHolder(HandleUpRefs(StructType::get(Elements, true))); - delete yyvsp[-2].TypeList; - CHECK_FOR_ERROR - ; - break;} -case 129: -#line 1315 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Empty structure type? - yyval.TypeVal = new PATypeHolder(StructType::get(std::vector(), true)); - CHECK_FOR_ERROR - ; - break;} -case 130: -#line 1322 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.TypeWithAttrs.Ty = yyvsp[-1].TypeVal; - yyval.TypeWithAttrs.Attrs = yyvsp[0].ParamAttrs; - ; - break;} -case 131: -#line 1329 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(StructType::get(Elements, true))); + delete (yyvsp[-2].TypeList); + CHECK_FOR_ERROR + ;} + break; + + case 130: +#line 1316 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Empty structure type? + (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector(), true)); + CHECK_FOR_ERROR + ;} + break; + + case 131: +#line 1323 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TypeWithAttrs).Ty = (yyvsp[-1].TypeVal); + (yyval.TypeWithAttrs).Attrs = (yyvsp[0].ParamAttrs); + ;} + break; + + case 132: +#line 1330 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription()); - if (!(*yyvsp[0].TypeVal)->isFirstClassType()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); + if (!(*(yyvsp[0].TypeVal))->isFirstClassType()) GEN_ERROR("LLVM functions cannot return aggregate types!"); - yyval.TypeVal = yyvsp[0].TypeVal; - ; - break;} -case 132: -#line 1336 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.TypeVal = new PATypeHolder(Type::VoidTy); - ; - break;} -case 133: -#line 1341 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.TypeWithAttrsList = new TypeWithAttrsList(); - yyval.TypeWithAttrsList->push_back(yyvsp[0].TypeWithAttrs); + (yyval.TypeVal) = (yyvsp[0].TypeVal); + ;} + break; + + case 133: +#line 1337 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TypeVal) = new PATypeHolder(Type::VoidTy); + ;} + break; + + case 134: +#line 1342 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TypeWithAttrsList) = new TypeWithAttrsList(); + (yyval.TypeWithAttrsList)->push_back((yyvsp[0].TypeWithAttrs)); CHECK_FOR_ERROR - ; - break;} -case 134: -#line 1346 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - (yyval.TypeWithAttrsList=yyvsp[-2].TypeWithAttrsList)->push_back(yyvsp[0].TypeWithAttrs); + ;} + break; + + case 135: +#line 1347 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + ((yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList))->push_back((yyvsp[0].TypeWithAttrs)); CHECK_FOR_ERROR - ; - break;} -case 136: -#line 1354 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.TypeWithAttrsList=yyvsp[-2].TypeWithAttrsList; + ;} + break; + + case 137: +#line 1355 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList); TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet; TWA.Ty = new PATypeHolder(Type::VoidTy); - yyval.TypeWithAttrsList->push_back(TWA); + (yyval.TypeWithAttrsList)->push_back(TWA); CHECK_FOR_ERROR - ; - break;} -case 137: -#line 1361 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.TypeWithAttrsList = new TypeWithAttrsList; + ;} + break; + + case 138: +#line 1362 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TypeWithAttrsList) = new TypeWithAttrsList; TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet; TWA.Ty = new PATypeHolder(Type::VoidTy); - yyval.TypeWithAttrsList->push_back(TWA); + (yyval.TypeWithAttrsList)->push_back(TWA); CHECK_FOR_ERROR - ; - break;} -case 138: -#line 1368 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.TypeWithAttrsList = new TypeWithAttrsList(); + ;} + break; + + case 139: +#line 1369 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TypeWithAttrsList) = new TypeWithAttrsList(); CHECK_FOR_ERROR - ; - break;} -case 139: -#line 1376 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.TypeList = new std::list(); - yyval.TypeList->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal; + ;} + break; + + case 140: +#line 1377 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TypeList) = new std::list(); + (yyval.TypeList)->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal); CHECK_FOR_ERROR - ; - break;} -case 140: -#line 1381 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - (yyval.TypeList=yyvsp[-2].TypeList)->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal; + ;} + break; + + case 141: +#line 1382 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal); CHECK_FOR_ERROR - ; - break;} -case 141: -#line 1392 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Nonempty unsized arr + ;} + break; + + case 142: +#line 1393 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Nonempty unsized arr if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription()); - const ArrayType *ATy = dyn_cast(yyvsp[-3].TypeVal->get()); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); + const ArrayType *ATy = dyn_cast((yyvsp[-3].TypeVal)->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + - (*yyvsp[-3].TypeVal)->getDescription() + "'!"); + (*(yyvsp[-3].TypeVal))->getDescription() + "'!"); const Type *ETy = ATy->getElementType(); int NumElements = ATy->getNumElements(); // Verify that we have the correct size... - if (NumElements != -1 && NumElements != (int)yyvsp[-1].ConstVector->size()) + if (NumElements != -1 && NumElements != (int)(yyvsp[-1].ConstVector)->size()) GEN_ERROR("Type mismatch: constant sized array initialized with " + - utostr(yyvsp[-1].ConstVector->size()) + " arguments, but has size of " + + utostr((yyvsp[-1].ConstVector)->size()) + " arguments, but has size of " + itostr(NumElements) + "!"); // Verify all elements are correct type! - for (unsigned i = 0; i < yyvsp[-1].ConstVector->size(); i++) { - if (ETy != (*yyvsp[-1].ConstVector)[i]->getType()) + for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) { + if (ETy != (*(yyvsp[-1].ConstVector))[i]->getType()) GEN_ERROR("Element #" + utostr(i) + " is not of type '" + ETy->getDescription() +"' as required!\nIt is of type '"+ - (*yyvsp[-1].ConstVector)[i]->getType()->getDescription() + "'."); + (*(yyvsp[-1].ConstVector))[i]->getType()->getDescription() + "'."); } - yyval.ConstVal = ConstantArray::get(ATy, *yyvsp[-1].ConstVector); - delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector; + (yyval.ConstVal) = ConstantArray::get(ATy, *(yyvsp[-1].ConstVector)); + delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector); CHECK_FOR_ERROR - ; - break;} -case 142: -#line 1420 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 143: +#line 1421 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); - const ArrayType *ATy = dyn_cast(yyvsp[-2].TypeVal->get()); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); + const ArrayType *ATy = dyn_cast((yyvsp[-2].TypeVal)->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + - (*yyvsp[-2].TypeVal)->getDescription() + "'!"); + (*(yyvsp[-2].TypeVal))->getDescription() + "'!"); int NumElements = ATy->getNumElements(); if (NumElements != -1 && NumElements != 0) GEN_ERROR("Type mismatch: constant sized array initialized with 0" " arguments, but has size of " + itostr(NumElements) +"!"); - yyval.ConstVal = ConstantArray::get(ATy, std::vector()); - delete yyvsp[-2].TypeVal; + (yyval.ConstVal) = ConstantArray::get(ATy, std::vector()); + delete (yyvsp[-2].TypeVal); CHECK_FOR_ERROR - ; - break;} -case 143: -#line 1436 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 144: +#line 1437 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); - const ArrayType *ATy = dyn_cast(yyvsp[-2].TypeVal->get()); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); + const ArrayType *ATy = dyn_cast((yyvsp[-2].TypeVal)->get()); if (ATy == 0) GEN_ERROR("Cannot make array constant with type: '" + - (*yyvsp[-2].TypeVal)->getDescription() + "'!"); + (*(yyvsp[-2].TypeVal))->getDescription() + "'!"); int NumElements = ATy->getNumElements(); const Type *ETy = ATy->getElementType(); - char *EndStr = UnEscapeLexed(yyvsp[0].StrVal, true); - if (NumElements != -1 && NumElements != (EndStr-yyvsp[0].StrVal)) + char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true); + if (NumElements != -1 && NumElements != (EndStr-(yyvsp[0].StrVal))) GEN_ERROR("Can't build string constant of size " + - itostr((int)(EndStr-yyvsp[0].StrVal)) + + itostr((int)(EndStr-(yyvsp[0].StrVal))) + " when array has size " + itostr(NumElements) + "!"); std::vector Vals; if (ETy == Type::Int8Ty) { - for (unsigned char *C = (unsigned char *)yyvsp[0].StrVal; + for (unsigned char *C = (unsigned char *)(yyvsp[0].StrVal); C != (unsigned char*)EndStr; ++C) Vals.push_back(ConstantInt::get(ETy, *C)); } else { - free(yyvsp[0].StrVal); + free((yyvsp[0].StrVal)); GEN_ERROR("Cannot build string arrays of non byte sized elements!"); } - free(yyvsp[0].StrVal); - yyval.ConstVal = ConstantArray::get(ATy, Vals); - delete yyvsp[-2].TypeVal; - CHECK_FOR_ERROR - ; - break;} -case 144: -#line 1465 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Nonempty unsized arr + free((yyvsp[0].StrVal)); + (yyval.ConstVal) = ConstantArray::get(ATy, Vals); + delete (yyvsp[-2].TypeVal); + CHECK_FOR_ERROR + ;} + break; + + case 145: +#line 1466 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Nonempty unsized arr if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription()); - const PackedType *PTy = dyn_cast(yyvsp[-3].TypeVal->get()); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); + const PackedType *PTy = dyn_cast((yyvsp[-3].TypeVal)->get()); if (PTy == 0) GEN_ERROR("Cannot make packed constant with type: '" + - (*yyvsp[-3].TypeVal)->getDescription() + "'!"); + (*(yyvsp[-3].TypeVal))->getDescription() + "'!"); const Type *ETy = PTy->getElementType(); int NumElements = PTy->getNumElements(); // Verify that we have the correct size... - if (NumElements != -1 && NumElements != (int)yyvsp[-1].ConstVector->size()) + if (NumElements != -1 && NumElements != (int)(yyvsp[-1].ConstVector)->size()) GEN_ERROR("Type mismatch: constant sized packed initialized with " + - utostr(yyvsp[-1].ConstVector->size()) + " arguments, but has size of " + + utostr((yyvsp[-1].ConstVector)->size()) + " arguments, but has size of " + itostr(NumElements) + "!"); // Verify all elements are correct type! - for (unsigned i = 0; i < yyvsp[-1].ConstVector->size(); i++) { - if (ETy != (*yyvsp[-1].ConstVector)[i]->getType()) + for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) { + if (ETy != (*(yyvsp[-1].ConstVector))[i]->getType()) GEN_ERROR("Element #" + utostr(i) + " is not of type '" + ETy->getDescription() +"' as required!\nIt is of type '"+ - (*yyvsp[-1].ConstVector)[i]->getType()->getDescription() + "'."); + (*(yyvsp[-1].ConstVector))[i]->getType()->getDescription() + "'."); } - yyval.ConstVal = ConstantPacked::get(PTy, *yyvsp[-1].ConstVector); - delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector; + (yyval.ConstVal) = ConstantPacked::get(PTy, *(yyvsp[-1].ConstVector)); + delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector); CHECK_FOR_ERROR - ; - break;} -case 145: -#line 1493 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - const StructType *STy = dyn_cast(yyvsp[-3].TypeVal->get()); + ;} + break; + + case 146: +#line 1494 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + const StructType *STy = dyn_cast((yyvsp[-3].TypeVal)->get()); if (STy == 0) GEN_ERROR("Cannot make struct constant with type: '" + - (*yyvsp[-3].TypeVal)->getDescription() + "'!"); + (*(yyvsp[-3].TypeVal))->getDescription() + "'!"); - if (yyvsp[-1].ConstVector->size() != STy->getNumContainedTypes()) + if ((yyvsp[-1].ConstVector)->size() != STy->getNumContainedTypes()) GEN_ERROR("Illegal number of initializers for structure type!"); // Check to ensure that constants are compatible with the type initializer! - for (unsigned i = 0, e = yyvsp[-1].ConstVector->size(); i != e; ++i) - if ((*yyvsp[-1].ConstVector)[i]->getType() != STy->getElementType(i)) + for (unsigned i = 0, e = (yyvsp[-1].ConstVector)->size(); i != e; ++i) + if ((*(yyvsp[-1].ConstVector))[i]->getType() != STy->getElementType(i)) GEN_ERROR("Expected type '" + STy->getElementType(i)->getDescription() + "' for element #" + utostr(i) + @@ -3077,20 +3796,21 @@ case 145: if (STy->isPacked()) GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'"); - yyval.ConstVal = ConstantStruct::get(STy, *yyvsp[-1].ConstVector); - delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector; + (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[-1].ConstVector)); + delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector); CHECK_FOR_ERROR - ; - break;} -case 146: -#line 1518 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 147: +#line 1519 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); - const StructType *STy = dyn_cast(yyvsp[-2].TypeVal->get()); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); + const StructType *STy = dyn_cast((yyvsp[-2].TypeVal)->get()); if (STy == 0) GEN_ERROR("Cannot make struct constant with type: '" + - (*yyvsp[-2].TypeVal)->getDescription() + "'!"); + (*(yyvsp[-2].TypeVal))->getDescription() + "'!"); if (STy->getNumContainedTypes() != 0) GEN_ERROR("Illegal number of initializers for structure type!"); @@ -3099,25 +3819,26 @@ case 146: if (STy->isPacked()) GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'"); - yyval.ConstVal = ConstantStruct::get(STy, std::vector()); - delete yyvsp[-2].TypeVal; + (yyval.ConstVal) = ConstantStruct::get(STy, std::vector()); + delete (yyvsp[-2].TypeVal); CHECK_FOR_ERROR - ; - break;} -case 147: -#line 1537 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - const StructType *STy = dyn_cast(yyvsp[-5].TypeVal->get()); + ;} + break; + + case 148: +#line 1538 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + const StructType *STy = dyn_cast((yyvsp[-5].TypeVal)->get()); if (STy == 0) GEN_ERROR("Cannot make struct constant with type: '" + - (*yyvsp[-5].TypeVal)->getDescription() + "'!"); + (*(yyvsp[-5].TypeVal))->getDescription() + "'!"); - if (yyvsp[-2].ConstVector->size() != STy->getNumContainedTypes()) + if ((yyvsp[-2].ConstVector)->size() != STy->getNumContainedTypes()) GEN_ERROR("Illegal number of initializers for structure type!"); // Check to ensure that constants are compatible with the type initializer! - for (unsigned i = 0, e = yyvsp[-2].ConstVector->size(); i != e; ++i) - if ((*yyvsp[-2].ConstVector)[i]->getType() != STy->getElementType(i)) + for (unsigned i = 0, e = (yyvsp[-2].ConstVector)->size(); i != e; ++i) + if ((*(yyvsp[-2].ConstVector))[i]->getType() != STy->getElementType(i)) GEN_ERROR("Expected type '" + STy->getElementType(i)->getDescription() + "' for element #" + utostr(i) + @@ -3127,20 +3848,21 @@ case 147: if (!STy->isPacked()) GEN_ERROR("Packed Initializer to unpacked type '" + STy->getDescription() + "'"); - yyval.ConstVal = ConstantStruct::get(STy, *yyvsp[-2].ConstVector); - delete yyvsp[-5].TypeVal; delete yyvsp[-2].ConstVector; + (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[-2].ConstVector)); + delete (yyvsp[-5].TypeVal); delete (yyvsp[-2].ConstVector); CHECK_FOR_ERROR - ; - break;} -case 148: -#line 1562 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 149: +#line 1563 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-4].TypeVal)->getDescription()); - const StructType *STy = dyn_cast(yyvsp[-4].TypeVal->get()); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription()); + const StructType *STy = dyn_cast((yyvsp[-4].TypeVal)->get()); if (STy == 0) GEN_ERROR("Cannot make struct constant with type: '" + - (*yyvsp[-4].TypeVal)->getDescription() + "'!"); + (*(yyvsp[-4].TypeVal))->getDescription() + "'!"); if (STy->getNumContainedTypes() != 0) GEN_ERROR("Illegal number of initializers for structure type!"); @@ -3149,42 +3871,45 @@ case 148: if (!STy->isPacked()) GEN_ERROR("Packed Initializer to unpacked type '" + STy->getDescription() + "'"); - yyval.ConstVal = ConstantStruct::get(STy, std::vector()); - delete yyvsp[-4].TypeVal; + (yyval.ConstVal) = ConstantStruct::get(STy, std::vector()); + delete (yyvsp[-4].TypeVal); CHECK_FOR_ERROR - ; - break;} -case 149: -#line 1581 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 150: +#line 1582 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); - const PointerType *PTy = dyn_cast(yyvsp[-1].TypeVal->get()); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); + const PointerType *PTy = dyn_cast((yyvsp[-1].TypeVal)->get()); if (PTy == 0) GEN_ERROR("Cannot make null pointer constant with type: '" + - (*yyvsp[-1].TypeVal)->getDescription() + "'!"); + (*(yyvsp[-1].TypeVal))->getDescription() + "'!"); - yyval.ConstVal = ConstantPointerNull::get(PTy); - delete yyvsp[-1].TypeVal; + (yyval.ConstVal) = ConstantPointerNull::get(PTy); + delete (yyvsp[-1].TypeVal); CHECK_FOR_ERROR - ; - break;} -case 150: -#line 1593 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 151: +#line 1594 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); - yyval.ConstVal = UndefValue::get(yyvsp[-1].TypeVal->get()); - delete yyvsp[-1].TypeVal; - CHECK_FOR_ERROR - ; - break;} -case 151: -#line 1600 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); + (yyval.ConstVal) = UndefValue::get((yyvsp[-1].TypeVal)->get()); + delete (yyvsp[-1].TypeVal); + CHECK_FOR_ERROR + ;} + break; + + case 152: +#line 1601 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); - const PointerType *Ty = dyn_cast(yyvsp[-1].TypeVal->get()); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); + const PointerType *Ty = dyn_cast((yyvsp[-1].TypeVal)->get()); if (Ty == 0) GEN_ERROR("Global const reference must be a pointer type!"); @@ -3198,7 +3923,7 @@ case 151: Function *SavedCurFn = CurFun.CurrentFunction; CurFun.CurrentFunction = 0; - Value *V = getValNonImprovising(Ty, yyvsp[0].ValIDVal); + Value *V = getValNonImprovising(Ty, (yyvsp[0].ValIDVal)); CHECK_FOR_ERROR CurFun.CurrentFunction = SavedCurFn; @@ -3213,16 +3938,16 @@ case 151: // First check to see if the forward references value is already created! PerModuleInfo::GlobalRefsType::iterator I = - CurModule.GlobalRefs.find(std::make_pair(PT, yyvsp[0].ValIDVal)); + CurModule.GlobalRefs.find(std::make_pair(PT, (yyvsp[0].ValIDVal))); if (I != CurModule.GlobalRefs.end()) { V = I->second; // Placeholder already exists, use it... - yyvsp[0].ValIDVal.destroy(); + (yyvsp[0].ValIDVal).destroy(); } else { std::string Name; - if (yyvsp[0].ValIDVal.Type == ValID::GlobalName) - Name = yyvsp[0].ValIDVal.Name; - else if (yyvsp[0].ValIDVal.Type != ValID::GlobalID) + if ((yyvsp[0].ValIDVal).Type == ValID::GlobalName) + Name = (yyvsp[0].ValIDVal).Name; + else if ((yyvsp[0].ValIDVal).Type != ValID::GlobalID) GEN_ERROR("Invalid reference to global"); // Create the forward referenced global. @@ -3238,282 +3963,299 @@ case 151: } // Keep track of the fact that we have a forward ref to recycle it - CurModule.GlobalRefs.insert(std::make_pair(std::make_pair(PT, yyvsp[0].ValIDVal), GV)); + CurModule.GlobalRefs.insert(std::make_pair(std::make_pair(PT, (yyvsp[0].ValIDVal)), GV)); V = GV; } } - yyval.ConstVal = cast(V); - delete yyvsp[-1].TypeVal; // Free the type handle + (yyval.ConstVal) = cast(V); + delete (yyvsp[-1].TypeVal); // Free the type handle CHECK_FOR_ERROR - ; - break;} -case 152: -#line 1666 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 153: +#line 1667 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); - if (yyvsp[-1].TypeVal->get() != yyvsp[0].ConstVal->getType()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); + if ((yyvsp[-1].TypeVal)->get() != (yyvsp[0].ConstVal)->getType()) GEN_ERROR("Mismatched types for constant expression: " + - (*yyvsp[-1].TypeVal)->getDescription() + " and " + yyvsp[0].ConstVal->getType()->getDescription()); - yyval.ConstVal = yyvsp[0].ConstVal; - delete yyvsp[-1].TypeVal; - CHECK_FOR_ERROR - ; - break;} -case 153: -#line 1676 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + (*(yyvsp[-1].TypeVal))->getDescription() + " and " + (yyvsp[0].ConstVal)->getType()->getDescription()); + (yyval.ConstVal) = (yyvsp[0].ConstVal); + delete (yyvsp[-1].TypeVal); + CHECK_FOR_ERROR + ;} + break; + + case 154: +#line 1677 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); - const Type *Ty = yyvsp[-1].TypeVal->get(); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); + const Type *Ty = (yyvsp[-1].TypeVal)->get(); if (isa(Ty) || Ty == Type::LabelTy || isa(Ty)) GEN_ERROR("Cannot create a null initialized value of this type!"); - yyval.ConstVal = Constant::getNullValue(Ty); - delete yyvsp[-1].TypeVal; - CHECK_FOR_ERROR - ; - break;} -case 154: -#line 1686 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // integral constants - if (!ConstantInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].SInt64Val)) + (yyval.ConstVal) = Constant::getNullValue(Ty); + delete (yyvsp[-1].TypeVal); + CHECK_FOR_ERROR + ;} + break; + + case 155: +#line 1687 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // integral constants + if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val))) GEN_ERROR("Constant value doesn't fit in type!"); - yyval.ConstVal = ConstantInt::get(yyvsp[-1].PrimType, yyvsp[0].SInt64Val); - CHECK_FOR_ERROR - ; - break;} -case 155: -#line 1692 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // integral constants - if (!ConstantInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].UInt64Val)) + (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val)); + CHECK_FOR_ERROR + ;} + break; + + case 156: +#line 1693 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // integral constants + if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val))) GEN_ERROR("Constant value doesn't fit in type!"); - yyval.ConstVal = ConstantInt::get(yyvsp[-1].PrimType, yyvsp[0].UInt64Val); - CHECK_FOR_ERROR - ; - break;} -case 156: -#line 1698 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Boolean constants - assert(cast(yyvsp[-1].PrimType)->getBitWidth() == 1 && "Not Bool?"); - yyval.ConstVal = ConstantInt::getTrue(); - CHECK_FOR_ERROR - ; - break;} -case 157: -#line 1703 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Boolean constants - assert(cast(yyvsp[-1].PrimType)->getBitWidth() == 1 && "Not Bool?"); - yyval.ConstVal = ConstantInt::getFalse(); - CHECK_FOR_ERROR - ; - break;} -case 158: -#line 1708 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Float & Double constants - if (!ConstantFP::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].FPVal)) + (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val)); + CHECK_FOR_ERROR + ;} + break; + + case 157: +#line 1699 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Boolean constants + assert(cast((yyvsp[-1].PrimType))->getBitWidth() == 1 && "Not Bool?"); + (yyval.ConstVal) = ConstantInt::getTrue(); + CHECK_FOR_ERROR + ;} + break; + + case 158: +#line 1704 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Boolean constants + assert(cast((yyvsp[-1].PrimType))->getBitWidth() == 1 && "Not Bool?"); + (yyval.ConstVal) = ConstantInt::getFalse(); + CHECK_FOR_ERROR + ;} + break; + + case 159: +#line 1709 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Float & Double constants + if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].FPVal))) GEN_ERROR("Floating point constant invalid for type!!"); - yyval.ConstVal = ConstantFP::get(yyvsp[-1].PrimType, yyvsp[0].FPVal); + (yyval.ConstVal) = ConstantFP::get((yyvsp[-1].PrimType), (yyvsp[0].FPVal)); CHECK_FOR_ERROR - ; - break;} -case 159: -#line 1716 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 160: +#line 1717 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); - Constant *Val = yyvsp[-3].ConstVal; - const Type *DestTy = yyvsp[-1].TypeVal->get(); - if (!CastInst::castIsValid(yyvsp[-5].CastOpVal, yyvsp[-3].ConstVal, DestTy)) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); + Constant *Val = (yyvsp[-3].ConstVal); + const Type *DestTy = (yyvsp[-1].TypeVal)->get(); + if (!CastInst::castIsValid((yyvsp[-5].CastOpVal), (yyvsp[-3].ConstVal), DestTy)) GEN_ERROR("invalid cast opcode for cast from '" + Val->getType()->getDescription() + "' to '" + DestTy->getDescription() + "'!"); - yyval.ConstVal = ConstantExpr::getCast(yyvsp[-5].CastOpVal, yyvsp[-3].ConstVal, DestTy); - delete yyvsp[-1].TypeVal; - ; - break;} -case 160: -#line 1728 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (!isa(yyvsp[-2].ConstVal->getType())) + (yyval.ConstVal) = ConstantExpr::getCast((yyvsp[-5].CastOpVal), (yyvsp[-3].ConstVal), DestTy); + delete (yyvsp[-1].TypeVal); + ;} + break; + + case 161: +#line 1729 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if (!isa((yyvsp[-2].ConstVal)->getType())) GEN_ERROR("GetElementPtr requires a pointer operand!"); const Type *IdxTy = - GetElementPtrInst::getIndexedType(yyvsp[-2].ConstVal->getType(), *yyvsp[-1].ValueList, true); + GetElementPtrInst::getIndexedType((yyvsp[-2].ConstVal)->getType(), *(yyvsp[-1].ValueList), true); if (!IdxTy) GEN_ERROR("Index list invalid for constant getelementptr!"); SmallVector IdxVec; - for (unsigned i = 0, e = yyvsp[-1].ValueList->size(); i != e; ++i) - if (Constant *C = dyn_cast((*yyvsp[-1].ValueList)[i])) + for (unsigned i = 0, e = (yyvsp[-1].ValueList)->size(); i != e; ++i) + if (Constant *C = dyn_cast((*(yyvsp[-1].ValueList))[i])) IdxVec.push_back(C); else GEN_ERROR("Indices to constant getelementptr must be constants!"); - delete yyvsp[-1].ValueList; + delete (yyvsp[-1].ValueList); - yyval.ConstVal = ConstantExpr::getGetElementPtr(yyvsp[-2].ConstVal, &IdxVec[0], IdxVec.size()); + (yyval.ConstVal) = ConstantExpr::getGetElementPtr((yyvsp[-2].ConstVal), &IdxVec[0], IdxVec.size()); CHECK_FOR_ERROR - ; - break;} -case 161: -#line 1749 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (yyvsp[-5].ConstVal->getType() != Type::Int1Ty) + ;} + break; + + case 162: +#line 1750 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if ((yyvsp[-5].ConstVal)->getType() != Type::Int1Ty) GEN_ERROR("Select condition must be of boolean type!"); - if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType()) + if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("Select operand types must match!"); - yyval.ConstVal = ConstantExpr::getSelect(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); + (yyval.ConstVal) = ConstantExpr::getSelect((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)); CHECK_FOR_ERROR - ; - break;} -case 162: -#line 1757 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType()) + ;} + break; + + case 163: +#line 1758 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("Binary operator types must match!"); CHECK_FOR_ERROR; - yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); - ; - break;} -case 163: -#line 1763 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType()) + (yyval.ConstVal) = ConstantExpr::get((yyvsp[-5].BinaryOpVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)); + ;} + break; + + case 164: +#line 1764 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("Logical operator types must match!"); - if (!yyvsp[-3].ConstVal->getType()->isInteger()) { - if (!isa(yyvsp[-3].ConstVal->getType()) || - !cast(yyvsp[-3].ConstVal->getType())->getElementType()->isInteger()) + if (!(yyvsp[-3].ConstVal)->getType()->isInteger()) { + if (Instruction::isShift((yyvsp[-5].BinaryOpVal)) || !isa((yyvsp[-3].ConstVal)->getType()) || + !cast((yyvsp[-3].ConstVal)->getType())->getElementType()->isInteger()) GEN_ERROR("Logical operator requires integral operands!"); } - yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); + (yyval.ConstVal) = ConstantExpr::get((yyvsp[-5].BinaryOpVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)); CHECK_FOR_ERROR - ; - break;} -case 164: -#line 1774 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType()) + ;} + break; + + case 165: +#line 1775 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("icmp operand types must match!"); - yyval.ConstVal = ConstantExpr::getICmp(yyvsp[-5].IPredicate, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); - ; - break;} -case 165: -#line 1779 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType()) + (yyval.ConstVal) = ConstantExpr::getICmp((yyvsp[-5].IPredicate), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)); + ;} + break; + + case 166: +#line 1780 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType()) GEN_ERROR("fcmp operand types must match!"); - yyval.ConstVal = ConstantExpr::getFCmp(yyvsp[-5].FPredicate, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); - ; - break;} -case 166: -#line 1784 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (yyvsp[-1].ConstVal->getType() != Type::Int8Ty) - GEN_ERROR("Shift count for shift constant must be i8 type!"); - if (!yyvsp[-3].ConstVal->getType()->isInteger()) - GEN_ERROR("Shift constant expression requires integer operand!"); - CHECK_FOR_ERROR; - yyval.ConstVal = ConstantExpr::get(yyvsp[-5].OtherOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); - CHECK_FOR_ERROR - ; - break;} -case 167: -#line 1793 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (!ExtractElementInst::isValidOperands(yyvsp[-3].ConstVal, yyvsp[-1].ConstVal)) + (yyval.ConstVal) = ConstantExpr::getFCmp((yyvsp[-5].FPredicate), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)); + ;} + break; + + case 167: +#line 1785 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid extractelement operands!"); - yyval.ConstVal = ConstantExpr::getExtractElement(yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); + (yyval.ConstVal) = ConstantExpr::getExtractElement((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)); CHECK_FOR_ERROR - ; - break;} -case 168: -#line 1799 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (!InsertElementInst::isValidOperands(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal)) + ;} + break; + + case 168: +#line 1791 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid insertelement operands!"); - yyval.ConstVal = ConstantExpr::getInsertElement(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); + (yyval.ConstVal) = ConstantExpr::getInsertElement((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)); CHECK_FOR_ERROR - ; - break;} -case 169: -#line 1805 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (!ShuffleVectorInst::isValidOperands(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal)) + ;} + break; + + case 169: +#line 1797 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal))) GEN_ERROR("Invalid shufflevector operands!"); - yyval.ConstVal = ConstantExpr::getShuffleVector(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal); + (yyval.ConstVal) = ConstantExpr::getShuffleVector((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)); CHECK_FOR_ERROR - ; - break;} -case 170: -#line 1814 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - (yyval.ConstVector = yyvsp[-2].ConstVector)->push_back(yyvsp[0].ConstVal); + ;} + break; + + case 170: +#line 1806 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + ((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal)); CHECK_FOR_ERROR - ; - break;} -case 171: -#line 1818 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ConstVector = new std::vector(); - yyval.ConstVector->push_back(yyvsp[0].ConstVal); - CHECK_FOR_ERROR - ; - break;} -case 172: -#line 1826 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.BoolVal = false; ; - break;} -case 173: -#line 1826 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.BoolVal = true; ; - break;} -case 174: -#line 1837 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ModuleVal = ParserResult = CurModule.CurrentModule; + ;} + break; + + case 171: +#line 1810 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ConstVector) = new std::vector(); + (yyval.ConstVector)->push_back((yyvsp[0].ConstVal)); + CHECK_FOR_ERROR + ;} + break; + + case 172: +#line 1818 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.BoolVal) = false; ;} + break; + + case 173: +#line 1818 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.BoolVal) = true; ;} + break; + + case 174: +#line 1829 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule; CurModule.ModuleDone(); CHECK_FOR_ERROR; - ; - break;} -case 175: -#line 1842 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ModuleVal = ParserResult = CurModule.CurrentModule; + ;} + break; + + case 175: +#line 1834 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule; CurModule.ModuleDone(); CHECK_FOR_ERROR; - ; - break;} -case 178: -#line 1855 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ CurFun.isDeclare = false; ; - break;} -case 179: -#line 1855 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 178: +#line 1847 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { CurFun.isDeclare = false; ;} + break; + + case 179: +#line 1847 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { CurFun.FunctionDone(); CHECK_FOR_ERROR - ; - break;} -case 180: -#line 1859 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ CurFun.isDeclare = true; ; - break;} -case 181: -#line 1859 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 180: +#line 1851 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { CurFun.isDeclare = true; ;} + break; + + case 181: +#line 1851 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { CHECK_FOR_ERROR - ; - break;} -case 182: -#line 1862 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 182: +#line 1854 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { CHECK_FOR_ERROR - ; - break;} -case 183: -#line 1865 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 183: +#line 1857 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Emit an error if there are any unresolved types left. if (!CurModule.LateResolveTypes.empty()) { const ValID &DID = CurModule.LateResolveTypes.begin()->first; @@ -3524,13 +4266,14 @@ case 183: } } CHECK_FOR_ERROR - ; - break;} -case 184: -#line 1877 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 184: +#line 1869 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription()); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); // Eagerly resolve types. This is not an optimization, this is a // requirement that is due to the fact that we could have this: // @@ -3540,226 +4283,248 @@ case 184: // If types are not resolved eagerly, then the two types will not be // determined to be the same type! // - ResolveTypeTo(yyvsp[-2].StrVal, *yyvsp[0].TypeVal); + ResolveTypeTo((yyvsp[-2].StrVal), *(yyvsp[0].TypeVal)); - if (!setTypeName(*yyvsp[0].TypeVal, yyvsp[-2].StrVal) && !yyvsp[-2].StrVal) { + if (!setTypeName(*(yyvsp[0].TypeVal), (yyvsp[-2].StrVal)) && !(yyvsp[-2].StrVal)) { CHECK_FOR_ERROR // If this is a named type that is not a redefinition, add it to the slot // table. - CurModule.Types.push_back(*yyvsp[0].TypeVal); + CurModule.Types.push_back(*(yyvsp[0].TypeVal)); } - delete yyvsp[0].TypeVal; + delete (yyvsp[0].TypeVal); CHECK_FOR_ERROR - ; - break;} -case 185: -#line 1901 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - ResolveTypeTo(yyvsp[-2].StrVal, yyvsp[0].PrimType); + ;} + break; + + case 185: +#line 1893 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + ResolveTypeTo((yyvsp[-2].StrVal), (yyvsp[0].PrimType)); - if (!setTypeName(yyvsp[0].PrimType, yyvsp[-2].StrVal) && !yyvsp[-2].StrVal) { + if (!setTypeName((yyvsp[0].PrimType), (yyvsp[-2].StrVal)) && !(yyvsp[-2].StrVal)) { CHECK_FOR_ERROR // If this is a named type that is not a redefinition, add it to the slot // table. - CurModule.Types.push_back(yyvsp[0].PrimType); + CurModule.Types.push_back((yyvsp[0].PrimType)); } CHECK_FOR_ERROR - ; - break;} -case 186: -#line 1912 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 186: +#line 1904 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { /* "Externally Visible" Linkage */ - if (yyvsp[0].ConstVal == 0) + if ((yyvsp[0].ConstVal) == 0) GEN_ERROR("Global value initializer is not a constant!"); - CurGV = ParseGlobalVariable(yyvsp[-3].StrVal, GlobalValue::ExternalLinkage, - yyvsp[-2].Visibility, yyvsp[-1].BoolVal, yyvsp[0].ConstVal->getType(), yyvsp[0].ConstVal); + CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::ExternalLinkage, + (yyvsp[-2].Visibility), (yyvsp[-1].BoolVal), (yyvsp[0].ConstVal)->getType(), (yyvsp[0].ConstVal)); CHECK_FOR_ERROR - ; - break;} -case 187: -#line 1919 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 187: +#line 1911 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { CurGV = 0; - ; - break;} -case 188: -#line 1922 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (yyvsp[0].ConstVal == 0) + ;} + break; + + case 188: +#line 1914 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if ((yyvsp[0].ConstVal) == 0) GEN_ERROR("Global value initializer is not a constant!"); - CurGV = ParseGlobalVariable(yyvsp[-4].StrVal, yyvsp[-3].Linkage, yyvsp[-2].Visibility, yyvsp[-1].BoolVal, yyvsp[0].ConstVal->getType(), yyvsp[0].ConstVal); + CurGV = ParseGlobalVariable((yyvsp[-4].StrVal), (yyvsp[-3].Linkage), (yyvsp[-2].Visibility), (yyvsp[-1].BoolVal), (yyvsp[0].ConstVal)->getType(), (yyvsp[0].ConstVal)); CHECK_FOR_ERROR - ; - break;} -case 189: -#line 1927 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 189: +#line 1919 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { CurGV = 0; - ; - break;} -case 190: -#line 1930 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 190: +#line 1922 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription()); - CurGV = ParseGlobalVariable(yyvsp[-4].StrVal, yyvsp[-3].Linkage, yyvsp[-2].Visibility, yyvsp[-1].BoolVal, *yyvsp[0].TypeVal, 0); - CHECK_FOR_ERROR - delete yyvsp[0].TypeVal; - ; - break;} -case 191: -#line 1936 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); + CurGV = ParseGlobalVariable((yyvsp[-4].StrVal), (yyvsp[-3].Linkage), (yyvsp[-2].Visibility), (yyvsp[-1].BoolVal), *(yyvsp[0].TypeVal), 0); + CHECK_FOR_ERROR + delete (yyvsp[0].TypeVal); + ;} + break; + + case 191: +#line 1928 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { CurGV = 0; CHECK_FOR_ERROR - ; - break;} -case 192: -#line 1940 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 192: +#line 1932 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { CHECK_FOR_ERROR - ; - break;} -case 193: -#line 1943 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 193: +#line 1935 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { CHECK_FOR_ERROR - ; - break;} -case 194: -#line 1949 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 194: +#line 1941 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm(); - char *EndStr = UnEscapeLexed(yyvsp[0].StrVal, true); - std::string NewAsm(yyvsp[0].StrVal, EndStr); - free(yyvsp[0].StrVal); + char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true); + std::string NewAsm((yyvsp[0].StrVal), EndStr); + free((yyvsp[0].StrVal)); if (AsmSoFar.empty()) CurModule.CurrentModule->setModuleInlineAsm(NewAsm); else CurModule.CurrentModule->setModuleInlineAsm(AsmSoFar+"\n"+NewAsm); CHECK_FOR_ERROR -; - break;} -case 195: -#line 1962 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - CurModule.CurrentModule->setTargetTriple(yyvsp[0].StrVal); - free(yyvsp[0].StrVal); - ; - break;} -case 196: -#line 1966 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - CurModule.CurrentModule->setDataLayout(yyvsp[0].StrVal); - free(yyvsp[0].StrVal); - ; - break;} -case 198: -#line 1973 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - CurModule.CurrentModule->addLibrary(yyvsp[0].StrVal); - free(yyvsp[0].StrVal); +;} + break; + + case 195: +#line 1954 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal)); + free((yyvsp[0].StrVal)); + ;} + break; + + case 196: +#line 1958 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal)); + free((yyvsp[0].StrVal)); + ;} + break; + + case 198: +#line 1965 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); + free((yyvsp[0].StrVal)); CHECK_FOR_ERROR - ; - break;} -case 199: -#line 1978 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - CurModule.CurrentModule->addLibrary(yyvsp[0].StrVal); - free(yyvsp[0].StrVal); + ;} + break; + + case 199: +#line 1970 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); + free((yyvsp[0].StrVal)); CHECK_FOR_ERROR - ; - break;} -case 200: -#line 1983 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 200: +#line 1975 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { CHECK_FOR_ERROR - ; - break;} -case 201: -#line 1992 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 201: +#line 1984 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); - if (*yyvsp[-2].TypeVal == Type::VoidTy) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); + if (*(yyvsp[-2].TypeVal) == Type::VoidTy) GEN_ERROR("void typed arguments are invalid!"); - ArgListEntry E; E.Attrs = yyvsp[-1].ParamAttrs; E.Ty = yyvsp[-2].TypeVal; E.Name = yyvsp[0].StrVal; - yyval.ArgList = yyvsp[-4].ArgList; - yyvsp[-4].ArgList->push_back(E); - CHECK_FOR_ERROR - ; - break;} -case 202: -#line 2002 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ArgListEntry E; E.Attrs = (yyvsp[-1].ParamAttrs); E.Ty = (yyvsp[-2].TypeVal); E.Name = (yyvsp[0].StrVal); + (yyval.ArgList) = (yyvsp[-4].ArgList); + (yyvsp[-4].ArgList)->push_back(E); + CHECK_FOR_ERROR + ;} + break; + + case 202: +#line 1994 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); - if (*yyvsp[-2].TypeVal == Type::VoidTy) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); + if (*(yyvsp[-2].TypeVal) == Type::VoidTy) GEN_ERROR("void typed arguments are invalid!"); - ArgListEntry E; E.Attrs = yyvsp[-1].ParamAttrs; E.Ty = yyvsp[-2].TypeVal; E.Name = yyvsp[0].StrVal; - yyval.ArgList = new ArgListType; - yyval.ArgList->push_back(E); - CHECK_FOR_ERROR - ; - break;} -case 203: -#line 2013 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ArgList = yyvsp[0].ArgList; + ArgListEntry E; E.Attrs = (yyvsp[-1].ParamAttrs); E.Ty = (yyvsp[-2].TypeVal); E.Name = (yyvsp[0].StrVal); + (yyval.ArgList) = new ArgListType; + (yyval.ArgList)->push_back(E); CHECK_FOR_ERROR - ; - break;} -case 204: -#line 2017 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ArgList = yyvsp[-2].ArgList; + ;} + break; + + case 203: +#line 2005 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ArgList) = (yyvsp[0].ArgList); + CHECK_FOR_ERROR + ;} + break; + + case 204: +#line 2009 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ArgList) = (yyvsp[-2].ArgList); struct ArgListEntry E; E.Ty = new PATypeHolder(Type::VoidTy); E.Name = 0; E.Attrs = FunctionType::NoAttributeSet; - yyval.ArgList->push_back(E); + (yyval.ArgList)->push_back(E); CHECK_FOR_ERROR - ; - break;} -case 205: -#line 2026 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ArgList = new ArgListType; + ;} + break; + + case 205: +#line 2018 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ArgList) = new ArgListType; struct ArgListEntry E; E.Ty = new PATypeHolder(Type::VoidTy); E.Name = 0; E.Attrs = FunctionType::NoAttributeSet; - yyval.ArgList->push_back(E); + (yyval.ArgList)->push_back(E); CHECK_FOR_ERROR - ; - break;} -case 206: -#line 2035 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ArgList = 0; + ;} + break; + + case 206: +#line 2027 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ArgList) = 0; CHECK_FOR_ERROR - ; - break;} -case 207: -#line 2041 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - UnEscapeLexed(yyvsp[-6].StrVal); - std::string FunctionName(yyvsp[-6].StrVal); - free(yyvsp[-6].StrVal); // Free strdup'd memory! + ;} + break; + + case 207: +#line 2033 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + UnEscapeLexed((yyvsp[-6].StrVal)); + std::string FunctionName((yyvsp[-6].StrVal)); + free((yyvsp[-6].StrVal)); // Free strdup'd memory! // Check the function result for abstractness if this is a define. We should // have no abstract types at this point - if (!CurFun.isDeclare && CurModule.TypeIsUnresolved(yyvsp[-7].TypeVal)) - GEN_ERROR("Reference to abstract result: "+ yyvsp[-7].TypeVal->get()->getDescription()); + if (!CurFun.isDeclare && CurModule.TypeIsUnresolved((yyvsp[-7].TypeVal))) + GEN_ERROR("Reference to abstract result: "+ (yyvsp[-7].TypeVal)->get()->getDescription()); std::vector ParamTypeList; std::vector ParamAttrs; - ParamAttrs.push_back(yyvsp[-2].ParamAttrs); - if (yyvsp[-4].ArgList) { // If there are arguments... - for (ArgListType::iterator I = yyvsp[-4].ArgList->begin(); I != yyvsp[-4].ArgList->end(); ++I) { + ParamAttrs.push_back((yyvsp[-2].ParamAttrs)); + if ((yyvsp[-4].ArgList)) { // If there are arguments... + for (ArgListType::iterator I = (yyvsp[-4].ArgList)->begin(); I != (yyvsp[-4].ArgList)->end(); ++I) { const Type* Ty = I->Ty->get(); if (!CurFun.isDeclare && CurModule.TypeIsUnresolved(I->Ty)) GEN_ERROR("Reference to abstract argument: " + Ty->getDescription()); @@ -3772,10 +4537,10 @@ case 207: bool isVarArg = ParamTypeList.size() && ParamTypeList.back() == Type::VoidTy; if (isVarArg) ParamTypeList.pop_back(); - FunctionType *FT = FunctionType::get(*yyvsp[-7].TypeVal, ParamTypeList, isVarArg, + FunctionType *FT = FunctionType::get(*(yyvsp[-7].TypeVal), ParamTypeList, isVarArg, ParamAttrs); const PointerType *PFT = PointerType::get(FT); - delete yyvsp[-7].TypeVal; + delete (yyvsp[-7].TypeVal); ValID ID; if (!FunctionName.empty()) { @@ -3820,24 +4585,24 @@ case 207: Fn->setLinkage(CurFun.Linkage); Fn->setVisibility(CurFun.Visibility); } - Fn->setCallingConv(yyvsp[-8].UIntVal); - Fn->setAlignment(yyvsp[0].UIntVal); - if (yyvsp[-1].StrVal) { - Fn->setSection(yyvsp[-1].StrVal); - free(yyvsp[-1].StrVal); + Fn->setCallingConv((yyvsp[-8].UIntVal)); + Fn->setAlignment((yyvsp[0].UIntVal)); + if ((yyvsp[-1].StrVal)) { + Fn->setSection((yyvsp[-1].StrVal)); + free((yyvsp[-1].StrVal)); } // Add all of the arguments we parsed to the function... - if (yyvsp[-4].ArgList) { // Is null if empty... + if ((yyvsp[-4].ArgList)) { // Is null if empty... if (isVarArg) { // Nuke the last entry - assert(yyvsp[-4].ArgList->back().Ty->get() == Type::VoidTy && yyvsp[-4].ArgList->back().Name == 0&& + assert((yyvsp[-4].ArgList)->back().Ty->get() == Type::VoidTy && (yyvsp[-4].ArgList)->back().Name == 0&& "Not a varargs marker!"); - delete yyvsp[-4].ArgList->back().Ty; - yyvsp[-4].ArgList->pop_back(); // Delete the last entry + delete (yyvsp[-4].ArgList)->back().Ty; + (yyvsp[-4].ArgList)->pop_back(); // Delete the last entry } Function::arg_iterator ArgIt = Fn->arg_begin(); unsigned Idx = 1; - for (ArgListType::iterator I = yyvsp[-4].ArgList->begin(); I != yyvsp[-4].ArgList->end(); ++I, ++ArgIt) { + for (ArgListType::iterator I = (yyvsp[-4].ArgList)->begin(); I != (yyvsp[-4].ArgList)->end(); ++I, ++ArgIt) { delete I->Ty; // Delete the typeholder... setValueName(ArgIt, I->Name); // Insert arg into symtab... CHECK_FOR_ERROR @@ -3845,114 +4610,128 @@ case 207: Idx++; } - delete yyvsp[-4].ArgList; // We're now done with the argument list + delete (yyvsp[-4].ArgList); // We're now done with the argument list } CHECK_FOR_ERROR -; - break;} -case 210: -#line 2148 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.FunctionVal = CurFun.CurrentFunction; +;} + break; + + case 210: +#line 2140 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.FunctionVal) = CurFun.CurrentFunction; // Make sure that we keep track of the linkage type even if there was a // previous "declare". - yyval.FunctionVal->setLinkage(yyvsp[-3].Linkage); - yyval.FunctionVal->setVisibility(yyvsp[-2].Visibility); -; - break;} -case 213: -#line 2159 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.FunctionVal = yyvsp[-1].FunctionVal; + (yyval.FunctionVal)->setLinkage((yyvsp[-3].Linkage)); + (yyval.FunctionVal)->setVisibility((yyvsp[-2].Visibility)); +;} + break; + + case 213: +#line 2151 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR -; - break;} -case 214: -#line 2164 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - CurFun.CurrentFunction->setLinkage(yyvsp[-2].Linkage); - CurFun.CurrentFunction->setVisibility(yyvsp[-1].Visibility); - yyval.FunctionVal = CurFun.CurrentFunction; +;} + break; + + case 214: +#line 2156 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + CurFun.CurrentFunction->setLinkage((yyvsp[-2].Linkage)); + CurFun.CurrentFunction->setVisibility((yyvsp[-1].Visibility)); + (yyval.FunctionVal) = CurFun.CurrentFunction; CurFun.FunctionDone(); CHECK_FOR_ERROR - ; - break;} -case 215: -#line 2176 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.BoolVal = false; + ;} + break; + + case 215: +#line 2168 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.BoolVal) = false; CHECK_FOR_ERROR - ; - break;} -case 216: -#line 2180 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.BoolVal = true; - CHECK_FOR_ERROR - ; - break;} -case 217: -#line 2185 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // A reference to a direct constant - yyval.ValIDVal = ValID::create(yyvsp[0].SInt64Val); - CHECK_FOR_ERROR - ; - break;} -case 218: -#line 2189 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ValIDVal = ValID::create(yyvsp[0].UInt64Val); - CHECK_FOR_ERROR - ; - break;} -case 219: -#line 2193 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Perhaps it's an FP constant? - yyval.ValIDVal = ValID::create(yyvsp[0].FPVal); - CHECK_FOR_ERROR - ; - break;} -case 220: -#line 2197 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ValIDVal = ValID::create(ConstantInt::getTrue()); + ;} + break; + + case 216: +#line 2172 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.BoolVal) = true; CHECK_FOR_ERROR - ; - break;} -case 221: -#line 2201 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ValIDVal = ValID::create(ConstantInt::getFalse()); + ;} + break; + + case 217: +#line 2177 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // A reference to a direct constant + (yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val)); CHECK_FOR_ERROR - ; - break;} -case 222: -#line 2205 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ValIDVal = ValID::createNull(); + ;} + break; + + case 218: +#line 2181 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val)); CHECK_FOR_ERROR - ; - break;} -case 223: -#line 2209 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ValIDVal = ValID::createUndef(); - CHECK_FOR_ERROR - ; - break;} -case 224: -#line 2213 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // A vector zero constant. - yyval.ValIDVal = ValID::createZeroInit(); - CHECK_FOR_ERROR - ; - break;} -case 225: -#line 2217 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Nonempty unsized packed vector - const Type *ETy = (*yyvsp[-1].ConstVector)[0]->getType(); - int NumElements = yyvsp[-1].ConstVector->size(); + ;} + break; + + case 219: +#line 2185 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Perhaps it's an FP constant? + (yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal)); + CHECK_FOR_ERROR + ;} + break; + + case 220: +#line 2189 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ValIDVal) = ValID::create(ConstantInt::getTrue()); + CHECK_FOR_ERROR + ;} + break; + + case 221: +#line 2193 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ValIDVal) = ValID::create(ConstantInt::getFalse()); + CHECK_FOR_ERROR + ;} + break; + + case 222: +#line 2197 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ValIDVal) = ValID::createNull(); + CHECK_FOR_ERROR + ;} + break; + + case 223: +#line 2201 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ValIDVal) = ValID::createUndef(); + CHECK_FOR_ERROR + ;} + break; + + case 224: +#line 2205 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // A vector zero constant. + (yyval.ValIDVal) = ValID::createZeroInit(); + CHECK_FOR_ERROR + ;} + break; + + case 225: +#line 2209 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Nonempty unsized packed vector + const Type *ETy = (*(yyvsp[-1].ConstVector))[0]->getType(); + int NumElements = (yyvsp[-1].ConstVector)->size(); PackedType* pt = PackedType::get(ETy, NumElements); PATypeHolder* PTy = new PATypeHolder( @@ -3964,119 +4743,131 @@ case 225: ); // Verify all elements are correct type! - for (unsigned i = 0; i < yyvsp[-1].ConstVector->size(); i++) { - if (ETy != (*yyvsp[-1].ConstVector)[i]->getType()) + for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) { + if (ETy != (*(yyvsp[-1].ConstVector))[i]->getType()) GEN_ERROR("Element #" + utostr(i) + " is not of type '" + ETy->getDescription() +"' as required!\nIt is of type '" + - (*yyvsp[-1].ConstVector)[i]->getType()->getDescription() + "'."); + (*(yyvsp[-1].ConstVector))[i]->getType()->getDescription() + "'."); } - yyval.ValIDVal = ValID::create(ConstantPacked::get(pt, *yyvsp[-1].ConstVector)); - delete PTy; delete yyvsp[-1].ConstVector; + (yyval.ValIDVal) = ValID::create(ConstantPacked::get(pt, *(yyvsp[-1].ConstVector))); + delete PTy; delete (yyvsp[-1].ConstVector); CHECK_FOR_ERROR - ; - break;} -case 226: -#line 2242 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ValIDVal = ValID::create(yyvsp[0].ConstVal); + ;} + break; + + case 226: +#line 2234 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal)); CHECK_FOR_ERROR - ; - break;} -case 227: -#line 2246 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - char *End = UnEscapeLexed(yyvsp[-2].StrVal, true); - std::string AsmStr = std::string(yyvsp[-2].StrVal, End); - End = UnEscapeLexed(yyvsp[0].StrVal, true); - std::string Constraints = std::string(yyvsp[0].StrVal, End); - yyval.ValIDVal = ValID::createInlineAsm(AsmStr, Constraints, yyvsp[-3].BoolVal); - free(yyvsp[-2].StrVal); - free(yyvsp[0].StrVal); - CHECK_FOR_ERROR - ; - break;} -case 228: -#line 2260 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Is it an integer reference...? - yyval.ValIDVal = ValID::createLocalID(yyvsp[0].UIntVal); - CHECK_FOR_ERROR - ; - break;} -case 229: -#line 2264 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ValIDVal = ValID::createGlobalID(yyvsp[0].UIntVal); - CHECK_FOR_ERROR - ; - break;} -case 230: -#line 2268 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Is it a named reference...? - yyval.ValIDVal = ValID::createLocalName(yyvsp[0].StrVal); - CHECK_FOR_ERROR - ; - break;} -case 231: -#line 2272 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Is it a named reference...? - yyval.ValIDVal = ValID::createGlobalName(yyvsp[0].StrVal); - CHECK_FOR_ERROR - ; - break;} -case 234: -#line 2284 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 227: +#line 2238 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + char *End = UnEscapeLexed((yyvsp[-2].StrVal), true); + std::string AsmStr = std::string((yyvsp[-2].StrVal), End); + End = UnEscapeLexed((yyvsp[0].StrVal), true); + std::string Constraints = std::string((yyvsp[0].StrVal), End); + (yyval.ValIDVal) = ValID::createInlineAsm(AsmStr, Constraints, (yyvsp[-3].BoolVal)); + free((yyvsp[-2].StrVal)); + free((yyvsp[0].StrVal)); + CHECK_FOR_ERROR + ;} + break; + + case 228: +#line 2252 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Is it an integer reference...? + (yyval.ValIDVal) = ValID::createLocalID((yyvsp[0].UIntVal)); + CHECK_FOR_ERROR + ;} + break; + + case 229: +#line 2256 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ValIDVal) = ValID::createGlobalID((yyvsp[0].UIntVal)); + CHECK_FOR_ERROR + ;} + break; + + case 230: +#line 2260 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Is it a named reference...? + (yyval.ValIDVal) = ValID::createLocalName((yyvsp[0].StrVal)); + CHECK_FOR_ERROR + ;} + break; + + case 231: +#line 2264 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Is it a named reference...? + (yyval.ValIDVal) = ValID::createGlobalName((yyvsp[0].StrVal)); + CHECK_FOR_ERROR + ;} + break; + + case 234: +#line 2276 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); - yyval.ValueVal = getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal); - delete yyvsp[-1].TypeVal; - CHECK_FOR_ERROR - ; - break;} -case 235: -#line 2293 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.FunctionVal = yyvsp[-1].FunctionVal; - CHECK_FOR_ERROR - ; - break;} -case 236: -#line 2297 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Do not allow functions with 0 basic blocks - yyval.FunctionVal = yyvsp[-1].FunctionVal; - CHECK_FOR_ERROR - ; - break;} -case 237: -#line 2306 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - setValueName(yyvsp[0].TermInstVal, yyvsp[-1].StrVal); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); + (yyval.ValueVal) = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal)); + delete (yyvsp[-1].TypeVal); CHECK_FOR_ERROR - InsertValue(yyvsp[0].TermInstVal); + ;} + break; - yyvsp[-2].BasicBlockVal->getInstList().push_back(yyvsp[0].TermInstVal); - InsertValue(yyvsp[-2].BasicBlockVal); - yyval.BasicBlockVal = yyvsp[-2].BasicBlockVal; + case 235: +#line 2285 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); CHECK_FOR_ERROR - ; - break;} -case 238: -#line 2317 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (CastInst *CI1 = dyn_cast(yyvsp[0].InstVal)) + ;} + break; + + case 236: +#line 2289 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Do not allow functions with 0 basic blocks + (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); + CHECK_FOR_ERROR + ;} + break; + + case 237: +#line 2298 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal)); + CHECK_FOR_ERROR + InsertValue((yyvsp[0].TermInstVal)); + + (yyvsp[-2].BasicBlockVal)->getInstList().push_back((yyvsp[0].TermInstVal)); + InsertValue((yyvsp[-2].BasicBlockVal)); + (yyval.BasicBlockVal) = (yyvsp[-2].BasicBlockVal); + CHECK_FOR_ERROR + ;} + break; + + case 238: +#line 2309 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if (CastInst *CI1 = dyn_cast((yyvsp[0].InstVal))) if (CastInst *CI2 = dyn_cast(CI1->getOperand(0))) if (CI2->getParent() == 0) - yyvsp[-1].BasicBlockVal->getInstList().push_back(CI2); - yyvsp[-1].BasicBlockVal->getInstList().push_back(yyvsp[0].InstVal); - yyval.BasicBlockVal = yyvsp[-1].BasicBlockVal; - CHECK_FOR_ERROR - ; - break;} -case 239: -#line 2326 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.BasicBlockVal = getBBVal(ValID::createLocalID(CurFun.NextBBNum++), true); + (yyvsp[-1].BasicBlockVal)->getInstList().push_back(CI2); + (yyvsp[-1].BasicBlockVal)->getInstList().push_back((yyvsp[0].InstVal)); + (yyval.BasicBlockVal) = (yyvsp[-1].BasicBlockVal); + CHECK_FOR_ERROR + ;} + break; + + case 239: +#line 2318 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.BasicBlockVal) = getBBVal(ValID::createLocalID(CurFun.NextBBNum++), true); CHECK_FOR_ERROR // Make sure to move the basic block to the correct location in the @@ -4084,14 +4875,15 @@ case 239: // referenced. Function::BasicBlockListType &BBL = CurFun.CurrentFunction->getBasicBlockList(); - BBL.splice(BBL.end(), BBL, yyval.BasicBlockVal); + BBL.splice(BBL.end(), BBL, (yyval.BasicBlockVal)); CHECK_FOR_ERROR - ; - break;} -case 240: -#line 2338 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.BasicBlockVal = getBBVal(ValID::createLocalName(yyvsp[0].StrVal), true); + ;} + break; + + case 240: +#line 2330 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.BasicBlockVal) = getBBVal(ValID::createLocalName((yyvsp[0].StrVal)), true); CHECK_FOR_ERROR // Make sure to move the basic block to the correct location in the @@ -4099,93 +4891,100 @@ case 240: // referenced. Function::BasicBlockListType &BBL = CurFun.CurrentFunction->getBasicBlockList(); - BBL.splice(BBL.end(), BBL, yyval.BasicBlockVal); - CHECK_FOR_ERROR - ; - break;} -case 241: -#line 2351 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Return with a result... - yyval.TermInstVal = new ReturnInst(yyvsp[0].ValueVal); - CHECK_FOR_ERROR - ; - break;} -case 242: -#line 2355 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Return with no result... - yyval.TermInstVal = new ReturnInst(); - CHECK_FOR_ERROR - ; - break;} -case 243: -#line 2359 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Unconditional Branch... - BasicBlock* tmpBB = getBBVal(yyvsp[0].ValIDVal); - CHECK_FOR_ERROR - yyval.TermInstVal = new BranchInst(tmpBB); - ; - break;} -case 244: -#line 2364 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - assert(cast(yyvsp[-7].PrimType)->getBitWidth() == 1 && "Not Bool?"); - BasicBlock* tmpBBA = getBBVal(yyvsp[-3].ValIDVal); - CHECK_FOR_ERROR - BasicBlock* tmpBBB = getBBVal(yyvsp[0].ValIDVal); - CHECK_FOR_ERROR - Value* tmpVal = getVal(Type::Int1Ty, yyvsp[-6].ValIDVal); - CHECK_FOR_ERROR - yyval.TermInstVal = new BranchInst(tmpBBA, tmpBBB, tmpVal); - ; - break;} -case 245: -#line 2374 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - Value* tmpVal = getVal(yyvsp[-7].PrimType, yyvsp[-6].ValIDVal); + BBL.splice(BBL.end(), BBL, (yyval.BasicBlockVal)); + CHECK_FOR_ERROR + ;} + break; + + case 241: +#line 2343 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Return with a result... + (yyval.TermInstVal) = new ReturnInst((yyvsp[0].ValueVal)); + CHECK_FOR_ERROR + ;} + break; + + case 242: +#line 2347 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Return with no result... + (yyval.TermInstVal) = new ReturnInst(); + CHECK_FOR_ERROR + ;} + break; + + case 243: +#line 2351 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Unconditional Branch... + BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal)); + CHECK_FOR_ERROR + (yyval.TermInstVal) = new BranchInst(tmpBB); + ;} + break; + + case 244: +#line 2356 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + assert(cast((yyvsp[-7].PrimType))->getBitWidth() == 1 && "Not Bool?"); + BasicBlock* tmpBBA = getBBVal((yyvsp[-3].ValIDVal)); + CHECK_FOR_ERROR + BasicBlock* tmpBBB = getBBVal((yyvsp[0].ValIDVal)); + CHECK_FOR_ERROR + Value* tmpVal = getVal(Type::Int1Ty, (yyvsp[-6].ValIDVal)); + CHECK_FOR_ERROR + (yyval.TermInstVal) = new BranchInst(tmpBBA, tmpBBB, tmpVal); + ;} + break; + + case 245: +#line 2366 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + Value* tmpVal = getVal((yyvsp[-7].PrimType), (yyvsp[-6].ValIDVal)); CHECK_FOR_ERROR - BasicBlock* tmpBB = getBBVal(yyvsp[-3].ValIDVal); + BasicBlock* tmpBB = getBBVal((yyvsp[-3].ValIDVal)); CHECK_FOR_ERROR - SwitchInst *S = new SwitchInst(tmpVal, tmpBB, yyvsp[-1].JumpTable->size()); - yyval.TermInstVal = S; + SwitchInst *S = new SwitchInst(tmpVal, tmpBB, (yyvsp[-1].JumpTable)->size()); + (yyval.TermInstVal) = S; - std::vector >::iterator I = yyvsp[-1].JumpTable->begin(), - E = yyvsp[-1].JumpTable->end(); + std::vector >::iterator I = (yyvsp[-1].JumpTable)->begin(), + E = (yyvsp[-1].JumpTable)->end(); for (; I != E; ++I) { if (ConstantInt *CI = dyn_cast(I->first)) S->addCase(CI, I->second); else GEN_ERROR("Switch case is constant, but not a simple integer!"); } - delete yyvsp[-1].JumpTable; + delete (yyvsp[-1].JumpTable); CHECK_FOR_ERROR - ; - break;} -case 246: -#line 2393 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - Value* tmpVal = getVal(yyvsp[-6].PrimType, yyvsp[-5].ValIDVal); + ;} + break; + + case 246: +#line 2385 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + Value* tmpVal = getVal((yyvsp[-6].PrimType), (yyvsp[-5].ValIDVal)); CHECK_FOR_ERROR - BasicBlock* tmpBB = getBBVal(yyvsp[-2].ValIDVal); + BasicBlock* tmpBB = getBBVal((yyvsp[-2].ValIDVal)); CHECK_FOR_ERROR SwitchInst *S = new SwitchInst(tmpVal, tmpBB, 0); - yyval.TermInstVal = S; + (yyval.TermInstVal) = S; CHECK_FOR_ERROR - ; - break;} -case 247: -#line 2403 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 247: +#line 2395 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Handle the short syntax const PointerType *PFTy = 0; const FunctionType *Ty = 0; - if (!(PFTy = dyn_cast(yyvsp[-11].TypeVal->get())) || + if (!(PFTy = dyn_cast((yyvsp[-11].TypeVal)->get())) || !(Ty = dyn_cast(PFTy->getElementType()))) { // Pull out the types of all of the arguments... std::vector ParamTypes; FunctionType::ParamAttrsList ParamAttrs; - ParamAttrs.push_back(yyvsp[-6].ParamAttrs); - for (ValueRefList::iterator I = yyvsp[-8].ValueRefList->begin(), E = yyvsp[-8].ValueRefList->end(); I != E; ++I) { + ParamAttrs.push_back((yyvsp[-6].ParamAttrs)); + for (ValueRefList::iterator I = (yyvsp[-8].ValueRefList)->begin(), E = (yyvsp[-8].ValueRefList)->end(); I != E; ++I) { const Type *Ty = I->Val->getType(); if (Ty == Type::VoidTy) GEN_ERROR("Short call syntax cannot be used with varargs"); @@ -4193,20 +4992,20 @@ case 247: ParamAttrs.push_back(I->Attrs); } - Ty = FunctionType::get(yyvsp[-11].TypeVal->get(), ParamTypes, false, ParamAttrs); + Ty = FunctionType::get((yyvsp[-11].TypeVal)->get(), ParamTypes, false, ParamAttrs); PFTy = PointerType::get(Ty); } - Value *V = getVal(PFTy, yyvsp[-10].ValIDVal); // Get the function we're calling... + Value *V = getVal(PFTy, (yyvsp[-10].ValIDVal)); // Get the function we're calling... CHECK_FOR_ERROR - BasicBlock *Normal = getBBVal(yyvsp[-3].ValIDVal); + BasicBlock *Normal = getBBVal((yyvsp[-3].ValIDVal)); CHECK_FOR_ERROR - BasicBlock *Except = getBBVal(yyvsp[0].ValIDVal); + BasicBlock *Except = getBBVal((yyvsp[0].ValIDVal)); CHECK_FOR_ERROR // Check the arguments ValueList Args; - if (yyvsp[-8].ValueRefList->empty()) { // Has no arguments? + if ((yyvsp[-8].ValueRefList)->empty()) { // Has no arguments? // Make sure no arguments is a good thing! if (Ty->getNumParams() != 0) GEN_ERROR("No arguments passed to a function that " @@ -4216,7 +5015,7 @@ case 247: // correctly! FunctionType::param_iterator I = Ty->param_begin(); FunctionType::param_iterator E = Ty->param_end(); - ValueRefList::iterator ArgI = yyvsp[-8].ValueRefList->begin(), ArgE = yyvsp[-8].ValueRefList->end(); + ValueRefList::iterator ArgI = (yyvsp[-8].ValueRefList)->begin(), ArgE = (yyvsp[-8].ValueRefList)->end(); for (; ArgI != ArgE && I != E; ++ArgI, ++I) { if (ArgI->Val->getType() != *I) @@ -4235,326 +5034,340 @@ case 247: // Create the InvokeInst InvokeInst *II = new InvokeInst(V, Normal, Except, Args); - II->setCallingConv(yyvsp[-12].UIntVal); - yyval.TermInstVal = II; - delete yyvsp[-8].ValueRefList; - CHECK_FOR_ERROR - ; - break;} -case 248: -#line 2469 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.TermInstVal = new UnwindInst(); + II->setCallingConv((yyvsp[-12].UIntVal)); + (yyval.TermInstVal) = II; + delete (yyvsp[-8].ValueRefList); CHECK_FOR_ERROR - ; - break;} -case 249: -#line 2473 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.TermInstVal = new UnreachableInst(); + ;} + break; + + case 248: +#line 2461 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TermInstVal) = new UnwindInst(); CHECK_FOR_ERROR - ; - break;} -case 250: -#line 2480 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.JumpTable = yyvsp[-5].JumpTable; - Constant *V = cast(getValNonImprovising(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal)); + ;} + break; + + case 249: +#line 2465 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.TermInstVal) = new UnreachableInst(); + CHECK_FOR_ERROR + ;} + break; + + case 250: +#line 2472 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.JumpTable) = (yyvsp[-5].JumpTable); + Constant *V = cast(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal))); CHECK_FOR_ERROR if (V == 0) GEN_ERROR("May only switch on a constant pool value!"); - BasicBlock* tmpBB = getBBVal(yyvsp[0].ValIDVal); + BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal)); CHECK_FOR_ERROR - yyval.JumpTable->push_back(std::make_pair(V, tmpBB)); - ; - break;} -case 251: -#line 2491 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.JumpTable = new std::vector >(); - Constant *V = cast(getValNonImprovising(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal)); + (yyval.JumpTable)->push_back(std::make_pair(V, tmpBB)); + ;} + break; + + case 251: +#line 2483 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.JumpTable) = new std::vector >(); + Constant *V = cast(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal))); CHECK_FOR_ERROR if (V == 0) GEN_ERROR("May only switch on a constant pool value!"); - BasicBlock* tmpBB = getBBVal(yyvsp[0].ValIDVal); + BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal)); CHECK_FOR_ERROR - yyval.JumpTable->push_back(std::make_pair(V, tmpBB)); - ; - break;} -case 252: -#line 2504 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + (yyval.JumpTable)->push_back(std::make_pair(V, tmpBB)); + ;} + break; + + case 252: +#line 2496 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Is this definition named?? if so, assign the name... - setValueName(yyvsp[0].InstVal, yyvsp[-1].StrVal); + setValueName((yyvsp[0].InstVal), (yyvsp[-1].StrVal)); CHECK_FOR_ERROR - InsertValue(yyvsp[0].InstVal); - yyval.InstVal = yyvsp[0].InstVal; + InsertValue((yyvsp[0].InstVal)); + (yyval.InstVal) = (yyvsp[0].InstVal); CHECK_FOR_ERROR -; - break;} -case 253: -#line 2513 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ // Used for PHI nodes +;} + break; + + case 253: +#line 2505 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Used for PHI nodes if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-5].TypeVal)->getDescription()); - yyval.PHIList = new std::list >(); - Value* tmpVal = getVal(*yyvsp[-5].TypeVal, yyvsp[-3].ValIDVal); - CHECK_FOR_ERROR - BasicBlock* tmpBB = getBBVal(yyvsp[-1].ValIDVal); - CHECK_FOR_ERROR - yyval.PHIList->push_back(std::make_pair(tmpVal, tmpBB)); - delete yyvsp[-5].TypeVal; - ; - break;} -case 254: -#line 2524 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.PHIList = yyvsp[-6].PHIList; - Value* tmpVal = getVal(yyvsp[-6].PHIList->front().first->getType(), yyvsp[-3].ValIDVal); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-5].TypeVal))->getDescription()); + (yyval.PHIList) = new std::list >(); + Value* tmpVal = getVal(*(yyvsp[-5].TypeVal), (yyvsp[-3].ValIDVal)); + CHECK_FOR_ERROR + BasicBlock* tmpBB = getBBVal((yyvsp[-1].ValIDVal)); CHECK_FOR_ERROR - BasicBlock* tmpBB = getBBVal(yyvsp[-1].ValIDVal); + (yyval.PHIList)->push_back(std::make_pair(tmpVal, tmpBB)); + delete (yyvsp[-5].TypeVal); + ;} + break; + + case 254: +#line 2516 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.PHIList) = (yyvsp[-6].PHIList); + Value* tmpVal = getVal((yyvsp[-6].PHIList)->front().first->getType(), (yyvsp[-3].ValIDVal)); + CHECK_FOR_ERROR + BasicBlock* tmpBB = getBBVal((yyvsp[-1].ValIDVal)); CHECK_FOR_ERROR - yyvsp[-6].PHIList->push_back(std::make_pair(tmpVal, tmpBB)); - ; - break;} -case 255: -#line 2534 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + (yyvsp[-6].PHIList)->push_back(std::make_pair(tmpVal, tmpBB)); + ;} + break; + + case 255: +#line 2526 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); // Used for call and invoke instructions - yyval.ValueRefList = new ValueRefList(); - ValueRefListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getVal(yyvsp[-2].TypeVal->get(), yyvsp[-1].ValIDVal); - yyval.ValueRefList->push_back(E); - ; - break;} -case 256: -#line 2542 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + (yyval.ValueRefList) = new ValueRefList(); + ValueRefListEntry E; E.Attrs = (yyvsp[0].ParamAttrs); E.Val = getVal((yyvsp[-2].TypeVal)->get(), (yyvsp[-1].ValIDVal)); + (yyval.ValueRefList)->push_back(E); + ;} + break; + + case 256: +#line 2534 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); - yyval.ValueRefList = yyvsp[-4].ValueRefList; - ValueRefListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getVal(yyvsp[-2].TypeVal->get(), yyvsp[-1].ValIDVal); - yyval.ValueRefList->push_back(E); - CHECK_FOR_ERROR - ; - break;} -case 257: -#line 2550 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.ValueRefList = new ValueRefList(); ; - break;} -case 258: -#line 2553 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.ValueList = new std::vector(); ; - break;} -case 259: -#line 2554 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.ValueList = yyvsp[-2].ValueList; - yyval.ValueList->push_back(yyvsp[0].ValueVal); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); + (yyval.ValueRefList) = (yyvsp[-4].ValueRefList); + ValueRefListEntry E; E.Attrs = (yyvsp[0].ParamAttrs); E.Val = getVal((yyvsp[-2].TypeVal)->get(), (yyvsp[-1].ValIDVal)); + (yyval.ValueRefList)->push_back(E); CHECK_FOR_ERROR - ; - break;} -case 260: -#line 2561 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.BoolVal = true; + ;} + break; + + case 257: +#line 2542 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.ValueRefList) = new ValueRefList(); ;} + break; + + case 258: +#line 2545 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { (yyval.ValueList) = new std::vector(); ;} + break; + + case 259: +#line 2546 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.ValueList) = (yyvsp[-2].ValueList); + (yyval.ValueList)->push_back((yyvsp[0].ValueVal)); CHECK_FOR_ERROR - ; - break;} -case 261: -#line 2565 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.BoolVal = false; + ;} + break; + + case 260: +#line 2553 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.BoolVal) = true; CHECK_FOR_ERROR - ; - break;} -case 262: -#line 2570 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 261: +#line 2557 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.BoolVal) = false; + CHECK_FOR_ERROR + ;} + break; + + case 262: +#line 2562 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription()); - if (!(*yyvsp[-3].TypeVal)->isInteger() && !(*yyvsp[-3].TypeVal)->isFloatingPoint() && - !isa((*yyvsp[-3].TypeVal).get())) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); + if (!(*(yyvsp[-3].TypeVal))->isInteger() && !(*(yyvsp[-3].TypeVal))->isFloatingPoint() && + !isa((*(yyvsp[-3].TypeVal)).get())) GEN_ERROR( "Arithmetic operator requires integer, FP, or packed operands!"); - if (isa((*yyvsp[-3].TypeVal).get()) && - (yyvsp[-4].BinaryOpVal == Instruction::URem || - yyvsp[-4].BinaryOpVal == Instruction::SRem || - yyvsp[-4].BinaryOpVal == Instruction::FRem)) + if (isa((*(yyvsp[-3].TypeVal)).get()) && + ((yyvsp[-4].BinaryOpVal) == Instruction::URem || + (yyvsp[-4].BinaryOpVal) == Instruction::SRem || + (yyvsp[-4].BinaryOpVal) == Instruction::FRem)) GEN_ERROR("U/S/FRem not supported on packed types!"); - Value* val1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal); + Value* val1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); CHECK_FOR_ERROR - Value* val2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal); + Value* val2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal)); CHECK_FOR_ERROR - yyval.InstVal = BinaryOperator::create(yyvsp[-4].BinaryOpVal, val1, val2); - if (yyval.InstVal == 0) + (yyval.InstVal) = BinaryOperator::create((yyvsp[-4].BinaryOpVal), val1, val2); + if ((yyval.InstVal) == 0) GEN_ERROR("binary operator returned null!"); - delete yyvsp[-3].TypeVal; - ; - break;} -case 263: -#line 2591 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + delete (yyvsp[-3].TypeVal); + ;} + break; + + case 263: +#line 2583 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription()); - if (!(*yyvsp[-3].TypeVal)->isInteger()) { - if (!isa(yyvsp[-3].TypeVal->get()) || - !cast(yyvsp[-3].TypeVal->get())->getElementType()->isInteger()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); + if (!(*(yyvsp[-3].TypeVal))->isInteger()) { + if (Instruction::isShift((yyvsp[-4].BinaryOpVal)) || !isa((yyvsp[-3].TypeVal)->get()) || + !cast((yyvsp[-3].TypeVal)->get())->getElementType()->isInteger()) GEN_ERROR("Logical operator requires integral operands!"); } - Value* tmpVal1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal); + Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); CHECK_FOR_ERROR - Value* tmpVal2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal); + Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal)); CHECK_FOR_ERROR - yyval.InstVal = BinaryOperator::create(yyvsp[-4].BinaryOpVal, tmpVal1, tmpVal2); - if (yyval.InstVal == 0) + (yyval.InstVal) = BinaryOperator::create((yyvsp[-4].BinaryOpVal), tmpVal1, tmpVal2); + if ((yyval.InstVal) == 0) GEN_ERROR("binary operator returned null!"); - delete yyvsp[-3].TypeVal; - ; - break;} -case 264: -#line 2608 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + delete (yyvsp[-3].TypeVal); + ;} + break; + + case 264: +#line 2600 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription()); - if (isa((*yyvsp[-3].TypeVal).get())) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); + if (isa((*(yyvsp[-3].TypeVal)).get())) GEN_ERROR("Packed types not supported by icmp instruction"); - Value* tmpVal1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal); + Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); CHECK_FOR_ERROR - Value* tmpVal2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal); + Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal)); CHECK_FOR_ERROR - yyval.InstVal = CmpInst::create(yyvsp[-5].OtherOpVal, yyvsp[-4].IPredicate, tmpVal1, tmpVal2); - if (yyval.InstVal == 0) + (yyval.InstVal) = CmpInst::create((yyvsp[-5].OtherOpVal), (yyvsp[-4].IPredicate), tmpVal1, tmpVal2); + if ((yyval.InstVal) == 0) GEN_ERROR("icmp operator returned null!"); - ; - break;} -case 265: -#line 2621 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 265: +#line 2613 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription()); - if (isa((*yyvsp[-3].TypeVal).get())) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription()); + if (isa((*(yyvsp[-3].TypeVal)).get())) GEN_ERROR("Packed types not supported by fcmp instruction"); - Value* tmpVal1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal); + Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); CHECK_FOR_ERROR - Value* tmpVal2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal); + Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal)); CHECK_FOR_ERROR - yyval.InstVal = CmpInst::create(yyvsp[-5].OtherOpVal, yyvsp[-4].FPredicate, tmpVal1, tmpVal2); - if (yyval.InstVal == 0) + (yyval.InstVal) = CmpInst::create((yyvsp[-5].OtherOpVal), (yyvsp[-4].FPredicate), tmpVal1, tmpVal2); + if ((yyval.InstVal) == 0) GEN_ERROR("fcmp operator returned null!"); - ; - break;} -case 266: -#line 2634 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (yyvsp[0].ValueVal->getType() != Type::Int8Ty) - GEN_ERROR("Shift amount must be i8 type!"); - if (!yyvsp[-2].ValueVal->getType()->isInteger()) - GEN_ERROR("Shift constant expression requires integer operand!"); - CHECK_FOR_ERROR; - yyval.InstVal = new ShiftInst(yyvsp[-3].OtherOpVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal); - CHECK_FOR_ERROR - ; - break;} -case 267: -#line 2643 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 266: +#line 2626 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription()); - Value* Val = yyvsp[-2].ValueVal; - const Type* DestTy = yyvsp[0].TypeVal->get(); - if (!CastInst::castIsValid(yyvsp[-3].CastOpVal, Val, DestTy)) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); + Value* Val = (yyvsp[-2].ValueVal); + const Type* DestTy = (yyvsp[0].TypeVal)->get(); + if (!CastInst::castIsValid((yyvsp[-3].CastOpVal), Val, DestTy)) GEN_ERROR("invalid cast opcode for cast from '" + Val->getType()->getDescription() + "' to '" + DestTy->getDescription() + "'!"); - yyval.InstVal = CastInst::create(yyvsp[-3].CastOpVal, Val, DestTy); - delete yyvsp[0].TypeVal; - ; - break;} -case 268: -#line 2655 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (yyvsp[-4].ValueVal->getType() != Type::Int1Ty) + (yyval.InstVal) = CastInst::create((yyvsp[-3].CastOpVal), Val, DestTy); + delete (yyvsp[0].TypeVal); + ;} + break; + + case 267: +#line 2638 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if ((yyvsp[-4].ValueVal)->getType() != Type::Int1Ty) GEN_ERROR("select condition must be boolean!"); - if (yyvsp[-2].ValueVal->getType() != yyvsp[0].ValueVal->getType()) + if ((yyvsp[-2].ValueVal)->getType() != (yyvsp[0].ValueVal)->getType()) GEN_ERROR("select value types should match!"); - yyval.InstVal = new SelectInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal); + (yyval.InstVal) = new SelectInst((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)); CHECK_FOR_ERROR - ; - break;} -case 269: -#line 2663 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 268: +#line 2646 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription()); - yyval.InstVal = new VAArgInst(yyvsp[-2].ValueVal, *yyvsp[0].TypeVal); - delete yyvsp[0].TypeVal; - CHECK_FOR_ERROR - ; - break;} -case 270: -#line 2670 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (!ExtractElementInst::isValidOperands(yyvsp[-2].ValueVal, yyvsp[0].ValueVal)) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription()); + (yyval.InstVal) = new VAArgInst((yyvsp[-2].ValueVal), *(yyvsp[0].TypeVal)); + delete (yyvsp[0].TypeVal); + CHECK_FOR_ERROR + ;} + break; + + case 269: +#line 2653 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid extractelement operands!"); - yyval.InstVal = new ExtractElementInst(yyvsp[-2].ValueVal, yyvsp[0].ValueVal); + (yyval.InstVal) = new ExtractElementInst((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)); CHECK_FOR_ERROR - ; - break;} -case 271: -#line 2676 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (!InsertElementInst::isValidOperands(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal)) + ;} + break; + + case 270: +#line 2659 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid insertelement operands!"); - yyval.InstVal = new InsertElementInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal); + (yyval.InstVal) = new InsertElementInst((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)); CHECK_FOR_ERROR - ; - break;} -case 272: -#line 2682 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (!ShuffleVectorInst::isValidOperands(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal)) + ;} + break; + + case 271: +#line 2665 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal))) GEN_ERROR("Invalid shufflevector operands!"); - yyval.InstVal = new ShuffleVectorInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal); + (yyval.InstVal) = new ShuffleVectorInst((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)); CHECK_FOR_ERROR - ; - break;} -case 273: -#line 2688 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - const Type *Ty = yyvsp[0].PHIList->front().first->getType(); + ;} + break; + + case 272: +#line 2671 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + const Type *Ty = (yyvsp[0].PHIList)->front().first->getType(); if (!Ty->isFirstClassType()) GEN_ERROR("PHI node operands must be of first class type!"); - yyval.InstVal = new PHINode(Ty); - ((PHINode*)yyval.InstVal)->reserveOperandSpace(yyvsp[0].PHIList->size()); - while (yyvsp[0].PHIList->begin() != yyvsp[0].PHIList->end()) { - if (yyvsp[0].PHIList->front().first->getType() != Ty) + (yyval.InstVal) = new PHINode(Ty); + ((PHINode*)(yyval.InstVal))->reserveOperandSpace((yyvsp[0].PHIList)->size()); + while ((yyvsp[0].PHIList)->begin() != (yyvsp[0].PHIList)->end()) { + if ((yyvsp[0].PHIList)->front().first->getType() != Ty) GEN_ERROR("All elements of a PHI node must be of the same type!"); - cast(yyval.InstVal)->addIncoming(yyvsp[0].PHIList->front().first, yyvsp[0].PHIList->front().second); - yyvsp[0].PHIList->pop_front(); + cast((yyval.InstVal))->addIncoming((yyvsp[0].PHIList)->front().first, (yyvsp[0].PHIList)->front().second); + (yyvsp[0].PHIList)->pop_front(); } - delete yyvsp[0].PHIList; // Free the list... + delete (yyvsp[0].PHIList); // Free the list... CHECK_FOR_ERROR - ; - break;} -case 274: -#line 2704 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 273: +#line 2687 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { // Handle the short syntax const PointerType *PFTy = 0; const FunctionType *Ty = 0; - if (!(PFTy = dyn_cast(yyvsp[-5].TypeVal->get())) || + if (!(PFTy = dyn_cast((yyvsp[-5].TypeVal)->get())) || !(Ty = dyn_cast(PFTy->getElementType()))) { // Pull out the types of all of the arguments... std::vector ParamTypes; FunctionType::ParamAttrsList ParamAttrs; - ParamAttrs.push_back(yyvsp[0].ParamAttrs); - for (ValueRefList::iterator I = yyvsp[-2].ValueRefList->begin(), E = yyvsp[-2].ValueRefList->end(); I != E; ++I) { + ParamAttrs.push_back((yyvsp[0].ParamAttrs)); + for (ValueRefList::iterator I = (yyvsp[-2].ValueRefList)->begin(), E = (yyvsp[-2].ValueRefList)->end(); I != E; ++I) { const Type *Ty = I->Val->getType(); if (Ty == Type::VoidTy) GEN_ERROR("Short call syntax cannot be used with varargs"); @@ -4562,16 +5375,16 @@ case 274: ParamAttrs.push_back(I->Attrs); } - Ty = FunctionType::get(yyvsp[-5].TypeVal->get(), ParamTypes, false, ParamAttrs); + Ty = FunctionType::get((yyvsp[-5].TypeVal)->get(), ParamTypes, false, ParamAttrs); PFTy = PointerType::get(Ty); } - Value *V = getVal(PFTy, yyvsp[-4].ValIDVal); // Get the function we're calling... + Value *V = getVal(PFTy, (yyvsp[-4].ValIDVal)); // Get the function we're calling... CHECK_FOR_ERROR // Check the arguments ValueList Args; - if (yyvsp[-2].ValueRefList->empty()) { // Has no arguments? + if ((yyvsp[-2].ValueRefList)->empty()) { // Has no arguments? // Make sure no arguments is a good thing! if (Ty->getNumParams() != 0) GEN_ERROR("No arguments passed to a function that " @@ -4582,7 +5395,7 @@ case 274: // FunctionType::param_iterator I = Ty->param_begin(); FunctionType::param_iterator E = Ty->param_end(); - ValueRefList::iterator ArgI = yyvsp[-2].ValueRefList->begin(), ArgE = yyvsp[-2].ValueRefList->end(); + ValueRefList::iterator ArgI = (yyvsp[-2].ValueRefList)->begin(), ArgE = (yyvsp[-2].ValueRefList)->end(); for (; ArgI != ArgE && I != E; ++ArgI, ++I) { if (ArgI->Val->getType() != *I) @@ -4599,365 +5412,428 @@ case 274: } // Create the call node CallInst *CI = new CallInst(V, Args); - CI->setTailCall(yyvsp[-7].BoolVal); - CI->setCallingConv(yyvsp[-6].UIntVal); - yyval.InstVal = CI; - delete yyvsp[-2].ValueRefList; - delete yyvsp[-5].TypeVal; - CHECK_FOR_ERROR - ; - break;} -case 275: -#line 2767 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.InstVal = yyvsp[0].InstVal; + CI->setTailCall((yyvsp[-7].BoolVal)); + CI->setCallingConv((yyvsp[-6].UIntVal)); + (yyval.InstVal) = CI; + delete (yyvsp[-2].ValueRefList); + delete (yyvsp[-5].TypeVal); CHECK_FOR_ERROR - ; - break;} -case 276: -#line 2772 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.BoolVal = true; + ;} + break; + + case 274: +#line 2750 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.InstVal) = (yyvsp[0].InstVal); CHECK_FOR_ERROR - ; - break;} -case 277: -#line 2776 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - yyval.BoolVal = false; + ;} + break; + + case 275: +#line 2755 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.BoolVal) = true; CHECK_FOR_ERROR - ; - break;} -case 278: -#line 2783 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 276: +#line 2759 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + (yyval.BoolVal) = false; + CHECK_FOR_ERROR + ;} + break; + + case 277: +#line 2766 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); - yyval.InstVal = new MallocInst(*yyvsp[-1].TypeVal, 0, yyvsp[0].UIntVal); - delete yyvsp[-1].TypeVal; - CHECK_FOR_ERROR - ; - break;} -case 279: -#line 2790 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); + (yyval.InstVal) = new MallocInst(*(yyvsp[-1].TypeVal), 0, (yyvsp[0].UIntVal)); + delete (yyvsp[-1].TypeVal); + CHECK_FOR_ERROR + ;} + break; + + case 278: +#line 2773 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-4].TypeVal)->getDescription()); - Value* tmpVal = getVal(yyvsp[-2].PrimType, yyvsp[-1].ValIDVal); - CHECK_FOR_ERROR - yyval.InstVal = new MallocInst(*yyvsp[-4].TypeVal, tmpVal, yyvsp[0].UIntVal); - delete yyvsp[-4].TypeVal; - ; - break;} -case 280: -#line 2798 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription()); + Value* tmpVal = getVal((yyvsp[-2].PrimType), (yyvsp[-1].ValIDVal)); + CHECK_FOR_ERROR + (yyval.InstVal) = new MallocInst(*(yyvsp[-4].TypeVal), tmpVal, (yyvsp[0].UIntVal)); + delete (yyvsp[-4].TypeVal); + ;} + break; + + case 279: +#line 2781 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); - yyval.InstVal = new AllocaInst(*yyvsp[-1].TypeVal, 0, yyvsp[0].UIntVal); - delete yyvsp[-1].TypeVal; - CHECK_FOR_ERROR - ; - break;} -case 281: -#line 2805 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); + (yyval.InstVal) = new AllocaInst(*(yyvsp[-1].TypeVal), 0, (yyvsp[0].UIntVal)); + delete (yyvsp[-1].TypeVal); + CHECK_FOR_ERROR + ;} + break; + + case 280: +#line 2788 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-4].TypeVal)->getDescription()); - Value* tmpVal = getVal(yyvsp[-2].PrimType, yyvsp[-1].ValIDVal); - CHECK_FOR_ERROR - yyval.InstVal = new AllocaInst(*yyvsp[-4].TypeVal, tmpVal, yyvsp[0].UIntVal); - delete yyvsp[-4].TypeVal; - ; - break;} -case 282: -#line 2813 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ - if (!isa(yyvsp[0].ValueVal->getType())) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription()); + Value* tmpVal = getVal((yyvsp[-2].PrimType), (yyvsp[-1].ValIDVal)); + CHECK_FOR_ERROR + (yyval.InstVal) = new AllocaInst(*(yyvsp[-4].TypeVal), tmpVal, (yyvsp[0].UIntVal)); + delete (yyvsp[-4].TypeVal); + ;} + break; + + case 281: +#line 2796 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { + if (!isa((yyvsp[0].ValueVal)->getType())) GEN_ERROR("Trying to free nonpointer type " + - yyvsp[0].ValueVal->getType()->getDescription() + "!"); - yyval.InstVal = new FreeInst(yyvsp[0].ValueVal); + (yyvsp[0].ValueVal)->getType()->getDescription() + "!"); + (yyval.InstVal) = new FreeInst((yyvsp[0].ValueVal)); CHECK_FOR_ERROR - ; - break;} -case 283: -#line 2821 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + ;} + break; + + case 282: +#line 2804 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); - if (!isa(yyvsp[-1].TypeVal->get())) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); + if (!isa((yyvsp[-1].TypeVal)->get())) GEN_ERROR("Can't load from nonpointer type: " + - (*yyvsp[-1].TypeVal)->getDescription()); - if (!cast(yyvsp[-1].TypeVal->get())->getElementType()->isFirstClassType()) + (*(yyvsp[-1].TypeVal))->getDescription()); + if (!cast((yyvsp[-1].TypeVal)->get())->getElementType()->isFirstClassType()) GEN_ERROR("Can't load from pointer of non-first-class type: " + - (*yyvsp[-1].TypeVal)->getDescription()); - Value* tmpVal = getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal); - CHECK_FOR_ERROR - yyval.InstVal = new LoadInst(tmpVal, "", yyvsp[-3].BoolVal); - delete yyvsp[-1].TypeVal; - ; - break;} -case 284: -#line 2835 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + (*(yyvsp[-1].TypeVal))->getDescription()); + Value* tmpVal = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal)); + CHECK_FOR_ERROR + (yyval.InstVal) = new LoadInst(tmpVal, "", (yyvsp[-3].BoolVal)); + delete (yyvsp[-1].TypeVal); + ;} + break; + + case 283: +#line 2818 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); - const PointerType *PT = dyn_cast(yyvsp[-1].TypeVal->get()); + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription()); + const PointerType *PT = dyn_cast((yyvsp[-1].TypeVal)->get()); if (!PT) GEN_ERROR("Can't store to a nonpointer type: " + - (*yyvsp[-1].TypeVal)->getDescription()); + (*(yyvsp[-1].TypeVal))->getDescription()); const Type *ElTy = PT->getElementType(); - if (ElTy != yyvsp[-3].ValueVal->getType()) - GEN_ERROR("Can't store '" + yyvsp[-3].ValueVal->getType()->getDescription() + + if (ElTy != (yyvsp[-3].ValueVal)->getType()) + GEN_ERROR("Can't store '" + (yyvsp[-3].ValueVal)->getType()->getDescription() + "' into space of type '" + ElTy->getDescription() + "'!"); - Value* tmpVal = getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal); + Value* tmpVal = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal)); CHECK_FOR_ERROR - yyval.InstVal = new StoreInst(yyvsp[-3].ValueVal, tmpVal, yyvsp[-5].BoolVal); - delete yyvsp[-1].TypeVal; - ; - break;} -case 285: -#line 2852 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" -{ + (yyval.InstVal) = new StoreInst((yyvsp[-3].ValueVal), tmpVal, (yyvsp[-5].BoolVal)); + delete (yyvsp[-1].TypeVal); + ;} + break; + + case 284: +#line 2835 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" + { if (!UpRefs.empty()) - GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); - if (!isa(yyvsp[-2].TypeVal->get())) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription()); + if (!isa((yyvsp[-2].TypeVal)->get())) GEN_ERROR("getelementptr insn requires pointer operand!"); - if (!GetElementPtrInst::getIndexedType(*yyvsp[-2].TypeVal, *yyvsp[0].ValueList, true)) + if (!GetElementPtrInst::getIndexedType(*(yyvsp[-2].TypeVal), *(yyvsp[0].ValueList), true)) GEN_ERROR("Invalid getelementptr indices for type '" + - (*yyvsp[-2].TypeVal)->getDescription()+ "'!"); - Value* tmpVal = getVal(*yyvsp[-2].TypeVal, yyvsp[-1].ValIDVal); - CHECK_FOR_ERROR - yyval.InstVal = new GetElementPtrInst(tmpVal, *yyvsp[0].ValueList); - delete yyvsp[-2].TypeVal; - delete yyvsp[0].ValueList; - ; - break;} -} - /* the action file gets copied in in place of this dollarsign */ -#line 543 "/usr/share/bison.simple" + (*(yyvsp[-2].TypeVal))->getDescription()+ "'!"); + Value* tmpVal = getVal(*(yyvsp[-2].TypeVal), (yyvsp[-1].ValIDVal)); + CHECK_FOR_ERROR + (yyval.InstVal) = new GetElementPtrInst(tmpVal, *(yyvsp[0].ValueList)); + delete (yyvsp[-2].TypeVal); + delete (yyvsp[0].ValueList); + ;} + break; + + + default: break; + } + +/* Line 1126 of yacc.c. */ +#line 5569 "llvmAsmParser.tab.c" yyvsp -= yylen; yyssp -= yylen; -#ifdef YYLSP_NEEDED - yylsp -= yylen; -#endif -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif + + YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; -#ifdef YYLSP_NEEDED - yylsp++; - if (yylen == 0) - { - yylsp->first_line = yylloc.first_line; - yylsp->first_column = yylloc.first_column; - yylsp->last_line = (yylsp-1)->last_line; - yylsp->last_column = (yylsp-1)->last_column; - yylsp->text = 0; - } - else - { - yylsp->last_line = (yylsp+yylen-1)->last_line; - yylsp->last_column = (yylsp+yylen-1)->last_column; - } -#endif - /* Now "shift" the result of the reduction. - Determine what state that goes to, - based on the state we popped back to - and the rule number reduced by. */ + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ yyn = yyr1[yyn]; - yystate = yypgoto[yyn - YYNTBASE] + *yyssp; - if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else - yystate = yydefgoto[yyn - YYNTBASE]; + yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; -yyerrlab: /* here on detecting error */ - if (! yyerrstatus) - /* If not already recovering from an error, report this error. */ +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) { ++yynerrs; - -#ifdef YYERROR_VERBOSE +#if YYERROR_VERBOSE yyn = yypact[yystate]; - if (yyn > YYFLAG && yyn < YYLAST) + if (YYPACT_NINF < yyn && yyn < YYLAST) { - int size = 0; - char *msg; - int x, count; - - count = 0; - /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - size += strlen(yytname[x]) + 15, count++; - msg = (char *) malloc(size + 15); - if (msg != 0) - { - strcpy(msg, "parse error"); + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + char *yymsg = 0; +# define YYERROR_VERBOSE_ARGS_MAXIMUM 5 + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; - if (count < 5) +#if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +#endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= yysize1 < yysize; + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= yysize1 < yysize; + yysize = yysize1; + + if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM) + yymsg = (char *) YYSTACK_ALLOC (yysize); + if (yymsg) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yymsg; + int yyi = 0; + while ((*yyp = *yyf)) { - count = 0; - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - { - strcat(msg, count == 0 ? ", expecting `" : " or `"); - strcat(msg, yytname[x]); - strcat(msg, "'"); - count++; - } + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } } - yyerror(msg); - free(msg); + yyerror (yymsg); + YYSTACK_FREE (yymsg); } else - yyerror ("parse error; also virtual memory exceeded"); + { + yyerror (YY_("syntax error")); + goto yyexhaustedlab; + } } else #endif /* YYERROR_VERBOSE */ - yyerror("parse error"); + yyerror (YY_("syntax error")); } - goto yyerrlab1; -yyerrlab1: /* here on error raised explicitly by an action */ + if (yyerrstatus == 3) { - /* if just tried and failed to reuse lookahead token after an error, discard it. */ - - /* return failure if at end of input */ - if (yychar == YYEOF) - YYABORT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); -#endif - - yychar = YYEMPTY; + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", yytoken, &yylval); + yychar = YYEMPTY; + } } - /* Else will try to reuse lookahead token - after shifting the error token. */ + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; - yyerrstatus = 3; /* Each real token shifted decrements this */ - goto yyerrhandle; +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: -yyerrdefault: /* current state does not do anything special for the error token. */ + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (0) + goto yyerrorlab; -#if 0 - /* This is wrong; only states that explicitly want error tokens - should shift them. */ - yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ - if (yyn) goto yydefault; -#endif +yyvsp -= yylen; + yyssp -= yylen; + yystate = *yyssp; + goto yyerrlab1; -yyerrpop: /* pop the current state because it cannot handle the error token */ - if (yyssp == yyss) YYABORT; - yyvsp--; - yystate = *--yyssp; -#ifdef YYLSP_NEEDED - yylsp--; -#endif +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ -#if YYDEBUG != 0 - if (yydebug) + for (;;) { - short *ssp1 = yyss - 1; - fprintf (stderr, "Error: state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - -yyerrhandle: + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yyerrdefault; + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; - yyn += YYTERROR; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) - goto yyerrdefault; - yyn = yytable[yyn]; - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrpop; - yyn = -yyn; - goto yyreduce; + yydestruct ("Error: popping", yystos[yystate], yyvsp); + YYPOPSTACK; + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); } - else if (yyn == 0) - goto yyerrpop; if (yyn == YYFINAL) YYACCEPT; -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting error token, "); -#endif - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; - yyacceptlab: - /* YYACCEPT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ #endif - } - return 0; - yyabortlab: - /* YYABORT comes here. */ - if (yyfree_stacks) +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + while (yyssp != yyss) { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK; } - return 1; +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif + return yyresult; } -#line 2869 "/Volumes/ProjectsDisk/cvs/llvm/lib/AsmParser/llvmAsmParser.y" + + +#line 2852 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" // common code from the two 'RunVMAsmParser' functions @@ -5007,3 +5883,4 @@ int yyerror(const char *ErrorMsg) { GenerateError(errMsg); return 0; } + diff --git a/lib/AsmParser/llvmAsmParser.h.cvs b/lib/AsmParser/llvmAsmParser.h.cvs index 2b79ec49e3d..295a7b88f75 100644 --- a/lib/AsmParser/llvmAsmParser.h.cvs +++ b/lib/AsmParser/llvmAsmParser.h.cvs @@ -1,4 +1,302 @@ -typedef union { +/* A Bison parser, made by GNU Bison 2.1. */ + +/* Skeleton parser for Yacc-like parsing with Bison, + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + ESINT64VAL = 258, + EUINT64VAL = 259, + LOCALVAL_ID = 260, + GLOBALVAL_ID = 261, + FPVAL = 262, + VOID = 263, + INTTYPE = 264, + FLOAT = 265, + DOUBLE = 266, + LABEL = 267, + TYPE = 268, + LOCALVAR = 269, + GLOBALVAR = 270, + LABELSTR = 271, + STRINGCONSTANT = 272, + ATSTRINGCONSTANT = 273, + IMPLEMENTATION = 274, + ZEROINITIALIZER = 275, + TRUETOK = 276, + FALSETOK = 277, + BEGINTOK = 278, + ENDTOK = 279, + DECLARE = 280, + DEFINE = 281, + GLOBAL = 282, + CONSTANT = 283, + SECTION = 284, + VOLATILE = 285, + TO = 286, + DOTDOTDOT = 287, + NULL_TOK = 288, + UNDEF = 289, + INTERNAL = 290, + LINKONCE = 291, + WEAK = 292, + APPENDING = 293, + DLLIMPORT = 294, + DLLEXPORT = 295, + EXTERN_WEAK = 296, + OPAQUE = 297, + EXTERNAL = 298, + TARGET = 299, + TRIPLE = 300, + ALIGN = 301, + DEPLIBS = 302, + CALL = 303, + TAIL = 304, + ASM_TOK = 305, + MODULE = 306, + SIDEEFFECT = 307, + CC_TOK = 308, + CCC_TOK = 309, + FASTCC_TOK = 310, + COLDCC_TOK = 311, + X86_STDCALLCC_TOK = 312, + X86_FASTCALLCC_TOK = 313, + DATALAYOUT = 314, + RET = 315, + BR = 316, + SWITCH = 317, + INVOKE = 318, + UNWIND = 319, + UNREACHABLE = 320, + ADD = 321, + SUB = 322, + MUL = 323, + UDIV = 324, + SDIV = 325, + FDIV = 326, + UREM = 327, + SREM = 328, + FREM = 329, + AND = 330, + OR = 331, + XOR = 332, + SHL = 333, + LSHR = 334, + ASHR = 335, + ICMP = 336, + FCMP = 337, + EQ = 338, + NE = 339, + SLT = 340, + SGT = 341, + SLE = 342, + SGE = 343, + ULT = 344, + UGT = 345, + ULE = 346, + UGE = 347, + OEQ = 348, + ONE = 349, + OLT = 350, + OGT = 351, + OLE = 352, + OGE = 353, + ORD = 354, + UNO = 355, + UEQ = 356, + UNE = 357, + MALLOC = 358, + ALLOCA = 359, + FREE = 360, + LOAD = 361, + STORE = 362, + GETELEMENTPTR = 363, + TRUNC = 364, + ZEXT = 365, + SEXT = 366, + FPTRUNC = 367, + FPEXT = 368, + BITCAST = 369, + UITOFP = 370, + SITOFP = 371, + FPTOUI = 372, + FPTOSI = 373, + INTTOPTR = 374, + PTRTOINT = 375, + PHI_TOK = 376, + SELECT = 377, + VAARG = 378, + EXTRACTELEMENT = 379, + INSERTELEMENT = 380, + SHUFFLEVECTOR = 381, + NORETURN = 382, + INREG = 383, + SRET = 384, + DEFAULT = 385, + HIDDEN = 386 + }; +#endif +/* Tokens. */ +#define ESINT64VAL 258 +#define EUINT64VAL 259 +#define LOCALVAL_ID 260 +#define GLOBALVAL_ID 261 +#define FPVAL 262 +#define VOID 263 +#define INTTYPE 264 +#define FLOAT 265 +#define DOUBLE 266 +#define LABEL 267 +#define TYPE 268 +#define LOCALVAR 269 +#define GLOBALVAR 270 +#define LABELSTR 271 +#define STRINGCONSTANT 272 +#define ATSTRINGCONSTANT 273 +#define IMPLEMENTATION 274 +#define ZEROINITIALIZER 275 +#define TRUETOK 276 +#define FALSETOK 277 +#define BEGINTOK 278 +#define ENDTOK 279 +#define DECLARE 280 +#define DEFINE 281 +#define GLOBAL 282 +#define CONSTANT 283 +#define SECTION 284 +#define VOLATILE 285 +#define TO 286 +#define DOTDOTDOT 287 +#define NULL_TOK 288 +#define UNDEF 289 +#define INTERNAL 290 +#define LINKONCE 291 +#define WEAK 292 +#define APPENDING 293 +#define DLLIMPORT 294 +#define DLLEXPORT 295 +#define EXTERN_WEAK 296 +#define OPAQUE 297 +#define EXTERNAL 298 +#define TARGET 299 +#define TRIPLE 300 +#define ALIGN 301 +#define DEPLIBS 302 +#define CALL 303 +#define TAIL 304 +#define ASM_TOK 305 +#define MODULE 306 +#define SIDEEFFECT 307 +#define CC_TOK 308 +#define CCC_TOK 309 +#define FASTCC_TOK 310 +#define COLDCC_TOK 311 +#define X86_STDCALLCC_TOK 312 +#define X86_FASTCALLCC_TOK 313 +#define DATALAYOUT 314 +#define RET 315 +#define BR 316 +#define SWITCH 317 +#define INVOKE 318 +#define UNWIND 319 +#define UNREACHABLE 320 +#define ADD 321 +#define SUB 322 +#define MUL 323 +#define UDIV 324 +#define SDIV 325 +#define FDIV 326 +#define UREM 327 +#define SREM 328 +#define FREM 329 +#define AND 330 +#define OR 331 +#define XOR 332 +#define SHL 333 +#define LSHR 334 +#define ASHR 335 +#define ICMP 336 +#define FCMP 337 +#define EQ 338 +#define NE 339 +#define SLT 340 +#define SGT 341 +#define SLE 342 +#define SGE 343 +#define ULT 344 +#define UGT 345 +#define ULE 346 +#define UGE 347 +#define OEQ 348 +#define ONE 349 +#define OLT 350 +#define OGT 351 +#define OLE 352 +#define OGE 353 +#define ORD 354 +#define UNO 355 +#define UEQ 356 +#define UNE 357 +#define MALLOC 358 +#define ALLOCA 359 +#define FREE 360 +#define LOAD 361 +#define STORE 362 +#define GETELEMENTPTR 363 +#define TRUNC 364 +#define ZEXT 365 +#define SEXT 366 +#define FPTRUNC 367 +#define FPEXT 368 +#define BITCAST 369 +#define UITOFP 370 +#define SITOFP 371 +#define FPTOUI 372 +#define FPTOSI 373 +#define INTTOPTR 374 +#define PTRTOINT 375 +#define PHI_TOK 376 +#define SELECT 377 +#define VAARG 378 +#define EXTRACTELEMENT 379 +#define INSERTELEMENT 380 +#define SHUFFLEVECTOR 381 +#define NORETURN 382 +#define INREG 383 +#define SRET 384 +#define DEFAULT 385 +#define HIDDEN 386 + + + + +#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) +#line 886 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y" +typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; llvm::BasicBlock *BasicBlockVal; @@ -43,135 +341,14 @@ typedef union { llvm::ICmpInst::Predicate IPredicate; llvm::FCmpInst::Predicate FPredicate; } YYSTYPE; -#define ESINT64VAL 257 -#define EUINT64VAL 258 -#define LOCALVAL_ID 259 -#define GLOBALVAL_ID 260 -#define FPVAL 261 -#define VOID 262 -#define INTTYPE 263 -#define FLOAT 264 -#define DOUBLE 265 -#define LABEL 266 -#define TYPE 267 -#define LOCALVAR 268 -#define GLOBALVAR 269 -#define LABELSTR 270 -#define STRINGCONSTANT 271 -#define ATSTRINGCONSTANT 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 EXTERNAL 297 -#define TARGET 298 -#define TRIPLE 299 -#define ALIGN 300 -#define DEPLIBS 301 -#define CALL 302 -#define TAIL 303 -#define ASM_TOK 304 -#define MODULE 305 -#define SIDEEFFECT 306 -#define CC_TOK 307 -#define CCC_TOK 308 -#define FASTCC_TOK 309 -#define COLDCC_TOK 310 -#define X86_STDCALLCC_TOK 311 -#define X86_FASTCALLCC_TOK 312 -#define DATALAYOUT 313 -#define RET 314 -#define BR 315 -#define SWITCH 316 -#define INVOKE 317 -#define UNWIND 318 -#define UNREACHABLE 319 -#define ADD 320 -#define SUB 321 -#define MUL 322 -#define UDIV 323 -#define SDIV 324 -#define FDIV 325 -#define UREM 326 -#define SREM 327 -#define FREM 328 -#define AND 329 -#define OR 330 -#define XOR 331 -#define ICMP 332 -#define FCMP 333 -#define EQ 334 -#define NE 335 -#define SLT 336 -#define SGT 337 -#define SLE 338 -#define SGE 339 -#define ULT 340 -#define UGT 341 -#define ULE 342 -#define UGE 343 -#define OEQ 344 -#define ONE 345 -#define OLT 346 -#define OGT 347 -#define OLE 348 -#define OGE 349 -#define ORD 350 -#define UNO 351 -#define UEQ 352 -#define UNE 353 -#define MALLOC 354 -#define ALLOCA 355 -#define FREE 356 -#define LOAD 357 -#define STORE 358 -#define GETELEMENTPTR 359 -#define TRUNC 360 -#define ZEXT 361 -#define SEXT 362 -#define FPTRUNC 363 -#define FPEXT 364 -#define BITCAST 365 -#define UITOFP 366 -#define SITOFP 367 -#define FPTOUI 368 -#define FPTOSI 369 -#define INTTOPTR 370 -#define PTRTOINT 371 -#define PHI_TOK 372 -#define SELECT 373 -#define SHL 374 -#define LSHR 375 -#define ASHR 376 -#define VAARG 377 -#define EXTRACTELEMENT 378 -#define INSERTELEMENT 379 -#define SHUFFLEVECTOR 380 -#define NORETURN 381 -#define INREG 382 -#define SRET 383 -#define DEFAULT 384 -#define HIDDEN 385 - +/* Line 1447 of yacc.c. */ +#line 346 "llvmAsmParser.tab.h" +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif extern YYSTYPE llvmAsmlval; + + + diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index 586896cfa07..9608da205ce 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -997,6 +997,8 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { // Binary Operators %type ArithmeticOps LogicalOps // Binops Subcatagories %token ADD SUB MUL UDIV SDIV FDIV UREM SREM FREM AND OR XOR +%token SHL LSHR ASHR + %token ICMP FCMP %type IPredicates %type FPredicates @@ -1012,8 +1014,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { %token UITOFP SITOFP FPTOUI FPTOSI INTTOPTR PTRTOINT // Other Operators -%type ShiftOps -%token PHI_TOK SELECT SHL LSHR ASHR VAARG +%token PHI_TOK SELECT VAARG %token EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR // Function Attributes @@ -1030,10 +1031,10 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { // RET, BR, & SWITCH because they end basic blocks and are treated specially. // ArithmeticOps: ADD | SUB | MUL | UDIV | SDIV | FDIV | UREM | SREM | FREM; -LogicalOps : AND | OR | XOR; +LogicalOps : SHL | LSHR | ASHR | AND | OR | XOR; CastOps : TRUNC | ZEXT | SEXT | FPTRUNC | FPEXT | BITCAST | UITOFP | SITOFP | FPTOUI | FPTOSI | INTTOPTR | PTRTOINT; -ShiftOps : SHL | LSHR | ASHR; + IPredicates : EQ { $$ = ICmpInst::ICMP_EQ; } | NE { $$ = ICmpInst::ICMP_NE; } | SLT { $$ = ICmpInst::ICMP_SLT; } | SGT { $$ = ICmpInst::ICMP_SGT; } @@ -1764,7 +1765,7 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' { if ($3->getType() != $5->getType()) GEN_ERROR("Logical operator types must match!"); if (!$3->getType()->isInteger()) { - if (!isa($3->getType()) || + if (Instruction::isShift($1) || !isa($3->getType()) || !cast($3->getType())->getElementType()->isInteger()) GEN_ERROR("Logical operator requires integral operands!"); } @@ -1781,15 +1782,6 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' { GEN_ERROR("fcmp operand types must match!"); $$ = ConstantExpr::getFCmp($2, $4, $6); } - | ShiftOps '(' ConstVal ',' ConstVal ')' { - if ($5->getType() != Type::Int8Ty) - GEN_ERROR("Shift count for shift constant must be i8 type!"); - if (!$3->getType()->isInteger()) - GEN_ERROR("Shift constant expression requires integer operand!"); - CHECK_FOR_ERROR; - $$ = ConstantExpr::get($1, $3, $5); - CHECK_FOR_ERROR - } | EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' { if (!ExtractElementInst::isValidOperands($3, $5)) GEN_ERROR("Invalid extractelement operands!"); @@ -2592,7 +2584,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription()); if (!(*$2)->isInteger()) { - if (!isa($2->get()) || + if (Instruction::isShift($1) || !isa($2->get()) || !cast($2->get())->getElementType()->isInteger()) GEN_ERROR("Logical operator requires integral operands!"); } @@ -2631,15 +2623,6 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { if ($$ == 0) GEN_ERROR("fcmp operator returned null!"); } - | ShiftOps ResolvedVal ',' ResolvedVal { - if ($4->getType() != Type::Int8Ty) - GEN_ERROR("Shift amount must be i8 type!"); - if (!$2->getType()->isInteger()) - GEN_ERROR("Shift constant expression requires integer operand!"); - CHECK_FOR_ERROR; - $$ = new ShiftInst($1, $2, $4); - CHECK_FOR_ERROR - } | CastOps ResolvedVal TO Types { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$4)->getDescription()); diff --git a/lib/AsmParser/llvmAsmParser.y.cvs b/lib/AsmParser/llvmAsmParser.y.cvs index 586896cfa07..9608da205ce 100644 --- a/lib/AsmParser/llvmAsmParser.y.cvs +++ b/lib/AsmParser/llvmAsmParser.y.cvs @@ -997,6 +997,8 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { // Binary Operators %type ArithmeticOps LogicalOps // Binops Subcatagories %token ADD SUB MUL UDIV SDIV FDIV UREM SREM FREM AND OR XOR +%token SHL LSHR ASHR + %token ICMP FCMP %type IPredicates %type FPredicates @@ -1012,8 +1014,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { %token UITOFP SITOFP FPTOUI FPTOSI INTTOPTR PTRTOINT // Other Operators -%type ShiftOps -%token PHI_TOK SELECT SHL LSHR ASHR VAARG +%token PHI_TOK SELECT VAARG %token EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR // Function Attributes @@ -1030,10 +1031,10 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { // RET, BR, & SWITCH because they end basic blocks and are treated specially. // ArithmeticOps: ADD | SUB | MUL | UDIV | SDIV | FDIV | UREM | SREM | FREM; -LogicalOps : AND | OR | XOR; +LogicalOps : SHL | LSHR | ASHR | AND | OR | XOR; CastOps : TRUNC | ZEXT | SEXT | FPTRUNC | FPEXT | BITCAST | UITOFP | SITOFP | FPTOUI | FPTOSI | INTTOPTR | PTRTOINT; -ShiftOps : SHL | LSHR | ASHR; + IPredicates : EQ { $$ = ICmpInst::ICMP_EQ; } | NE { $$ = ICmpInst::ICMP_NE; } | SLT { $$ = ICmpInst::ICMP_SLT; } | SGT { $$ = ICmpInst::ICMP_SGT; } @@ -1764,7 +1765,7 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' { if ($3->getType() != $5->getType()) GEN_ERROR("Logical operator types must match!"); if (!$3->getType()->isInteger()) { - if (!isa($3->getType()) || + if (Instruction::isShift($1) || !isa($3->getType()) || !cast($3->getType())->getElementType()->isInteger()) GEN_ERROR("Logical operator requires integral operands!"); } @@ -1781,15 +1782,6 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' { GEN_ERROR("fcmp operand types must match!"); $$ = ConstantExpr::getFCmp($2, $4, $6); } - | ShiftOps '(' ConstVal ',' ConstVal ')' { - if ($5->getType() != Type::Int8Ty) - GEN_ERROR("Shift count for shift constant must be i8 type!"); - if (!$3->getType()->isInteger()) - GEN_ERROR("Shift constant expression requires integer operand!"); - CHECK_FOR_ERROR; - $$ = ConstantExpr::get($1, $3, $5); - CHECK_FOR_ERROR - } | EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' { if (!ExtractElementInst::isValidOperands($3, $5)) GEN_ERROR("Invalid extractelement operands!"); @@ -2592,7 +2584,7 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$2)->getDescription()); if (!(*$2)->isInteger()) { - if (!isa($2->get()) || + if (Instruction::isShift($1) || !isa($2->get()) || !cast($2->get())->getElementType()->isInteger()) GEN_ERROR("Logical operator requires integral operands!"); } @@ -2631,15 +2623,6 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { if ($$ == 0) GEN_ERROR("fcmp operator returned null!"); } - | ShiftOps ResolvedVal ',' ResolvedVal { - if ($4->getType() != Type::Int8Ty) - GEN_ERROR("Shift amount must be i8 type!"); - if (!$2->getType()->isInteger()) - GEN_ERROR("Shift constant expression requires integer operand!"); - CHECK_FOR_ERROR; - $$ = new ShiftInst($1, $2, $4); - CHECK_FOR_ERROR - } | CastOps ResolvedVal TO Types { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$4)->getDescription()); diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp index c649a3b19cc..e2505cc81e8 100644 --- a/lib/Bytecode/Reader/Reader.cpp +++ b/lib/Bytecode/Reader/Reader.cpp @@ -607,13 +607,6 @@ void BytecodeReader::ParseInstruction(std::vector &Oprnds, static_cast(Oprnds[2]), getValue(iType, Oprnds[0]), getValue(iType, Oprnds[1])); break; - case Instruction::Shl: - case Instruction::LShr: - case Instruction::AShr: - Result = new ShiftInst(Instruction::OtherOps(Opcode), - getValue(iType, Oprnds[0]), - getValue(Int8TySlot, Oprnds[1])); - break; case Instruction::Ret: if (Oprnds.size() == 0) Result = new ReturnInst(); diff --git a/lib/CodeGen/IntrinsicLowering.cpp b/lib/CodeGen/IntrinsicLowering.cpp index b6f85d4ae35..7bbe2979105 100644 --- a/lib/CodeGen/IntrinsicLowering.cpp +++ b/lib/CodeGen/IntrinsicLowering.cpp @@ -118,22 +118,22 @@ static Value *LowerBSWAP(Value *V, Instruction *IP) { switch(BitSize) { default: assert(0 && "Unhandled type size of value to byteswap!"); case 16: { - Value *Tmp1 = new ShiftInst(Instruction::Shl, V, - ConstantInt::get(Type::Int8Ty,8),"bswap.2",IP); - Value *Tmp2 = new ShiftInst(Instruction::LShr, V, - ConstantInt::get(Type::Int8Ty,8),"bswap.1",IP); + Value *Tmp1 = BinaryOperator::create(Instruction::Shl, V, + ConstantInt::get(V->getType(),8),"bswap.2",IP); + Value *Tmp2 = BinaryOperator::create(Instruction::LShr, V, + ConstantInt::get(V->getType(),8),"bswap.1",IP); V = BinaryOperator::createOr(Tmp1, Tmp2, "bswap.i16", IP); break; } case 32: { - Value *Tmp4 = new ShiftInst(Instruction::Shl, V, - ConstantInt::get(Type::Int8Ty,24),"bswap.4", IP); - Value *Tmp3 = new ShiftInst(Instruction::Shl, V, - ConstantInt::get(Type::Int8Ty,8),"bswap.3",IP); - Value *Tmp2 = new ShiftInst(Instruction::LShr, V, - ConstantInt::get(Type::Int8Ty,8),"bswap.2",IP); - Value *Tmp1 = new ShiftInst(Instruction::LShr, V, - ConstantInt::get(Type::Int8Ty,24),"bswap.1", IP); + Value *Tmp4 = BinaryOperator::create(Instruction::Shl, V, + ConstantInt::get(V->getType(),24),"bswap.4", IP); + Value *Tmp3 = BinaryOperator::create(Instruction::Shl, V, + ConstantInt::get(V->getType(),8),"bswap.3",IP); + Value *Tmp2 = BinaryOperator::create(Instruction::LShr, V, + ConstantInt::get(V->getType(),8),"bswap.2",IP); + Value *Tmp1 = BinaryOperator::create(Instruction::LShr, V, + ConstantInt::get(V->getType(),24),"bswap.1", IP); Tmp3 = BinaryOperator::createAnd(Tmp3, ConstantInt::get(Type::Int32Ty, 0xFF0000), "bswap.and3", IP); @@ -146,22 +146,22 @@ static Value *LowerBSWAP(Value *V, Instruction *IP) { break; } case 64: { - Value *Tmp8 = new ShiftInst(Instruction::Shl, V, - ConstantInt::get(Type::Int8Ty,56),"bswap.8", IP); - Value *Tmp7 = new ShiftInst(Instruction::Shl, V, - ConstantInt::get(Type::Int8Ty,40),"bswap.7", IP); - Value *Tmp6 = new ShiftInst(Instruction::Shl, V, - ConstantInt::get(Type::Int8Ty,24),"bswap.6", IP); - Value *Tmp5 = new ShiftInst(Instruction::Shl, V, - ConstantInt::get(Type::Int8Ty,8),"bswap.5", IP); - Value* Tmp4 = new ShiftInst(Instruction::LShr, V, - ConstantInt::get(Type::Int8Ty,8),"bswap.4", IP); - Value* Tmp3 = new ShiftInst(Instruction::LShr, V, - ConstantInt::get(Type::Int8Ty,24),"bswap.3", IP); - Value* Tmp2 = new ShiftInst(Instruction::LShr, V, - ConstantInt::get(Type::Int8Ty,40),"bswap.2", IP); - Value* Tmp1 = new ShiftInst(Instruction::LShr, V, - ConstantInt::get(Type::Int8Ty,56),"bswap.1", IP); + Value *Tmp8 = BinaryOperator::create(Instruction::Shl, V, + ConstantInt::get(V->getType(),56),"bswap.8", IP); + Value *Tmp7 = BinaryOperator::create(Instruction::Shl, V, + ConstantInt::get(V->getType(),40),"bswap.7", IP); + Value *Tmp6 = BinaryOperator::create(Instruction::Shl, V, + ConstantInt::get(V->getType(),24),"bswap.6", IP); + Value *Tmp5 = BinaryOperator::create(Instruction::Shl, V, + ConstantInt::get(V->getType(),8),"bswap.5", IP); + Value* Tmp4 = BinaryOperator::create(Instruction::LShr, V, + ConstantInt::get(V->getType(),8),"bswap.4", IP); + Value* Tmp3 = BinaryOperator::create(Instruction::LShr, V, + ConstantInt::get(V->getType(),24),"bswap.3", IP); + Value* Tmp2 = BinaryOperator::create(Instruction::LShr, V, + ConstantInt::get(V->getType(),40),"bswap.2", IP); + Value* Tmp1 = BinaryOperator::create(Instruction::LShr, V, + ConstantInt::get(V->getType(),56),"bswap.1", IP); Tmp7 = BinaryOperator::createAnd(Tmp7, ConstantInt::get(Type::Int64Ty, 0xFF000000000000ULL), @@ -210,8 +210,8 @@ static Value *LowerCTPOP(Value *V, Instruction *IP) { for (unsigned i = 1, ct = 0; i != BitSize; i <<= 1, ++ct) { Value *MaskCst = ConstantInt::get(V->getType(), MaskValues[ct]); Value *LHS = BinaryOperator::createAnd(V, MaskCst, "cppop.and1", IP); - Value *VShift = new ShiftInst(Instruction::LShr, V, - ConstantInt::get(Type::Int8Ty, i), "ctpop.sh", IP); + Value *VShift = BinaryOperator::create(Instruction::LShr, V, + ConstantInt::get(V->getType(), i), "ctpop.sh", IP); Value *RHS = BinaryOperator::createAnd(VShift, MaskCst, "cppop.and2", IP); V = BinaryOperator::createAdd(LHS, RHS, "ctpop.step", IP); } @@ -225,8 +225,8 @@ static Value *LowerCTLZ(Value *V, Instruction *IP) { unsigned BitSize = V->getType()->getPrimitiveSizeInBits(); for (unsigned i = 1; i != BitSize; i <<= 1) { - Value *ShVal = ConstantInt::get(Type::Int8Ty, i); - ShVal = new ShiftInst(Instruction::LShr, V, ShVal, "ctlz.sh", IP); + Value *ShVal = ConstantInt::get(V->getType(), i); + ShVal = BinaryOperator::create(Instruction::LShr, V, ShVal, "ctlz.sh", IP); V = BinaryOperator::createOr(V, ShVal, "ctlz.step", IP); } diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index 8ce26281a3d..ad1f47c2dca 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -1420,7 +1420,10 @@ void SelectionDAGLowering::visitShift(User &I, unsigned Opcode) { SDOperand Op1 = getValue(I.getOperand(0)); SDOperand Op2 = getValue(I.getOperand(1)); - Op2 = DAG.getNode(ISD::ANY_EXTEND, TLI.getShiftAmountTy(), Op2); + if (TLI.getShiftAmountTy() < Op2.getValueType()) + Op2 = DAG.getNode(ISD::TRUNCATE, TLI.getShiftAmountTy(), Op2); + else if (TLI.getShiftAmountTy() > Op2.getValueType()) + Op2 = DAG.getNode(ISD::ANY_EXTEND, TLI.getShiftAmountTy(), Op2); setValue(&I, DAG.getNode(Opcode, Op1.getValueType(), Op1, Op2)); } diff --git a/lib/ExecutionEngine/Interpreter/Execution.cpp b/lib/ExecutionEngine/Interpreter/Execution.cpp index 2e36875e492..565915bb5a4 100644 --- a/lib/ExecutionEngine/Interpreter/Execution.cpp +++ b/lib/ExecutionEngine/Interpreter/Execution.cpp @@ -1275,7 +1275,7 @@ static GenericValue executeAShrInst(GenericValue Src1, GenericValue Src2, return Dest; } -void Interpreter::visitShl(ShiftInst &I) { +void Interpreter::visitShl(BinaryOperator &I) { ExecutionContext &SF = ECStack.back(); const Type *Ty = I.getOperand(0)->getType(); GenericValue Src1 = getOperandValue(I.getOperand(0), SF); @@ -1285,7 +1285,7 @@ void Interpreter::visitShl(ShiftInst &I) { SetValue(&I, Dest, SF); } -void Interpreter::visitLShr(ShiftInst &I) { +void Interpreter::visitLShr(BinaryOperator &I) { ExecutionContext &SF = ECStack.back(); const Type *Ty = I.getOperand(0)->getType(); GenericValue Src1 = getOperandValue(I.getOperand(0), SF); @@ -1295,7 +1295,7 @@ void Interpreter::visitLShr(ShiftInst &I) { SetValue(&I, Dest, SF); } -void Interpreter::visitAShr(ShiftInst &I) { +void Interpreter::visitAShr(BinaryOperator &I) { ExecutionContext &SF = ECStack.back(); const Type *Ty = I.getOperand(0)->getType(); GenericValue Src1 = getOperandValue(I.getOperand(0), SF); diff --git a/lib/ExecutionEngine/Interpreter/Interpreter.h b/lib/ExecutionEngine/Interpreter/Interpreter.h index 3007b0adb2a..a8deb01b21c 100644 --- a/lib/ExecutionEngine/Interpreter/Interpreter.h +++ b/lib/ExecutionEngine/Interpreter/Interpreter.h @@ -165,9 +165,10 @@ public: void visitUnwindInst(UnwindInst &I); void visitUnreachableInst(UnreachableInst &I); - void visitShl(ShiftInst &I); - void visitLShr(ShiftInst &I); - void visitAShr(ShiftInst &I); + void visitShl(BinaryOperator &I); + void visitLShr(BinaryOperator &I); + void visitAShr(BinaryOperator &I); + void visitVAArgInst(VAArgInst &I); void visitInstruction(Instruction &I) { cerr << I; diff --git a/lib/Makefile b/lib/Makefile index 7a05dfd133a..2440dd48068 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -8,7 +8,7 @@ ##===----------------------------------------------------------------------===## LEVEL = .. -PARALLEL_DIRS = VMCore Analysis Transforms AsmParser Bytecode CodeGen Target \ +PARALLEL_DIRS = VMCore AsmParser Bytecode Analysis Transforms CodeGen Target \ ExecutionEngine Debugger Linker include $(LEVEL)/Makefile.common diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp index 785e7643e4f..6116bcdd765 100644 --- a/lib/Target/CBackend/CBackend.cpp +++ b/lib/Target/CBackend/CBackend.cpp @@ -225,7 +225,6 @@ namespace { void visitSelectInst(SelectInst &I); void visitCallInst (CallInst &I); void visitInlineAsm(CallInst &I); - void visitShiftInst(ShiftInst &I) { visitBinaryOperator(I); } void visitMallocInst(MallocInst &I); void visitAllocaInst(AllocaInst &I); @@ -2160,18 +2159,18 @@ void CWriter::visitBinaryOperator(Instruction &I) { writeOperandWithCast(I.getOperand(0), I.getOpcode()); switch (I.getOpcode()) { - case Instruction::Add: Out << " + "; break; - case Instruction::Sub: Out << " - "; break; - case Instruction::Mul: Out << '*'; break; + case Instruction::Add: Out << " + "; break; + case Instruction::Sub: Out << " - "; break; + case Instruction::Mul: Out << " * "; break; case Instruction::URem: case Instruction::SRem: - case Instruction::FRem: Out << '%'; break; + case Instruction::FRem: Out << " % "; break; case Instruction::UDiv: case Instruction::SDiv: - case Instruction::FDiv: Out << '/'; break; - case Instruction::And: Out << " & "; break; - case Instruction::Or: Out << " | "; break; - case Instruction::Xor: Out << " ^ "; break; + case Instruction::FDiv: Out << " / "; break; + case Instruction::And: Out << " & "; break; + case Instruction::Or: Out << " | "; break; + case Instruction::Xor: Out << " ^ "; break; case Instruction::Shl : Out << " << "; break; case Instruction::LShr: case Instruction::AShr: Out << " >> "; break; diff --git a/lib/Transforms/ExprTypeConvert.cpp b/lib/Transforms/ExprTypeConvert.cpp index 259aa67011c..2b620aff789 100644 --- a/lib/Transforms/ExprTypeConvert.cpp +++ b/lib/Transforms/ExprTypeConvert.cpp @@ -251,8 +251,8 @@ Value *llvm::ConvertExpressionToType(Value *V, const Type *Ty, case Instruction::Shl: case Instruction::LShr: case Instruction::AShr: - Res = new ShiftInst(cast(I)->getOpcode(), Dummy, - I->getOperand(1), Name); + Res = BinaryOperator::create(cast(I)->getOpcode(), Dummy, + I->getOperand(1), Name); VMC.ExprMap[I] = Res; Res->setOperand(0, ConvertExpressionToType(I->getOperand(0), Ty, VMC, TD)); break; @@ -472,9 +472,9 @@ static bool OperandConvertibleToType(User *U, Value *V, const Type *Ty, } return false; } + case Instruction::Shl: case Instruction::LShr: case Instruction::AShr: - case Instruction::Shl: if (I->getOperand(1) == V) return false; // Cannot change shift amount type if (!Ty->isInteger()) return false; return ValueConvertibleToType(I, Ty, CTMap, TD); @@ -747,8 +747,8 @@ static void ConvertOperandToType(User *U, Value *OldVal, Value *NewVal, case Instruction::LShr: case Instruction::AShr: assert(I->getOperand(0) == OldVal); - Res = new ShiftInst(cast(I)->getOpcode(), NewVal, - I->getOperand(1), Name); + Res = BinaryOperator::create(cast(I)->getOpcode(), NewVal, + I->getOperand(1), Name); break; case Instruction::Free: // Free can free any pointer type! diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp index 342a481af74..d57047bc32f 100644 --- a/lib/Transforms/IPO/GlobalOpt.cpp +++ b/lib/Transforms/IPO/GlobalOpt.cpp @@ -1728,10 +1728,6 @@ static bool EvaluateFunction(Function *F, Constant *&RetVal, InstResult = ConstantExpr::get(BO->getOpcode(), getVal(Values, BO->getOperand(0)), getVal(Values, BO->getOperand(1))); - } else if (ShiftInst *SI = dyn_cast(CurInst)) { - InstResult = ConstantExpr::get(SI->getOpcode(), - getVal(Values, SI->getOperand(0)), - getVal(Values, SI->getOperand(1))); } else if (CmpInst *CI = dyn_cast(CurInst)) { InstResult = ConstantExpr::getCompare(CI->getPredicate(), getVal(Values, CI->getOperand(0)), diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp index 9fbcdc182db..4aa92ec6d4f 100644 --- a/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/lib/Transforms/Scalar/InstructionCombining.cpp @@ -145,15 +145,18 @@ namespace { Instruction *visitAnd(BinaryOperator &I); Instruction *visitOr (BinaryOperator &I); Instruction *visitXor(BinaryOperator &I); + Instruction *visitShl(BinaryOperator &I); + Instruction *visitAShr(BinaryOperator &I); + Instruction *visitLShr(BinaryOperator &I); + Instruction *commonShiftTransforms(BinaryOperator &I); Instruction *visitFCmpInst(FCmpInst &I); Instruction *visitICmpInst(ICmpInst &I); Instruction *visitICmpInstWithCastAndCast(ICmpInst &ICI); Instruction *FoldGEPICmp(User *GEPLHS, Value *RHS, ICmpInst::Predicate Cond, Instruction &I); - Instruction *visitShiftInst(ShiftInst &I); Instruction *FoldShiftByConstant(Value *Op0, ConstantInt *Op1, - ShiftInst &I); + BinaryOperator &I); Instruction *commonCastTransforms(CastInst &CI); Instruction *commonIntCastTransforms(CastInst &CI); Instruction *visitTrunc(CastInst &CI); @@ -1197,8 +1200,8 @@ bool InstCombiner::SimplifyDemandedBits(Value *V, uint64_t DemandedMask, // the shift amount is >= the size of the datatype, which is undefined. if (DemandedMask == 1) { // Perform the logical shift right. - Value *NewVal = new ShiftInst(Instruction::LShr, I->getOperand(0), - I->getOperand(1), I->getName()); + Value *NewVal = BinaryOperator::create(Instruction::LShr, + I->getOperand(0), I->getOperand(1), I->getName()); InsertNewInstBefore(cast(NewVal), *I); return UpdateValueUsesWith(I, NewVal); } @@ -1229,8 +1232,8 @@ bool InstCombiner::SimplifyDemandedBits(Value *V, uint64_t DemandedMask, // are demanded, turn this into an unsigned shift right. if ((KnownZero & SignBit) || (HighBits & ~DemandedMask) == HighBits) { // Perform the logical shift right. - Value *NewVal = new ShiftInst(Instruction::LShr, I->getOperand(0), - SA, I->getName()); + Value *NewVal = BinaryOperator::create(Instruction::LShr, + I->getOperand(0), SA, I->getName()); InsertNewInstBefore(cast(NewVal), *I); return UpdateValueUsesWith(I, NewVal); } else if (KnownOne & SignBit) { // New bits are known one. @@ -1546,8 +1549,8 @@ struct AddRHS { AddRHS(Value *rhs) : RHS(rhs) {} bool shouldApply(Value *LHS) const { return LHS == RHS; } Instruction *apply(BinaryOperator &Add) const { - return new ShiftInst(Instruction::Shl, Add.getOperand(0), - ConstantInt::get(Type::Int8Ty, 1)); + return BinaryOperator::create(Instruction::Shl, Add.getOperand(0), + ConstantInt::get(Add.getType(), 1)); } }; @@ -1595,8 +1598,6 @@ static Value *FoldOperationIntoSelectOperand(Instruction &I, Value *SO, else if (CmpInst *CI = dyn_cast(&I)) New = CmpInst::create(CI->getOpcode(), CI->getPredicate(), Op0, Op1, SO->getName()+".cmp"); - else if (ShiftInst *SI = dyn_cast(&I)) - New = new ShiftInst(SI->getOpcode(), Op0, Op1, SO->getName()+".sh"); else { assert(0 && "Unknown binary instruction type!"); abort(); @@ -1688,10 +1689,6 @@ Instruction *InstCombiner::FoldOpIntoPhi(Instruction &I) { CI->getPredicate(), PN->getIncomingValue(i), C, "phitmp", NonConstBB->getTerminator()); - else if (ShiftInst *SI = dyn_cast(&I)) - InV = new ShiftInst(SI->getOpcode(), - PN->getIncomingValue(i), C, "phitmp", - NonConstBB->getTerminator()); else assert(0 && "Unknown binop!"); @@ -1958,15 +1955,15 @@ Instruction *InstCombiner::visitSub(BinaryOperator &I) { // -(X >>u 31) -> (X >>s 31) // -(X >>s 31) -> (X >>u 31) if (C->isNullValue()) { - if (ShiftInst *SI = dyn_cast(Op1)) + if (BinaryOperator *SI = dyn_cast(Op1)) if (SI->getOpcode() == Instruction::LShr) { if (ConstantInt *CU = dyn_cast(SI->getOperand(1))) { // Check to see if we are shifting out everything but the sign bit. if (CU->getZExtValue() == SI->getType()->getPrimitiveSizeInBits()-1) { // Ok, the transformation is safe. Insert AShr. - return new ShiftInst(Instruction::AShr, SI->getOperand(0), CU, - SI->getName()); + return BinaryOperator::create(Instruction::AShr, + SI->getOperand(0), CU, SI->getName()); } } } @@ -1976,8 +1973,8 @@ Instruction *InstCombiner::visitSub(BinaryOperator &I) { if (CU->getZExtValue() == SI->getType()->getPrimitiveSizeInBits()-1) { // Ok, the transformation is safe. Insert LShr. - return new ShiftInst(Instruction::LShr, SI->getOperand(0), CU, - SI->getName()); + return BinaryOperator::create(Instruction::LShr, + SI->getOperand(0), CU, SI->getName()); } } } @@ -2113,7 +2110,7 @@ Instruction *InstCombiner::visitMul(BinaryOperator &I) { if (ConstantInt *CI = dyn_cast(Op1)) { // ((X << C1)*C2) == (X * (C2 << C1)) - if (ShiftInst *SI = dyn_cast(Op0)) + if (BinaryOperator *SI = dyn_cast(Op0)) if (SI->getOpcode() == Instruction::Shl) if (Constant *ShOp = dyn_cast(SI->getOperand(1))) return BinaryOperator::createMul(SI->getOperand(0), @@ -2129,8 +2126,8 @@ Instruction *InstCombiner::visitMul(BinaryOperator &I) { int64_t Val = (int64_t)cast(CI)->getZExtValue(); if (isPowerOf2_64(Val)) { // Replace X*(2^C) with X << C uint64_t C = Log2_64(Val); - return new ShiftInst(Instruction::Shl, Op0, - ConstantInt::get(Type::Int8Ty, C)); + return BinaryOperator::create(Instruction::Shl, Op0, + ConstantInt::get(Op0->getType(), C)); } } else if (ConstantFP *Op1F = dyn_cast(Op1)) { if (Op1F->isNullValue()) @@ -2191,10 +2188,11 @@ Instruction *InstCombiner::visitMul(BinaryOperator &I) { if (isa(SCIOp1) && isSignBitCheck(SCI->getPredicate(), cast(SCIOp1))) { // Shift the X value right to turn it into "all signbits". - Constant *Amt = ConstantInt::get(Type::Int8Ty, + Constant *Amt = ConstantInt::get(SCIOp0->getType(), SCOpTy->getPrimitiveSizeInBits()-1); Value *V = - InsertNewInstBefore(new ShiftInst(Instruction::AShr, SCIOp0, Amt, + InsertNewInstBefore( + BinaryOperator::create(Instruction::AShr, SCIOp0, Amt, BoolCast->getOperand(0)->getName()+ ".mask"), I); @@ -2324,13 +2322,13 @@ Instruction *InstCombiner::visitUDiv(BinaryOperator &I) { if (uint64_t Val = C->getZExtValue()) // Don't break X / 0 if (isPowerOf2_64(Val)) { uint64_t ShiftAmt = Log2_64(Val); - return new ShiftInst(Instruction::LShr, Op0, - ConstantInt::get(Type::Int8Ty, ShiftAmt)); + return BinaryOperator::create(Instruction::LShr, Op0, + ConstantInt::get(Op0->getType(), ShiftAmt)); } } // X udiv (C1 << N), where C1 is "1< X >> (N+C2) - if (ShiftInst *RHSI = dyn_cast(I.getOperand(1))) { + if (BinaryOperator *RHSI = dyn_cast(I.getOperand(1))) { if (RHSI->getOpcode() == Instruction::Shl && isa(RHSI->getOperand(0))) { uint64_t C1 = cast(RHSI->getOperand(0))->getZExtValue(); @@ -2341,7 +2339,7 @@ Instruction *InstCombiner::visitUDiv(BinaryOperator &I) { Constant *C2V = ConstantInt::get(NTy, C2); N = InsertNewInstBefore(BinaryOperator::createAdd(N, C2V, "tmp"), I); } - return new ShiftInst(Instruction::LShr, Op0, N); + return BinaryOperator::create(Instruction::LShr, Op0, N); } } } @@ -2357,15 +2355,15 @@ Instruction *InstCombiner::visitUDiv(BinaryOperator &I) { // Compute the shift amounts unsigned TSA = Log2_64(TVA), FSA = Log2_64(FVA); // Construct the "on true" case of the select - Constant *TC = ConstantInt::get(Type::Int8Ty, TSA); - Instruction *TSI = - new ShiftInst(Instruction::LShr, Op0, TC, SI->getName()+".t"); + Constant *TC = ConstantInt::get(Op0->getType(), TSA); + Instruction *TSI = BinaryOperator::create(Instruction::LShr, + Op0, TC, SI->getName()+".t"); TSI = InsertNewInstBefore(TSI, I); // Construct the "on false" case of the select - Constant *FC = ConstantInt::get(Type::Int8Ty, FSA); - Instruction *FSI = - new ShiftInst(Instruction::LShr, Op0, FC, SI->getName()+".f"); + Constant *FC = ConstantInt::get(Op0->getType(), FSA); + Instruction *FSI = BinaryOperator::create(Instruction::LShr, + Op0, FC, SI->getName()+".f"); FSI = InsertNewInstBefore(FSI, I); // construct the select instruction and return it. @@ -2437,7 +2435,7 @@ static Constant *GetFactor(Value *V) { unsigned Zeros = CountTrailingZeros_64(RHS->getZExtValue()); if (Zeros != V->getType()->getPrimitiveSizeInBits()) return ConstantExpr::getShl(Result, - ConstantInt::get(Type::Int8Ty, Zeros)); + ConstantInt::get(Result->getType(), Zeros)); } } else if (CastInst *CI = dyn_cast(I)) { // Only handle int->int casts. @@ -2801,14 +2799,14 @@ struct FoldICmpLogical { // OptAndOp - This handles expressions of the form ((val OP C1) & C2). Where // the Op parameter is 'OP', OpRHS is 'C1', and AndRHS is 'C2'. Op is -// guaranteed to be either a shift instruction or a binary operator. +// guaranteed to be a binary operator. Instruction *InstCombiner::OptAndOp(Instruction *Op, ConstantInt *OpRHS, ConstantInt *AndRHS, BinaryOperator &TheAnd) { Value *X = Op->getOperand(0); Constant *Together = 0; - if (!isa(Op)) + if (!Op->isShift()) Together = ConstantExpr::getAnd(AndRHS, OpRHS); switch (Op->getOpcode()) { @@ -2917,8 +2915,9 @@ Instruction *InstCombiner::OptAndOp(Instruction *Op, // (Val ashr C1) & C2 -> (Val lshr C1) & C2 // Make the argument unsigned. Value *ShVal = Op->getOperand(0); - ShVal = InsertNewInstBefore(new ShiftInst(Instruction::LShr, ShVal, - OpRHS, Op->getName()), TheAnd); + ShVal = InsertNewInstBefore( + BinaryOperator::create(Instruction::LShr, ShVal, OpRHS, + Op->getName()), TheAnd); return BinaryOperator::createAnd(ShVal, AndRHS, TheAnd.getName()); } } @@ -3082,7 +3081,7 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) { uint64_t NotAndRHS = AndRHSMask^TypeMask; // Optimize a variety of ((val OP C1) & C2) combinations... - if (isa(Op0) || isa(Op0)) { + if (isa(Op0)) { Instruction *Op0I = cast(Op0); Value *Op0LHS = Op0I->getOperand(0); Value *Op0RHS = Op0I->getOperand(1); @@ -3391,16 +3390,17 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) { } // (X >> Z) & (Y >> Z) -> (X&Y) >> Z for all shifts. - if (ShiftInst *SI1 = dyn_cast(Op1)) { - if (ShiftInst *SI0 = dyn_cast(Op0)) - if (SI0->getOpcode() == SI1->getOpcode() && + if (BinaryOperator *SI1 = dyn_cast(Op1)) { + if (BinaryOperator *SI0 = dyn_cast(Op0)) + if (SI0->isShift() && SI0->getOpcode() == SI1->getOpcode() && SI0->getOperand(1) == SI1->getOperand(1) && (SI0->hasOneUse() || SI1->hasOneUse())) { Instruction *NewOp = InsertNewInstBefore(BinaryOperator::createAnd(SI0->getOperand(0), SI1->getOperand(0), SI0->getName()), I); - return new ShiftInst(SI1->getOpcode(), NewOp, SI1->getOperand(1)); + return BinaryOperator::create(SI1->getOpcode(), NewOp, + SI1->getOperand(1)); } } @@ -3421,7 +3421,7 @@ static bool CollectBSwapParts(Value *V, std::vector &ByteValues) { // If this is a shift by a constant int, and it is "24", then its operand // defines a byte. We only handle unsigned types here. - if (isa(I) && isa(I->getOperand(1))) { + if (I->isShift() && isa(I->getOperand(1))) { // Not shifting the entire input by N-1 bytes? if (cast(I->getOperand(1))->getZExtValue() != 8*(ByteValues.size()-1)) @@ -3488,7 +3488,7 @@ static bool CollectBSwapParts(Value *V, std::vector &ByteValues) { /// MatchBSwap - Given an OR instruction, check to see if this is a bswap idiom. /// If so, insert the new bswap intrinsic and return it. Instruction *InstCombiner::MatchBSwap(BinaryOperator &I) { - // We can only handle bswap of unsigned integers, and cannot bswap one byte. + // We cannot bswap one byte. if (I.getType() == Type::Int8Ty) return 0; @@ -3647,16 +3647,17 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) { } // (X >> Z) | (Y >> Z) -> (X|Y) >> Z for all shifts. - if (ShiftInst *SI1 = dyn_cast(Op1)) { - if (ShiftInst *SI0 = dyn_cast(Op0)) - if (SI0->getOpcode() == SI1->getOpcode() && + if (BinaryOperator *SI1 = dyn_cast(Op1)) { + if (BinaryOperator *SI0 = dyn_cast(Op0)) + if (SI0->isShift() && SI0->getOpcode() == SI1->getOpcode() && SI0->getOperand(1) == SI1->getOperand(1) && (SI0->hasOneUse() || SI1->hasOneUse())) { Instruction *NewOp = InsertNewInstBefore(BinaryOperator::createOr(SI0->getOperand(0), SI1->getOperand(0), SI0->getName()), I); - return new ShiftInst(SI1->getOpcode(), NewOp, SI1->getOperand(1)); + return BinaryOperator::create(SI1->getOpcode(), NewOp, + SI1->getOperand(1)); } } @@ -4025,16 +4026,17 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) { } // (X >> Z) ^ (Y >> Z) -> (X^Y) >> Z for all shifts. - if (ShiftInst *SI1 = dyn_cast(Op1)) { - if (ShiftInst *SI0 = dyn_cast(Op0)) - if (SI0->getOpcode() == SI1->getOpcode() && + if (BinaryOperator *SI1 = dyn_cast(Op1)) { + if (BinaryOperator *SI0 = dyn_cast(Op0)) + if (SI0->isShift() && SI0->getOpcode() == SI1->getOpcode() && SI0->getOperand(1) == SI1->getOperand(1) && (SI0->hasOneUse() || SI1->hasOneUse())) { Instruction *NewOp = InsertNewInstBefore(BinaryOperator::createXor(SI0->getOperand(0), SI1->getOperand(0), SI0->getName()), I); - return new ShiftInst(SI1->getOpcode(), NewOp, SI1->getOperand(1)); + return BinaryOperator::create(SI1->getOpcode(), NewOp, + SI1->getOperand(1)); } } @@ -4599,13 +4601,18 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { // could exist), turn it into (X & (C2 << C1)) != (C3 << C1). This // happens a LOT in code produced by the C front-end, for bitfield // access. - ShiftInst *Shift = dyn_cast(LHSI->getOperand(0)); + BinaryOperator *Shift = dyn_cast(LHSI->getOperand(0)); + if (Shift && !Shift->isShift()) + Shift = 0; // Check to see if there is a noop-cast between the shift and the and. if (!Shift) { if (CastInst *CI = dyn_cast(LHSI->getOperand(0))) - if (CI->getOpcode() == Instruction::BitCast) - Shift = dyn_cast(CI->getOperand(0)); + if (CI->getOpcode() == Instruction::BitCast) { + Shift = dyn_cast(CI->getOperand(0)); + if (Shift && !Shift->isShift()) + Shift = 0; + } } ConstantInt *ShAmt; @@ -4624,7 +4631,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { int ShAmtVal = Ty->getPrimitiveSizeInBits()-ShAmt->getZExtValue(); if (ShAmtVal < 0) ShAmtVal = 0; // Out of range shift. - Constant *OShAmt = ConstantInt::get(Type::Int8Ty, ShAmtVal); + Constant *OShAmt = ConstantInt::get(AndTy, ShAmtVal); Constant *ShVal = ConstantExpr::getShl(ConstantInt::getAllOnesValue(AndTy), OShAmt); @@ -4674,12 +4681,12 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) { // Compute C << Y. Value *NS; if (Shift->getOpcode() == Instruction::LShr) { - NS = new ShiftInst(Instruction::Shl, AndCST, Shift->getOperand(1), - "tmp"); + NS = BinaryOperator::create(Instruction::Shl, AndCST, + Shift->getOperand(1), "tmp"); } else { // Insert a logical shift. - NS = new ShiftInst(Instruction::LShr, AndCST, - Shift->getOperand(1), "tmp"); + NS = BinaryOperator::create(Instruction::LShr, AndCST, + Shift->getOperand(1), "tmp"); } InsertNewInstBefore(cast(NS), I); @@ -5368,13 +5375,25 @@ Instruction *InstCombiner::visitICmpInstWithCastAndCast(ICmpInst &ICI) { } } -Instruction *InstCombiner::visitShiftInst(ShiftInst &I) { - assert(I.getOperand(1)->getType() == Type::Int8Ty); +Instruction *InstCombiner::visitShl(BinaryOperator &I) { + return commonShiftTransforms(I); +} + +Instruction *InstCombiner::visitLShr(BinaryOperator &I) { + return commonShiftTransforms(I); +} + +Instruction *InstCombiner::visitAShr(BinaryOperator &I) { + return commonShiftTransforms(I); +} + +Instruction *InstCombiner::commonShiftTransforms(BinaryOperator &I) { + assert(I.getOperand(1)->getType() == I.getOperand(0)->getType()); Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); // shl X, 0 == X and shr X, 0 == X // shl 0, X == 0 and shr 0, X == 0 - if (Op1 == Constant::getNullValue(Type::Int8Ty) || + if (Op1 == Constant::getNullValue(Op1->getType()) || Op0 == Constant::getNullValue(Op0->getType())) return ReplaceInstUsesWith(I, Op0); @@ -5407,7 +5426,7 @@ Instruction *InstCombiner::visitShiftInst(ShiftInst &I) { if (I.isArithmeticShift()) { if (MaskedValueIsZero(Op0, 1ULL << (I.getType()->getPrimitiveSizeInBits()-1))) { - return new ShiftInst(Instruction::LShr, Op0, Op1, I.getName()); + return BinaryOperator::create(Instruction::LShr, Op0, Op1, I.getName()); } } @@ -5418,7 +5437,7 @@ Instruction *InstCombiner::visitShiftInst(ShiftInst &I) { } Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1, - ShiftInst &I) { + BinaryOperator &I) { bool isLeftShift = I.getOpcode() == Instruction::Shl; bool isSignedShift = I.getOpcode() == Instruction::AShr; bool isUnsignedShift = !isSignedShift; @@ -5474,7 +5493,7 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1, if (isLeftShift && Op0BO->getOperand(1)->hasOneUse() && match(Op0BO->getOperand(1), m_Shr(m_Value(V1), m_ConstantInt(CC))) && CC == Op1) { - Instruction *YS = new ShiftInst(Instruction::Shl, + Instruction *YS = BinaryOperator::create(Instruction::Shl, Op0BO->getOperand(0), Op1, Op0BO->getName()); InsertNewInstBefore(YS, I); // (Y << C) @@ -5489,13 +5508,12 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1, // Turn (Y + ((X >> C) & CC)) << C -> ((X & (CC << C)) + (Y << C)) if (isLeftShift && Op0BO->getOperand(1)->hasOneUse() && - match(Op0BO->getOperand(1), - m_And(m_Shr(m_Value(V1), m_Value(V2)), - m_ConstantInt(CC))) && V2 == Op1 && + match(Op0BO->getOperand(1), m_And(m_Shr(m_Value(V1), m_Value(V2)), + m_ConstantInt(CC))) && V2 == Op1 && cast(Op0BO->getOperand(1))->getOperand(0)->hasOneUse()) { - Instruction *YS = new ShiftInst(Instruction::Shl, - Op0BO->getOperand(0), Op1, - Op0BO->getName()); + Instruction *YS = BinaryOperator::create(Instruction::Shl, + Op0BO->getOperand(0), Op1, + Op0BO->getName()); InsertNewInstBefore(YS, I); // (Y << C) Instruction *XM = BinaryOperator::createAnd(V1, ConstantExpr::getShl(CC, Op1), @@ -5511,9 +5529,9 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1, if (isLeftShift && Op0BO->getOperand(0)->hasOneUse() && match(Op0BO->getOperand(0), m_Shr(m_Value(V1), m_ConstantInt(CC))) && CC == Op1) { - Instruction *YS = new ShiftInst(Instruction::Shl, - Op0BO->getOperand(1), Op1, - Op0BO->getName()); + Instruction *YS = BinaryOperator::create(Instruction::Shl, + Op0BO->getOperand(1), Op1, + Op0BO->getName()); InsertNewInstBefore(YS, I); // (Y << C) Instruction *X = BinaryOperator::create(Op0BO->getOpcode(), V1, YS, @@ -5531,9 +5549,9 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1, m_ConstantInt(CC))) && V2 == Op1 && cast(Op0BO->getOperand(0)) ->getOperand(0)->hasOneUse()) { - Instruction *YS = new ShiftInst(Instruction::Shl, - Op0BO->getOperand(1), Op1, - Op0BO->getName()); + Instruction *YS = BinaryOperator::create(Instruction::Shl, + Op0BO->getOperand(1), Op1, + Op0BO->getName()); InsertNewInstBefore(YS, I); // (Y << C) Instruction *XM = BinaryOperator::createAnd(V1, ConstantExpr::getShl(CC, Op1), @@ -5582,8 +5600,8 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1, Constant *NewRHS = ConstantExpr::get(I.getOpcode(), Op0C, Op1); Instruction *NewShift = - new ShiftInst(I.getOpcode(), Op0BO->getOperand(0), Op1, - Op0BO->getName()); + BinaryOperator::create(I.getOpcode(), Op0BO->getOperand(0), Op1, + Op0BO->getName()); Op0BO->setName(""); InsertNewInstBefore(NewShift, I); @@ -5595,15 +5613,15 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1, } // Find out if this is a shift of a shift by a constant. - ShiftInst *ShiftOp = 0; - if (ShiftInst *Op0SI = dyn_cast(Op0)) - ShiftOp = Op0SI; - else if (BitCastInst *CI = dyn_cast(Op0)) { - // If this is a noop-integer cast of a shift instruction, use the shift. - if (isa(CI->getOperand(0))) { - ShiftOp = cast(CI->getOperand(0)); - } - } + BinaryOperator *ShiftOp = dyn_cast(Op0); + if (ShiftOp && !ShiftOp->isShift()) + ShiftOp = 0; + if (!ShiftOp) + if (BitCastInst *CI = dyn_cast(Op0)) + // If this is a noop-integer cast of a shift instruction, use the shift. + if (BinaryOperator *SI = dyn_cast(CI->getOperand(0))) + if (SI->isShift()) + ShiftOp = SI; if (ShiftOp && isa(ShiftOp->getOperand(1))) { // Find the operands and properties of the input shift. Note that the @@ -5631,8 +5649,9 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1, Amt = Op0->getType()->getPrimitiveSizeInBits(); Value *Op = ShiftOp->getOperand(0); - ShiftInst *ShiftResult = new ShiftInst(I.getOpcode(), Op, - ConstantInt::get(Type::Int8Ty, Amt)); + BinaryOperator *ShiftResult = + BinaryOperator::create(I.getOpcode(), Op, + ConstantInt::get(Op->getType(), Amt)); if (I.getType() == ShiftResult->getType()) return ShiftResult; InsertNewInstBefore(ShiftResult, I); @@ -5660,21 +5679,25 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1, if (ShiftAmt1 == ShiftAmt2) { return ReplaceInstUsesWith(I, Mask); // (A << c) >> c === A & c2 } else if (ShiftAmt1 < ShiftAmt2) { - return new ShiftInst(I.getOpcode(), Mask, - ConstantInt::get(Type::Int8Ty, ShiftAmt2-ShiftAmt1)); + return BinaryOperator::create(I.getOpcode(), Mask, + ConstantInt::get(Mask->getType(), + ShiftAmt2-ShiftAmt1)); } else if (isShiftOfUnsignedShift || isShiftOfLeftShift) { if (isShiftOfUnsignedShift && !isShiftOfLeftShift && isSignedShift) { - return new ShiftInst(Instruction::LShr, Mask, - ConstantInt::get(Type::Int8Ty, ShiftAmt1-ShiftAmt2)); + return BinaryOperator::create(Instruction::LShr, Mask, + ConstantInt::get(Mask->getType(), + ShiftAmt1-ShiftAmt2)); } else { - return new ShiftInst(ShiftOp->getOpcode(), Mask, - ConstantInt::get(Type::Int8Ty, ShiftAmt1-ShiftAmt2)); + return BinaryOperator::create(ShiftOp->getOpcode(), Mask, + ConstantInt::get(Mask->getType(), + ShiftAmt1-ShiftAmt2)); } } else { // (X >>s C1) << C2 where C1 > C2 === (X >>s (C1-C2)) & mask Instruction *Shift = - new ShiftInst(ShiftOp->getOpcode(), Mask, - ConstantInt::get(Type::Int8Ty, ShiftAmt1-ShiftAmt2)); + BinaryOperator::create(ShiftOp->getOpcode(), Mask, + ConstantInt::get(Mask->getType(), + ShiftAmt1-ShiftAmt2)); InsertNewInstBefore(Shift, I); C = ConstantInt::getAllOnesValue(Shift->getType()); @@ -5928,8 +5951,8 @@ Value *InstCombiner::EvaluateInDifferentType(Value *V, const Type *Ty, case Instruction::LShr: case Instruction::Shl: { Value *LHS = EvaluateInDifferentType(I->getOperand(0), Ty, isSigned); - Res = new ShiftInst((Instruction::OtherOps)I->getOpcode(), LHS, - I->getOperand(1), I->getName()); + Res = BinaryOperator::create(Instruction::BinaryOps(I->getOpcode()), LHS, + I->getOperand(1), I->getName()); break; } case Instruction::Trunc: @@ -6167,7 +6190,8 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) { Instruction::CastOps opcode = (DestBitSize == SrcBitSize ? Instruction::BitCast : Instruction::Trunc); Value *Op0c = InsertOperandCastBefore(opcode, Op0, DestTy, SrcI); - return new ShiftInst(Instruction::Shl, Op0c, Op1); + Value *Op1c = InsertOperandCastBefore(opcode, Op1, DestTy, SrcI); + return BinaryOperator::create(Instruction::Shl, Op0c, Op1c); } break; case Instruction::AShr: @@ -6179,7 +6203,7 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) { unsigned ShiftAmt = cast(Op1)->getZExtValue(); if (SrcBitSize > ShiftAmt && SrcBitSize-ShiftAmt >= DestBitSize) { // Insert the new logical shift right. - return new ShiftInst(Instruction::LShr, Op0, Op1); + return BinaryOperator::create(Instruction::LShr, Op0, Op1); } } break; @@ -6225,9 +6249,9 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) { // Perform a logical shr by shiftamt. // Insert the shift to put the result in the low bit. In = InsertNewInstBefore( - new ShiftInst(Instruction::LShr, In, - ConstantInt::get(Type::Int8Ty, ShiftAmt), - In->getName()+".lobit"), CI); + BinaryOperator::create(Instruction::LShr, In, + ConstantInt::get(In->getType(), ShiftAmt), + In->getName()+".lobit"), CI); } if ((Op1CV != 0) == isNE) { // Toggle the low bit. @@ -6274,8 +6298,10 @@ Instruction *InstCombiner::visitTrunc(CastInst &CI) { // Okay, we can shrink this. Truncate the input, then return a new // shift. - Value *V = InsertCastBefore(Instruction::Trunc, SrcIOp0, Ty, CI); - return new ShiftInst(Instruction::LShr, V, SrcI->getOperand(1)); + Value *V1 = InsertCastBefore(Instruction::Trunc, SrcIOp0, Ty, CI); + Value *V2 = InsertCastBefore(Instruction::Trunc, SrcI->getOperand(1), + Ty, CI); + return BinaryOperator::create(Instruction::LShr, V1, V2); } } else { // This is a variable shr. @@ -6285,9 +6311,9 @@ Instruction *InstCombiner::visitTrunc(CastInst &CI) { if (CI.getType() == Type::Int1Ty && SrcI->hasOneUse()) { Value *One = ConstantInt::get(SrcI->getType(), 1); - Value *V = InsertNewInstBefore(new ShiftInst(Instruction::Shl, One, - SrcI->getOperand(1), - "tmp"), CI); + Value *V = InsertNewInstBefore( + BinaryOperator::create(Instruction::Shl, One, SrcI->getOperand(1), + "tmp"), CI); V = InsertNewInstBefore(BinaryOperator::createAnd(V, SrcI->getOperand(0), "tmp"), CI); @@ -6491,11 +6517,10 @@ static Constant *GetSelectFoldableConstant(Instruction *I) { case Instruction::Sub: case Instruction::Or: case Instruction::Xor: - return Constant::getNullValue(I->getType()); case Instruction::Shl: case Instruction::LShr: case Instruction::AShr: - return Constant::getNullValue(Type::Int8Ty); + return Constant::getNullValue(I->getType()); case Instruction::And: return ConstantInt::getAllOnesValue(I->getType()); case Instruction::Mul: @@ -6525,8 +6550,8 @@ Instruction *InstCombiner::FoldSelectOpOp(SelectInst &SI, Instruction *TI, TI->getType()); } - // Only handle binary, compare and shift operators here. - if (!isa(TI) && !isa(TI)) + // Only handle binary operators here. + if (!isa(TI)) return 0; // Figure out if the operations have any operands in common. @@ -6570,11 +6595,13 @@ Instruction *InstCombiner::FoldSelectOpOp(SelectInst &SI, Instruction *TI, return BinaryOperator::create(BO->getOpcode(), NewSI, MatchOp); } - assert(isa(TI) && "Should only have Shift here"); + assert(TI->isShift() && "Should only have Shift here"); if (MatchIsOpZero) - return new ShiftInst(cast(TI)->getOpcode(), MatchOp, NewSI); + return BinaryOperator::create(Instruction::BinaryOps(TI->getOpcode()), + MatchOp, NewSI); else - return new ShiftInst(cast(TI)->getOpcode(), NewSI, MatchOp); + return BinaryOperator::create(Instruction::BinaryOps(TI->getOpcode()), + NewSI, MatchOp); } Instruction *InstCombiner::visitSelectInst(SelectInst &SI) { @@ -6663,9 +6690,9 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) { // same width. Make an all-ones value by inserting a AShr. Value *X = IC->getOperand(0); unsigned Bits = X->getType()->getPrimitiveSizeInBits(); - Constant *ShAmt = ConstantInt::get(Type::Int8Ty, Bits-1); - Instruction *SRA = new ShiftInst(Instruction::AShr, X, - ShAmt, "ones"); + Constant *ShAmt = ConstantInt::get(X->getType(), Bits-1); + Instruction *SRA = BinaryOperator::create(Instruction::AShr, X, + ShAmt, "ones"); InsertNewInstBefore(SRA, SI); // Finally, convert to the type of the select RHS. We figure out @@ -6829,8 +6856,6 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) { InsertNewInstBefore(NewSel, SI); if (BinaryOperator *BO = dyn_cast(TVI)) return BinaryOperator::create(BO->getOpcode(), FalseVal, NewSel); - else if (ShiftInst *SI = dyn_cast(TVI)) - return new ShiftInst(SI->getOpcode(), FalseVal, NewSel); else { assert(0 && "Unknown instruction!!"); } @@ -6850,18 +6875,16 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) { if (OpToFold) { Constant *C = GetSelectFoldableConstant(FVI); - std::string Name = FVI->getName(); FVI->setName(""); + std::string Name = FVI->getName(); + FVI->setName(""); Instruction *NewSel = new SelectInst(SI.getCondition(), C, FVI->getOperand(2-OpToFold), Name); InsertNewInstBefore(NewSel, SI); if (BinaryOperator *BO = dyn_cast(FVI)) return BinaryOperator::create(BO->getOpcode(), TrueVal, NewSel); - else if (ShiftInst *SI = dyn_cast(FVI)) - return new ShiftInst(SI->getOpcode(), TrueVal, NewSel); - else { + else assert(0 && "Unknown instruction!!"); - } } } } @@ -7377,8 +7400,8 @@ bool InstCombiner::transformConstExprCastCall(CallSite CS) { /// and a single binop. Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) { Instruction *FirstInst = cast(PN.getIncomingValue(0)); - assert(isa(FirstInst) || isa(FirstInst) || - isa(FirstInst) || isa(FirstInst)); + assert(isa(FirstInst) || isa(FirstInst) || + isa(FirstInst)); unsigned Opc = FirstInst->getOpcode(); Value *LHSVal = FirstInst->getOperand(0); Value *RHSVal = FirstInst->getOperand(1); @@ -7452,8 +7475,6 @@ Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) { else if (CmpInst *CIOp = dyn_cast(FirstInst)) return CmpInst::create(CIOp->getOpcode(), CIOp->getPredicate(), LHSVal, RHSVal); - else if (ShiftInst *SI = dyn_cast(FirstInst)) - return new ShiftInst(SI->getOpcode(), LHSVal, RHSVal); else { assert(isa(FirstInst)); return new GetElementPtrInst(LHSVal, RHSVal); @@ -7513,8 +7534,7 @@ Instruction *InstCombiner::FoldPHIArgOpIntoPHI(PHINode &PN) { bool isVolatile = false; if (isa(FirstInst)) { CastSrcTy = FirstInst->getOperand(0)->getType(); - } else if (isa(FirstInst) || isa(FirstInst) || - isa(FirstInst)) { + } else if (isa(FirstInst) || isa(FirstInst)) { // Can fold binop, compare or shift here if the RHS is a constant, // otherwise call FoldPHIArgBinOpIntoPHI. ConstantOp = dyn_cast(FirstInst->getOperand(1)); @@ -7596,8 +7616,7 @@ Instruction *InstCombiner::FoldPHIArgOpIntoPHI(PHINode &PN) { return CmpInst::create(CIOp->getOpcode(), CIOp->getPredicate(), PhiVal, ConstantOp); else - return new ShiftInst(cast(FirstInst)->getOpcode(), - PhiVal, ConstantOp); + assert(0 && "Unknown operation"); } /// DeadPHICycle - Return true if this PHI node is only used by a PHI node cycle diff --git a/lib/Transforms/Scalar/LICM.cpp b/lib/Transforms/Scalar/LICM.cpp index 5874b6802af..a07ea268900 100644 --- a/lib/Transforms/Scalar/LICM.cpp +++ b/lib/Transforms/Scalar/LICM.cpp @@ -384,7 +384,7 @@ bool LICM::canSinkOrHoistInst(Instruction &I) { } // Otherwise these instructions are hoistable/sinkable - return isa(I) || isa(I) || isa(I) || + return isa(I) || isa(I) || isa(I) || isa(I) || isa(I); } diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp index 37f1b5507a0..11e096cd13a 100644 --- a/lib/Transforms/Scalar/SCCP.cpp +++ b/lib/Transforms/Scalar/SCCP.cpp @@ -377,7 +377,6 @@ private: void visitSelectInst(SelectInst &I); void visitBinaryOperator(Instruction &I); void visitCmpInst(CmpInst &I); - void visitShiftInst(ShiftInst &I) { visitBinaryOperator(I); } void visitExtractElementInst(ExtractElementInst &I); void visitInsertElementInst(InsertElementInst &I); void visitShuffleVectorInst(ShuffleVectorInst &I); diff --git a/lib/Transforms/Scalar/ScalarReplAggregates.cpp b/lib/Transforms/Scalar/ScalarReplAggregates.cpp index e307ea70086..a7f33c9b195 100644 --- a/lib/Transforms/Scalar/ScalarReplAggregates.cpp +++ b/lib/Transforms/Scalar/ScalarReplAggregates.cpp @@ -655,9 +655,9 @@ void SROA::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI, unsigned Offset) { } else { assert(NV->getType()->isInteger() && "Unknown promotion!"); if (Offset && Offset < TD.getTypeSize(NV->getType())*8) { - NV = new ShiftInst(Instruction::LShr, NV, - ConstantInt::get(Type::Int8Ty, Offset), - LI->getName(), LI); + NV = BinaryOperator::create(Instruction::LShr, NV, + ConstantInt::get(NV->getType(), Offset), + LI->getName(), LI); } // If the result is an integer, this is a trunc or bitcast. @@ -740,9 +740,9 @@ void SROA::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI, unsigned Offset) { SV = CastInst::createZExtOrBitCast(SV, AllocaType, SV->getName(), SI); if (Offset && Offset < AllocaType->getPrimitiveSizeInBits()) - SV = new ShiftInst(Instruction::Shl, SV, - ConstantInt::get(Type::Int8Ty, Offset), - SV->getName()+".adj", SI); + SV = BinaryOperator::create(Instruction::Shl, SV, + ConstantInt::get(SV->getType(), Offset), + SV->getName()+".adj", SI); // Mask out the bits we are about to insert from the old value. unsigned TotalBits = TD.getTypeSize(SV->getType())*8; if (TotalBits != SrcSize) { diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp index 4fe3c02324f..8a7c0987c74 100644 --- a/lib/VMCore/AsmWriter.cpp +++ b/lib/VMCore/AsmWriter.cpp @@ -1272,8 +1272,7 @@ void AssemblyWriter::printInstruction(const Instruction &I) { // Shift Left & Right print both types even for Ubyte LHS, and select prints // types even if all operands are bools. - if (isa(I) || isa(I) || isa(I) || - isa(I)) { + if (isa(I) || isa(I) || isa(I)) { PrintAllTypes = true; } else { for (unsigned i = 1, E = I.getNumOperands(); i != E; ++i) { diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index cb296ad6ab9..79673f034d3 100644 --- a/lib/VMCore/Constants.cpp +++ b/lib/VMCore/Constants.cpp @@ -1302,10 +1302,7 @@ namespace llvm { if (Instruction::isCast(V.opcode)) return new UnaryConstantExpr(V.opcode, V.operands[0], Ty); if ((V.opcode >= Instruction::BinaryOpsBegin && - V.opcode < Instruction::BinaryOpsEnd) || - V.opcode == Instruction::Shl || - V.opcode == Instruction::LShr || - V.opcode == Instruction::AShr) + V.opcode < Instruction::BinaryOpsEnd)) return new BinaryConstantExpr(V.opcode, V.operands[0], V.operands[1]); if (V.opcode == Instruction::Select) return new SelectConstantExpr(V.operands[0], V.operands[1], @@ -1362,12 +1359,6 @@ namespace llvm { OldC->getOperand(1), OldC->getOperand(2)); break; - case Instruction::Shl: - case Instruction::LShr: - case Instruction::AShr: - New = ConstantExpr::getShiftTy(NewTy, OldC->getOpcode(), - OldC->getOperand(0), OldC->getOperand(1)); - break; default: assert(OldC->getOpcode() >= Instruction::BinaryOpsBegin && OldC->getOpcode() < Instruction::BinaryOpsEnd); @@ -1603,10 +1594,6 @@ Constant *ConstantExpr::getPtrPtrFromArrayPtr(Constant *C) { Constant *ConstantExpr::getTy(const Type *ReqTy, unsigned Opcode, Constant *C1, Constant *C2) { - if (Opcode == Instruction::Shl || Opcode == Instruction::LShr || - Opcode == Instruction::AShr) - return getShiftTy(ReqTy, Opcode, C1, C2); - // Check the operands for consistency first assert(Opcode >= Instruction::BinaryOpsBegin && Opcode < Instruction::BinaryOpsEnd && @@ -1689,7 +1676,7 @@ Constant *ConstantExpr::get(unsigned Opcode, Constant *C1, Constant *C2) { case Instruction::Shl: case Instruction::LShr: case Instruction::AShr: - assert(C2->getType() == Type::Int8Ty && "Shift should be by i8!"); + assert(C1->getType() == C2->getType() && "Op types should be identical!"); assert(C1->getType()->isInteger() && "Tried to create a shift operation on a non-integer type!"); break; @@ -1724,26 +1711,6 @@ Constant *ConstantExpr::getSelectTy(const Type *ReqTy, Constant *C, return ExprConstants->getOrCreate(ReqTy, Key); } -/// getShiftTy - Return a shift left or shift right constant expr -Constant *ConstantExpr::getShiftTy(const Type *ReqTy, unsigned Opcode, - Constant *C1, Constant *C2) { - // Check the operands for consistency first - assert((Opcode == Instruction::Shl || - Opcode == Instruction::LShr || - Opcode == Instruction::AShr) && - "Invalid opcode in binary constant expression"); - assert(C1->getType()->isInteger() && C2->getType() == Type::Int8Ty && - "Invalid operand types for Shift constant expr!"); - - if (Constant *FC = ConstantFoldBinaryInstruction(Opcode, C1, C2)) - return FC; // Fold a few common cases... - - // Look up the constant in the table first to ensure uniqueness - std::vector argVec(1, C1); argVec.push_back(C2); - ExprMapKeyType Key(Opcode, argVec); - return ExprConstants->getOrCreate(ReqTy, Key); -} - Constant *ConstantExpr::getGetElementPtrTy(const Type *ReqTy, Constant *C, Value* const *Idxs, unsigned NumIdx) { diff --git a/lib/VMCore/Instructions.cpp b/lib/VMCore/Instructions.cpp index b4452c7a8b8..424e53e2bd1 100644 --- a/lib/VMCore/Instructions.cpp +++ b/lib/VMCore/Instructions.cpp @@ -1088,6 +1088,14 @@ void BinaryOperator::init(BinaryOps iType) cast(getType())->getElementType()->isFloatingPoint())) && "Incorrect operand type (not floating point) for FREM"); break; + case Shl: + case LShr: + case AShr: + assert(getType() == LHS->getType() && + "Shift operation should return same type as operands!"); + assert(getType()->isInteger() && + "Shift operation requires integer operands"); + break; case And: case Or: case Xor: assert(getType() == LHS->getType() && @@ -2299,7 +2307,6 @@ CastInst *PtrToIntInst::clone() const { return new PtrToIntInst(*this); } CastInst *IntToPtrInst::clone() const { return new IntToPtrInst(*this); } CastInst *BitCastInst::clone() const { return new BitCastInst(*this); } CallInst *CallInst::clone() const { return new CallInst(*this); } -ShiftInst *ShiftInst::clone() const { return new ShiftInst(*this); } SelectInst *SelectInst::clone() const { return new SelectInst(*this); } VAArgInst *VAArgInst::clone() const { return new VAArgInst(*this); } diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp index 59be4a45a33..9dc892e5aef 100644 --- a/lib/VMCore/Verifier.cpp +++ b/lib/VMCore/Verifier.cpp @@ -196,7 +196,6 @@ namespace { // Anonymous namespace for class void visitBinaryOperator(BinaryOperator &B); void visitICmpInst(ICmpInst &IC); void visitFCmpInst(FCmpInst &FC); - void visitShiftInst(ShiftInst &SI); void visitExtractElementInst(ExtractElementInst &EI); void visitInsertElementInst(InsertElementInst &EI); void visitShuffleVectorInst(ShuffleVectorInst &EI); @@ -713,9 +712,11 @@ void Verifier::visitBinaryOperator(BinaryOperator &B) { Assert1(B.getOperand(0)->getType() == B.getOperand(1)->getType(), "Both operands to a binary operator are not of the same type!", &B); + switch (B.getOpcode()) { // Check that logical operators are only used with integral operands. - if (B.getOpcode() == Instruction::And || B.getOpcode() == Instruction::Or || - B.getOpcode() == Instruction::Xor) { + case Instruction::And: + case Instruction::Or: + case Instruction::Xor: Assert1(B.getType()->isInteger() || (isa(B.getType()) && cast(B.getType())->getElementType()->isInteger()), @@ -723,7 +724,16 @@ void Verifier::visitBinaryOperator(BinaryOperator &B) { Assert1(B.getType() == B.getOperand(0)->getType(), "Logical operators must have same type for operands and result!", &B); - } else { + break; + case Instruction::Shl: + case Instruction::LShr: + case Instruction::AShr: + Assert1(B.getType()->isInteger(), + "Shift must return an integer result!", &B); + Assert1(B.getType() == B.getOperand(0)->getType(), + "Shift return type must be same as operands!", &B); + /* FALL THROUGH */ + default: // Arithmetic operators only work on integer or fp values Assert1(B.getType() == B.getOperand(0)->getType(), "Arithmetic operators must have same type for operands and result!", @@ -731,6 +741,7 @@ void Verifier::visitBinaryOperator(BinaryOperator &B) { Assert1(B.getType()->isInteger() || B.getType()->isFloatingPoint() || isa(B.getType()), "Arithmetic operators must have integer, fp, or packed type!", &B); + break; } visitInstruction(B); @@ -760,16 +771,6 @@ void Verifier::visitFCmpInst(FCmpInst& FC) { visitInstruction(FC); } -void Verifier::visitShiftInst(ShiftInst &SI) { - Assert1(SI.getType()->isInteger(), - "Shift must return an integer result!", &SI); - Assert1(SI.getType() == SI.getOperand(0)->getType(), - "Shift return type must be same as first operand!", &SI); - Assert1(SI.getOperand(1)->getType() == Type::Int8Ty, - "Second operand to shift must be ubyte type!", &SI); - visitInstruction(SI); -} - void Verifier::visitExtractElementInst(ExtractElementInst &EI) { Assert1(ExtractElementInst::isValidOperands(EI.getOperand(0), EI.getOperand(1)), diff --git a/test/Assembler/2003-05-21-MalformedShiftCrash.llx b/test/Assembler/2003-05-21-MalformedShiftCrash.llx index d1618dae969..ef3445b13fe 100644 --- a/test/Assembler/2003-05-21-MalformedShiftCrash.llx +++ b/test/Assembler/2003-05-21-MalformedShiftCrash.llx @@ -1,4 +1,4 @@ ; Found by inspection of the code -; RUN: llvm-as 2>&1 < %s > /dev/null | grep "Shift constant expression" +; RUN: llvm-as 2>&1 < %s > /dev/null | grep "Logical operator requires integral" -global i32 ashr (float 1.0, i8 2) +global i32 ashr (float 1.0, float 2.0) diff --git a/test/Assembler/2007-02-01-UpgradeShift.ll b/test/Assembler/2007-02-01-UpgradeShift.ll new file mode 100644 index 00000000000..393124788f9 --- /dev/null +++ b/test/Assembler/2007-02-01-UpgradeShift.ll @@ -0,0 +1,18 @@ +; Test that upgrading shift instructions and constant expressions works +; correctly. +; RUN: llvm-upgrade < %s | grep 'ashr i32 .X, 2' && +; RUN: llvm-upgrade < %s | grep 'lshr i32 .X, 2' && +; RUN: llvm-upgrade < %s | grep 'shl i32 .X, 2' && +; RUN: llvm-upgrade < %s | grep 'ashr i32 .X, 6' && +; RUN: llvm-upgrade < %s | grep 'lshr i32 .X, 1' && +; RUN: llvm-upgrade < %s | grep 'shl i32 .X, 1' + +void %test(int %X) { + %A = ashr int %X, ubyte 2 + %B = lshr int %X, ubyte 2 + %C = shl int %X, ubyte 2 + %D = ashr int %X, ubyte trunc ( int shl (int 3, ubyte 1) to ubyte ) + %E = lshr int %X, ubyte trunc ( int ashr (int 3, ubyte 1) to ubyte ) + %F = shl int %X, ubyte trunc ( int lshr (int 3, ubyte 1) to ubyte ) + ret void +} diff --git a/test/CodeGen/ARM/2007-01-19-InfiniteLoop.ll b/test/CodeGen/ARM/2007-01-19-InfiniteLoop.ll index c69798b0b31..3661c4c06d6 100644 --- a/test/CodeGen/ARM/2007-01-19-InfiniteLoop.ll +++ b/test/CodeGen/ARM/2007-01-19-InfiniteLoop.ll @@ -19,13 +19,13 @@ cond_next489: ; preds = %cond_false, %bb471 %tmp502 = load i32* null ; [#uses=1] %tmp542 = getelementptr [6 x [4 x [4 x i32]]]* @quant_coef, i32 0, i32 0, i32 %i.8, i32 %j.7 ; [#uses=1] %tmp543 = load i32* %tmp542 ; [#uses=1] - %tmp548 = ashr i32 0, i8 0 ; [#uses=3] + %tmp548 = ashr i32 0, 0 ; [#uses=3] %tmp561 = sub i32 0, %tmp496 ; [#uses=3] %abscond563 = icmp sgt i32 %tmp561, -1 ; [#uses=1] %abs564 = select i1 %abscond563, i32 %tmp561, i32 0 ; [#uses=1] %tmp572 = mul i32 %abs564, %tmp543 ; [#uses=1] %tmp574 = add i32 %tmp572, 0 ; [#uses=1] - %tmp576 = ashr i32 %tmp574, i8 0 ; [#uses=7] + %tmp576 = ashr i32 %tmp574, 0 ; [#uses=7] %tmp579 = icmp eq i32 %tmp548, %tmp576 ; [#uses=1] br i1 %tmp579, label %bb712, label %cond_next589 @@ -40,8 +40,8 @@ cond_next589: ; preds = %cond_next489 %tmp642 = call fastcc i32 @sign( i32 %tmp576, i32 %tmp561 ) ; [#uses=1] %tmp650 = mul i32 %tmp606, %tmp642 ; [#uses=1] %tmp656 = mul i32 %tmp650, %tmp612 ; [#uses=1] - %tmp658 = shl i32 %tmp656, i8 0 ; [#uses=1] - %tmp659 = ashr i32 %tmp658, i8 6 ; [#uses=1] + %tmp658 = shl i32 %tmp656, 0 ; [#uses=1] + %tmp659 = ashr i32 %tmp658, 6 ; [#uses=1] %tmp660 = sub i32 0, %tmp659 ; [#uses=1] %tmp666 = sub i32 %tmp660, %tmp496 ; [#uses=1] %tmp667 = sitofp i32 %tmp666 to double ; [#uses=2] @@ -85,8 +85,8 @@ cond_true740: ; preds = %bb737 %tmp786 = load i32* %tmp785 ; [#uses=1] %tmp781 = mul i32 %tmp780, %tmp761 ; [#uses=1] %tmp787 = mul i32 %tmp781, %tmp786 ; [#uses=1] - %tmp789 = shl i32 %tmp787, i8 0 ; [#uses=1] - %tmp790 = ashr i32 %tmp789, i8 6 ; [#uses=1] + %tmp789 = shl i32 %tmp787, 0 ; [#uses=1] + %tmp790 = ashr i32 %tmp789, 6 ; [#uses=1] br label %cond_next791 cond_next791: ; preds = %cond_true740, %bb737 diff --git a/test/CodeGen/ARM/2007-01-31-RegInfoAssert.ll b/test/CodeGen/ARM/2007-01-31-RegInfoAssert.ll index a3ccf6e2d63..a5fdf3ba226 100644 --- a/test/CodeGen/ARM/2007-01-31-RegInfoAssert.ll +++ b/test/CodeGen/ARM/2007-01-31-RegInfoAssert.ll @@ -7,7 +7,7 @@ define void @f1() { %D = alloca %struct.rtx_def, align 1 %tmp1 = bitcast %struct.rtx_def* %D to i32* %tmp7 = load i32* %tmp1 - %tmp14 = lshr i32 %tmp7, i8 1 + %tmp14 = lshr i32 %tmp7, 1 %tmp1415 = and i32 %tmp14, 1 call void (i32, ...)* @printf( i32 undef, i32 0, i32 %tmp1415 ) ret void diff --git a/test/CodeGen/ARM/bits.ll b/test/CodeGen/ARM/bits.ll index c5052e5bacb..7a0a08c301f 100644 --- a/test/CodeGen/ARM/bits.ll +++ b/test/CodeGen/ARM/bits.ll @@ -1,36 +1,36 @@ -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep and | wc -l | grep 1 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep orr | wc -l | grep 1 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep eor | wc -l | grep 1 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep mov.*lsl | wc -l | grep 1 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep mov.*asr | wc -l | grep 1 +; RUN: llvm-as < %s | llc -march=arm && +; RUN: llvm-as < %s | llc -march=arm | grep and | wc -l | grep 1 && +; RUN: llvm-as < %s | llc -march=arm | grep orr | wc -l | grep 1 && +; RUN: llvm-as < %s | llc -march=arm | grep eor | wc -l | grep 1 && +; RUN: llvm-as < %s | llc -march=arm | grep mov.*lsl | wc -l | grep 1 && +; RUN: llvm-as < %s | llc -march=arm | grep mov.*asr | wc -l | grep 1 -int %f1(int %a, int %b) { +define i32 @f1(i32 %a, i32 %b) { entry: - %tmp2 = and int %b, %a ; [#uses=1] - ret int %tmp2 + %tmp2 = and i32 %b, %a ; [#uses=1] + ret i32 %tmp2 } -int %f2(int %a, int %b) { +define i32 @f2(i32 %a, i32 %b) { entry: - %tmp2 = or int %b, %a ; [#uses=1] - ret int %tmp2 + %tmp2 = or i32 %b, %a ; [#uses=1] + ret i32 %tmp2 } -int %f3(int %a, int %b) { +define i32 @f3(i32 %a, i32 %b) { entry: - %tmp2 = xor int %b, %a ; [#uses=1] - ret int %tmp2 + %tmp2 = xor i32 %b, %a ; [#uses=1] + ret i32 %tmp2 } -int %f4(int %a, ubyte %b) { +define i32 @f4(i32 %a, i32 %b) { entry: - %tmp3 = shl int %a, ubyte %b ; [#uses=1] - ret int %tmp3 + %tmp3 = shl i32 %a, %b ; [#uses=1] + ret i32 %tmp3 } -int %f5(int %a, ubyte %b) { +define i32 @f5(i32 %a, i32 %b) { entry: - %tmp3 = shr int %a, ubyte %b ; [#uses=1] - ret int %tmp3 + %tmp3 = ashr i32 %a, %b ; [#uses=1] + ret i32 %tmp3 } diff --git a/test/CodeGen/ARM/long_shift.ll b/test/CodeGen/ARM/long_shift.ll index 09b3d1e1647..515cb178a60 100644 --- a/test/CodeGen/ARM/long_shift.ll +++ b/test/CodeGen/ARM/long_shift.ll @@ -5,27 +5,27 @@ ; RUN: llvm-as < %s | llc -march=arm | grep __lshrdi3 && ; RUN: llvm-as < %s | llc -march=arm -enable-thumb -define i64 @f00(i64 %A, i64 %B) { +define i64 @f0(i64 %A, i64 %B) { %tmp = bitcast i64 %A to i64 - %tmp2 = lshr i64 %B, i8 1 + %tmp2 = lshr i64 %B, 1 %tmp3 = sub i64 %tmp, %tmp2 ret i64 %tmp3 } -define i32 @f1(i64 %x, i8 %y) { - %a = shl i64 %x, i8 %y +define i32 @f1(i64 %x, i64 %y) { + %a = shl i64 %x, %y %b = trunc i64 %a to i32 ret i32 %b } -define i32 @f2(i64 %x, i8 %y) { - %a = ashr i64 %x, i8 %y +define i32 @f2(i64 %x, i64 %y) { + %a = ashr i64 %x, %y %b = trunc i64 %a to i32 ret i32 %b } -define i32 @f3(i64 %x, i8 %y) { - %a = lshr i64 %x, i8 %y +define i32 @f3(i64 %x, i64 %y) { + %a = lshr i64 %x, %y %b = trunc i64 %a to i32 ret i32 %b } diff --git a/test/CodeGen/ARM/sxt_rot.ll b/test/CodeGen/ARM/sxt_rot.ll index 3f1483b433a..f865ac131ae 100644 --- a/test/CodeGen/ARM/sxt_rot.ll +++ b/test/CodeGen/ARM/sxt_rot.ll @@ -4,16 +4,16 @@ ; RUN: llvm-as < %s | llc -march=arm -mattr=+v6 | grep "sxtab" | wc -l | grep 1 define i8 @test1(i32 %A) sext { - %B = lshr i32 %A, i8 8 - %C = shl i32 %A, i8 24 + %B = lshr i32 %A, 8 + %C = shl i32 %A, 24 %D = or i32 %B, %C %E = trunc i32 %D to i8 ret i8 %E } define i32 @test2(i32 %A, i32 %X) sext { - %B = lshr i32 %A, i8 8 - %C = shl i32 %A, i8 24 + %B = lshr i32 %A, 8 + %C = shl i32 %A, 24 %D = or i32 %B, %C %E = trunc i32 %D to i8 %F = sext i8 %E to i32 diff --git a/test/CodeGen/ARM/uxt_rot.ll b/test/CodeGen/ARM/uxt_rot.ll index 0c7516ff716..d03ca736d4e 100644 --- a/test/CodeGen/ARM/uxt_rot.ll +++ b/test/CodeGen/ARM/uxt_rot.ll @@ -17,8 +17,8 @@ define i32 @test2(i32 %A.u, i32 %B.u) zext { } define i32 @test3(i32 %A.u) zext { - %B.u = lshr i32 %A.u, i8 8 - %C.u = shl i32 %A.u, i8 24 + %B.u = lshr i32 %A.u, 8 + %C.u = shl i32 %A.u, 24 %D.u = or i32 %B.u, %C.u %E.u = trunc i32 %D.u to i16 %F.u = zext i16 %E.u to i32 diff --git a/test/CodeGen/Alpha/add.ll b/test/CodeGen/Alpha/add.ll index 7d1bd0c3a48..7fbfd1235d8 100644 --- a/test/CodeGen/Alpha/add.ll +++ b/test/CodeGen/Alpha/add.ll @@ -69,112 +69,112 @@ entry: define i32 @a4l(i32 sext %x.s, i32 sext %y.s) sext { entry: - %tmp.1.s = shl i32 %y.s, i8 2 ; [#uses=1] + %tmp.1.s = shl i32 %y.s, 2 ; [#uses=1] %tmp.3.s = add i32 %tmp.1.s, %x.s ; [#uses=1] ret i32 %tmp.3.s } define i32 @a8l(i32 sext %x.s, i32 sext %y.s) sext { entry: - %tmp.1.s = shl i32 %y.s, i8 3 ; [#uses=1] + %tmp.1.s = shl i32 %y.s, 3 ; [#uses=1] %tmp.3.s = add i32 %tmp.1.s, %x.s ; [#uses=1] ret i32 %tmp.3.s } define i64 @a4q(i64 %x.s, i64 %y.s) { entry: - %tmp.1.s = shl i64 %y.s, i8 2 ; [#uses=1] + %tmp.1.s = shl i64 %y.s, 2 ; [#uses=1] %tmp.3.s = add i64 %tmp.1.s, %x.s ; [#uses=1] ret i64 %tmp.3.s } define i64 @a8q(i64 %x.s, i64 %y.s) { entry: - %tmp.1.s = shl i64 %y.s, i8 3 ; [#uses=1] + %tmp.1.s = shl i64 %y.s, 3 ; [#uses=1] %tmp.3.s = add i64 %tmp.1.s, %x.s ; [#uses=1] ret i64 %tmp.3.s } define i32 @a4li(i32 sext %y.s) sext { entry: - %tmp.1.s = shl i32 %y.s, i8 2 ; [#uses=1] + %tmp.1.s = shl i32 %y.s, 2 ; [#uses=1] %tmp.3.s = add i32 100, %tmp.1.s ; [#uses=1] ret i32 %tmp.3.s } define i32 @a8li(i32 sext %y.s) sext { entry: - %tmp.1.s = shl i32 %y.s, i8 3 ; [#uses=1] + %tmp.1.s = shl i32 %y.s, 3 ; [#uses=1] %tmp.3.s = add i32 100, %tmp.1.s ; [#uses=1] ret i32 %tmp.3.s } define i64 @a4qi(i64 %y.s) { entry: - %tmp.1.s = shl i64 %y.s, i8 2 ; [#uses=1] + %tmp.1.s = shl i64 %y.s, 2 ; [#uses=1] %tmp.3.s = add i64 100, %tmp.1.s ; [#uses=1] ret i64 %tmp.3.s } define i64 @a8qi(i64 %y.s) { entry: - %tmp.1.s = shl i64 %y.s, i8 3 ; [#uses=1] + %tmp.1.s = shl i64 %y.s, 3 ; [#uses=1] %tmp.3.s = add i64 100, %tmp.1.s ; [#uses=1] ret i64 %tmp.3.s } define i32 @s4l(i32 sext %x.s, i32 sext %y.s) sext { entry: - %tmp.1.s = shl i32 %y.s, i8 2 ; [#uses=1] + %tmp.1.s = shl i32 %y.s, 2 ; [#uses=1] %tmp.3.s = sub i32 %tmp.1.s, %x.s ; [#uses=1] ret i32 %tmp.3.s } define i32 @s8l(i32 sext %x.s, i32 sext %y.s) sext { entry: - %tmp.1.s = shl i32 %y.s, i8 3 ; [#uses=1] + %tmp.1.s = shl i32 %y.s, 3 ; [#uses=1] %tmp.3.s = sub i32 %tmp.1.s, %x.s ; [#uses=1] ret i32 %tmp.3.s } define i64 @s4q(i64 %x.s, i64 %y.s) { entry: - %tmp.1.s = shl i64 %y.s, i8 2 ; [#uses=1] + %tmp.1.s = shl i64 %y.s, 2 ; [#uses=1] %tmp.3.s = sub i64 %tmp.1.s, %x.s ; [#uses=1] ret i64 %tmp.3.s } define i64 @s8q(i64 %x.s, i64 %y.s) { entry: - %tmp.1.s = shl i64 %y.s, i8 3 ; [#uses=1] + %tmp.1.s = shl i64 %y.s, 3 ; [#uses=1] %tmp.3.s = sub i64 %tmp.1.s, %x.s ; [#uses=1] ret i64 %tmp.3.s } define i32 @s4li(i32 sext %y.s) sext { entry: - %tmp.1.s = shl i32 %y.s, i8 2 ; [#uses=1] + %tmp.1.s = shl i32 %y.s, 2 ; [#uses=1] %tmp.3.s = sub i32 %tmp.1.s, 100 ; [#uses=1] ret i32 %tmp.3.s } define i32 @s8li(i32 sext %y.s) sext { entry: - %tmp.1.s = shl i32 %y.s, i8 3 ; [#uses=1] + %tmp.1.s = shl i32 %y.s, 3 ; [#uses=1] %tmp.3.s = sub i32 %tmp.1.s, 100 ; [#uses=1] ret i32 %tmp.3.s } define i64 @s4qi(i64 %y.s) { entry: - %tmp.1.s = shl i64 %y.s, i8 2 ; [#uses=1] + %tmp.1.s = shl i64 %y.s, 2 ; [#uses=1] %tmp.3.s = sub i64 %tmp.1.s, 100 ; [#uses=1] ret i64 %tmp.3.s } define i64 @s8qi(i64 %y.s) { entry: - %tmp.1.s = shl i64 %y.s, i8 3 ; [#uses=1] + %tmp.1.s = shl i64 %y.s, 3 ; [#uses=1] %tmp.3.s = sub i64 %tmp.1.s, 100 ; [#uses=1] ret i64 %tmp.3.s } diff --git a/test/CodeGen/PowerPC/and-elim.ll b/test/CodeGen/PowerPC/and-elim.ll index b7fe9d2fb26..958f1552513 100644 --- a/test/CodeGen/PowerPC/and-elim.ll +++ b/test/CodeGen/PowerPC/and-elim.ll @@ -3,7 +3,7 @@ define void @test(i8* %P) { %W = load i8* %P - %X = shl i8 %W, i8 1 + %X = shl i8 %W, 1 %Y = add i8 %X, 2 %Z = and i8 %Y, 254 ; dead and store i8 %Z, i8* %P @@ -12,7 +12,7 @@ define void @test(i8* %P) { define i16 @test2(i16 zext %crc) zext { ; No and's should be needed for the i16s here. - %tmp.1 = lshr i16 %crc, i8 1 + %tmp.1 = lshr i16 %crc, 1 %tmp.7 = xor i16 %tmp.1, 40961 ret i16 %tmp.7 } diff --git a/test/CodeGen/PowerPC/and_sext.ll b/test/CodeGen/PowerPC/and_sext.ll index 4c3fd14cbd1..84037e75907 100644 --- a/test/CodeGen/PowerPC/and_sext.ll +++ b/test/CodeGen/PowerPC/and_sext.ll @@ -14,7 +14,7 @@ define i16 @test2(i16 sext %X, i16 sext %x) sext { %tmp = sext i16 %X to i32 %tmp1 = sext i16 %x to i32 %tmp2 = add i32 %tmp, %tmp1 - %tmp4 = ashr i32 %tmp2, i8 1 + %tmp4 = ashr i32 %tmp2, 1 %tmp5 = trunc i32 %tmp4 to i16 %tmp45 = sext i16 %tmp5 to i32 %retval = trunc i32 %tmp45 to i16 @@ -22,7 +22,7 @@ define i16 @test2(i16 sext %X, i16 sext %x) sext { } define i16 @test3(i32 zext %X) sext { - %tmp1 = lshr i32 %X, i8 16 + %tmp1 = lshr i32 %X, 16 %tmp2 = trunc i32 %tmp1 to i16 ret i16 %tmp2 } diff --git a/test/CodeGen/PowerPC/rlwinm2.ll b/test/CodeGen/PowerPC/rlwinm2.ll index 70ad636e3bd..e55da87591a 100644 --- a/test/CodeGen/PowerPC/rlwinm2.ll +++ b/test/CodeGen/PowerPC/rlwinm2.ll @@ -1,30 +1,27 @@ ; All of these ands and shifts should be folded into rlw[i]nm instructions -; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | not grep and && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | not grep srawi && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | not grep srwi && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | not grep slwi && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | grep rlwnm | wc -l | grep 1 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | grep rlwinm | wc -l | grep 1 +; RUN: llvm-as < %s | llc -march=ppc32 | not grep and && +; RUN: llvm-as < %s | llc -march=ppc32 | not grep srawi && +; RUN: llvm-as < %s | llc -march=ppc32 | not grep srwi && +; RUN: llvm-as < %s | llc -march=ppc32 | not grep slwi && +; RUN: llvm-as < %s | llc -march=ppc32 | grep rlwnm | wc -l | grep 1 && +; RUN: llvm-as < %s | llc -march=ppc32 | grep rlwinm | wc -l | grep 1 - -implementation ; Functions: - -uint %test1(uint %X, int %Y) { +define i32 @test1(i32 %X, i32 %Y) { entry: - %tmp = cast int %Y to ubyte ; [#uses=2] - %tmp1 = shl uint %X, ubyte %tmp ; [#uses=1] - %tmp2 = sub ubyte 32, %tmp ; [#uses=1] - %tmp3 = shr uint %X, ubyte %tmp2 ; [#uses=1] - %tmp4 = or uint %tmp1, %tmp3 ; [#uses=1] - %tmp6 = and uint %tmp4, 127 ; [#uses=1] - ret uint %tmp6 + %tmp = trunc i32 %Y to i8 ; [#uses=2] + %tmp1 = shl i32 %X, %Y ; [#uses=1] + %tmp2 = sub i32 32, %Y ; [#uses=1] + %tmp3 = lshr i32 %X, %tmp2 ; [#uses=1] + %tmp4 = or i32 %tmp1, %tmp3 ; [#uses=1] + %tmp6 = and i32 %tmp4, 127 ; [#uses=1] + ret i32 %tmp6 } -uint %test2(uint %X) { +define i32 @test2(i32 %X) { entry: - %tmp1 = shr uint %X, ubyte 27 ; [#uses=1] - %tmp2 = shl uint %X, ubyte 5 ; [#uses=1] - %tmp2.masked = and uint %tmp2, 96 ; [#uses=1] - %tmp5 = or uint %tmp1, %tmp2.masked ; [#uses=1] - ret uint %tmp5 + %tmp1 = lshr i32 %X, 27 ; [#uses=1] + %tmp2 = shl i32 %X, 5 ; [#uses=1] + %tmp2.masked = and i32 %tmp2, 96 ; [#uses=1] + %tmp5 = or i32 %tmp1, %tmp2.masked ; [#uses=1] + ret i32 %tmp5 } diff --git a/test/CodeGen/PowerPC/rotl.ll b/test/CodeGen/PowerPC/rotl.ll index aeb59aab556..a000ec0b318 100644 --- a/test/CodeGen/PowerPC/rotl.ll +++ b/test/CodeGen/PowerPC/rotl.ll @@ -1,53 +1,38 @@ -; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | not grep or && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | \ -; RUN: grep rlwnm | wc -l | grep 2 && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | \ -; RUN: grep rlwinm | wc -l | grep 2 +; RUN: llvm-as < %s | llc -march=ppc32 | not grep or && +; RUN: llvm-as < %s | llc -march=ppc32 | grep rlwnm | wc -l | grep 2 && +; RUN: llvm-as < %s | llc -march=ppc32 | grep rlwinm | wc -l | grep 2 -implementation ; Functions: - -int %rotlw(uint %x, int %sh) { +define i32 @rotlw(i32 %x, i32 %sh) { entry: - %tmp.3 = cast int %sh to ubyte ; [#uses=1] - %x = cast uint %x to int ; [#uses=1] - %tmp.7 = sub int 32, %sh ; [#uses=1] - %tmp.9 = cast int %tmp.7 to ubyte ; [#uses=1] - %tmp.10 = shr uint %x, ubyte %tmp.9 ; [#uses=1] - %tmp.4 = shl int %x, ubyte %tmp.3 ; [#uses=1] - %tmp.10 = cast uint %tmp.10 to int ; [#uses=1] - %tmp.12 = or int %tmp.10, %tmp.4 ; [#uses=1] - ret int %tmp.12 + %tmp.7 = sub i32 32, %sh ; [#uses=1] + %tmp.10 = lshr i32 %x, %tmp.7 ; [#uses=2] + %tmp.4 = shl i32 %x, %sh ; [#uses=1] + %tmp.12 = or i32 %tmp.10, %tmp.4 ; [#uses=1] + ret i32 %tmp.12 } -int %rotrw(uint %x, int %sh) { +define i32 @rotrw(i32 %x, i32 %sh) { entry: - %tmp.3 = cast int %sh to ubyte ; [#uses=1] - %tmp.4 = shr uint %x, ubyte %tmp.3 ; [#uses=1] - %tmp.7 = sub int 32, %sh ; [#uses=1] - %tmp.9 = cast int %tmp.7 to ubyte ; [#uses=1] - %x = cast uint %x to int ; [#uses=1] - %tmp.4 = cast uint %tmp.4 to int ; [#uses=1] - %tmp.10 = shl int %x, ubyte %tmp.9 ; [#uses=1] - %tmp.12 = or int %tmp.4, %tmp.10 ; [#uses=1] - ret int %tmp.12 + %tmp.3 = trunc i32 %sh to i8 ; [#uses=1] + %tmp.4 = lshr i32 %x, %sh ; [#uses=2] + %tmp.7 = sub i32 32, %sh ; [#uses=1] + %tmp.10 = shl i32 %x, %tmp.7 ; [#uses=1] + %tmp.12 = or i32 %tmp.4, %tmp.10 ; [#uses=1] + ret i32 %tmp.12 } -int %rotlwi(uint %x) { +define i32 @rotlwi(i32 %x) { entry: - %x = cast uint %x to int ; [#uses=1] - %tmp.7 = shr uint %x, ubyte 27 ; [#uses=1] - %tmp.3 = shl int %x, ubyte 5 ; [#uses=1] - %tmp.7 = cast uint %tmp.7 to int ; [#uses=1] - %tmp.9 = or int %tmp.3, %tmp.7 ; [#uses=1] - ret int %tmp.9 + %tmp.7 = lshr i32 %x, 27 ; [#uses=2] + %tmp.3 = shl i32 %x, 5 ; [#uses=1] + %tmp.9 = or i32 %tmp.3, %tmp.7 ; [#uses=1] + ret i32 %tmp.9 } -int %rotrwi(uint %x) { +define i32 @rotrwi(i32 %x) { entry: - %tmp.3 = shr uint %x, ubyte 5 ; [#uses=1] - %x = cast uint %x to int ; [#uses=1] - %tmp.3 = cast uint %tmp.3 to int ; [#uses=1] - %tmp.7 = shl int %x, ubyte 27 ; [#uses=1] - %tmp.9 = or int %tmp.3, %tmp.7 ; [#uses=1] - ret int %tmp.9 + %tmp.3 = lshr i32 %x, 5 ; [#uses=2] + %tmp.7 = shl i32 %x, 27 ; [#uses=1] + %tmp.9 = or i32 %tmp.3, %tmp.7 ; [#uses=1] + ret i32 %tmp.9 } diff --git a/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll b/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll index 54c249c8bef..8825e346ef2 100644 --- a/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll +++ b/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll @@ -29,19 +29,19 @@ b: %r22 = select i1 %r20, i64 1, i64 %r19h %r23 = mul i64 %r22, 0 %r23a = trunc i64 %r23 to i32 - %r24 = shl i32 %r23a, i8 0 + %r24 = shl i32 %r23a, 0 %r25 = add i32 %r24, 0 %ras2 = alloca i8, i32 %r25, align 16 %r28 = getelementptr i8* %ras2, i32 0 - %r38 = shl i64 %r12, i8 0 + %r38 = shl i64 %r12, 0 %s2013 = add i64 %r38, 0 %c22012 = getelementptr i8* %ras2, i64 %s2013 - %r42 = shl i64 %r12, i8 0 + %r42 = shl i64 %r12, 0 %s2011 = add i64 %r42, 16 %c22010 = getelementptr i8* %ras2, i64 %s2011 %r50 = add i64 %r16, 0 %r51 = icmp slt i64 %r50, 0 - %r50sh = shl i64 %r50, i8 0 + %r50sh = shl i64 %r50, 0 %r50j = add i64 %r50sh, 0 %r54 = select i1 %r51, i64 0, i64 %r50j %r56 = mul i64 %r54, %r12 @@ -69,7 +69,7 @@ a25b140q: br label %a25b140 a25b: %w1989 = phi i64 [ 0, %b63 ], [ %v1990, %a25b ] - %e642 = shl i64 %w1989, i8 0 + %e642 = shl i64 %w1989, 0 %r129 = add i64 %e642, 0 %r132 = add i64 %e642, 0 %r134 = icmp slt i64 %r132, 0 @@ -112,7 +112,7 @@ a30b294q: br label %a30b294 a30b: %w = phi i64 [ 0, %b179 ], [ %v, %a30b ] - %b2 = shl i64 %w, i8 0 + %b2 = shl i64 %w, 0 %r283 = add i64 %b2, 0 %r286 = add i64 %b2, 0 %r288 = icmp slt i64 %r286, 0 @@ -152,7 +152,7 @@ b377: br i1 %r462, label %a35b465, label %b463 a35b: %w1865 = phi i64 [ 0, %b341 ], [ %v1866, %a35b ] - %e785 = shl i64 %w1865, i8 0 + %e785 = shl i64 %w1865, 0 %b1877 = mul i64 %w1865, 0 %s795 = add i64 %b1877, 0 %r399 = add float %r354, 0.000000e+00 @@ -196,7 +196,7 @@ b565: br i1 %r711, label %a45b714, label %b712 a45b: %w1852 = phi i64 [ 0, %b535 ], [ %v1853, %a45b ] - %e945 = shl i64 %w1852, i8 0 + %e945 = shl i64 %w1852, 0 %r609 = add i64 %r562, 0 %r703 = add i64 %e945, 0 %r706 = add i64 %e945, 0 @@ -261,7 +261,7 @@ b858: %w1891 = phi i64 [ 0, %b820 ], [ %v1892, %b1016 ] %s1193 = phi i64 [ 0, %b820 ], [ %r1068, %b1016 ] %b1894 = mul i64 %r834, 0 - %b1896 = shl i64 %r823, i8 0 + %b1896 = shl i64 %r823, 0 %b1902 = mul i64 %w1891, 0 %s1173 = add i64 %b1902, 0 %r859 = add i64 %r856, 0 @@ -285,7 +285,7 @@ a53b1019q: br label %a53b1019 a53b: %w1881 = phi i64 [ 0, %b858 ], [ %v1882, %a53b ] - %e1205 = shl i64 %w1881, i8 0 + %e1205 = shl i64 %w1881, 0 %r1007 = add i64 %e1205, 0 %r1010 = add i64 %e1205, 0 %r1012 = icmp slt i64 %r1010, 0 @@ -365,7 +365,7 @@ a63b: %b1907 = mul i64 %r1101, 0 %b1929 = mul i64 %w1904, 0 %s1395 = add i64 %b1929, 0 - %e1365 = shl i64 %w1904, i8 0 + %e1365 = shl i64 %w1904, 0 %r1163 = add i64 %r1090, 0 %r1167 = add i64 %s1375, 0 %r1191 = add i64 %r1163, 0 diff --git a/test/CodeGen/X86/trunc-to-bool.ll b/test/CodeGen/X86/trunc-to-bool.ll index 8486bbd4286..667fc2f3d3c 100644 --- a/test/CodeGen/X86/trunc-to-bool.ll +++ b/test/CodeGen/X86/trunc-to-bool.ll @@ -12,8 +12,7 @@ define i1 @test1(i32 %X) zext { define i1 @test2(i32 %val, i32 %mask) { entry: - %maski8 = trunc i32 %mask to i8 - %shifted = ashr i32 %val, i8 %maski8 + %shifted = ashr i32 %val, %mask %anded = and i32 %shifted, 1 %trunced = trunc i32 %anded to i1 br i1 %trunced, label %ret_true, label %ret_false diff --git a/test/Integer/BitBit.ll b/test/Integer/BitBit.ll index 2b01c447d9e..7c17326e198 100644 --- a/test/Integer/BitBit.ll +++ b/test/Integer/BitBit.ll @@ -14,11 +14,12 @@ begin %t3 = sext i31 %i to i33 %t4 = or i33 %t3, %j %t5 = xor i31 %t2, 7 - %t6 = shl i31 %i, i8 2 + %t6 = shl i31 %i, 2 %t7 = trunc i31 %i to i8 - %t8 = shl i8 %t7, i8 3 - %t9 = lshr i33 %j, i8 31 - %t10 = ashr i33 %j, i8 %t7 + %t8 = shl i8 %t7, 3 + %t9 = lshr i33 %j, 31 + %t7z = zext i8 %t7 to i33 + %t10 = ashr i33 %j, %t7z ret void end diff --git a/test/Integer/a1.ll b/test/Integer/a1.ll index 1e7934402e6..cfd69f06aaa 100644 --- a/test/Integer/a1.ll +++ b/test/Integer/a1.ll @@ -10,10 +10,10 @@ @f = constant i1 sub(i1 1 , i1 -1) @g = constant i1 sub(i1 1 , i1 1) -@h = constant i1 shl(i1 1 , i8 1) -@i = constant i1 shl(i1 1 , i8 0) -@j = constant i1 lshr(i1 1, i8 1) -@m = constant i1 ashr(i1 1, i8 1) +@h = constant i1 shl(i1 1 , i1 1) +@i = constant i1 shl(i1 1 , i1 0) +@j = constant i1 lshr(i1 1, i1 1) +@m = constant i1 ashr(i1 1, i1 1) @n = constant i1 mul(i1 -1, i1 1) @o = constant i1 sdiv(i1 -1, i1 1) diff --git a/test/Integer/a15.ll b/test/Integer/a15.ll index d3cc319b427..4e4908cbbbf 100644 --- a/test/Integer/a15.ll +++ b/test/Integer/a15.ll @@ -10,12 +10,12 @@ @f = constant i15 sub(i15 0 , i15 32767) @g = constant i15 sub(i15 2 , i15 32767) -@h = constant i15 shl(i15 1 , i8 15) -@i = constant i15 shl(i15 1 , i8 14) -@j = constant i15 lshr(i15 32767 , i8 14) -@k = constant i15 lshr(i15 32767 , i8 15) -@l = constant i15 ashr(i15 32767 , i8 14) -@m = constant i15 ashr(i15 32767 , i8 15) +@h = constant i15 shl(i15 1 , i15 15) +@i = constant i15 shl(i15 1 , i15 14) +@j = constant i15 lshr(i15 32767 , i15 14) +@k = constant i15 lshr(i15 32767 , i15 15) +@l = constant i15 ashr(i15 32767 , i15 14) +@m = constant i15 ashr(i15 32767 , i15 15) @n = constant i15 mul(i15 32767, i15 2) @q = constant i15 mul(i15 -16383,i15 -3) diff --git a/test/Integer/a17.ll b/test/Integer/a17.ll index 82760786cd2..a83b2000d86 100644 --- a/test/Integer/a17.ll +++ b/test/Integer/a17.ll @@ -10,12 +10,12 @@ @f = constant i17 sub(i17 0 , i17 131071) @g = constant i17 sub(i17 2 , i17 131071) -@h = constant i17 shl(i17 1 , i8 17) -@i = constant i17 shl(i17 1 , i8 16) -@j = constant i17 lshr(i17 131071 , i8 16) -@k = constant i17 lshr(i17 131071 , i8 17) -@l = constant i17 ashr(i17 131071 , i8 16) -@m = constant i17 ashr(i17 131071 , i8 17) +@h = constant i17 shl(i17 1 , i17 17) +@i = constant i17 shl(i17 1 , i17 16) +@j = constant i17 lshr(i17 131071 , i17 16) +@k = constant i17 lshr(i17 131071 , i17 17) +@l = constant i17 ashr(i17 131071 , i17 16) +@m = constant i17 ashr(i17 131071 , i17 17) @n = constant i17 mul(i17 131071, i17 2) @q = constant i17 sdiv(i17 -1, i17 65535) diff --git a/test/Integer/a31.ll b/test/Integer/a31.ll index fa3774b4fb8..57c6191bdd5 100644 --- a/test/Integer/a31.ll +++ b/test/Integer/a31.ll @@ -10,12 +10,12 @@ @f = constant i31 sub(i31 0 , i31 2147483647) @g = constant i31 sub(i31 2 , i31 2147483647) -@h = constant i31 shl(i31 1 , i8 31) -@i = constant i31 shl(i31 1 , i8 30) -@j = constant i31 lshr(i31 2147483647 , i8 30) -@k = constant i31 lshr(i31 2147483647 , i8 31) -@l = constant i31 ashr(i31 2147483647 , i8 30) -@m = constant i31 ashr(i31 2147483647 , i8 31) +@h = constant i31 shl(i31 1 , i31 31) +@i = constant i31 shl(i31 1 , i31 30) +@j = constant i31 lshr(i31 2147483647 , i31 30) +@k = constant i31 lshr(i31 2147483647 , i31 31) +@l = constant i31 ashr(i31 2147483647 , i31 30) +@m = constant i31 ashr(i31 2147483647 , i31 31) @n = constant i31 mul(i31 2147483647, i31 2) @q = constant i31 sdiv(i31 -1, i31 1073741823) diff --git a/test/Integer/a33.ll b/test/Integer/a33.ll index cf14274acf4..8ef992b1f4a 100644 --- a/test/Integer/a33.ll +++ b/test/Integer/a33.ll @@ -10,12 +10,12 @@ @f = constant i33 sub(i33 0 , i33 8589934591) @g = constant i33 sub(i33 2 , i33 8589934591) -@h = constant i33 shl(i33 1 , i8 33) -@i = constant i33 shl(i33 1 , i8 32) -@j = constant i33 lshr(i33 8589934591 , i8 32) -@k = constant i33 lshr(i33 8589934591 , i8 33) -@l = constant i33 ashr(i33 8589934591 , i8 32) -@m = constant i33 ashr(i33 8589934591 , i8 33) +@h = constant i33 shl(i33 1 , i33 33) +@i = constant i33 shl(i33 1 , i33 32) +@j = constant i33 lshr(i33 8589934591 , i33 32) +@k = constant i33 lshr(i33 8589934591 , i33 33) +@l = constant i33 ashr(i33 8589934591 , i33 32) +@m = constant i33 ashr(i33 8589934591 , i33 33) @n = constant i33 mul(i33 8589934591, i33 2) @q = constant i33 sdiv(i33 -1, i33 4294967295) diff --git a/test/Integer/a63.ll b/test/Integer/a63.ll index ec348ff204b..6dadaf79e0b 100644 --- a/test/Integer/a63.ll +++ b/test/Integer/a63.ll @@ -10,12 +10,12 @@ @f = constant i63 sub(i63 0 , i63 9223372036854775807) @g = constant i63 sub(i63 2 , i63 9223372036854775807) -@h = constant i63 shl(i63 1 , i8 63) -@i = constant i63 shl(i63 1 , i8 62) -@j = constant i63 lshr(i63 9223372036854775807 , i8 62) -@k = constant i63 lshr(i63 9223372036854775807 , i8 63) -@l = constant i63 ashr(i63 9223372036854775807 , i8 62) -@m = constant i63 ashr(i63 9223372036854775807 , i8 63) +@h = constant i63 shl(i63 1 , i63 63) +@i = constant i63 shl(i63 1 , i63 62) +@j = constant i63 lshr(i63 9223372036854775807 , i63 62) +@k = constant i63 lshr(i63 9223372036854775807 , i63 63) +@l = constant i63 ashr(i63 9223372036854775807 , i63 62) +@m = constant i63 ashr(i63 9223372036854775807 , i63 63) @n = constant i63 mul(i63 9223372036854775807, i63 2) @q = constant i63 sdiv(i63 -1, i63 4611686018427387903) diff --git a/test/Integer/a7.ll b/test/Integer/a7.ll index 91904cc3ec2..294db188457 100644 --- a/test/Integer/a7.ll +++ b/test/Integer/a7.ll @@ -13,13 +13,13 @@ @r = constant i7 sub(i7 -3, i7 120) @s = constant i7 sub(i7 -3, i7 -8) -@h = constant i7 shl(i7 1 , i8 7) -@i = constant i7 shl(i7 1 , i8 6) -@j = constant i7 lshr(i7 127 , i8 6) -@k = constant i7 lshr(i7 127 , i8 7) -@l = constant i7 ashr(i7 127 , i8 6) -@m = constant i7 ashr(i7 127 , i8 7) -@m2= constant i7 ashr(i7 -1 , i8 3) +@h = constant i7 shl(i7 1 , i7 7) +@i = constant i7 shl(i7 1 , i7 6) +@j = constant i7 lshr(i7 127 , i7 6) +@k = constant i7 lshr(i7 127 , i7 7) +@l = constant i7 ashr(i7 127 , i7 6) +@m = constant i7 ashr(i7 127 , i7 7) +@m2= constant i7 ashr(i7 -1 , i7 3) @n = constant i7 mul(i7 127, i7 2) @t = constant i7 mul(i7 -63, i7 -2) diff --git a/test/Integer/a9.ll b/test/Integer/a9.ll index 8e4cd9a8db3..990c4459fce 100644 --- a/test/Integer/a9.ll +++ b/test/Integer/a9.ll @@ -10,12 +10,12 @@ @f = constant i9 sub(i9 0 , i9 511) @g = constant i9 sub(i9 2 , i9 511) -@h = constant i9 shl(i9 1 , i8 9) -@i = constant i9 shl(i9 1 , i8 8) -@j = constant i9 lshr(i9 511 , i8 8) -@k = constant i9 lshr(i9 511 , i8 9) -@l = constant i9 ashr(i9 511 , i8 8) -@m = constant i9 ashr(i9 511 , i8 9) +@h = constant i9 shl(i9 1 , i9 9) +@i = constant i9 shl(i9 1 , i9 8) +@j = constant i9 lshr(i9 511 , i9 8) +@k = constant i9 lshr(i9 511 , i9 9) +@l = constant i9 ashr(i9 511 , i9 8) +@m = constant i9 ashr(i9 511 , i9 9) @n = constant i9 mul(i9 511, i9 2) @q = constant i9 sdiv(i9 511, i9 2) diff --git a/test/Integer/testarith_bt.ll b/test/Integer/testarith_bt.ll index 2e0ec189822..f962e393d36 100644 --- a/test/Integer/testarith_bt.ll +++ b/test/Integer/testarith_bt.ll @@ -13,9 +13,9 @@ begin %t5 = sdiv i31 %t1, %t2 %t6 = urem i31 %t1, %t2 %t7 = srem i31 %t1, %t2 - %t8 = shl i31 %t1, i8 9 - %t9 = lshr i31 %t1, i8 9 - %t10= ashr i31 %t1, i8 9 + %t8 = shl i31 %t1, 9 + %t9 = lshr i31 %t1, 9 + %t10= ashr i31 %t1, 9 %f1 = sitofp i31 %t1 to float %f2 = fdiv float 4.0, %f1 ret i31 %t3 diff --git a/test/Integer/testlogical_new_bt.ll b/test/Integer/testlogical_new_bt.ll index 41f5d0cac32..349b4ab95ff 100644 --- a/test/Integer/testlogical_new_bt.ll +++ b/test/Integer/testlogical_new_bt.ll @@ -9,8 +9,8 @@ begin %t1 = xor i31 %i0, %j0 %t2 = or i31 %i0, %j0 %t3 = and i31 %t1, %t2 - %t4 = shl i31 %i0, i8 2 - %t5 = ashr i31 %i0, i8 2 - %t6 = lshr i31 %j0, i8 22 + %t4 = shl i31 %i0, 2 + %t5 = ashr i31 %i0, 2 + %t6 = lshr i31 %j0, 22 ret i31 %t3 end diff --git a/test/Transforms/InstCombine/add.ll b/test/Transforms/InstCombine/add.ll index aa12a99bdc0..4e5dbb38532 100644 --- a/test/Transforms/InstCombine/add.ll +++ b/test/Transforms/InstCombine/add.ll @@ -1,7 +1,8 @@ ; This test makes sure that add instructions are properly eliminated. ; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine -disable-output && -; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep -v OK | not grep add +; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | \ +; RUN: grep -v OK | not grep add implementation @@ -46,7 +47,8 @@ int %test7(int %A) { ret int %C } -int %test8(int %A, int %B) { ; (A & C1)+(B & C2) -> (A & C1)|(B & C2) iff C1&C2 == 0 +; (A & C1)+(B & C2) -> (A & C1)|(B & C2) iff C1&C2 == 0 +int %test8(int %A, int %B) { %A1 = and int %A, 7 %B1 = and int %B, 128 %C = add int %A1, %B1 diff --git a/test/Transforms/InstCombine/shift-simplify.ll b/test/Transforms/InstCombine/shift-simplify.ll index ce19384d165..1049b0c01ab 100644 --- a/test/Transforms/InstCombine/shift-simplify.ll +++ b/test/Transforms/InstCombine/shift-simplify.ll @@ -1,22 +1,23 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | egrep 'shl|lshr|ashr' | wc -l | grep 3 +; RUN: llvm-as < %s | opt -instcombine | llvm-dis | \ +; RUN: egrep 'shl|lshr|ashr' | wc -l | grep 3 -int %test0(int %A, int %B, ubyte %C) { - %X = shl int %A, ubyte %C - %Y = shl int %B, ubyte %C - %Z = and int %X, %Y - ret int %Z +define i32 @test0(i32 %A, i32 %B, i32 %C) { + %X = shl i32 %A, %C + %Y = shl i32 %B, %C + %Z = and i32 %X, %Y + ret i32 %Z } -int %test1(int %A, int %B, ubyte %C) { - %X = lshr int %A, ubyte %C - %Y = lshr int %B, ubyte %C - %Z = or int %X, %Y - ret int %Z +define i32 @test1(i32 %A, i32 %B, i32 %C) { + %X = lshr i32 %A, %C + %Y = lshr i32 %B, %C + %Z = or i32 %X, %Y + ret i32 %Z } -int %test2(int %A, int %B, ubyte %C) { - %X = ashr int %A, ubyte %C - %Y = ashr int %B, ubyte %C - %Z = xor int %X, %Y - ret int %Z +define i32 @test2(i32 %A, i32 %B, i32 %C) { + %X = ashr i32 %A, %C + %Y = ashr i32 %B, %C + %Z = xor i32 %X, %Y + ret i32 %Z } diff --git a/test/Transforms/InstCombine/shift-sra.ll b/test/Transforms/InstCombine/shift-sra.ll index a887d61196a..80a2ac9cae0 100644 --- a/test/Transforms/InstCombine/shift-sra.ll +++ b/test/Transforms/InstCombine/shift-sra.ll @@ -1,5 +1,6 @@ ; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine -disable-output && -; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'lshr i32' | wc -l | grep 2 && +; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | \ +; RUN: grep 'lshr i32' | wc -l | grep 2 && ; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | not grep ashr int %test1(int %X, ubyte %A) { diff --git a/test/Transforms/InstCombine/signext.ll b/test/Transforms/InstCombine/signext.ll index 7dcb466ad64..88f7b02c196 100644 --- a/test/Transforms/InstCombine/signext.ll +++ b/test/Transforms/InstCombine/signext.ll @@ -1,5 +1,6 @@ ; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine -disable-output && -; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | not grep '(and\|xor\|add\|shl\|shr)' +; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | \ +; RUN: not grep '(and\|xor\|add\|shl\|shr)' int %test1(int %x) { %tmp.1 = and int %x, 65535 ; [#uses=1] diff --git a/test/Transforms/Reassociate/shifttest.ll b/test/Transforms/Reassociate/shifttest.ll index 0bfe0ec2df6..18c6e4e3205 100644 --- a/test/Transforms/Reassociate/shifttest.ll +++ b/test/Transforms/Reassociate/shifttest.ll @@ -1,6 +1,6 @@ ; With shl->mul reassociation, we can see that this is (shl A, 9) * A ; -; RUN: llvm-upgrade < %s | llvm-as | opt -reassociate -instcombine | llvm-dis | grep 'shl .*, i8 9' +; RUN: llvm-upgrade < %s | llvm-as | opt -reassociate -instcombine | llvm-dis | grep 'shl .*, 9' int %test(int %A, int %B) { %X = shl int %A, ubyte 5 diff --git a/tools/llvm-upgrade/UpgradeInternals.h b/tools/llvm-upgrade/UpgradeInternals.h index 7a4864157fa..71629534a11 100644 --- a/tools/llvm-upgrade/UpgradeInternals.h +++ b/tools/llvm-upgrade/UpgradeInternals.h @@ -194,6 +194,7 @@ enum BinaryOps { DivOp, UDivOp, SDivOp, FDivOp, RemOp, URemOp, SRemOp, FRemOp, AndOp, OrOp, XorOp, + ShlOp, ShrOp, LShrOp, AShrOp, SetEQ, SetNE, SetLE, SetGE, SetLT, SetGT }; @@ -202,10 +203,9 @@ enum MemoryOps { }; enum OtherOps { - PHIOp, CallOp, ShlOp, ShrOp, SelectOp, UserOp1, UserOp2, VAArg, + PHIOp, CallOp, SelectOp, UserOp1, UserOp2, VAArg, ExtractElementOp, InsertElementOp, ShuffleVectorOp, - ICmpOp, FCmpOp, - LShrOp, AShrOp + ICmpOp, FCmpOp }; enum CastOps { diff --git a/tools/llvm-upgrade/UpgradeLexer.cpp.cvs b/tools/llvm-upgrade/UpgradeLexer.cpp.cvs index 9fe1d291a81..eb32f83fd43 100644 --- a/tools/llvm-upgrade/UpgradeLexer.cpp.cvs +++ b/tools/llvm-upgrade/UpgradeLexer.cpp.cvs @@ -1,94 +1,51 @@ -#line 2 "UpgradeLexer.cpp" - -#line 4 "UpgradeLexer.cpp" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ +#define yy_create_buffer Upgrade_create_buffer +#define yy_delete_buffer Upgrade_delete_buffer +#define yy_scan_buffer Upgrade_scan_buffer +#define yy_scan_string Upgrade_scan_string +#define yy_scan_bytes Upgrade_scan_bytes +#define yy_flex_debug Upgrade_flex_debug +#define yy_init_buffer Upgrade_init_buffer +#define yy_flush_buffer Upgrade_flush_buffer +#define yy_load_buffer_state Upgrade_load_buffer_state +#define yy_switch_to_buffer Upgrade_switch_to_buffer +#define yyin Upgradein +#define yyleng Upgradeleng +#define yylex Upgradelex +#define yyout Upgradeout +#define yyrestart Upgraderestart +#define yytext Upgradetext +#define yylineno Upgradelineno + +#line 20 "UpgradeLexer.cpp" +/* A lexical scanner generated by flex*/ + +/* Scanner skeleton version: + * $Header$ + */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 33 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ -/* begin standard C headers. */ #include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif +#include -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) +/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ +#ifdef c_plusplus +#ifndef __cplusplus +#define __cplusplus #endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) #endif -#endif /* ! FLEXINT_H */ #ifdef __cplusplus +#include + +/* Use prototypes in function declarations. */ +#define YY_USE_PROTOS + /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST @@ -96,17 +53,34 @@ typedef unsigned int flex_uint32_t; #if __STDC__ +#define YY_USE_PROTOS #define YY_USE_CONST #endif /* __STDC__ */ #endif /* ! __cplusplus */ +#ifdef __TURBOC__ + #pragma warn -rch + #pragma warn -use +#include +#include +#define YY_USE_CONST +#define YY_USE_PROTOS +#endif + #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif + +#ifdef YY_USE_PROTOS +#define YY_PROTO(proto) proto +#else +#define YY_PROTO(proto) () +#endif + /* Returned upon end-of-file. */ #define YY_NULL 0 @@ -121,88 +95,80 @@ typedef unsigned int flex_uint32_t; * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ -#define BEGIN (yy_start) = 1 + 2 * +#define BEGIN yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ -#define YY_START (((yy_start) - 1) / 2) +#define YY_START ((yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE Upgraderestart(Upgradein ) +#define YY_NEW_FILE yyrestart( yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ -#ifndef YY_BUF_SIZE #define YY_BUF_SIZE (16384*64) -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -extern int Upgradeleng; -extern FILE *Upgradein, *Upgradeout; +extern int yyleng; +extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires - * access to the local variable yy_act. Since yyless() is a macro, it would break - * existing scanners that call yyless() from OUTSIDE Upgradelex. - * One obvious solution it to make yy_act a global. I tried that, and saw - * a 5% performance hit in a non-Upgradelineno scanner, because yy_act is - * normally declared as a register variable-- so it is not worth it. - */ - #define YY_LESS_LINENO(n) \ - do { \ - int yyl;\ - for ( yyl = n; yyl < Upgradeleng; ++yyl )\ - if ( Upgradetext[yyl] == '\n' )\ - --Upgradelineno;\ - }while(0) - -/* Return all but the first "n" matched characters back to the input stream. */ +/* The funky do-while in the following #define is used to turn the definition + * int a single C statement (which needs a semi-colon terminator). This + * avoids problems with code like: + * + * if ( condition_holds ) + * yyless( 5 ); + * else + * do_something_else(); + * + * Prior to using the do-while the compiler would get upset at the + * "else" because it interpreted the "if" statement as being all + * done when it reached the ';' after the yyless() call. + */ + +/* Return all but the first 'n' matched characters back to the input stream. */ + #define yyless(n) \ do \ { \ - /* Undo effects of setting up Upgradetext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ + /* Undo effects of setting up yytext. */ \ + *yy_cp = yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up Upgradetext again */ \ + yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) -#define unput(c) yyunput( c, (yytext_ptr) ) +#define unput(c) yyunput( c, yytext_ptr ) + +/* Some routines like yy_flex_realloc() are emitted as static but are + not called by all lexers. This generates warnings in some compilers, + notably GCC. Arrange to suppress these. */ +#ifdef __GNUC__ +#define YY_MAY_BE_UNUSED __attribute__((unused)) +#else +#define YY_MAY_BE_UNUSED +#endif /* The following is because we cannot portably get our hands on size_t * (without autoconf's help, which isn't available because we want * flex-generated scanners to compile on their own). */ - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T typedef unsigned int yy_size_t; -#endif -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE + struct yy_buffer_state { FILE *yy_input_file; @@ -239,16 +205,12 @@ struct yy_buffer_state */ int yy_at_bol; - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; - #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process @@ -258,209 +220,207 @@ struct yy_buffer_state * possible backing-up. * * When we actually see the EOF, we change the status to "new" - * (via Upgraderestart()), so that the user can continue scanning by - * just pointing Upgradein at a new input file. + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ +static YY_BUFFER_STATE yy_current_buffer = 0; /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". - * - * Returns the top of the stack, or NULL. */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) +#define YY_CURRENT_BUFFER yy_current_buffer -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] -/* yy_hold_char holds the character lost when Upgradetext is formed. */ +/* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; + static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int Upgradeleng; + + +int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; -static int yy_init = 0; /* whether we need to initialize */ +static int yy_init = 1; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ -/* Flag which is used to allow Upgradewrap()'s to do buffer switches - * instead of setting up a fresh Upgradein. A bit of a hack ... +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; -void Upgraderestart (FILE *input_file ); -void Upgrade_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE Upgrade_create_buffer (FILE *file,int size ); -void Upgrade_delete_buffer (YY_BUFFER_STATE b ); -void Upgrade_flush_buffer (YY_BUFFER_STATE b ); -void Upgradepush_buffer_state (YY_BUFFER_STATE new_buffer ); -void Upgradepop_buffer_state (void ); - -static void Upgradeensure_buffer_stack (void ); -static void Upgrade_load_buffer_state (void ); -static void Upgrade_init_buffer (YY_BUFFER_STATE b,FILE *file ); +void yyrestart YY_PROTO(( FILE *input_file )); -#define YY_FLUSH_BUFFER Upgrade_flush_buffer(YY_CURRENT_BUFFER ) +void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); +void yy_load_buffer_state YY_PROTO(( void )); +YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); +void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); +void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); +void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); +#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) -YY_BUFFER_STATE Upgrade_scan_buffer (char *base,yy_size_t size ); -YY_BUFFER_STATE Upgrade_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE Upgrade_scan_bytes (yyconst char *bytes,int len ); +YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); +YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); +YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); -void *Upgradealloc (yy_size_t ); -void *Upgraderealloc (void *,yy_size_t ); -void Upgradefree (void * ); +static void *yy_flex_alloc YY_PROTO(( yy_size_t )); +static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED; +static void yy_flex_free YY_PROTO(( void * )); -#define yy_new_buffer Upgrade_create_buffer +#define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ - if ( ! YY_CURRENT_BUFFER ){ \ - Upgradeensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - Upgrade_create_buffer(Upgradein,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ - if ( ! YY_CURRENT_BUFFER ){\ - Upgradeensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - Upgrade_create_buffer(Upgradein,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_at_bol = at_bol; \ } -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) +#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) -/* Begin user sect3 */ -#define Upgradewrap(n) 1 -#define YY_SKIP_YYWRAP +#define YY_USES_REJECT +#define yywrap() 1 +#define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; - -FILE *Upgradein = (FILE *) 0, *Upgradeout = (FILE *) 0; - +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; typedef int yy_state_type; +extern int yylineno; +int yylineno = 1; +extern char *yytext; +#define yytext_ptr yytext -extern int Upgradelineno; - -int Upgradelineno = 1; - -extern char *Upgradetext; -#define yytext_ptr Upgradetext - -static yy_state_type yy_get_previous_state (void ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); -static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); +static yy_state_type yy_get_previous_state YY_PROTO(( void )); +static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); +static int yy_get_next_buffer YY_PROTO(( void )); +static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); /* Done after the current pattern has been matched and before the - * corresponding action - sets up Upgradetext. + * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - Upgradeleng = (size_t) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ + yytext_ptr = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; + yy_c_buf_p = yy_cp; #define YY_NUM_RULES 156 #define YY_END_OF_BUFFER 157 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[610] = +static yyconst short int yy_acclist[234] = { 0, - 0, 0, 157, 155, 154, 154, 155, 155, 155, 155, - 155, 155, 147, 147, 1, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 0, 146, 0, 144, - 143, 143, 150, 0, 148, 0, 152, 147, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, - 41, 0, 0, 0, 0, 0, 0, 0, 0, 85, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, - 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 146, 143, 143, 152, 20, 152, 0, - 153, 63, 0, 0, 74, 0, 0, 39, 0, 34, - 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, - 0, 66, 0, 0, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 65, 25, 0, 95, 100, 98, 99, 97, 96, 0, - - 101, 105, 0, 0, 70, 128, 0, 0, 0, 0, - 0, 0, 0, 90, 88, 121, 0, 122, 0, 0, - 0, 89, 87, 0, 0, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 103, 94, 92, 0, 0, 93, - 0, 91, 0, 104, 0, 102, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, - 145, 152, 0, 0, 0, 152, 0, 0, 0, 124, - 0, 0, 57, 106, 107, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 0, 0, 0, 0, 136, 73, 0, 0, - - 83, 0, 0, 0, 0, 0, 0, 0, 0, 137, - 54, 123, 0, 0, 22, 0, 0, 0, 149, 0, - 68, 0, 0, 0, 0, 0, 0, 110, 0, 0, - 0, 0, 72, 0, 0, 26, 0, 0, 4, 0, - 61, 0, 67, 53, 0, 0, 0, 0, 0, 0, - 71, 0, 0, 0, 0, 56, 0, 11, 0, 0, - 109, 152, 36, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 5, 0, 58, 112, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, - - 0, 0, 48, 0, 0, 78, 82, 80, 81, 79, - 77, 50, 0, 0, 0, 138, 0, 0, 0, 108, - 49, 0, 55, 21, 0, 0, 0, 0, 0, 126, - 0, 0, 0, 0, 0, 135, 0, 0, 45, 0, - 0, 0, 0, 0, 0, 0, 59, 30, 24, 0, - 0, 44, 114, 113, 0, 0, 7, 0, 0, 0, - 0, 131, 0, 33, 134, 38, 62, 0, 0, 0, - 120, 0, 0, 116, 130, 27, 28, 115, 0, 0, - 132, 51, 127, 125, 0, 0, 0, 0, 0, 119, - 0, 43, 0, 6, 29, 0, 0, 0, 0, 0, - - 111, 0, 0, 0, 0, 0, 0, 0, 0, 37, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 9, - 118, 10, 0, 117, 0, 0, 0, 0, 35, 0, - 0, 0, 12, 0, 14, 13, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, - 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 31, 0, - 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 139, 0, 141, 142, 16, - - 0, 46, 0, 140, 18, 47, 0, 19, 0 + 157, 155, 156, 154, 155, 156, 154, 156, 155, 156, + 155, 156, 155, 156, 155, 156, 155, 156, 155, 156, + 147, 155, 156, 147, 155, 156, 1, 155, 156, 155, + 156, 155, 156, 155, 156, 155, 156, 155, 156, 155, + 156, 155, 156, 155, 156, 155, 156, 155, 156, 155, + 156, 155, 156, 155, 156, 155, 156, 155, 156, 155, + 156, 155, 156, 155, 156, 155, 156, 155, 156, 155, + 156, 146, 144, 143, 143, 150, 148, 152, 147, 1, + 129, 41, 89, 90, 75, 23, 146, 143, 143, 151, + 152, 20, 152, 153, 63, 74, 39, 34, 42, 66, + + 3, 52, 65, 25, 99, 104, 102, 103, 101, 100, + 105, 109, 70, 128, 94, 92, 83, 84, 93, 91, + 64, 107, 98, 96, 97, 95, 108, 106, 76, 145, + 152, 152, 86, 57, 110, 111, 88, 69, 136, 73, + 87, 137, 54, 85, 22, 149, 68, 114, 72, 26, + 4, 61, 67, 53, 71, 56, 11, 113, 152, 36, + 2, 5, 58, 116, 60, 48, 78, 82, 80, 81, + 79, 77, 50, 138, 112, 49, 55, 21, 126, 135, + 45, 59, 30, 24, 44, 118, 117, 7, 131, 33, + 134, 38, 62, 124, 120, 130, 27, 28, 119, 132, + + 51, 127, 125, 123, 43, 6, 29, 115, 37, 8, + 17, 9, 122, 10, 121, 35, 12, 14, 13, 32, + 40, 15, 31, 133, 139, 141, 142, 16, 46, 140, + 18, 47, 19 } ; -static yyconst flex_int32_t yy_ec[256] = +static yyconst short int yy_accept[611] = + { 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, 83, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 85, 85, 85, 85, 85, 85, 85, 85, 86, 86, + + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 88, 89, 91, 92, 93, 94, + 94, 95, 96, 96, 96, 97, 97, 97, 98, 98, + 99, 99, 99, 99, 99, 100, 100, 100, 100, 100, + 100, 100, 101, 101, 101, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 104, 105, 105, 106, 107, 108, 109, 110, 111, + + 111, 112, 113, 113, 113, 114, 115, 115, 115, 115, + 115, 115, 115, 115, 116, 117, 118, 118, 119, 119, + 119, 119, 120, 121, 121, 121, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 123, 124, 125, 125, 125, + 126, 126, 127, 127, 128, 128, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 130, 130, + 130, 131, 132, 132, 132, 132, 133, 133, 133, 133, + 134, 134, 134, 135, 136, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 138, 139, 139, 139, 139, 139, 140, 141, 141, + + 141, 142, 142, 142, 142, 142, 142, 142, 142, 142, + 143, 144, 145, 145, 145, 146, 146, 146, 146, 147, + 147, 148, 148, 148, 148, 148, 148, 148, 149, 149, + 149, 149, 149, 150, 150, 150, 151, 151, 151, 152, + 152, 153, 153, 154, 155, 155, 155, 155, 155, 155, + 155, 156, 156, 156, 156, 156, 157, 157, 158, 158, + 158, 159, 160, 161, 161, 161, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 163, 163, 164, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 166, 166, 166, 166, 166, + + 166, 166, 166, 167, 167, 167, 168, 169, 170, 171, + 172, 173, 174, 174, 174, 174, 175, 175, 175, 175, + 176, 177, 177, 178, 179, 179, 179, 179, 179, 179, + 180, 180, 180, 180, 180, 180, 181, 181, 181, 182, + 182, 182, 182, 182, 182, 182, 182, 183, 184, 185, + 185, 185, 186, 187, 188, 188, 188, 189, 189, 189, + 189, 189, 190, 190, 191, 192, 193, 194, 194, 194, + 194, 195, 195, 195, 196, 197, 198, 199, 200, 200, + 200, 201, 202, 203, 204, 204, 204, 204, 204, 204, + 205, 205, 206, 206, 207, 208, 208, 208, 208, 208, + + 208, 209, 209, 209, 209, 209, 209, 209, 209, 209, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 211, 211, 211, 211, 211, 212, 212, 212, 212, 212, + 213, 214, 215, 215, 216, 216, 216, 216, 216, 217, + 217, 217, 217, 218, 218, 219, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 221, 221, 221, 221, 221, 221, 221, 221, 222, 222, + 222, 222, 222, 222, 223, 223, 223, 223, 223, 224, + 224, 224, 225, 225, 225, 225, 225, 225, 225, 225, + 225, 225, 225, 225, 225, 225, 226, 226, 227, 228, + + 229, 229, 230, 230, 231, 232, 233, 233, 234, 234 + } ; + +static yyconst int yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, @@ -492,7 +452,7 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[44] = +static yyconst int yy_meta[44] = { 0, 1, 1, 2, 1, 3, 1, 1, 3, 3, 3, 3, 3, 3, 4, 1, 3, 3, 3, 3, 3, @@ -501,7 +461,7 @@ static yyconst flex_int32_t yy_meta[44] = 3, 3, 3 } ; -static yyconst flex_int16_t yy_base[615] = +static yyconst short int yy_base[615] = { 0, 0, 0, 1308, 1309, 1309, 1309, 1303, 1292, 36, 40, 44, 50, 56, 62, 0, 63, 66, 81, 89, 47, @@ -573,7 +533,7 @@ static yyconst flex_int16_t yy_base[615] = 1179, 143, 1183, 57 } ; -static yyconst flex_int16_t yy_def[615] = +static yyconst short int yy_def[615] = { 0, 609, 1, 609, 609, 609, 609, 610, 611, 612, 609, 611, 611, 611, 611, 613, 611, 611, 611, 611, 611, @@ -645,7 +605,7 @@ static yyconst flex_int16_t yy_def[615] = 609, 609, 609, 609 } ; -static yyconst flex_int16_t yy_nxt[1353] = +static yyconst short int yy_nxt[1353] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 14, 14, 4, 15, 8, 8, 8, 16, 17, @@ -798,7 +758,7 @@ static yyconst flex_int16_t yy_nxt[1353] = 609, 609 } ; -static yyconst flex_int16_t yy_chk[1353] = +static yyconst short int yy_chk[1353] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -951,33 +911,22 @@ static yyconst flex_int16_t yy_chk[1353] = 609, 609 } ; -/* Table of booleans, true if rule could match eol. */ -static yyconst flex_int32_t yy_rule_can_match_eol[157] = - { 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, }; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -extern int Upgrade_flex_debug; -int Upgrade_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected +static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; +static char *yy_full_match; +static int yy_lp; +#define REJECT \ +{ \ +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \ +yy_cp = yy_full_match; /* restore poss. backed-over text */ \ +++yy_lp; \ +goto find_rule; \ +} #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET -char *Upgradetext; -#line 1 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +char *yytext; +#line 1 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +#define INITIAL 0 /*===-- UpgradeLexer.l - Scanner for 1.9 assembly files --------*- C++ -*--===// // // The LLVM Compiler Infrastructure @@ -990,7 +939,8 @@ char *Upgradetext; // This file implements the flex scanner for LLVM 1.9 assembly languages files. // //===----------------------------------------------------------------------===*/ -#line 28 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#define YY_NEVER_INTERACTIVE 1 +#line 28 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" #include "UpgradeInternals.h" #include "llvm/Module.h" #include @@ -1126,23 +1076,7 @@ using namespace llvm; /* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing * it to deal with 64 bit numbers. */ -#line 1130 "UpgradeLexer.cpp" - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals (void ); +#line 1080 "UpgradeLexer.cpp" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1150,30 +1084,65 @@ static int yy_init_globals (void ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int Upgradewrap (void ); +extern "C" int yywrap YY_PROTO(( void )); #else -extern int Upgradewrap (void ); +extern int yywrap YY_PROTO(( void )); #endif #endif - static inline void yyunput (int c,char *buf_ptr ); - +#ifndef YY_NO_UNPUT +static inline void yyunput YY_PROTO(( int c, char *buf_ptr )); +#endif + #ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); +static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); +static int yy_flex_strlen YY_PROTO(( yyconst char * )); #endif #ifndef YY_NO_INPUT - #ifdef __cplusplus -static int yyinput (void ); +static int yyinput YY_PROTO(( void )); +#else +static int input YY_PROTO(( void )); +#endif +#endif + +#if YY_STACK_USED +static int yy_start_stack_ptr = 0; +static int yy_start_stack_depth = 0; +static int *yy_start_stack = 0; +#ifndef YY_NO_PUSH_STATE +static void yy_push_state YY_PROTO(( int new_state )); +#endif +#ifndef YY_NO_POP_STATE +static void yy_pop_state YY_PROTO(( void )); +#endif +#ifndef YY_NO_TOP_STATE +static int yy_top_state YY_PROTO(( void )); +#endif + #else -static int input (void ); +#define YY_NO_PUSH_STATE 1 +#define YY_NO_POP_STATE 1 +#define YY_NO_TOP_STATE 1 #endif +#ifdef YY_MALLOC_DECL +YY_MALLOC_DECL +#else +#if __STDC__ +#ifndef __cplusplus +#include +#endif +#else +/* Just try to get by without declaring the routines. This will fail + * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) + * or sizeof(void*) != sizeof(int). + */ +#endif #endif /* Amount of stuff to slurp up with each read. */ @@ -1182,11 +1151,12 @@ static int input (void ); #endif /* Copy whatever the last rule matched to the standard output. */ + #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO (void) fwrite( Upgradetext, Upgradeleng, 1, Upgradeout ) +#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -1194,35 +1164,21 @@ static int input (void ); */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + if ( yy_current_buffer->yy_is_interactive ) \ { \ - int c = '*'; \ - size_t n; \ + int c = '*', n; \ for ( n = 0; n < max_size && \ - (c = getc( Upgradein )) != EOF && c != '\n'; ++n ) \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ - if ( c == EOF && ferror( Upgradein ) ) \ + if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, Upgradein))==0 && ferror(Upgradein)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(Upgradein); \ - } \ - }\ -\ - + else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ + && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - @@ -1243,20 +1199,14 @@ static int input (void ); #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif -/* end tables serialization structures and prototypes */ - /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int Upgradelex (void); - -#define YY_DECL int Upgradelex (void) -#endif /* !YY_DECL */ +#define YY_DECL int yylex YY_PROTO(( void )) +#endif -/* Code executed at the beginning of each rule, after Upgradetext and Upgradeleng +/* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION @@ -1271,67 +1221,60 @@ extern int Upgradelex (void); #define YY_RULE_SETUP \ YY_USER_ACTION -/** The main scanner function which does all the work. - */ YY_DECL -{ + { register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; + register char *yy_cp = NULL, *yy_bp = NULL; register int yy_act; - -#line 189 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" + +#line 189 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" -#line 1286 "UpgradeLexer.cpp" +#line 1234 "UpgradeLexer.cpp" - if ( !(yy_init) ) + if ( yy_init ) { - (yy_init) = 1; + yy_init = 0; #ifdef YY_USER_INIT YY_USER_INIT; #endif - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ + if ( ! yy_start ) + yy_start = 1; /* first start state */ - if ( ! Upgradein ) - Upgradein = stdin; + if ( ! yyin ) + yyin = stdin; - if ( ! Upgradeout ) - Upgradeout = stdout; + if ( ! yyout ) + yyout = stdout; - if ( ! YY_CURRENT_BUFFER ) { - Upgradeensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - Upgrade_create_buffer(Upgradein,YY_BUF_SIZE ); - } + if ( ! yy_current_buffer ) + yy_current_buffer = + yy_create_buffer( yyin, YY_BUF_SIZE ); - Upgrade_load_buffer_state( ); + yy_load_buffer_state(); } while ( 1 ) /* loops until end-of-file is reached */ { - yy_cp = (yy_c_buf_p); + yy_cp = yy_c_buf_p; - /* Support of Upgradetext. */ - *yy_cp = (yy_hold_char); + /* Support of yytext. */ + *yy_cp = yy_hold_char; /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; - yy_current_state = (yy_start); + yy_current_state = yy_start; + yy_state_ptr = yy_state_buf; + *yy_state_ptr++ = yy_current_state; yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; @@ -1339,802 +1282,807 @@ yy_match: 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 != 609 ); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); yy_find_action: - yy_act = yy_accept[yy_current_state]; + yy_current_state = *--yy_state_ptr; + yy_lp = yy_accept[yy_current_state]; +find_rule: /* we branch to this label when backing up */ + for ( ; ; ) /* until we find what rule we matched */ + { + if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] ) + { + yy_act = yy_acclist[yy_lp]; + { + yy_full_match = yy_cp; + break; + } + } + --yy_cp; + yy_current_state = *--yy_state_ptr; + yy_lp = yy_accept[yy_current_state]; + } YY_DO_BEFORE_ACTION; - if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) + if ( yy_act != YY_END_OF_BUFFER ) { int yyl; - for ( yyl = 0; yyl < Upgradeleng; ++yyl ) - if ( Upgradetext[yyl] == '\n' ) - - Upgradelineno++; -; + for ( yyl = 0; yyl < yyleng; ++yyl ) + if ( yytext[yyl] == '\n' ) + ++yylineno; } do_action: /* This label is used only to access EOF actions. */ + switch ( yy_act ) { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = (yy_hold_char); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - case 1: YY_RULE_SETUP -#line 191 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 191 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { /* Ignore comments for now */ } YY_BREAK case 2: YY_RULE_SETUP -#line 193 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 193 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return BEGINTOK; } YY_BREAK case 3: YY_RULE_SETUP -#line 194 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 194 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return ENDTOK; } YY_BREAK case 4: YY_RULE_SETUP -#line 195 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 195 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return TRUETOK; } YY_BREAK case 5: YY_RULE_SETUP -#line 196 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 196 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return FALSETOK; } YY_BREAK case 6: YY_RULE_SETUP -#line 197 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 197 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return DECLARE; } YY_BREAK case 7: YY_RULE_SETUP -#line 198 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 198 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return GLOBAL; } YY_BREAK case 8: YY_RULE_SETUP -#line 199 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 199 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return CONSTANT; } YY_BREAK case 9: YY_RULE_SETUP -#line 200 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 200 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return INTERNAL; } YY_BREAK case 10: YY_RULE_SETUP -#line 201 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 201 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return LINKONCE; } YY_BREAK case 11: YY_RULE_SETUP -#line 202 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 202 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return WEAK; } YY_BREAK case 12: YY_RULE_SETUP -#line 203 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 203 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return APPENDING; } YY_BREAK case 13: YY_RULE_SETUP -#line 204 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 204 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return DLLIMPORT; } YY_BREAK case 14: YY_RULE_SETUP -#line 205 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 205 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return DLLEXPORT; } YY_BREAK case 15: YY_RULE_SETUP -#line 206 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 206 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return EXTERN_WEAK; } YY_BREAK case 16: YY_RULE_SETUP -#line 207 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 207 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return EXTERNAL; } /* Deprecated, turn into external */ YY_BREAK case 17: YY_RULE_SETUP -#line 208 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 208 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return EXTERNAL; } YY_BREAK case 18: YY_RULE_SETUP -#line 209 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 209 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return IMPLEMENTATION; } YY_BREAK case 19: YY_RULE_SETUP -#line 210 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 210 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return ZEROINITIALIZER; } YY_BREAK case 20: YY_RULE_SETUP -#line 211 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 211 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return DOTDOTDOT; } YY_BREAK case 21: YY_RULE_SETUP -#line 212 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 212 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return UNDEF; } YY_BREAK case 22: YY_RULE_SETUP -#line 213 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 213 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return NULL_TOK; } YY_BREAK case 23: YY_RULE_SETUP -#line 214 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 214 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return TO; } YY_BREAK case 24: YY_RULE_SETUP -#line 215 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 215 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return EXCEPT; } YY_BREAK case 25: YY_RULE_SETUP -#line 216 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 216 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return NOT; } /* Deprecated, turned into XOR */ YY_BREAK case 26: YY_RULE_SETUP -#line 217 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 217 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return TAIL; } YY_BREAK case 27: YY_RULE_SETUP -#line 218 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 218 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return TARGET; } YY_BREAK case 28: YY_RULE_SETUP -#line 219 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 219 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return TRIPLE; } YY_BREAK case 29: YY_RULE_SETUP -#line 220 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 220 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return DEPLIBS; } YY_BREAK case 30: YY_RULE_SETUP -#line 221 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 221 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return ENDIAN; } YY_BREAK case 31: YY_RULE_SETUP -#line 222 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 222 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return POINTERSIZE; } YY_BREAK case 32: YY_RULE_SETUP -#line 223 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 223 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return DATALAYOUT; } YY_BREAK case 33: YY_RULE_SETUP -#line 224 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 224 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return LITTLE; } YY_BREAK case 34: YY_RULE_SETUP -#line 225 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 225 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return BIG; } YY_BREAK case 35: YY_RULE_SETUP -#line 226 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 226 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return VOLATILE; } YY_BREAK case 36: YY_RULE_SETUP -#line 227 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 227 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return ALIGN; } YY_BREAK case 37: YY_RULE_SETUP -#line 228 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 228 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return SECTION; } YY_BREAK case 38: YY_RULE_SETUP -#line 229 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 229 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return MODULE; } YY_BREAK case 39: YY_RULE_SETUP -#line 230 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 230 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return ASM_TOK; } YY_BREAK case 40: YY_RULE_SETUP -#line 231 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 231 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return SIDEEFFECT; } YY_BREAK case 41: YY_RULE_SETUP -#line 233 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 233 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return CC_TOK; } YY_BREAK case 42: YY_RULE_SETUP -#line 234 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 234 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return CCC_TOK; } YY_BREAK case 43: YY_RULE_SETUP -#line 235 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 235 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return CSRETCC_TOK; } YY_BREAK case 44: YY_RULE_SETUP -#line 236 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 236 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return FASTCC_TOK; } YY_BREAK case 45: YY_RULE_SETUP -#line 237 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 237 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return COLDCC_TOK; } YY_BREAK case 46: YY_RULE_SETUP -#line 238 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 238 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return X86_STDCALLCC_TOK; } YY_BREAK case 47: YY_RULE_SETUP -#line 239 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 239 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return X86_FASTCALLCC_TOK; } YY_BREAK case 48: YY_RULE_SETUP -#line 241 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 241 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(SBYTE, Type::Int8Ty, Signed); } YY_BREAK case 49: YY_RULE_SETUP -#line 242 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 242 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(UBYTE, Type::Int8Ty, Unsigned); } YY_BREAK case 50: YY_RULE_SETUP -#line 243 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 243 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(SHORT, Type::Int16Ty, Signed); } YY_BREAK case 51: YY_RULE_SETUP -#line 244 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 244 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(USHORT, Type::Int16Ty, Unsigned); } YY_BREAK case 52: YY_RULE_SETUP -#line 245 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 245 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(INT, Type::Int32Ty, Signed); } YY_BREAK case 53: YY_RULE_SETUP -#line 246 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 246 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(UINT, Type::Int32Ty, Unsigned); } YY_BREAK case 54: YY_RULE_SETUP -#line 247 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 247 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(LONG, Type::Int64Ty, Signed); } YY_BREAK case 55: YY_RULE_SETUP -#line 248 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 248 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(ULONG, Type::Int64Ty, Unsigned); } YY_BREAK case 56: YY_RULE_SETUP -#line 249 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 249 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(VOID, Type::VoidTy, Signless ); } YY_BREAK case 57: YY_RULE_SETUP -#line 250 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 250 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(BOOL, Type::Int1Ty, Unsigned ); } YY_BREAK case 58: YY_RULE_SETUP -#line 251 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 251 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(FLOAT, Type::FloatTy, Signless ); } YY_BREAK case 59: YY_RULE_SETUP -#line 252 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 252 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(DOUBLE, Type::DoubleTy,Signless); } YY_BREAK case 60: YY_RULE_SETUP -#line 253 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 253 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TY(LABEL, Type::LabelTy, Signless ); } YY_BREAK case 61: YY_RULE_SETUP -#line 254 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 254 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return TYPE; } YY_BREAK case 62: YY_RULE_SETUP -#line 255 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 255 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return OPAQUE; } YY_BREAK case 63: YY_RULE_SETUP -#line 257 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 257 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, AddOp, ADD); } YY_BREAK case 64: YY_RULE_SETUP -#line 258 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 258 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, SubOp, SUB); } YY_BREAK case 65: YY_RULE_SETUP -#line 259 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 259 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, MulOp, MUL); } YY_BREAK case 66: YY_RULE_SETUP -#line 260 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 260 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, DivOp, DIV); } YY_BREAK case 67: YY_RULE_SETUP -#line 261 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 261 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, UDivOp, UDIV); } YY_BREAK case 68: YY_RULE_SETUP -#line 262 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 262 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, SDivOp, SDIV); } YY_BREAK case 69: YY_RULE_SETUP -#line 263 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 263 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, FDivOp, FDIV); } YY_BREAK case 70: YY_RULE_SETUP -#line 264 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 264 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, RemOp, REM); } YY_BREAK case 71: YY_RULE_SETUP -#line 265 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 265 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, URemOp, UREM); } YY_BREAK case 72: YY_RULE_SETUP -#line 266 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 266 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, SRemOp, SREM); } YY_BREAK case 73: YY_RULE_SETUP -#line 267 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 267 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, FRemOp, FREM); } YY_BREAK case 74: YY_RULE_SETUP -#line 268 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 268 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, AndOp, AND); } YY_BREAK case 75: YY_RULE_SETUP -#line 269 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 269 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, OrOp , OR ); } YY_BREAK case 76: YY_RULE_SETUP -#line 270 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 270 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, XorOp, XOR); } YY_BREAK case 77: YY_RULE_SETUP -#line 271 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 271 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, SetNE, SETNE); } YY_BREAK case 78: YY_RULE_SETUP -#line 272 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 272 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, SetEQ, SETEQ); } YY_BREAK case 79: YY_RULE_SETUP -#line 273 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 273 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, SetLT, SETLT); } YY_BREAK case 80: YY_RULE_SETUP -#line 274 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 274 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, SetGT, SETGT); } YY_BREAK case 81: YY_RULE_SETUP -#line 275 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 275 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, SetLE, SETLE); } YY_BREAK case 82: YY_RULE_SETUP -#line 276 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 276 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(BinaryOpVal, SetGE, SETGE); } YY_BREAK case 83: YY_RULE_SETUP -#line 277 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(OtherOpVal, ICmpOp, ICMP); } +#line 277 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(BinaryOpVal, ShlOp, SHL); } YY_BREAK case 84: YY_RULE_SETUP -#line 278 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(OtherOpVal, FCmpOp, FCMP); } +#line 278 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(BinaryOpVal, ShrOp, SHR); } YY_BREAK case 85: YY_RULE_SETUP -#line 280 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return EQ; } +#line 279 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(BinaryOpVal, LShrOp, LSHR); } YY_BREAK case 86: YY_RULE_SETUP -#line 281 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return NE; } +#line 280 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(BinaryOpVal, AShrOp, ASHR); } YY_BREAK case 87: YY_RULE_SETUP -#line 282 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return SLT; } +#line 282 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(OtherOpVal, ICmpOp, ICMP); } YY_BREAK case 88: YY_RULE_SETUP -#line 283 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return SGT; } +#line 283 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(OtherOpVal, FCmpOp, FCMP); } YY_BREAK case 89: YY_RULE_SETUP -#line 284 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return SLE; } +#line 285 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return EQ; } YY_BREAK case 90: YY_RULE_SETUP -#line 285 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return SGE; } +#line 286 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return NE; } YY_BREAK case 91: YY_RULE_SETUP -#line 286 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return ULT; } +#line 287 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return SLT; } YY_BREAK case 92: YY_RULE_SETUP -#line 287 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return UGT; } +#line 288 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return SGT; } YY_BREAK case 93: YY_RULE_SETUP -#line 288 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return ULE; } +#line 289 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return SLE; } YY_BREAK case 94: YY_RULE_SETUP -#line 289 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return UGE; } +#line 290 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return SGE; } YY_BREAK case 95: YY_RULE_SETUP -#line 290 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return OEQ; } +#line 291 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return ULT; } YY_BREAK case 96: YY_RULE_SETUP -#line 291 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return ONE; } +#line 292 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return UGT; } YY_BREAK case 97: YY_RULE_SETUP -#line 292 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return OLT; } +#line 293 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return ULE; } YY_BREAK case 98: YY_RULE_SETUP -#line 293 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return OGT; } +#line 294 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return UGE; } YY_BREAK case 99: YY_RULE_SETUP -#line 294 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return OLE; } +#line 295 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return OEQ; } YY_BREAK case 100: YY_RULE_SETUP -#line 295 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return OGE; } +#line 296 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return ONE; } YY_BREAK case 101: YY_RULE_SETUP -#line 296 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return ORD; } +#line 297 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return OLT; } YY_BREAK case 102: YY_RULE_SETUP -#line 297 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return UNO; } +#line 298 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return OGT; } YY_BREAK case 103: YY_RULE_SETUP -#line 298 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return UEQ; } +#line 299 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return OLE; } YY_BREAK case 104: YY_RULE_SETUP -#line 299 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return UNE; } +#line 300 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return OGE; } YY_BREAK case 105: YY_RULE_SETUP -#line 301 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(OtherOpVal, PHIOp, PHI_TOK); } +#line 301 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return ORD; } YY_BREAK case 106: YY_RULE_SETUP -#line 302 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(OtherOpVal, CallOp, CALL); } +#line 302 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return UNO; } YY_BREAK case 107: YY_RULE_SETUP -#line 303 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(CastOpVal, CastOp, CAST); } +#line 303 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return UEQ; } YY_BREAK case 108: YY_RULE_SETUP -#line 304 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(CastOpVal, TruncOp, TRUNC); } +#line 304 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return UNE; } YY_BREAK case 109: YY_RULE_SETUP -#line 305 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(CastOpVal, ZExtOp , ZEXT); } +#line 306 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(OtherOpVal, PHIOp, PHI_TOK); } YY_BREAK case 110: YY_RULE_SETUP -#line 306 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(CastOpVal, SExtOp, SEXT); } +#line 307 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(OtherOpVal, CallOp, CALL); } YY_BREAK case 111: YY_RULE_SETUP -#line 307 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(CastOpVal, FPTruncOp, FPTRUNC); } +#line 308 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(CastOpVal, CastOp, CAST); } YY_BREAK case 112: YY_RULE_SETUP -#line 308 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(CastOpVal, FPExtOp, FPEXT); } +#line 309 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(CastOpVal, TruncOp, TRUNC); } YY_BREAK case 113: YY_RULE_SETUP -#line 309 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(CastOpVal, FPToUIOp, FPTOUI); } +#line 310 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(CastOpVal, ZExtOp , ZEXT); } YY_BREAK case 114: YY_RULE_SETUP -#line 310 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(CastOpVal, FPToSIOp, FPTOSI); } +#line 311 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(CastOpVal, SExtOp, SEXT); } YY_BREAK case 115: YY_RULE_SETUP -#line 311 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(CastOpVal, UIToFPOp, UITOFP); } +#line 312 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(CastOpVal, FPTruncOp, FPTRUNC); } YY_BREAK case 116: YY_RULE_SETUP -#line 312 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(CastOpVal, SIToFPOp, SITOFP); } +#line 313 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(CastOpVal, FPExtOp, FPEXT); } YY_BREAK case 117: YY_RULE_SETUP -#line 313 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(CastOpVal, PtrToIntOp, PTRTOINT); } +#line 314 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(CastOpVal, FPToUIOp, FPTOUI); } YY_BREAK case 118: YY_RULE_SETUP -#line 314 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(CastOpVal, IntToPtrOp, INTTOPTR); } +#line 315 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(CastOpVal, FPToSIOp, FPTOSI); } YY_BREAK case 119: YY_RULE_SETUP -#line 315 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(CastOpVal, BitCastOp, BITCAST); } +#line 316 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(CastOpVal, UIToFPOp, UITOFP); } YY_BREAK case 120: YY_RULE_SETUP -#line 316 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(OtherOpVal, SelectOp, SELECT); } +#line 317 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(CastOpVal, SIToFPOp, SITOFP); } YY_BREAK case 121: YY_RULE_SETUP -#line 317 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(OtherOpVal, ShlOp, SHL); } +#line 318 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(CastOpVal, PtrToIntOp, PTRTOINT); } YY_BREAK case 122: YY_RULE_SETUP -#line 318 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(OtherOpVal, ShrOp, SHR); } +#line 319 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(CastOpVal, IntToPtrOp, INTTOPTR); } YY_BREAK case 123: YY_RULE_SETUP -#line 319 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(OtherOpVal, LShrOp, LSHR); } +#line 320 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(CastOpVal, BitCastOp, BITCAST); } YY_BREAK case 124: YY_RULE_SETUP -#line 320 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ RET_TOK(OtherOpVal, AShrOp, ASHR); } +#line 321 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ RET_TOK(OtherOpVal, SelectOp, SELECT); } YY_BREAK case 125: YY_RULE_SETUP -#line 321 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 322 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return VANEXT_old; } YY_BREAK case 126: YY_RULE_SETUP -#line 322 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 323 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return VAARG_old; } YY_BREAK case 127: YY_RULE_SETUP -#line 323 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 324 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OtherOpVal, VAArg , VAARG); } YY_BREAK case 128: YY_RULE_SETUP -#line 324 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 325 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(TermOpVal, RetOp, RET); } YY_BREAK case 129: YY_RULE_SETUP -#line 325 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 326 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(TermOpVal, BrOp, BR); } YY_BREAK case 130: YY_RULE_SETUP -#line 326 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 327 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(TermOpVal, SwitchOp, SWITCH); } YY_BREAK case 131: YY_RULE_SETUP -#line 327 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 328 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(TermOpVal, InvokeOp, INVOKE); } YY_BREAK case 132: YY_RULE_SETUP -#line 328 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 329 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { return UNWIND; } YY_BREAK case 133: YY_RULE_SETUP -#line 329 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 330 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(TermOpVal, UnreachableOp, UNREACHABLE); } YY_BREAK case 134: YY_RULE_SETUP -#line 331 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 332 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(MemOpVal, MallocOp, MALLOC); } YY_BREAK case 135: YY_RULE_SETUP -#line 332 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 333 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(MemOpVal, AllocaOp, ALLOCA); } YY_BREAK case 136: YY_RULE_SETUP -#line 333 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 334 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(MemOpVal, FreeOp, FREE); } YY_BREAK case 137: YY_RULE_SETUP -#line 334 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 335 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(MemOpVal, LoadOp, LOAD); } YY_BREAK case 138: YY_RULE_SETUP -#line 335 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 336 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(MemOpVal, StoreOp, STORE); } YY_BREAK case 139: YY_RULE_SETUP -#line 336 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 337 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(MemOpVal, GetElementPtrOp, GETELEMENTPTR); } YY_BREAK case 140: YY_RULE_SETUP -#line 338 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 339 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OtherOpVal, ExtractElementOp, EXTRACTELEMENT); } YY_BREAK case 141: YY_RULE_SETUP -#line 339 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 340 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OtherOpVal, InsertElementOp, INSERTELEMENT); } YY_BREAK case 142: YY_RULE_SETUP -#line 340 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 341 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { RET_TOK(OtherOpVal, ShuffleVectorOp, SHUFFLEVECTOR); } YY_BREAK case 143: YY_RULE_SETUP -#line 343 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 344 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { - UnEscapeLexed(Upgradetext+1); - Upgradelval.StrVal = strdup(Upgradetext+1); // Skip % + UnEscapeLexed(yytext+1); + Upgradelval.StrVal = strdup(yytext+1); // Skip % return VAR_ID; } YY_BREAK case 144: YY_RULE_SETUP -#line 348 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 349 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { - Upgradetext[strlen(Upgradetext)-1] = 0; // nuke colon - UnEscapeLexed(Upgradetext); - Upgradelval.StrVal = strdup(Upgradetext); + yytext[strlen(yytext)-1] = 0; // nuke colon + UnEscapeLexed(yytext); + Upgradelval.StrVal = strdup(yytext); return LABELSTR; } YY_BREAK case 145: -/* rule 145 can match eol */ YY_RULE_SETUP -#line 354 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 355 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { - Upgradetext[strlen(Upgradetext)-2] = 0; // nuke colon, end quote - UnEscapeLexed(Upgradetext+1); - Upgradelval.StrVal = strdup(Upgradetext+1); + yytext[strlen(yytext)-2] = 0; // nuke colon, end quote + UnEscapeLexed(yytext+1); + Upgradelval.StrVal = strdup(yytext+1); return LABELSTR; } YY_BREAK case 146: -/* rule 146 can match eol */ YY_RULE_SETUP -#line 361 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 362 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.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 // [sbyte] c"Hello World\00" constant, for example. // - Upgradetext[strlen(Upgradetext)-1] = 0; // nuke end quote - Upgradelval.StrVal = strdup(Upgradetext+1); // Nuke start quote + yytext[strlen(yytext)-1] = 0; // nuke end quote + Upgradelval.StrVal = strdup(yytext+1); // Nuke start quote return STRINGCONSTANT; } YY_BREAK case 147: YY_RULE_SETUP -#line 372 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ Upgradelval.UInt64Val = atoull(Upgradetext); return EUINT64VAL; } +#line 373 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ Upgradelval.UInt64Val = atoull(yytext); return EUINT64VAL; } YY_BREAK case 148: YY_RULE_SETUP -#line 373 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 374 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { - uint64_t Val = atoull(Upgradetext+1); + uint64_t Val = atoull(yytext+1); // +1: we have bigger negative range if (Val > (uint64_t)INT64_MAX+1) error("Constant too large for signed 64 bits!"); @@ -2144,17 +2092,17 @@ YY_RULE_SETUP YY_BREAK case 149: YY_RULE_SETUP -#line 381 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 382 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { - Upgradelval.UInt64Val = HexIntToVal(Upgradetext+3); - return Upgradetext[0] == 's' ? ESINT64VAL : EUINT64VAL; + Upgradelval.UInt64Val = HexIntToVal(yytext+3); + return yytext[0] == 's' ? ESINT64VAL : EUINT64VAL; } YY_BREAK case 150: YY_RULE_SETUP -#line 386 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 387 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { - uint64_t Val = atoull(Upgradetext+1); + uint64_t Val = atoull(yytext+1); if ((unsigned)Val != Val) error("Invalid value number (too large)!"); Upgradelval.UIntVal = unsigned(Val); @@ -2163,9 +2111,9 @@ YY_RULE_SETUP YY_BREAK case 151: YY_RULE_SETUP -#line 393 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 394 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { - uint64_t Val = atoull(Upgradetext+2); + uint64_t Val = atoull(yytext+2); // +1: we have bigger negative range if (Val > (uint64_t)INT32_MAX+1) error("Constant too large for signed 32 bits!"); @@ -2175,65 +2123,64 @@ YY_RULE_SETUP YY_BREAK case 152: YY_RULE_SETUP -#line 402 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ Upgradelval.FPVal = atof(Upgradetext); return FPVAL; } +#line 403 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ Upgradelval.FPVal = atof(yytext); return FPVAL; } YY_BREAK case 153: YY_RULE_SETUP -#line 403 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ Upgradelval.FPVal = HexToFP(Upgradetext); return FPVAL; } +#line 404 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ Upgradelval.FPVal = HexToFP(yytext); return FPVAL; } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 405 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 406 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { /* Make sure to free the internal buffers for flex when we are * done reading our input! */ - Upgrade_delete_buffer(YY_CURRENT_BUFFER); + yy_delete_buffer(YY_CURRENT_BUFFER); return EOF; } YY_BREAK case 154: -/* rule 154 can match eol */ YY_RULE_SETUP -#line 413 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 414 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" { /* Ignore whitespace */ } YY_BREAK case 155: YY_RULE_SETUP -#line 414 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" -{ return Upgradetext[0]; } +#line 415 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" +{ return yytext[0]; } YY_BREAK case 156: YY_RULE_SETUP -#line 416 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" +#line 417 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2213 "UpgradeLexer.cpp" +#line 2160 "UpgradeLexer.cpp" case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); + *yy_cp = yy_hold_char; YY_RESTORE_YY_MORE_OFFSET - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user - * just pointed Upgradein at a new source and called - * Upgradelex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between yy_current_buffer and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = Upgradein; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + yy_n_chars = yy_current_buffer->yy_n_chars; + yy_current_buffer->yy_input_file = yyin; + yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position @@ -2243,13 +2190,13 @@ YY_FATAL_ERROR( "flex scanner jammed" ); * end-of-buffer state). Contrast this with the test * in input(). */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) { /* This was really a NUL. */ yy_state_type yy_next_state; - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; - yy_current_state = yy_get_previous_state( ); + yy_current_state = yy_get_previous_state(); /* Okay, we're now positioned to make the NUL * transition. We couldn't have @@ -2262,42 +2209,41 @@ YY_FATAL_ERROR( "flex scanner jammed" ); yy_next_state = yy_try_NUL_trans( yy_current_state ); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; + yy_bp = yytext_ptr + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); + yy_cp = ++yy_c_buf_p; yy_current_state = yy_next_state; goto yy_match; } else { - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); + yy_cp = yy_c_buf_p; goto yy_find_action; } } - else switch ( yy_get_next_buffer( ) ) + else switch ( yy_get_next_buffer() ) { case EOB_ACT_END_OF_FILE: { - (yy_did_buffer_switch_on_eof) = 0; + yy_did_buffer_switch_on_eof = 0; - if ( Upgradewrap( ) ) + if ( yywrap() ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up - * Upgradetext, we can now set up + * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; @@ -2305,30 +2251,30 @@ YY_FATAL_ERROR( "flex scanner jammed" ); else { - if ( ! (yy_did_buffer_switch_on_eof) ) + if ( ! yy_did_buffer_switch_on_eof ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; + yy_c_buf_p = + yytext_ptr + yy_amount_of_matched_text; - yy_current_state = yy_get_previous_state( ); + yy_current_state = yy_get_previous_state(); - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + yy_c_buf_p = + &yy_current_buffer->yy_ch_buf[yy_n_chars]; - yy_current_state = yy_get_previous_state( ); + yy_current_state = yy_get_previous_state(); - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; goto yy_find_action; } break; @@ -2339,7 +2285,8 @@ YY_FATAL_ERROR( "flex scanner jammed" ); "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ -} /* end of Upgradelex */ + } /* end of yylex */ + /* yy_get_next_buffer - try to read in a new buffer * @@ -2348,20 +2295,21 @@ YY_FATAL_ERROR( "flex scanner jammed" ); * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ -static int yy_get_next_buffer (void) -{ - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); + +static int yy_get_next_buffer() + { + register char *dest = yy_current_buffer->yy_ch_buf; + register char *source = yytext_ptr; register int number_to_move, i; int ret_val; - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + if ( yy_current_buffer->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. @@ -2381,30 +2329,34 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + yy_current_buffer->yy_n_chars = yy_n_chars = 0; else { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + int num_to_read = + yy_current_buffer->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ +#ifdef YY_USES_REJECT + YY_FATAL_ERROR( +"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +#else /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + YY_BUFFER_STATE b = yy_current_buffer; int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); + (int) (yy_c_buf_p - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { @@ -2417,7 +2369,8 @@ static int yy_get_next_buffer (void) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - Upgraderealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + yy_flex_realloc( (void *) b->yy_ch_buf, + b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ @@ -2427,35 +2380,35 @@ static int yy_get_next_buffer (void) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + num_to_read = yy_current_buffer->yy_buf_size - number_to_move - 1; - +#endif } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); + YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), + yy_n_chars, num_to_read ); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + yy_current_buffer->yy_n_chars = yy_n_chars; } - if ( (yy_n_chars) == 0 ) + if ( yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - Upgraderestart(Upgradein ); + yyrestart( yyin ); } else { ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + yy_current_buffer->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } @@ -2463,32 +2416,30 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + yy_n_chars += number_to_move; + yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; + yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; return ret_val; -} + } + /* yy_get_previous_state - get the state just before the EOB char was reached */ - static yy_state_type yy_get_previous_state (void) -{ +static yy_state_type yy_get_previous_state() + { register yy_state_type yy_current_state; register char *yy_cp; - - yy_current_state = (yy_start); - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + yy_current_state = yy_start; + yy_state_ptr = yy_state_buf; + *yy_state_ptr++ = yy_current_state; + + for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; @@ -2496,27 +2447,29 @@ static int yy_get_next_buffer (void) 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; } return yy_current_state; -} + } + /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ + +#ifdef YY_USE_PROTOS +static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) +#else +static yy_state_type yy_try_NUL_trans( yy_current_state ) +yy_state_type yy_current_state; +#endif + { register int yy_is_jam; - register char *yy_cp = (yy_c_buf_p); register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; @@ -2525,79 +2478,87 @@ static int yy_get_next_buffer (void) } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 609); + if ( ! yy_is_jam ) + *yy_state_ptr++ = yy_current_state; return yy_is_jam ? 0 : yy_current_state; -} + } - static inline void yyunput (int c, register char * yy_bp ) -{ - register char *yy_cp; - - yy_cp = (yy_c_buf_p); - /* undo effects of setting up Upgradetext */ - *yy_cp = (yy_hold_char); +#ifndef YY_NO_UNPUT +#ifdef YY_USE_PROTOS +static inline void yyunput( int c, register char *yy_bp ) +#else +static inline void yyunput( c, yy_bp ) +int c; +register char *yy_bp; +#endif + { + register char *yy_cp = yy_c_buf_p; + + /* undo effects of setting up yytext */ + *yy_cp = yy_hold_char; - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - register int number_to_move = (yy_n_chars) + 2; - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + register int number_to_move = yy_n_chars + 2; + register char *dest = &yy_current_buffer->yy_ch_buf[ + yy_current_buffer->yy_buf_size + 2]; register char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + &yy_current_buffer->yy_ch_buf[number_to_move]; - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + while ( source > yy_current_buffer->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + yy_current_buffer->yy_n_chars = + yy_n_chars = yy_current_buffer->yy_buf_size; - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; - if ( c == '\n' ){ - --Upgradelineno; - } + if ( c == '\n' ) + --yylineno; + + yytext_ptr = yy_bp; + yy_hold_char = *yy_cp; + yy_c_buf_p = yy_cp; + } +#endif /* ifndef YY_NO_UNPUT */ - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} #ifndef YY_NO_INPUT #ifdef __cplusplus - static int yyinput (void) +static int yyinput() #else - static int input (void) +static int input() #endif - -{ + { int c; - - *(yy_c_buf_p) = (yy_hold_char); - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + *yy_c_buf_p = yy_hold_char; + + if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; + *yy_c_buf_p = '\0'; else { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); - ++(yy_c_buf_p); + int offset = yy_c_buf_p - yytext_ptr; + ++yy_c_buf_p; - switch ( yy_get_next_buffer( ) ) + switch ( yy_get_next_buffer() ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() @@ -2611,16 +2572,16 @@ static int yy_get_next_buffer (void) */ /* Reset buffer status. */ - Upgraderestart(Upgradein ); + yyrestart( yyin ); - /*FALLTHROUGH*/ + /* fall through */ case EOB_ACT_END_OF_FILE: { - if ( Upgradewrap( ) ) + if ( yywrap() ) return EOF; - if ( ! (yy_did_buffer_switch_on_eof) ) + if ( ! yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); @@ -2630,170 +2591,169 @@ static int yy_get_next_buffer (void) } case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; + yy_c_buf_p = yytext_ptr + offset; break; } } } - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve Upgradetext */ - (yy_hold_char) = *++(yy_c_buf_p); + c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ + *yy_c_buf_p = '\0'; /* preserve yytext */ + yy_hold_char = *++yy_c_buf_p; if ( c == '\n' ) - - Upgradelineno++; -; + ++yylineno; return c; -} -#endif /* ifndef YY_NO_INPUT */ + } +#endif /* YY_NO_INPUT */ -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void Upgraderestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - Upgradeensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - Upgrade_create_buffer(Upgradein,YY_BUF_SIZE ); +#ifdef YY_USE_PROTOS +void yyrestart( FILE *input_file ) +#else +void yyrestart( input_file ) +FILE *input_file; +#endif + { + if ( ! yy_current_buffer ) + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_init_buffer( yy_current_buffer, input_file ); + yy_load_buffer_state(); } - Upgrade_init_buffer(YY_CURRENT_BUFFER,input_file ); - Upgrade_load_buffer_state( ); -} -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void Upgrade_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * Upgradepop_buffer_state(); - * Upgradepush_buffer_state(new_buffer); - */ - Upgradeensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) +#ifdef YY_USE_PROTOS +void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) +#else +void yy_switch_to_buffer( new_buffer ) +YY_BUFFER_STATE new_buffer; +#endif + { + if ( yy_current_buffer == new_buffer ) return; - if ( YY_CURRENT_BUFFER ) + if ( yy_current_buffer ) { /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + *yy_c_buf_p = yy_hold_char; + yy_current_buffer->yy_buf_pos = yy_c_buf_p; + yy_current_buffer->yy_n_chars = yy_n_chars; } - YY_CURRENT_BUFFER_LVALUE = new_buffer; - Upgrade_load_buffer_state( ); + yy_current_buffer = new_buffer; + yy_load_buffer_state(); /* We don't actually know whether we did this switch during - * EOF (Upgradewrap()) processing, but the only time this flag - * is looked at is after Upgradewrap() is called, so it's safe + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ - (yy_did_buffer_switch_on_eof) = 1; -} + yy_did_buffer_switch_on_eof = 1; + } -static void Upgrade_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - Upgradein = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE Upgrade_create_buffer (FILE * file, int size ) -{ +#ifdef YY_USE_PROTOS +void yy_load_buffer_state( void ) +#else +void yy_load_buffer_state() +#endif + { + yy_n_chars = yy_current_buffer->yy_n_chars; + yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; + yyin = yy_current_buffer->yy_input_file; + yy_hold_char = *yy_c_buf_p; + } + + +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) +#else +YY_BUFFER_STATE yy_create_buffer( file, size ) +FILE *file; +int size; +#endif + { YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) Upgradealloc(sizeof( struct yy_buffer_state ) ); + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in Upgrade_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) Upgradealloc(b->yy_buf_size + 2 ); + b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in Upgrade_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; - Upgrade_init_buffer(b,file ); + yy_init_buffer( b, file ); return b; -} + } -/** Destroy the buffer. - * @param b a buffer created with Upgrade_create_buffer() - * - */ - void Upgrade_delete_buffer (YY_BUFFER_STATE b ) -{ - + +#ifdef YY_USE_PROTOS +void yy_delete_buffer( YY_BUFFER_STATE b ) +#else +void yy_delete_buffer( b ) +YY_BUFFER_STATE b; +#endif + { if ( ! b ) return; - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + if ( b == yy_current_buffer ) + yy_current_buffer = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - Upgradefree((void *) b->yy_ch_buf ); + yy_flex_free( (void *) b->yy_ch_buf ); - Upgradefree((void *) b ); -} + yy_flex_free( (void *) b ); + } -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a Upgraderestart() or at EOF. - */ - static void Upgrade_init_buffer (YY_BUFFER_STATE b, FILE * file ) -{ - int oerrno = errno; - - Upgrade_flush_buffer(b ); + +#ifdef YY_USE_PROTOS +void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) +#else +void yy_init_buffer( b, file ) +YY_BUFFER_STATE b; +FILE *file; +#endif + + + { + yy_flush_buffer( b ); b->yy_input_file = file; b->yy_fill_buffer = 1; - /* If b is the current buffer, then Upgrade_init_buffer was _probably_ - * called from Upgraderestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } +#if YY_ALWAYS_INTERACTIVE + b->yy_is_interactive = 1; +#else +#if YY_NEVER_INTERACTIVE + b->yy_is_interactive = 0; +#else + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; +#endif +#endif + } - b->yy_is_interactive = 0; - - errno = oerrno; -} -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void Upgrade_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) +#ifdef YY_USE_PROTOS +void yy_flush_buffer( YY_BUFFER_STATE b ) +#else +void yy_flush_buffer( b ) +YY_BUFFER_STATE b; +#endif + + { + if ( ! b ) return; b->yy_n_chars = 0; @@ -2810,123 +2770,31 @@ static void Upgrade_load_buffer_state (void) b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; - if ( b == YY_CURRENT_BUFFER ) - Upgrade_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void Upgradepush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - Upgradeensure_buffer_stack(); - - /* This block is copied from Upgrade_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from Upgrade_switch_to_buffer. */ - Upgrade_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void Upgradepop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - Upgrade_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - Upgrade_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void Upgradeensure_buffer_stack (void) -{ - int num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - (yy_buffer_stack) = (struct yy_buffer_state**)Upgradealloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; + if ( b == yy_current_buffer ) + yy_load_buffer_state(); } - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)Upgraderealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE Upgrade_scan_buffer (char * base, yy_size_t size ) -{ +#ifndef YY_NO_SCAN_BUFFER +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) +#else +YY_BUFFER_STATE yy_scan_buffer( base, size ) +char *base; +yy_size_t size; +#endif + { YY_BUFFER_STATE b; - + if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; - b = (YY_BUFFER_STATE) Upgradealloc(sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in Upgrade_scan_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; @@ -2938,53 +2806,58 @@ YY_BUFFER_STATE Upgrade_scan_buffer (char * base, yy_size_t size ) b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; - Upgrade_switch_to_buffer(b ); + yy_switch_to_buffer( b ); return b; -} + } +#endif -/** Setup the input buffer state to scan a string. The next call to Upgradelex() will - * scan from a @e copy of @a str. - * @param str a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * Upgrade_scan_bytes() instead. - */ -YY_BUFFER_STATE Upgrade_scan_string (yyconst char * yystr ) -{ - - return Upgrade_scan_bytes(yystr,strlen(yystr) ); -} -/** Setup the input buffer state to scan the given bytes. The next call to Upgradelex() will - * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE Upgrade_scan_bytes (yyconst char * yybytes, int _yybytes_len ) -{ +#ifndef YY_NO_SCAN_STRING +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) +#else +YY_BUFFER_STATE yy_scan_string( yy_str ) +yyconst char *yy_str; +#endif + { + int len; + for ( len = 0; yy_str[len]; ++len ) + ; + + return yy_scan_bytes( yy_str, len ); + } +#endif + + +#ifndef YY_NO_SCAN_BYTES +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) +#else +YY_BUFFER_STATE yy_scan_bytes( bytes, len ) +yyconst char *bytes; +int len; +#endif + { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; - + /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) Upgradealloc(n ); + n = len + 2; + buf = (char *) yy_flex_alloc( n ); if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in Upgrade_scan_bytes()" ); + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; + for ( i = 0; i < len; ++i ) + buf[i] = bytes[i]; - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - b = Upgrade_scan_buffer(buf,n ); + b = yy_scan_buffer( buf, n ); if ( ! b ) - YY_FATAL_ERROR( "bad buffer in Upgrade_scan_bytes()" ); + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. @@ -2992,199 +2865,148 @@ YY_BUFFER_STATE Upgrade_scan_bytes (yyconst char * yybytes, int _yybytes_len ) b->yy_is_our_buffer = 1; return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 + } #endif -static void yy_fatal_error (yyconst char* msg ) -{ - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up Upgradetext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - Upgradetext[Upgradeleng] = (yy_hold_char); \ - (yy_c_buf_p) = Upgradetext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - Upgradeleng = yyless_macro_arg; \ - } \ - while ( 0 ) +#ifndef YY_NO_PUSH_STATE +#ifdef YY_USE_PROTOS +static void yy_push_state( int new_state ) +#else +static void yy_push_state( new_state ) +int new_state; +#endif + { + if ( yy_start_stack_ptr >= yy_start_stack_depth ) + { + yy_size_t new_size; -/* Accessor methods (get/set functions) to struct members. */ + yy_start_stack_depth += YY_START_STACK_INCR; + new_size = yy_start_stack_depth * sizeof( int ); -/** Get the current line number. - * - */ -int Upgradeget_lineno (void) -{ - - return Upgradelineno; -} + if ( ! yy_start_stack ) + yy_start_stack = (int *) yy_flex_alloc( new_size ); -/** Get the input stream. - * - */ -FILE *Upgradeget_in (void) -{ - return Upgradein; -} + else + yy_start_stack = (int *) yy_flex_realloc( + (void *) yy_start_stack, new_size ); -/** Get the output stream. - * - */ -FILE *Upgradeget_out (void) -{ - return Upgradeout; -} + if ( ! yy_start_stack ) + YY_FATAL_ERROR( + "out of memory expanding start-condition stack" ); + } -/** Get the length of the current token. - * - */ -int Upgradeget_leng (void) -{ - return Upgradeleng; -} + yy_start_stack[yy_start_stack_ptr++] = YY_START; -/** Get the current token. - * - */ + BEGIN(new_state); + } +#endif -char *Upgradeget_text (void) -{ - return Upgradetext; -} -/** Set the current line number. - * @param line_number - * - */ -void Upgradeset_lineno (int line_number ) -{ - - Upgradelineno = line_number; -} +#ifndef YY_NO_POP_STATE +static void yy_pop_state() + { + if ( --yy_start_stack_ptr < 0 ) + YY_FATAL_ERROR( "start-condition stack underflow" ); -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * - * @see Upgrade_switch_to_buffer - */ -void Upgradeset_in (FILE * in_str ) -{ - Upgradein = in_str ; -} + BEGIN(yy_start_stack[yy_start_stack_ptr]); + } +#endif -void Upgradeset_out (FILE * out_str ) -{ - Upgradeout = out_str ; -} -int Upgradeget_debug (void) -{ - return Upgrade_flex_debug; -} +#ifndef YY_NO_TOP_STATE +static int yy_top_state() + { + return yy_start_stack[yy_start_stack_ptr - 1]; + } +#endif -void Upgradeset_debug (int bdebug ) -{ - Upgrade_flex_debug = bdebug ; -} +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from Upgradelex_destroy(), so don't allocate here. - */ - - /* We do not touch Upgradelineno unless the option is enabled. */ - Upgradelineno = 1; - - (yy_buffer_stack) = 0; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = (char *) 0; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - Upgradein = stdin; - Upgradeout = stdout; +#ifdef YY_USE_PROTOS +static void yy_fatal_error( yyconst char msg[] ) #else - Upgradein = (FILE *) 0; - Upgradeout = (FILE *) 0; +static void yy_fatal_error( msg ) +char msg[]; #endif + { + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); + } - /* For future reference: Set errno on error, since we are called by - * Upgradelex_init() - */ - return 0; -} -/* Upgradelex_destroy is for both reentrant and non-reentrant scanners. */ -int Upgradelex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - Upgrade_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - Upgradepop_buffer_state(); - } - /* Destroy the stack itself. */ - Upgradefree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; +/* Redefine yyless() so it works in section 3 code. */ - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * Upgradelex() is called, initialization will occur. */ - yy_init_globals( ); +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + yytext[yyleng] = yy_hold_char; \ + yy_c_buf_p = yytext + n; \ + yy_hold_char = *yy_c_buf_p; \ + *yy_c_buf_p = '\0'; \ + yyleng = n; \ + } \ + while ( 0 ) - return 0; -} -/* - * Internal utility routines. - */ +/* Internal utility routines. */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) -{ +#ifdef YY_USE_PROTOS +static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) +#else +static void yy_flex_strncpy( s1, s2, n ) +char *s1; +yyconst char *s2; +int n; +#endif + { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; -} + } #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) -{ +#ifdef YY_USE_PROTOS +static int yy_flex_strlen( yyconst char *s ) +#else +static int yy_flex_strlen( s ) +yyconst char *s; +#endif + { register int n; for ( n = 0; s[n]; ++n ) ; return n; -} + } #endif -void *Upgradealloc (yy_size_t size ) -{ + +#ifdef YY_USE_PROTOS +static void *yy_flex_alloc( yy_size_t size ) +#else +static void *yy_flex_alloc( size ) +yy_size_t size; +#endif + { return (void *) malloc( size ); -} + } -void *Upgraderealloc (void * ptr, yy_size_t size ) -{ +#ifdef YY_USE_PROTOS +static inline void *yy_flex_realloc( void *ptr, yy_size_t size ) +#else +static inline void *yy_flex_realloc( ptr, size ) +void *ptr; +yy_size_t size; +#endif + { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -3193,16 +3015,24 @@ void *Upgraderealloc (void * ptr, yy_size_t size ) * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); -} - -void Upgradefree (void * ptr ) -{ - free( (char *) ptr ); /* see Upgraderealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#line 416 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeLexer.l" + } +#ifdef YY_USE_PROTOS +static void yy_flex_free( void *ptr ) +#else +static void yy_flex_free( ptr ) +void *ptr; +#endif + { + free( ptr ); + } +#if YY_MAIN +int main() + { + yylex(); + return 0; + } +#endif +#line 417 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l" diff --git a/tools/llvm-upgrade/UpgradeLexer.l b/tools/llvm-upgrade/UpgradeLexer.l index 0105e26ae30..f2757c45dbd 100644 --- a/tools/llvm-upgrade/UpgradeLexer.l +++ b/tools/llvm-upgrade/UpgradeLexer.l @@ -274,6 +274,11 @@ setlt { RET_TOK(BinaryOpVal, SetLT, SETLT); } setgt { RET_TOK(BinaryOpVal, SetGT, SETGT); } setle { RET_TOK(BinaryOpVal, SetLE, SETLE); } setge { RET_TOK(BinaryOpVal, SetGE, SETGE); } +shl { RET_TOK(BinaryOpVal, ShlOp, SHL); } +shr { RET_TOK(BinaryOpVal, ShrOp, SHR); } +lshr { RET_TOK(BinaryOpVal, LShrOp, LSHR); } +ashr { RET_TOK(BinaryOpVal, AShrOp, ASHR); } + icmp { RET_TOK(OtherOpVal, ICmpOp, ICMP); } fcmp { RET_TOK(OtherOpVal, FCmpOp, FCMP); } @@ -314,10 +319,6 @@ ptrtoint { RET_TOK(CastOpVal, PtrToIntOp, PTRTOINT); } inttoptr { RET_TOK(CastOpVal, IntToPtrOp, INTTOPTR); } bitcast { RET_TOK(CastOpVal, BitCastOp, BITCAST); } select { RET_TOK(OtherOpVal, SelectOp, SELECT); } -shl { RET_TOK(OtherOpVal, ShlOp, SHL); } -shr { RET_TOK(OtherOpVal, ShrOp, SHR); } -lshr { RET_TOK(OtherOpVal, LShrOp, LSHR); } -ashr { RET_TOK(OtherOpVal, AShrOp, ASHR); } vanext { return VANEXT_old; } vaarg { return VAARG_old; } va_arg { RET_TOK(OtherOpVal, VAArg , VAARG); } diff --git a/tools/llvm-upgrade/UpgradeLexer.l.cvs b/tools/llvm-upgrade/UpgradeLexer.l.cvs index 0105e26ae30..f2757c45dbd 100644 --- a/tools/llvm-upgrade/UpgradeLexer.l.cvs +++ b/tools/llvm-upgrade/UpgradeLexer.l.cvs @@ -274,6 +274,11 @@ setlt { RET_TOK(BinaryOpVal, SetLT, SETLT); } setgt { RET_TOK(BinaryOpVal, SetGT, SETGT); } setle { RET_TOK(BinaryOpVal, SetLE, SETLE); } setge { RET_TOK(BinaryOpVal, SetGE, SETGE); } +shl { RET_TOK(BinaryOpVal, ShlOp, SHL); } +shr { RET_TOK(BinaryOpVal, ShrOp, SHR); } +lshr { RET_TOK(BinaryOpVal, LShrOp, LSHR); } +ashr { RET_TOK(BinaryOpVal, AShrOp, ASHR); } + icmp { RET_TOK(OtherOpVal, ICmpOp, ICMP); } fcmp { RET_TOK(OtherOpVal, FCmpOp, FCMP); } @@ -314,10 +319,6 @@ ptrtoint { RET_TOK(CastOpVal, PtrToIntOp, PTRTOINT); } inttoptr { RET_TOK(CastOpVal, IntToPtrOp, INTTOPTR); } bitcast { RET_TOK(CastOpVal, BitCastOp, BITCAST); } select { RET_TOK(OtherOpVal, SelectOp, SELECT); } -shl { RET_TOK(OtherOpVal, ShlOp, SHL); } -shr { RET_TOK(OtherOpVal, ShrOp, SHR); } -lshr { RET_TOK(OtherOpVal, LShrOp, LSHR); } -ashr { RET_TOK(OtherOpVal, AShrOp, ASHR); } vanext { return VANEXT_old; } vaarg { return VAARG_old; } va_arg { RET_TOK(OtherOpVal, VAArg , VAARG); } diff --git a/tools/llvm-upgrade/UpgradeParser.cpp.cvs b/tools/llvm-upgrade/UpgradeParser.cpp.cvs index 515d2d6bab5..e289939e241 100644 --- a/tools/llvm-upgrade/UpgradeParser.cpp.cvs +++ b/tools/llvm-upgrade/UpgradeParser.cpp.cvs @@ -154,26 +154,26 @@ AND = 345, OR = 346, XOR = 347, - SETLE = 348, - SETGE = 349, - SETLT = 350, - SETGT = 351, - SETEQ = 352, - SETNE = 353, - ICMP = 354, - FCMP = 355, - MALLOC = 356, - ALLOCA = 357, - FREE = 358, - LOAD = 359, - STORE = 360, - GETELEMENTPTR = 361, - PHI_TOK = 362, - SELECT = 363, - SHL = 364, - SHR = 365, - ASHR = 366, - LSHR = 367, + SHL = 348, + SHR = 349, + ASHR = 350, + LSHR = 351, + SETLE = 352, + SETGE = 353, + SETLT = 354, + SETGT = 355, + SETEQ = 356, + SETNE = 357, + ICMP = 358, + FCMP = 359, + MALLOC = 360, + ALLOCA = 361, + FREE = 362, + LOAD = 363, + STORE = 364, + GETELEMENTPTR = 365, + PHI_TOK = 366, + SELECT = 367, VAARG = 368, EXTRACTELEMENT = 369, INSERTELEMENT = 370, @@ -306,26 +306,26 @@ #define AND 345 #define OR 346 #define XOR 347 -#define SETLE 348 -#define SETGE 349 -#define SETLT 350 -#define SETGT 351 -#define SETEQ 352 -#define SETNE 353 -#define ICMP 354 -#define FCMP 355 -#define MALLOC 356 -#define ALLOCA 357 -#define FREE 358 -#define LOAD 359 -#define STORE 360 -#define GETELEMENTPTR 361 -#define PHI_TOK 362 -#define SELECT 363 -#define SHL 364 -#define SHR 365 -#define ASHR 366 -#define LSHR 367 +#define SHL 348 +#define SHR 349 +#define ASHR 350 +#define LSHR 351 +#define SETLE 352 +#define SETGE 353 +#define SETLT 354 +#define SETGT 355 +#define SETEQ 356 +#define SETNE 357 +#define ICMP 358 +#define FCMP 359 +#define MALLOC 360 +#define ALLOCA 361 +#define FREE 362 +#define LOAD 363 +#define STORE 364 +#define GETELEMENTPTR 365 +#define PHI_TOK 366 +#define SELECT 367 #define VAARG 368 #define EXTRACTELEMENT 369 #define INSERTELEMENT 370 @@ -370,7 +370,7 @@ /* Copy the first part of user declarations. */ -#line 14 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 14 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" #include "UpgradeInternals.h" #include "llvm/CallingConv.h" @@ -1368,6 +1368,13 @@ getBinaryOp(BinaryOps op, const Type *Ty, Signedness Sign) { case URemOp : return Instruction::URem; case SRemOp : return Instruction::SRem; case FRemOp : return Instruction::FRem; + case LShrOp : return Instruction::LShr; + case AShrOp : return Instruction::AShr; + case ShlOp : return Instruction::Shl; + case ShrOp : + if (Sign == Signed) + return Instruction::AShr; + return Instruction::LShr; case AndOp : return Instruction::And; case OrOp : return Instruction::Or; case XorOp : return Instruction::Xor; @@ -1462,11 +1469,6 @@ getOtherOp(OtherOps op, Signedness Sign) { default : assert(0 && "Invalid OldOtherOps"); case PHIOp : return Instruction::PHI; case CallOp : return Instruction::Call; - case ShlOp : return Instruction::Shl; - case ShrOp : - if (Sign == Signed) - return Instruction::AShr; - return Instruction::LShr; case SelectOp : return Instruction::Select; case UserOp1 : return Instruction::UserOp1; case UserOp2 : return Instruction::UserOp2; @@ -1476,8 +1478,6 @@ getOtherOp(OtherOps op, Signedness Sign) { case ShuffleVectorOp : return Instruction::ShuffleVector; case ICmpOp : return Instruction::ICmp; case FCmpOp : return Instruction::FCmp; - case LShrOp : return Instruction::LShr; - case AShrOp : return Instruction::AShr; }; } @@ -1553,7 +1553,6 @@ upgradeIntrinsicCall(const Type* RetTy, const ValID &ID, error("Invalid prototype for " + Name + " prototype"); return new FCmpInst(FCmpInst::FCMP_UNO, Args[0], Args[1]); } else { - static unsigned upgradeCount = 1; const Type* PtrTy = PointerType::get(Type::Int8Ty); std::vector Params; if (Name == "llvm.va_start" || Name == "llvm.va_end") { @@ -1563,9 +1562,7 @@ upgradeIntrinsicCall(const Type* RetTy, const ValID &ID, const FunctionType *FTy = FunctionType::get(Type::VoidTy, Params, false); const PointerType *PFTy = PointerType::get(FTy); Value* Func = getVal(PFTy, ID); - std::string InstName("va_upgrade"); - InstName += llvm::utostr(upgradeCount++); - Args[0] = new BitCastInst(Args[0], PtrTy, InstName, CurBB); + Args[0] = new BitCastInst(Args[0], PtrTy, makeNameUnique("va"), CurBB); return new CallInst(Func, Args); } else if (Name == "llvm.va_copy") { if (Args.size() != 2) @@ -1575,10 +1572,8 @@ upgradeIntrinsicCall(const Type* RetTy, const ValID &ID, const FunctionType *FTy = FunctionType::get(Type::VoidTy, Params, false); const PointerType *PFTy = PointerType::get(FTy); Value* Func = getVal(PFTy, ID); - std::string InstName0("va_upgrade"); - InstName0 += llvm::utostr(upgradeCount++); - std::string InstName1("va_upgrade"); - InstName1 += llvm::utostr(upgradeCount++); + std::string InstName0(makeNameUnique("va0")); + std::string InstName1(makeNameUnique("va1")); Args[0] = new BitCastInst(Args[0], PtrTy, InstName0, CurBB); Args[1] = new BitCastInst(Args[1], PtrTy, InstName1, CurBB); return new CallInst(Func, Args); @@ -1623,7 +1618,7 @@ const Type* upgradeGEPIndices(const Type* PTy, cast(Index), Type::Int64Ty); else Index = CastInst::create(Instruction::ZExt, Index, Type::Int64Ty, - makeNameUnique("gep_upgrade"), CurBB); + makeNameUnique("gep"), CurBB); VIndices[i] = Index; } } @@ -1816,7 +1811,7 @@ using namespace llvm; #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 1440 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1435 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; @@ -1859,7 +1854,7 @@ typedef union YYSTYPE { llvm::Module::Endianness Endianness; } YYSTYPE; /* Line 196 of yacc.c. */ -#line 1863 "UpgradeParser.tab.c" +#line 1858 "UpgradeParser.tab.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -1871,7 +1866,7 @@ typedef union YYSTYPE { /* Line 219 of yacc.c. */ -#line 1875 "UpgradeParser.tab.c" +#line 1870 "UpgradeParser.tab.c" #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) # define YYSIZE_T __SIZE_TYPE__ @@ -2022,7 +2017,7 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 4 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1712 +#define YYLAST 1736 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 166 @@ -2130,14 +2125,14 @@ static const short int yyrhs[] = 200, 0, -1, 5, -1, 6, -1, 3, -1, 4, -1, 79, -1, 80, -1, 81, -1, 82, -1, 83, -1, 84, -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, 89, -1, 90, -1, 91, -1, 92, -1, 97, + -1, 98, -1, 99, -1, 100, -1, 101, -1, 102, -1, 119, -1, 120, -1, 121, -1, 122, -1, 123, -1, 124, -1, 125, -1, 126, -1, 127, -1, 128, -1, 129, -1, 130, -1, 131, -1, 132, -1, 133, -1, 134, -1, 135, -1, 136, -1, 137, -1, 138, -1, 125, -1, 126, -1, 127, -1, 128, -1, 27, - -1, 28, -1, 109, -1, 110, -1, 111, -1, 112, + -1, 28, -1, 93, -1, 94, -1, 95, -1, 96, -1, 140, -1, 141, -1, 142, -1, 143, -1, 144, -1, 145, -1, 146, -1, 147, -1, 148, -1, 149, -1, 150, -1, 151, -1, 139, -1, 16, -1, 14, @@ -2166,11 +2161,11 @@ static const short int yyrhs[] = 191, 39, -1, 191, 227, -1, 191, 197, -1, 191, 26, -1, 176, 168, -1, 177, 4, -1, 9, 27, -1, 9, 28, -1, 179, 7, -1, 175, 155, 196, - 36, 191, 156, -1, 106, 155, 196, 242, 156, -1, - 108, 155, 196, 153, 196, 153, 196, 156, -1, 169, + 36, 191, 156, -1, 110, 155, 196, 242, 156, -1, + 112, 155, 196, 153, 196, 153, 196, 156, -1, 169, 155, 196, 153, 196, 156, -1, 170, 155, 196, 153, 196, 156, -1, 171, 155, 196, 153, 196, 156, -1, - 99, 172, 155, 196, 153, 196, 156, -1, 100, 173, + 103, 172, 155, 196, 153, 196, 156, -1, 104, 173, 155, 196, 153, 196, 156, -1, 174, 155, 196, 153, 196, 156, -1, 114, 155, 196, 153, 196, 156, -1, 115, 155, 196, 153, 196, 153, 196, 156, -1, 116, @@ -2211,55 +2206,55 @@ static const short int yyrhs[] = 238, 153, 229, -1, 238, -1, -1, 60, 59, -1, 59, -1, 169, 191, 228, 153, 228, -1, 170, 191, 228, 153, 228, -1, 171, 191, 228, 153, 228, -1, - 99, 172, 191, 228, 153, 228, -1, 100, 173, 191, + 103, 172, 191, 228, 153, 228, -1, 104, 173, 191, 228, 153, 228, -1, 49, 229, -1, 174, 229, 153, - 229, -1, 175, 229, 36, 191, -1, 108, 229, 153, + 229, -1, 175, 229, 36, 191, -1, 112, 229, 153, 229, 153, 229, -1, 113, 229, 153, 191, -1, 117, 229, 153, 191, -1, 118, 229, 153, 191, -1, 114, 229, 153, 229, -1, 115, 229, 153, 229, 153, 229, - -1, 116, 229, 153, 229, 153, 229, -1, 107, 237, + -1, 116, 229, 153, 229, 153, 229, -1, 111, 237, -1, 240, 182, 189, 228, 155, 239, 156, -1, 244, - -1, 153, 238, -1, -1, 35, -1, -1, 101, 191, - 184, -1, 101, 191, 153, 15, 228, 184, -1, 102, - 191, 184, -1, 102, 191, 153, 15, 228, 184, -1, - 103, 229, -1, 243, 104, 191, 228, -1, 243, 105, - 229, 153, 191, 228, -1, 106, 191, 228, 242, -1 + -1, 153, 238, -1, -1, 35, -1, -1, 105, 191, + 184, -1, 105, 191, 153, 15, 228, 184, -1, 106, + 191, 184, -1, 106, 191, 153, 15, 228, 184, -1, + 107, 229, -1, 243, 108, 191, 228, -1, 243, 109, + 229, 153, 191, 228, -1, 110, 191, 228, 242, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short int yyrline[] = { - 0, 1580, 1580, 1581, 1589, 1590, 1600, 1600, 1600, 1600, - 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1604, 1604, 1604, - 1608, 1608, 1608, 1608, 1608, 1608, 1612, 1612, 1613, 1613, - 1614, 1614, 1615, 1615, 1616, 1616, 1620, 1620, 1621, 1621, - 1622, 1622, 1623, 1623, 1624, 1624, 1625, 1625, 1626, 1626, - 1627, 1628, 1631, 1631, 1631, 1631, 1635, 1635, 1635, 1635, - 1635, 1635, 1635, 1636, 1636, 1636, 1636, 1636, 1636, 1642, - 1642, 1642, 1642, 1646, 1646, 1646, 1646, 1650, 1650, 1654, - 1654, 1659, 1662, 1667, 1668, 1669, 1670, 1671, 1672, 1673, - 1674, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1695, - 1696, 1704, 1705, 1713, 1722, 1723, 1730, 1731, 1735, 1739, - 1755, 1756, 1763, 1764, 1771, 1779, 1779, 1779, 1779, 1779, - 1779, 1779, 1780, 1780, 1780, 1780, 1780, 1785, 1789, 1793, - 1798, 1807, 1828, 1834, 1847, 1856, 1860, 1871, 1875, 1888, - 1892, 1899, 1900, 1906, 1913, 1925, 1955, 1968, 1991, 2019, - 2041, 2052, 2074, 2085, 2094, 2099, 2157, 2164, 2172, 2179, - 2186, 2190, 2194, 2203, 2218, 2231, 2240, 2268, 2281, 2290, - 2296, 2302, 2311, 2317, 2323, 2334, 2335, 2344, 2345, 2357, - 2366, 2367, 2368, 2369, 2370, 2386, 2406, 2408, 2410, 2410, - 2417, 2417, 2424, 2424, 2431, 2431, 2439, 2441, 2443, 2448, - 2462, 2463, 2467, 2470, 2478, 2482, 2489, 2493, 2497, 2501, - 2509, 2509, 2513, 2514, 2518, 2526, 2531, 2539, 2540, 2547, - 2554, 2558, 2673, 2673, 2677, 2687, 2687, 2691, 2695, 2697, - 2698, 2702, 2702, 2714, 2715, 2720, 2721, 2722, 2723, 2724, - 2725, 2726, 2727, 2728, 2749, 2752, 2767, 2768, 2773, 2773, - 2781, 2790, 2793, 2802, 2812, 2817, 2826, 2837, 2837, 2840, - 2843, 2846, 2850, 2856, 2871, 2877, 2933, 2936, 2942, 2952, - 2965, 2994, 3002, 3010, 3014, 3021, 3022, 3026, 3029, 3035, - 3052, 3068, 3082, 3094, 3106, 3117, 3126, 3135, 3144, 3151, - 3172, 3196, 3202, 3208, 3214, 3230, 3308, 3316, 3317, 3321, - 3322, 3326, 3332, 3338, 3344, 3350, 3357, 3369, 3383 + 0, 1575, 1575, 1576, 1584, 1585, 1595, 1595, 1595, 1595, + 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1599, 1599, 1599, + 1603, 1603, 1603, 1603, 1603, 1603, 1607, 1607, 1608, 1608, + 1609, 1609, 1610, 1610, 1611, 1611, 1615, 1615, 1616, 1616, + 1617, 1617, 1618, 1618, 1619, 1619, 1620, 1620, 1621, 1621, + 1622, 1623, 1626, 1626, 1626, 1626, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1631, 1631, 1631, 1631, 1631, 1631, 1637, + 1637, 1637, 1637, 1641, 1641, 1641, 1641, 1645, 1645, 1649, + 1649, 1654, 1657, 1662, 1663, 1664, 1665, 1666, 1667, 1668, + 1669, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1690, + 1691, 1699, 1700, 1708, 1717, 1718, 1725, 1726, 1730, 1734, + 1750, 1751, 1758, 1759, 1766, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1775, 1775, 1775, 1775, 1775, 1780, 1784, 1788, + 1793, 1802, 1823, 1829, 1842, 1851, 1855, 1866, 1870, 1883, + 1887, 1894, 1895, 1901, 1908, 1920, 1950, 1963, 1986, 2014, + 2036, 2047, 2069, 2080, 2089, 2094, 2152, 2159, 2167, 2174, + 2181, 2185, 2189, 2198, 2213, 2226, 2235, 2263, 2276, 2285, + 2291, 2297, 2308, 2314, 2320, 2331, 2332, 2341, 2342, 2354, + 2363, 2364, 2365, 2366, 2367, 2383, 2403, 2405, 2407, 2407, + 2414, 2414, 2421, 2421, 2428, 2428, 2436, 2438, 2440, 2445, + 2459, 2460, 2464, 2467, 2475, 2479, 2486, 2490, 2494, 2498, + 2506, 2506, 2510, 2511, 2515, 2523, 2528, 2536, 2537, 2544, + 2551, 2555, 2670, 2670, 2674, 2684, 2684, 2688, 2692, 2694, + 2695, 2699, 2699, 2711, 2712, 2717, 2718, 2719, 2720, 2721, + 2722, 2723, 2724, 2725, 2746, 2749, 2764, 2765, 2770, 2770, + 2778, 2787, 2790, 2799, 2809, 2814, 2823, 2834, 2834, 2837, + 2840, 2843, 2847, 2853, 2868, 2874, 2930, 2933, 2939, 2949, + 2962, 2991, 2999, 3007, 3011, 3018, 3019, 3023, 3026, 3032, + 3049, 3065, 3079, 3091, 3103, 3114, 3132, 3141, 3150, 3157, + 3178, 3202, 3208, 3214, 3220, 3236, 3314, 3322, 3323, 3327, + 3328, 3332, 3338, 3344, 3350, 3356, 3363, 3375, 3389 }; #endif @@ -2282,10 +2277,10 @@ static const char *const yytname[] = "COLDCC_TOK", "X86_STDCALLCC_TOK", "X86_FASTCALLCC_TOK", "DATALAYOUT", "RET", "BR", "SWITCH", "INVOKE", "UNREACHABLE", "UNWIND", "EXCEPT", "ADD", "SUB", "MUL", "DIV", "UDIV", "SDIV", "FDIV", "REM", "UREM", - "SREM", "FREM", "AND", "OR", "XOR", "SETLE", "SETGE", "SETLT", "SETGT", - "SETEQ", "SETNE", "ICMP", "FCMP", "MALLOC", "ALLOCA", "FREE", "LOAD", - "STORE", "GETELEMENTPTR", "PHI_TOK", "SELECT", "SHL", "SHR", "ASHR", - "LSHR", "VAARG", "EXTRACTELEMENT", "INSERTELEMENT", "SHUFFLEVECTOR", + "SREM", "FREM", "AND", "OR", "XOR", "SHL", "SHR", "ASHR", "LSHR", + "SETLE", "SETGE", "SETLT", "SETGT", "SETEQ", "SETNE", "ICMP", "FCMP", + "MALLOC", "ALLOCA", "FREE", "LOAD", "STORE", "GETELEMENTPTR", "PHI_TOK", + "SELECT", "VAARG", "EXTRACTELEMENT", "INSERTELEMENT", "SHUFFLEVECTOR", "VAARG_old", "VANEXT_old", "EQ", "NE", "SLT", "SGT", "SLE", "SGE", "ULT", "UGT", "ULE", "UGE", "OEQ", "ONE", "OLT", "OGT", "OLE", "OGE", "ORD", "UNO", "UEQ", "UNE", "CAST", "TRUNC", "ZEXT", "SEXT", "FPTRUNC", "FPEXT", @@ -2427,9 +2422,9 @@ static const unsigned short int yydefact[] = 0, 0, 232, 130, 0, 0, 0, 113, 135, 139, 0, 0, 144, 138, 299, 0, 278, 0, 0, 0, 0, 91, 267, 257, 258, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 0, 0, 0, 0, 0, - 0, 0, 0, 52, 53, 54, 55, 0, 0, 0, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 52, + 53, 54, 55, 20, 21, 22, 23, 24, 25, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 0, 0, 0, 0, 0, 266, 253, 91, 270, 0, 296, 204, 201, 200, @@ -2491,83 +2486,83 @@ static const short int yydefgoto[] = /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -508 +#define YYPACT_NINF -541 static const short int yypact[] = { - -508, 18, 144, 546, -508, -508, -508, -508, -508, -508, - -508, -508, -508, -508, 2, 152, 47, -508, -508, -15, - -508, -508, -30, -75, 29, 69, -10, -508, 98, 104, - 151, -508, -508, -508, -508, -508, -508, 1307, -8, -508, - -508, 149, -508, -508, -508, -508, 11, 20, 22, 24, - -508, 27, 104, 1307, 0, 0, 0, 0, -508, -508, - -508, 152, -508, -508, -508, -508, -508, 37, -508, -508, - -508, -508, -508, -508, -508, -508, -508, -508, -508, -508, - -508, 194, 200, 3, 695, -508, 149, 54, -508, -508, - -81, -508, -508, -508, -508, -508, 1561, -508, 186, -19, - 210, 188, 203, -508, -508, -508, -508, -508, 1368, 1368, - 1368, 1409, -508, -508, 66, 70, 715, -508, -508, -81, - -85, 75, 781, -508, -508, 1368, -508, 172, 1429, 58, - 255, 152, -508, -508, -508, -508, -508, -508, -508, -508, - -508, -508, -508, -508, -508, -508, -508, -508, -508, -508, - -508, -508, -508, -508, -508, 208, 394, 1368, 1368, 1368, - 1368, 1368, 1368, -508, -508, -508, -508, 1368, 1368, 1368, - 1368, 1368, 1368, -508, -508, -508, -508, -508, -508, -508, - -508, -508, -508, -508, -508, -508, 1368, 1368, 1368, 1368, - 1368, -508, -508, 152, -508, 55, -508, -508, -508, -508, - -508, -508, -508, -508, -50, -508, -508, -508, 153, 179, - 228, 191, 229, 193, 230, 197, 231, 233, 234, 199, - 232, 235, 537, -508, 1368, 1368, 84, -45, 1368, -508, - 1149, -508, 93, 91, 898, -508, -508, 37, -508, 898, - 898, -508, -508, -508, -508, -508, -508, -508, -508, -508, - -508, 898, 1307, -508, -508, -508, -508, -508, -508, -508, - -508, -508, -508, 1368, -508, -508, -508, -508, -508, -508, - -508, -508, -508, -508, -508, -508, -508, -508, -508, -508, - 1368, 95, 96, -508, 898, 99, 97, 105, 106, 107, - 120, 123, 126, 127, 898, 898, 898, 128, 221, 1307, - 1368, 1368, 258, -508, 132, 132, 132, -508, -508, -508, - -508, -508, -508, -508, -508, -508, -508, 208, 394, 131, - 134, 135, 136, 137, 1190, 1470, 736, 259, 139, 140, - 141, 142, 148, -508, -508, 132, -130, -23, -508, 143, - -81, -508, 149, -508, 155, 154, 1210, -508, -508, -508, - -508, -508, -508, -508, -508, -508, 224, 1409, -508, -508, - -508, -508, 156, -508, 163, 898, 898, 898, 4, -508, - 5, -508, 164, 898, 162, 1368, 1368, 1368, 1368, 1368, - 1368, 1368, 167, 168, 169, 1368, 1368, 898, 898, 170, - -508, -17, -508, -508, -508, 150, 182, 1409, 1409, 1409, - 1409, 1409, -508, -508, -13, 756, -24, -508, -36, -508, - 1409, 1409, 1409, 1409, 1409, -508, -508, -508, -508, -508, - -508, 1251, 290, -508, -508, 301, -14, 324, 325, 198, - 201, 202, 898, 348, 898, 1368, -508, 204, 898, 205, - -508, -508, 211, 214, -508, -508, 898, 898, 898, -508, - -508, 213, -508, 1368, 332, 365, -508, 132, 1409, 1409, - 164, 217, 222, 223, 225, 1409, -508, 216, -71, -27, - -508, -508, 226, 236, 237, 240, 338, -508, -508, -508, - 326, 241, -508, 898, 898, 1368, 898, 898, 242, -508, - 242, -508, 243, 898, 244, 1368, 1368, 1368, -508, -508, - -508, 1368, 898, -508, -508, -508, 246, 247, 245, 1409, - 1409, 1409, 1409, -508, -508, 220, 1409, 1409, 1409, 1409, - 1368, 378, -508, 361, 249, 248, 243, 250, -508, -508, - 329, -508, -508, 1368, 256, 898, -508, -508, -508, 251, - -508, 1409, 1409, -508, 261, 252, 270, 271, -508, 269, - 272, 275, 279, 280, -508, -508, 367, 40, 368, -508, - -508, 267, -508, 281, 282, 1409, -508, 1409, 1409, -508, - -508, -508, -508, -508, 898, -508, 996, 85, 382, -508, - -508, -508, 283, 285, 288, -508, 274, -508, 996, 898, - -508, -508, -508, 424, 293, 130, 898, 426, 430, -508, - 898, 898, -508, -508 + -541, 28, 61, 478, -541, -541, -541, -541, -541, -541, + -541, -541, -541, -541, 23, 152, 45, -541, -541, -9, + -541, -541, -20, -51, 76, 69, 12, -541, 97, 149, + 172, -541, -541, -541, -541, -541, -541, 1331, -19, -541, + -541, 137, -541, -541, -541, -541, 49, 58, 60, 62, + -541, 72, 149, 1331, 88, 88, 88, 88, -541, -541, + -541, 152, -541, -541, -541, -541, -541, 75, -541, -541, + -541, -541, -541, -541, -541, -541, -541, -541, -541, -541, + -541, 227, 228, 3, 691, -541, 137, 79, -541, -541, + -46, -541, -541, -541, -541, -541, 1585, -541, 212, 136, + 233, 214, 216, -541, -541, -541, -541, -541, 1392, 1392, + 1392, 1433, -541, -541, 83, 87, 711, -541, -541, -46, + -70, 89, 777, -541, -541, 1392, -541, 183, 1453, 6, + 309, 152, -541, -541, -541, -541, -541, -541, -541, -541, + -541, -541, -541, -541, -541, -541, -541, -541, -541, -541, + -541, -541, -541, -541, -541, -541, -541, -541, -541, 59, + 142, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 1392, -541, -541, -541, -541, -541, -541, -541, + -541, -541, -541, -541, -541, -541, 1392, 1392, 1392, 1392, + 1392, -541, -541, 152, -541, 86, -541, -541, -541, -541, + -541, -541, -541, -541, -129, -541, -541, -541, 169, 196, + 242, 200, 246, 203, 252, 205, 253, 251, 258, 221, + 255, 259, 533, -541, 1392, 1392, 99, -63, 1392, -541, + 1173, -541, 128, 126, 894, -541, -541, 75, -541, 894, + 894, -541, -541, -541, -541, -541, -541, -541, -541, -541, + -541, 894, 1331, -541, -541, -541, -541, -541, -541, -541, + -541, -541, -541, 1392, -541, -541, -541, -541, -541, -541, + -541, -541, -541, -541, -541, -541, -541, -541, -541, -541, + 1392, 130, 133, -541, 894, 132, 138, 139, 143, 144, + 151, 155, 156, 157, 894, 894, 894, 163, 254, 1331, + 1392, 1392, 271, -541, 164, 164, 164, -541, -541, -541, + -541, -541, -541, -541, -541, -541, -541, 59, 142, 173, + 174, 175, 176, 177, 1214, 1494, 732, 281, 178, 179, + 180, 182, 190, -541, -541, 164, -42, -135, -541, 166, + -46, -541, 137, -541, 193, 191, 1234, -541, -541, -541, + -541, -541, -541, -541, -541, -541, 290, 1433, -541, -541, + -541, -541, 201, -541, 202, 894, 894, 894, 7, -541, + 10, -541, 204, 894, 199, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 211, 215, 217, 1392, 1392, 894, 894, 223, + -541, -21, -541, -541, -541, 210, 219, 1433, 1433, 1433, + 1433, 1433, -541, -541, 4, 752, -91, -541, -8, -541, + 1433, 1433, 1433, 1433, 1433, -541, -541, -541, -541, -541, + -541, 1275, 324, -541, -541, 343, 37, 348, 356, 224, + 225, 229, 894, 376, 894, 1392, -541, 230, 894, 232, + -541, -541, 234, 235, -541, -541, 894, 894, 894, -541, + -541, 226, -541, 1392, 362, 385, -541, 164, 1433, 1433, + 204, 238, 239, 240, 241, 1433, -541, 243, -17, -5, + -541, -541, 247, 250, 261, 262, 359, -541, -541, -541, + 339, 268, -541, 894, 894, 1392, 894, 894, 269, -541, + 269, -541, 270, 894, 272, 1392, 1392, 1392, -541, -541, + -541, 1392, 894, -541, -541, -541, 273, 274, 249, 1433, + 1433, 1433, 1433, -541, -541, 245, 1433, 1433, 1433, 1433, + 1392, 395, -541, 383, 275, 267, 270, 279, -541, -541, + 351, -541, -541, 1392, 277, 894, -541, -541, -541, 282, + -541, 1433, 1433, -541, 278, 283, 284, 288, -541, 289, + 291, 295, 296, 297, -541, -541, 423, 43, 410, -541, + -541, 298, -541, 300, 305, 1433, -541, 1433, 1433, -541, + -541, -541, -541, -541, 894, -541, 1020, 64, 441, -541, + -541, -541, 307, 311, 314, -541, 312, -541, 1020, 894, + -541, -541, -541, 450, 319, 150, 894, 452, 453, -541, + 894, 894, -541, -541 }; /* YYPGOTO[NTERM-NUM]. */ static const short int yypgoto[] = { - -508, -508, -508, 356, 357, 360, 145, 147, 371, 374, - -128, -127, -497, -508, 416, 436, -117, -508, -277, 41, - -508, -296, -508, -47, -508, -37, -508, -58, 46, -508, - -99, 253, -298, 49, -508, -508, -508, -508, -508, -508, - -508, 419, -508, -508, -508, -508, 8, -508, 51, -508, - -508, 412, -508, -508, -508, -508, -508, 471, -508, -508, - -507, -209, 67, -124, -508, 457, -508, -118, -508, -508, - -508, -508, 43, -22, -508, -508, 21, -508, -508 + -541, -541, -541, 379, 380, 381, 161, 162, 386, 388, + -128, -127, -540, -541, 438, 456, -111, -541, -277, 63, + -541, -297, -541, -47, -541, -37, -541, -53, 40, -541, + -99, 264, -307, 84, -541, -541, -541, -541, -541, -541, + -541, 435, -541, -541, -541, -541, 8, -541, 68, -541, + -541, 427, -541, -541, -541, -541, -541, 487, -541, -541, + -489, -199, 67, -124, -541, 472, -541, -103, -541, -541, + -541, -541, 71, -7, -541, -541, 33, -541, -541 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -2577,354 +2572,358 @@ static const short int yypgoto[] = #define YYTABLE_NINF -180 static const short int yytable[] = { - 88, 235, 249, 250, 238, 371, 105, 115, 39, 393, - 394, 26, 223, 334, 252, 42, 88, 454, 4, 432, - 434, 93, 46, 47, 48, 360, 119, 406, 408, 416, - 360, 360, 106, 107, 123, 283, 198, 199, 287, 415, - 455, 49, 360, 288, 289, 290, 291, 292, 293, 26, - 241, 242, 243, 244, 245, 246, 247, 248, 119, 426, - 576, 433, 433, 29, 119, 297, 298, 239, 228, 586, - 39, 205, 206, 207, -112, 360, 299, 51, 229, 240, - 588, 594, -139, 123, -112, 360, 360, 360, 234, 53, - 52, 234, -139, 123, 121, 241, 242, 243, 244, 245, - 246, 247, 248, 302, 109, 110, 111, 469, 228, 303, - 7, 8, 9, 10, 54, 12, 55, 465, 339, 56, - 281, 282, 234, 284, 285, 234, 465, 471, 62, 465, - 234, 234, 234, 234, 234, 234, 515, 470, 417, 465, - 465, 123, 58, 59, -179, 60, 466, 482, 43, 294, - 295, 296, 234, 234, 94, 64, 360, 360, 360, 300, - 301, 505, 227, 98, 360, 116, 336, 337, 232, 5, - 340, 20, 99, 21, 100, 6, 101, 389, 360, 360, - 307, 308, -72, -72, 102, 7, 8, 9, 10, 11, - 12, 13, -113, 342, -71, -71, -70, -70, 113, 575, - -69, -69, 309, 310, 114, 365, 14, 133, 134, 122, - 197, 531, 202, 532, 201, 88, 30, 31, 32, 33, - 34, 35, 36, 360, 224, 360, 366, 203, 225, 360, - 230, 236, -76, -75, -74, -73, 312, 360, 360, 360, - -79, -80, 313, 367, 587, 338, 346, 347, 368, 370, - 374, 439, 387, 441, 442, 443, 373, 386, 375, 376, - 377, 449, 88, 388, 234, 241, 242, 243, 244, 245, - 246, 247, 248, 378, 360, 360, 379, 360, 360, 380, - 381, 385, 390, 409, 360, 391, 397, 424, 340, 398, - 399, 400, 401, 360, 410, 411, 412, 413, 460, 461, - 462, 463, 464, 414, 418, 458, 362, 363, 421, 427, - 422, 472, 473, 474, 475, 476, 428, 435, 364, 438, - 446, 447, 448, 453, 454, 481, 360, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 459, 234, 440, - 234, 234, 234, 444, 445, 483, 484, 468, 234, 450, - 419, 372, 489, 485, 486, 487, 503, 493, 495, 506, - 507, 382, 383, 384, 496, 360, 513, 497, 501, 504, - 509, 536, 537, 538, 520, 510, 511, 514, 512, 516, - 360, 548, 554, 521, 342, 555, 433, 360, 574, 517, - 518, 360, 360, 519, 523, 530, 533, 535, 234, 541, - 542, 543, 556, 589, 578, 557, 558, 562, 566, 559, - 544, 545, 546, 547, 565, 560, 502, 549, 550, 551, - 552, 264, 265, 567, 568, 569, 579, 593, 570, 249, - 250, 571, 429, 430, 431, 572, 573, 580, 581, 590, - 437, 591, 563, 564, 592, 596, 597, 600, 234, 249, - 250, 601, 186, 187, 451, 452, 188, 96, 234, 234, - 234, 57, 395, 479, 234, 396, 582, 189, 583, 584, - 190, 104, 478, 112, 27, 333, 45, 598, 492, 539, - 0, 508, 0, 553, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 234, 0, 0, 488, - 0, 490, 0, 0, 0, 494, 0, 0, 0, 0, - 0, 0, 0, 498, 499, 500, 0, 0, 0, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 65, 66, 0, 0, 0, 0, 0, 0, - 524, 525, 0, 528, 529, 0, 0, 0, 0, 20, - 534, 21, 0, 314, 0, 0, -82, 0, 20, 540, - 21, 0, 0, 0, 0, 315, 316, 6, -82, -82, - 0, 0, 0, 0, 0, 0, 0, -82, -82, -82, - -82, -82, -82, -82, 0, 0, -82, 22, 0, 0, - 0, 0, 561, 0, 23, 0, 0, 0, 24, 0, - 0, 0, 0, 0, 0, 0, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 317, 318, 0, 0, - 0, 585, 0, 319, 0, 320, 163, 164, 165, 166, - 0, 321, 322, 323, 0, 0, 595, 0, 0, 0, + 88, 235, 249, 250, 238, 371, 105, 115, 393, 394, + 93, 26, 223, 454, 39, 239, 88, 576, 406, 408, + 252, 42, 432, 334, 302, 434, 417, 240, 4, 123, + 303, 119, 46, 47, 48, 360, 455, 588, 415, 283, + 360, 360, 287, 288, 289, 290, 291, 292, 293, 26, + 426, 49, 360, 241, 242, 243, 244, 245, 246, 247, + 248, -179, 465, 119, 433, 297, 298, 433, 39, 119, + 470, 205, 206, 207, 241, 242, 243, 244, 245, 246, + 247, 248, 299, 228, 29, 360, 5, 586, 234, 53, + 228, 234, 6, 229, 121, 360, 360, 360, 469, 594, + 339, 51, 7, 8, 9, 10, 11, 12, 13, -112, + 7, 8, 9, 10, 54, 12, 55, 416, 123, 56, + 106, 107, 123, 14, 281, 282, 234, 284, 285, 234, + 234, 234, 234, 234, 234, 234, -139, 52, -112, 109, + 110, 111, 59, 94, 60, 465, -139, 123, 465, 294, + 295, 296, 234, 234, 43, 471, 227, 465, 515, 20, + 505, 21, 232, 466, 58, 116, 360, 360, 360, 264, + 265, 336, 337, 62, 360, 340, 64, 389, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 360, 360, + 465, 198, 199, 342, 300, 301, 307, 308, 482, -72, + -72, 98, 575, -71, -71, 365, -70, -70, -69, -69, + 99, 531, 100, 532, 101, 88, 30, 31, 32, 33, + 34, 35, 36, 587, 309, 310, 366, 133, 134, 102, + -113, 113, 114, 360, 122, 360, 197, 201, 202, 360, + 203, 224, 236, 367, 230, 225, -76, 360, 360, 360, + -75, 439, 387, 441, 442, 443, -74, -73, -79, 312, + 338, 449, 88, 388, 234, -80, 313, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 346, 347, 368, 360, 360, 370, 360, 360, 373, + 386, 374, 375, 340, 360, 390, 376, 377, 460, 461, + 462, 463, 464, 360, 378, 409, 362, 363, 379, 380, + 381, 472, 473, 474, 475, 476, 385, 391, 364, 241, + 242, 243, 244, 245, 246, 247, 248, 418, 397, 398, + 399, 400, 401, 410, 411, 412, 360, 413, 234, 440, + 234, 234, 234, 444, 445, 414, 421, 422, 234, 450, + 419, 372, 468, 424, 427, 428, 438, 435, 454, 506, + 507, 382, 383, 384, 446, 458, 513, 481, 447, 483, + 448, 536, 537, 538, 459, 360, 453, 484, 486, 485, + 489, 501, 487, 493, 342, 495, 503, 496, 497, 504, + 360, 509, 510, 511, 512, 520, 521, 360, 234, 554, + 516, 360, 360, 517, 514, 543, 548, 555, 433, 559, + 544, 545, 546, 547, 518, 519, 502, 549, 550, 551, + 552, 523, 530, 533, 557, 535, 541, 542, 556, 249, + 250, 565, 429, 430, 431, 558, 560, 567, 562, 566, + 437, 568, 563, 564, 574, 569, 578, 570, 234, 249, + 250, 571, 572, 573, 451, 452, 580, 579, 234, 234, + 234, 581, 589, 590, 234, 593, 582, 591, 583, 584, + 592, 596, 597, 600, 601, 186, 187, 188, 395, 96, + 396, 57, 189, 553, 190, 479, 333, 104, 112, 478, + 27, 45, 598, 508, 539, 0, 234, 0, -82, 488, + 20, 490, 21, 0, 0, 494, 492, 0, 0, 6, + -82, -82, 0, 498, 499, 500, 0, 0, 0, -82, + -82, -82, -82, -82, -82, -82, 0, 0, -82, 22, + 0, 0, 0, 0, 0, 0, 23, 0, 65, 66, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 524, 525, 0, 528, 529, 20, 0, 21, 0, 314, + 534, 0, 0, 0, 0, 0, 0, 0, 0, 540, + 0, 315, 316, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 561, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 317, 318, 0, 0, + 0, 585, 0, 319, 0, 320, 0, 321, 322, 323, + 0, 0, 0, 0, 0, 0, 595, 0, 0, 0, 0, 0, 0, 599, 0, 0, 0, 602, 603, 0, - 0, 0, 0, 0, 0, 0, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 0, - 0, 0, 0, 0, 324, 0, 0, 325, 0, 326, - 65, 66, 327, 117, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 0, 79, 20, 0, 21, - 65, 66, 0, 117, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 0, 79, 20, 0, 21, - 0, 65, 66, 80, 117, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 0, 79, 20, 0, - 21, 65, 66, 80, 117, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 0, 79, 20, 0, - 21, 0, 0, 0, 80, 0, 65, 66, 0, 117, + 0, 0, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 0, 0, 0, 0, 0, + 324, 0, 0, 325, 0, 326, 65, 66, 327, 117, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 0, 79, 20, 80, 21, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, + 78, 0, 79, 20, 0, 21, 65, 66, 0, 117, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 0, 79, 20, 0, 21, 0, 65, 66, 80, + 117, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 0, 79, 20, 0, 21, 65, 66, 80, + 117, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 0, 79, 20, 0, 21, 0, 0, 0, + 80, 0, 65, 66, 0, 117, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 0, 79, 20, + 80, 21, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, - 0, 0, 82, 0, 0, 83, 0, 84, 118, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, - 0, 0, 82, 0, 0, 83, 0, 84, 226, 0, + 0, 0, 0, 0, 0, 81, 0, 0, 82, 0, + 0, 83, 0, 84, 118, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 81, 0, 0, 82, 0, + 0, 83, 0, 84, 226, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 81, 0, 0, 82, + 0, 0, 83, 0, 84, 407, 0, 348, 349, 65, + 66, 350, 0, 0, 0, 0, 81, 0, 0, 82, + 0, 0, 83, 0, 84, 467, 20, 0, 21, 0, + 351, 352, 353, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 354, 355, 82, 0, 0, 83, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 81, 0, 0, 82, 0, 0, 83, 0, 84, 407, - 0, 348, 349, 65, 66, 350, 0, 0, 0, 0, - 81, 0, 0, 82, 0, 0, 83, 0, 84, 467, - 20, 0, 21, 0, 351, 352, 353, 0, 0, 0, - 0, 0, 0, 0, 0, 81, 354, 355, 82, 0, - 0, 83, 0, 84, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 356, + 0, 0, 0, 0, 0, 356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 317, 318, 348, - 349, 0, 0, 350, 319, 0, 320, 163, 164, 165, - 166, 0, 321, 322, 323, 0, 0, 0, 0, 0, - 0, 0, 351, 352, 353, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 354, 355, 0, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 0, 0, 0, 0, 0, 0, 0, 356, 357, 0, + 0, 0, 0, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 317, 318, 0, + 0, 0, 0, 0, 319, 0, 320, 0, 321, 322, + 323, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 348, 349, 0, 0, 350, 0, 0, + 0, 0, 0, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 351, 352, 353, 0, + 0, 0, 0, 0, 357, 0, 0, 0, 354, 355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 317, 318, 0, 0, 0, - 0, 0, 319, 0, 320, 163, 164, 165, 166, 0, - 321, 322, 323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 0, 0, - 0, 0, 0, 0, 65, 66, 357, 117, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 0, - 79, 20, 0, 21, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 341, 0, 0, 0, - 0, 0, 0, 0, 0, 65, 66, 80, 117, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 0, 79, 20, 0, 21, 65, 66, 0, 117, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 0, 79, 20, 0, 21, 0, 0, 0, 80, 0, - 0, 0, 0, 0, 0, 0, 0, 423, 0, 0, - 0, 0, 0, 0, 0, 0, 65, 66, 80, 117, + 0, 356, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 317, 318, 0, 0, 0, 0, 0, + 319, 0, 320, 0, 321, 322, 323, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 0, 0, 0, 0, 0, 0, 65, 66, + 357, 117, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 0, 79, 20, 0, 21, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 341, 0, 0, 0, 0, 0, 0, 0, 0, 65, + 66, 80, 117, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 0, 79, 20, 0, 21, 65, + 66, 0, 117, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 0, 79, 20, 0, 21, 0, + 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, + 0, 423, 0, 0, 0, 0, 0, 0, 0, 0, + 65, 66, 80, 117, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 0, 79, 20, 0, 21, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 477, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 80, 0, 0, 0, 81, 0, 0, + 82, 0, 0, 83, 0, 84, 65, 66, 0, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 0, 79, 20, 0, 21, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 477, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, - 0, 0, 0, 81, 0, 0, 82, 0, 0, 83, - 0, 84, 65, 66, 0, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 0, 79, 20, - 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 81, 0, 0, 82, 0, 402, - 83, 0, 84, 0, 0, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 81, 0, 0, 82, 0, 0, - 83, 0, 84, 65, 66, 0, 117, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 0, 79, - 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 81, 0, 0, 82, 0, - 0, 83, 0, 84, 65, 66, 80, 117, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 0, - 79, 20, 0, 21, 65, 66, 0, 237, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 0, - 79, 20, 0, 21, 0, 0, 0, 80, 0, 0, - 0, 81, 0, 0, 82, 0, 0, 83, 0, 84, - 0, 0, 0, 0, 0, 65, 66, 80, 117, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 0, 79, 20, 0, 21, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, - 0, 0, 81, 0, 0, 82, 0, 0, 83, 0, - 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, + 0, 82, 0, 402, 83, 0, 84, 0, 0, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, + 0, 82, 0, 0, 83, 0, 84, 65, 66, 0, + 117, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 0, 79, 20, 0, 21, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, + 0, 0, 82, 0, 0, 83, 0, 84, 65, 66, + 80, 117, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 0, 79, 20, 0, 21, 65, 66, + 0, 237, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 0, 79, 20, 0, 21, 0, 0, + 0, 80, 0, 0, 0, 81, 0, 0, 82, 0, + 0, 83, 0, 84, 0, 0, 0, 0, 0, 65, + 66, 80, 117, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 0, 79, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 81, 0, 0, 82, 0, 0, 83, - 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 81, 0, 0, 82, 0, 0, 83, - 0, 84, 0, 0, 0, 0, 124, 0, 0, 0, + 0, 0, 80, 0, 0, 0, 81, 0, 0, 82, + 0, 0, 83, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 126, 127, 0, 0, 81, 0, 0, 82, 0, 0, - 83, 0, 405, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 0, 0, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, + 82, 0, 0, 83, 0, 84, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, + 82, 0, 0, 83, 0, 84, 0, 0, 0, 0, + 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 126, 127, 0, 0, 81, 0, + 0, 82, 0, 0, 83, 0, 405, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 0, 0, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185 + 0, 0, 0, 0, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185 }; static const short int yycheck[] = { - 37, 125, 130, 130, 128, 282, 53, 4, 23, 305, - 306, 3, 111, 222, 131, 30, 53, 34, 0, 15, - 15, 29, 52, 53, 54, 234, 84, 325, 326, 159, - 239, 240, 32, 33, 164, 159, 55, 56, 162, 335, - 57, 71, 251, 167, 168, 169, 170, 171, 172, 41, - 10, 11, 12, 13, 14, 15, 16, 17, 116, 357, - 557, 57, 57, 61, 122, 189, 190, 9, 153, 576, - 23, 108, 109, 110, 155, 284, 193, 152, 163, 21, - 577, 588, 153, 164, 155, 294, 295, 296, 125, 20, - 61, 128, 163, 164, 86, 10, 11, 12, 13, 14, - 15, 16, 17, 153, 55, 56, 57, 405, 153, 159, - 41, 42, 43, 44, 45, 46, 47, 153, 163, 50, - 157, 158, 159, 160, 161, 162, 153, 163, 24, 153, - 167, 168, 169, 170, 171, 172, 163, 161, 161, 153, - 153, 164, 152, 45, 0, 47, 159, 161, 163, 186, - 187, 188, 189, 190, 162, 4, 365, 366, 367, 104, - 105, 457, 116, 152, 373, 162, 224, 225, 122, 25, - 228, 22, 152, 24, 152, 31, 152, 301, 387, 388, - 27, 28, 3, 4, 157, 41, 42, 43, 44, 45, - 46, 47, 155, 230, 3, 4, 3, 4, 4, 159, - 3, 4, 3, 4, 4, 252, 62, 77, 78, 155, - 24, 488, 24, 490, 4, 252, 64, 65, 66, 67, - 68, 69, 70, 432, 158, 434, 263, 24, 158, 438, - 155, 59, 4, 4, 4, 4, 4, 446, 447, 448, - 7, 7, 7, 280, 159, 161, 153, 156, 153, 153, - 153, 375, 299, 377, 378, 379, 157, 36, 153, 153, - 153, 385, 299, 300, 301, 10, 11, 12, 13, 14, - 15, 16, 17, 153, 483, 484, 153, 486, 487, 153, - 153, 153, 24, 24, 493, 153, 155, 63, 346, 155, - 155, 155, 155, 502, 155, 155, 155, 155, 397, 398, - 399, 400, 401, 155, 161, 155, 239, 240, 153, 153, - 156, 410, 411, 412, 413, 414, 153, 153, 251, 157, - 153, 153, 153, 153, 34, 24, 535, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 155, 375, 376, - 377, 378, 379, 380, 381, 21, 21, 405, 385, 386, - 342, 284, 4, 155, 153, 153, 24, 153, 153, 458, - 459, 294, 295, 296, 153, 574, 465, 153, 155, 4, - 153, 495, 496, 497, 36, 153, 153, 161, 153, 153, - 589, 161, 4, 57, 421, 24, 57, 596, 21, 153, - 153, 600, 601, 153, 153, 153, 153, 153, 435, 153, - 153, 156, 153, 21, 36, 157, 156, 156, 156, 533, - 509, 510, 511, 512, 153, 159, 453, 516, 517, 518, - 519, 27, 28, 153, 153, 156, 159, 153, 156, 557, - 557, 156, 365, 366, 367, 156, 156, 156, 156, 156, - 373, 156, 541, 542, 156, 21, 153, 21, 485, 577, - 577, 21, 96, 96, 387, 388, 96, 41, 495, 496, - 497, 25, 317, 422, 501, 318, 565, 96, 567, 568, - 96, 52, 421, 61, 3, 222, 19, 595, 435, 501, - -1, 460, -1, 520, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 533, -1, -1, 432, - -1, 434, -1, -1, -1, 438, -1, -1, -1, -1, - -1, -1, -1, 446, 447, 448, -1, -1, -1, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 5, 6, -1, -1, -1, -1, -1, -1, - 483, 484, -1, 486, 487, -1, -1, -1, -1, 22, - 493, 24, -1, 26, -1, -1, 20, -1, 22, 502, - 24, -1, -1, -1, -1, 38, 39, 31, 32, 33, - -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, - 44, 45, 46, 47, -1, -1, 50, 51, -1, -1, - -1, -1, 535, -1, 58, -1, -1, -1, 62, -1, - -1, -1, -1, -1, -1, -1, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, - -1, 574, -1, 106, -1, 108, 109, 110, 111, 112, - -1, 114, 115, 116, -1, -1, 589, -1, -1, -1, + 37, 125, 130, 130, 128, 282, 53, 4, 305, 306, + 29, 3, 111, 34, 23, 9, 53, 557, 325, 326, + 131, 30, 15, 222, 153, 15, 161, 21, 0, 164, + 159, 84, 52, 53, 54, 234, 57, 577, 335, 163, + 239, 240, 166, 167, 168, 169, 170, 171, 172, 41, + 357, 71, 251, 10, 11, 12, 13, 14, 15, 16, + 17, 0, 153, 116, 57, 189, 190, 57, 23, 122, + 161, 108, 109, 110, 10, 11, 12, 13, 14, 15, + 16, 17, 193, 153, 61, 284, 25, 576, 125, 20, + 153, 128, 31, 163, 86, 294, 295, 296, 405, 588, + 163, 152, 41, 42, 43, 44, 45, 46, 47, 155, + 41, 42, 43, 44, 45, 46, 47, 159, 164, 50, + 32, 33, 164, 62, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 153, 61, 155, 55, + 56, 57, 45, 162, 47, 153, 163, 164, 153, 186, + 187, 188, 189, 190, 163, 163, 116, 153, 163, 22, + 457, 24, 122, 159, 152, 162, 365, 366, 367, 27, + 28, 224, 225, 24, 373, 228, 4, 301, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 387, 388, + 153, 55, 56, 230, 108, 109, 27, 28, 161, 3, + 4, 152, 159, 3, 4, 252, 3, 4, 3, 4, + 152, 488, 152, 490, 152, 252, 64, 65, 66, 67, + 68, 69, 70, 159, 3, 4, 263, 77, 78, 157, + 155, 4, 4, 432, 155, 434, 24, 4, 24, 438, + 24, 158, 59, 280, 155, 158, 4, 446, 447, 448, + 4, 375, 299, 377, 378, 379, 4, 4, 7, 4, + 161, 385, 299, 300, 301, 7, 7, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 153, 156, 153, 483, 484, 153, 486, 487, 157, + 36, 153, 153, 346, 493, 24, 153, 153, 397, 398, + 399, 400, 401, 502, 153, 24, 239, 240, 153, 153, + 153, 410, 411, 412, 413, 414, 153, 153, 251, 10, + 11, 12, 13, 14, 15, 16, 17, 161, 155, 155, + 155, 155, 155, 155, 155, 155, 535, 155, 375, 376, + 377, 378, 379, 380, 381, 155, 153, 156, 385, 386, + 342, 284, 405, 63, 153, 153, 157, 153, 34, 458, + 459, 294, 295, 296, 153, 155, 465, 24, 153, 21, + 153, 495, 496, 497, 155, 574, 153, 21, 153, 155, + 4, 155, 153, 153, 421, 153, 24, 153, 153, 4, + 589, 153, 153, 153, 153, 36, 57, 596, 435, 4, + 153, 600, 601, 153, 161, 156, 161, 24, 57, 533, + 509, 510, 511, 512, 153, 153, 453, 516, 517, 518, + 519, 153, 153, 153, 157, 153, 153, 153, 153, 557, + 557, 153, 365, 366, 367, 156, 159, 153, 156, 156, + 373, 153, 541, 542, 21, 156, 36, 156, 485, 577, + 577, 156, 156, 156, 387, 388, 156, 159, 495, 496, + 497, 156, 21, 156, 501, 153, 565, 156, 567, 568, + 156, 21, 153, 21, 21, 96, 96, 96, 317, 41, + 318, 25, 96, 520, 96, 422, 222, 52, 61, 421, + 3, 19, 595, 460, 501, -1, 533, -1, 20, 432, + 22, 434, 24, -1, -1, 438, 435, -1, -1, 31, + 32, 33, -1, 446, 447, 448, -1, -1, -1, 41, + 42, 43, 44, 45, 46, 47, -1, -1, 50, 51, + -1, -1, -1, -1, -1, -1, 58, -1, 5, 6, + 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 483, 484, -1, 486, 487, 22, -1, 24, -1, 26, + 493, -1, -1, -1, -1, -1, -1, -1, -1, 502, + -1, 38, 39, -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, 535, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, -1, -1, + -1, 574, -1, 110, -1, 112, -1, 114, 115, 116, + -1, -1, -1, -1, -1, -1, 589, -1, -1, -1, -1, -1, -1, 596, -1, -1, -1, 600, 601, -1, - -1, -1, -1, -1, -1, -1, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, - -1, -1, -1, -1, 157, -1, -1, 160, -1, 162, - 5, 6, 165, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, -1, 21, 22, -1, 24, - 5, 6, -1, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, -1, 21, 22, -1, 24, - -1, 5, 6, 48, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, -1, 21, 22, -1, - 24, 5, 6, 48, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, -1, 21, 22, -1, - 24, -1, -1, -1, 48, -1, 5, 6, -1, 8, + -1, -1, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, -1, -1, -1, -1, -1, + 157, -1, -1, 160, -1, 162, 5, 6, 165, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, -1, 21, 22, 48, 24, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, + 19, -1, 21, 22, -1, 24, 5, 6, -1, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, -1, 21, 22, -1, 24, -1, 5, 6, 48, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, -1, 21, 22, -1, 24, 5, 6, 48, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, -1, 21, 22, -1, 24, -1, -1, -1, + 48, -1, 5, 6, -1, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, -1, 21, 22, + 48, 24, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 154, - -1, -1, 157, -1, -1, 160, -1, 162, 163, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 154, - -1, -1, 157, -1, -1, 160, -1, 162, 163, -1, + -1, -1, -1, -1, -1, 154, -1, -1, 157, -1, + -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 154, -1, -1, 157, -1, + -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 154, -1, -1, 157, + -1, -1, 160, -1, 162, 163, -1, 3, 4, 5, + 6, 7, -1, -1, -1, -1, 154, -1, -1, 157, + -1, -1, 160, -1, 162, 163, 22, -1, 24, -1, + 26, 27, 28, -1, -1, -1, -1, -1, -1, -1, + -1, 154, 38, 39, 157, -1, -1, 160, -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 154, -1, -1, 157, -1, -1, 160, -1, 162, 163, - -1, 3, 4, 5, 6, 7, -1, -1, -1, -1, - 154, -1, -1, 157, -1, -1, 160, -1, 162, 163, - 22, -1, 24, -1, 26, 27, 28, -1, -1, -1, - -1, -1, -1, -1, -1, 154, 38, 39, 157, -1, - -1, 160, -1, 162, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, + -1, -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 3, - 4, -1, -1, 7, 106, -1, 108, 109, 110, 111, - 112, -1, 114, 115, 116, -1, -1, -1, -1, -1, - -1, -1, 26, 27, 28, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 38, 39, -1, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - -1, -1, -1, -1, -1, -1, -1, 61, 160, -1, + -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, + -1, -1, -1, -1, 110, -1, 112, -1, 114, 115, + 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3, 4, -1, -1, 7, -1, -1, + -1, -1, -1, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 26, 27, 28, -1, + -1, -1, -1, -1, 160, -1, -1, -1, 38, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, - -1, -1, 106, -1, 108, 109, 110, 111, 112, -1, - 114, 115, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, -1, -1, - -1, -1, -1, -1, 5, 6, 160, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, -1, - 21, 22, -1, 24, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, - -1, -1, -1, -1, -1, 5, 6, 48, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - -1, 21, 22, -1, 24, 5, 6, -1, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - -1, 21, 22, -1, 24, -1, -1, -1, 48, -1, - -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, - -1, -1, -1, -1, -1, -1, 5, 6, 48, 8, + -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, -1, -1, -1, -1, -1, + 110, -1, 112, -1, 114, 115, 116, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, -1, -1, -1, -1, -1, -1, 5, 6, + 160, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, -1, 21, 22, -1, 24, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 37, -1, -1, -1, -1, -1, -1, -1, -1, 5, + 6, 48, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, -1, 21, 22, -1, 24, 5, + 6, -1, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, -1, 21, 22, -1, 24, -1, + -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, + -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, + 5, 6, 48, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, -1, 21, 22, -1, 24, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 48, -1, -1, -1, 154, -1, -1, + 157, -1, -1, 160, -1, 162, 5, 6, -1, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, -1, 21, 22, -1, 24, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, - -1, -1, -1, 154, -1, -1, 157, -1, -1, 160, - -1, 162, 5, 6, -1, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, -1, 21, 22, - -1, 24, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 154, -1, -1, 157, -1, 159, - 160, -1, 162, -1, -1, 48, -1, -1, -1, -1, - -1, -1, -1, -1, 154, -1, -1, 157, -1, -1, - 160, -1, 162, 5, 6, -1, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, -1, 21, - 22, -1, 24, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 154, -1, -1, 157, -1, - -1, 160, -1, 162, 5, 6, 48, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, -1, - 21, 22, -1, 24, 5, 6, -1, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, -1, - 21, 22, -1, 24, -1, -1, -1, 48, -1, -1, - -1, 154, -1, -1, 157, -1, -1, 160, -1, 162, - -1, -1, -1, -1, -1, 5, 6, 48, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - -1, 21, 22, -1, 24, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 48, -1, - -1, -1, 154, -1, -1, 157, -1, -1, 160, -1, - 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 154, -1, + -1, 157, -1, 159, 160, -1, 162, -1, -1, 48, + -1, -1, -1, -1, -1, -1, -1, -1, 154, -1, + -1, 157, -1, -1, 160, -1, 162, 5, 6, -1, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, -1, 21, 22, -1, 24, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 154, + -1, -1, 157, -1, -1, 160, -1, 162, 5, 6, + 48, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, -1, 21, 22, -1, 24, 5, 6, + -1, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, -1, 21, 22, -1, 24, -1, -1, + -1, 48, -1, -1, -1, 154, -1, -1, 157, -1, + -1, 160, -1, 162, -1, -1, -1, -1, -1, 5, + 6, 48, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, -1, 21, 22, -1, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 154, -1, -1, 157, -1, -1, 160, - -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 154, -1, -1, 157, -1, -1, 160, - -1, 162, -1, -1, -1, -1, 35, -1, -1, -1, + -1, -1, 48, -1, -1, -1, 154, -1, -1, 157, + -1, -1, 160, -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 59, 60, -1, -1, 154, -1, -1, 157, -1, -1, - 160, -1, 162, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, -1, -1, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, + 157, -1, -1, 160, -1, 162, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, + 157, -1, -1, 160, -1, 162, -1, -1, -1, -1, + 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 49, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 59, 60, -1, -1, 154, -1, + -1, 157, -1, -1, 160, -1, 162, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, -1, -1, 110, 111, 112, 113, 114, + 115, 116, 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151 + -1, -1, -1, -1, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -2947,7 +2946,7 @@ static const unsigned char yystos[] = 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 104, 105, 106, 107, 110, 111, 112, 113, 114, 115, 116, 117, 118, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 169, 170, 171, 174, 175, 233, 234, 240, 241, 243, 244, 24, 55, 56, @@ -2961,9 +2960,9 @@ static const unsigned char yystos[] = 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 173, 191, 191, 229, 191, 191, 237, 229, 229, 229, 229, 229, 229, 229, 191, 191, 191, 229, 229, 182, - 104, 105, 153, 159, 205, 206, 204, 27, 28, 3, - 4, 168, 4, 7, 26, 38, 39, 99, 100, 106, - 108, 114, 115, 116, 157, 160, 162, 165, 169, 170, + 108, 109, 153, 159, 205, 206, 204, 27, 28, 3, + 4, 168, 4, 7, 26, 38, 39, 103, 104, 110, + 112, 114, 115, 116, 157, 160, 162, 165, 169, 170, 171, 174, 175, 197, 227, 203, 193, 193, 161, 163, 193, 37, 191, 214, 215, 216, 153, 156, 3, 4, 7, 26, 27, 28, 38, 39, 61, 160, 197, 226, @@ -3661,7 +3660,7 @@ yyreduce: switch (yyn) { case 3: -#line 1581 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1576 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].UIntVal) > (uint32_t)INT32_MAX) // Outside of my range! error("Value too large for type"); @@ -3670,7 +3669,7 @@ yyreduce: break; case 5: -#line 1590 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1585 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].UInt64Val) > (uint64_t)INT64_MAX) // Outside of my range! error("Value too large for type"); @@ -3679,226 +3678,226 @@ yyreduce: break; case 26: -#line 1612 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1607 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_EQ; ;} break; case 27: -#line 1612 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1607 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_NE; ;} break; case 28: -#line 1613 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1608 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SLT; ;} break; case 29: -#line 1613 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1608 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SGT; ;} break; case 30: -#line 1614 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1609 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SLE; ;} break; case 31: -#line 1614 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1609 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SGE; ;} break; case 32: -#line 1615 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1610 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_ULT; ;} break; case 33: -#line 1615 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1610 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_UGT; ;} break; case 34: -#line 1616 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1611 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_ULE; ;} break; case 35: -#line 1616 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1611 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_UGE; ;} break; case 36: -#line 1620 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1615 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OEQ; ;} break; case 37: -#line 1620 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1615 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ONE; ;} break; case 38: -#line 1621 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1616 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OLT; ;} break; case 39: -#line 1621 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1616 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OGT; ;} break; case 40: -#line 1622 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1617 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OLE; ;} break; case 41: -#line 1622 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1617 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OGE; ;} break; case 42: -#line 1623 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1618 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ORD; ;} break; case 43: -#line 1623 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1618 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UNO; ;} break; case 44: -#line 1624 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1619 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UEQ; ;} break; case 45: -#line 1624 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1619 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UNE; ;} break; case 46: -#line 1625 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1620 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ULT; ;} break; case 47: -#line 1625 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1620 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UGT; ;} break; case 48: -#line 1626 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1621 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ULE; ;} break; case 49: -#line 1626 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1621 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UGE; ;} break; case 50: -#line 1627 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1622 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_TRUE; ;} break; case 51: -#line 1628 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1623 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_FALSE; ;} break; case 81: -#line 1659 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1654 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = (yyvsp[-1].StrVal); ;} break; case 82: -#line 1662 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1657 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = 0; ;} break; case 83: -#line 1667 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1662 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} break; case 84: -#line 1668 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1663 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} break; case 85: -#line 1669 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1664 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} break; case 86: -#line 1670 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1665 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;} break; case 87: -#line 1671 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1666 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} break; case 88: -#line 1672 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1667 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} break; case 89: -#line 1673 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1668 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} break; case 90: -#line 1674 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1669 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; case 91: -#line 1678 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1673 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurFun.LastCC = (yyval.UIntVal) = OldCallingConv::C; ;} break; case 92: -#line 1679 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1674 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurFun.LastCC = (yyval.UIntVal) = OldCallingConv::C; ;} break; case 93: -#line 1680 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1675 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurFun.LastCC = (yyval.UIntVal) = OldCallingConv::CSRet; ;} break; case 94: -#line 1681 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1676 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurFun.LastCC = (yyval.UIntVal) = OldCallingConv::Fast; ;} break; case 95: -#line 1682 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1677 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurFun.LastCC = (yyval.UIntVal) = OldCallingConv::Cold; ;} break; case 96: -#line 1683 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1678 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurFun.LastCC = (yyval.UIntVal) = OldCallingConv::X86_StdCall; ;} break; case 97: -#line 1684 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1679 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurFun.LastCC = (yyval.UIntVal) = OldCallingConv::X86_FastCall; ;} break; case 98: -#line 1685 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1680 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val)) error("Calling conv too large"); @@ -3907,12 +3906,12 @@ yyreduce: break; case 99: -#line 1695 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1690 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = 0; ;} break; case 100: -#line 1696 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1691 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = (yyvsp[0].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3921,12 +3920,12 @@ yyreduce: break; case 101: -#line 1704 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1699 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = 0; ;} break; case 102: -#line 1705 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1700 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = (yyvsp[0].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3935,7 +3934,7 @@ yyreduce: break; case 103: -#line 1713 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1708 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { for (unsigned i = 0, e = strlen((yyvsp[0].StrVal)); i != e; ++i) if ((yyvsp[0].StrVal)[i] == '"' || (yyvsp[0].StrVal)[i] == '\\') @@ -3945,27 +3944,27 @@ yyreduce: break; case 104: -#line 1722 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1717 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = 0; ;} break; case 105: -#line 1723 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1718 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = (yyvsp[0].StrVal); ;} break; case 106: -#line 1730 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1725 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" {;} break; case 107: -#line 1731 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1726 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" {;} break; case 108: -#line 1735 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1730 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurGV->setSection((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -3973,7 +3972,7 @@ yyreduce: break; case 109: -#line 1739 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1734 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val))) error("Alignment must be a power of two"); @@ -3983,7 +3982,7 @@ yyreduce: break; case 111: -#line 1756 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1751 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder((yyvsp[0].PrimType).T); (yyval.TypeVal).S = Signless; @@ -3991,7 +3990,7 @@ yyreduce: break; case 113: -#line 1764 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1759 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder((yyvsp[0].PrimType).T); (yyval.TypeVal).S = Signless; @@ -3999,7 +3998,7 @@ yyreduce: break; case 114: -#line 1771 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1766 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if (!UpRefs.empty()) error("Invalid upreference in type: " + (*(yyvsp[0].TypeVal).T)->getDescription()); @@ -4008,7 +4007,7 @@ yyreduce: break; case 127: -#line 1785 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1780 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder((yyvsp[0].PrimType).T); (yyval.TypeVal).S = (yyvsp[0].PrimType).S; @@ -4016,7 +4015,7 @@ yyreduce: break; case 128: -#line 1789 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1784 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder(OpaqueType::get()); (yyval.TypeVal).S = Signless; @@ -4024,7 +4023,7 @@ yyreduce: break; case 129: -#line 1793 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1788 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Named types are also simple types... const Type* tmp = getType((yyvsp[0].ValIDVal)); (yyval.TypeVal).T = new PATypeHolder(tmp); @@ -4033,7 +4032,7 @@ yyreduce: break; case 130: -#line 1798 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1793 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Type UpReference if ((yyvsp[0].UInt64Val) > (uint64_t)~0U) error("Value out of range"); @@ -4046,7 +4045,7 @@ yyreduce: break; case 131: -#line 1807 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1802 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Function derived type? std::vector Params; for (std::list::iterator I = (yyvsp[-1].TypeList)->begin(), @@ -4071,7 +4070,7 @@ yyreduce: break; case 132: -#line 1828 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1823 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Sized array type? (yyval.TypeVal).T = new PATypeHolder(HandleUpRefs(ArrayType::get((yyvsp[-1].TypeVal).T->get(), (unsigned)(yyvsp[-3].UInt64Val)))); @@ -4081,7 +4080,7 @@ yyreduce: break; case 133: -#line 1834 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1829 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Packed array type? const llvm::Type* ElemTy = (yyvsp[-1].TypeVal).T->get(); if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val)) @@ -4098,7 +4097,7 @@ yyreduce: break; case 134: -#line 1847 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1842 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Structure type? std::vector Elements; for (std::list::iterator I = (yyvsp[-1].TypeList)->begin(), @@ -4111,7 +4110,7 @@ yyreduce: break; case 135: -#line 1856 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1851 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Empty structure type? (yyval.TypeVal).T = new PATypeHolder(StructType::get(std::vector())); (yyval.TypeVal).S = Signless; @@ -4119,7 +4118,7 @@ yyreduce: break; case 136: -#line 1860 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1855 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Packed Structure type? std::vector Elements; for (std::list::iterator I = (yyvsp[-2].TypeList)->begin(), @@ -4134,7 +4133,7 @@ yyreduce: break; case 137: -#line 1871 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1866 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Empty packed structure type? (yyval.TypeVal).T = new PATypeHolder(StructType::get(std::vector(),true)); (yyval.TypeVal).S = Signless; @@ -4142,7 +4141,7 @@ yyreduce: break; case 138: -#line 1875 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1870 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Pointer type? if ((yyvsp[-1].TypeVal).T->get() == Type::LabelTy) error("Cannot form a pointer to a basic block"); @@ -4153,7 +4152,7 @@ yyreduce: break; case 139: -#line 1888 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1883 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeList) = new std::list(); (yyval.TypeList)->push_back((yyvsp[0].TypeVal)); @@ -4161,14 +4160,14 @@ yyreduce: break; case 140: -#line 1892 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1887 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back((yyvsp[0].TypeVal)); ;} break; case 142: -#line 1900 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1895 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { PATypeInfo VoidTI; VoidTI.T = new PATypeHolder(Type::VoidTy); @@ -4178,7 +4177,7 @@ yyreduce: break; case 143: -#line 1906 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1901 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeList) = new std::list(); PATypeInfo VoidTI; @@ -4189,14 +4188,14 @@ yyreduce: break; case 144: -#line 1913 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1908 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeList) = new std::list(); ;} break; case 145: -#line 1925 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1920 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr const ArrayType *ATy = dyn_cast((yyvsp[-3].TypeVal).T->get()); if (ATy == 0) @@ -4230,7 +4229,7 @@ yyreduce: break; case 146: -#line 1955 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1950 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const ArrayType *ATy = dyn_cast((yyvsp[-2].TypeVal).T->get()); if (ATy == 0) @@ -4247,7 +4246,7 @@ yyreduce: break; case 147: -#line 1968 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1963 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const ArrayType *ATy = dyn_cast((yyvsp[-2].TypeVal).T->get()); if (ATy == 0) @@ -4274,7 +4273,7 @@ yyreduce: break; case 148: -#line 1991 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1986 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr const PackedType *PTy = dyn_cast((yyvsp[-3].TypeVal).T->get()); if (PTy == 0) @@ -4306,7 +4305,7 @@ yyreduce: break; case 149: -#line 2019 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2014 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast((yyvsp[-3].TypeVal).T->get()); if (STy == 0) @@ -4332,7 +4331,7 @@ yyreduce: break; case 150: -#line 2041 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2036 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast((yyvsp[-2].TypeVal).T->get()); if (STy == 0) @@ -4347,7 +4346,7 @@ yyreduce: break; case 151: -#line 2052 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2047 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast((yyvsp[-5].TypeVal).T->get()); if (STy == 0) @@ -4373,7 +4372,7 @@ yyreduce: break; case 152: -#line 2074 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2069 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast((yyvsp[-4].TypeVal).T->get()); if (STy == 0) @@ -4388,7 +4387,7 @@ yyreduce: break; case 153: -#line 2085 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2080 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const PointerType *PTy = dyn_cast((yyvsp[-1].TypeVal).T->get()); if (PTy == 0) @@ -4401,7 +4400,7 @@ yyreduce: break; case 154: -#line 2094 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2089 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ConstVal).C = UndefValue::get((yyvsp[-1].TypeVal).T->get()); (yyval.ConstVal).S = (yyvsp[-1].TypeVal).S; @@ -4410,7 +4409,7 @@ yyreduce: break; case 155: -#line 2099 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2094 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const PointerType *Ty = dyn_cast((yyvsp[-1].TypeVal).T->get()); if (Ty == 0) @@ -4472,7 +4471,7 @@ yyreduce: break; case 156: -#line 2157 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2152 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[-1].TypeVal).T->get() != (yyvsp[0].ConstVal).C->getType()) error("Mismatched types for constant expression"); @@ -4483,7 +4482,7 @@ yyreduce: break; case 157: -#line 2164 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2159 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-1].TypeVal).T->get(); if (isa(Ty) || Ty == Type::LabelTy || isa(Ty)) @@ -4495,7 +4494,7 @@ yyreduce: break; case 158: -#line 2172 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2167 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // integral constants const Type *Ty = (yyvsp[-1].PrimType).T; if (!ConstantInt::isValueValidForType(Ty, (yyvsp[0].SInt64Val))) @@ -4506,7 +4505,7 @@ yyreduce: break; case 159: -#line 2179 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2174 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // integral constants const Type *Ty = (yyvsp[-1].PrimType).T; if (!ConstantInt::isValueValidForType(Ty, (yyvsp[0].UInt64Val))) @@ -4517,7 +4516,7 @@ yyreduce: break; case 160: -#line 2186 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2181 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.ConstVal).C = ConstantInt::get(Type::Int1Ty, true); (yyval.ConstVal).S = Unsigned; @@ -4525,7 +4524,7 @@ yyreduce: break; case 161: -#line 2190 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2185 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.ConstVal).C = ConstantInt::get(Type::Int1Ty, false); (yyval.ConstVal).S = Unsigned; @@ -4533,7 +4532,7 @@ yyreduce: break; case 162: -#line 2194 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2189 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Float & Double constants if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType).T, (yyvsp[0].FPVal))) error("Floating point constant invalid for type"); @@ -4543,7 +4542,7 @@ yyreduce: break; case 163: -#line 2203 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2198 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type* SrcTy = (yyvsp[-3].ConstVal).C->getType(); const Type* DstTy = (yyvsp[-1].TypeVal).T->get(); @@ -4562,7 +4561,7 @@ yyreduce: break; case 164: -#line 2218 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2213 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-2].ConstVal).C->getType(); if (!isa(Ty)) @@ -4579,7 +4578,7 @@ yyreduce: break; case 165: -#line 2231 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2226 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-5].ConstVal).C->getType()->isInteger() || cast((yyvsp[-5].ConstVal).C->getType())->getBitWidth() != 1) @@ -4592,7 +4591,7 @@ yyreduce: break; case 166: -#line 2240 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2235 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-3].ConstVal).C->getType(); if (Ty != (yyvsp[-1].ConstVal).C->getType()) @@ -4624,7 +4623,7 @@ yyreduce: break; case 167: -#line 2268 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2263 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-3].ConstVal).C->getType(); if (Ty != (yyvsp[-1].ConstVal).C->getType()) @@ -4641,7 +4640,7 @@ yyreduce: break; case 168: -#line 2281 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2276 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-3].ConstVal).C->getType(); if (Ty != (yyvsp[-1].ConstVal).C->getType()) @@ -4654,7 +4653,7 @@ yyreduce: break; case 169: -#line 2290 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2285 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[-3].ConstVal).C->getType() != (yyvsp[-1].ConstVal).C->getType()) error("icmp operand types must match"); @@ -4664,7 +4663,7 @@ yyreduce: break; case 170: -#line 2296 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2291 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[-3].ConstVal).C->getType() != (yyvsp[-1].ConstVal).C->getType()) error("fcmp operand types must match"); @@ -4674,20 +4673,22 @@ yyreduce: break; case 171: -#line 2302 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2297 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-1].ConstVal).C->getType()->isInteger() || cast((yyvsp[-1].ConstVal).C->getType())->getBitWidth() != 8) error("Shift count for shift constant must be unsigned byte"); + const Type* Ty = (yyvsp[-3].ConstVal).C->getType(); if (!(yyvsp[-3].ConstVal).C->getType()->isInteger()) error("Shift constant expression requires integer operand"); - (yyval.ConstVal).C = ConstantExpr::get(getOtherOp((yyvsp[-5].OtherOpVal), (yyvsp[-3].ConstVal).S), (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C); + Constant *ShiftAmt = ConstantExpr::getZExt((yyvsp[-1].ConstVal).C, Ty); + (yyval.ConstVal).C = ConstantExpr::get(getBinaryOp((yyvsp[-5].BinaryOpVal), Ty, (yyvsp[-3].ConstVal).S), (yyvsp[-3].ConstVal).C, ShiftAmt); (yyval.ConstVal).S = (yyvsp[-3].ConstVal).S; ;} break; case 172: -#line 2311 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2308 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C)) error("Invalid extractelement operands"); @@ -4697,7 +4698,7 @@ yyreduce: break; case 173: -#line 2317 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2314 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal).C, (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C)) error("Invalid insertelement operands"); @@ -4707,7 +4708,7 @@ yyreduce: break; case 174: -#line 2323 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2320 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal).C, (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C)) error("Invalid shufflevector operands"); @@ -4717,12 +4718,12 @@ yyreduce: break; case 175: -#line 2334 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2331 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { ((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal)); ;} break; case 176: -#line 2335 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2332 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ConstVector) = new std::vector(); (yyval.ConstVector)->push_back((yyvsp[0].ConstVal)); @@ -4730,17 +4731,17 @@ yyreduce: break; case 177: -#line 2344 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2341 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = false; ;} break; case 178: -#line 2345 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2342 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = true; ;} break; case 179: -#line 2357 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2354 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = ParserResult = (yyvsp[0].ModuleVal); CurModule.ModuleDone(); @@ -4748,27 +4749,27 @@ yyreduce: break; case 180: -#line 2366 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2363 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); CurFun.FunctionDone(); ;} break; case 181: -#line 2367 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2364 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); ;} break; case 182: -#line 2368 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2365 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = (yyvsp[-3].ModuleVal); ;} break; case 183: -#line 2369 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2366 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); ;} break; case 184: -#line 2370 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2367 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = CurModule.CurrentModule; // Emit an error if there are any unresolved types left. @@ -4784,7 +4785,7 @@ yyreduce: break; case 185: -#line 2386 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2383 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Eagerly resolve types. This is not an optimization, this is a // requirement that is due to the fact that we could have this: @@ -4808,19 +4809,19 @@ yyreduce: break; case 186: -#line 2406 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2403 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Function prototypes can be in const pool ;} break; case 187: -#line 2408 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2405 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Asm blocks can be in the const pool ;} break; case 188: -#line 2410 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2407 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].ConstVal).C == 0) error("Global value initializer is not a constant"); @@ -4829,14 +4830,14 @@ yyreduce: break; case 189: -#line 2414 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2411 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurGV = 0; ;} break; case 190: -#line 2417 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2414 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[0].TypeVal).T->get(); CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::ExternalLinkage, (yyvsp[-1].BoolVal), Ty, 0); @@ -4845,14 +4846,14 @@ yyreduce: break; case 191: -#line 2421 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2418 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurGV = 0; ;} break; case 192: -#line 2424 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2421 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[0].TypeVal).T->get(); CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::DLLImportLinkage, (yyvsp[-1].BoolVal), Ty, 0); @@ -4861,14 +4862,14 @@ yyreduce: break; case 193: -#line 2428 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2425 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurGV = 0; ;} break; case 194: -#line 2431 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2428 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[0].TypeVal).T->get(); CurGV = @@ -4878,32 +4879,32 @@ yyreduce: break; case 195: -#line 2436 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2433 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurGV = 0; ;} break; case 196: -#line 2439 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2436 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 197: -#line 2441 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2438 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 198: -#line 2443 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2440 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 199: -#line 2448 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2445 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm(); char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true); @@ -4918,24 +4919,24 @@ yyreduce: break; case 200: -#line 2462 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2459 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Endianness) = Module::BigEndian; ;} break; case 201: -#line 2463 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2460 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Endianness) = Module::LittleEndian; ;} break; case 202: -#line 2467 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2464 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurModule.setEndianness((yyvsp[0].Endianness)); ;} break; case 203: -#line 2470 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2467 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].UInt64Val) == 32) CurModule.setPointerSize(Module::Pointer32); @@ -4947,7 +4948,7 @@ yyreduce: break; case 204: -#line 2478 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2475 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4955,7 +4956,7 @@ yyreduce: break; case 205: -#line 2482 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2479 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4963,7 +4964,7 @@ yyreduce: break; case 207: -#line 2493 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2490 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4971,7 +4972,7 @@ yyreduce: break; case 208: -#line 2497 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2494 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4979,17 +4980,17 @@ yyreduce: break; case 209: -#line 2501 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2498 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 213: -#line 2514 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2511 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = 0; ;} break; case 214: -#line 2518 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2515 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[-1].TypeVal).T->get() == Type::VoidTy) error("void typed arguments are invalid"); @@ -4998,7 +4999,7 @@ yyreduce: break; case 215: -#line 2526 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2523 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = (yyvsp[-2].ArgList); (yyval.ArgList)->push_back(*(yyvsp[0].ArgVal)); @@ -5007,7 +5008,7 @@ yyreduce: break; case 216: -#line 2531 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2528 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = new std::vector >(); (yyval.ArgList)->push_back(*(yyvsp[0].ArgVal)); @@ -5016,12 +5017,12 @@ yyreduce: break; case 217: -#line 2539 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2536 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = (yyvsp[0].ArgList); ;} break; case 218: -#line 2540 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2537 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = (yyvsp[-2].ArgList); PATypeInfo VoidTI; @@ -5032,7 +5033,7 @@ yyreduce: break; case 219: -#line 2547 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2544 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = new std::vector >(); PATypeInfo VoidTI; @@ -5043,12 +5044,12 @@ yyreduce: break; case 220: -#line 2554 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2551 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = 0; ;} break; case 221: -#line 2558 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2555 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { UnEscapeLexed((yyvsp[-5].StrVal)); std::string FunctionName((yyvsp[-5].StrVal)); @@ -5164,7 +5165,7 @@ yyreduce: break; case 224: -#line 2677 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2674 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FunctionVal) = CurFun.CurrentFunction; @@ -5175,29 +5176,29 @@ yyreduce: break; case 227: -#line 2691 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2688 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); ;} break; case 229: -#line 2697 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2694 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurFun.Linkage = GlobalValue::DLLImportLinkage; ;} break; case 230: -#line 2698 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2695 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurFun.Linkage = GlobalValue::ExternalWeakLinkage; ;} break; case 231: -#line 2702 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2699 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { CurFun.isDeclare = true; ;} break; case 232: -#line 2702 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2699 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FunctionVal) = CurFun.CurrentFunction; CurFun.FunctionDone(); @@ -5206,57 +5207,57 @@ yyreduce: break; case 233: -#line 2714 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2711 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = false; ;} break; case 234: -#line 2715 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2712 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = true; ;} break; case 235: -#line 2720 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2717 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val)); ;} break; case 236: -#line 2721 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2718 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val)); ;} break; case 237: -#line 2722 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2719 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal)); ;} break; case 238: -#line 2723 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2720 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create(ConstantInt::get(Type::Int1Ty, true)); ;} break; case 239: -#line 2724 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2721 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create(ConstantInt::get(Type::Int1Ty, false)); ;} break; case 240: -#line 2725 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2722 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::createNull(); ;} break; case 241: -#line 2726 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2723 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::createUndef(); ;} break; case 242: -#line 2727 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2724 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::createZeroInit(); ;} break; case 243: -#line 2728 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2725 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized packed vector const Type *ETy = (*(yyvsp[-1].ConstVector))[0].C->getType(); int NumElements = (yyvsp[-1].ConstVector)->size(); @@ -5281,14 +5282,14 @@ yyreduce: break; case 244: -#line 2749 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2746 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal).C); ;} break; case 245: -#line 2752 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2749 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { char *End = UnEscapeLexed((yyvsp[-2].StrVal), true); std::string AsmStr = std::string((yyvsp[-2].StrVal), End); @@ -5301,17 +5302,17 @@ yyreduce: break; case 246: -#line 2767 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2764 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].SIntVal)); ;} break; case 247: -#line 2768 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2765 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].StrVal)); ;} break; case 250: -#line 2781 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2778 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-1].TypeVal).T->get(); (yyval.ValueVal).S = (yyvsp[-1].TypeVal).S; @@ -5321,21 +5322,21 @@ yyreduce: break; case 251: -#line 2790 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2787 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); ;} break; case 252: -#line 2793 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2790 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Do not allow functions with 0 basic blocks (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); ;} break; case 253: -#line 2802 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2799 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal)); InsertValue((yyvsp[0].TermInstVal)); @@ -5346,7 +5347,7 @@ yyreduce: break; case 254: -#line 2812 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2809 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].InstVal).I) (yyvsp[-1].BasicBlockVal)->getInstList().push_back((yyvsp[0].InstVal).I); @@ -5355,7 +5356,7 @@ yyreduce: break; case 255: -#line 2817 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2814 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BasicBlockVal) = CurBB = getBBVal(ValID::create((int)CurFun.NextBBNum++), true); // Make sure to move the basic block to the correct location in the @@ -5368,7 +5369,7 @@ yyreduce: break; case 256: -#line 2826 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2823 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BasicBlockVal) = CurBB = getBBVal(ValID::create((yyvsp[0].StrVal)), true); // Make sure to move the basic block to the correct location in the @@ -5381,21 +5382,21 @@ yyreduce: break; case 259: -#line 2840 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2837 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Return with a result... (yyval.TermInstVal) = new ReturnInst((yyvsp[0].ValueVal).V); ;} break; case 260: -#line 2843 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2840 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Return with no result... (yyval.TermInstVal) = new ReturnInst(); ;} break; case 261: -#line 2846 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2843 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Unconditional Branch... BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal)); (yyval.TermInstVal) = new BranchInst(tmpBB); @@ -5403,7 +5404,7 @@ yyreduce: break; case 262: -#line 2850 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2847 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { BasicBlock* tmpBBA = getBBVal((yyvsp[-3].ValIDVal)); BasicBlock* tmpBBB = getBBVal((yyvsp[0].ValIDVal)); @@ -5413,7 +5414,7 @@ yyreduce: break; case 263: -#line 2856 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2853 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { Value* tmpVal = getVal((yyvsp[-7].PrimType).T, (yyvsp[-6].ValIDVal)); BasicBlock* tmpBB = getBBVal((yyvsp[-3].ValIDVal)); @@ -5432,7 +5433,7 @@ yyreduce: break; case 264: -#line 2871 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2868 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { Value* tmpVal = getVal((yyvsp[-6].PrimType).T, (yyvsp[-5].ValIDVal)); BasicBlock* tmpBB = getBBVal((yyvsp[-2].ValIDVal)); @@ -5442,7 +5443,7 @@ yyreduce: break; case 265: -#line 2878 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2875 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const PointerType *PFTy; const FunctionType *Ty; @@ -5501,21 +5502,21 @@ yyreduce: break; case 266: -#line 2933 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2930 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TermInstVal) = new UnwindInst(); ;} break; case 267: -#line 2936 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2933 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TermInstVal) = new UnreachableInst(); ;} break; case 268: -#line 2942 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2939 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.JumpTable) = (yyvsp[-5].JumpTable); Constant *V = cast(getExistingValue((yyvsp[-4].PrimType).T, (yyvsp[-3].ValIDVal))); @@ -5529,7 +5530,7 @@ yyreduce: break; case 269: -#line 2952 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2949 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.JumpTable) = new std::vector >(); Constant *V = cast(getExistingValue((yyvsp[-4].PrimType).T, (yyvsp[-3].ValIDVal))); @@ -5543,7 +5544,7 @@ yyreduce: break; case 270: -#line 2965 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2962 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { bool omit = false; if ((yyvsp[-1].StrVal)) @@ -5575,7 +5576,7 @@ yyreduce: break; case 271: -#line 2994 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2991 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Used for PHI nodes (yyval.PHIList).P = new std::list >(); (yyval.PHIList).S = (yyvsp[-5].TypeVal).S; @@ -5587,7 +5588,7 @@ yyreduce: break; case 272: -#line 3002 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2999 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.PHIList) = (yyvsp[-6].PHIList); Value* tmpVal = getVal((yyvsp[-6].PHIList).P->front().first->getType(), (yyvsp[-3].ValIDVal)); @@ -5597,7 +5598,7 @@ yyreduce: break; case 273: -#line 3010 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3007 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Used for call statements, and memory insts... (yyval.ValueList) = new std::vector(); (yyval.ValueList)->push_back((yyvsp[0].ValueVal)); @@ -5605,7 +5606,7 @@ yyreduce: break; case 274: -#line 3014 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3011 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValueList) = (yyvsp[-2].ValueList); (yyvsp[-2].ValueList)->push_back((yyvsp[0].ValueVal)); @@ -5613,26 +5614,26 @@ yyreduce: break; case 276: -#line 3022 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3019 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValueList) = 0; ;} break; case 277: -#line 3026 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3023 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = true; ;} break; case 278: -#line 3029 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3026 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = false; ;} break; case 279: -#line 3035 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3032 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-3].TypeVal).T->get(); if (!Ty->isInteger() && !Ty->isFloatingPoint() && !isa(Ty)) @@ -5653,7 +5654,7 @@ yyreduce: break; case 280: -#line 3052 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3049 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-3].TypeVal).T->get(); if (!Ty->isInteger()) { @@ -5673,7 +5674,7 @@ yyreduce: break; case 281: -#line 3068 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3065 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-3].TypeVal).T->get(); if(isa(Ty)) @@ -5691,7 +5692,7 @@ yyreduce: break; case 282: -#line 3082 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3079 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-3].TypeVal).T->get(); if (isa(Ty)) @@ -5707,7 +5708,7 @@ yyreduce: break; case 283: -#line 3094 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3091 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-3].TypeVal).T->get(); if (isa(Ty)) @@ -5723,7 +5724,7 @@ yyreduce: break; case 284: -#line 3106 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3103 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { warning("Use of obsolete 'not' instruction: Replacing with 'xor"); const Type *Ty = (yyvsp[0].ValueVal).V->getType(); @@ -5738,20 +5739,29 @@ yyreduce: break; case 285: -#line 3117 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3114 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[0].ValueVal).V->getType()->isInteger() || cast((yyvsp[0].ValueVal).V->getType())->getBitWidth() != 8) error("Shift amount must be int8"); - if (!(yyvsp[-2].ValueVal).V->getType()->isInteger()) + const Type* Ty = (yyvsp[-2].ValueVal).V->getType(); + if (!Ty->isInteger()) error("Shift constant expression requires integer operand"); - (yyval.InstVal).I = new ShiftInst(getOtherOp((yyvsp[-3].OtherOpVal), (yyvsp[-2].ValueVal).S), (yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V); + Value* ShiftAmt = 0; + if (cast(Ty)->getBitWidth() > Type::Int8Ty->getBitWidth()) + if (Constant *C = dyn_cast((yyvsp[0].ValueVal).V)) + ShiftAmt = ConstantExpr::getZExt(C, Ty); + else + ShiftAmt = new ZExtInst((yyvsp[0].ValueVal).V, Ty, makeNameUnique("shift"), CurBB); + else + ShiftAmt = (yyvsp[0].ValueVal).V; + (yyval.InstVal).I = BinaryOperator::create(getBinaryOp((yyvsp[-3].BinaryOpVal), Ty, (yyvsp[-2].ValueVal).S), (yyvsp[-2].ValueVal).V, ShiftAmt); (yyval.InstVal).S = (yyvsp[-2].ValueVal).S; ;} break; case 286: -#line 3126 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3132 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *DstTy = (yyvsp[0].TypeVal).T->get(); if (!DstTy->isFirstClassType()) @@ -5764,7 +5774,7 @@ yyreduce: break; case 287: -#line 3135 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3141 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].ValueVal).V->getType()->isInteger() || cast((yyvsp[-4].ValueVal).V->getType())->getBitWidth() != 1) @@ -5777,7 +5787,7 @@ yyreduce: break; case 288: -#line 3144 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3150 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[0].TypeVal).T->get(); NewVarArgs = true; @@ -5788,7 +5798,7 @@ yyreduce: break; case 289: -#line 3151 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3157 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type* ArgTy = (yyvsp[-2].ValueVal).V->getType(); const Type* DstTy = (yyvsp[0].TypeVal).T->get(); @@ -5813,7 +5823,7 @@ yyreduce: break; case 290: -#line 3172 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3178 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type* ArgTy = (yyvsp[-2].ValueVal).V->getType(); const Type* DstTy = (yyvsp[0].TypeVal).T->get(); @@ -5841,7 +5851,7 @@ yyreduce: break; case 291: -#line 3196 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3202 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V)) error("Invalid extractelement operands"); @@ -5851,7 +5861,7 @@ yyreduce: break; case 292: -#line 3202 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3208 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal).V, (yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V)) error("Invalid insertelement operands"); @@ -5861,7 +5871,7 @@ yyreduce: break; case 293: -#line 3208 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3214 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal).V, (yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V)) error("Invalid shufflevector operands"); @@ -5871,7 +5881,7 @@ yyreduce: break; case 294: -#line 3214 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3220 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[0].PHIList).P->front().first->getType(); if (!Ty->isFirstClassType()) @@ -5891,7 +5901,7 @@ yyreduce: break; case 295: -#line 3230 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3236 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { // Handle the short call syntax @@ -5973,34 +5983,34 @@ yyreduce: break; case 296: -#line 3308 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3314 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.InstVal) = (yyvsp[0].InstVal); ;} break; case 297: -#line 3316 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3322 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValueList) = (yyvsp[0].ValueList); ;} break; case 298: -#line 3317 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3323 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValueList) = new std::vector(); ;} break; case 299: -#line 3321 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3327 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = true; ;} break; case 300: -#line 3322 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3328 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = false; ;} break; case 301: -#line 3326 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3332 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-1].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-1].TypeVal).S; @@ -6010,7 +6020,7 @@ yyreduce: break; case 302: -#line 3332 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3338 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-4].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-4].TypeVal).S; @@ -6020,7 +6030,7 @@ yyreduce: break; case 303: -#line 3338 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3344 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-1].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-1].TypeVal).S; @@ -6030,7 +6040,7 @@ yyreduce: break; case 304: -#line 3344 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3350 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-4].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-4].TypeVal).S; @@ -6040,7 +6050,7 @@ yyreduce: break; case 305: -#line 3350 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3356 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type *PTy = (yyvsp[0].ValueVal).V->getType(); if (!isa(PTy)) @@ -6051,7 +6061,7 @@ yyreduce: break; case 306: -#line 3357 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3363 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-1].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-1].TypeVal).S; @@ -6067,7 +6077,7 @@ yyreduce: break; case 307: -#line 3369 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3375 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const PointerType *PTy = dyn_cast((yyvsp[-1].TypeVal).T->get()); if (!PTy) @@ -6085,7 +6095,7 @@ yyreduce: break; case 308: -#line 3383 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3389 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-2].TypeVal).T->get(); if (!isa(Ty)) @@ -6107,7 +6117,7 @@ yyreduce: } /* Line 1126 of yacc.c. */ -#line 6111 "UpgradeParser.tab.c" +#line 6121 "UpgradeParser.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -6375,7 +6385,7 @@ yyreturn: } -#line 3399 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3405 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" int yyerror(const char *ErrorMsg) { diff --git a/tools/llvm-upgrade/UpgradeParser.h.cvs b/tools/llvm-upgrade/UpgradeParser.h.cvs index 331d5ae115e..20fac512aab 100644 --- a/tools/llvm-upgrade/UpgradeParser.h.cvs +++ b/tools/llvm-upgrade/UpgradeParser.h.cvs @@ -119,26 +119,26 @@ AND = 345, OR = 346, XOR = 347, - SETLE = 348, - SETGE = 349, - SETLT = 350, - SETGT = 351, - SETEQ = 352, - SETNE = 353, - ICMP = 354, - FCMP = 355, - MALLOC = 356, - ALLOCA = 357, - FREE = 358, - LOAD = 359, - STORE = 360, - GETELEMENTPTR = 361, - PHI_TOK = 362, - SELECT = 363, - SHL = 364, - SHR = 365, - ASHR = 366, - LSHR = 367, + SHL = 348, + SHR = 349, + ASHR = 350, + LSHR = 351, + SETLE = 352, + SETGE = 353, + SETLT = 354, + SETGT = 355, + SETEQ = 356, + SETNE = 357, + ICMP = 358, + FCMP = 359, + MALLOC = 360, + ALLOCA = 361, + FREE = 362, + LOAD = 363, + STORE = 364, + GETELEMENTPTR = 365, + PHI_TOK = 366, + SELECT = 367, VAARG = 368, EXTRACTELEMENT = 369, INSERTELEMENT = 370, @@ -271,26 +271,26 @@ #define AND 345 #define OR 346 #define XOR 347 -#define SETLE 348 -#define SETGE 349 -#define SETLT 350 -#define SETGT 351 -#define SETEQ 352 -#define SETNE 353 -#define ICMP 354 -#define FCMP 355 -#define MALLOC 356 -#define ALLOCA 357 -#define FREE 358 -#define LOAD 359 -#define STORE 360 -#define GETELEMENTPTR 361 -#define PHI_TOK 362 -#define SELECT 363 -#define SHL 364 -#define SHR 365 -#define ASHR 366 -#define LSHR 367 +#define SHL 348 +#define SHR 349 +#define ASHR 350 +#define LSHR 351 +#define SETLE 352 +#define SETGE 353 +#define SETLT 354 +#define SETGT 355 +#define SETEQ 356 +#define SETNE 357 +#define ICMP 358 +#define FCMP 359 +#define MALLOC 360 +#define ALLOCA 361 +#define FREE 362 +#define LOAD 363 +#define STORE 364 +#define GETELEMENTPTR 365 +#define PHI_TOK 366 +#define SELECT 367 #define VAARG 368 #define EXTRACTELEMENT 369 #define INSERTELEMENT 370 @@ -335,7 +335,7 @@ #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 1440 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1435 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; diff --git a/tools/llvm-upgrade/UpgradeParser.y b/tools/llvm-upgrade/UpgradeParser.y index cb02675e481..cf36340d46c 100644 --- a/tools/llvm-upgrade/UpgradeParser.y +++ b/tools/llvm-upgrade/UpgradeParser.y @@ -1008,6 +1008,13 @@ getBinaryOp(BinaryOps op, const Type *Ty, Signedness Sign) { case URemOp : return Instruction::URem; case SRemOp : return Instruction::SRem; case FRemOp : return Instruction::FRem; + case LShrOp : return Instruction::LShr; + case AShrOp : return Instruction::AShr; + case ShlOp : return Instruction::Shl; + case ShrOp : + if (Sign == Signed) + return Instruction::AShr; + return Instruction::LShr; case AndOp : return Instruction::And; case OrOp : return Instruction::Or; case XorOp : return Instruction::Xor; @@ -1102,11 +1109,6 @@ getOtherOp(OtherOps op, Signedness Sign) { default : assert(0 && "Invalid OldOtherOps"); case PHIOp : return Instruction::PHI; case CallOp : return Instruction::Call; - case ShlOp : return Instruction::Shl; - case ShrOp : - if (Sign == Signed) - return Instruction::AShr; - return Instruction::LShr; case SelectOp : return Instruction::Select; case UserOp1 : return Instruction::UserOp1; case UserOp2 : return Instruction::UserOp2; @@ -1116,8 +1118,6 @@ getOtherOp(OtherOps op, Signedness Sign) { case ShuffleVectorOp : return Instruction::ShuffleVector; case ICmpOp : return Instruction::ICmp; case FCmpOp : return Instruction::FCmp; - case LShrOp : return Instruction::LShr; - case AShrOp : return Instruction::AShr; }; } @@ -1193,7 +1193,6 @@ upgradeIntrinsicCall(const Type* RetTy, const ValID &ID, error("Invalid prototype for " + Name + " prototype"); return new FCmpInst(FCmpInst::FCMP_UNO, Args[0], Args[1]); } else { - static unsigned upgradeCount = 1; const Type* PtrTy = PointerType::get(Type::Int8Ty); std::vector Params; if (Name == "llvm.va_start" || Name == "llvm.va_end") { @@ -1203,9 +1202,7 @@ upgradeIntrinsicCall(const Type* RetTy, const ValID &ID, const FunctionType *FTy = FunctionType::get(Type::VoidTy, Params, false); const PointerType *PFTy = PointerType::get(FTy); Value* Func = getVal(PFTy, ID); - std::string InstName("va_upgrade"); - InstName += llvm::utostr(upgradeCount++); - Args[0] = new BitCastInst(Args[0], PtrTy, InstName, CurBB); + Args[0] = new BitCastInst(Args[0], PtrTy, makeNameUnique("va"), CurBB); return new CallInst(Func, Args); } else if (Name == "llvm.va_copy") { if (Args.size() != 2) @@ -1215,10 +1212,8 @@ upgradeIntrinsicCall(const Type* RetTy, const ValID &ID, const FunctionType *FTy = FunctionType::get(Type::VoidTy, Params, false); const PointerType *PFTy = PointerType::get(FTy); Value* Func = getVal(PFTy, ID); - std::string InstName0("va_upgrade"); - InstName0 += llvm::utostr(upgradeCount++); - std::string InstName1("va_upgrade"); - InstName1 += llvm::utostr(upgradeCount++); + std::string InstName0(makeNameUnique("va0")); + std::string InstName1(makeNameUnique("va1")); Args[0] = new BitCastInst(Args[0], PtrTy, InstName0, CurBB); Args[1] = new BitCastInst(Args[1], PtrTy, InstName1, CurBB); return new CallInst(Func, Args); @@ -1263,7 +1258,7 @@ const Type* upgradeGEPIndices(const Type* PTy, cast(Index), Type::Int64Ty); else Index = CastInst::create(Instruction::ZExt, Index, Type::Int64Ty, - makeNameUnique("gep_upgrade"), CurBB); + makeNameUnique("gep"), CurBB); VIndices[i] = Index; } } @@ -1546,8 +1541,9 @@ using namespace llvm; // Binary Operators %type ArithmeticOps LogicalOps SetCondOps // Binops Subcatagories +%type ShiftOps %token ADD SUB MUL DIV UDIV SDIV FDIV REM UREM SREM FREM -%token AND OR XOR +%token AND OR XOR SHL SHR ASHR LSHR %token SETLE SETGE SETLT SETGT SETEQ SETNE // Binary Comparators %token ICMP FCMP @@ -1555,8 +1551,7 @@ using namespace llvm; %token MALLOC ALLOCA FREE LOAD STORE GETELEMENTPTR // Other Operators -%type ShiftOps -%token PHI_TOK SELECT SHL SHR ASHR LSHR VAARG +%token PHI_TOK SELECT VAARG %token EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR %token VAARG_old VANEXT_old //OBSOLETE @@ -2303,9 +2298,11 @@ ConstExpr if (!$5.C->getType()->isInteger() || cast($5.C->getType())->getBitWidth() != 8) error("Shift count for shift constant must be unsigned byte"); + const Type* Ty = $3.C->getType(); if (!$3.C->getType()->isInteger()) error("Shift constant expression requires integer operand"); - $$.C = ConstantExpr::get(getOtherOp($1, $3.S), $3.C, $5.C); + Constant *ShiftAmt = ConstantExpr::getZExt($5.C, Ty); + $$.C = ConstantExpr::get(getBinaryOp($1, Ty, $3.S), $3.C, ShiftAmt); $$.S = $3.S; } | EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' { @@ -3118,9 +3115,18 @@ InstVal if (!$4.V->getType()->isInteger() || cast($4.V->getType())->getBitWidth() != 8) error("Shift amount must be int8"); - if (!$2.V->getType()->isInteger()) + const Type* Ty = $2.V->getType(); + if (!Ty->isInteger()) error("Shift constant expression requires integer operand"); - $$.I = new ShiftInst(getOtherOp($1, $2.S), $2.V, $4.V); + Value* ShiftAmt = 0; + if (cast(Ty)->getBitWidth() > Type::Int8Ty->getBitWidth()) + if (Constant *C = dyn_cast($4.V)) + ShiftAmt = ConstantExpr::getZExt(C, Ty); + else + ShiftAmt = new ZExtInst($4.V, Ty, makeNameUnique("shift"), CurBB); + else + ShiftAmt = $4.V; + $$.I = BinaryOperator::create(getBinaryOp($1, Ty, $2.S), $2.V, ShiftAmt); $$.S = $2.S; } | CastOps ResolvedVal TO Types { diff --git a/tools/llvm-upgrade/UpgradeParser.y.cvs b/tools/llvm-upgrade/UpgradeParser.y.cvs index cb02675e481..cf36340d46c 100644 --- a/tools/llvm-upgrade/UpgradeParser.y.cvs +++ b/tools/llvm-upgrade/UpgradeParser.y.cvs @@ -1008,6 +1008,13 @@ getBinaryOp(BinaryOps op, const Type *Ty, Signedness Sign) { case URemOp : return Instruction::URem; case SRemOp : return Instruction::SRem; case FRemOp : return Instruction::FRem; + case LShrOp : return Instruction::LShr; + case AShrOp : return Instruction::AShr; + case ShlOp : return Instruction::Shl; + case ShrOp : + if (Sign == Signed) + return Instruction::AShr; + return Instruction::LShr; case AndOp : return Instruction::And; case OrOp : return Instruction::Or; case XorOp : return Instruction::Xor; @@ -1102,11 +1109,6 @@ getOtherOp(OtherOps op, Signedness Sign) { default : assert(0 && "Invalid OldOtherOps"); case PHIOp : return Instruction::PHI; case CallOp : return Instruction::Call; - case ShlOp : return Instruction::Shl; - case ShrOp : - if (Sign == Signed) - return Instruction::AShr; - return Instruction::LShr; case SelectOp : return Instruction::Select; case UserOp1 : return Instruction::UserOp1; case UserOp2 : return Instruction::UserOp2; @@ -1116,8 +1118,6 @@ getOtherOp(OtherOps op, Signedness Sign) { case ShuffleVectorOp : return Instruction::ShuffleVector; case ICmpOp : return Instruction::ICmp; case FCmpOp : return Instruction::FCmp; - case LShrOp : return Instruction::LShr; - case AShrOp : return Instruction::AShr; }; } @@ -1193,7 +1193,6 @@ upgradeIntrinsicCall(const Type* RetTy, const ValID &ID, error("Invalid prototype for " + Name + " prototype"); return new FCmpInst(FCmpInst::FCMP_UNO, Args[0], Args[1]); } else { - static unsigned upgradeCount = 1; const Type* PtrTy = PointerType::get(Type::Int8Ty); std::vector Params; if (Name == "llvm.va_start" || Name == "llvm.va_end") { @@ -1203,9 +1202,7 @@ upgradeIntrinsicCall(const Type* RetTy, const ValID &ID, const FunctionType *FTy = FunctionType::get(Type::VoidTy, Params, false); const PointerType *PFTy = PointerType::get(FTy); Value* Func = getVal(PFTy, ID); - std::string InstName("va_upgrade"); - InstName += llvm::utostr(upgradeCount++); - Args[0] = new BitCastInst(Args[0], PtrTy, InstName, CurBB); + Args[0] = new BitCastInst(Args[0], PtrTy, makeNameUnique("va"), CurBB); return new CallInst(Func, Args); } else if (Name == "llvm.va_copy") { if (Args.size() != 2) @@ -1215,10 +1212,8 @@ upgradeIntrinsicCall(const Type* RetTy, const ValID &ID, const FunctionType *FTy = FunctionType::get(Type::VoidTy, Params, false); const PointerType *PFTy = PointerType::get(FTy); Value* Func = getVal(PFTy, ID); - std::string InstName0("va_upgrade"); - InstName0 += llvm::utostr(upgradeCount++); - std::string InstName1("va_upgrade"); - InstName1 += llvm::utostr(upgradeCount++); + std::string InstName0(makeNameUnique("va0")); + std::string InstName1(makeNameUnique("va1")); Args[0] = new BitCastInst(Args[0], PtrTy, InstName0, CurBB); Args[1] = new BitCastInst(Args[1], PtrTy, InstName1, CurBB); return new CallInst(Func, Args); @@ -1263,7 +1258,7 @@ const Type* upgradeGEPIndices(const Type* PTy, cast(Index), Type::Int64Ty); else Index = CastInst::create(Instruction::ZExt, Index, Type::Int64Ty, - makeNameUnique("gep_upgrade"), CurBB); + makeNameUnique("gep"), CurBB); VIndices[i] = Index; } } @@ -1546,8 +1541,9 @@ using namespace llvm; // Binary Operators %type ArithmeticOps LogicalOps SetCondOps // Binops Subcatagories +%type ShiftOps %token ADD SUB MUL DIV UDIV SDIV FDIV REM UREM SREM FREM -%token AND OR XOR +%token AND OR XOR SHL SHR ASHR LSHR %token SETLE SETGE SETLT SETGT SETEQ SETNE // Binary Comparators %token ICMP FCMP @@ -1555,8 +1551,7 @@ using namespace llvm; %token MALLOC ALLOCA FREE LOAD STORE GETELEMENTPTR // Other Operators -%type ShiftOps -%token PHI_TOK SELECT SHL SHR ASHR LSHR VAARG +%token PHI_TOK SELECT VAARG %token EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR %token VAARG_old VANEXT_old //OBSOLETE @@ -2303,9 +2298,11 @@ ConstExpr if (!$5.C->getType()->isInteger() || cast($5.C->getType())->getBitWidth() != 8) error("Shift count for shift constant must be unsigned byte"); + const Type* Ty = $3.C->getType(); if (!$3.C->getType()->isInteger()) error("Shift constant expression requires integer operand"); - $$.C = ConstantExpr::get(getOtherOp($1, $3.S), $3.C, $5.C); + Constant *ShiftAmt = ConstantExpr::getZExt($5.C, Ty); + $$.C = ConstantExpr::get(getBinaryOp($1, Ty, $3.S), $3.C, ShiftAmt); $$.S = $3.S; } | EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' { @@ -3118,9 +3115,18 @@ InstVal if (!$4.V->getType()->isInteger() || cast($4.V->getType())->getBitWidth() != 8) error("Shift amount must be int8"); - if (!$2.V->getType()->isInteger()) + const Type* Ty = $2.V->getType(); + if (!Ty->isInteger()) error("Shift constant expression requires integer operand"); - $$.I = new ShiftInst(getOtherOp($1, $2.S), $2.V, $4.V); + Value* ShiftAmt = 0; + if (cast(Ty)->getBitWidth() > Type::Int8Ty->getBitWidth()) + if (Constant *C = dyn_cast($4.V)) + ShiftAmt = ConstantExpr::getZExt(C, Ty); + else + ShiftAmt = new ZExtInst($4.V, Ty, makeNameUnique("shift"), CurBB); + else + ShiftAmt = $4.V; + $$.I = BinaryOperator::create(getBinaryOp($1, Ty, $2.S), $2.V, ShiftAmt); $$.S = $2.S; } | CastOps ResolvedVal TO Types { -- 2.34.1