[llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs UpgradeParser.h.cvs UpgradeParser.y.cvs

Reid Spencer reid at x10sys.com
Fri Jan 12 16:03:45 PST 2007



Changes in directory llvm/tools/llvm-upgrade:

UpgradeParser.cpp.cvs updated: 1.37 -> 1.38
UpgradeParser.h.cvs updated: 1.27 -> 1.28
UpgradeParser.y.cvs updated: 1.36 -> 1.37
---
Log message:

Regenerate.


---
Diffs of the changes:  (+1341 -1280)

 UpgradeParser.cpp.cvs | 2170 +++++++++++++++++++++++++-------------------------
 UpgradeParser.h.cvs   |  410 ++++-----
 UpgradeParser.y.cvs   |   41 
 3 files changed, 1341 insertions(+), 1280 deletions(-)


Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs
diff -u llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.37 llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.38
--- llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.37	Fri Jan 12 14:10:51 2007
+++ llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs	Fri Jan 12 18:03:30 2007
@@ -110,108 +110,107 @@
      DLLEXPORT = 301,
      EXTERN_WEAK = 302,
      APPENDING = 303,
-     NOT = 304,
-     EXTERNAL = 305,
-     TARGET = 306,
-     TRIPLE = 307,
-     ENDIAN = 308,
-     POINTERSIZE = 309,
-     LITTLE = 310,
-     BIG = 311,
-     ALIGN = 312,
-     UNINITIALIZED = 313,
-     DEPLIBS = 314,
-     CALL = 315,
-     TAIL = 316,
-     ASM_TOK = 317,
-     MODULE = 318,
-     SIDEEFFECT = 319,
-     CC_TOK = 320,
-     CCC_TOK = 321,
-     CSRETCC_TOK = 322,
-     FASTCC_TOK = 323,
-     COLDCC_TOK = 324,
-     X86_STDCALLCC_TOK = 325,
-     X86_FASTCALLCC_TOK = 326,
-     DATALAYOUT = 327,
-     RET = 328,
-     BR = 329,
-     SWITCH = 330,
-     INVOKE = 331,
-     EXCEPT = 332,
-     UNWIND = 333,
-     UNREACHABLE = 334,
-     ADD = 335,
-     SUB = 336,
-     MUL = 337,
-     DIV = 338,
-     UDIV = 339,
-     SDIV = 340,
-     FDIV = 341,
-     REM = 342,
-     UREM = 343,
-     SREM = 344,
-     FREM = 345,
-     AND = 346,
-     OR = 347,
-     XOR = 348,
-     SETLE = 349,
-     SETGE = 350,
-     SETLT = 351,
-     SETGT = 352,
-     SETEQ = 353,
-     SETNE = 354,
-     ICMP = 355,
-     FCMP = 356,
-     EQ = 357,
-     NE = 358,
-     SLT = 359,
-     SGT = 360,
-     SLE = 361,
-     SGE = 362,
-     OEQ = 363,
-     ONE = 364,
-     OLT = 365,
-     OGT = 366,
-     OLE = 367,
-     OGE = 368,
-     ORD = 369,
-     UNO = 370,
-     UEQ = 371,
-     UNE = 372,
-     ULT = 373,
-     UGT = 374,
-     ULE = 375,
-     UGE = 376,
-     MALLOC = 377,
-     ALLOCA = 378,
-     FREE = 379,
-     LOAD = 380,
-     STORE = 381,
-     GETELEMENTPTR = 382,
-     PHI_TOK = 383,
-     SELECT = 384,
-     SHL = 385,
-     SHR = 386,
-     ASHR = 387,
-     LSHR = 388,
-     VAARG = 389,
-     EXTRACTELEMENT = 390,
-     INSERTELEMENT = 391,
-     SHUFFLEVECTOR = 392,
-     CAST = 393,
-     TRUNC = 394,
-     ZEXT = 395,
-     SEXT = 396,
-     FPTRUNC = 397,
-     FPEXT = 398,
-     FPTOUI = 399,
-     FPTOSI = 400,
-     UITOFP = 401,
-     SITOFP = 402,
-     PTRTOINT = 403,
-     INTTOPTR = 404,
-     BITCAST = 405
+     EXTERNAL = 304,
+     TARGET = 305,
+     TRIPLE = 306,
+     ENDIAN = 307,
+     POINTERSIZE = 308,
+     LITTLE = 309,
+     BIG = 310,
+     ALIGN = 311,
+     UNINITIALIZED = 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,
+     EXCEPT = 331,
+     UNWIND = 332,
+     UNREACHABLE = 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,
+     SETLE = 348,
+     SETGE = 349,
+     SETLT = 350,
+     SETGT = 351,
+     SETEQ = 352,
+     SETNE = 353,
+     ICMP = 354,
+     FCMP = 355,
+     EQ = 356,
+     NE = 357,
+     SLT = 358,
+     SGT = 359,
+     SLE = 360,
+     SGE = 361,
+     OEQ = 362,
+     ONE = 363,
+     OLT = 364,
+     OGT = 365,
+     OLE = 366,
+     OGE = 367,
+     ORD = 368,
+     UNO = 369,
+     UEQ = 370,
+     UNE = 371,
+     ULT = 372,
+     UGT = 373,
+     ULE = 374,
+     UGE = 375,
+     MALLOC = 376,
+     ALLOCA = 377,
+     FREE = 378,
+     LOAD = 379,
+     STORE = 380,
+     GETELEMENTPTR = 381,
+     PHI_TOK = 382,
+     SELECT = 383,
+     SHL = 384,
+     SHR = 385,
+     ASHR = 386,
+     LSHR = 387,
+     VAARG = 388,
+     EXTRACTELEMENT = 389,
+     INSERTELEMENT = 390,
+     SHUFFLEVECTOR = 391,
+     CAST = 392,
+     TRUNC = 393,
+     ZEXT = 394,
+     SEXT = 395,
+     FPTRUNC = 396,
+     FPEXT = 397,
+     FPTOUI = 398,
+     FPTOSI = 399,
+     UITOFP = 400,
+     SITOFP = 401,
+     PTRTOINT = 402,
+     INTTOPTR = 403,
+     BITCAST = 404
    };
 #endif
 /* Tokens.  */
@@ -261,108 +260,107 @@
 #define DLLEXPORT 301
 #define EXTERN_WEAK 302
 #define APPENDING 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 UNINITIALIZED 313
-#define DEPLIBS 314
-#define CALL 315
-#define TAIL 316
-#define ASM_TOK 317
-#define MODULE 318
-#define SIDEEFFECT 319
-#define CC_TOK 320
-#define CCC_TOK 321
-#define CSRETCC_TOK 322
-#define FASTCC_TOK 323
-#define COLDCC_TOK 324
-#define X86_STDCALLCC_TOK 325
-#define X86_FASTCALLCC_TOK 326
-#define DATALAYOUT 327
-#define RET 328
-#define BR 329
-#define SWITCH 330
-#define INVOKE 331
-#define EXCEPT 332
-#define UNWIND 333
-#define UNREACHABLE 334
-#define ADD 335
-#define SUB 336
-#define MUL 337
-#define DIV 338
-#define UDIV 339
-#define SDIV 340
-#define FDIV 341
-#define REM 342
-#define UREM 343
-#define SREM 344
-#define FREM 345
-#define AND 346
-#define OR 347
-#define XOR 348
-#define SETLE 349
-#define SETGE 350
-#define SETLT 351
-#define SETGT 352
-#define SETEQ 353
-#define SETNE 354
-#define ICMP 355
-#define FCMP 356
-#define EQ 357
-#define NE 358
-#define SLT 359
-#define SGT 360
-#define SLE 361
-#define SGE 362
-#define OEQ 363
-#define ONE 364
-#define OLT 365
-#define OGT 366
-#define OLE 367
-#define OGE 368
-#define ORD 369
-#define UNO 370
-#define UEQ 371
-#define UNE 372
-#define ULT 373
-#define UGT 374
-#define ULE 375
-#define UGE 376
-#define MALLOC 377
-#define ALLOCA 378
-#define FREE 379
-#define LOAD 380
-#define STORE 381
-#define GETELEMENTPTR 382
-#define PHI_TOK 383
-#define SELECT 384
-#define SHL 385
-#define SHR 386
-#define ASHR 387
-#define LSHR 388
-#define VAARG 389
-#define EXTRACTELEMENT 390
-#define INSERTELEMENT 391
-#define SHUFFLEVECTOR 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
+#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 UNINITIALIZED 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 EXCEPT 331
+#define UNWIND 332
+#define UNREACHABLE 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 SETLE 348
+#define SETGE 349
+#define SETLT 350
+#define SETGT 351
+#define SETEQ 352
+#define SETNE 353
+#define ICMP 354
+#define FCMP 355
+#define EQ 356
+#define NE 357
+#define SLT 358
+#define SGT 359
+#define SLE 360
+#define SGE 361
+#define OEQ 362
+#define ONE 363
+#define OLT 364
+#define OGT 365
+#define OLE 366
+#define OGE 367
+#define ORD 368
+#define UNO 369
+#define UEQ 370
+#define UNE 371
+#define ULT 372
+#define UGT 373
+#define ULE 374
+#define UGE 375
+#define MALLOC 376
+#define ALLOCA 377
+#define FREE 378
+#define LOAD 379
+#define STORE 380
+#define GETELEMENTPTR 381
+#define PHI_TOK 382
+#define SELECT 383
+#define SHL 384
+#define SHR 385
+#define ASHR 386
+#define LSHR 387
+#define VAARG 388
+#define EXTRACTELEMENT 389
+#define INSERTELEMENT 390
+#define SHUFFLEVECTOR 391
+#define CAST 392
+#define TRUNC 393
+#define ZEXT 394
+#define SEXT 395
+#define FPTRUNC 396
+#define FPEXT 397
+#define FPTOUI 398
+#define FPTOSI 399
+#define UITOFP 400
+#define SITOFP 401
+#define PTRTOINT 402
+#define INTTOPTR 403
+#define BITCAST 404
 
 
 
@@ -394,6 +392,10 @@
 // definitions and calls.
 static bool AddAttributes = false;
 
+// This is set when a DECLARE keyword is recognized so that subsequent parsing
+// of a function prototype can know if its a declaration or definition.
+static bool isDeclare = false;
+
 // This bool is used to communicate between the InstVal and Inst rules about
 // whether or not a cast should be deleted. When the flag is set, InstVal has
 // determined that the cast is a candidate. However, it can only be deleted if
@@ -1174,7 +1176,7 @@
 #endif
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 802 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 806 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
 typedef union YYSTYPE {
   std::string*    String;
   const TypeInfo* Type;
@@ -1184,7 +1186,7 @@
   TypeList*       TypeVec;
 } YYSTYPE;
 /* Line 196 of yacc.c.  */
-#line 1188 "UpgradeParser.tab.c"
+#line 1190 "UpgradeParser.tab.c"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
@@ -1196,7 +1198,7 @@
 
 
 /* Line 219 of yacc.c.  */
-#line 1200 "UpgradeParser.tab.c"
+#line 1202 "UpgradeParser.tab.c"
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
 # define YYSIZE_T __SIZE_TYPE__
@@ -1347,20 +1349,20 @@
 /* YYFINAL -- State number of the termination state. */
 #define YYFINAL  4
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1463
+#define YYLAST   1473
 
 /* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS  165
+#define YYNTOKENS  164
 /* YYNNTS -- Number of nonterminals. */
-#define YYNNTS  75
+#define YYNNTS  76
 /* YYNRULES -- Number of rules. */
-#define YYNRULES  300
+#define YYNRULES  301
 /* YYNRULES -- Number of states. */
-#define YYNSTATES  584
+#define YYNSTATES  585
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   405
+#define YYMAXUTOK   404
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -1372,15 +1374,15 @@
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     154,   155,   163,     2,   152,     2,     2,     2,     2,     2,
+     153,   154,   162,     2,   151,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     159,   151,   160,     2,     2,     2,     2,     2,     2,     2,
+     158,   150,   159,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   156,   153,   158,     2,     2,     2,     2,     2,   164,
+       2,   155,   152,   157,     2,     2,     2,     2,     2,   163,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     157,     2,     2,   161,     2,   162,     2,     2,     2,     2,
+     156,     2,     2,   160,     2,   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,     2,     2,     2,     2,     2,     2,
@@ -1408,7 +1410,7 @@
      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
+     145,   146,   147,   148,   149
 };
 
 #if YYDEBUG
@@ -1438,150 +1440,150 @@
      524,   531,   538,   542,   547,   548,   550,   552,   554,   558,
      562,   566,   570,   574,   578,   580,   581,   583,   585,   587,
      588,   591,   595,   597,   599,   603,   605,   606,   615,   617,
-     619,   623,   625,   627,   631,   632,   634,   636,   640,   641,
-     643,   645,   647,   649,   651,   653,   655,   657,   659,   663,
-     665,   671,   673,   675,   677,   679,   682,   685,   687,   690,
-     693,   694,   696,   698,   700,   703,   706,   710,   720,   730,
-     739,   754,   756,   758,   765,   771,   774,   781,   789,   791,
-     795,   797,   798,   801,   803,   809,   815,   821,   828,   835,
-     840,   845,   852,   857,   862,   869,   876,   879,   887,   889,
-     892,   893,   895,   896,   900,   907,   911,   918,   921,   926,
-     933
+     619,   623,   625,   627,   631,   632,   634,   636,   637,   642,
+     643,   645,   647,   649,   651,   653,   655,   657,   659,   661,
+     665,   667,   673,   675,   677,   679,   681,   684,   687,   689,
+     692,   695,   696,   698,   700,   702,   705,   708,   712,   722,
+     732,   741,   756,   758,   760,   767,   773,   776,   783,   791,
+     793,   797,   799,   800,   803,   805,   811,   817,   823,   830,
+     837,   842,   847,   854,   859,   864,   871,   878,   881,   889,
+     891,   894,   895,   897,   898,   902,   909,   913,   920,   923,
+     928,   935
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
 static const short int yyrhs[] =
 {
-     199,     0,    -1,    19,    -1,    20,    -1,    17,    -1,    18,
-      -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,    99,
-      -1,   102,    -1,   103,    -1,   104,    -1,   105,    -1,   106,
-      -1,   107,    -1,   118,    -1,   119,    -1,   120,    -1,   121,
-      -1,   108,    -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,   121,    -1,    25,
-      -1,    26,    -1,   130,    -1,   131,    -1,   132,    -1,   133,
-      -1,   139,    -1,   140,    -1,   141,    -1,   142,    -1,   143,
-      -1,   144,    -1,   145,    -1,   146,    -1,   147,    -1,   148,
-      -1,   149,    -1,   150,    -1,   138,    -1,    11,    -1,     9,
+     198,     0,    -1,    19,    -1,    20,    -1,    17,    -1,    18,
+      -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,   101,    -1,   102,    -1,   103,    -1,   104,    -1,   105,
+      -1,   106,    -1,   117,    -1,   118,    -1,   119,    -1,   120,
+      -1,   107,    -1,   108,    -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,    25,
+      -1,    26,    -1,   129,    -1,   130,    -1,   131,    -1,   132,
+      -1,   138,    -1,   139,    -1,   140,    -1,   141,    -1,   142,
+      -1,   143,    -1,   144,    -1,   145,    -1,   146,    -1,   147,
+      -1,   148,    -1,   149,    -1,   137,    -1,    11,    -1,     9,
       -1,     7,    -1,     5,    -1,    12,    -1,    10,    -1,     8,
-      -1,     6,    -1,   175,    -1,   176,    -1,    13,    -1,    14,
-      -1,   208,   151,    -1,    -1,    42,    -1,    43,    -1,    44,
+      -1,     6,    -1,   174,    -1,   175,    -1,    13,    -1,    14,
+      -1,   207,   150,    -1,    -1,    42,    -1,    43,    -1,    44,
       -1,    48,    -1,    45,    -1,    46,    -1,    47,    -1,    -1,
-      66,    -1,    67,    -1,    68,    -1,    69,    -1,    70,    -1,
-      71,    -1,    65,    18,    -1,    -1,    -1,    57,    18,    -1,
-      -1,   152,    57,    18,    -1,    37,    30,    -1,    -1,   184,
-      -1,    -1,   152,   187,   186,    -1,   184,    -1,    57,    18,
-      -1,   190,    -1,     3,    -1,   192,    -1,     3,    -1,   192,
+      65,    -1,    66,    -1,    67,    -1,    68,    -1,    69,    -1,
+      70,    -1,    64,    18,    -1,    -1,    -1,    56,    18,    -1,
+      -1,   151,    56,    18,    -1,    37,    30,    -1,    -1,   183,
+      -1,    -1,   151,   186,   185,    -1,   183,    -1,    56,    18,
+      -1,   189,    -1,     3,    -1,   191,    -1,     3,    -1,   191,
       -1,     4,    -1,     5,    -1,     6,    -1,     7,    -1,     8,
       -1,     9,    -1,    10,    -1,    11,    -1,    12,    -1,    13,
-      -1,    14,    -1,    15,    -1,    16,    -1,   222,    -1,   191,
-      -1,   153,    18,    -1,   189,   154,   194,   155,    -1,   156,
-      18,   157,   192,   158,    -1,   159,    18,   157,   192,   160,
-      -1,   161,   193,   162,    -1,   161,   162,    -1,   159,   161,
-     193,   162,   160,    -1,   159,   161,   162,   160,    -1,   192,
-     163,    -1,   192,    -1,   193,   152,   192,    -1,   193,    -1,
-     193,   152,    40,    -1,    40,    -1,    -1,   190,   156,   197,
-     158,    -1,   190,   156,   158,    -1,   190,   164,    30,    -1,
-     190,   159,   197,   160,    -1,   190,   161,   197,   162,    -1,
-     190,   161,   162,    -1,   190,    22,    -1,   190,    23,    -1,
-     190,   222,    -1,   190,   196,    -1,   190,    24,    -1,   175,
-     167,    -1,   176,   167,    -1,     4,    25,    -1,     4,    26,
-      -1,   178,    21,    -1,   174,   154,   195,    39,   190,   155,
-      -1,   127,   154,   195,   237,   155,    -1,   129,   154,   195,
-     152,   195,   152,   195,   155,    -1,   168,   154,   195,   152,
-     195,   155,    -1,   169,   154,   195,   152,   195,   155,    -1,
-     170,   154,   195,   152,   195,   155,    -1,   100,   171,   154,
-     195,   152,   195,   155,    -1,   101,   172,   154,   195,   152,
-     195,   155,    -1,   173,   154,   195,   152,   195,   155,    -1,
-     135,   154,   195,   152,   195,   155,    -1,   136,   154,   195,
-     152,   195,   152,   195,   155,    -1,   137,   154,   195,   152,
-     195,   152,   195,   155,    -1,   197,   152,   195,    -1,   195,
-      -1,    35,    -1,    36,    -1,   200,    -1,   200,   217,    -1,
-     200,   219,    -1,   200,    63,    62,   203,    -1,   200,    31,
-      -1,   202,    -1,    50,    -1,    58,    -1,   202,   179,    27,
-     188,    -1,   202,   219,    -1,   202,    63,    62,   203,    -1,
-     202,   179,   180,   198,   195,   186,    -1,   202,   179,   201,
-     198,   190,   186,    -1,   202,   179,    45,   198,   190,   186,
-      -1,   202,   179,    47,   198,   190,   186,    -1,   202,    51,
-     205,    -1,   202,    59,   151,   206,    -1,    -1,    30,    -1,
-      56,    -1,    55,    -1,    53,   151,   204,    -1,    54,   151,
-      18,    -1,    52,   151,    30,    -1,    72,   151,    30,    -1,
-     156,   207,   158,    -1,   207,   152,    30,    -1,    30,    -1,
-      -1,    28,    -1,    30,    -1,   208,    -1,    -1,   190,   209,
-      -1,   211,   152,   210,    -1,   210,    -1,   211,    -1,   211,
-     152,    40,    -1,    40,    -1,    -1,   181,   188,   208,   154,
-     212,   155,   185,   182,    -1,    32,    -1,   161,    -1,   180,
-     213,   214,    -1,    33,    -1,   162,    -1,   215,   225,   216,
-      -1,    -1,    45,    -1,    47,    -1,    34,   218,   213,    -1,
-      -1,    64,    -1,    17,    -1,    18,    -1,    21,    -1,    25,
-      -1,    26,    -1,    22,    -1,    23,    -1,    24,    -1,   159,
-     197,   160,    -1,   196,    -1,    62,   220,    30,   152,    30,
-      -1,   166,    -1,   208,    -1,   222,    -1,   221,    -1,   190,
-     223,    -1,   225,   226,    -1,   226,    -1,   227,   229,    -1,
-     227,   231,    -1,    -1,    29,    -1,    78,    -1,    77,    -1,
-      73,   224,    -1,    73,     3,    -1,    74,    15,   223,    -1,
-      74,     4,   223,   152,    15,   223,   152,    15,   223,    -1,
-      75,   177,   223,   152,    15,   223,   156,   230,   158,    -1,
-      75,   177,   223,   152,    15,   223,   156,   158,    -1,   179,
-      76,   181,   188,   223,   154,   234,   155,    39,    15,   223,
-     228,    15,   223,    -1,   228,    -1,    79,    -1,   230,   177,
-     221,   152,    15,   223,    -1,   177,   221,   152,    15,   223,
-      -1,   179,   236,    -1,   190,   156,   223,   152,   223,   158,
-      -1,   232,   152,   156,   223,   152,   223,   158,    -1,   224,
-      -1,   233,   152,   224,    -1,   233,    -1,    -1,    61,    60,
-      -1,    60,    -1,   168,   190,   223,   152,   223,    -1,   169,
-     190,   223,   152,   223,    -1,   170,   190,   223,   152,   223,
-      -1,   100,   171,   190,   223,   152,   223,    -1,   101,   172,
-     190,   223,   152,   223,    -1,   173,   224,   152,   224,    -1,
-     174,   224,    39,   190,    -1,   129,   224,   152,   224,   152,
-     224,    -1,   134,   224,   152,   190,    -1,   135,   224,   152,
-     224,    -1,   136,   224,   152,   224,   152,   224,    -1,   137,
-     224,   152,   224,   152,   224,    -1,   128,   232,    -1,   235,
-     181,   188,   223,   154,   234,   155,    -1,   239,    -1,   152,
-     233,    -1,    -1,    38,    -1,    -1,   122,   190,   183,    -1,
-     122,   190,   152,    10,   223,   183,    -1,   123,   190,   183,
-      -1,   123,   190,   152,    10,   223,   183,    -1,   124,   224,
-      -1,   238,   125,   190,   223,    -1,   238,   126,   224,   152,
-     190,   223,    -1,   127,   190,   223,   237,    -1
+      -1,    14,    -1,    15,    -1,    16,    -1,   222,    -1,   190,
+      -1,   152,    18,    -1,   188,   153,   193,   154,    -1,   155,
+      18,   156,   191,   157,    -1,   158,    18,   156,   191,   159,
+      -1,   160,   192,   161,    -1,   160,   161,    -1,   158,   160,
+     192,   161,   159,    -1,   158,   160,   161,   159,    -1,   191,
+     162,    -1,   191,    -1,   192,   151,   191,    -1,   192,    -1,
+     192,   151,    40,    -1,    40,    -1,    -1,   189,   155,   196,
+     157,    -1,   189,   155,   157,    -1,   189,   163,    30,    -1,
+     189,   158,   196,   159,    -1,   189,   160,   196,   161,    -1,
+     189,   160,   161,    -1,   189,    22,    -1,   189,    23,    -1,
+     189,   222,    -1,   189,   195,    -1,   189,    24,    -1,   174,
+     166,    -1,   175,   166,    -1,     4,    25,    -1,     4,    26,
+      -1,   177,    21,    -1,   173,   153,   194,    39,   189,   154,
+      -1,   126,   153,   194,   237,   154,    -1,   128,   153,   194,
+     151,   194,   151,   194,   154,    -1,   167,   153,   194,   151,
+     194,   154,    -1,   168,   153,   194,   151,   194,   154,    -1,
+     169,   153,   194,   151,   194,   154,    -1,    99,   170,   153,
+     194,   151,   194,   154,    -1,   100,   171,   153,   194,   151,
+     194,   154,    -1,   172,   153,   194,   151,   194,   154,    -1,
+     134,   153,   194,   151,   194,   154,    -1,   135,   153,   194,
+     151,   194,   151,   194,   154,    -1,   136,   153,   194,   151,
+     194,   151,   194,   154,    -1,   196,   151,   194,    -1,   194,
+      -1,    35,    -1,    36,    -1,   199,    -1,   199,   216,    -1,
+     199,   218,    -1,   199,    62,    61,   202,    -1,   199,    31,
+      -1,   201,    -1,    49,    -1,    57,    -1,   201,   178,    27,
+     187,    -1,   201,   218,    -1,   201,    62,    61,   202,    -1,
+     201,   178,   179,   197,   194,   185,    -1,   201,   178,   200,
+     197,   189,   185,    -1,   201,   178,    45,   197,   189,   185,
+      -1,   201,   178,    47,   197,   189,   185,    -1,   201,    50,
+     204,    -1,   201,    58,   150,   205,    -1,    -1,    30,    -1,
+      55,    -1,    54,    -1,    52,   150,   203,    -1,    53,   150,
+      18,    -1,    51,   150,    30,    -1,    71,   150,    30,    -1,
+     155,   206,   157,    -1,   206,   151,    30,    -1,    30,    -1,
+      -1,    28,    -1,    30,    -1,   207,    -1,    -1,   189,   208,
+      -1,   210,   151,   209,    -1,   209,    -1,   210,    -1,   210,
+     151,    40,    -1,    40,    -1,    -1,   180,   187,   207,   153,
+     211,   154,   184,   181,    -1,    32,    -1,   160,    -1,   179,
+     212,   213,    -1,    33,    -1,   161,    -1,   214,   225,   215,
+      -1,    -1,    45,    -1,    47,    -1,    -1,    34,   219,   217,
+     212,    -1,    -1,    63,    -1,    17,    -1,    18,    -1,    21,
+      -1,    25,    -1,    26,    -1,    22,    -1,    23,    -1,    24,
+      -1,   158,   196,   159,    -1,   195,    -1,    61,   220,    30,
+     151,    30,    -1,   165,    -1,   207,    -1,   222,    -1,   221,
+      -1,   189,   223,    -1,   225,   226,    -1,   226,    -1,   227,
+     229,    -1,   227,   231,    -1,    -1,    29,    -1,    77,    -1,
+      76,    -1,    72,   224,    -1,    72,     3,    -1,    73,    15,
+     223,    -1,    73,     4,   223,   151,    15,   223,   151,    15,
+     223,    -1,    74,   176,   223,   151,    15,   223,   155,   230,
+     157,    -1,    74,   176,   223,   151,    15,   223,   155,   157,
+      -1,   178,    75,   180,   187,   223,   153,   234,   154,    39,
+      15,   223,   228,    15,   223,    -1,   228,    -1,    78,    -1,
+     230,   176,   221,   151,    15,   223,    -1,   176,   221,   151,
+      15,   223,    -1,   178,   236,    -1,   189,   155,   223,   151,
+     223,   157,    -1,   232,   151,   155,   223,   151,   223,   157,
+      -1,   224,    -1,   233,   151,   224,    -1,   233,    -1,    -1,
+      60,    59,    -1,    59,    -1,   167,   189,   223,   151,   223,
+      -1,   168,   189,   223,   151,   223,    -1,   169,   189,   223,
+     151,   223,    -1,    99,   170,   189,   223,   151,   223,    -1,
+     100,   171,   189,   223,   151,   223,    -1,   172,   224,   151,
+     224,    -1,   173,   224,    39,   189,    -1,   128,   224,   151,
+     224,   151,   224,    -1,   133,   224,   151,   189,    -1,   134,
+     224,   151,   224,    -1,   135,   224,   151,   224,   151,   224,
+      -1,   136,   224,   151,   224,   151,   224,    -1,   127,   232,
+      -1,   235,   180,   187,   223,   153,   234,   154,    -1,   239,
+      -1,   151,   233,    -1,    -1,    38,    -1,    -1,   121,   189,
+     182,    -1,   121,   189,   151,    10,   223,   182,    -1,   122,
+     189,   182,    -1,   122,   189,   151,    10,   223,   182,    -1,
+     123,   224,    -1,   238,   124,   189,   223,    -1,   238,   125,
+     224,   151,   189,   223,    -1,   126,   189,   223,   237,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short int yyrline[] =
 {
-       0,   867,   867,   867,   868,   868,   872,   872,   872,   872,
-     872,   872,   872,   873,   873,   873,   873,   874,   874,   874,
-     875,   875,   875,   875,   875,   875,   876,   876,   876,   876,
-     876,   876,   876,   876,   876,   876,   877,   877,   877,   877,
-     877,   877,   877,   877,   877,   877,   878,   878,   878,   878,
-     878,   878,   879,   879,   879,   879,   880,   880,   880,   880,
-     880,   880,   880,   881,   881,   881,   881,   881,   881,   886,
-     886,   886,   886,   887,   887,   887,   887,   888,   888,   889,
-     889,   892,   895,   900,   900,   900,   900,   900,   900,   901,
-     902,   905,   905,   905,   905,   905,   906,   907,   912,   917,
-     918,   921,   922,   930,   936,   937,   940,   941,   950,   951,
-     964,   964,   965,   965,   966,   970,   970,   970,   970,   970,
-     970,   970,   971,   971,   971,   971,   971,   973,   976,   979,
-     982,   986,   999,  1005,  1011,  1021,  1024,  1034,  1037,  1045,
-    1049,  1056,  1057,  1062,  1067,  1077,  1083,  1088,  1094,  1100,
-    1106,  1111,  1117,  1123,  1130,  1136,  1142,  1148,  1154,  1160,
-    1166,  1174,  1188,  1200,  1205,  1211,  1216,  1222,  1227,  1232,
-    1240,  1245,  1250,  1260,  1265,  1270,  1270,  1280,  1285,  1288,
-    1293,  1297,  1301,  1303,  1303,  1306,  1316,  1321,  1326,  1336,
-    1346,  1356,  1366,  1371,  1376,  1381,  1383,  1383,  1386,  1391,
-    1398,  1403,  1410,  1417,  1422,  1423,  1431,  1431,  1432,  1432,
-    1434,  1443,  1447,  1451,  1454,  1459,  1462,  1465,  1483,  1484,
-    1487,  1498,  1499,  1501,  1510,  1511,  1512,  1516,  1529,  1530,
-    1533,  1533,  1533,  1533,  1533,  1533,  1533,  1534,  1535,  1540,
-    1541,  1550,  1550,  1554,  1559,  1569,  1578,  1581,  1589,  1593,
-    1598,  1601,  1607,  1607,  1609,  1614,  1619,  1624,  1632,  1640,
-    1647,  1669,  1674,  1680,  1686,  1694,  1712,  1720,  1729,  1733,
-    1740,  1741,  1745,  1750,  1753,  1762,  1770,  1779,  1787,  1795,
-    1804,  1832,  1838,  1844,  1851,  1857,  1863,  1869,  1897,  1902,
-    1903,  1907,  1908,  1911,  1919,  1928,  1936,  1945,  1951,  1960,
-    1969
+       0,   871,   871,   871,   872,   872,   876,   876,   876,   876,
+     876,   876,   876,   877,   877,   877,   877,   878,   878,   878,
+     879,   879,   879,   879,   879,   879,   880,   880,   880,   880,
+     880,   880,   880,   880,   880,   880,   881,   881,   881,   881,
+     881,   881,   881,   881,   881,   881,   882,   882,   882,   882,
+     882,   882,   883,   883,   883,   883,   884,   884,   884,   884,
+     884,   884,   884,   885,   885,   885,   885,   885,   885,   890,
+     890,   890,   890,   891,   891,   891,   891,   892,   892,   893,
+     893,   896,   899,   904,   904,   904,   904,   904,   904,   905,
+     906,   909,   909,   909,   909,   909,   910,   911,   916,   921,
+     922,   925,   926,   934,   940,   941,   944,   945,   954,   955,
+     968,   968,   969,   969,   970,   974,   974,   974,   974,   974,
+     974,   974,   975,   975,   975,   975,   975,   977,   980,   983,
+     986,   990,  1003,  1009,  1015,  1025,  1028,  1038,  1041,  1049,
+    1053,  1060,  1061,  1066,  1071,  1081,  1087,  1092,  1098,  1104,
+    1110,  1115,  1121,  1127,  1134,  1140,  1146,  1152,  1158,  1164,
+    1170,  1178,  1192,  1204,  1209,  1215,  1220,  1226,  1231,  1236,
+    1244,  1249,  1254,  1264,  1269,  1274,  1274,  1284,  1289,  1292,
+    1297,  1301,  1305,  1307,  1307,  1310,  1320,  1325,  1330,  1340,
+    1350,  1360,  1370,  1375,  1380,  1385,  1387,  1387,  1390,  1395,
+    1402,  1407,  1414,  1421,  1426,  1427,  1435,  1435,  1436,  1436,
+    1438,  1447,  1451,  1455,  1458,  1463,  1466,  1469,  1492,  1493,
+    1496,  1507,  1508,  1510,  1519,  1520,  1521,  1525,  1525,  1539,
+    1540,  1543,  1543,  1543,  1543,  1543,  1543,  1543,  1544,  1545,
+    1550,  1551,  1560,  1560,  1564,  1569,  1579,  1588,  1591,  1599,
+    1603,  1608,  1611,  1617,  1617,  1619,  1624,  1629,  1634,  1642,
+    1650,  1657,  1679,  1684,  1690,  1696,  1704,  1722,  1730,  1739,
+    1743,  1750,  1751,  1755,  1760,  1763,  1772,  1780,  1789,  1797,
+    1805,  1814,  1842,  1848,  1854,  1861,  1867,  1873,  1879,  1926,
+    1931,  1932,  1936,  1937,  1940,  1948,  1957,  1965,  1974,  1980,
+    1989,  1998
 };
 #endif
 
@@ -1597,7 +1599,7 @@
   "TYPE", "VAR_ID", "LABELSTR", "STRINGCONSTANT", "IMPLEMENTATION",
   "BEGINTOK", "ENDTOK", "DECLARE", "GLOBAL", "CONSTANT", "SECTION",
   "VOLATILE", "TO", "DOTDOTDOT", "CONST", "INTERNAL", "LINKONCE", "WEAK",
-  "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK", "APPENDING", "NOT", "EXTERNAL",
+  "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK", "APPENDING", "EXTERNAL",
   "TARGET", "TRIPLE", "ENDIAN", "POINTERSIZE", "LITTLE", "BIG", "ALIGN",
   "UNINITIALIZED", "DEPLIBS", "CALL", "TAIL", "ASM_TOK", "MODULE",
   "SIDEEFFECT", "CC_TOK", "CCC_TOK", "CSRETCC_TOK", "FASTCC_TOK",
@@ -1624,11 +1626,11 @@
   "BigOrLittle", "TargetDefinition", "LibrariesDefinition", "LibList",
   "Name", "OptName", "ArgVal", "ArgListH", "ArgList", "FunctionHeaderH",
   "BEGIN", "FunctionHeader", "END", "Function", "FnDeclareLinkage",
-  "FunctionProto", "OptSideEffect", "ConstValueRef", "SymbolicValueRef",
-  "ValueRef", "ResolvedVal", "BasicBlockList", "BasicBlock",
-  "InstructionList", "Unwind", "BBTerminatorInst", "JumpTable", "Inst",
-  "PHIList", "ValueRefList", "ValueRefListE", "OptTailCall", "InstVal",
-  "IndexList", "OptVolatile", "MemoryInst", 0
+  "FunctionProto", "@1", "OptSideEffect", "ConstValueRef",
+  "SymbolicValueRef", "ValueRef", "ResolvedVal", "BasicBlockList",
+  "BasicBlock", "InstructionList", "Unwind", "BBTerminatorInst",
+  "JumpTable", "Inst", "PHIList", "ValueRefList", "ValueRefListE",
+  "OptTailCall", "InstVal", "IndexList", "OptVolatile", "MemoryInst", 0
 };
 #endif
 
@@ -1652,45 +1654,45 @@
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405,    61,    44,    92,    40,    41,    91,   120,    93,    60,
-      62,   123,   125,    42,    99
+      61,    44,    92,    40,    41,    91,   120,    93,    60,    62,
+     123,   125,    42,    99
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const unsigned char yyr1[] =
 {
-       0,   165,   166,   166,   167,   167,   168,   168,   168,   168,
-     168,   168,   168,   168,   168,   168,   168,   169,   169,   169,
+       0,   164,   165,   165,   166,   166,   167,   167,   167,   167,
+     167,   167,   167,   167,   167,   167,   167,   168,   168,   168,
+     169,   169,   169,   169,   169,   169,   170,   170,   170,   170,
      170,   170,   170,   170,   170,   170,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   172,   172,   172,   172,
-     172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
-     172,   172,   173,   173,   173,   173,   174,   174,   174,   174,
-     174,   174,   174,   174,   174,   174,   174,   174,   174,   175,
-     175,   175,   175,   176,   176,   176,   176,   177,   177,   178,
-     178,   179,   179,   180,   180,   180,   180,   180,   180,   180,
-     180,   181,   181,   181,   181,   181,   181,   181,   181,   182,
-     182,   183,   183,   184,   185,   185,   186,   186,   187,   187,
-     188,   188,   189,   189,   190,   191,   191,   191,   191,   191,
-     191,   191,   191,   191,   191,   191,   191,   192,   192,   192,
-     192,   192,   192,   192,   192,   192,   192,   192,   192,   193,
-     193,   194,   194,   194,   194,   195,   195,   195,   195,   195,
-     195,   195,   195,   195,   195,   195,   195,   195,   195,   195,
-     195,   196,   196,   196,   196,   196,   196,   196,   196,   196,
-     196,   196,   196,   197,   197,   198,   198,   199,   200,   200,
-     200,   200,   200,   201,   201,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   203,   204,   204,   205,   205,
-     205,   205,   206,   207,   207,   207,   208,   208,   209,   209,
-     210,   211,   211,   212,   212,   212,   212,   213,   214,   214,
-     215,   216,   216,   217,   218,   218,   218,   219,   220,   220,
-     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
-     221,   222,   222,   223,   223,   224,   225,   225,   226,   227,
-     227,   227,   228,   228,   229,   229,   229,   229,   229,   229,
-     229,   229,   229,   230,   230,   231,   232,   232,   233,   233,
-     234,   234,   235,   235,   236,   236,   236,   236,   236,   236,
-     236,   236,   236,   236,   236,   236,   236,   236,   236,   237,
-     237,   238,   238,   239,   239,   239,   239,   239,   239,   239,
-     239
+     171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
+     171,   171,   172,   172,   172,   172,   173,   173,   173,   173,
+     173,   173,   173,   173,   173,   173,   173,   173,   173,   174,
+     174,   174,   174,   175,   175,   175,   175,   176,   176,   177,
+     177,   178,   178,   179,   179,   179,   179,   179,   179,   179,
+     179,   180,   180,   180,   180,   180,   180,   180,   180,   181,
+     181,   182,   182,   183,   184,   184,   185,   185,   186,   186,
+     187,   187,   188,   188,   189,   190,   190,   190,   190,   190,
+     190,   190,   190,   190,   190,   190,   190,   191,   191,   191,
+     191,   191,   191,   191,   191,   191,   191,   191,   191,   192,
+     192,   193,   193,   193,   193,   194,   194,   194,   194,   194,
+     194,   194,   194,   194,   194,   194,   194,   194,   194,   194,
+     194,   195,   195,   195,   195,   195,   195,   195,   195,   195,
+     195,   195,   195,   196,   196,   197,   197,   198,   199,   199,
+     199,   199,   199,   200,   200,   201,   201,   201,   201,   201,
+     201,   201,   201,   201,   201,   202,   203,   203,   204,   204,
+     204,   204,   205,   206,   206,   206,   207,   207,   208,   208,
+     209,   210,   210,   211,   211,   211,   211,   212,   213,   213,
+     214,   215,   215,   216,   217,   217,   217,   219,   218,   220,
+     220,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   222,   222,   223,   223,   224,   225,   225,   226,
+     227,   227,   227,   228,   228,   229,   229,   229,   229,   229,
+     229,   229,   229,   229,   230,   230,   231,   232,   232,   233,
+     233,   234,   234,   235,   235,   236,   236,   236,   236,   236,
+     236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
+     237,   237,   238,   238,   239,   239,   239,   239,   239,   239,
+     239,   239
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1718,15 +1720,15 @@
        6,     6,     3,     4,     0,     1,     1,     1,     3,     3,
        3,     3,     3,     3,     1,     0,     1,     1,     1,     0,
        2,     3,     1,     1,     3,     1,     0,     8,     1,     1,
-       3,     1,     1,     3,     0,     1,     1,     3,     0,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
-       5,     1,     1,     1,     1,     2,     2,     1,     2,     2,
-       0,     1,     1,     1,     2,     2,     3,     9,     9,     8,
-      14,     1,     1,     6,     5,     2,     6,     7,     1,     3,
-       1,     0,     2,     1,     5,     5,     5,     6,     6,     4,
-       4,     6,     4,     4,     6,     6,     2,     7,     1,     2,
-       0,     1,     0,     3,     6,     3,     6,     2,     4,     6,
-       4
+       3,     1,     1,     3,     0,     1,     1,     0,     4,     0,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
+       1,     5,     1,     1,     1,     1,     2,     2,     1,     2,
+       2,     0,     1,     1,     1,     2,     2,     3,     9,     9,
+       8,    14,     1,     1,     6,     5,     2,     6,     7,     1,
+       3,     1,     0,     2,     1,     5,     5,     5,     6,     6,
+       4,     4,     6,     4,     4,     6,     6,     2,     7,     1,
+       2,     0,     1,     0,     3,     6,     3,     6,     2,     4,
+       6,     4
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1734,157 +1736,157 @@
    means the default is an error.  */
 static const unsigned short int yydefact[] =
 {
-     194,     0,    90,   182,     1,   181,   224,    83,    84,    85,
-      87,    88,    89,    86,     0,    98,   250,   178,   179,   206,
-     207,     0,     0,     0,    90,     0,   186,   225,   226,    98,
-       0,     0,    91,    92,    93,    94,    95,    96,     0,     0,
-     251,   250,   247,    82,     0,     0,     0,     0,   192,     0,
-       0,     0,     0,     0,   183,   184,     0,     0,    81,   227,
+     194,     0,    90,   182,     1,   181,   227,    83,    84,    85,
+      87,    88,    89,    86,     0,    98,   251,   178,   179,   206,
+     207,     0,     0,     0,    90,     0,   186,   224,     0,     0,
+      91,    92,    93,    94,    95,    96,     0,     0,   252,   251,
+     248,    82,     0,     0,     0,     0,   192,     0,     0,     0,
+       0,     0,   183,   184,     0,     0,    81,   225,   226,    98,
      195,   180,    97,   111,   115,   116,   117,   118,   119,   120,
      121,   122,   123,   124,   125,   126,   127,     2,     3,     0,
-       0,     0,     0,   241,     0,     0,   110,   129,   114,   242,
-     128,   218,   219,   220,   221,   222,   223,   246,     0,     0,
-       0,   253,   252,   262,   292,   261,   248,   249,     0,     0,
+       0,     0,     0,   242,     0,     0,   110,   129,   114,   243,
+     128,   218,   219,   220,   221,   222,   223,   247,     0,     0,
+       0,   254,   253,   263,   293,   262,   249,   250,     0,     0,
        0,     0,   205,   193,   187,   185,   175,   176,     0,     0,
-       0,     0,   130,     0,     0,     0,   113,   135,   139,     0,
-       0,   144,   138,   255,     0,   254,     0,     0,    72,    76,
-      71,    75,    70,    74,    69,    73,    77,    78,     0,   291,
-     273,     0,    98,     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,     0,    68,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,     0,     0,     0,     0,     0,    98,   265,     0,
-     288,   200,   197,   196,   198,   199,   201,   204,     0,   106,
-     106,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,     0,     0,     0,     0,   106,   106,     0,     0,
-       0,     0,     0,   134,   216,   143,   141,     0,   230,   231,
-     232,   235,   236,   237,   233,   234,   228,     0,     0,     0,
+       0,     0,   228,   130,     0,     0,     0,   113,   135,   139,
+       0,     0,   144,   138,   256,     0,   255,     0,     0,    72,
+      76,    71,    75,    70,    74,    69,    73,    77,    78,     0,
+     292,   274,     0,    98,     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,     0,
+      68,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,     0,     0,     0,     0,     0,    98,   266,
+       0,   289,   200,   197,   196,   198,   199,   201,   204,     0,
+     106,   106,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,     0,     0,     0,     0,   106,   106,     0,
+       0,     0,     0,     0,   134,   216,   143,   141,     0,   231,
+     232,   233,   236,   237,   238,   234,   235,   229,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     239,   244,   243,   245,     0,   256,     0,   272,     0,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,     0,
-      50,    51,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,     0,   101,   101,   297,
-       0,     0,   286,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   202,     0,   190,
-     191,   158,   159,     4,     5,   156,   157,   160,   151,   152,
-     155,     0,     0,     0,     0,   154,   153,   188,   189,   112,
-     112,   137,     0,   140,   215,   209,   212,   213,     0,     0,
-     131,   229,     0,     0,     0,     0,     0,     0,     0,     0,
-     174,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   293,     0,   295,   290,     0,     0,     0,
+       0,   240,   245,   244,   246,     0,   257,     0,   273,     0,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+       0,    50,    51,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,     0,   101,   101,
+     298,     0,     0,   287,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   202,     0,
+     190,   191,   158,   159,     4,     5,   156,   157,   160,   151,
+     152,   155,     0,     0,     0,     0,   154,   153,   188,   189,
+     112,   112,   137,     0,   140,   215,   209,   212,   213,     0,
+       0,   131,   230,     0,     0,     0,     0,     0,     0,     0,
+       0,   174,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   294,     0,   296,   291,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   203,     0,     0,   108,   106,   146,     0,     0,
-     150,     0,   147,   132,   133,   136,   208,   210,     0,   104,
-     142,     0,     0,     0,   290,     0,     0,     0,     0,     0,
-     238,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   300,     0,     0,     0,   282,
-     283,     0,     0,     0,     0,     0,   279,   280,     0,   298,
-       0,   103,   109,   107,   145,   148,   149,   214,   211,   105,
-      99,     0,     0,     0,     0,     0,     0,     0,     0,   173,
-       0,     0,     0,     0,     0,     0,     0,   271,     0,     0,
-     101,   102,   101,   268,   289,     0,     0,     0,     0,     0,
-     274,   275,   276,   271,     0,     0,   217,   240,     0,     0,
-     162,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   270,     0,   277,   278,     0,   294,   296,     0,
-       0,     0,   281,   284,   285,     0,   299,   100,     0,     0,
-       0,   170,     0,     0,   164,   165,   166,   169,   161,     0,
-     259,     0,     0,     0,   269,   266,     0,   287,   167,   168,
-       0,     0,     0,   257,     0,   258,     0,     0,   267,   163,
-     171,   172,     0,     0,     0,     0,     0,     0,   264,     0,
-       0,   263,     0,   260
+       0,     0,     0,   203,     0,     0,   108,   106,   146,     0,
+       0,   150,     0,   147,   132,   133,   136,   208,   210,     0,
+     104,   142,     0,     0,     0,   291,     0,     0,     0,     0,
+       0,   239,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   301,     0,     0,     0,
+     283,   284,     0,     0,     0,     0,     0,   280,   281,     0,
+     299,     0,   103,   109,   107,   145,   148,   149,   214,   211,
+     105,    99,     0,     0,     0,     0,     0,     0,     0,     0,
+     173,     0,     0,     0,     0,     0,     0,     0,   272,     0,
+       0,   101,   102,   101,   269,   290,     0,     0,     0,     0,
+       0,   275,   276,   277,   272,     0,     0,   217,   241,     0,
+       0,   162,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   271,     0,   278,   279,     0,   295,   297,
+       0,     0,     0,   282,   285,   286,     0,   300,   100,     0,
+       0,     0,   170,     0,     0,   164,   165,   166,   169,   161,
+       0,   260,     0,     0,     0,   270,   267,     0,   288,   167,
+     168,     0,     0,     0,   258,     0,   259,     0,     0,   268,
+     163,   171,   172,     0,     0,     0,     0,     0,     0,   265,
+       0,     0,   264,     0,   261
 };
 
 /* YYDEFGOTO[NTERM-NUM]. */
 static const short int yydefgoto[] =
 {
-      -1,    83,   335,   265,   266,   267,   289,   306,   268,   269,
-     232,   233,   148,   234,    24,    15,    38,   506,   383,   405,
-     470,   329,   406,    84,    85,   235,    87,    88,   129,   247,
-     370,   270,   371,   118,     1,     2,    57,     3,    61,   214,
-      48,   113,   218,    89,   417,   356,   357,   358,    39,    93,
-      16,    96,    17,    29,    18,   362,   271,    90,   273,   493,
-      41,    42,    43,   105,   106,   552,   107,   312,   522,   523,
-     207,   208,   445,   209,   210
+      -1,    83,   336,   266,   267,   268,   290,   307,   269,   270,
+     233,   234,   149,   235,    24,    15,    36,   507,   384,   406,
+     471,   330,   407,    84,    85,   236,    87,    88,   130,   248,
+     371,   271,   372,   118,     1,     2,    55,     3,    61,   215,
+      46,   113,   219,    89,   418,   357,   358,   359,    37,    93,
+      16,    96,    17,    59,    18,    27,   363,   272,    90,   274,
+     494,    39,    40,    41,   105,   106,   553,   107,   313,   523,
+     524,   208,   209,   446,   210,   211
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -509
+#define YYPACT_NINF -537
 static const short int yypact[] =
 {
-    -509,    53,   152,   539,  -509,  -509,    46,  -509,  -509,  -509,
-    -509,  -509,  -509,  -509,     5,    56,    55,  -509,  -509,  -509,
-    -509,    -4,   -81,    26,   134,   -16,  -509,  -509,  -509,    56,
-     113,   128,  -509,  -509,  -509,  -509,  -509,  -509,   830,   -25,
-    -509,   -18,  -509,    -1,    11,    40,    42,    54,  -509,    33,
-     113,   830,    96,    96,  -509,  -509,    96,    96,  -509,  -509,
-    -509,  -509,  -509,    62,  -509,  -509,  -509,  -509,  -509,  -509,
-    -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,   223,
-     225,   -10,   100,  -509,   145,    77,  -509,  -509,  -108,  -509,
-    -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,   869,    41,
-     148,  -509,  -509,  -509,  1313,  -509,  -509,  -509,   219,   153,
-     234,   237,   250,  -509,  -509,  -509,  -509,  -509,   898,   898,
-     936,   898,  -509,    98,   103,   504,  -509,  -509,  -108,  -100,
-     122,   214,  -509,    62,  1128,  -509,  1128,  1128,  -509,  -509,
-    -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,  1128,  -509,
-    -509,   224,    56,  -509,  -509,  -509,  -509,  -509,  -509,  -509,
-    -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,
-    -509,  -509,  -509,   193,   535,   898,   898,   898,   898,   898,
-     898,  -509,  -509,  -509,  -509,   898,   898,   898,   898,  -509,
-    -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,
-    -509,  -509,   898,   898,   898,   898,   898,    56,  -509,   110,
-    -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,   -57,   138,
-     138,   213,   228,   230,   240,   246,   248,   252,   254,   261,
-     271,   281,   265,   265,   285,   980,   138,   138,   898,   898,
-     150,   -87,   898,  -509,   671,  -509,   156,   163,  -509,  -509,
-    -509,  -509,  -509,  -509,  -509,  -509,   255,   193,   535,   166,
-     167,   168,   169,   170,   936,   171,   172,   173,   174,   175,
-    -509,  -509,  -509,  -509,   180,  -509,   181,  -509,   830,  -509,
-    -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,   898,
-    -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,
-    -509,  -509,  -509,  -509,  -509,  -509,   898,   182,   184,  -509,
-    1128,   183,   186,   188,   190,   191,   192,   194,  1128,  1128,
-    1128,   198,   306,   830,   898,   898,   327,  -509,     4,  -509,
-    -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,
-    -509,   709,   936,   612,   328,  -509,  -509,  -509,  -509,   -92,
-    -109,  -509,   201,  -108,  -509,   145,  -509,   210,   208,   739,
-    -509,  -509,   334,   212,   215,   936,   936,   936,   936,   936,
-    -509,   -70,   936,   936,   936,   936,   936,   350,   353,  1128,
-    1128,  1128,     2,  -509,    30,  -509,   220,  1128,   218,   898,
-     898,   898,   898,   898,   227,   229,   233,   898,   898,  1128,
-    1128,   235,  -509,   341,   368,  -509,   138,  -509,   -56,   -66,
-    -509,   -83,  -509,  -509,  -509,  -509,  -509,  -509,   777,   351,
-    -509,   238,   936,   936,   220,   239,   241,   242,   243,   936,
-    -509,   247,   249,   251,   253,   361,  1128,  1128,   258,   256,
-     262,  1128,   374,  1128,   898,  -509,   263,  1128,   264,  -509,
-    -509,   266,   267,  1128,  1128,  1128,  -509,  -509,   259,  -509,
-     898,  -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,  -509,
-     345,   377,   268,   269,   272,   936,   936,   936,   936,  -509,
-     936,   936,   936,   936,   898,   274,   273,   898,  1128,  1128,
-     276,  -509,   276,  -509,   278,  1128,   279,   898,   898,   898,
-    -509,  -509,  -509,   898,  1128,   386,  -509,  -509,   936,   936,
-    -509,   280,   282,   283,   284,   287,   290,   292,   293,   298,
-     402,    14,   278,   301,  -509,  -509,   382,  -509,  -509,   898,
-     299,  1128,  -509,  -509,  -509,   303,  -509,  -509,   307,   308,
-     936,  -509,   936,   936,  -509,  -509,  -509,  -509,  -509,  1128,
-    -509,  1217,    27,   425,  -509,  -509,   309,  -509,  -509,  -509,
-     311,   315,   316,  -509,   320,  -509,  1217,   459,  -509,  -509,
-    -509,  -509,   460,   325,  1128,  1128,   463,   211,  -509,  1128,
-     464,  -509,  1128,  -509
+    -537,    75,    61,  1145,  -537,  -537,  -537,  -537,  -537,  -537,
+    -537,  -537,  -537,  -537,    18,   180,    55,  -537,  -537,  -537,
+    -537,   -28,   -61,    33,   130,   -40,  -537,   102,    87,   117,
+    -537,  -537,  -537,  -537,  -537,  -537,   838,   -24,  -537,   -15,
+    -537,    48,   -11,    -2,     6,    12,  -537,    11,    87,   838,
+      -9,    -9,  -537,  -537,    -9,    -9,  -537,  -537,  -537,   180,
+    -537,  -537,  -537,    32,  -537,  -537,  -537,  -537,  -537,  -537,
+    -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,   164,
+     171,    -6,   512,  -537,   135,    41,  -537,  -537,  -103,  -537,
+    -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,   883,    45,
+     192,  -537,  -537,  -537,  1324,  -537,  -537,  -537,   175,   126,
+     190,   188,   203,  -537,  -537,  -537,  -537,  -537,   911,   911,
+     957,   911,  -537,  -537,    81,    97,   561,  -537,  -537,  -103,
+    -109,   121,   641,  -537,    32,  1140,  -537,  1140,  1140,  -537,
+    -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  1140,
+    -537,  -537,   219,   180,  -537,  -537,  -537,  -537,  -537,  -537,
+    -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,
+    -537,  -537,  -537,  -537,    10,   112,   911,   911,   911,   911,
+     911,   911,  -537,  -537,  -537,  -537,   911,   911,   911,   911,
+    -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,
+    -537,  -537,  -537,   911,   911,   911,   911,   911,   180,  -537,
+      59,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,   -71,
+     129,   129,   167,   193,   195,   218,   222,   224,   234,   243,
+     250,   261,   263,   252,   252,   264,   993,   129,   129,   911,
+     911,   127,   -97,   911,  -537,   680,  -537,   136,   137,  -537,
+    -537,  -537,  -537,  -537,  -537,  -537,  -537,   229,    10,   112,
+     140,   141,   144,   145,   146,   957,   147,   148,   150,   154,
+     155,  -537,  -537,  -537,  -537,   158,  -537,   160,  -537,   838,
+    -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,
+     911,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,
+    -537,  -537,  -537,  -537,  -537,  -537,  -537,   911,   163,   165,
+    -537,  1140,   162,   169,   170,   172,   173,   174,   176,  1140,
+    1140,  1140,   177,   276,   838,   911,   911,   288,  -537,    -8,
+    -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,
+    -537,  -537,   724,   957,   590,   292,  -537,  -537,  -537,  -537,
+    -106,  -104,  -537,   179,  -103,  -537,   135,  -537,   178,   181,
+     752,  -537,  -537,   296,   183,   187,   957,   957,   957,   957,
+     957,  -537,  -131,   957,   957,   957,   957,   957,   315,   316,
+    1140,  1140,  1140,     1,  -537,     7,  -537,   191,  1140,   186,
+     911,   911,   911,   911,   911,   194,   197,   201,   911,   911,
+    1140,  1140,   202,  -537,   304,   326,  -537,   129,  -537,   -60,
+     -78,  -537,   -74,  -537,  -537,  -537,  -537,  -537,  -537,   799,
+     309,  -537,   208,   957,   957,   191,   210,   213,   223,   225,
+     957,  -537,   230,   231,   235,   236,   308,  1140,  1140,   227,
+     237,   238,  1140,   357,  1140,   911,  -537,   239,  1140,   241,
+    -537,  -537,   242,   244,  1140,  1140,  1140,  -537,  -537,   248,
+    -537,   911,  -537,  -537,  -537,  -537,  -537,  -537,  -537,  -537,
+    -537,   338,   366,   246,   251,   249,   957,   957,   957,   957,
+    -537,   957,   957,   957,   957,   911,   253,   258,   911,  1140,
+    1140,   254,  -537,   254,  -537,   255,  1140,   256,   911,   911,
+     911,  -537,  -537,  -537,   911,  1140,   390,  -537,  -537,   957,
+     957,  -537,   265,   260,   266,   267,   268,   272,   274,   275,
+     277,   400,    29,   255,   280,  -537,  -537,   363,  -537,  -537,
+     911,   278,  1140,  -537,  -537,  -537,   282,  -537,  -537,   283,
+     287,   957,  -537,   957,   957,  -537,  -537,  -537,  -537,  -537,
+    1140,  -537,  1229,    60,   381,  -537,  -537,   286,  -537,  -537,
+    -537,   290,   293,   294,  -537,   270,  -537,  1229,   435,  -537,
+    -537,  -537,  -537,   436,   302,  1140,  1140,   441,   196,  -537,
+    1140,   442,  -537,  1140,  -537
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const short int yypgoto[] =
 {
-    -509,  -509,   257,   376,   378,   379,   231,   226,   383,   385,
-     -98,   -97,  -505,  -509,   438,   469,  -143,  -509,  -302,    75,
-    -509,  -219,  -509,   -46,  -509,   -38,  -509,   -68,    38,  -509,
-     130,   286,  -140,   154,  -509,  -509,  -509,  -509,   450,  -509,
-    -509,  -509,  -509,     1,  -509,   104,  -509,  -509,   496,  -509,
-    -509,  -509,  -509,  -509,   523,  -509,  -508,  -106,    -3,   -88,
-    -509,   486,  -509,   -48,  -509,  -509,  -509,  -509,    86,    28,
-    -509,  -509,   109,  -509,  -509
+    -537,  -537,   226,   361,   362,   365,   209,   214,   368,   370,
+     -99,   -98,  -507,  -537,   420,   452,  -134,  -537,  -303,    57,
+    -537,  -216,  -537,   -45,  -537,   -36,  -537,   -79,   -30,  -537,
+    -111,   245,  -210,   104,  -537,  -537,  -537,  -537,   431,  -537,
+    -537,  -537,  -537,     4,  -537,    63,  -537,  -537,   421,  -537,
+    -537,  -537,  -537,  -537,   480,  -537,  -537,  -536,  -105,    58,
+     -88,  -537,   445,  -537,   -93,  -537,  -537,  -537,  -537,    42,
+     -18,  -537,  -537,    64,  -537,  -537
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1894,369 +1896,371 @@
 #define YYTABLE_NINF -178
 static const short int yytable[] =
 {
-      86,   330,   146,   147,    25,   115,   385,    91,   124,   278,
-     135,    40,   441,    86,   128,    94,   551,   347,   348,   138,
-     139,   140,   141,   142,   143,   144,   145,    19,   272,    20,
-     272,   272,   138,   139,   140,   141,   142,   143,   144,   145,
-     443,   403,   272,   564,    25,   136,  -112,   566,    44,    45,
-      46,   414,   242,     4,   132,   132,   137,   128,   573,   442,
-     134,   404,   243,   128,   323,   242,   413,    30,    47,   429,
-      49,   132,    98,    99,   100,   352,   101,   102,   103,   466,
-     219,   220,   429,   237,    40,   130,   429,   442,    50,   309,
-     430,    27,   313,    28,   465,   326,   429,   314,   315,   316,
-     317,   327,   464,   126,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,   321,   322,    77,
-      78,    31,    32,    33,    34,    35,    36,    37,    19,   346,
-      20,   116,   117,   274,   275,    58,    92,   307,   308,   134,
-     310,   311,   134,    60,    95,   276,    62,   134,   134,   134,
-     134,   125,  -177,   138,   139,   140,   141,   142,   143,   144,
-     145,    51,   108,   241,   318,   319,   320,   134,   134,   246,
-     349,   350,   550,    19,   353,    20,     7,     8,     9,    52,
-      11,    53,    13,     5,    54,   565,     6,   463,   527,   112,
-     528,   109,    55,   110,     7,     8,     9,    10,    11,    12,
-      13,   408,   409,   411,   272,   111,   355,   119,   212,   213,
-     120,   121,   272,   272,   272,    14,  -113,   126,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,   131,   379,    77,    78,   324,   325,   401,   331,   332,
-      86,   122,    19,   123,    20,   -72,   -72,   -76,   -76,   211,
-     236,   380,   215,    79,   245,   238,    80,   -71,   -71,    81,
-     239,    82,   127,   -75,   -75,   -70,   -70,   216,   381,   -74,
-     -74,   -69,   -69,   272,   272,   272,   244,   399,   -73,   -73,
-     217,   272,   333,   334,   277,    86,   400,   134,   101,   102,
-     328,   353,   -79,   272,   272,   279,   280,   281,   282,   283,
-     284,   448,   -80,   450,   451,   452,   337,   386,   359,   456,
-     351,   285,   286,   287,   288,   394,   395,   396,   360,   361,
-     365,   366,   367,   368,   369,   372,   373,   374,   375,   376,
-     272,   272,   377,   378,   382,   272,   384,   272,   388,   387,
-     389,   272,   390,   391,   392,   398,   393,   272,   272,   272,
-     397,   134,   449,   134,   134,   134,   416,   402,   412,   134,
-     457,   415,   418,   419,   421,   436,   422,    79,   437,   423,
-      80,   461,   444,    81,   447,    82,   438,   439,   440,   453,
-     355,   454,   272,   272,   446,   455,   462,   460,   403,   272,
-     471,   475,   491,   476,   477,   478,   458,   459,   272,   480,
-     484,   481,   505,   482,   537,   483,   134,   507,   488,   532,
-     533,   534,   487,   503,   489,   495,   497,   549,   498,   499,
-     508,   509,   504,   146,   147,   272,   520,   510,   526,   521,
-     529,   531,   540,   485,   486,   542,   543,   541,   490,   442,
-     492,   554,   544,   272,   496,   545,   519,   546,   547,   134,
-     500,   501,   502,   548,   146,   147,   553,   555,   557,   134,
-     134,   134,   558,   559,   567,   134,   569,   568,   272,   272,
-     570,   571,   572,   272,   574,   575,   272,   576,   579,   582,
-     202,   104,   203,   204,   364,   524,   525,   205,   363,   206,
-     336,   134,   530,    56,   469,   424,   425,   426,   427,   428,
-     114,   536,   431,   432,   433,   434,   435,   126,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,   345,   468,    77,    78,    59,    26,    97,   556,   580,
-     494,   535,    19,   474,    20,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   563,     0,     0,     0,
-       0,     0,   472,   473,     0,     0,     0,     0,     0,   479,
-     290,   291,     0,     0,     0,     0,   -82,    19,     0,    20,
-       0,   577,   578,     6,   -82,   -82,   581,     0,     0,   583,
-       0,   -82,   -82,   -82,   -82,   -82,   -82,   -82,     0,   -82,
-      21,     0,     0,     0,     0,     0,     0,   -82,    22,     0,
-       0,     0,    23,     0,     0,   511,   512,   513,   514,     0,
-     515,   516,   517,   518,     0,   126,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   230,   231,    75,    76,     0,
-       0,    77,    78,     0,     0,     0,     0,     0,   538,   539,
-      19,     0,    20,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,    79,     0,     0,
-      80,     0,     0,    81,     0,    82,   240,     0,     0,     0,
-     560,     0,   561,   562,   126,    64,    65,    66,    67,    68,
+      86,   147,   148,   129,   115,   331,   386,    25,    91,   237,
+     136,   442,   125,    86,    38,   552,   565,   444,    94,   279,
+     430,   348,   349,    42,    43,    44,   116,   117,   431,   404,
+     273,   574,   273,   273,   139,   140,   141,   142,   143,   144,
+     145,   146,   243,    45,   273,    25,   567,   129,   405,   137,
+    -112,   414,   244,   129,   243,   415,   133,   443,   133,   133,
+     138,  -177,   135,   443,   353,   139,   140,   141,   142,   143,
+     144,   145,   146,   430,   324,     4,    19,   430,    20,    28,
+     327,   466,   220,   221,    38,   238,   328,   467,   131,    47,
+     310,   430,     5,   314,    48,     6,   242,   465,   315,   316,
+     317,   318,   247,     7,     8,     9,    10,    11,    12,    13,
+      56,   280,   281,   282,   283,   284,   285,    60,   322,   323,
+      98,    99,   100,    14,   101,   102,   103,   286,   287,   288,
+     289,   347,   409,   410,   412,    62,    92,   291,   292,   108,
+     308,   309,   135,   311,   312,   135,    95,    57,   109,    58,
+     135,   135,   135,   135,   126,   119,   110,    49,   120,   121,
+     350,   351,   111,    19,   354,    20,   112,   319,   320,   321,
+     135,   135,     7,     8,     9,    50,    11,    51,    13,    52,
+     213,   214,   123,   325,   326,  -113,   551,    53,   528,   124,
+     529,   464,   332,   333,   132,   275,   276,   139,   140,   141,
+     142,   143,   144,   145,   146,   212,   273,   277,   216,   356,
+     -72,   -72,   -76,   -76,   273,   273,   273,   566,   217,   293,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   218,   380,   -71,   -71,   239,   402,   -75,
+     -75,   -70,   -70,    86,    29,    30,    31,    32,    33,    34,
+      35,   -74,   -74,   240,   381,   425,   426,   427,   428,   429,
+     -69,   -69,   432,   433,   434,   435,   436,   -73,   -73,   334,
+     335,   382,   101,   102,   245,   273,   273,   273,   278,   400,
+     329,   354,   -79,   273,   -80,   338,   352,   360,    86,   401,
+     135,   361,   362,   366,   367,   273,   273,   368,   369,   370,
+     373,   374,   449,   375,   451,   452,   453,   376,   377,   378,
+     457,   379,   473,   474,   383,   399,   385,   388,   403,   480,
+     389,   390,   413,   391,   392,   393,   422,   394,   398,   419,
+     437,   438,   273,   273,   462,   420,   423,   273,   416,   273,
+     424,   448,   445,   273,   463,   454,   404,   485,   455,   273,
+     273,   273,   456,   461,   135,   450,   135,   135,   135,   472,
+     417,   476,   135,   458,   477,   512,   513,   514,   515,   387,
+     516,   517,   518,   519,   478,   492,   479,   395,   396,   397,
+     488,   481,   482,   356,   273,   273,   483,   484,   489,   490,
+     496,   273,   498,   499,   506,   500,   508,   509,   539,   540,
+     273,   504,   510,   511,   521,   527,   530,   532,   538,   135,
+     533,   534,   535,   522,   542,   550,   541,   543,   544,   443,
+     568,   573,   545,   147,   148,   505,   546,   273,   547,   548,
+     561,   549,   562,   563,   554,   556,   558,   559,   439,   440,
+     441,   560,   555,   569,   570,   273,   447,   571,   572,   520,
+     575,   576,   135,   577,   147,   148,   580,   583,   459,   460,
+     337,   104,   135,   135,   135,   203,   204,   364,   135,   205,
+     273,   273,   206,   365,   207,   273,    54,   470,   273,   114,
+     122,   346,   469,    26,    97,   581,   536,   495,     0,   475,
+       0,     0,     0,     0,   135,   486,   487,     0,     0,     0,
+     491,     0,   493,     0,     0,     0,   497,     0,     0,     0,
+       0,     0,   501,   502,   503,   127,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
+       0,    77,    78,     0,     0,     0,     0,     0,     0,     0,
+      19,     0,    20,     0,     0,     0,     0,   525,   526,     0,
+       0,     0,     0,     0,   531,     0,     0,     0,     0,     0,
+       0,     0,     0,   537,   127,    64,    65,    66,    67,    68,
       69,    70,    71,    72,    73,    74,    75,    76,     0,     0,
       77,    78,     0,     0,     0,     0,     0,     0,     0,    19,
-       0,    20,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   354,   126,   221,   222,   223,   224,   225,   226,   227,
-     228,   229,   230,   231,    75,    76,     0,     0,    77,    78,
-       0,     0,     0,     0,     0,     0,     0,    19,     0,    20,
-       0,     0,   126,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,     0,     0,    77,    78,
-       0,     0,     0,     0,     0,    79,     0,    19,    80,    20,
-       0,    81,     0,    82,   410,     0,     0,     0,     0,   420,
-     126,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,     0,     0,    77,    78,     0,     0,
-       0,     0,     0,     0,     0,    19,     0,    20,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   467,     0,     0,
-       0,     0,     0,     0,    79,     0,     0,    80,     0,     0,
-      81,     0,    82,    63,    64,    65,    66,    67,    68,    69,
+     557,    20,     0,   127,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,   231,   232,    75,    76,     0,   564,    77,
+      78,     0,     0,     0,     0,     0,     0,     0,    19,     0,
+      20,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   578,   579,     0,     0,     0,   582,     0,
+       0,   584,     0,     0,   127,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,     0,     0,
+      77,    78,     0,     0,    79,     0,     0,    80,     0,    19,
+      81,    20,    82,   128,     0,     0,     0,     0,     0,     0,
+       0,   246,     0,   127,    64,    65,    66,    67,    68,    69,
       70,    71,    72,    73,    74,    75,    76,     0,     0,    77,
       78,     0,     0,     0,     0,     0,     0,     0,    19,     0,
-      20,     0,    79,     0,     0,    80,     0,   407,    81,     0,
-      82,     0,   133,    64,    65,    66,    67,    68,    69,    70,
+      20,     0,     0,    79,     0,     0,    80,     0,     0,    81,
+     355,    82,   241,     0,     0,     0,     0,   127,   222,   223,
+     224,   225,   226,   227,   228,   229,   230,   231,   232,    75,
+      76,     0,    79,    77,    78,    80,     0,     0,    81,     0,
+      82,   411,    19,     0,    20,   127,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
+       0,    77,    78,     0,     0,     0,     0,     0,     0,     0,
+      19,     0,    20,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   421,    79,     0,     0,    80,     0,     0,    81,
+       0,    82,   127,    64,    65,    66,    67,    68,    69,    70,
       71,    72,    73,    74,    75,    76,     0,     0,    77,    78,
-       0,     0,    79,     0,     0,    80,     0,    19,    81,    20,
-      82,   126,    64,    65,    66,    67,    68,    69,    70,    71,
+       0,     0,     0,     0,     0,     0,     0,    19,     0,    20,
+       0,     0,    79,     0,     0,    80,     0,     0,    81,   468,
+      82,    63,    64,    65,    66,    67,    68,    69,    70,    71,
       72,    73,    74,    75,    76,     0,     0,    77,    78,     0,
        0,     0,     0,     0,     0,     0,    19,     0,    20,     0,
-      79,     0,     0,    80,     0,     0,    81,     0,    82,   126,
-     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
-     231,    75,    76,     0,     0,    77,    78,     0,     0,     0,
-       0,     0,     0,     0,    19,     0,    20,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    79,     0,     0,    80,     0,     0,    81,
-       0,    82,     0,     0,     0,     0,     0,     0,     0,    77,
-      78,     0,   338,   339,   340,     0,     0,     0,    19,     0,
-      20,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    79,     0,     0,    80,     0,     0,    81,     0,
-      82,     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,    79,     0,     0,    80,
+       0,   408,    81,     0,    82,     0,   134,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+       0,     0,    77,    78,    79,     0,     0,    80,     0,     0,
+      81,    19,    82,    20,   127,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,     0,     0,
+      77,    78,     0,     0,     0,     0,     0,     0,     0,    19,
+       0,    20,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    79,     0,     0,    80,     0,     0,    81,     0,    82,
-     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-     257,   258,     0,     0,     0,     0,     0,     0,     0,    79,
-       0,     0,    80,     0,     0,    81,     0,    82,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   259,     0,   260,
-     181,   182,   183,   184,     0,   261,   262,   263,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
-     201,     0,     0,     0,     0,     0,   341,     0,     0,   342,
-       0,   343,     0,     0,   344,   248,   249,    77,    78,   250,
-     251,   252,   253,   254,   255,     0,    19,     0,    20,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     127,   222,   223,   224,   225,   226,   227,   228,   229,   230,
+     231,   232,    75,    76,     0,     0,    77,    78,     0,     0,
+       0,     0,     0,     0,     0,    19,     0,    20,     0,     0,
+      79,     0,     0,    80,     0,     0,    81,     0,    82,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    77,    78,     0,   339,   340,   341,     0,     0,
+       0,    19,     0,    20,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    79,     0,     0,    80,     0,
+       0,    81,     0,    82,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     256,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   153,   154,
+       0,     0,     0,    79,     0,     0,    80,     0,     0,    81,
+       0,    82,   154,   155,   156,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+     172,   173,   258,   259,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    79,
+       0,     0,    80,     0,     0,    81,     0,    82,     0,   260,
+       0,   261,   182,   183,   184,   185,     0,   262,   263,   264,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,     0,     0,     0,     0,     0,   342,     0,
+       0,   343,     0,   344,     0,     0,   345,   249,   250,    77,
+      78,   251,   252,   253,   254,   255,   256,     0,    19,     0,
+      20,     0,   -82,    19,     0,    20,     0,     0,     0,     6,
+     -82,   -82,     0,     0,     0,     0,     0,   -82,   -82,   -82,
+     -82,   -82,   -82,   -82,   -82,    21,     0,     0,     0,     0,
+       0,   257,   -82,    22,     0,     0,     0,    23,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   154,
      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   257,   258,
-       0,     0,     0,     0,   248,   249,     0,     0,   250,   251,
-     252,   253,   254,   255,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   259,     0,   260,   181,   182,
-     183,   184,     0,   261,   262,   263,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   198,   199,   200,   201,   256,
-       0,     0,     0,     0,     0,     0,     0,   264,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   153,   154,   155,
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   258,
+     259,     0,     0,     0,     0,     0,   249,   250,     0,     0,
+     251,   252,   253,   254,   255,   256,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   260,     0,   261,   182,
+     183,   184,   185,     0,   262,   263,   264,   190,   191,   192,
+     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
+     257,     0,     0,     0,     0,     0,     0,     0,   265,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   154,   155,
      156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   257,   258,     0,
+     166,   167,   168,   169,   170,   171,   172,   173,   258,   259,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   259,     0,   260,   181,   182,   183,
-     184,   149,   261,   262,   263,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,   201,     0,     0,
-       0,     0,     0,   150,   151,     0,   264,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   152,
-       0,     0,     0,   153,   154,   155,   156,   157,   158,   159,
-     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-     170,   171,   172,   173,   174,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   260,     0,   261,   182,   183,
+     184,   185,   150,   262,   263,   264,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,     0,
+       0,     0,     0,   151,   152,     0,     0,   265,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   153,
+       0,     0,     0,   154,   155,   156,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   175,   176,   177,     0,     0,
-     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-     198,   199,   200,   201
+       0,     0,     0,     0,     0,   176,   177,   178,     0,     0,
+     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
+     199,   200,   201,   202
 };
 
 static const short int yycheck[] =
 {
-      38,   220,   100,   100,     3,    51,   308,    32,    18,   152,
-      98,    29,    10,    51,    82,    33,   521,   236,   237,     5,
-       6,     7,     8,     9,    10,    11,    12,    28,   134,    30,
-     136,   137,     5,     6,     7,     8,     9,    10,    11,    12,
-      10,    37,   148,   551,    43,     4,   154,   552,    52,    53,
-      54,   160,   152,     0,   163,   163,    15,   125,   566,    57,
-      98,    57,   162,   131,   207,   152,   158,    62,    72,   152,
-     151,   163,    73,    74,    75,   162,    77,    78,    79,   162,
-     118,   119,   152,   121,    29,    84,   152,    57,    62,   177,
-     160,    45,   180,    47,   160,   152,   152,   185,   186,   187,
-     188,   158,   158,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,   205,   206,    19,
-      20,    65,    66,    67,    68,    69,    70,    71,    28,   235,
-      30,    35,    36,   136,   137,   151,   161,   175,   176,   177,
-     178,   179,   180,    30,   162,   148,    18,   185,   186,   187,
-     188,   161,     0,     5,     6,     7,     8,     9,    10,    11,
-      12,    27,   151,   125,   202,   203,   204,   205,   206,   131,
-     238,   239,   158,    28,   242,    30,    42,    43,    44,    45,
-      46,    47,    48,    31,    50,   158,    34,   406,   490,   156,
-     492,   151,    58,   151,    42,    43,    44,    45,    46,    47,
-      48,   341,   342,   343,   310,   151,   244,    53,    55,    56,
-      56,    57,   318,   319,   320,    63,   154,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,   154,   278,    19,    20,   125,   126,   325,    25,    26,
-     278,    18,    28,    18,    30,    17,    18,    17,    18,    30,
-     120,   289,    18,   153,    40,   157,   156,    17,    18,   159,
-     157,   161,   162,    17,    18,    17,    18,    30,   306,    17,
-      18,    17,    18,   379,   380,   381,   154,   323,    17,    18,
-      30,   387,    17,    18,    60,   323,   324,   325,    77,    78,
-     152,   359,    21,   399,   400,   102,   103,   104,   105,   106,
-     107,   389,    21,   391,   392,   393,    21,   310,   152,   397,
-     160,   118,   119,   120,   121,   318,   319,   320,   155,    64,
-     154,   154,   154,   154,   154,   154,   154,   154,   154,   154,
-     436,   437,   152,   152,   152,   441,   152,   443,   152,   156,
-     152,   447,   152,   152,   152,    39,   152,   453,   454,   455,
-     152,   389,   390,   391,   392,   393,   355,    30,    30,   397,
-     398,   160,   152,   155,    30,    15,   154,   153,    15,   154,
-     156,    30,   152,   159,   156,   161,   379,   380,   381,   152,
-     418,   152,   488,   489,   387,   152,    18,   152,    37,   495,
-     152,   152,    18,   152,   152,   152,   399,   400,   504,   152,
-      39,   152,    57,   152,    18,   152,   444,    30,   152,   497,
-     498,   499,   154,   154,   152,   152,   152,    15,   152,   152,
-     152,   152,   460,   521,   521,   531,   152,   155,   152,   156,
-     152,   152,   152,   436,   437,   152,   152,   155,   441,    57,
-     443,   529,   155,   549,   447,   155,   484,   155,   155,   487,
-     453,   454,   455,   155,   552,   552,   155,   158,   155,   497,
-     498,   499,   155,   155,    39,   503,   155,   158,   574,   575,
-     155,   155,   152,   579,    15,    15,   582,   152,    15,    15,
-     104,    43,   104,   104,   258,   488,   489,   104,   257,   104,
-     233,   529,   495,    24,   419,   365,   366,   367,   368,   369,
-      50,   504,   372,   373,   374,   375,   376,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,   235,   418,    19,    20,    29,     3,    41,   531,   577,
-     444,   503,    28,   424,    30,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   549,    -1,    -1,    -1,
-      -1,    -1,   422,   423,    -1,    -1,    -1,    -1,    -1,   429,
-      25,    26,    -1,    -1,    -1,    -1,    27,    28,    -1,    30,
-      -1,   574,   575,    34,    35,    36,   579,    -1,    -1,   582,
-      -1,    42,    43,    44,    45,    46,    47,    48,    -1,    50,
-      51,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    -1,
-      -1,    -1,    63,    -1,    -1,   475,   476,   477,   478,    -1,
-     480,   481,   482,   483,    -1,     3,     4,     5,     6,     7,
+      36,   100,   100,    82,    49,   221,   309,     3,    32,   120,
+      98,    10,    18,    49,    29,   522,   552,    10,    33,   153,
+     151,   237,   238,    51,    52,    53,    35,    36,   159,    37,
+     135,   567,   137,   138,     5,     6,     7,     8,     9,    10,
+      11,    12,   151,    71,   149,    41,   553,   126,    56,     4,
+     153,   157,   161,   132,   151,   159,   162,    56,   162,   162,
+      15,     0,    98,    56,   161,     5,     6,     7,     8,     9,
+      10,    11,    12,   151,   208,     0,    28,   151,    30,    61,
+     151,   159,   118,   119,    29,   121,   157,   161,    84,   150,
+     178,   151,    31,   181,    61,    34,   126,   157,   186,   187,
+     188,   189,   132,    42,    43,    44,    45,    46,    47,    48,
+     150,   101,   102,   103,   104,   105,   106,    30,   206,   207,
+      72,    73,    74,    62,    76,    77,    78,   117,   118,   119,
+     120,   236,   342,   343,   344,    18,   160,    25,    26,   150,
+     176,   177,   178,   179,   180,   181,   161,    45,   150,    47,
+     186,   187,   188,   189,   160,    51,   150,    27,    54,    55,
+     239,   240,   150,    28,   243,    30,   155,   203,   204,   205,
+     206,   207,    42,    43,    44,    45,    46,    47,    48,    49,
+      54,    55,    18,   124,   125,   153,   157,    57,   491,    18,
+     493,   407,    25,    26,   153,   137,   138,     5,     6,     7,
+       8,     9,    10,    11,    12,    30,   311,   149,    18,   245,
+      17,    18,    17,    18,   319,   320,   321,   157,    30,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,    30,   279,    17,    18,   156,   326,    17,
+      18,    17,    18,   279,    64,    65,    66,    67,    68,    69,
+      70,    17,    18,   156,   290,   366,   367,   368,   369,   370,
+      17,    18,   373,   374,   375,   376,   377,    17,    18,    17,
+      18,   307,    76,    77,   153,   380,   381,   382,    59,   324,
+     151,   360,    21,   388,    21,    21,   159,   151,   324,   325,
+     326,   154,    63,   153,   153,   400,   401,   153,   153,   153,
+     153,   153,   390,   153,   392,   393,   394,   153,   153,   151,
+     398,   151,   423,   424,   151,    39,   151,   155,    30,   430,
+     151,   151,    30,   151,   151,   151,    30,   151,   151,   151,
+      15,    15,   437,   438,    30,   154,   153,   442,   159,   444,
+     153,   155,   151,   448,    18,   151,    37,    39,   151,   454,
+     455,   456,   151,   151,   390,   391,   392,   393,   394,   151,
+     356,   151,   398,   399,   151,   476,   477,   478,   479,   311,
+     481,   482,   483,   484,   151,    18,   151,   319,   320,   321,
+     153,   151,   151,   419,   489,   490,   151,   151,   151,   151,
+     151,   496,   151,   151,    56,   151,    30,   151,   509,   510,
+     505,   153,   151,   154,   151,   151,   151,   151,    18,   445,
+     498,   499,   500,   155,   154,    15,   151,   151,   151,    56,
+      39,   151,   154,   522,   522,   461,   154,   532,   154,   154,
+     541,   154,   543,   544,   154,   157,   154,   154,   380,   381,
+     382,   154,   530,   157,   154,   550,   388,   154,   154,   485,
+      15,    15,   488,   151,   553,   553,    15,    15,   400,   401,
+     234,    41,   498,   499,   500,   104,   104,   258,   504,   104,
+     575,   576,   104,   259,   104,   580,    24,   420,   583,    48,
+      59,   236,   419,     3,    39,   578,   504,   445,    -1,   425,
+      -1,    -1,    -1,    -1,   530,   437,   438,    -1,    -1,    -1,
+     442,    -1,   444,    -1,    -1,    -1,   448,    -1,    -1,    -1,
+      -1,    -1,   454,   455,   456,     3,     4,     5,     6,     7,
        8,     9,    10,    11,    12,    13,    14,    15,    16,    -1,
-      -1,    19,    20,    -1,    -1,    -1,    -1,    -1,   508,   509,
-      28,    -1,    30,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   153,    -1,    -1,
-     156,    -1,    -1,   159,    -1,   161,   162,    -1,    -1,    -1,
-     540,    -1,   542,   543,     3,     4,     5,     6,     7,     8,
+      -1,    19,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      28,    -1,    30,    -1,    -1,    -1,    -1,   489,   490,    -1,
+      -1,    -1,    -1,    -1,   496,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   505,     3,     4,     5,     6,     7,     8,
        9,    10,    11,    12,    13,    14,    15,    16,    -1,    -1,
       19,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
-      -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    40,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    -1,    -1,    19,    20,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,
-      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    -1,    -1,    19,    20,
-      -1,    -1,    -1,    -1,    -1,   153,    -1,    28,   156,    30,
-      -1,   159,    -1,   161,   162,    -1,    -1,    -1,    -1,    40,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    -1,    -1,    19,    20,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,
-      -1,    -1,    -1,    -1,   153,    -1,    -1,   156,    -1,    -1,
-     159,    -1,   161,     3,     4,     5,     6,     7,     8,     9,
+     532,    30,    -1,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    -1,   550,    19,
+      20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,
+      30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   575,   576,    -1,    -1,    -1,   580,    -1,
+      -1,   583,    -1,    -1,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    -1,    -1,
+      19,    20,    -1,    -1,   152,    -1,    -1,   155,    -1,    28,
+     158,    30,   160,   161,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    40,    -1,     3,     4,     5,     6,     7,     8,     9,
       10,    11,    12,    13,    14,    15,    16,    -1,    -1,    19,
       20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,
-      30,    -1,   153,    -1,    -1,   156,    -1,   158,   159,    -1,
-     161,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
+      30,    -1,    -1,   152,    -1,    -1,   155,    -1,    -1,   158,
+      40,   160,   161,    -1,    -1,    -1,    -1,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    -1,   152,    19,    20,   155,    -1,    -1,   158,    -1,
+     160,   161,    28,    -1,    30,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    -1,
+      -1,    19,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      28,    -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    40,   152,    -1,    -1,   155,    -1,    -1,   158,
+      -1,   160,     3,     4,     5,     6,     7,     8,     9,    10,
       11,    12,    13,    14,    15,    16,    -1,    -1,    19,    20,
-      -1,    -1,   153,    -1,    -1,   156,    -1,    28,   159,    30,
-     161,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,
+      -1,    -1,   152,    -1,    -1,   155,    -1,    -1,   158,    40,
+     160,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    -1,    -1,    19,    20,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,    -1,
-     153,    -1,    -1,   156,    -1,    -1,   159,    -1,   161,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    -1,    -1,    19,    20,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   152,    -1,    -1,   155,
+      -1,   157,   158,    -1,   160,    -1,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      -1,    -1,    19,    20,   152,    -1,    -1,   155,    -1,    -1,
+     158,    28,   160,    30,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    -1,    -1,
+      19,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
+      -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   152,    -1,    -1,   155,    -1,    -1,   158,    -1,   160,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    -1,    -1,    19,    20,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,
+     152,    -1,    -1,   155,    -1,    -1,   158,    -1,   160,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   153,    -1,    -1,   156,    -1,    -1,   159,
-      -1,   161,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    19,
-      20,    -1,    22,    23,    24,    -1,    -1,    -1,    28,    -1,
-      30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   153,    -1,    -1,   156,    -1,    -1,   159,    -1,
-     161,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,
+      -1,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   152,    -1,    -1,   155,    -1,
+      -1,   158,    -1,   160,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   153,    -1,    -1,   156,    -1,    -1,   159,    -1,   161,
+      -1,    -1,    -1,   152,    -1,    -1,   155,    -1,    -1,   158,
+      -1,   160,    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,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   152,
+      -1,    -1,   155,    -1,    -1,   158,    -1,   160,    -1,   126,
+      -1,   128,   129,   130,   131,   132,    -1,   134,   135,   136,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,    -1,    -1,    -1,    -1,    -1,   155,    -1,
+      -1,   158,    -1,   160,    -1,    -1,   163,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    -1,    28,    -1,
+      30,    -1,    27,    28,    -1,    30,    -1,    -1,    -1,    34,
+      35,    36,    -1,    -1,    -1,    -1,    -1,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    -1,    -1,    -1,    -1,
+      -1,    61,    57,    58,    -1,    -1,    -1,    62,    -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,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   153,
-      -1,    -1,   156,    -1,    -1,   159,    -1,   161,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   127,    -1,   129,
-     130,   131,   132,   133,    -1,   135,   136,   137,   138,   139,
+     100,    -1,    -1,    -1,    -1,    -1,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   126,    -1,   128,   129,
+     130,   131,   132,    -1,   134,   135,   136,   137,   138,   139,
      140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-     150,    -1,    -1,    -1,    -1,    -1,   156,    -1,    -1,   159,
-      -1,   161,    -1,    -1,   164,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    -1,    28,    -1,    30,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,    -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,    -1,    -1,    -1,    -1,    -1,
-      62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
-      82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-      -1,    -1,    -1,    -1,    17,    18,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   127,    -1,   129,   130,   131,
-     132,   133,    -1,   135,   136,   137,   138,   139,   140,   141,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,    62,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   159,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
-      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,    96,    97,    98,    99,   100,   101,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   126,    -1,   128,   129,   130,
+     131,   132,    38,   134,   135,   136,   137,   138,   139,   140,
+     141,   142,   143,   144,   145,   146,   147,   148,   149,    -1,
+      -1,    -1,    -1,    59,    60,    -1,    -1,   158,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,
+      -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,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   127,    -1,   129,   130,   131,   132,
-     133,    38,   135,   136,   137,   138,   139,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,   150,    -1,    -1,
-      -1,    -1,    -1,    60,    61,    -1,   159,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,
-      -1,    -1,    -1,    80,    81,    82,    83,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,    99,   100,   101,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   122,   123,   124,    -1,    -1,
-     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-     147,   148,   149,   150
+      -1,    -1,    -1,    -1,    -1,   121,   122,   123,    -1,    -1,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const unsigned char yystos[] =
 {
-       0,   199,   200,   202,     0,    31,    34,    42,    43,    44,
-      45,    46,    47,    48,    63,   180,   215,   217,   219,    28,
-      30,    51,    59,    63,   179,   208,   219,    45,    47,   218,
-      62,    65,    66,    67,    68,    69,    70,    71,   181,   213,
-      29,   225,   226,   227,    52,    53,    54,    72,   205,   151,
-      62,    27,    45,    47,    50,    58,   180,   201,   151,   213,
-      30,   203,    18,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    19,    20,   153,
-     156,   159,   161,   166,   188,   189,   190,   191,   192,   208,
-     222,    32,   161,   214,    33,   162,   216,   226,    73,    74,
-      75,    77,    78,    79,   179,   228,   229,   231,   151,   151,
-     151,   151,   156,   206,   203,   188,    35,    36,   198,   198,
-     198,   198,    18,    18,    18,   161,     3,   162,   192,   193,
-     208,   154,   163,     3,   190,   224,     4,    15,     5,     6,
-       7,     8,     9,    10,    11,    12,   175,   176,   177,    38,
-      60,    61,    76,    80,    81,    82,    83,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,    99,   100,   101,   122,   123,   124,   127,   128,
-     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   168,   169,   170,   173,   174,   235,   236,   238,
-     239,    30,    55,    56,   204,    18,    30,    30,   207,   190,
-     190,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,   175,   176,   178,   190,   195,   190,   157,   157,
-     162,   193,   152,   162,   154,    40,   193,   194,    17,    18,
-      21,    22,    23,    24,    25,    26,    62,   100,   101,   127,
-     129,   135,   136,   137,   159,   168,   169,   170,   173,   174,
-     196,   221,   222,   223,   223,   223,   223,    60,   181,   102,
-     103,   104,   105,   106,   107,   118,   119,   120,   121,   171,
-      25,    26,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   172,   190,   190,   224,
-     190,   190,   232,   224,   224,   224,   224,   224,   190,   190,
-     190,   224,   224,   181,   125,   126,   152,   158,   152,   186,
-     186,    25,    26,    17,    18,   167,   167,    21,    22,    23,
-      24,   156,   159,   161,   164,   196,   222,   186,   186,   192,
-     192,   160,   162,   192,    40,   190,   210,   211,   212,   152,
-     155,    64,   220,   171,   172,   154,   154,   154,   154,   154,
-     195,   197,   154,   154,   154,   154,   154,   152,   152,   188,
-     190,   190,   152,   183,   152,   183,   223,   156,   152,   152,
-     152,   152,   152,   152,   223,   223,   223,   152,    39,   188,
-     190,   224,    30,    37,    57,   184,   187,   158,   197,   197,
-     162,   197,    30,   158,   160,   160,   208,   209,   152,   155,
-      40,    30,   154,   154,   195,   195,   195,   195,   195,   152,
-     160,   195,   195,   195,   195,   195,    15,    15,   223,   223,
-     223,    10,    57,    10,   152,   237,   223,   156,   224,   190,
-     224,   224,   224,   152,   152,   152,   224,   190,   223,   223,
-     152,    30,    18,   186,   158,   160,   162,    40,   210,   184,
-     185,   152,   195,   195,   237,   152,   152,   152,   152,   195,
-     152,   152,   152,   152,    39,   223,   223,   154,   152,   152,
-     223,    18,   223,   224,   233,   152,   223,   152,   152,   152,
-     223,   223,   223,   154,   190,    57,   182,    30,   152,   152,
-     155,   195,   195,   195,   195,   195,   195,   195,   195,   190,
-     152,   156,   233,   234,   223,   223,   152,   183,   183,   152,
-     223,   152,   224,   224,   224,   234,   223,    18,   195,   195,
-     152,   155,   152,   152,   155,   155,   155,   155,   155,    15,
-     158,   177,   230,   155,   224,   158,   223,   155,   155,   155,
-     195,   195,   195,   223,   221,   158,   177,    39,   158,   155,
-     155,   155,   152,   221,    15,    15,   152,   223,   223,    15,
-     228,   223,    15,   223
+       0,   198,   199,   201,     0,    31,    34,    42,    43,    44,
+      45,    46,    47,    48,    62,   179,   214,   216,   218,    28,
+      30,    50,    58,    62,   178,   207,   218,   219,    61,    64,
+      65,    66,    67,    68,    69,    70,   180,   212,    29,   225,
+     226,   227,    51,    52,    53,    71,   204,   150,    61,    27,
+      45,    47,    49,    57,   179,   200,   150,    45,    47,   217,
+      30,   202,    18,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    19,    20,   152,
+     155,   158,   160,   165,   187,   188,   189,   190,   191,   207,
+     222,    32,   160,   213,    33,   161,   215,   226,    72,    73,
+      74,    76,    77,    78,   178,   228,   229,   231,   150,   150,
+     150,   150,   155,   205,   202,   187,    35,    36,   197,   197,
+     197,   197,   212,    18,    18,    18,   160,     3,   161,   191,
+     192,   207,   153,   162,     3,   189,   224,     4,    15,     5,
+       6,     7,     8,     9,    10,    11,    12,   174,   175,   176,
+      38,    59,    60,    75,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   121,   122,   123,   126,
+     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   167,   168,   169,   172,   173,   235,   236,
+     238,   239,    30,    54,    55,   203,    18,    30,    30,   206,
+     189,   189,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,   174,   175,   177,   189,   194,   189,   156,
+     156,   161,   192,   151,   161,   153,    40,   192,   193,    17,
+      18,    21,    22,    23,    24,    25,    26,    61,    99,   100,
+     126,   128,   134,   135,   136,   158,   167,   168,   169,   172,
+     173,   195,   221,   222,   223,   223,   223,   223,    59,   180,
+     101,   102,   103,   104,   105,   106,   117,   118,   119,   120,
+     170,    25,    26,   107,   108,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   118,   119,   120,   171,   189,   189,
+     224,   189,   189,   232,   224,   224,   224,   224,   224,   189,
+     189,   189,   224,   224,   180,   124,   125,   151,   157,   151,
+     185,   185,    25,    26,    17,    18,   166,   166,    21,    22,
+      23,    24,   155,   158,   160,   163,   195,   222,   185,   185,
+     191,   191,   159,   161,   191,    40,   189,   209,   210,   211,
+     151,   154,    63,   220,   170,   171,   153,   153,   153,   153,
+     153,   194,   196,   153,   153,   153,   153,   153,   151,   151,
+     187,   189,   189,   151,   182,   151,   182,   223,   155,   151,
+     151,   151,   151,   151,   151,   223,   223,   223,   151,    39,
+     187,   189,   224,    30,    37,    56,   183,   186,   157,   196,
+     196,   161,   196,    30,   157,   159,   159,   207,   208,   151,
+     154,    40,    30,   153,   153,   194,   194,   194,   194,   194,
+     151,   159,   194,   194,   194,   194,   194,    15,    15,   223,
+     223,   223,    10,    56,    10,   151,   237,   223,   155,   224,
+     189,   224,   224,   224,   151,   151,   151,   224,   189,   223,
+     223,   151,    30,    18,   185,   157,   159,   161,    40,   209,
+     183,   184,   151,   194,   194,   237,   151,   151,   151,   151,
+     194,   151,   151,   151,   151,    39,   223,   223,   153,   151,
+     151,   223,    18,   223,   224,   233,   151,   223,   151,   151,
+     151,   223,   223,   223,   153,   189,    56,   181,    30,   151,
+     151,   154,   194,   194,   194,   194,   194,   194,   194,   194,
+     189,   151,   155,   233,   234,   223,   223,   151,   182,   182,
+     151,   223,   151,   224,   224,   224,   234,   223,    18,   194,
+     194,   151,   154,   151,   151,   154,   154,   154,   154,   154,
+      15,   157,   176,   230,   154,   224,   157,   223,   154,   154,
+     154,   194,   194,   194,   223,   221,   157,   176,    39,   157,
+     154,   154,   154,   151,   221,    15,    15,   151,   223,   223,
+      15,   228,   223,    15,   223
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2926,26 +2930,26 @@
   switch (yyn)
     {
         case 81:
-#line 892 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 896 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[-1].String);
   ;}
     break;
 
   case 82:
-#line 895 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 899 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string(""); 
   ;}
     break;
 
   case 90:
-#line 902 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 906 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
   case 97:
-#line 907 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 911 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += *(yyvsp[0].String); 
     delete (yyvsp[0].String);
@@ -2954,27 +2958,27 @@
     break;
 
   case 98:
-#line 912 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 916 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(""); ;}
     break;
 
   case 99:
-#line 917 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 921 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 100:
-#line 918 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 922 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;}
     break;
 
   case 101:
-#line 921 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 925 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 102:
-#line 922 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 926 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, ", "); 
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
@@ -2984,7 +2988,7 @@
     break;
 
   case 103:
-#line 930 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 934 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -2993,17 +2997,17 @@
     break;
 
   case 104:
-#line 936 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 940 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 106:
-#line 940 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 944 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 107:
-#line 941 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 945 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
       (yyvsp[-1].String)->insert(0, ", ");
       if (!(yyvsp[0].String)->empty())
@@ -3014,7 +3018,7 @@
     break;
 
   case 109:
-#line 951 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 955 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
       *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
       delete (yyvsp[0].String);
@@ -3023,28 +3027,28 @@
     break;
 
   case 127:
-#line 973 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 977 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type) = TypeInfo::get(*(yyvsp[0].String), OpaqueTy);
   ;}
     break;
 
   case 128:
-#line 976 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 980 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type) = TypeInfo::get(*(yyvsp[0].String), UnresolvedTy);
   ;}
     break;
 
   case 129:
-#line 979 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 983 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.Type) = (yyvsp[0].Type); 
   ;}
     break;
 
   case 130:
-#line 982 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 986 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Type UpReference
     (yyvsp[0].String)->insert(0, "\\");
     (yyval.Type) = TypeInfo::get(*(yyvsp[0].String), UpRefTy);
@@ -3052,7 +3056,7 @@
     break;
 
   case 131:
-#line 986 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 990 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {           // Function derived type?
     std::string newTy( (yyvsp[-3].Type)->getNewTy() + "(");
     for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) {
@@ -3069,7 +3073,7 @@
     break;
 
   case 132:
-#line 999 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1003 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {          // Sized array type?
     uint64_t elems = atoi((yyvsp[-3].String)->c_str());
     (yyvsp[-3].String)->insert(0,"[ ");
@@ -3079,7 +3083,7 @@
     break;
 
   case 133:
-#line 1005 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1009 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {          // Packed array type?
     uint64_t elems = atoi((yyvsp[-3].String)->c_str());
     (yyvsp[-3].String)->insert(0,"< ");
@@ -3089,7 +3093,7 @@
     break;
 
   case 134:
-#line 1011 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1015 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                        // Structure type?
     std::string newTy("{");
     for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) {
@@ -3103,14 +3107,14 @@
     break;
 
   case 135:
-#line 1021 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1025 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                                  // Empty structure type?
     (yyval.Type) = TypeInfo::get("{}", StructTy, new TypeList());
   ;}
     break;
 
   case 136:
-#line 1024 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1028 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                // Packed Structure type?
     std::string newTy("<{");
     for (unsigned i = 0; i < (yyvsp[-2].TypeVec)->size(); ++i) {
@@ -3124,21 +3128,21 @@
     break;
 
   case 137:
-#line 1034 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1038 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                          // Empty packed structure type?
     (yyval.Type) = TypeInfo::get("<{}>", PackedStructTy, new TypeList());
   ;}
     break;
 
   case 138:
-#line 1037 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1041 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                             // Pointer type?
     (yyval.Type) = (yyvsp[-1].Type)->getPointerType();
   ;}
     break;
 
   case 139:
-#line 1045 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1049 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.TypeVec) = new TypeList();
     (yyval.TypeVec)->push_back((yyvsp[0].Type));
@@ -3146,7 +3150,7 @@
     break;
 
   case 140:
-#line 1049 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1053 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.TypeVec) = (yyvsp[-2].TypeVec);
     (yyval.TypeVec)->push_back((yyvsp[0].Type));
@@ -3154,7 +3158,7 @@
     break;
 
   case 142:
-#line 1057 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1061 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.TypeVec) = (yyvsp[-2].TypeVec);
     (yyval.TypeVec)->push_back(TypeInfo::get("void",VoidTy));
@@ -3163,7 +3167,7 @@
     break;
 
   case 143:
-#line 1062 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1066 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.TypeVec) = new TypeList();
     (yyval.TypeVec)->push_back(TypeInfo::get("void",VoidTy));
@@ -3172,14 +3176,14 @@
     break;
 
   case 144:
-#line 1067 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1071 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.TypeVec) = new TypeList();
   ;}
     break;
 
   case 145:
-#line 1077 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1081 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy());
@@ -3189,7 +3193,7 @@
     break;
 
   case 146:
-#line 1083 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1087 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy());
@@ -3198,7 +3202,7 @@
     break;
 
   case 147:
-#line 1088 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1092 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy());
@@ -3208,7 +3212,7 @@
     break;
 
   case 148:
-#line 1094 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1098 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { // Nonempty unsized arr
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy());
@@ -3218,7 +3222,7 @@
     break;
 
   case 149:
-#line 1100 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1104 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-3].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy());
@@ -3228,7 +3232,7 @@
     break;
 
   case 150:
-#line 1106 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1110 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-2].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy());
@@ -3237,7 +3241,7 @@
     break;
 
   case 151:
-#line 1111 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1115 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
@@ -3247,7 +3251,7 @@
     break;
 
   case 152:
-#line 1117 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1121 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
@@ -3257,7 +3261,7 @@
     break;
 
   case 153:
-#line 1123 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1127 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string Name = getUniqueName((yyvsp[0].String), (yyvsp[-1].Type)->resolve(), true);
     (yyval.Const).type = (yyvsp[-1].Type);
@@ -3268,7 +3272,7 @@
     break;
 
   case 154:
-#line 1130 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1134 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
@@ -3278,7 +3282,7 @@
     break;
 
   case 155:
-#line 1136 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1140 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
@@ -3288,7 +3292,7 @@
     break;
 
   case 156:
-#line 1142 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1146 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {      // integral constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
@@ -3298,7 +3302,7 @@
     break;
 
   case 157:
-#line 1148 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1152 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {            // integral constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
@@ -3308,7 +3312,7 @@
     break;
 
   case 158:
-#line 1154 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1158 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                      // Boolean constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
@@ -3318,7 +3322,7 @@
     break;
 
   case 159:
-#line 1160 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1164 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                     // Boolean constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
@@ -3328,7 +3332,7 @@
     break;
 
   case 160:
-#line 1166 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1170 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                   // Float & Double constants
     (yyval.Const).type = (yyvsp[-1].Type);
     (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
@@ -3338,7 +3342,7 @@
     break;
 
   case 161:
-#line 1174 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1178 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-3].Const).cnst;
     const TypeInfo* SrcTy = (yyvsp[-3].Const).type->resolve();
@@ -3356,7 +3360,7 @@
     break;
 
   case 162:
-#line 1188 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1192 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const).cnst;
     for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) {
@@ -3372,7 +3376,7 @@
     break;
 
   case 163:
-#line 1200 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1204 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -3381,7 +3385,7 @@
     break;
 
   case 164:
-#line 1205 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1209 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const).type); 
     (yyval.String) = new std::string(op);
@@ -3391,7 +3395,7 @@
     break;
 
   case 165:
-#line 1211 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1215 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -3400,7 +3404,7 @@
     break;
 
   case 166:
-#line 1216 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1220 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) = getCompareOp(*(yyvsp[-5].String), (yyvsp[-3].Const).type);
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
@@ -3410,7 +3414,7 @@
     break;
 
   case 167:
-#line 1222 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1226 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " (" +  *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -3419,7 +3423,7 @@
     break;
 
   case 168:
-#line 1227 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1231 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-6].String) += " " + *(yyvsp[-5].String) + " (" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -3428,7 +3432,7 @@
     break;
 
   case 169:
-#line 1232 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1236 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* shiftop = (yyvsp[-5].String)->c_str();
     if (*(yyvsp[-5].String) == "shr")
@@ -3440,7 +3444,7 @@
     break;
 
   case 170:
-#line 1240 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1244 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -3449,7 +3453,7 @@
     break;
 
   case 171:
-#line 1245 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1249 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -3458,7 +3462,7 @@
     break;
 
   case 172:
-#line 1250 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1254 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-7].String) += "(" + *(yyvsp[-5].Const).cnst + "," + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
     (yyvsp[-5].Const).destroy(); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
@@ -3467,7 +3471,7 @@
     break;
 
   case 173:
-#line 1260 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1264 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const).cnst;
     (yyvsp[0].Const).destroy();
@@ -3476,25 +3480,25 @@
     break;
 
   case 174:
-#line 1265 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1269 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(*(yyvsp[0].Const).cnst); (yyvsp[0].Const).destroy(); ;}
     break;
 
   case 177:
-#line 1280 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1284 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
 ;}
     break;
 
   case 178:
-#line 1285 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1289 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
   case 179:
-#line 1288 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1292 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3503,7 +3507,7 @@
     break;
 
   case 180:
-#line 1293 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1297 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "module asm " << ' ' << *(yyvsp[0].String) << '\n';
     (yyval.String) = 0;
@@ -3511,7 +3515,7 @@
     break;
 
   case 181:
-#line 1297 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1301 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "implementation\n";
     (yyval.String) = 0;
@@ -3519,17 +3523,17 @@
     break;
 
   case 182:
-#line 1301 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1305 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = 0; ;}
     break;
 
   case 184:
-#line 1303 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1307 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;}
     break;
 
   case 185:
-#line 1306 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1310 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     EnumeratedTypes.push_back((yyvsp[0].Type));
     if (!(yyvsp[-2].String)->empty()) {
@@ -3543,7 +3547,7 @@
     break;
 
   case 186:
-#line 1316 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1320 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {       // Function prototypes can be in const pool
     *O << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3552,7 +3556,7 @@
     break;
 
   case 187:
-#line 1321 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1325 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {  // Asm blocks can be in the const pool
     *O << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n';
     delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String); 
@@ -3561,7 +3565,7 @@
     break;
 
   case 188:
-#line 1326 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1330 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
       std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String), (yyvsp[-1].Const).type->getPointerType(),
@@ -3575,7 +3579,7 @@
     break;
 
   case 189:
-#line 1336 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1340 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
       std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String),(yyvsp[-1].Type)->getPointerType(),
@@ -3589,7 +3593,7 @@
     break;
 
   case 190:
-#line 1346 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1350 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
       std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String),(yyvsp[-1].Type)->getPointerType(),
@@ -3603,7 +3607,7 @@
     break;
 
   case 191:
-#line 1356 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1360 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-4].String)->empty()) {
       std::string Name = getGlobalName((yyvsp[-4].String),*(yyvsp[-3].String),(yyvsp[-1].Type)->getPointerType(),
@@ -3617,7 +3621,7 @@
     break;
 
   case 192:
-#line 1366 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1370 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     *O << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n';
     delete (yyvsp[-1].String); delete (yyvsp[0].String);
@@ -3626,7 +3630,7 @@
     break;
 
   case 193:
-#line 1371 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1375 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[-2].String); delete (yyvsp[0].String);
@@ -3635,14 +3639,14 @@
     break;
 
   case 194:
-#line 1376 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1380 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyval.String) = 0;
   ;}
     break;
 
   case 198:
-#line 1386 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1390 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3651,7 +3655,7 @@
     break;
 
   case 199:
-#line 1391 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1395 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     if (*(yyvsp[0].String) == "64")
@@ -3662,7 +3666,7 @@
     break;
 
   case 200:
-#line 1398 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1402 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3671,7 +3675,7 @@
     break;
 
   case 201:
-#line 1403 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1407 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3680,7 +3684,7 @@
     break;
 
   case 202:
-#line 1410 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1414 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-1].String)->insert(0, "[ ");
     *(yyvsp[-1].String) += " ]";
@@ -3689,7 +3693,7 @@
     break;
 
   case 203:
-#line 1417 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1421 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3698,19 +3702,19 @@
     break;
 
   case 205:
-#line 1423 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1427 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = new std::string();
   ;}
     break;
 
   case 209:
-#line 1432 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1436 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 210:
-#line 1434 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1438 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
   (yyval.String) = new std::string((yyvsp[-1].Type)->getNewTy());
   if (!(yyvsp[0].String)->empty()) {
@@ -3722,7 +3726,7 @@
     break;
 
   case 211:
-#line 1443 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1447 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -3730,21 +3734,21 @@
     break;
 
   case 212:
-#line 1447 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1451 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 213:
-#line 1451 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1455 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 214:
-#line 1454 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1458 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += ", ...";
     (yyval.String) = (yyvsp[-2].String);
@@ -3753,20 +3757,25 @@
     break;
 
   case 215:
-#line 1459 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1463 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = (yyvsp[0].String);
   ;}
     break;
 
   case 216:
-#line 1462 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1466 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 217:
-#line 1465 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1469 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
+    if (*(yyvsp[-5].String) == "%llvm.va_start" || *(yyvsp[-5].String) == "%llvm.va_end") {
+      *(yyvsp[-3].String) = "i8* ";
+    } else if (*(yyvsp[-5].String) == "%llvm.va_copy") {
+      *(yyvsp[-3].String) = "i8*, i8*";
+    }
     if (!(yyvsp[-7].String)->empty()) {
       *(yyvsp[-7].String) += " ";
     }
@@ -3786,17 +3795,17 @@
     break;
 
   case 218:
-#line 1483 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1492 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;}
     break;
 
   case 219:
-#line 1484 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1493 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string ("{"); ;}
     break;
 
   case 220:
-#line 1487 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1496 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "define ";
     if (!(yyvsp[-2].String)->empty()) {
@@ -3809,17 +3818,17 @@
     break;
 
   case 221:
-#line 1498 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1507 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;}
     break;
 
   case 222:
-#line 1499 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1508 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string("}"); ;}
     break;
 
   case 223:
-#line 1501 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1510 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
   if ((yyvsp[-1].String))
     *O << *(yyvsp[-1].String);
@@ -3830,29 +3839,35 @@
     break;
 
   case 224:
-#line 1510 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1519 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
   case 227:
-#line 1516 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 1525 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { isDeclare = true; ;}
+    break;
+
+  case 228:
+#line 1525 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     if (!(yyvsp[-1].String)->empty())
-      *(yyvsp[-2].String) += " " + *(yyvsp[-1].String);
-    *(yyvsp[-2].String) += " " + *(yyvsp[0].String);
+      *(yyvsp[-3].String) += " " + *(yyvsp[-1].String);
+    *(yyvsp[-3].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[-1].String);
     delete (yyvsp[0].String);
-    (yyval.String) = (yyvsp[-2].String);
+    (yyval.String) = (yyvsp[-3].String);
+    isDeclare = false;
   ;}
     break;
 
-  case 228:
-#line 1529 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 229:
+#line 1539 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 238:
-#line 1535 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 239:
+#line 1545 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { 
     (yyvsp[-1].String)->insert(0, "<");
     *(yyvsp[-1].String) += ">";
@@ -3860,8 +3875,8 @@
   ;}
     break;
 
-  case 240:
-#line 1541 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 241:
+#line 1551 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-3].String)->empty()) {
       *(yyvsp[-4].String) += " " + *(yyvsp[-3].String);
@@ -3872,8 +3887,8 @@
   ;}
     break;
 
-  case 243:
-#line 1554 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 244:
+#line 1564 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value).val = (yyvsp[0].String);
     (yyval.Value).constant = false;
@@ -3881,8 +3896,8 @@
   ;}
     break;
 
-  case 244:
-#line 1559 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 245:
+#line 1569 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.Value).val = (yyvsp[0].String);
     (yyval.Value).constant = true;
@@ -3890,8 +3905,8 @@
   ;}
     break;
 
-  case 245:
-#line 1569 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 246:
+#line 1579 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-1].Type) = (yyvsp[-1].Type)->resolve();
     std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type));
@@ -3902,29 +3917,29 @@
   ;}
     break;
 
-  case 246:
-#line 1578 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 247:
+#line 1588 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
-  case 247:
-#line 1581 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 248:
+#line 1591 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { // Do not allow functions with 0 basic blocks   
     (yyval.String) = 0;
   ;}
     break;
 
-  case 248:
-#line 1589 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 249:
+#line 1599 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
-  case 249:
-#line 1593 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 250:
+#line 1603 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3932,15 +3947,15 @@
   ;}
     break;
 
-  case 250:
-#line 1598 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 251:
+#line 1608 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.String) = 0;
   ;}
     break;
 
-  case 251:
-#line 1601 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 252:
+#line 1611 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -3948,13 +3963,13 @@
   ;}
     break;
 
-  case 253:
-#line 1607 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 254:
+#line 1617 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;}
     break;
 
-  case 254:
-#line 1609 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 255:
+#line 1619 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {              // Return with a result...
     *O << "    " << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].Value).val << '\n';
     delete (yyvsp[-1].String); (yyvsp[0].Value).destroy();
@@ -3962,8 +3977,8 @@
   ;}
     break;
 
-  case 255:
-#line 1614 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 256:
+#line 1624 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                                       // Return with no result...
     *O << "    " << *(yyvsp[-1].String) << ' ' << (yyvsp[0].Type)->getNewTy() << '\n';
     delete (yyvsp[-1].String);
@@ -3971,8 +3986,8 @@
   ;}
     break;
 
-  case 256:
-#line 1619 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 257:
+#line 1629 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {                         // Unconditional Branch...
     *O << "    " << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].Value).val << '\n';
     delete (yyvsp[-2].String); (yyvsp[0].Value).destroy();
@@ -3980,8 +3995,8 @@
   ;}
     break;
 
-  case 257:
-#line 1624 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 258:
+#line 1634 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {  
     std::string Name = getUniqueName((yyvsp[-6].Value).val, (yyvsp[-7].Type));
     *O << "    " << *(yyvsp[-8].String) << ' ' << (yyvsp[-7].Type)->getNewTy() << ' ' << Name << ", " 
@@ -3992,8 +4007,8 @@
   ;}
     break;
 
-  case 258:
-#line 1632 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 259:
+#line 1642 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string Name = getUniqueName((yyvsp[-6].Value).val, (yyvsp[-7].Type));
     *O << "    " << *(yyvsp[-8].String) << ' ' << (yyvsp[-7].Type)->getNewTy() << ' ' << Name << ", " 
@@ -4004,8 +4019,8 @@
   ;}
     break;
 
-  case 259:
-#line 1640 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 260:
+#line 1650 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string Name = getUniqueName((yyvsp[-5].Value).val, (yyvsp[-6].Type));
     *O << "    " << *(yyvsp[-7].String) << ' ' << (yyvsp[-6].Type)->getNewTy() << ' ' << Name << ", " 
@@ -4015,8 +4030,8 @@
   ;}
     break;
 
-  case 260:
-#line 1648 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 261:
+#line 1658 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     const TypeInfo* ResTy = getFunctionReturnType((yyvsp[-10].Type));
     *O << "    ";
@@ -4040,8 +4055,8 @@
   ;}
     break;
 
-  case 261:
-#line 1669 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 262:
+#line 1679 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -4049,8 +4064,8 @@
   ;}
     break;
 
-  case 262:
-#line 1674 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 263:
+#line 1684 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *O << "    " << *(yyvsp[0].String) << '\n';
     delete (yyvsp[0].String);
@@ -4058,8 +4073,8 @@
   ;}
     break;
 
-  case 263:
-#line 1680 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 264:
+#line 1690 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + " " + *(yyvsp[-3].String) + ", " + (yyvsp[-1].Type)->getNewTy() + " " + 
            *(yyvsp[0].Value).val;
@@ -4068,8 +4083,8 @@
   ;}
     break;
 
-  case 264:
-#line 1686 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 265:
+#line 1696 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyvsp[-3].String)->insert(0, (yyvsp[-4].Type)->getNewTy() + " " );
     *(yyvsp[-3].String) += ", " + (yyvsp[-1].Type)->getNewTy() + " " + *(yyvsp[0].Value).val;
@@ -4078,8 +4093,8 @@
   ;}
     break;
 
-  case 265:
-#line 1694 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 266:
+#line 1704 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     if (!(yyvsp[-1].String)->empty()) {
       // Get a unique name for this value, based on its type.
@@ -4098,8 +4113,8 @@
   ;}
     break;
 
-  case 266:
-#line 1712 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 267:
+#line 1722 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {    // Used for PHI nodes
     std::string Name = getUniqueName((yyvsp[-3].Value).val, (yyvsp[-5].Type));
     Name.insert(0, (yyvsp[-5].Type)->getNewTy() + "[");
@@ -4110,8 +4125,8 @@
   ;}
     break;
 
-  case 267:
-#line 1720 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 268:
+#line 1730 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string Name = getUniqueName((yyvsp[-3].Value).val, (yyvsp[-6].Value).type);
     *(yyvsp[-6].Value).val += ", [" + Name + "," + *(yyvsp[-1].Value).val + "]";
@@ -4120,34 +4135,34 @@
   ;}
     break;
 
-  case 268:
-#line 1729 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 269:
+#line 1739 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.ValList) = new ValueList();
     (yyval.ValList)->push_back((yyvsp[0].Value));
   ;}
     break;
 
-  case 269:
-#line 1733 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 270:
+#line 1743 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     (yyval.ValList) = (yyvsp[-2].ValList);
     (yyval.ValList)->push_back((yyvsp[0].Value));
   ;}
     break;
 
-  case 270:
-#line 1740 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 271:
+#line 1750 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
-  case 271:
-#line 1741 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 272:
+#line 1751 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = new ValueList(); ;}
     break;
 
-  case 272:
-#line 1745 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 273:
+#line 1755 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
     delete (yyvsp[0].String);
@@ -4155,8 +4170,8 @@
   ;}
     break;
 
-  case 274:
-#line 1753 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 275:
+#line 1763 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* op = getDivRemOpcode(*(yyvsp[-4].String), (yyvsp[-3].Type)); 
     std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type));
@@ -4168,8 +4183,8 @@
   ;}
     break;
 
-  case 275:
-#line 1762 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 276:
+#line 1772 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type));
     std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type));
@@ -4180,8 +4195,8 @@
   ;}
     break;
 
-  case 276:
-#line 1770 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 277:
+#line 1780 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type));
     std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type));
@@ -4193,8 +4208,8 @@
   ;}
     break;
 
-  case 277:
-#line 1779 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 278:
+#line 1789 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type));
     std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type));
@@ -4205,8 +4220,8 @@
   ;}
     break;
 
-  case 278:
-#line 1787 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 279:
+#line 1797 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string Name1 = getUniqueName((yyvsp[-2].Value).val, (yyvsp[-3].Type));
     std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type));
@@ -4217,8 +4232,8 @@
   ;}
     break;
 
-  case 279:
-#line 1795 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 280:
+#line 1805 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     const char* shiftop = (yyvsp[-3].String)->c_str();
     if (*(yyvsp[-3].String) == "shr")
@@ -4230,8 +4245,8 @@
   ;}
     break;
 
-  case 280:
-#line 1804 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 281:
+#line 1814 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string source = *(yyvsp[-2].Value).val;
     const TypeInfo* SrcTy = (yyvsp[-2].Value).type->resolve();
@@ -4262,8 +4277,8 @@
   ;}
     break;
 
-  case 281:
-#line 1832 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 282:
+#line 1842 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyval.Value).val = (yyvsp[-5].String);
@@ -4272,8 +4287,8 @@
   ;}
     break;
 
-  case 282:
-#line 1838 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 283:
+#line 1848 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + (yyvsp[0].Type)->getNewTy();
     (yyval.Value).val = (yyvsp[-3].String);
@@ -4282,8 +4297,8 @@
   ;}
     break;
 
-  case 283:
-#line 1844 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 284:
+#line 1854 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyval.Value).val = (yyvsp[-3].String);
@@ -4293,8 +4308,8 @@
   ;}
     break;
 
-  case 284:
-#line 1851 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 285:
+#line 1861 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyval.Value).val = (yyvsp[-5].String);
@@ -4303,8 +4318,8 @@
   ;}
     break;
 
-  case 285:
-#line 1857 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 286:
+#line 1867 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-5].String) += " " + *(yyvsp[-4].Value).val + ", " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
     (yyval.Value).val = (yyvsp[-5].String);
@@ -4313,8 +4328,8 @@
   ;}
     break;
 
-  case 286:
-#line 1863 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 287:
+#line 1873 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
     (yyval.Value).val = (yyvsp[-1].String);
@@ -4323,8 +4338,8 @@
   ;}
     break;
 
-  case 287:
-#line 1869 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 288:
+#line 1879 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     // map llvm.isunordered to "fcmp uno" 
     if (*(yyvsp[-3].Value).val == "%llvm.isunordered.f32" ||
@@ -4335,6 +4350,25 @@
       *(yyval.Value).val += (*(yyvsp[-1].ValList))[1].val->substr(pos+1);
       (yyval.Value).type = TypeInfo::get("bool", BoolTy);
     } else {
+      static unsigned upgradeCount = 1;
+      if (*(yyvsp[-3].Value).val == "%llvm.va_start" || *(yyvsp[-3].Value).val == "%llvm.va_end") {
+        std::string name("%va_upgrade");
+        name += llvm::utostr(upgradeCount++);
+        (yyvsp[-6].String)->insert(0, name + " = bitcast " + *(*(yyvsp[-1].ValList))[0].val + " to i8*\n    ");
+        *(*(yyvsp[-1].ValList))[0].val = "i8* " + name;
+        (*(yyvsp[-1].ValList))[0].type = TypeInfo::get("i8", UByteTy)->getPointerType();
+      } else if (*(yyvsp[-3].Value).val == "%llvm.va_copy") {
+        std::string name0("%va_upgrade");
+        name0 += llvm::utostr(upgradeCount++);
+        std::string name1("%va_upgrade");
+        name1 += llvm::utostr(upgradeCount++);
+        (yyvsp[-6].String)->insert(0, name0 + " = bitcast " + *(*(yyvsp[-1].ValList))[0].val + " to i8*\n    " +
+                      name1 + " = bitcast " + *(*(yyvsp[-1].ValList))[1].val + " to i8*\n    ");
+        *(*(yyvsp[-1].ValList))[0].val = "i8* " + name0;
+        (*(yyvsp[-1].ValList))[0].type = TypeInfo::get("i8", UByteTy)->getPointerType();
+        *(*(yyvsp[-1].ValList))[1].val = "i8* " + name1;
+        (*(yyvsp[-1].ValList))[0].type = TypeInfo::get("i8", UByteTy)->getPointerType();
+      }
       if (!(yyvsp[-5].String)->empty())
         *(yyvsp[-6].String) += " " + *(yyvsp[-5].String);
       if (!(yyvsp[-6].String)->empty())
@@ -4355,23 +4389,23 @@
   ;}
     break;
 
-  case 289:
-#line 1902 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 290:
+#line 1931 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.ValList) = (yyvsp[0].ValList); ;}
     break;
 
-  case 290:
-#line 1903 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 291:
+#line 1932 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {  (yyval.ValList) = new ValueList(); ;}
     break;
 
-  case 292:
-#line 1908 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 293:
+#line 1937 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     { (yyval.String) = new std::string(); ;}
     break;
 
-  case 293:
-#line 1911 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 294:
+#line 1940 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy();
     if (!(yyvsp[0].String)->empty())
@@ -4382,8 +4416,8 @@
   ;}
     break;
 
-  case 294:
-#line 1919 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 295:
+#line 1948 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type));
     *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + ", " + (yyvsp[-2].Type)->getNewTy() + " " + Name;
@@ -4395,8 +4429,8 @@
   ;}
     break;
 
-  case 295:
-#line 1928 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 296:
+#line 1957 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy();
     if (!(yyvsp[0].String)->empty())
@@ -4407,8 +4441,8 @@
   ;}
     break;
 
-  case 296:
-#line 1936 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 297:
+#line 1965 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type));
     *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + ", " + (yyvsp[-2].Type)->getNewTy() + " " + Name;
@@ -4420,8 +4454,8 @@
   ;}
     break;
 
-  case 297:
-#line 1945 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 298:
+#line 1974 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
     (yyval.Value).val = (yyvsp[-1].String);
@@ -4430,8 +4464,8 @@
   ;}
     break;
 
-  case 298:
-#line 1951 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 299:
+#line 1980 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type));
     if (!(yyvsp[-3].String)->empty())
@@ -4443,8 +4477,8 @@
   ;}
     break;
 
-  case 299:
-#line 1960 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 300:
+#line 1989 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type));
     if (!(yyvsp[-5].String)->empty())
@@ -4456,8 +4490,8 @@
   ;}
     break;
 
-  case 300:
-#line 1969 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+  case 301:
+#line 1998 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
     {
     std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type));
     // Upgrade the indices
@@ -4487,7 +4521,7 @@
     }
 
 /* Line 1126 of yacc.c.  */
-#line 4491 "UpgradeParser.tab.c"
+#line 4525 "UpgradeParser.tab.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -4755,7 +4789,7 @@
 }
 
 
-#line 1992 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 2021 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
 
 
 int yyerror(const char *ErrorMsg) {


Index: llvm/tools/llvm-upgrade/UpgradeParser.h.cvs
diff -u llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.27 llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.28
--- llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.27	Fri Jan 12 14:10:51 2007
+++ llvm/tools/llvm-upgrade/UpgradeParser.h.cvs	Fri Jan 12 18:03:30 2007
@@ -75,108 +75,107 @@
      DLLEXPORT = 301,
      EXTERN_WEAK = 302,
      APPENDING = 303,
-     NOT = 304,
-     EXTERNAL = 305,
-     TARGET = 306,
-     TRIPLE = 307,
-     ENDIAN = 308,
-     POINTERSIZE = 309,
-     LITTLE = 310,
-     BIG = 311,
-     ALIGN = 312,
-     UNINITIALIZED = 313,
-     DEPLIBS = 314,
-     CALL = 315,
-     TAIL = 316,
-     ASM_TOK = 317,
-     MODULE = 318,
-     SIDEEFFECT = 319,
-     CC_TOK = 320,
-     CCC_TOK = 321,
-     CSRETCC_TOK = 322,
-     FASTCC_TOK = 323,
-     COLDCC_TOK = 324,
-     X86_STDCALLCC_TOK = 325,
-     X86_FASTCALLCC_TOK = 326,
-     DATALAYOUT = 327,
-     RET = 328,
-     BR = 329,
-     SWITCH = 330,
-     INVOKE = 331,
-     EXCEPT = 332,
-     UNWIND = 333,
-     UNREACHABLE = 334,
-     ADD = 335,
-     SUB = 336,
-     MUL = 337,
-     DIV = 338,
-     UDIV = 339,
-     SDIV = 340,
-     FDIV = 341,
-     REM = 342,
-     UREM = 343,
-     SREM = 344,
-     FREM = 345,
-     AND = 346,
-     OR = 347,
-     XOR = 348,
-     SETLE = 349,
-     SETGE = 350,
-     SETLT = 351,
-     SETGT = 352,
-     SETEQ = 353,
-     SETNE = 354,
-     ICMP = 355,
-     FCMP = 356,
-     EQ = 357,
-     NE = 358,
-     SLT = 359,
-     SGT = 360,
-     SLE = 361,
-     SGE = 362,
-     OEQ = 363,
-     ONE = 364,
-     OLT = 365,
-     OGT = 366,
-     OLE = 367,
-     OGE = 368,
-     ORD = 369,
-     UNO = 370,
-     UEQ = 371,
-     UNE = 372,
-     ULT = 373,
-     UGT = 374,
-     ULE = 375,
-     UGE = 376,
-     MALLOC = 377,
-     ALLOCA = 378,
-     FREE = 379,
-     LOAD = 380,
-     STORE = 381,
-     GETELEMENTPTR = 382,
-     PHI_TOK = 383,
-     SELECT = 384,
-     SHL = 385,
-     SHR = 386,
-     ASHR = 387,
-     LSHR = 388,
-     VAARG = 389,
-     EXTRACTELEMENT = 390,
-     INSERTELEMENT = 391,
-     SHUFFLEVECTOR = 392,
-     CAST = 393,
-     TRUNC = 394,
-     ZEXT = 395,
-     SEXT = 396,
-     FPTRUNC = 397,
-     FPEXT = 398,
-     FPTOUI = 399,
-     FPTOSI = 400,
-     UITOFP = 401,
-     SITOFP = 402,
-     PTRTOINT = 403,
-     INTTOPTR = 404,
-     BITCAST = 405
+     EXTERNAL = 304,
+     TARGET = 305,
+     TRIPLE = 306,
+     ENDIAN = 307,
+     POINTERSIZE = 308,
+     LITTLE = 309,
+     BIG = 310,
+     ALIGN = 311,
+     UNINITIALIZED = 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,
+     EXCEPT = 331,
+     UNWIND = 332,
+     UNREACHABLE = 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,
+     SETLE = 348,
+     SETGE = 349,
+     SETLT = 350,
+     SETGT = 351,
+     SETEQ = 352,
+     SETNE = 353,
+     ICMP = 354,
+     FCMP = 355,
+     EQ = 356,
+     NE = 357,
+     SLT = 358,
+     SGT = 359,
+     SLE = 360,
+     SGE = 361,
+     OEQ = 362,
+     ONE = 363,
+     OLT = 364,
+     OGT = 365,
+     OLE = 366,
+     OGE = 367,
+     ORD = 368,
+     UNO = 369,
+     UEQ = 370,
+     UNE = 371,
+     ULT = 372,
+     UGT = 373,
+     ULE = 374,
+     UGE = 375,
+     MALLOC = 376,
+     ALLOCA = 377,
+     FREE = 378,
+     LOAD = 379,
+     STORE = 380,
+     GETELEMENTPTR = 381,
+     PHI_TOK = 382,
+     SELECT = 383,
+     SHL = 384,
+     SHR = 385,
+     ASHR = 386,
+     LSHR = 387,
+     VAARG = 388,
+     EXTRACTELEMENT = 389,
+     INSERTELEMENT = 390,
+     SHUFFLEVECTOR = 391,
+     CAST = 392,
+     TRUNC = 393,
+     ZEXT = 394,
+     SEXT = 395,
+     FPTRUNC = 396,
+     FPEXT = 397,
+     FPTOUI = 398,
+     FPTOSI = 399,
+     UITOFP = 400,
+     SITOFP = 401,
+     PTRTOINT = 402,
+     INTTOPTR = 403,
+     BITCAST = 404
    };
 #endif
 /* Tokens.  */
@@ -226,114 +225,113 @@
 #define DLLEXPORT 301
 #define EXTERN_WEAK 302
 #define APPENDING 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 UNINITIALIZED 313
-#define DEPLIBS 314
-#define CALL 315
-#define TAIL 316
-#define ASM_TOK 317
-#define MODULE 318
-#define SIDEEFFECT 319
-#define CC_TOK 320
-#define CCC_TOK 321
-#define CSRETCC_TOK 322
-#define FASTCC_TOK 323
-#define COLDCC_TOK 324
-#define X86_STDCALLCC_TOK 325
-#define X86_FASTCALLCC_TOK 326
-#define DATALAYOUT 327
-#define RET 328
-#define BR 329
-#define SWITCH 330
-#define INVOKE 331
-#define EXCEPT 332
-#define UNWIND 333
-#define UNREACHABLE 334
-#define ADD 335
-#define SUB 336
-#define MUL 337
-#define DIV 338
-#define UDIV 339
-#define SDIV 340
-#define FDIV 341
-#define REM 342
-#define UREM 343
-#define SREM 344
-#define FREM 345
-#define AND 346
-#define OR 347
-#define XOR 348
-#define SETLE 349
-#define SETGE 350
-#define SETLT 351
-#define SETGT 352
-#define SETEQ 353
-#define SETNE 354
-#define ICMP 355
-#define FCMP 356
-#define EQ 357
-#define NE 358
-#define SLT 359
-#define SGT 360
-#define SLE 361
-#define SGE 362
-#define OEQ 363
-#define ONE 364
-#define OLT 365
-#define OGT 366
-#define OLE 367
-#define OGE 368
-#define ORD 369
-#define UNO 370
-#define UEQ 371
-#define UNE 372
-#define ULT 373
-#define UGT 374
-#define ULE 375
-#define UGE 376
-#define MALLOC 377
-#define ALLOCA 378
-#define FREE 379
-#define LOAD 380
-#define STORE 381
-#define GETELEMENTPTR 382
-#define PHI_TOK 383
-#define SELECT 384
-#define SHL 385
-#define SHR 386
-#define ASHR 387
-#define LSHR 388
-#define VAARG 389
-#define EXTRACTELEMENT 390
-#define INSERTELEMENT 391
-#define SHUFFLEVECTOR 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
+#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 UNINITIALIZED 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 EXCEPT 331
+#define UNWIND 332
+#define UNREACHABLE 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 SETLE 348
+#define SETGE 349
+#define SETLT 350
+#define SETGT 351
+#define SETEQ 352
+#define SETNE 353
+#define ICMP 354
+#define FCMP 355
+#define EQ 356
+#define NE 357
+#define SLT 358
+#define SGT 359
+#define SLE 360
+#define SGE 361
+#define OEQ 362
+#define ONE 363
+#define OLT 364
+#define OGT 365
+#define OLE 366
+#define OGE 367
+#define ORD 368
+#define UNO 369
+#define UEQ 370
+#define UNE 371
+#define ULT 372
+#define UGT 373
+#define ULE 374
+#define UGE 375
+#define MALLOC 376
+#define ALLOCA 377
+#define FREE 378
+#define LOAD 379
+#define STORE 380
+#define GETELEMENTPTR 381
+#define PHI_TOK 382
+#define SELECT 383
+#define SHL 384
+#define SHR 385
+#define ASHR 386
+#define LSHR 387
+#define VAARG 388
+#define EXTRACTELEMENT 389
+#define INSERTELEMENT 390
+#define SHUFFLEVECTOR 391
+#define CAST 392
+#define TRUNC 393
+#define ZEXT 394
+#define SEXT 395
+#define FPTRUNC 396
+#define FPEXT 397
+#define FPTOUI 398
+#define FPTOSI 399
+#define UITOFP 400
+#define SITOFP 401
+#define PTRTOINT 402
+#define INTTOPTR 403
+#define BITCAST 404
 
 
 
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 802 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+#line 806 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
 typedef union YYSTYPE {
   std::string*    String;
   const TypeInfo* Type;
@@ -343,7 +341,7 @@
   TypeList*       TypeVec;
 } YYSTYPE;
 /* Line 1447 of yacc.c.  */
-#line 347 "UpgradeParser.tab.h"
+#line 345 "UpgradeParser.tab.h"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1


Index: llvm/tools/llvm-upgrade/UpgradeParser.y.cvs
diff -u llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.36 llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.37
--- llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.36	Fri Jan 12 14:10:51 2007
+++ llvm/tools/llvm-upgrade/UpgradeParser.y.cvs	Fri Jan 12 18:03:30 2007
@@ -36,6 +36,10 @@
 // definitions and calls.
 static bool AddAttributes = false;
 
+// This is set when a DECLARE keyword is recognized so that subsequent parsing
+// of a function prototype can know if its a declaration or definition.
+static bool isDeclare = false;
+
 // This bool is used to communicate between the InstVal and Inst rules about
 // whether or not a cast should be deleted. When the flag is set, InstVal has
 // determined that the cast is a candidate. However, it can only be deleted if
@@ -817,7 +821,7 @@
 %token <String> DECLARE GLOBAL CONSTANT SECTION VOLATILE
 %token <String> TO DOTDOTDOT CONST INTERNAL LINKONCE WEAK 
 %token <String> DLLIMPORT DLLEXPORT EXTERN_WEAK APPENDING
-%token <String> NOT EXTERNAL TARGET TRIPLE ENDIAN POINTERSIZE LITTLE BIG
+%token <String> EXTERNAL TARGET TRIPLE ENDIAN POINTERSIZE LITTLE BIG
 %token <String> ALIGN UNINITIALIZED
 %token <String> DEPLIBS CALL TAIL ASM_TOK MODULE SIDEEFFECT
 %token <String> CC_TOK CCC_TOK CSRETCC_TOK FASTCC_TOK COLDCC_TOK
@@ -1463,6 +1467,11 @@
 
 FunctionHeaderH 
   : OptCallingConv TypesV Name '(' ArgList ')' OptSection OptAlign {
+    if (*$3 == "%llvm.va_start" || *$3 == "%llvm.va_end") {
+      *$5 = "i8* ";
+    } else if (*$3 == "%llvm.va_copy") {
+      *$5 = "i8*, i8*";
+    }
     if (!$1->empty()) {
       *$1 += " ";
     }
@@ -1513,13 +1522,14 @@
   ;
   
 FunctionProto 
-  : DECLARE FnDeclareLinkage FunctionHeaderH { 
-    if (!$2->empty())
-      *$1 += " " + *$2;
-    *$1 += " " + *$3;
-    delete $2;
+  : DECLARE { isDeclare = true; } FnDeclareLinkage FunctionHeaderH { 
+    if (!$3->empty())
+      *$1 += " " + *$3;
+    *$1 += " " + *$4;
     delete $3;
+    delete $4;
     $$ = $1;
+    isDeclare = false;
   };
 
 //===----------------------------------------------------------------------===//
@@ -1876,6 +1886,25 @@
       *$$.val += (*$6)[1].val->substr(pos+1);
       $$.type = TypeInfo::get("bool", BoolTy);
     } else {
+      static unsigned upgradeCount = 1;
+      if (*$4.val == "%llvm.va_start" || *$4.val == "%llvm.va_end") {
+        std::string name("%va_upgrade");
+        name += llvm::utostr(upgradeCount++);
+        $1->insert(0, name + " = bitcast " + *(*$6)[0].val + " to i8*\n    ");
+        *(*$6)[0].val = "i8* " + name;
+        (*$6)[0].type = TypeInfo::get("i8", UByteTy)->getPointerType();
+      } else if (*$4.val == "%llvm.va_copy") {
+        std::string name0("%va_upgrade");
+        name0 += llvm::utostr(upgradeCount++);
+        std::string name1("%va_upgrade");
+        name1 += llvm::utostr(upgradeCount++);
+        $1->insert(0, name0 + " = bitcast " + *(*$6)[0].val + " to i8*\n    " +
+                      name1 + " = bitcast " + *(*$6)[1].val + " to i8*\n    ");
+        *(*$6)[0].val = "i8* " + name0;
+        (*$6)[0].type = TypeInfo::get("i8", UByteTy)->getPointerType();
+        *(*$6)[1].val = "i8* " + name1;
+        (*$6)[0].type = TypeInfo::get("i8", UByteTy)->getPointerType();
+      }
       if (!$2->empty())
         *$1 += " " + *$2;
       if (!$1->empty())






More information about the llvm-commits mailing list