aboutsummaryrefslogtreecommitdiff
path: root/tools/llvm-upgrade/UpgradeParser.cpp.cvs
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2007-11-27 13:23:08 +0000
committerDuncan Sands <baldrick@free.fr>2007-11-27 13:23:08 +0000
commitdc024674ff96820d6020757b48d47f46d4c07db2 (patch)
tree843dfcaeb8f6c99de930a32020148b563005c2fd /tools/llvm-upgrade/UpgradeParser.cpp.cvs
parentf19341dec7361451f100a882a023b14583454d7e (diff)
Fix PR1146: parameter attributes are longer part of
the function type, instead they belong to functions and function calls. This is an updated and slightly corrected version of Reid Spencer's original patch. The only known problem is that auto-upgrading of bitcode files doesn't seem to work properly (see test/Bitcode/AutoUpgradeIntrinsics.ll). Hopefully a bitcode guru (who might that be? :) ) will fix it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44359 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-upgrade/UpgradeParser.cpp.cvs')
-rw-r--r--tools/llvm-upgrade/UpgradeParser.cpp.cvs7676
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,