diff options
Diffstat (limited to 'tools/llvm-upgrade/UpgradeParser.cpp.cvs')
-rw-r--r-- | tools/llvm-upgrade/UpgradeParser.cpp.cvs | 7676 |
1 files changed, 4347 insertions, 3329 deletions
diff --git a/tools/llvm-upgrade/UpgradeParser.cpp.cvs b/tools/llvm-upgrade/UpgradeParser.cpp.cvs index 2f6c02a216..8f8327ec40 100644 --- a/tools/llvm-upgrade/UpgradeParser.cpp.cvs +++ b/tools/llvm-upgrade/UpgradeParser.cpp.cvs @@ -1,167 +1,386 @@ +/* A Bison parser, made by GNU Bison 2.3. */ -/* A Bison parser, made from /Volumes/MacOS9/gcc/llvm/tools/llvm-upgrade/UpgradeParser.y - by GNU Bison version 1.28 */ +/* Skeleton implementation for Bison's Yacc-like parsers in C -#define YYBISON 1 /* Identify Bison output. */ + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + 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, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton 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.3" + +/* 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 Upgradeparse -#define yylex Upgradelex +#define yylex Upgradelex #define yyerror Upgradeerror -#define yylval Upgradelval -#define yychar Upgradechar +#define yylval Upgradelval +#define yychar Upgradechar #define yydebug Upgradedebug #define yynerrs Upgradenerrs -#define ESINT64VAL 257 -#define EUINT64VAL 258 -#define SINTVAL 259 -#define UINTVAL 260 -#define FPVAL 261 -#define VOID 262 -#define BOOL 263 -#define SBYTE 264 -#define UBYTE 265 -#define SHORT 266 -#define USHORT 267 -#define INT 268 -#define UINT 269 -#define LONG 270 -#define ULONG 271 -#define FLOAT 272 -#define DOUBLE 273 -#define TYPE 274 -#define LABEL 275 -#define VAR_ID 276 -#define LABELSTR 277 -#define STRINGCONSTANT 278 -#define IMPLEMENTATION 279 -#define ZEROINITIALIZER 280 -#define TRUETOK 281 -#define FALSETOK 282 -#define BEGINTOK 283 -#define ENDTOK 284 -#define DECLARE 285 -#define GLOBAL 286 -#define CONSTANT 287 -#define SECTION 288 -#define VOLATILE 289 -#define TO 290 -#define DOTDOTDOT 291 -#define NULL_TOK 292 -#define UNDEF 293 -#define CONST 294 -#define INTERNAL 295 -#define LINKONCE 296 -#define WEAK 297 -#define APPENDING 298 -#define DLLIMPORT 299 -#define DLLEXPORT 300 -#define EXTERN_WEAK 301 -#define OPAQUE 302 -#define NOT 303 -#define EXTERNAL 304 -#define TARGET 305 -#define TRIPLE 306 -#define ENDIAN 307 -#define POINTERSIZE 308 -#define LITTLE 309 -#define BIG 310 -#define ALIGN 311 -#define DEPLIBS 312 -#define CALL 313 -#define TAIL 314 -#define ASM_TOK 315 -#define MODULE 316 -#define SIDEEFFECT 317 -#define CC_TOK 318 -#define CCC_TOK 319 -#define CSRETCC_TOK 320 -#define FASTCC_TOK 321 -#define COLDCC_TOK 322 -#define X86_STDCALLCC_TOK 323 -#define X86_FASTCALLCC_TOK 324 -#define DATALAYOUT 325 -#define RET 326 -#define BR 327 -#define SWITCH 328 -#define INVOKE 329 -#define UNREACHABLE 330 -#define UNWIND 331 -#define EXCEPT 332 -#define ADD 333 -#define SUB 334 -#define MUL 335 -#define DIV 336 -#define UDIV 337 -#define SDIV 338 -#define FDIV 339 -#define REM 340 -#define UREM 341 -#define SREM 342 -#define FREM 343 -#define AND 344 -#define OR 345 -#define XOR 346 -#define SHL 347 -#define SHR 348 -#define ASHR 349 -#define LSHR 350 -#define SETLE 351 -#define SETGE 352 -#define SETLT 353 -#define SETGT 354 -#define SETEQ 355 -#define SETNE 356 -#define ICMP 357 -#define FCMP 358 -#define MALLOC 359 -#define ALLOCA 360 -#define FREE 361 -#define LOAD 362 -#define STORE 363 -#define GETELEMENTPTR 364 -#define PHI_TOK 365 -#define SELECT 366 -#define VAARG 367 -#define EXTRACTELEMENT 368 -#define INSERTELEMENT 369 -#define SHUFFLEVECTOR 370 -#define VAARG_old 371 -#define VANEXT_old 372 -#define EQ 373 -#define NE 374 -#define SLT 375 -#define SGT 376 -#define SLE 377 -#define SGE 378 -#define ULT 379 -#define UGT 380 -#define ULE 381 -#define UGE 382 -#define OEQ 383 -#define ONE 384 -#define OLT 385 -#define OGT 386 -#define OLE 387 -#define OGE 388 -#define ORD 389 -#define UNO 390 -#define UEQ 391 -#define UNE 392 -#define CAST 393 -#define TRUNC 394 -#define ZEXT 395 -#define SEXT 396 -#define FPTRUNC 397 -#define FPEXT 398 -#define FPTOUI 399 -#define FPTOSI 400 -#define UITOFP 401 -#define SITOFP 402 -#define PTRTOINT 403 -#define INTTOPTR 404 -#define BITCAST 405 - -#line 14 "/Volumes/MacOS9/gcc/llvm/tools/llvm-upgrade/UpgradeParser.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, + SINTVAL = 260, + UINTVAL = 261, + FPVAL = 262, + VOID = 263, + BOOL = 264, + SBYTE = 265, + UBYTE = 266, + SHORT = 267, + USHORT = 268, + INT = 269, + UINT = 270, + LONG = 271, + ULONG = 272, + FLOAT = 273, + DOUBLE = 274, + TYPE = 275, + LABEL = 276, + VAR_ID = 277, + LABELSTR = 278, + STRINGCONSTANT = 279, + IMPLEMENTATION = 280, + ZEROINITIALIZER = 281, + TRUETOK = 282, + FALSETOK = 283, + BEGINTOK = 284, + ENDTOK = 285, + DECLARE = 286, + GLOBAL = 287, + CONSTANT = 288, + SECTION = 289, + VOLATILE = 290, + TO = 291, + DOTDOTDOT = 292, + NULL_TOK = 293, + UNDEF = 294, + CONST = 295, + INTERNAL = 296, + LINKONCE = 297, + WEAK = 298, + APPENDING = 299, + DLLIMPORT = 300, + DLLEXPORT = 301, + EXTERN_WEAK = 302, + OPAQUE = 303, + NOT = 304, + EXTERNAL = 305, + TARGET = 306, + TRIPLE = 307, + ENDIAN = 308, + POINTERSIZE = 309, + LITTLE = 310, + BIG = 311, + ALIGN = 312, + DEPLIBS = 313, + CALL = 314, + TAIL = 315, + ASM_TOK = 316, + MODULE = 317, + SIDEEFFECT = 318, + CC_TOK = 319, + CCC_TOK = 320, + CSRETCC_TOK = 321, + FASTCC_TOK = 322, + COLDCC_TOK = 323, + X86_STDCALLCC_TOK = 324, + X86_FASTCALLCC_TOK = 325, + DATALAYOUT = 326, + RET = 327, + BR = 328, + SWITCH = 329, + INVOKE = 330, + UNREACHABLE = 331, + UNWIND = 332, + EXCEPT = 333, + ADD = 334, + SUB = 335, + MUL = 336, + DIV = 337, + UDIV = 338, + SDIV = 339, + FDIV = 340, + REM = 341, + UREM = 342, + SREM = 343, + FREM = 344, + AND = 345, + OR = 346, + XOR = 347, + 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, + SHUFFLEVECTOR = 371, + VAARG_old = 372, + VANEXT_old = 373, + EQ = 374, + NE = 375, + SLT = 376, + SGT = 377, + SLE = 378, + SGE = 379, + ULT = 380, + UGT = 381, + ULE = 382, + UGE = 383, + OEQ = 384, + ONE = 385, + OLT = 386, + OGT = 387, + OLE = 388, + OGE = 389, + ORD = 390, + UNO = 391, + UEQ = 392, + UNE = 393, + CAST = 394, + TRUNC = 395, + ZEXT = 396, + SEXT = 397, + FPTRUNC = 398, + FPEXT = 399, + FPTOUI = 400, + FPTOSI = 401, + UITOFP = 402, + SITOFP = 403, + PTRTOINT = 404, + INTTOPTR = 405, + BITCAST = 406 + }; +#endif +/* Tokens. */ +#define ESINT64VAL 258 +#define EUINT64VAL 259 +#define SINTVAL 260 +#define UINTVAL 261 +#define FPVAL 262 +#define VOID 263 +#define BOOL 264 +#define SBYTE 265 +#define UBYTE 266 +#define SHORT 267 +#define USHORT 268 +#define INT 269 +#define UINT 270 +#define LONG 271 +#define ULONG 272 +#define FLOAT 273 +#define DOUBLE 274 +#define TYPE 275 +#define LABEL 276 +#define VAR_ID 277 +#define LABELSTR 278 +#define STRINGCONSTANT 279 +#define IMPLEMENTATION 280 +#define ZEROINITIALIZER 281 +#define TRUETOK 282 +#define FALSETOK 283 +#define BEGINTOK 284 +#define ENDTOK 285 +#define DECLARE 286 +#define GLOBAL 287 +#define CONSTANT 288 +#define SECTION 289 +#define VOLATILE 290 +#define TO 291 +#define DOTDOTDOT 292 +#define NULL_TOK 293 +#define UNDEF 294 +#define CONST 295 +#define INTERNAL 296 +#define LINKONCE 297 +#define WEAK 298 +#define APPENDING 299 +#define DLLIMPORT 300 +#define DLLEXPORT 301 +#define EXTERN_WEAK 302 +#define OPAQUE 303 +#define NOT 304 +#define EXTERNAL 305 +#define TARGET 306 +#define TRIPLE 307 +#define ENDIAN 308 +#define POINTERSIZE 309 +#define LITTLE 310 +#define BIG 311 +#define ALIGN 312 +#define DEPLIBS 313 +#define CALL 314 +#define TAIL 315 +#define ASM_TOK 316 +#define MODULE 317 +#define SIDEEFFECT 318 +#define CC_TOK 319 +#define CCC_TOK 320 +#define CSRETCC_TOK 321 +#define FASTCC_TOK 322 +#define COLDCC_TOK 323 +#define X86_STDCALLCC_TOK 324 +#define X86_FASTCALLCC_TOK 325 +#define DATALAYOUT 326 +#define RET 327 +#define BR 328 +#define SWITCH 329 +#define INVOKE 330 +#define UNREACHABLE 331 +#define UNWIND 332 +#define EXCEPT 333 +#define ADD 334 +#define SUB 335 +#define MUL 336 +#define DIV 337 +#define UDIV 338 +#define SDIV 339 +#define FDIV 340 +#define REM 341 +#define UREM 342 +#define SREM 343 +#define FREM 344 +#define AND 345 +#define OR 346 +#define XOR 347 +#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 +#define SHUFFLEVECTOR 371 +#define VAARG_old 372 +#define VANEXT_old 373 +#define EQ 374 +#define NE 375 +#define SLT 376 +#define SGT 377 +#define SLE 378 +#define SGE 379 +#define ULT 380 +#define UGT 381 +#define ULE 382 +#define UGE 383 +#define OEQ 384 +#define ONE 385 +#define OLT 386 +#define OGT 387 +#define OLE 388 +#define OGE 389 +#define ORD 390 +#define UNO 391 +#define UEQ 392 +#define UNE 393 +#define CAST 394 +#define TRUNC 395 +#define ZEXT 396 +#define SEXT 397 +#define FPTRUNC 398 +#define FPEXT 399 +#define FPTOUI 400 +#define FPTOSI 401 +#define UITOFP 402 +#define SITOFP 403 +#define PTRTOINT 404 +#define INTTOPTR 405 +#define BITCAST 406 + + + + +/* Copy the first part of user declarations. */ +#line 14 "/home/duncan/LLVM/llvm.top/llvm/tools/llvm-upgrade/UpgradeParser.y" #include "UpgradeInternals.h" #include "llvm/CallingConv.h" @@ -524,78 +743,6 @@ static Signedness getElementSign(const ConstInfo& CI, return result; } -/// This function determines if two function types differ only in their use of -/// the sret parameter attribute in the first argument. If they are identical -/// in all other respects, it returns true. Otherwise, it returns false. -static bool FuncTysDifferOnlyBySRet(const FunctionType *F1, - const FunctionType *F2) { - if (F1->getReturnType() != F2->getReturnType() || - F1->getNumParams() != F2->getNumParams()) - return false; - const ParamAttrsList *PAL1 = F1->getParamAttrs(); - const ParamAttrsList *PAL2 = F2->getParamAttrs(); - if (PAL1 && !PAL2 || PAL2 && !PAL1) - return false; - if (PAL1 && PAL2 && ((PAL1->size() != PAL2->size()) || - (PAL1->getParamAttrs(0) != PAL2->getParamAttrs(0)))) - return false; - unsigned SRetMask = ~unsigned(ParamAttr::StructRet); - for (unsigned i = 0; i < F1->getNumParams(); ++i) { - if (F1->getParamType(i) != F2->getParamType(i) || (PAL1 && PAL2 && - (unsigned(PAL1->getParamAttrs(i+1)) & SRetMask != - unsigned(PAL2->getParamAttrs(i+1)) & SRetMask))) - return false; - } - return true; -} - -/// This function determines if the type of V and Ty differ only by the SRet -/// parameter attribute. This is a more generalized case of -/// FuncTysDIfferOnlyBySRet since it doesn't require FunctionType arguments. -static bool TypesDifferOnlyBySRet(Value *V, const Type* Ty) { - if (V->getType() == Ty) - return true; - const PointerType *PF1 = dyn_cast<PointerType>(Ty); - const PointerType *PF2 = dyn_cast<PointerType>(V->getType()); - if (PF1 && PF2) { - const FunctionType* FT1 = dyn_cast<FunctionType>(PF1->getElementType()); - const FunctionType* FT2 = dyn_cast<FunctionType>(PF2->getElementType()); - if (FT1 && FT2) - return FuncTysDifferOnlyBySRet(FT1, FT2); - } - return false; -} - -// The upgrade of csretcc to sret param attribute may have caused a function -// to not be found because the param attribute changed the type of the called -// function. This helper function, used in getExistingValue, detects that -// situation and bitcasts the function to the correct type. -static Value* handleSRetFuncTypeMerge(Value *V, const Type* Ty) { - // Handle degenerate cases - if (!V) - return 0; - if (V->getType() == Ty) - return V; - - const PointerType *PF1 = dyn_cast<PointerType>(Ty); - const PointerType *PF2 = dyn_cast<PointerType>(V->getType()); - if (PF1 && PF2) { - const FunctionType *FT1 = dyn_cast<FunctionType>(PF1->getElementType()); - const FunctionType *FT2 = dyn_cast<FunctionType>(PF2->getElementType()); - if (FT1 && FT2 && FuncTysDifferOnlyBySRet(FT1, FT2)) { - const ParamAttrsList *PAL2 = FT2->getParamAttrs(); - if (PAL2 && PAL2->paramHasAttr(1, ParamAttr::StructRet)) - return V; - else if (Constant *C = dyn_cast<Constant>(V)) - return ConstantExpr::getBitCast(C, PF1); - else - return new BitCastInst(V, PF1, "upgrd.cast", CurBB); - } - - } - return 0; -} - // getExistingValue - Look up the value specified by the provided type and // the provided ValID. If the value exists and has already been defined, return // it. Otherwise return null. @@ -642,8 +789,7 @@ static Value *getExistingValue(const Type *Ty, const ValID &D) { ValueSymbolTable &SymTab = CurFun.CurrentFunction->getValueSymbolTable(); V = SymTab.lookup(LookupName); if (V && V->getType() != Ty) - V = handleSRetFuncTypeMerge(V, Ty); - assert((!V || TypesDifferOnlyBySRet(V, Ty)) && "Found wrong type"); + V = 0; } if (!V) { RenameMapType::const_iterator I = CurModule.RenameMap.find(Key); @@ -654,8 +800,7 @@ static Value *getExistingValue(const Type *Ty, const ValID &D) { LookupName = D.Name; V = CurModule.CurrentModule->getValueSymbolTable().lookup(LookupName); if (V && V->getType() != Ty) - V = handleSRetFuncTypeMerge(V, Ty); - assert((!V || TypesDifferOnlyBySRet(V, Ty)) && "Found wrong type"); + V = 0; } if (!V) return 0; @@ -1901,8 +2046,29 @@ Module* UpgradeAssembly(const std::string &infile, std::istream& in, using namespace llvm; -#line 1754 "/Volumes/MacOS9/gcc/llvm/tools/llvm-upgrade/UpgradeParser.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 +typedef union YYSTYPE +#line 1680 "/home/duncan/LLVM/llvm.top/llvm/tools/llvm-upgrade/UpgradeParser.y" +{ llvm::Module *ModuleVal; llvm::Function *FunctionVal; std::pair<llvm::PATypeInfo, char*> *ArgVal; @@ -1942,1124 +2108,1815 @@ typedef union { llvm::ICmpInst::Predicate IPred; llvm::FCmpInst::Predicate FPred; llvm::Module::Endianness Endianness; -} YYSTYPE; -#include <stdio.h> +} +/* Line 187 of yacc.c. */ +#line 2114 "UpgradeParser.tab.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + -#ifndef __cplusplus -#ifndef __STDC__ -#define const +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 2127 "UpgradeParser.tab.c" + +#ifdef short +# undef short #endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; #endif +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif -#define YYFINAL 606 -#define YYFLAG -32768 -#define YYNTBASE 166 - -#define YYTRANSLATE(x) ((unsigned)(x) <= 405 ? yytranslate[x] : 246) - -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, 155, - 156, 164, 2, 153, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 160, - 152, 161, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 157, 154, 159, 2, 2, 2, 2, 2, 165, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 158, - 2, 2, 162, 2, 163, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 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, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151 -}; +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif -#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, - 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, - 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, - 161, 162, 164, 166, 168, 170, 172, 174, 176, 177, - 178, 180, 182, 184, 186, 188, 190, 193, 194, 197, - 198, 202, 205, 206, 208, 209, 213, 215, 218, 220, - 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, - 242, 244, 246, 248, 250, 252, 254, 256, 258, 261, - 266, 272, 278, 282, 285, 291, 296, 299, 301, 305, - 307, 311, 313, 314, 319, 323, 327, 332, 337, 341, - 348, 354, 357, 360, 363, 366, 369, 372, 375, 378, - 381, 384, 391, 397, 406, 413, 420, 427, 435, 443, - 450, 457, 466, 475, 479, 481, 483, 485, 487, 490, - 493, 498, 501, 503, 508, 511, 516, 517, 525, 526, - 534, 535, 543, 544, 552, 556, 561, 562, 564, 566, - 568, 572, 576, 580, 584, 588, 592, 594, 595, 597, - 599, 601, 602, 605, 609, 611, 613, 617, 619, 620, - 629, 631, 633, 634, 639, 641, 643, 646, 647, 649, - 651, 652, 653, 659, 660, 662, 664, 666, 668, 670, - 672, 674, 676, 678, 682, 684, 690, 692, 694, 696, - 698, 701, 704, 707, 711, 714, 715, 717, 719, 721, - 724, 727, 731, 741, 751, 760, 774, 776, 778, 785, - 791, 794, 801, 809, 811, 815, 817, 818, 821, 823, - 829, 835, 841, 848, 855, 858, 863, 868, 875, 880, - 885, 890, 895, 902, 909, 912, 920, 922, 925, 926, - 928, 929, 933, 940, 944, 951, 954, 959, 966 -}; +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif -static const short yyrhs[] = { 5, - 0, 6, 0, 3, 0, 4, 0, 79, 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, 97, 0, 98, 0, 99, - 0, 100, 0, 101, 0, 102, 0, 119, 0, 120, - 0, 121, 0, 122, 0, 123, 0, 124, 0, 125, - 0, 126, 0, 127, 0, 128, 0, 129, 0, 130, - 0, 131, 0, 132, 0, 133, 0, 134, 0, 135, - 0, 136, 0, 137, 0, 138, 0, 125, 0, 126, - 0, 127, 0, 128, 0, 27, 0, 28, 0, 93, - 0, 94, 0, 95, 0, 96, 0, 140, 0, 141, - 0, 142, 0, 143, 0, 144, 0, 145, 0, 146, - 0, 147, 0, 148, 0, 149, 0, 150, 0, 151, - 0, 139, 0, 16, 0, 14, 0, 12, 0, 10, - 0, 17, 0, 15, 0, 13, 0, 11, 0, 175, - 0, 176, 0, 18, 0, 19, 0, 211, 152, 0, - 0, 41, 0, 42, 0, 43, 0, 44, 0, 45, - 0, 46, 0, 47, 0, 0, 0, 65, 0, 66, - 0, 67, 0, 68, 0, 69, 0, 70, 0, 64, - 4, 0, 0, 57, 4, 0, 0, 153, 57, 4, - 0, 34, 24, 0, 0, 184, 0, 0, 153, 187, - 186, 0, 184, 0, 57, 4, 0, 190, 0, 8, - 0, 192, 0, 8, 0, 192, 0, 9, 0, 10, - 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, - 0, 16, 0, 17, 0, 18, 0, 19, 0, 21, - 0, 191, 0, 48, 0, 228, 0, 154, 4, 0, - 189, 155, 194, 156, 0, 157, 4, 158, 192, 159, - 0, 160, 4, 158, 192, 161, 0, 162, 193, 163, - 0, 162, 163, 0, 160, 162, 193, 163, 161, 0, - 160, 162, 163, 161, 0, 192, 164, 0, 192, 0, - 193, 153, 192, 0, 193, 0, 193, 153, 37, 0, - 37, 0, 0, 190, 157, 197, 159, 0, 190, 157, - 159, 0, 190, 165, 24, 0, 190, 160, 197, 161, - 0, 190, 162, 197, 163, 0, 190, 162, 163, 0, - 190, 160, 162, 197, 163, 161, 0, 190, 160, 162, - 163, 161, 0, 190, 38, 0, 190, 39, 0, 190, - 228, 0, 190, 196, 0, 190, 26, 0, 175, 167, - 0, 176, 4, 0, 9, 27, 0, 9, 28, 0, - 178, 7, 0, 174, 155, 195, 36, 190, 156, 0, - 110, 155, 195, 243, 156, 0, 112, 155, 195, 153, - 195, 153, 195, 156, 0, 168, 155, 195, 153, 195, - 156, 0, 169, 155, 195, 153, 195, 156, 0, 170, - 155, 195, 153, 195, 156, 0, 103, 171, 155, 195, - 153, 195, 156, 0, 104, 172, 155, 195, 153, 195, - 156, 0, 173, 155, 195, 153, 195, 156, 0, 114, - 155, 195, 153, 195, 156, 0, 115, 155, 195, 153, - 195, 153, 195, 156, 0, 116, 155, 195, 153, 195, - 153, 195, 156, 0, 197, 153, 195, 0, 195, 0, - 32, 0, 33, 0, 200, 0, 200, 221, 0, 200, - 223, 0, 200, 62, 61, 206, 0, 200, 25, 0, - 201, 0, 201, 179, 20, 188, 0, 201, 223, 0, - 201, 62, 61, 206, 0, 0, 201, 179, 180, 198, - 195, 202, 186, 0, 0, 201, 179, 50, 198, 190, - 203, 186, 0, 0, 201, 179, 45, 198, 190, 204, - 186, 0, 0, 201, 179, 47, 198, 190, 205, 186, - 0, 201, 51, 208, 0, 201, 58, 152, 209, 0, - 0, 24, 0, 56, 0, 55, 0, 53, 152, 207, - 0, 54, 152, 4, 0, 52, 152, 24, 0, 71, - 152, 24, 0, 157, 210, 159, 0, 210, 153, 24, - 0, 24, 0, 0, 22, 0, 24, 0, 211, 0, - 0, 190, 212, 0, 214, 153, 213, 0, 213, 0, - 214, 0, 214, 153, 37, 0, 37, 0, 0, 181, - 188, 211, 155, 215, 156, 185, 182, 0, 29, 0, - 162, 0, 0, 180, 219, 216, 217, 0, 30, 0, - 163, 0, 231, 220, 0, 0, 45, 0, 47, 0, - 0, 0, 31, 224, 222, 225, 216, 0, 0, 63, - 0, 3, 0, 4, 0, 7, 0, 27, 0, 28, - 0, 38, 0, 39, 0, 26, 0, 160, 197, 161, - 0, 196, 0, 61, 226, 24, 153, 24, 0, 166, - 0, 211, 0, 228, 0, 227, 0, 190, 229, 0, - 231, 232, 0, 218, 232, 0, 233, 179, 235, 0, - 233, 237, 0, 0, 23, 0, 77, 0, 78, 0, - 72, 230, 0, 72, 8, 0, 73, 21, 229, 0, - 73, 9, 229, 153, 21, 229, 153, 21, 229, 0, - 74, 177, 229, 153, 21, 229, 157, 236, 159, 0, - 74, 177, 229, 153, 21, 229, 157, 159, 0, 75, - 181, 188, 229, 155, 240, 156, 36, 21, 229, 234, - 21, 229, 0, 234, 0, 76, 0, 236, 177, 227, - 153, 21, 229, 0, 177, 227, 153, 21, 229, 0, - 179, 242, 0, 190, 157, 229, 153, 229, 159, 0, - 238, 153, 157, 229, 153, 229, 159, 0, 230, 0, - 239, 153, 230, 0, 239, 0, 0, 60, 59, 0, - 59, 0, 168, 190, 229, 153, 229, 0, 169, 190, - 229, 153, 229, 0, 170, 190, 229, 153, 229, 0, - 103, 171, 190, 229, 153, 229, 0, 104, 172, 190, - 229, 153, 229, 0, 49, 230, 0, 173, 230, 153, - 230, 0, 174, 230, 36, 190, 0, 112, 230, 153, - 230, 153, 230, 0, 113, 230, 153, 190, 0, 117, - 230, 153, 190, 0, 118, 230, 153, 190, 0, 114, - 230, 153, 230, 0, 115, 230, 153, 230, 153, 230, - 0, 116, 230, 153, 230, 153, 230, 0, 111, 238, - 0, 241, 181, 188, 229, 155, 240, 156, 0, 245, - 0, 153, 239, 0, 0, 35, 0, 0, 105, 190, - 183, 0, 105, 190, 153, 15, 229, 183, 0, 106, - 190, 183, 0, 106, 190, 153, 15, 229, 183, 0, - 107, 230, 0, 244, 108, 190, 229, 0, 244, 109, - 230, 153, 190, 229, 0, 110, 190, 229, 243, 0 -}; +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ #endif -#if YYDEBUG != 0 -static const short yyrline[] = { 0, - 1894, 1895, 1903, 1904, 1914, 1914, 1914, 1914, 1914, 1914, - 1914, 1914, 1914, 1914, 1914, 1918, 1918, 1918, 1922, 1922, - 1922, 1922, 1922, 1922, 1926, 1926, 1927, 1927, 1928, 1928, - 1929, 1929, 1930, 1930, 1934, 1934, 1935, 1935, 1936, 1936, - 1937, 1937, 1938, 1938, 1939, 1939, 1940, 1940, 1941, 1942, - 1945, 1945, 1945, 1945, 1949, 1949, 1949, 1949, 1949, 1949, - 1949, 1950, 1950, 1950, 1950, 1950, 1950, 1956, 1956, 1956, - 1956, 1960, 1960, 1960, 1960, 1964, 1964, 1968, 1968, 1973, - 1976, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1992, - 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2009, 2010, 2018, - 2019, 2027, 2036, 2037, 2044, 2045, 2049, 2053, 2069, 2070, - 2077, 2078, 2085, 2093, 2093, 2093, 2093, 2093, 2093, 2093, - 2094, 2094, 2094, 2094, 2094, 2099, 2103, 2107, 2112, 2121, - 2148, 2154, 2167, 2178, 2182, 2195, 2199, 2213, 2217, 2224, - 2225, 2231, 2238, 2250, 2280, 2293, 2316, 2344, 2366, 2377, - 2399, 2410, 2419, 2424, 2483, 2490, 2498, 2505, 2512, 2516, - 2520, 2534, 2549, 2561, 2570, 2598, 2611, 2620, 2626, 2632, - 2643, 2649, 2655, 2666, 2667, 2676, 2677, 2689, 2698, 2699, - 2700, 2701, 2702, 2718, 2738, 2740, 2742, 2746, 2749, 2754, - 2757, 2762, 2765, 2771, 2774, 2776, 2778, 2783, 2797, 2798, - 2802, 2805, 2813, 2817, 2824, 2828, 2832, 2836, 2844, 2844, - 2848, 2849, 2853, 2861, 2866, 2874, 2875, 2882, 2889, 2893, - 3083, 3083, 3087, 3087, 3097, 3097, 3101, 3106, 3107, 3108, - 3112, 3113, 3113, 3125, 3126, 3131, 3132, 3133, 3134, 3138, - 3142, 3143, 3144, 3145, 3166, 3170, 3184, 3185, 3190, 3190, - 3198, 3208, 3211, 3220, 3231, 3236, 3245, 3256, 3256, 3259, - 3263, 3267, 3272, 3282, 3300, 3309, 3383, 3387, 3394, 3406, - 3421, 3451, 3461, 3471, 3475, 3482, 3483, 3487, 3490, 3496, - 3515, 3533, 3549, 3563, 3577, 3588, 3606, 3615, 3624, 3631, - 3652, 3676, 3682, 3688, 3694, 3710, 3803, 3811, 3812, 3816, - 3817, 3821, 3827, 3834, 3840, 3847, 3854, 3867, 3893 -}; +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} #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 +# elif defined __BUILTIN_VA_ARG_INCR +# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ |