diff --git a/llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs b/llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs
index a6c4f21..0e4e5c8 100644
--- a/llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs
+++ b/llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs
@@ -1,374 +1,166 @@
-/* A Bison parser, made by GNU Bison 2.1.  */
 
-/* Skeleton parser for Yacc-like parsing with Bison,
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+/*  A Bison parser, made from /Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y
+    by GNU Bison version 1.28  */
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
+#define YYBISON 1  /* Identify Bison output.  */
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
-
-/* Written by Richard Stallman by simplifying the original so called
-   ``semantic'' parser.  */
-
-/* All symbols defined below should begin with yy or YY, to avoid
-   infringing on user name space.  This should be done even for local
-   variables, as they might otherwise be expanded by user macros.
-   There are some unavoidable exceptions within include files to
-   define necessary library symbols; they are noted "INFRINGES ON
-   USER NAME SPACE" below.  */
-
-/* Identify Bison output.  */
-#define YYBISON 1
-
-/* Bison version.  */
-#define YYBISON_VERSION "2.1"
-
-/* Skeleton name.  */
-#define YYSKELETON_NAME "yacc.c"
-
-/* Pure parsers.  */
-#define YYPURE 0
-
-/* Using locations.  */
-#define YYLSP_NEEDED 0
-
-/* Substitute the variable and function names.  */
 #define yyparse Upgradeparse
-#define yylex   Upgradelex
+#define yylex Upgradelex
 #define yyerror Upgradeerror
-#define yylval  Upgradelval
-#define yychar  Upgradechar
+#define yylval Upgradelval
+#define yychar Upgradechar
 #define yydebug Upgradedebug
 #define yynerrs Upgradenerrs
+#define	VOID	257
+#define	BOOL	258
+#define	SBYTE	259
+#define	UBYTE	260
+#define	SHORT	261
+#define	USHORT	262
+#define	INT	263
+#define	UINT	264
+#define	LONG	265
+#define	ULONG	266
+#define	FLOAT	267
+#define	DOUBLE	268
+#define	LABEL	269
+#define	OPAQUE	270
+#define	ESINT64VAL	271
+#define	EUINT64VAL	272
+#define	SINTVAL	273
+#define	UINTVAL	274
+#define	FPVAL	275
+#define	NULL_TOK	276
+#define	UNDEF	277
+#define	ZEROINITIALIZER	278
+#define	TRUETOK	279
+#define	FALSETOK	280
+#define	TYPE	281
+#define	VAR_ID	282
+#define	LABELSTR	283
+#define	STRINGCONSTANT	284
+#define	IMPLEMENTATION	285
+#define	BEGINTOK	286
+#define	ENDTOK	287
+#define	DECLARE	288
+#define	GLOBAL	289
+#define	CONSTANT	290
+#define	SECTION	291
+#define	VOLATILE	292
+#define	TO	293
+#define	DOTDOTDOT	294
+#define	CONST	295
+#define	INTERNAL	296
+#define	LINKONCE	297
+#define	WEAK	298
+#define	DLLIMPORT	299
+#define	DLLEXPORT	300
+#define	EXTERN_WEAK	301
+#define	APPENDING	302
+#define	NOT	303
+#define	EXTERNAL	304
+#define	TARGET	305
+#define	TRIPLE	306
+#define	ENDIAN	307
+#define	POINTERSIZE	308
+#define	LITTLE	309
+#define	BIG	310
+#define	ALIGN	311
+#define	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
 
-
-/* Tokens.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     VOID = 258,
-     BOOL = 259,
-     SBYTE = 260,
-     UBYTE = 261,
-     SHORT = 262,
-     USHORT = 263,
-     INT = 264,
-     UINT = 265,
-     LONG = 266,
-     ULONG = 267,
-     FLOAT = 268,
-     DOUBLE = 269,
-     LABEL = 270,
-     OPAQUE = 271,
-     ESINT64VAL = 272,
-     EUINT64VAL = 273,
-     SINTVAL = 274,
-     UINTVAL = 275,
-     FPVAL = 276,
-     NULL_TOK = 277,
-     UNDEF = 278,
-     ZEROINITIALIZER = 279,
-     TRUETOK = 280,
-     FALSETOK = 281,
-     TYPE = 282,
-     VAR_ID = 283,
-     LABELSTR = 284,
-     STRINGCONSTANT = 285,
-     IMPLEMENTATION = 286,
-     BEGINTOK = 287,
-     ENDTOK = 288,
-     DECLARE = 289,
-     GLOBAL = 290,
-     CONSTANT = 291,
-     SECTION = 292,
-     VOLATILE = 293,
-     TO = 294,
-     DOTDOTDOT = 295,
-     CONST = 296,
-     INTERNAL = 297,
-     LINKONCE = 298,
-     WEAK = 299,
-     DLLIMPORT = 300,
-     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
-   };
-#endif
-/* Tokens.  */
-#define VOID 258
-#define BOOL 259
-#define SBYTE 260
-#define UBYTE 261
-#define SHORT 262
-#define USHORT 263
-#define INT 264
-#define UINT 265
-#define LONG 266
-#define ULONG 267
-#define FLOAT 268
-#define DOUBLE 269
-#define LABEL 270
-#define OPAQUE 271
-#define ESINT64VAL 272
-#define EUINT64VAL 273
-#define SINTVAL 274
-#define UINTVAL 275
-#define FPVAL 276
-#define NULL_TOK 277
-#define UNDEF 278
-#define ZEROINITIALIZER 279
-#define TRUETOK 280
-#define FALSETOK 281
-#define TYPE 282
-#define VAR_ID 283
-#define LABELSTR 284
-#define STRINGCONSTANT 285
-#define IMPLEMENTATION 286
-#define BEGINTOK 287
-#define ENDTOK 288
-#define DECLARE 289
-#define GLOBAL 290
-#define CONSTANT 291
-#define SECTION 292
-#define VOLATILE 293
-#define TO 294
-#define DOTDOTDOT 295
-#define CONST 296
-#define INTERNAL 297
-#define LINKONCE 298
-#define WEAK 299
-#define DLLIMPORT 300
-#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
-
-
-
-
-/* Copy the first part of user declarations.  */
-#line 14 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 14 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
 
 #include "ParserInternals.h"
 #include <algorithm>
@@ -430,6 +222,7 @@
 
   if (yyparse()) {
     std::cerr << "Parse failed.\n";
+    out << "llvm-upgrade parse failed.\n";
     exit(1);
   }
 }
@@ -752,28 +545,8 @@
 }
 
 
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
-
-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 400 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-typedef union YYSTYPE {
+#line 401 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+typedef union {
   std::string*    String;
   TypeInfo*       Type;
   ValueInfo       Value;
@@ -781,1554 +554,1086 @@
   ValueList*      ValList;
   TypeList*       TypeVec;
 } YYSTYPE;
-/* Line 196 of yacc.c.  */
-#line 786 "UpgradeParser.tab.c"
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
+#include <stdio.h>
+
+#ifndef __cplusplus
+#ifndef __STDC__
+#define const
+#endif
 #endif
 
 
 
-/* Copy the second part of user declarations.  */
+#define	YYFINAL		586
+#define	YYFLAG		-32768
+#define	YYNTBASE	165
 
+#define YYTRANSLATE(x) ((unsigned)(x) <= 404 ? yytranslate[x] : 239)
 
-/* Line 219 of yacc.c.  */
-#line 798 "UpgradeParser.tab.c"
+static const short yytranslate[] = {     0,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,   154,
+   155,   163,     2,   152,     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,     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,
+     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,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
+     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+    97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
+   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+   137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+   147,   148,   149,   150
+};
 
-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
-# define YYSIZE_T __SIZE_TYPE__
-#endif
-#if ! defined (YYSIZE_T) && defined (size_t)
-# define YYSIZE_T size_t
-#endif
-#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-#endif
-#if ! defined (YYSIZE_T)
-# define YYSIZE_T unsigned int
-#endif
+#if YYDEBUG != 0
+static const short yyprhs[] = {     0,
+     0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
+    20,    22,    24,    26,    28,    30,    32,    34,    36,    38,
+    40,    42,    44,    46,    48,    50,    52,    54,    56,    58,
+    60,    62,    64,    66,    68,    70,    72,    74,    76,    78,
+    80,    82,    84,    86,    88,    90,    92,    94,    96,    98,
+   100,   102,   104,   106,   108,   110,   112,   114,   116,   118,
+   120,   122,   124,   126,   128,   130,   132,   134,   136,   138,
+   140,   142,   144,   146,   148,   150,   152,   154,   156,   158,
+   161,   162,   164,   166,   168,   170,   172,   174,   176,   177,
+   179,   181,   183,   185,   187,   189,   192,   193,   194,   197,
+   198,   202,   205,   206,   208,   209,   213,   215,   218,   220,
+   222,   224,   226,   228,   230,   232,   234,   236,   238,   240,
+   242,   244,   246,   248,   250,   252,   254,   256,   258,   261,
+   266,   272,   278,   282,   285,   291,   296,   299,   301,   305,
+   307,   311,   313,   314,   319,   323,   327,   332,   337,   341,
+   344,   347,   350,   353,   356,   359,   362,   365,   368,   371,
+   378,   384,   393,   400,   407,   414,   422,   430,   437,   444,
+   453,   462,   466,   468,   470,   472,   474,   477,   480,   485,
+   488,   490,   492,   494,   499,   502,   507,   514,   521,   528,
+   535,   539,   544,   545,   547,   549,   551,   555,   559,   563,
+   567,   571,   575,   577,   578,   580,   582,   584,   585,   588,
+   592,   594,   596,   600,   602,   603,   612,   614,   616,   620,
+   622,   624,   628,   629,   631,   633,   637,   638,   640,   642,
+   644,   646,   648,   650,   652,   654,   656,   660,   662,   668,
+   670,   672,   674,   676,   679,   682,   684,   687,   690,   691,
+   693,   695,   697,   700,   703,   707,   717,   727,   736,   751,
+   753,   755,   762,   768,   771,   778,   786,   788,   792,   794,
+   795,   798,   800,   806,   812,   818,   825,   832,   835,   840,
+   845,   852,   857,   862,   869,   876,   879,   887,   889,   892,
+   893,   895,   896,   900,   907,   911,   918,   921,   926,   933
+};
 
-#ifndef YY_
-# if YYENABLE_NLS
-#  if ENABLE_NLS
-#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
-#  endif
-# endif
-# ifndef YY_
-#  define YY_(msgid) msgid
-# endif
-#endif
-
-#if ! defined (yyoverflow) || YYERROR_VERBOSE
-
-/* The parser invokes alloca or malloc; define the necessary symbols.  */
-
-# ifdef YYSTACK_USE_ALLOCA
-#  if YYSTACK_USE_ALLOCA
-#   ifdef __GNUC__
-#    define YYSTACK_ALLOC __builtin_alloca
-#   else
-#    define YYSTACK_ALLOC alloca
-#    if defined (__STDC__) || defined (__cplusplus)
-#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     define YYINCLUDED_STDLIB_H
-#    endif
-#   endif
-#  endif
-# endif
-
-# ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning. */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-    /* The OS might guarantee only one guard page at the bottom of the stack,
-       and a page size can be as small as 4096 bytes.  So we cannot safely
-       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-       to allow for a few compiler-allocated temporary stack slots.  */
-#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
-#  endif
-# else
-#  define YYSTACK_ALLOC YYMALLOC
-#  define YYSTACK_FREE YYFREE
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
-#  endif
-#  ifdef __cplusplus
-extern "C" {
-#  endif
-#  ifndef YYMALLOC
-#   define YYMALLOC malloc
-#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
-	&& (defined (__STDC__) || defined (__cplusplus)))
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-#  ifndef YYFREE
-#   define YYFREE free
-#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
-	&& (defined (__STDC__) || defined (__cplusplus)))
-void free (void *); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-#  ifdef __cplusplus
-}
-#  endif
-# endif
-#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-
-
-#if (! defined (yyoverflow) \
-     && (! defined (__cplusplus) \
-	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member.  */
-union yyalloc
-{
-  short int yyss;
-  YYSTYPE yyvs;
-  };
-
-/* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
-   N elements.  */
-# define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
-      + YYSTACK_GAP_MAXIMUM)
-
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined (__GNUC__) && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (0)
-#  endif
-# endif
-
-/* Relocate STACK from its old location to the new one.  The
-   local variables YYSIZE and YYSTACKSIZE give the old and new number of
-   elements in the stack, and YYPTR gives the new location of the
-   stack.  Advance YYPTR to a properly aligned location for the next
-   stack.  */
-# define YYSTACK_RELOCATE(Stack)					\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack, Stack, yysize);				\
-	Stack = &yyptr->Stack;						\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (0)
+static const short yyrhs[] = {    19,
+     0,    20,     0,    17,     0,    18,     0,    80,     0,    81,
+     0,    82,     0,    83,     0,    84,     0,    85,     0,    86,
+     0,    87,     0,    88,     0,    89,     0,    90,     0,    91,
+     0,    92,     0,    93,     0,    94,     0,    95,     0,    96,
+     0,    97,     0,    98,     0,    99,     0,   102,     0,   103,
+     0,   104,     0,   105,     0,   106,     0,   107,     0,   118,
+     0,   119,     0,   120,     0,   121,     0,   108,     0,   109,
+     0,   110,     0,   111,     0,   112,     0,   113,     0,   114,
+     0,   115,     0,   116,     0,   117,     0,   118,     0,   119,
+     0,   120,     0,   121,     0,    25,     0,    26,     0,   130,
+     0,   131,     0,   132,     0,   133,     0,   139,     0,   140,
+     0,   141,     0,   142,     0,   143,     0,   144,     0,   145,
+     0,   146,     0,   147,     0,   148,     0,   149,     0,   150,
+     0,   138,     0,    11,     0,     9,     0,     7,     0,     5,
+     0,    12,     0,    10,     0,     8,     0,     6,     0,   174,
+     0,   175,     0,    13,     0,    14,     0,   207,   151,     0,
+     0,    42,     0,    43,     0,    44,     0,    48,     0,    45,
+     0,    46,     0,    47,     0,     0,    66,     0,    67,     0,
+    68,     0,    69,     0,    70,     0,    71,     0,    65,    18,
+     0,     0,     0,    57,    18,     0,     0,   152,    57,    18,
+     0,    37,    30,     0,     0,   183,     0,     0,   152,   186,
+   185,     0,   183,     0,    57,    18,     0,   189,     0,     3,
+     0,   191,     0,     3,     0,   191,     0,     4,     0,     5,
+     0,     6,     0,     7,     0,     8,     0,     9,     0,    10,
+     0,    11,     0,    12,     0,    13,     0,    14,     0,    15,
+     0,    16,     0,   221,     0,   190,     0,   153,    18,     0,
+   188,   154,   193,   155,     0,   156,    18,   157,   191,   158,
+     0,   159,    18,   157,   191,   160,     0,   161,   192,   162,
+     0,   161,   162,     0,   159,   161,   192,   162,   160,     0,
+   159,   161,   162,   160,     0,   191,   163,     0,   191,     0,
+   192,   152,   191,     0,   192,     0,   192,   152,    40,     0,
+    40,     0,     0,   189,   156,   196,   158,     0,   189,   156,
+   158,     0,   189,   164,    30,     0,   189,   159,   196,   160,
+     0,   189,   161,   196,   162,     0,   189,   161,   162,     0,
+   189,    22,     0,   189,    23,     0,   189,   221,     0,   189,
+   195,     0,   189,    24,     0,   174,   166,     0,   175,   166,
+     0,     4,    25,     0,     4,    26,     0,   177,    21,     0,
+   173,   154,   194,    39,   189,   155,     0,   127,   154,   194,
+   236,   155,     0,   129,   154,   194,   152,   194,   152,   194,
+   155,     0,   167,   154,   194,   152,   194,   155,     0,   168,
+   154,   194,   152,   194,   155,     0,   169,   154,   194,   152,
+   194,   155,     0,   100,   170,   154,   194,   152,   194,   155,
+     0,   101,   171,   154,   194,   152,   194,   155,     0,   172,
+   154,   194,   152,   194,   155,     0,   135,   154,   194,   152,
+   194,   155,     0,   136,   154,   194,   152,   194,   152,   194,
+   155,     0,   137,   154,   194,   152,   194,   152,   194,   155,
+     0,   196,   152,   194,     0,   194,     0,    35,     0,    36,
+     0,   199,     0,   199,   216,     0,   199,   218,     0,   199,
+    63,    62,   202,     0,   199,    31,     0,   201,     0,    50,
+     0,    58,     0,   201,   178,    27,   187,     0,   201,   218,
+     0,   201,    63,    62,   202,     0,   201,   178,   179,   197,
+   194,   185,     0,   201,   178,   200,   197,   189,   185,     0,
+   201,   178,    45,   197,   189,   185,     0,   201,   178,    47,
+   197,   189,   185,     0,   201,    51,   204,     0,   201,    59,
+   151,   205,     0,     0,    30,     0,    56,     0,    55,     0,
+    53,   151,   203,     0,    54,   151,    18,     0,    52,   151,
+    30,     0,    72,   151,    30,     0,   156,   206,   158,     0,
+   206,   152,    30,     0,    30,     0,     0,    28,     0,    30,
+     0,   207,     0,     0,   189,   208,     0,   210,   152,   209,
+     0,   209,     0,   210,     0,   210,   152,    40,     0,    40,
+     0,     0,   180,   187,   207,   154,   211,   155,   184,   181,
+     0,    32,     0,   161,     0,   179,   212,   213,     0,    33,
+     0,   162,     0,   214,   224,   215,     0,     0,    45,     0,
+    47,     0,    34,   217,   212,     0,     0,    64,     0,    17,
+     0,    18,     0,    21,     0,    25,     0,    26,     0,    22,
+     0,    23,     0,    24,     0,   159,   196,   160,     0,   195,
+     0,    62,   219,    30,   152,    30,     0,   165,     0,   207,
+     0,   221,     0,   220,     0,   189,   222,     0,   224,   225,
+     0,   225,     0,   226,   228,     0,   226,   230,     0,     0,
+    29,     0,    78,     0,    77,     0,    73,   223,     0,    73,
+     3,     0,    74,    15,   222,     0,    74,     4,   222,   152,
+    15,   222,   152,    15,   222,     0,    75,   176,   222,   152,
+    15,   222,   156,   229,   158,     0,    75,   176,   222,   152,
+    15,   222,   156,   158,     0,   178,    76,   180,   187,   222,
+   154,   233,   155,    39,    15,   222,   227,    15,   222,     0,
+   227,     0,    79,     0,   229,   176,   220,   152,    15,   222,
+     0,   176,   220,   152,    15,   222,     0,   178,   235,     0,
+   189,   156,   222,   152,   222,   158,     0,   231,   152,   156,
+   222,   152,   222,   158,     0,   223,     0,   232,   152,   223,
+     0,   232,     0,     0,    61,    60,     0,    60,     0,   167,
+   189,   222,   152,   222,     0,   168,   189,   222,   152,   222,
+     0,   169,   189,   222,   152,   222,     0,   100,   170,   189,
+   222,   152,   222,     0,   101,   171,   189,   222,   152,   222,
+     0,    49,   223,     0,   172,   223,   152,   223,     0,   173,
+   223,    39,   189,     0,   129,   223,   152,   223,   152,   223,
+     0,   134,   223,   152,   189,     0,   135,   223,   152,   223,
+     0,   136,   223,   152,   223,   152,   223,     0,   137,   223,
+   152,   223,   152,   223,     0,   128,   231,     0,   234,   180,
+   187,   222,   154,   233,   155,     0,   238,     0,   152,   232,
+     0,     0,    38,     0,     0,   122,   189,   182,     0,   122,
+   189,   152,    10,   222,   182,     0,   123,   189,   182,     0,
+   123,   189,   152,    10,   222,   182,     0,   124,   223,     0,
+   237,   125,   189,   222,     0,   237,   126,   223,   152,   189,
+   222,     0,   127,   189,   222,   236,     0
+};
 
 #endif
 
-#if defined (__STDC__) || defined (__cplusplus)
-   typedef signed char yysigned_char;
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+   466,   466,   467,   467,   471,   471,   471,   471,   471,   471,
+   471,   472,   472,   472,   472,   473,   473,   473,   474,   474,
+   474,   474,   474,   474,   475,   475,   475,   475,   475,   475,
+   475,   475,   475,   475,   476,   476,   476,   476,   476,   476,
+   476,   476,   476,   476,   477,   477,   477,   477,   477,   477,
+   478,   478,   478,   478,   479,   479,   479,   479,   479,   479,
+   479,   479,   480,   480,   480,   480,   480,   485,   485,   485,
+   485,   486,   486,   486,   486,   487,   487,   488,   488,   491,
+   494,   499,   499,   499,   499,   499,   499,   500,   501,   504,
+   504,   504,   504,   504,   505,   506,   511,   516,   517,   520,
+   521,   529,   535,   536,   539,   540,   549,   550,   563,   563,
+   564,   564,   565,   569,   569,   569,   569,   569,   569,   569,
+   570,   570,   570,   570,   570,   572,   575,   578,   581,   585,
+   598,   604,   610,   620,   623,   633,   636,   644,   648,   655,
+   656,   661,   666,   676,   682,   687,   693,   699,   705,   710,
+   716,   722,   729,   735,   741,   747,   753,   759,   765,   773,
+   786,   798,   803,   809,   814,   820,   825,   830,   838,   843,
+   848,   858,   863,   868,   868,   878,   883,   886,   891,   895,
+   899,   901,   901,   904,   914,   919,   924,   934,   944,   954,
+   964,   969,   974,   979,   981,   981,   984,   989,   996,  1001,
+  1008,  1015,  1020,  1021,  1029,  1029,  1030,  1030,  1032,  1041,
+  1045,  1049,  1052,  1057,  1060,  1063,  1081,  1082,  1085,  1096,
+  1097,  1099,  1108,  1109,  1110,  1114,  1127,  1128,  1131,  1131,
+  1131,  1131,  1131,  1131,  1131,  1132,  1133,  1138,  1139,  1148,
+  1148,  1152,  1157,  1167,  1177,  1180,  1188,  1192,  1197,  1200,
+  1206,  1206,  1208,  1213,  1218,  1223,  1232,  1240,  1247,  1270,
+  1275,  1281,  1287,  1295,  1313,  1321,  1330,  1334,  1341,  1342,
+  1346,  1351,  1354,  1363,  1371,  1380,  1388,  1396,  1401,  1410,
+  1438,  1444,  1450,  1457,  1463,  1469,  1475,  1493,  1498,  1499,
+  1503,  1504,  1507,  1515,  1524,  1532,  1541,  1547,  1556,  1565
+};
+#endif
+
+
+#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
+
+static const char * const yytname[] = {   "$","error","$undefined.","VOID","BOOL",
+"SBYTE","UBYTE","SHORT","USHORT","INT","UINT","LONG","ULONG","FLOAT","DOUBLE",
+"LABEL","OPAQUE","ESINT64VAL","EUINT64VAL","SINTVAL","UINTVAL","FPVAL","NULL_TOK",
+"UNDEF","ZEROINITIALIZER","TRUETOK","FALSETOK","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","TARGET","TRIPLE","ENDIAN",
+"POINTERSIZE","LITTLE","BIG","ALIGN","UNINITIALIZED","DEPLIBS","CALL","TAIL",
+"ASM_TOK","MODULE","SIDEEFFECT","CC_TOK","CCC_TOK","CSRETCC_TOK","FASTCC_TOK",
+"COLDCC_TOK","X86_STDCALLCC_TOK","X86_FASTCALLCC_TOK","DATALAYOUT","RET","BR",
+"SWITCH","INVOKE","EXCEPT","UNWIND","UNREACHABLE","ADD","SUB","MUL","DIV","UDIV",
+"SDIV","FDIV","REM","UREM","SREM","FREM","AND","OR","XOR","SETLE","SETGE","SETLT",
+"SETGT","SETEQ","SETNE","ICMP","FCMP","EQ","NE","SLT","SGT","SLE","SGE","OEQ",
+"ONE","OLT","OGT","OLE","OGE","ORD","UNO","UEQ","UNE","ULT","UGT","ULE","UGE",
+"MALLOC","ALLOCA","FREE","LOAD","STORE","GETELEMENTPTR","PHI_TOK","SELECT","SHL",
+"SHR","ASHR","LSHR","VAARG","EXTRACTELEMENT","INSERTELEMENT","SHUFFLEVECTOR",
+"CAST","TRUNC","ZEXT","SEXT","FPTRUNC","FPEXT","FPTOUI","FPTOSI","UITOFP","SITOFP",
+"PTRTOINT","INTTOPTR","BITCAST","'='","','","'\\\\'","'('","')'","'['","'x'",
+"']'","'<'","'>'","'{'","'}'","'*'","'c'","IntVal","EInt64Val","ArithmeticOps",
+"LogicalOps","SetCondOps","IPredicates","FPredicates","ShiftOps","CastOps","SIntType",
+"UIntType","IntType","FPType","OptAssign","OptLinkage","OptCallingConv","OptAlign",
+"OptCAlign","SectionString","OptSection","GlobalVarAttributes","GlobalVarAttribute",
+"TypesV","UpRTypesV","Types","PrimType","UpRTypes","TypeListI","ArgTypeListI",
+"ConstVal","ConstExpr","ConstVector","GlobalType","Module","DefinitionList",
+"External","ConstPool","AsmBlock","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", NULL
+};
+#endif
+
+static const short yyr1[] = {     0,
+   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,   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,   218,   219,   219,   220,   220,
+   220,   220,   220,   220,   220,   220,   220,   220,   220,   221,
+   221,   222,   222,   223,   224,   224,   225,   226,   226,   226,
+   227,   227,   228,   228,   228,   228,   228,   228,   228,   228,
+   228,   229,   229,   230,   231,   231,   232,   232,   233,   233,
+   234,   234,   235,   235,   235,   235,   235,   235,   235,   235,
+   235,   235,   235,   235,   235,   235,   235,   235,   236,   236,
+   237,   237,   238,   238,   238,   238,   238,   238,   238,   238
+};
+
+static const short yyr2[] = {     0,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
+     0,     1,     1,     1,     1,     1,     1,     1,     0,     1,
+     1,     1,     1,     1,     1,     2,     0,     0,     2,     0,
+     3,     2,     0,     1,     0,     3,     1,     2,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     2,     4,
+     5,     5,     3,     2,     5,     4,     2,     1,     3,     1,
+     3,     1,     0,     4,     3,     3,     4,     4,     3,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     6,
+     5,     8,     6,     6,     6,     7,     7,     6,     6,     8,
+     8,     3,     1,     1,     1,     1,     2,     2,     4,     2,
+     1,     1,     1,     4,     2,     4,     6,     6,     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,     2,     4,     4,
+     6,     4,     4,     6,     6,     2,     7,     1,     2,     0,
+     1,     0,     3,     6,     3,     6,     2,     4,     6,     4
+};
+
+static const short yydefact[] = {   193,
+    89,   181,   180,   223,    82,    83,    84,    86,    87,    88,
+    85,     0,    97,   249,   177,   178,   205,   206,     0,     0,
+     0,    89,     0,   185,   224,   225,    97,     0,     0,    90,
+    91,    92,    93,    94,    95,     0,     0,   250,   249,   246,
+    81,     0,     0,     0,     0,   191,     0,     0,     0,     0,
+     0,   182,   183,     0,     0,    80,   226,   194,   179,    96,
+   110,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+   123,   124,   125,   126,     1,     2,     0,     0,     0,     0,
+   240,     0,     0,   109,   128,   113,   241,   127,   217,   218,
+   219,   220,   221,   222,   245,     0,     0,     0,   252,   251,
+   261,   292,   260,   247,   248,     0,     0,     0,     0,   204,
+   192,   186,   184,   174,   175,     0,     0,     0,     0,   129,
+     0,     0,     0,   112,   134,   138,     0,     0,   143,   137,
+   254,     0,   253,     0,     0,    71,    75,    70,    74,    69,
+    73,    68,    72,    76,    77,     0,   291,     0,   272,     0,
+    97,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+    24,     0,     0,     0,     0,     0,     0,     0,     0,    51,
+    52,    53,    54,     0,     0,     0,     0,    67,    55,    56,
+    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+     0,     0,     0,     0,     0,    97,   264,     0,   288,   199,
+   196,   195,   197,   198,   200,   203,     0,   105,   105,   114,
+   115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     0,     0,     0,     0,   105,   105,     0,     0,     0,     0,
+     0,   133,   215,   142,   140,     0,   229,   230,   231,   234,
+   235,   236,   232,   233,   227,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   238,   243,
+   242,   244,     0,   255,     0,   278,   271,     0,    25,    26,
+    27,    28,    29,    30,    31,    32,    33,    34,     0,    49,
+    50,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+    44,    45,    46,    47,    48,     0,   100,   100,   297,     0,
+     0,   286,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   201,     0,   189,   190,
+   157,   158,     3,     4,   155,   156,   159,   150,   151,   154,
+     0,     0,     0,     0,   153,   152,   187,   188,   111,   111,
+   136,     0,   139,   214,   208,   211,   212,     0,     0,   130,
+   228,     0,     0,     0,     0,     0,     0,     0,     0,   173,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   293,     0,   295,   290,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   202,     0,     0,   107,   105,   145,     0,     0,   149,
+     0,   146,   131,   132,   135,   207,   209,     0,   103,   141,
+     0,     0,     0,   290,     0,     0,     0,     0,     0,   237,
+     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,
+   102,   108,   106,   144,   147,   148,   213,   210,   104,    98,
+     0,     0,     0,     0,     0,     0,     0,     0,   172,     0,
+     0,     0,     0,     0,     0,     0,   270,     0,     0,   100,
+   101,   100,   267,   289,     0,     0,     0,     0,     0,   273,
+   274,   275,   270,     0,     0,   216,   239,     0,     0,   161,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   269,     0,   276,   277,     0,   294,   296,     0,     0,
+     0,   281,   284,   285,     0,   299,    99,     0,     0,     0,
+   169,     0,     0,   163,   164,   165,   168,   160,     0,   258,
+     0,     0,     0,   268,   265,     0,   287,   166,   167,     0,
+     0,     0,   256,     0,   257,     0,     0,   266,   162,   170,
+   171,     0,     0,     0,     0,     0,     0,   263,     0,     0,
+   262,     0,   259,     0,     0,     0
+};
+
+static const short yydefgoto[] = {    81,
+   335,   264,   265,   266,   289,   306,   267,   268,   231,   232,
+   146,   233,    22,    13,    36,   506,   383,   405,   470,   329,
+   406,    82,    83,   234,    85,    86,   127,   246,   370,   269,
+   371,   116,   584,     1,    55,     2,    59,   213,    46,   111,
+   217,    87,   417,   356,   357,   358,    37,    91,    14,    94,
+    15,    27,    16,   362,   270,    88,   272,   493,    39,    40,
+    41,   103,   104,   552,   105,   312,   522,   523,   206,   207,
+   445,   208,   209
+};
+
+static const short yypact[] = {-32768,
+   217,   541,-32768,   116,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,    16,   111,    17,-32768,-32768,-32768,-32768,    34,   -90,
+    61,    26,    19,-32768,-32768,-32768,   111,   144,   172,-32768,
+-32768,-32768,-32768,-32768,-32768,   871,   -26,-32768,   -18,-32768,
+    47,    81,    87,    93,    98,-32768,    96,   144,   871,    69,
+    69,-32768,-32768,    69,    69,-32768,-32768,-32768,-32768,-32768,
+   100,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   237,   238,    -9,   215,
+-32768,   134,   103,-32768,-32768,  -111,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   909,    36,   148,-32768,-32768,
+-32768,  1343,-32768,-32768,-32768,   228,    40,   248,   239,   241,
+-32768,-32768,-32768,-32768,-32768,   937,   937,   965,   937,-32768,
+   110,   115,   506,-32768,-32768,  -111,   -98,   114,   673,-32768,
+   100,  1141,-32768,  1141,  1141,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,  1141,-32768,   937,-32768,   213,
+   111,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,   195,    84,   937,   937,   937,   937,   937,   937,-32768,
+-32768,-32768,-32768,   937,   937,   937,   937,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   937,   937,   937,   937,   937,   111,-32768,     6,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   -93,   122,   122,    91,
+   119,   129,   166,   169,   191,   193,   219,   223,   258,   260,
+   229,   229,   261,  1052,   122,   122,   937,   937,   124,   -73,
+   937,-32768,   711,-32768,   133,   131,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   226,   195,    84,   137,   138,   140,
+   150,   154,   965,   156,   158,   167,   168,   170,-32768,-32768,
+-32768,-32768,   171,-32768,   173,-32768,-32768,   871,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   937,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   937,   174,   175,-32768,  1141,
+   164,   176,   177,   178,   179,   182,   183,  1141,  1141,  1141,
+   184,   299,   871,   937,   937,   310,-32768,    -8,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   749,   965,   614,   311,-32768,-32768,-32768,-32768,   -55,  -115,
+-32768,   185,  -111,-32768,   134,-32768,   190,   189,   777,-32768,
+-32768,   316,   194,   198,   965,   965,   965,   965,   965,-32768,
+  -102,   965,   965,   965,   965,   965,   332,   344,  1141,  1141,
+  1141,    -2,-32768,     9,-32768,   208,  1141,   207,   937,   937,
+   937,   937,   937,   212,   214,   218,   937,   937,  1141,  1141,
+   220,-32768,   335,   349,-32768,   122,-32768,   -61,   -58,-32768,
+   -70,-32768,-32768,-32768,-32768,-32768,-32768,   833,   336,-32768,
+   231,   965,   965,   208,   235,   236,   240,   242,   965,-32768,
+   243,   244,   245,   249,   330,  1141,  1141,   221,   250,   251,
+  1141,   363,  1141,   937,-32768,   252,  1141,   253,-32768,-32768,
+   254,   255,  1141,  1141,  1141,-32768,-32768,   256,-32768,   937,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   333,
+   359,   257,   262,   263,   965,   965,   965,   965,-32768,   965,
+   965,   965,   965,   937,   264,   259,   937,  1141,  1141,   265,
+-32768,   265,-32768,   267,  1141,   268,   937,   937,   937,-32768,
+-32768,-32768,   937,  1141,   375,-32768,-32768,   965,   965,-32768,
+   269,   273,   270,   271,   274,   275,   276,   277,   278,   419,
+    15,   267,   282,-32768,-32768,   381,-32768,-32768,   937,   281,
+  1141,-32768,-32768,-32768,   286,-32768,-32768,   289,   292,   965,
+-32768,   965,   965,-32768,-32768,-32768,-32768,-32768,  1141,-32768,
+  1230,    27,   410,-32768,-32768,   297,-32768,-32768,-32768,   295,
+   303,   304,-32768,   308,-32768,  1230,   449,-32768,-32768,-32768,
+-32768,   450,   314,  1141,  1141,   453,   135,-32768,  1141,   454,
+-32768,  1141,-32768,   472,   473,-32768
+};
+
+static const short yypgoto[] = {-32768,
+   247,   372,   374,   378,   225,   227,   380,   383,   -96,   -95,
+  -505,-32768,   436,   461,  -139,-32768,  -301,    67,-32768,  -218,
+-32768,   -45,-32768,   -36,-32768,   -66,   -16,-32768,   132,   290,
+  -214,    60,-32768,-32768,-32768,-32768,   441,-32768,-32768,-32768,
+-32768,     3,-32768,    72,-32768,-32768,   464,-32768,-32768,-32768,
+-32768,-32768,   490,-32768,  -510,  -104,    -1,   -86,-32768,   456,
+-32768,   -81,-32768,-32768,-32768,-32768,    58,    20,-32768,-32768,
+   104,-32768,-32768
+};
+
+
+#define	YYLAST		1493
+
+
+static const short yytable[] = {    84,
+   330,   144,   145,   113,    23,    89,   385,   441,   122,   133,
+    38,   278,    84,   126,    92,   551,   347,   348,   443,   136,
+   137,   138,   139,   140,   141,   142,   143,   271,   403,   271,
+   271,   136,   137,   138,   139,   140,   141,   142,   143,   134,
+   564,   271,  -111,    23,   414,    38,   566,   130,   404,   429,
+   135,   130,    49,   241,   442,   573,   126,   430,   326,   132,
+    47,   276,   126,   242,   327,   442,   323,     5,     6,     7,
+    50,     9,    51,    11,    17,    52,    18,    28,   241,   218,
+   219,   429,   236,    53,   128,    42,    43,    44,   352,   309,
+   429,   466,   313,   429,   211,   212,   464,   314,   315,   316,
+   317,   465,   413,   114,   115,    45,   240,   130,   290,   291,
+   117,   132,   245,   118,   119,   331,   332,   321,   322,    96,
+    97,    98,    48,    99,   100,   101,   408,   409,   411,   346,
+   324,   325,   273,   274,    90,   -71,   -71,   307,   308,   132,
+   310,   311,   132,    93,   275,   -75,   -75,   132,   132,   132,
+   132,   123,   136,   137,   138,   139,   140,   141,   142,   143,
+    25,    17,    26,    18,   318,   319,   320,   132,   132,    56,
+   349,   350,   550,    58,   353,    29,    30,    31,    32,    33,
+    34,    35,   -70,   -70,   565,   -74,   -74,   463,   527,    60,
+   528,   292,   293,   294,   295,   296,   297,   298,   299,   300,
+   301,   302,   303,   304,   305,   271,   355,   -69,   -69,   -73,
+   -73,    99,   100,   271,   271,   271,  -176,   124,    62,    63,
+    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+    74,   106,   379,    75,    76,   -68,   -68,   107,   401,   -72,
+   -72,    84,    17,   108,    18,   333,   334,     3,   109,   235,
+     4,   110,   380,  -112,   120,   121,   129,   210,     5,     6,
+     7,     8,     9,    10,    11,   214,   237,   243,   215,   381,
+   216,   238,   277,   328,   271,   271,   271,   399,   -78,    12,
+   -79,   337,   271,   351,   359,   360,    84,   400,   132,   361,
+   365,   366,   353,   367,   271,   271,   279,   280,   281,   282,
+   283,   284,   448,   368,   450,   451,   452,   369,   386,   372,
+   456,   373,   285,   286,   287,   288,   394,   395,   396,   387,
+   374,   375,   377,   376,   378,   382,   384,   388,   389,   390,
+   391,   271,   271,   392,   393,   397,   271,   398,   271,   402,
+   412,   418,   271,   419,   415,   421,   436,   422,   271,   271,
+   271,   423,   132,   449,   132,   132,   132,   416,   437,   444,
+   132,   457,   447,   453,   461,   454,   462,    77,   484,   455,
+    78,   460,   403,    79,   487,    80,   125,   438,   439,   440,
+   491,   355,   471,   271,   271,   446,   475,   476,   507,   505,
+   271,   477,   537,   478,   480,   481,   482,   458,   459,   271,
+   483,   488,   489,   495,   497,   498,   499,   132,   508,   503,
+   532,   533,   534,   509,   521,   520,   526,   510,   529,   531,
+   540,   542,   543,   504,   144,   145,   271,   541,   544,   545,
+   546,   547,   548,   549,   485,   486,   553,   442,   555,   490,
+   557,   492,   554,   558,   271,   496,   559,   519,   567,   569,
+   132,   500,   501,   502,   568,   144,   145,   570,   571,   572,
+   132,   132,   132,   574,   575,   576,   132,   579,   582,   271,
+   271,   585,   586,   201,   271,   202,   102,   271,   336,   203,
+   363,   204,    54,   364,   205,   469,   524,   525,   112,   468,
+    57,    24,   132,   530,    95,   580,   424,   425,   426,   427,
+   428,   494,   536,   431,   432,   433,   434,   435,   124,    62,
+    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+    73,    74,   535,   345,    75,    76,     0,   474,     0,   556,
+     0,     0,     0,    17,     0,    18,     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,     0,     0,     0,     0,     0,     0,   -81,    17,     0,
+    18,     0,   577,   578,     4,   -81,   -81,   581,     0,     0,
+   583,     0,   -81,   -81,   -81,   -81,   -81,   -81,   -81,     0,
+   -81,    19,     0,     0,     0,     0,     0,     0,   -81,    20,
+     0,     0,     0,    21,     0,     0,   511,   512,   513,   514,
+     0,   515,   516,   517,   518,     0,   124,   220,   221,   222,
+   223,   224,   225,   226,   227,   228,   229,   230,    73,    74,
+     0,     0,    75,    76,     0,     0,     0,     0,     0,   538,
+   539,    17,     0,    18,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    77,     0,
+     0,    78,     0,     0,    79,     0,    80,   239,     0,     0,
+     0,   560,     0,   561,   562,   124,    62,    63,    64,    65,
+    66,    67,    68,    69,    70,    71,    72,    73,    74,     0,
+     0,    75,    76,     0,     0,     0,     0,     0,     0,     0,
+    17,     0,    18,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   244,   124,    62,    63,    64,    65,    66,    67,
+    68,    69,    70,    71,    72,    73,    74,     0,     0,    75,
+    76,     0,     0,     0,     0,     0,     0,     0,    17,     0,
+    18,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   354,   124,   220,   221,   222,   223,   224,   225,   226,   227,
+   228,   229,   230,    73,    74,     0,    77,    75,    76,    78,
+     0,     0,    79,     0,    80,   410,    17,     0,    18,   124,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,     0,     0,    75,    76,     0,     0,     0,
+     0,     0,     0,     0,    17,     0,    18,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   420,     0,     0,     0,
+     0,     0,     0,     0,     0,    77,     0,     0,    78,     0,
+     0,    79,     0,    80,     0,   124,    62,    63,    64,    65,
+    66,    67,    68,    69,    70,    71,    72,    73,    74,     0,
+     0,    75,    76,     0,     0,     0,     0,     0,     0,     0,
+    17,     0,    18,    77,     0,     0,    78,     0,     0,    79,
+     0,    80,   467,    61,    62,    63,    64,    65,    66,    67,
+    68,    69,    70,    71,    72,    73,    74,     0,     0,    75,
+    76,     0,     0,     0,     0,     0,     0,     0,    17,     0,
+    18,    77,     0,     0,    78,     0,   407,    79,     0,    80,
+     0,   131,    62,    63,    64,    65,    66,    67,    68,    69,
+    70,    71,    72,    73,    74,     0,     0,    75,    76,    77,
+     0,     0,    78,     0,     0,    79,    17,    80,    18,   124,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,     0,     0,    75,    76,     0,     0,     0,
+     0,     0,     0,     0,    17,     0,    18,   124,   220,   221,
+   222,   223,   224,   225,   226,   227,   228,   229,   230,    73,
+    74,     0,     0,    75,    76,    77,     0,     0,    78,     0,
+     0,    79,    17,    80,    18,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    77,     0,     0,    78,     0,     0,    79,
+     0,    80,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    77,     0,     0,    78,     0,     0,    79,     0,    80,
+    75,    76,     0,   338,   339,   340,     0,     0,     0,    17,
+     0,    18,     0,     0,     0,     0,     0,     0,     0,    77,
+     0,     0,    78,     0,     0,    79,     0,    80,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    77,     0,     0,
+    78,     0,     0,    79,     0,    80,     0,     0,     0,     0,
+     0,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+   171,   256,   257,     0,     0,     0,     0,   247,   248,    75,
+    76,   249,   250,   251,   252,   253,   254,     0,    17,     0,
+    18,     0,     0,     0,     0,     0,     0,     0,   258,     0,
+   259,   180,   181,   182,   183,     0,   260,   261,   262,   188,
+   189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
+   199,   200,   255,     0,     0,     0,     0,   341,     0,     0,
+   342,     0,   343,     0,     0,   344,     0,     0,     0,     0,
+   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   256,   257,     0,     0,     0,     0,   247,   248,     0,     0,
+   249,   250,   251,   252,   253,   254,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   258,     0,   259,
+   180,   181,   182,   183,     0,   260,   261,   262,   188,   189,
+   190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+   200,   255,     0,     0,     0,     0,     0,     0,     0,   263,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   152,
+   153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+   163,   164,   165,   166,   167,   168,   169,   170,   171,   256,
+   257,     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,   258,     0,   259,   180,
+   181,   182,   183,     0,   260,   261,   262,   188,   189,   190,
+   191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+   147,     0,     0,     0,     0,     0,     0,     0,   263,     0,
+     0,   148,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   149,   150,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   151,     0,
+     0,     0,   152,   153,   154,   155,   156,   157,   158,   159,
+   160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+   170,   171,   172,   173,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   174,   175,   176,     0,     0,   177,
+   178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+   188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+   198,   199,   200
+};
+
+static const short yycheck[] = {    36,
+   219,    98,    98,    49,     2,    32,   308,    10,    18,    96,
+    29,   151,    49,    80,    33,   521,   235,   236,    10,     5,
+     6,     7,     8,     9,    10,    11,    12,   132,    37,   134,
+   135,     5,     6,     7,     8,     9,    10,    11,    12,     4,
+   551,   146,   154,    41,   160,    29,   552,   163,    57,   152,
+    15,   163,    27,   152,    57,   566,   123,   160,   152,    96,
+   151,   148,   129,   162,   158,    57,   206,    42,    43,    44,
+    45,    46,    47,    48,    28,    50,    30,    62,   152,   116,
+   117,   152,   119,    58,    82,    52,    53,    54,   162,   176,
+   152,   162,   179,   152,    55,    56,   158,   184,   185,   186,
+   187,   160,   158,    35,    36,    72,   123,   163,    25,    26,
+    51,   148,   129,    54,    55,    25,    26,   204,   205,    73,
+    74,    75,    62,    77,    78,    79,   341,   342,   343,   234,
+   125,   126,   134,   135,   161,    17,    18,   174,   175,   176,
+   177,   178,   179,   162,   146,    17,    18,   184,   185,   186,
+   187,   161,     5,     6,     7,     8,     9,    10,    11,    12,
+    45,    28,    47,    30,   201,   202,   203,   204,   205,   151,
+   237,   238,   158,    30,   241,    65,    66,    67,    68,    69,
+    70,    71,    17,    18,   158,    17,    18,   406,   490,    18,
+   492,   108,   109,   110,   111,   112,   113,   114,   115,   116,
+   117,   118,   119,   120,   121,   310,   243,    17,    18,    17,
+    18,    77,    78,   318,   319,   320,     0,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,   151,   278,    19,    20,    17,    18,   151,   325,    17,
+    18,   278,    28,   151,    30,    17,    18,    31,   151,   118,
+    34,   156,   289,   154,    18,    18,   154,    30,    42,    43,
+    44,    45,    46,    47,    48,    18,   157,   154,    30,   306,
+    30,   157,    60,   152,   379,   380,   381,   323,    21,    63,
+    21,    21,   387,   160,   152,   155,   323,   324,   325,    64,
+   154,   154,   359,   154,   399,   400,   102,   103,   104,   105,
+   106,   107,   389,   154,   391,   392,   393,   154,   310,   154,
+   397,   154,   118,   119,   120,   121,   318,   319,   320,   156,
+   154,   154,   152,   154,   152,   152,   152,   152,   152,   152,
+   152,   436,   437,   152,   152,   152,   441,    39,   443,    30,
+    30,   152,   447,   155,   160,    30,    15,   154,   453,   454,
+   455,   154,   389,   390,   391,   392,   393,   355,    15,   152,
+   397,   398,   156,   152,    30,   152,    18,   153,    39,   152,
+   156,   152,    37,   159,   154,   161,   162,   379,   380,   381,
+    18,   418,   152,   488,   489,   387,   152,   152,    30,    57,
+   495,   152,    18,   152,   152,   152,   152,   399,   400,   504,
+   152,   152,   152,   152,   152,   152,   152,   444,   152,   154,
+   497,   498,   499,   152,   156,   152,   152,   155,   152,   152,
+   152,   152,   152,   460,   521,   521,   531,   155,   155,   155,
+   155,   155,   155,    15,   436,   437,   155,    57,   158,   441,
+   155,   443,   529,   155,   549,   447,   155,   484,    39,   155,
+   487,   453,   454,   455,   158,   552,   552,   155,   155,   152,
+   497,   498,   499,    15,    15,   152,   503,    15,    15,   574,
+   575,     0,     0,   102,   579,   102,    41,   582,   232,   102,
+   256,   102,    22,   257,   102,   419,   488,   489,    48,   418,
+    27,     2,   529,   495,    39,   577,   365,   366,   367,   368,
+   369,   444,   504,   372,   373,   374,   375,   376,     3,     4,
+     5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+    15,    16,   503,   234,    19,    20,    -1,   424,    -1,   531,
+    -1,    -1,    -1,    28,    -1,    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,    -1,    -1,    -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,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+    -1,    -1,    19,    20,    -1,    -1,    -1,    -1,    -1,   508,
+   509,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   153,    -1,
+    -1,   156,    -1,    -1,   159,    -1,   161,   162,    -1,    -1,
+    -1,   540,    -1,   542,   543,     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,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    40,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+    12,    13,    14,    15,    16,    -1,   153,    19,    20,   156,
+    -1,    -1,   159,    -1,   161,   162,    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,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   153,    -1,    -1,   156,    -1,
+    -1,   159,    -1,   161,    -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,   153,    -1,    -1,   156,    -1,    -1,   159,
+    -1,   161,    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,   153,    -1,    -1,   156,    -1,   158,   159,    -1,   161,
+    -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+    12,    13,    14,    15,    16,    -1,    -1,    19,    20,   153,
+    -1,    -1,   156,    -1,    -1,   159,    28,   161,    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,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    -1,    -1,    19,    20,   153,    -1,    -1,   156,    -1,
+    -1,   159,    28,   161,    30,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   153,    -1,    -1,   156,    -1,    -1,   159,
+    -1,   161,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   153,    -1,    -1,   156,    -1,    -1,   159,    -1,   161,
+    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1,    28,
+    -1,    30,    -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,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   153,    -1,    -1,
+   156,    -1,    -1,   159,    -1,   161,    -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,    19,
+    20,    21,    22,    23,    24,    25,    26,    -1,    28,    -1,
+    30,    -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,   156,    -1,    -1,
+   159,    -1,   161,    -1,    -1,   164,    -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,    -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,
+    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   159,    -1,
+    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    60,    61,    -1,    -1,    -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
+};
+/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
+#line 3 "/usr/share/bison.simple"
+/* This file comes from bison-1.28.  */
+
+/* Skeleton output parser for bison,
+   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* This is the parser code that is written into each bison parser
+  when the %semantic_parser declaration is not specified in the grammar.
+  It was written by Richard Stallman by simplifying the hairy parser
+  used when %semantic_parser is specified.  */
+
+#ifndef YYSTACK_USE_ALLOCA
+#ifdef alloca
+#define YYSTACK_USE_ALLOCA
+#else /* alloca not defined */
+#ifdef __GNUC__
+#define YYSTACK_USE_ALLOCA
+#define alloca __builtin_alloca
+#else /* not GNU C.  */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
+#define YYSTACK_USE_ALLOCA
+#include <alloca.h>
+#else /* not sparc */
+/* We think this test detects Watcom and Microsoft C.  */
+/* This used to test MSDOS, but that is a bad idea
+   since that symbol is in the user namespace.  */
+#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
+#if 0 /* No need for malloc.h, which pollutes the namespace;
+	 instead, just don't use alloca.  */
+#include <malloc.h>
+#endif
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+/* I don't know what this was needed for, but it pollutes the namespace.
+   So I turned it off.   rms, 2 May 1997.  */
+/* #include <malloc.h>  */
+ #pragma alloca
+#define YYSTACK_USE_ALLOCA
+#else /* not MSDOS, or __TURBOC__, or _AIX */
+#if 0
+#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
+		 and on HPUX 10.  Eventually we can turn this on.  */
+#define YYSTACK_USE_ALLOCA
+#define alloca __builtin_alloca
+#endif /* __hpux */
+#endif
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc */
+#endif /* not GNU C */
+#endif /* alloca not defined */
+#endif /* YYSTACK_USE_ALLOCA not defined */
+
+#ifdef YYSTACK_USE_ALLOCA
+#define YYSTACK_ALLOC alloca
 #else
-   typedef short int yysigned_char;
+#define YYSTACK_ALLOC malloc
 #endif
 
-/* YYFINAL -- State number of the termination state. */
-#define YYFINAL  4
-/* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1486
-
-/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS  165
-/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS  75
-/* YYNRULES -- Number of rules. */
-#define YYNRULES  301
-/* YYNRULES -- Number of states. */
-#define YYNSTATES  586
-
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
-#define YYMAXUTOK   405
-
-#define YYTRANSLATE(YYX)						\
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const unsigned char yytranslate[] =
-{
-       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     154,   155,   163,     2,   152,     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,
-       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,     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,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150
-};
-
-#if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const unsigned short int yyprhs[] =
-{
-       0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
-      19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
-      39,    41,    43,    45,    47,    49,    51,    53,    55,    57,
-      59,    61,    63,    65,    67,    69,    71,    73,    75,    77,
-      79,    81,    83,    85,    87,    89,    91,    93,    95,    97,
-      99,   101,   103,   105,   107,   109,   111,   113,   115,   117,
-     119,   121,   123,   125,   127,   129,   131,   133,   135,   137,
-     139,   141,   143,   145,   147,   149,   151,   153,   155,   157,
-     159,   161,   164,   165,   167,   169,   171,   173,   175,   177,
-     179,   180,   182,   184,   186,   188,   190,   192,   195,   196,
-     197,   200,   201,   205,   208,   209,   211,   212,   216,   218,
-     221,   223,   225,   227,   229,   231,   233,   235,   237,   239,
-     241,   243,   245,   247,   249,   251,   253,   255,   257,   259,
-     261,   264,   269,   275,   281,   285,   288,   294,   299,   302,
-     304,   308,   310,   314,   316,   317,   322,   326,   330,   335,
-     340,   344,   347,   350,   353,   356,   359,   362,   365,   368,
-     371,   374,   381,   387,   396,   403,   410,   417,   425,   433,
-     440,   447,   456,   465,   469,   471,   473,   475,   477,   480,
-     483,   488,   491,   493,   495,   497,   502,   505,   510,   517,
-     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,
-     838,   843,   848,   855,   860,   865,   872,   879,   882,   890,
-     892,   895,   896,   898,   899,   903,   910,   914,   921,   924,
-     929,   936
-};
-
-/* 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,
-      -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,    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,
-      -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,    49,   224,    -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
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const unsigned short int yyrline[] =
-{
-       0,   465,   465,   465,   466,   466,   470,   470,   470,   470,
-     470,   470,   470,   471,   471,   471,   471,   472,   472,   472,
-     473,   473,   473,   473,   473,   473,   474,   474,   474,   474,
-     474,   474,   474,   474,   474,   474,   475,   475,   475,   475,
-     475,   475,   475,   475,   475,   475,   476,   476,   476,   476,
-     476,   476,   477,   477,   477,   477,   478,   478,   478,   478,
-     478,   478,   478,   479,   479,   479,   479,   479,   479,   484,
-     484,   484,   484,   485,   485,   485,   485,   486,   486,   487,
-     487,   490,   493,   498,   498,   498,   498,   498,   498,   499,
-     500,   503,   503,   503,   503,   503,   504,   505,   510,   515,
-     516,   519,   520,   528,   534,   535,   538,   539,   548,   549,
-     562,   562,   563,   563,   564,   568,   568,   568,   568,   568,
-     568,   568,   569,   569,   569,   569,   569,   571,   574,   577,
-     580,   584,   597,   603,   609,   619,   622,   632,   635,   643,
-     647,   654,   655,   660,   665,   675,   681,   686,   692,   698,
-     704,   709,   715,   721,   728,   734,   740,   746,   752,   758,
-     764,   772,   785,   797,   802,   808,   813,   819,   824,   829,
-     837,   842,   847,   857,   862,   867,   867,   877,   882,   885,
-     890,   894,   898,   900,   900,   903,   913,   918,   923,   933,
-     943,   953,   963,   968,   973,   978,   980,   980,   983,   988,
-     995,  1000,  1007,  1014,  1019,  1020,  1028,  1028,  1029,  1029,
-    1031,  1040,  1044,  1048,  1051,  1056,  1059,  1062,  1080,  1081,
-    1084,  1095,  1096,  1098,  1107,  1108,  1109,  1113,  1126,  1127,
-    1130,  1130,  1130,  1130,  1130,  1130,  1130,  1131,  1132,  1137,
-    1138,  1147,  1147,  1151,  1156,  1166,  1176,  1179,  1187,  1191,
-    1196,  1199,  1205,  1205,  1207,  1212,  1217,  1222,  1231,  1239,
-    1246,  1269,  1274,  1280,  1286,  1294,  1312,  1320,  1329,  1333,
-    1340,  1341,  1345,  1350,  1353,  1362,  1370,  1379,  1387,  1395,
-    1400,  1409,  1437,  1443,  1449,  1456,  1462,  1468,  1474,  1492,
-    1497,  1498,  1502,  1503,  1506,  1514,  1523,  1531,  1540,  1546,
-    1555,  1564
-};
-#endif
-
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-static const char *const yytname[] =
-{
-  "$end", "error", "$undefined", "VOID", "BOOL", "SBYTE", "UBYTE",
-  "SHORT", "USHORT", "INT", "UINT", "LONG", "ULONG", "FLOAT", "DOUBLE",
-  "LABEL", "OPAQUE", "ESINT64VAL", "EUINT64VAL", "SINTVAL", "UINTVAL",
-  "FPVAL", "NULL_TOK", "UNDEF", "ZEROINITIALIZER", "TRUETOK", "FALSETOK",
-  "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",
-  "TARGET", "TRIPLE", "ENDIAN", "POINTERSIZE", "LITTLE", "BIG", "ALIGN",
-  "UNINITIALIZED", "DEPLIBS", "CALL", "TAIL", "ASM_TOK", "MODULE",
-  "SIDEEFFECT", "CC_TOK", "CCC_TOK", "CSRETCC_TOK", "FASTCC_TOK",
-  "COLDCC_TOK", "X86_STDCALLCC_TOK", "X86_FASTCALLCC_TOK", "DATALAYOUT",
-  "RET", "BR", "SWITCH", "INVOKE", "EXCEPT", "UNWIND", "UNREACHABLE",
-  "ADD", "SUB", "MUL", "DIV", "UDIV", "SDIV", "FDIV", "REM", "UREM",
-  "SREM", "FREM", "AND", "OR", "XOR", "SETLE", "SETGE", "SETLT", "SETGT",
-  "SETEQ", "SETNE", "ICMP", "FCMP", "EQ", "NE", "SLT", "SGT", "SLE", "SGE",
-  "OEQ", "ONE", "OLT", "OGT", "OLE", "OGE", "ORD", "UNO", "UEQ", "UNE",
-  "ULT", "UGT", "ULE", "UGE", "MALLOC", "ALLOCA", "FREE", "LOAD", "STORE",
-  "GETELEMENTPTR", "PHI_TOK", "SELECT", "SHL", "SHR", "ASHR", "LSHR",
-  "VAARG", "EXTRACTELEMENT", "INSERTELEMENT", "SHUFFLEVECTOR", "CAST",
-  "TRUNC", "ZEXT", "SEXT", "FPTRUNC", "FPEXT", "FPTOUI", "FPTOSI",
-  "UITOFP", "SITOFP", "PTRTOINT", "INTTOPTR", "BITCAST", "'='", "','",
-  "'\\\\'", "'('", "')'", "'['", "'x'", "']'", "'<'", "'>'", "'{'", "'}'",
-  "'*'", "'c'", "$accept", "IntVal", "EInt64Val", "ArithmeticOps",
-  "LogicalOps", "SetCondOps", "IPredicates", "FPredicates", "ShiftOps",
-  "CastOps", "SIntType", "UIntType", "IntType", "FPType", "OptAssign",
-  "OptLinkage", "OptCallingConv", "OptAlign", "OptCAlign", "SectionString",
-  "OptSection", "GlobalVarAttributes", "GlobalVarAttribute", "TypesV",
-  "UpRTypesV", "Types", "PrimType", "UpRTypes", "TypeListI",
-  "ArgTypeListI", "ConstVal", "ConstExpr", "ConstVector", "GlobalType",
-  "Module", "DefinitionList", "External", "ConstPool", "AsmBlock",
-  "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
-};
-#endif
-
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
-static const unsigned short int yytoknum[] =
-{
-       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
-     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
-     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
-     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
-     385,   386,   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
-};
-# 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,
-     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,   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.  */
-static const unsigned char yyr2[] =
-{
-       0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
-       0,     1,     1,     1,     1,     1,     1,     2,     0,     0,
-       2,     0,     3,     2,     0,     1,     0,     3,     1,     2,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     4,     5,     5,     3,     2,     5,     4,     2,     1,
-       3,     1,     3,     1,     0,     4,     3,     3,     4,     4,
-       3,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     6,     5,     8,     6,     6,     6,     7,     7,     6,
-       6,     8,     8,     3,     1,     1,     1,     1,     2,     2,
-       4,     2,     1,     1,     1,     4,     2,     4,     6,     6,
-       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,     2,
-       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
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   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,
-     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,   293,   261,   248,   249,     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,   292,
-       0,   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,   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,   230,
-     231,   232,   235,   236,   237,   233,   234,   228,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   239,   244,   243,   245,     0,   256,     0,   279,   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,   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,   229,     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,     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,   238,     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,   271,
-       0,     0,   101,   102,   101,   268,   290,     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,   295,
-     297,     0,     0,     0,   282,   285,   286,     0,   300,   100,
-       0,     0,     0,   170,     0,     0,   164,   165,   166,   169,
-     161,     0,   259,     0,     0,     0,   269,   266,     0,   288,
-     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
-};
-
-/* YYDEFGOTO[NTERM-NUM]. */
-static const short int yydefgoto[] =
-{
-      -1,    83,   337,   266,   267,   268,   291,   308,   269,   270,
-     233,   234,   148,   235,    24,    15,    38,   508,   385,   407,
-     472,   331,   408,    84,    85,   236,    87,    88,   129,   248,
-     372,   271,   373,   118,     1,     2,    57,     3,    61,   215,
-      48,   113,   219,    89,   419,   358,   359,   360,    39,    93,
-      16,    96,    17,    29,    18,   364,   272,    90,   274,   495,
-      41,    42,    43,   105,   106,   554,   107,   314,   524,   525,
-     208,   209,   447,   210,   211
-};
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -513
-static const short int yypact[] =
-{
-    -513,    46,   217,   541,  -513,  -513,    82,  -513,  -513,  -513,
-    -513,  -513,  -513,  -513,    16,   111,    25,  -513,  -513,  -513,
-    -513,    34,   -55,    61,    26,   -23,  -513,  -513,  -513,   111,
-     132,   146,  -513,  -513,  -513,  -513,  -513,  -513,   873,   -26,
-    -513,   -18,  -513,    47,    19,    23,    39,    67,  -513,    77,
-     132,   873,    81,    81,  -513,  -513,    81,    81,  -513,  -513,
-    -513,  -513,  -513,    89,  -513,  -513,  -513,  -513,  -513,  -513,
-    -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,   227,
-     229,    -9,   506,  -513,   133,    95,  -513,  -513,  -111,  -513,
-    -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,   901,    36,
-     148,  -513,  -513,  -513,  1336,  -513,  -513,  -513,   222,    76,
-     250,   239,   241,  -513,  -513,  -513,  -513,  -513,   933,   933,
-     963,   933,  -513,   115,   116,   614,  -513,  -513,  -111,  -104,
-     120,   216,  -513,    89,  1134,  -513,  1134,  1134,  -513,  -513,
-    -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,  1134,  -513,
-     933,  -513,   218,   111,  -513,  -513,  -513,  -513,  -513,  -513,
-    -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,
-    -513,  -513,  -513,  -513,   195,    84,   933,   933,   933,   933,
-     933,   933,  -513,  -513,  -513,  -513,   933,   933,   933,   933,
-    -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,
-    -513,  -513,  -513,   933,   933,   933,   933,   933,   111,  -513,
-      11,  -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,   -93,
-     129,   129,   121,   166,   169,   191,   193,   220,   223,   237,
-     240,   261,   263,   249,   249,   264,  1045,   129,   129,   933,
-     933,   126,   -73,   933,  -513,   701,  -513,   138,   136,  -513,
-    -513,  -513,  -513,  -513,  -513,  -513,  -513,   228,   195,    84,
-     140,   150,   154,   156,   158,   963,   167,   168,   170,   171,
-     172,  -513,  -513,  -513,  -513,   175,  -513,   176,  -513,  -513,
-     873,  -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,
-    -513,   933,  -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,
-    -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,   933,   177,
-     178,  -513,  1134,   164,   179,   182,   183,   184,   186,   188,
-    1134,  1134,  1134,   189,   284,   873,   933,   933,   312,  -513,
-      -8,  -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,  -513,
-    -513,  -513,  -513,   741,   963,   673,   314,  -513,  -513,  -513,
-    -513,  -113,   -99,  -513,   185,  -111,  -513,   133,  -513,   194,
-     192,   774,  -513,  -513,   318,   198,   205,   963,   963,   963,
-     963,   963,  -513,   -58,   963,   963,   963,   963,   963,   345,
-     348,  1134,  1134,  1134,    -2,  -513,     9,  -513,   212,  1134,
-     209,   933,   933,   933,   933,   933,   214,   215,   219,   933,
-     933,  1134,  1134,   221,  -513,   338,   352,  -513,   129,  -513,
-     -61,   -57,  -513,   -70,  -513,  -513,  -513,  -513,  -513,  -513,
-     833,   337,  -513,   224,   963,   963,   212,   231,   235,   236,
-     238,   963,  -513,   242,   243,   244,   245,   342,  1134,  1134,
-     247,   251,   252,  1134,   371,  1134,   933,  -513,   253,  1134,
-     254,  -513,  -513,   255,   257,  1134,  1134,  1134,  -513,  -513,
-     248,  -513,   933,  -513,  -513,  -513,  -513,  -513,  -513,  -513,
-    -513,  -513,   335,   363,   258,   262,   260,   963,   963,   963,
-     963,  -513,   963,   963,   963,   963,   933,   265,   266,   933,
-    1134,  1134,   267,  -513,   267,  -513,   268,  1134,   269,   933,
-     933,   933,  -513,  -513,  -513,   933,  1134,   398,  -513,  -513,
-     963,   963,  -513,   271,   273,   277,   278,   276,   279,   282,
-     283,   286,   403,    15,   268,   289,  -513,  -513,   375,  -513,
-    -513,   933,   275,  1134,  -513,  -513,  -513,   292,  -513,  -513,
-     294,   295,   963,  -513,   963,   963,  -513,  -513,  -513,  -513,
-    -513,  1134,  -513,  1223,    27,   400,  -513,  -513,   297,  -513,
-    -513,  -513,   303,   304,   305,  -513,   313,  -513,  1223,   449,
-    -513,  -513,  -513,  -513,   451,   316,  1134,  1134,   454,   135,
-    -513,  1134,   457,  -513,  1134,  -513
-};
-
-/* YYPGOTO[NTERM-NUM].  */
-static const short int yypgoto[] =
-{
-    -513,  -513,   246,   369,   370,   372,   225,   226,   373,   377,
-     -98,   -97,  -507,  -513,   436,   458,  -141,  -513,  -303,    63,
-    -513,  -220,  -513,   -46,  -513,   -38,  -513,   -68,   -20,  -513,
-     130,   256,  -230,    51,  -513,  -513,  -513,  -513,   439,  -513,
-    -513,  -513,  -513,     1,  -513,    66,  -513,  -513,   461,  -513,
-    -513,  -513,  -513,  -513,   488,  -513,  -512,  -106,    -3,   -88,
-    -513,   455,  -513,   -84,  -513,  -513,  -513,  -513,    56,    18,
-    -513,  -513,    98,  -513,  -513
-};
-
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -178
-static const short int yytable[] =
-{
-      86,   332,   146,   147,    25,   115,    91,   387,   443,   124,
-     135,    40,   280,    86,   128,    94,   553,   349,   350,   445,
-     138,   139,   140,   141,   142,   143,   144,   145,   273,   405,
-     273,   273,   138,   139,   140,   141,   142,   143,   144,   145,
-     136,   566,   273,  -112,    25,   415,     4,   568,   243,   406,
-     132,   137,   132,    51,    40,   444,   575,   128,   244,   328,
-     134,   416,   278,   128,   132,   329,   444,   325,     7,     8,
-       9,    52,    11,    53,    13,    19,    54,    20,    30,   243,
-     220,   221,   431,   238,    55,   130,    44,    45,    46,   354,
-     311,   431,   468,   315,   431,   431,    49,   466,   316,   317,
-     318,   319,   432,   467,   119,   242,    47,   120,   121,   292,
-     293,   247,   134,   410,   411,   413,   116,   117,   323,   324,
-      98,    99,   100,    50,   101,   102,   103,    27,    58,    28,
-     348,   213,   214,   275,   276,    92,   326,   327,   309,   310,
-     134,   312,   313,   134,    95,   277,   333,   334,   134,   134,
-     134,   134,   125,   138,   139,   140,   141,   142,   143,   144,
-     145,    19,    60,    20,    62,   320,   321,   322,   134,   134,
-     108,   351,   352,   552,   109,   355,    31,    32,    33,    34,
-      35,    36,    37,   -72,   -72,   567,   -76,   -76,   465,   529,
-     110,   530,   294,   295,   296,   297,   298,   299,   300,   301,
-     302,   303,   304,   305,   306,   307,   273,   357,   -71,   -71,
-     -75,   -75,   101,   102,   273,   273,   273,  -177,   111,   126,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,   112,   381,    77,    78,   -70,   -70,   403,
-     -74,   -74,    86,  -113,    19,   122,    20,   123,     5,   131,
-     237,     6,   212,   382,   -69,   -69,   246,   -73,   -73,     7,
-       8,     9,    10,    11,    12,    13,   335,   336,   216,   217,
-     383,   218,   239,   240,   245,   273,   273,   273,   279,   401,
-      14,   330,   -79,   273,   -80,   339,   353,    86,   402,   134,
-     361,   362,   363,   355,   367,   273,   273,   281,   282,   283,
-     284,   285,   286,   450,   368,   452,   453,   454,   369,   388,
-     370,   458,   371,   287,   288,   289,   290,   396,   397,   398,
-     389,   374,   375,   400,   376,   377,   378,   379,   380,   384,
-     386,   390,   273,   273,   391,   392,   393,   273,   394,   273,
-     395,   399,   404,   273,   414,   417,   420,   421,   423,   273,
-     273,   273,   424,   134,   451,   134,   134,   134,   418,   425,
-     438,   134,   459,   439,   446,   449,   455,   456,   463,    79,
-     464,   457,    80,   462,   405,    81,   473,    82,   440,   441,
-     442,   486,   357,   477,   273,   273,   448,   478,   479,   493,
-     480,   273,   507,   509,   482,   483,   484,   485,   460,   461,
-     273,   489,   505,   490,   491,   497,   499,   500,   134,   501,
-     510,   534,   535,   536,   511,   512,   539,   522,   551,   528,
-     531,   533,   523,   542,   506,   146,   147,   273,   543,   544,
-     545,   546,   444,   557,   547,   487,   488,   548,   549,   569,
-     492,   550,   494,   556,   555,   273,   498,   559,   521,   560,
-     561,   134,   502,   503,   504,   570,   146,   147,   571,   572,
-     573,   134,   134,   134,   576,   574,   577,   134,   578,   581,
-     273,   273,   584,   203,   204,   273,   205,   206,   273,   104,
-     338,   207,    56,   365,   471,   366,   470,   526,   527,   114,
-      59,    26,   347,   134,   532,   582,    97,   426,   427,   428,
-     429,   430,   496,   538,   433,   434,   435,   436,   437,   126,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,   537,   476,    77,    78,     0,     0,     0,
-     558,     0,     0,     0,    19,     0,    20,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   565,     0,
-       0,     0,     0,     0,   474,   475,     0,     0,     0,     0,
-       0,   481,     0,     0,     0,     0,     0,     0,   -82,    19,
-       0,    20,     0,   579,   580,     6,   -82,   -82,   583,     0,
-       0,   585,     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,   513,   514,   515,
-     516,     0,   517,   518,   519,   520,     0,   126,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,     0,     0,    77,    78,     0,     0,     0,     0,     0,
-     540,   541,    19,     0,    20,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    79,
-       0,     0,    80,     0,     0,    81,     0,    82,   127,     0,
-       0,     0,   562,     0,   563,   564,   126,   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,   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,   356,     0,     0,   126,   222,   223,   224,   225,   226,
-     227,   228,   229,   230,   231,   232,    75,    76,     0,     0,
-      77,    78,     0,     0,     0,     0,     0,    79,     0,    19,
-      80,    20,     0,    81,     0,    82,   241,   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,   422,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    79,     0,     0,    80,
-       0,     0,    81,     0,    82,   412,   126,    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,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   469,     0,     0,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-       0,     0,    77,    78,    79,     0,     0,    80,     0,   409,
-      81,    19,    82,    20,   133,    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,   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,   126,   222,   223,   224,
-     225,   226,   227,   228,   229,   230,   231,   232,    75,    76,
-       0,     0,    77,    78,     0,     0,    79,     0,     0,    80,
-       0,    19,    81,    20,    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,
-       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,    79,     0,     0,    80,     0,     0,
-      81,     0,    82,     0,    77,    78,     0,   340,   341,   342,
-       0,     0,     0,    19,     0,    20,     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,    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,   249,   250,    77,    78,   251,   252,   253,   254,   255,
-     256,     0,    19,     0,    20,     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,   343,     0,     0,   344,     0,   345,     0,     0,   346,
-       0,     0,     0,     0,   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,
-     249,   250,     0,     0,   251,   252,   253,   254,   255,   256,
-       0,     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,   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,     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,   149,     0,     0,     0,     0,     0,
-       0,     0,   265,     0,     0,   150,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   151,   152,     0,     0,
-       0,     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,   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,   221,   100,   100,     3,    51,    32,   310,    10,    18,
-      98,    29,   153,    51,    82,    33,   523,   237,   238,    10,
-       5,     6,     7,     8,     9,    10,    11,    12,   134,    37,
-     136,   137,     5,     6,     7,     8,     9,    10,    11,    12,
-       4,   553,   148,   154,    43,   158,     0,   554,   152,    57,
-     163,    15,   163,    27,    29,    57,   568,   125,   162,   152,
-      98,   160,   150,   131,   163,   158,    57,   208,    42,    43,
-      44,    45,    46,    47,    48,    28,    50,    30,    62,   152,
-     118,   119,   152,   121,    58,    84,    52,    53,    54,   162,
-     178,   152,   162,   181,   152,   152,   151,   158,   186,   187,
-     188,   189,   160,   160,    53,   125,    72,    56,    57,    25,
-      26,   131,   150,   343,   344,   345,    35,    36,   206,   207,
-      73,    74,    75,    62,    77,    78,    79,    45,   151,    47,
-     236,    55,    56,   136,   137,   161,   125,   126,   176,   177,
-     178,   179,   180,   181,   162,   148,    25,    26,   186,   187,
-     188,   189,   161,     5,     6,     7,     8,     9,    10,    11,
-      12,    28,    30,    30,    18,   203,   204,   205,   206,   207,
-     151,   239,   240,   158,   151,   243,    65,    66,    67,    68,
-      69,    70,    71,    17,    18,   158,    17,    18,   408,   492,
-     151,   494,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   312,   245,    17,    18,
-      17,    18,    77,    78,   320,   321,   322,     0,   151,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,   156,   280,    19,    20,    17,    18,   327,
-      17,    18,   280,   154,    28,    18,    30,    18,    31,   154,
-     120,    34,    30,   291,    17,    18,    40,    17,    18,    42,
-      43,    44,    45,    46,    47,    48,    17,    18,    18,    30,
-     308,    30,   157,   157,   154,   381,   382,   383,    60,   325,
-      63,   152,    21,   389,    21,    21,   160,   325,   326,   327,
-     152,   155,    64,   361,   154,   401,   402,   102,   103,   104,
-     105,   106,   107,   391,   154,   393,   394,   395,   154,   312,
-     154,   399,   154,   118,   119,   120,   121,   320,   321,   322,
-     156,   154,   154,    39,   154,   154,   154,   152,   152,   152,
-     152,   152,   438,   439,   152,   152,   152,   443,   152,   445,
-     152,   152,    30,   449,    30,   160,   152,   155,    30,   455,
-     456,   457,   154,   391,   392,   393,   394,   395,   357,   154,
-      15,   399,   400,    15,   152,   156,   152,   152,    30,   153,
-      18,   152,   156,   152,    37,   159,   152,   161,   381,   382,
-     383,    39,   420,   152,   490,   491,   389,   152,   152,    18,
-     152,   497,    57,    30,   152,   152,   152,   152,   401,   402,
-     506,   154,   154,   152,   152,   152,   152,   152,   446,   152,
-     152,   499,   500,   501,   152,   155,    18,   152,    15,   152,
-     152,   152,   156,   152,   462,   523,   523,   533,   155,   152,
-     152,   155,    57,   158,   155,   438,   439,   155,   155,    39,
-     443,   155,   445,   531,   155,   551,   449,   155,   486,   155,
-     155,   489,   455,   456,   457,   158,   554,   554,   155,   155,
-     155,   499,   500,   501,    15,   152,    15,   505,   152,    15,
-     576,   577,    15,   104,   104,   581,   104,   104,   584,    43,
-     234,   104,    24,   258,   421,   259,   420,   490,   491,    50,
-      29,     3,   236,   531,   497,   579,    41,   367,   368,   369,
-     370,   371,   446,   506,   374,   375,   376,   377,   378,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,   505,   426,    19,    20,    -1,    -1,    -1,
-     533,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   551,    -1,
-      -1,    -1,    -1,    -1,   424,   425,    -1,    -1,    -1,    -1,
-      -1,   431,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,
-      -1,    30,    -1,   576,   577,    34,    35,    36,   581,    -1,
-      -1,   584,    -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,   477,   478,   479,
-     480,    -1,   482,   483,   484,   485,    -1,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    -1,    -1,    19,    20,    -1,    -1,    -1,    -1,    -1,
-     510,   511,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   153,
-      -1,    -1,   156,    -1,    -1,   159,    -1,   161,   162,    -1,
-      -1,    -1,   542,    -1,   544,   545,     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,     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,     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,     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,    -1,    -1,    -1,    -1,    -1,   153,    -1,    -1,   156,
-      -1,    -1,   159,    -1,   161,   162,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      -1,    -1,    19,    20,   153,    -1,    -1,   156,    -1,    -1,
-     159,    28,   161,    30,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    40,    -1,    -1,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      -1,    -1,    19,    20,   153,    -1,    -1,   156,    -1,   158,
-     159,    28,   161,    30,     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,     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,   153,    -1,    -1,   156,
-      -1,    28,   159,    30,   161,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   153,    -1,    -1,   156,
-      -1,    -1,   159,    -1,   161,    -1,    -1,    -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,    19,    20,    -1,    22,    23,    24,
-      -1,    -1,    -1,    28,    -1,    30,    -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,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   153,    -1,    -1,   156,
-      -1,    -1,   159,    -1,   161,    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,    19,    20,    21,    22,    23,    24,    25,
-      26,    -1,    28,    -1,    30,    -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,   156,    -1,    -1,   159,    -1,   161,    -1,    -1,   164,
-      -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,    -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,    38,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   159,    -1,    -1,    49,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,
-      -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
-};
-
-/* 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,
-      49,    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,   224,    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
-};
+/* Note: there must be only one dollar sign in this file.
+   It is replaced by the list of actions, each action
+   as one case of the switch.  */
 
 #define yyerrok		(yyerrstatus = 0)
 #define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		(-2)
+#define YYEMPTY		-2
 #define YYEOF		0
-
 #define YYACCEPT	goto yyacceptlab
-#define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrorlab
-
-
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
+#define YYABORT 	goto yyabortlab
+#define YYERROR		goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+   This remains here temporarily to ease the
+   transition to the new meaning of YYERROR, for GCC.
    Once GCC version 2 has supplanted version 1, this can go.  */
-
 #define YYFAIL		goto yyerrlab
-
 #define YYRECOVERING()  (!!yyerrstatus)
-
-#define YYBACKUP(Token, Value)					\
+#define YYBACKUP(token, value) \
 do								\
   if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
+    { yychar = (token), yylval = (value);			\
+      yychar1 = YYTRANSLATE (yychar);				\
       YYPOPSTACK;						\
       goto yybackup;						\
     }								\
   else								\
-    {								\
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;							\
-    }								\
+    { yyerror ("syntax error: cannot back up"); YYERROR; }	\
 while (0)
 
-
 #define YYTERROR	1
 #define YYERRCODE	256
 
-
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (N)								\
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (0)
+#ifndef YYPURE
+#define YYLEX		yylex()
 #endif
 
-
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)			\
-     fprintf (File, "%d.%d-%d.%d",			\
-              (Loc).first_line, (Loc).first_column,	\
-              (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif
-
-
-/* YYLEX -- calling `yylex' with the right arguments.  */
-
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
 #ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
+#define YYLEX		yylex(&yylval, &yylloc, YYLEX_PARAM)
 #else
-# define YYLEX yylex ()
+#define YYLEX		yylex(&yylval, &yylloc)
+#endif
+#else /* not YYLSP_NEEDED */
+#ifdef YYLEX_PARAM
+#define YYLEX		yylex(&yylval, YYLEX_PARAM)
+#else
+#define YYLEX		yylex(&yylval)
+#endif
+#endif /* not YYLSP_NEEDED */
 #endif
 
-/* Enable debugging if requested.  */
-#if YYDEBUG
+/* If nonreentrant, generate the variables here */
 
-# ifndef YYFPRINTF
-#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYFPRINTF fprintf
-# endif
+#ifndef YYPURE
 
-# define YYDPRINTF(Args)			\
-do {						\
-  if (yydebug)					\
-    YYFPRINTF Args;				\
-} while (0)
+int	yychar;			/*  the lookahead symbol		*/
+YYSTYPE	yylval;			/*  the semantic value of the		*/
+				/*  lookahead symbol			*/
 
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
-do {								\
-  if (yydebug)							\
-    {								\
-      YYFPRINTF (stderr, "%s ", Title);				\
-      yysymprint (stderr,					\
-                  Type, Value);	\
-      YYFPRINTF (stderr, "\n");					\
-    }								\
-} while (0)
-
-/*------------------------------------------------------------------.
-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (included).                                                   |
-`------------------------------------------------------------------*/
-
-#if defined (__STDC__) || defined (__cplusplus)
-static void
-yy_stack_print (short int *bottom, short int *top)
-#else
-static void
-yy_stack_print (bottom, top)
-    short int *bottom;
-    short int *top;
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc;			/*  location data for the lookahead	*/
+				/*  symbol				*/
 #endif
-{
-  YYFPRINTF (stderr, "Stack now");
-  for (/* Nothing. */; bottom <= top; ++bottom)
-    YYFPRINTF (stderr, " %d", *bottom);
-  YYFPRINTF (stderr, "\n");
-}
 
-# define YY_STACK_PRINT(Bottom, Top)				\
-do {								\
-  if (yydebug)							\
-    yy_stack_print ((Bottom), (Top));				\
-} while (0)
+int yynerrs;			/*  number of parse errors so far       */
+#endif  /* not YYPURE */
 
-
-/*------------------------------------------------.
-| Report that the YYRULE is going to be reduced.  |
-`------------------------------------------------*/
-
-#if defined (__STDC__) || defined (__cplusplus)
-static void
-yy_reduce_print (int yyrule)
-#else
-static void
-yy_reduce_print (yyrule)
-    int yyrule;
+#if YYDEBUG != 0
+int yydebug;			/*  nonzero means print parse trace	*/
+/* Since this is uninitialized, it does not stop multiple parsers
+   from coexisting.  */
 #endif
-{
-  int yyi;
-  unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
-             yyrule - 1, yylno);
-  /* Print the symbols being reduced, and their result.  */
-  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
-    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
-  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
-}
 
-# define YY_REDUCE_PRINT(Rule)		\
-do {					\
-  if (yydebug)				\
-    yy_reduce_print (Rule);		\
-} while (0)
+/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/
 
-/* Nonzero means print parse trace.  It is left uninitialized so that
-   multiple parsers can coexist.  */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-# define YY_STACK_PRINT(Bottom, Top)
-# define YY_REDUCE_PRINT(Rule)
-#endif /* !YYDEBUG */
-
-
-/* YYINITDEPTH -- initial size of the parser's stacks.  */
 #ifndef	YYINITDEPTH
-# define YYINITDEPTH 200
+#define YYINITDEPTH 200
 #endif
 
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
-   if the built-in stack extension method is used).
+/*  YYMAXDEPTH is the maximum size the stacks can grow to
+    (effective only if the built-in stack extension method is used).  */
 
-   Do not make this value too large; the results are undefined if
-   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
-   evaluated with infinite-precision integer arithmetic.  */
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
 
 #ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
+#define YYMAXDEPTH 10000
 #endif
-
 
+/* Define __yy_memcpy.  Note that the size argument
+   should be passed with type unsigned int, because that is what the non-GCC
+   definitions require.  With GCC, __builtin_memcpy takes an arg
+   of type size_t, but it can handle unsigned int.  */
 
-#if YYERROR_VERBOSE
+#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
+#define __yy_memcpy(TO,FROM,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
+#else				/* not GNU C or C++ */
+#ifndef __cplusplus
 
-# ifndef yystrlen
-#  if defined (__GLIBC__) && defined (_STRING_H)
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-static YYSIZE_T
-#   if defined (__STDC__) || defined (__cplusplus)
-yystrlen (const char *yystr)
-#   else
-yystrlen (yystr)
-     const char *yystr;
-#   endif
-{
-  const char *yys = yystr;
-
-  while (*yys++ != '\0')
-    continue;
-
-  return yys - yystr - 1;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-static char *
-#   if defined (__STDC__) || defined (__cplusplus)
-yystpcpy (char *yydest, const char *yysrc)
-#   else
-yystpcpy (yydest, yysrc)
-     char *yydest;
-     const char *yysrc;
-#   endif
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
-
-  return yyd - 1;
-}
-#  endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      size_t yyn = 0;
-      char const *yyp = yystr;
-
-      for (;;)
-	switch (*++yyp)
-	  {
-	  case '\'':
-	  case ',':
-	    goto do_not_strip_quotes;
-
-	  case '\\':
-	    if (*++yyp != '\\')
-	      goto do_not_strip_quotes;
-	    /* Fall through.  */
-	  default:
-	    if (yyres)
-	      yyres[yyn] = *yyp;
-	    yyn++;
-	    break;
-
-	  case '"':
-	    if (yyres)
-	      yyres[yyn] = '\0';
-	    return yyn;
-	  }
-    do_not_strip_quotes: ;
-    }
-
-  if (! yyres)
-    return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-#endif /* YYERROR_VERBOSE */
-
-
-
-#if YYDEBUG
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-#if defined (__STDC__) || defined (__cplusplus)
+/* This is the most reliable way to avoid incompatibilities
+   in available built-in functions on various systems.  */
 static void
-yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
-#else
+__yy_memcpy (to, from, count)
+     char *to;
+     char *from;
+     unsigned int count;
+{
+  register char *f = from;
+  register char *t = to;
+  register int i = count;
+
+  while (i-- > 0)
+    *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+   in available built-in functions on various systems.  */
 static void
-yysymprint (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE *yyvaluep;
+__yy_memcpy (char *to, char *from, unsigned int count)
+{
+  register char *t = to;
+  register char *f = from;
+  register int i = count;
+
+  while (i-- > 0)
+    *t++ = *f++;
+}
+
 #endif
-{
-  /* Pacify ``unused variable'' warnings.  */
-  (void) yyvaluep;
-
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-
-
-# ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# endif
-  switch (yytype)
-    {
-      default:
-        break;
-    }
-  YYFPRINTF (yyoutput, ")");
-}
-
-#endif /* ! YYDEBUG */
-/*-----------------------------------------------.
-| Release the memory associated to this symbol.  |
-`-----------------------------------------------*/
-
-#if defined (__STDC__) || defined (__cplusplus)
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
 #endif
-{
-  /* Pacify ``unused variable'' warnings.  */
-  (void) yyvaluep;
-
-  if (!yymsg)
-    yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-  switch (yytype)
-    {
-
-      default:
-        break;
-    }
-}
 
+#line 217 "/usr/share/bison.simple"
 
-/* Prevent warnings from -Wmissing-prototypes.  */
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+   into yyparse.  The argument should have type void *.
+   It should actually point to an object.
+   Grammar actions can access the variable by casting it
+   to the proper pointer type.  */
 
 #ifdef YYPARSE_PARAM
-# if defined (__STDC__) || defined (__cplusplus)
-int yyparse (void *YYPARSE_PARAM);
-# else
-int yyparse ();
-# endif
-#else /* ! YYPARSE_PARAM */
-#if defined (__STDC__) || defined (__cplusplus)
+#ifdef __cplusplus
+#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL
+#else /* not __cplusplus */
+#define YYPARSE_PARAM_ARG YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+#endif /* not __cplusplus */
+#else /* not YYPARSE_PARAM */
+#define YYPARSE_PARAM_ARG
+#define YYPARSE_PARAM_DECL
+#endif /* not YYPARSE_PARAM */
+
+/* Prevent warning if -Wstrict-prototypes.  */
+#ifdef __GNUC__
+#ifdef YYPARSE_PARAM
+int yyparse (void *);
+#else
 int yyparse (void);
-#else
-int yyparse ();
 #endif
-#endif /* ! YYPARSE_PARAM */
+#endif
 
-
-
-/* The look-ahead symbol.  */
-int yychar;
-
-/* The semantic value of the look-ahead symbol.  */
-YYSTYPE yylval;
-
-/* Number of syntax errors so far.  */
-int yynerrs;
-
-
-
-/*----------.
-| yyparse.  |
-`----------*/
-
-#ifdef YYPARSE_PARAM
-# if defined (__STDC__) || defined (__cplusplus)
-int yyparse (void *YYPARSE_PARAM)
-# else
-int yyparse (YYPARSE_PARAM)
-  void *YYPARSE_PARAM;
-# endif
-#else /* ! YYPARSE_PARAM */
-#if defined (__STDC__) || defined (__cplusplus)
 int
-yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
+yyparse(YYPARSE_PARAM_ARG)
+     YYPARSE_PARAM_DECL
 {
-  
-  int yystate;
-  int yyn;
-  int yyresult;
-  /* Number of tokens to shift before error messages enabled.  */
-  int yyerrstatus;
-  /* Look-ahead token as an internal (translated) token number.  */
-  int yytoken = 0;
+  register int yystate;
+  register int yyn;
+  register short *yyssp;
+  register YYSTYPE *yyvsp;
+  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
+  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */
 
-  /* Three stacks and their tools:
-     `yyss': related to states,
-     `yyvs': related to semantic values,
-     `yyls': related to locations.
+  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
+  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/
 
-     Refer to the stacks thru separate pointers, to allow yyoverflow
-     to reallocate them elsewhere.  */
+  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
+  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */
 
-  /* The state stack.  */
-  short int yyssa[YYINITDEPTH];
-  short int *yyss = yyssa;
-  short int *yyssp;
+#ifdef YYLSP_NEEDED
+  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
+  YYLTYPE *yyls = yylsa;
+  YYLTYPE *yylsp;
 
-  /* The semantic value stack.  */
-  YYSTYPE yyvsa[YYINITDEPTH];
-  YYSTYPE *yyvs = yyvsa;
-  YYSTYPE *yyvsp;
-
-
-
+#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
+#else
 #define YYPOPSTACK   (yyvsp--, yyssp--)
+#endif
 
-  YYSIZE_T yystacksize = YYINITDEPTH;
+  int yystacksize = YYINITDEPTH;
+  int yyfree_stacks = 0;
 
-  /* The variables used to return semantic value and location from the
-     action routines.  */
-  YYSTYPE yyval;
+#ifdef YYPURE
+  int yychar;
+  YYSTYPE yylval;
+  int yynerrs;
+#ifdef YYLSP_NEEDED
+  YYLTYPE yylloc;
+#endif
+#endif
 
+  YYSTYPE yyval;		/*  the variable used to return		*/
+				/*  semantic values from the action	*/
+				/*  routines				*/
 
-  /* When reducing, the number of symbols on the RHS of the reduced
-     rule.  */
   int yylen;
 
-  YYDPRINTF ((stderr, "Starting parse\n"));
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Starting parse\n");
+#endif
 
   yystate = 0;
   yyerrstatus = 0;
@@ -2340,1733 +1645,1624 @@
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
 
-  yyssp = yyss;
+  yyssp = yyss - 1;
   yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+  yylsp = yyls;
+#endif
 
-  goto yysetstate;
+/* Push a new state, which is found in  yystate  .  */
+/* In all cases, when you get here, the value and location stacks
+   have just been pushed. so pushing a state here evens the stacks.  */
+yynewstate:
 
-/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
-`------------------------------------------------------------*/
- yynewstate:
-  /* In all cases, when you get here, the value and location stacks
-     have just been pushed. so pushing a state here evens the stacks.
-     */
-  yyssp++;
+  *++yyssp = yystate;
 
- yysetstate:
-  *yyssp = yystate;
-
-  if (yyss + yystacksize - 1 <= yyssp)
+  if (yyssp >= yyss + yystacksize - 1)
     {
+      /* Give user a chance to reallocate the stack */
+      /* Use copies of these so that the &'s don't force the real ones into memory. */
+      YYSTYPE *yyvs1 = yyvs;
+      short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+      YYLTYPE *yyls1 = yyls;
+#endif
+
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      int size = yyssp - yyss + 1;
 
 #ifdef yyoverflow
-      {
-	/* Give user a chance to reallocate the stack. Use copies of
-	   these so that the &'s don't force the real ones into
-	   memory.  */
-	YYSTYPE *yyvs1 = yyvs;
-	short int *yyss1 = yyss;
+      /* Each stack pointer address is followed by the size of
+	 the data in use in that stack, in bytes.  */
+#ifdef YYLSP_NEEDED
+      /* This used to be a conditional around just the two extra args,
+	 but that might be undefined if yyoverflow is a macro.  */
+      yyoverflow("parser stack overflow",
+		 &yyss1, size * sizeof (*yyssp),
+		 &yyvs1, size * sizeof (*yyvsp),
+		 &yyls1, size * sizeof (*yylsp),
+		 &yystacksize);
+#else
+      yyoverflow("parser stack overflow",
+		 &yyss1, size * sizeof (*yyssp),
+		 &yyvs1, size * sizeof (*yyvsp),
+		 &yystacksize);
+#endif
 
-
-	/* Each stack pointer address is followed by the size of the
-	   data in use in that stack, in bytes.  This used to be a
-	   conditional around just the two extra args, but that might
-	   be undefined if yyoverflow is a macro.  */
-	yyoverflow (YY_("memory exhausted"),
-		    &yyss1, yysize * sizeof (*yyssp),
-		    &yyvs1, yysize * sizeof (*yyvsp),
-
-		    &yystacksize);
-
-	yyss = yyss1;
-	yyvs = yyvs1;
-      }
+      yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+      yyls = yyls1;
+#endif
 #else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
       /* Extend the stack our own way.  */
-      if (YYMAXDEPTH <= yystacksize)
-	goto yyexhaustedlab;
+      if (yystacksize >= YYMAXDEPTH)
+	{
+	  yyerror("parser stack overflow");
+	  if (yyfree_stacks)
+	    {
+	      free (yyss);
+	      free (yyvs);
+#ifdef YYLSP_NEEDED
+	      free (yyls);
+#endif
+	    }
+	  return 2;
+	}
       yystacksize *= 2;
-      if (YYMAXDEPTH < yystacksize)
+      if (yystacksize > YYMAXDEPTH)
 	yystacksize = YYMAXDEPTH;
-
-      {
-	short int *yyss1 = yyss;
-	union yyalloc *yyptr =
-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-	if (! yyptr)
-	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss);
-	YYSTACK_RELOCATE (yyvs);
-
-#  undef YYSTACK_RELOCATE
-	if (yyss1 != yyssa)
-	  YYSTACK_FREE (yyss1);
-      }
-# endif
+#ifndef YYSTACK_USE_ALLOCA
+      yyfree_stacks = 1;
+#endif
+      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
+      __yy_memcpy ((char *)yyss, (char *)yyss1,
+		   size * (unsigned int) sizeof (*yyssp));
+      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
+      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
+		   size * (unsigned int) sizeof (*yyvsp));
+#ifdef YYLSP_NEEDED
+      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
+      __yy_memcpy ((char *)yyls, (char *)yyls1,
+		   size * (unsigned int) sizeof (*yylsp));
+#endif
 #endif /* no yyoverflow */
 
-      yyssp = yyss + yysize - 1;
-      yyvsp = yyvs + yysize - 1;
+      yyssp = yyss + size - 1;
+      yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+      yylsp = yyls + size - 1;
+#endif
 
+#if YYDEBUG != 0
+      if (yydebug)
+	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
-
-      if (yyss + yystacksize - 1 <= yyssp)
+      if (yyssp >= yyss + yystacksize - 1)
 	YYABORT;
     }
 
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Entering state %d\n", yystate);
+#endif
 
   goto yybackup;
-
-/*-----------.
-| yybackup.  |
-`-----------*/
-yybackup:
+ yybackup:
 
 /* Do appropriate processing given the current state.  */
-/* Read a look-ahead token if we need one and don't already have one.  */
+/* Read a lookahead token if we need one and don't already have one.  */
 /* yyresume: */
 
-  /* First try to decide what to do without reference to look-ahead token.  */
+  /* First try to decide what to do without reference to lookahead token.  */
 
   yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
+  if (yyn == YYFLAG)
     goto yydefault;
 
-  /* Not known => get a look-ahead token if don't already have one.  */
+  /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  /* yychar is either YYEMPTY or YYEOF
+     or a valid token in external form.  */
+
   if (yychar == YYEMPTY)
     {
-      YYDPRINTF ((stderr, "Reading a token: "));
+#if YYDEBUG != 0
+      if (yydebug)
+	fprintf(stderr, "Reading a token: ");
+#endif
       yychar = YYLEX;
     }
 
-  if (yychar <= YYEOF)
+  /* Convert token to internal form (in yychar1) for indexing tables with */
+
+  if (yychar <= 0)		/* This means end of input. */
     {
-      yychar = yytoken = YYEOF;
-      YYDPRINTF ((stderr, "Now at end of input.\n"));
+      yychar1 = 0;
+      yychar = YYEOF;		/* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+      if (yydebug)
+	fprintf(stderr, "Now at end of input.\n");
+#endif
     }
   else
     {
-      yytoken = YYTRANSLATE (yychar);
-      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+      yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+      if (yydebug)
+	{
+	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+	  /* Give the individual parser a way to print the precise meaning
+	     of a token, for further debugging info.  */
+#ifdef YYPRINT
+	  YYPRINT (stderr, yychar, yylval);
+#endif
+	  fprintf (stderr, ")\n");
+	}
+#endif
     }
 
-  /* If the proper action on seeing token YYTOKEN is to reduce or to
-     detect an error, take that action.  */
-  yyn += yytoken;
-  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+  yyn += yychar1;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
     goto yydefault;
+
   yyn = yytable[yyn];
-  if (yyn <= 0)
+
+  /* yyn is what to do for this token type in this state.
+     Negative => reduce, -yyn is rule number.
+     Positive => shift, yyn is new state.
+       New state is final state => don't bother to shift,
+       just return success.
+     0, or most negative number => error.  */
+
+  if (yyn < 0)
     {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
+      if (yyn == YYFLAG)
 	goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
+  else if (yyn == 0)
+    goto yyerrlab;
 
   if (yyn == YYFINAL)
     YYACCEPT;
 
-  /* Shift the look-ahead token.  */
-  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+  /* Shift the lookahead token.  */
+
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
+#endif
 
   /* Discard the token being shifted unless it is eof.  */
   if (yychar != YYEOF)
     yychar = YYEMPTY;
 
   *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+  *++yylsp = yylloc;
+#endif
 
-
-  /* Count tokens shifted since error; after three, turn off error
-     status.  */
-  if (yyerrstatus)
-    yyerrstatus--;
+  /* count tokens shifted since error; after three, turn off error status.  */
+  if (yyerrstatus) yyerrstatus--;
 
   yystate = yyn;
   goto yynewstate;
 
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state.  |
-`-----------------------------------------------------------*/
+/* Do the default action for the current state.  */
 yydefault:
+
   yyn = yydefact[yystate];
   if (yyn == 0)
     goto yyerrlab;
-  goto yyreduce;
 
-
-/*-----------------------------.
-| yyreduce -- Do a reduction.  |
-`-----------------------------*/
+/* Do a reduction.  yyn is the number of a rule to reduce with.  */
 yyreduce:
-  /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
+  if (yylen > 0)
+    yyval = yyvsp[1-yylen]; /* implement default value of the action */
 
-  /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
-
-     Otherwise, the following line sets YYVAL to garbage.
-     This behavior is undocumented and Bison
-     users should not rely upon it.  Assigning to YYVAL
-     unconditionally makes the parser a bit smaller, and it avoids a
-     GCC warning that YYVAL may be used uninitialized.  */
-  yyval = yyvsp[1-yylen];
-
-
-  YY_REDUCE_PRINT (yyn);
-  switch (yyn)
+#if YYDEBUG != 0
+  if (yydebug)
     {
-        case 81:
-#line 490 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.String) = (yyvsp[-1].String);
-  ;}
-    break;
+      int i;
 
-  case 82:
-#line 493 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.String) = new std::string(""); 
-  ;}
-    break;
+      fprintf (stderr, "Reducing via rule %d (line %d), ",
+	       yyn, yyrline[yyn]);
 
-  case 90:
-#line 500 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string(""); ;}
-    break;
+      /* Print the symbols being reduced, and their result.  */
+      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+	fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+    }
+#endif
 
-  case 97:
-#line 505 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { 
-    *(yyvsp[-1].String) += *(yyvsp[0].String); 
-    delete (yyvsp[0].String);
-    (yyval.String) = (yyvsp[-1].String); 
-    ;}
-    break;
 
-  case 98:
-#line 510 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string(""); ;}
-    break;
+  switch (yyn) {
 
-  case 99:
-#line 515 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string(); ;}
-    break;
-
-  case 100:
-#line 516 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { *(yyvsp[-1].String) += " " + *(yyvsp[0].String); delete (yyvsp[0].String); (yyval.String) = (yyvsp[-1].String); ;}
-    break;
-
-  case 101:
-#line 519 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string(); ;}
-    break;
-
-  case 102:
-#line 520 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { 
-    (yyvsp[-1].String)->insert(0, ", "); 
-    *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-    (yyval.String) = (yyvsp[-1].String);
-  ;}
-    break;
-
-  case 103:
-#line 528 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { 
-    *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-    (yyval.String) = (yyvsp[-1].String);
-  ;}
-    break;
-
-  case 104:
-#line 534 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string(); ;}
-    break;
-
-  case 106:
-#line 538 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string(); ;}
-    break;
-
-  case 107:
-#line 539 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-      (yyvsp[-1].String)->insert(0, ", ");
-      if (!(yyvsp[0].String)->empty())
-        *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
-      delete (yyvsp[0].String);
-      (yyval.String) = (yyvsp[-1].String);
-    ;}
-    break;
-
-  case 109:
-#line 549 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-      *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
-      delete (yyvsp[0].String);
-      (yyval.String) = (yyvsp[-1].String);
-    ;}
-    break;
-
-  case 127:
-#line 571 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { 
-    (yyval.Type) = new TypeInfo((yyvsp[0].String), OpaqueTy);
-  ;}
-    break;
-
-  case 128:
-#line 574 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { 
-    (yyval.Type) = new TypeInfo((yyvsp[0].String), UnresolvedTy);
-  ;}
-    break;
-
-  case 129:
-#line 577 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { 
-    (yyval.Type) = (yyvsp[0].Type); 
-  ;}
-    break;
-
-  case 130:
-#line 580 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {                   // Type UpReference
-    (yyvsp[0].String)->insert(0, "\\");
-    (yyval.Type) = new TypeInfo((yyvsp[0].String), UpRefTy);
-  ;}
-    break;
-
-  case 131:
-#line 584 "/proj/llvm/llvm-3/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) {
+case 80:
+#line 491 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.String = yyvsp[-1].String;
+  ;
+    break;}
+case 81:
+#line 494 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.String = new std::string(""); 
+  ;
+    break;}
+case 89:
+#line 501 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string(""); ;
+    break;}
+case 96:
+#line 506 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ 
+    *yyvsp[-1].String += *yyvsp[0].String; 
+    delete yyvsp[0].String;
+    yyval.String = yyvsp[-1].String; 
+    ;
+    break;}
+case 97:
+#line 511 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string(""); ;
+    break;}
+case 98:
+#line 516 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string(); ;
+    break;}
+case 99:
+#line 517 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ *yyvsp[-1].String += " " + *yyvsp[0].String; delete yyvsp[0].String; yyval.String = yyvsp[-1].String; ;
+    break;}
+case 100:
+#line 520 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string(); ;
+    break;}
+case 101:
+#line 521 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ 
+    yyvsp[-1].String->insert(0, ", "); 
+    *yyvsp[-1].String += " " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+    yyval.String = yyvsp[-1].String;
+  ;
+    break;}
+case 102:
+#line 529 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ 
+    *yyvsp[-1].String += " " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+    yyval.String = yyvsp[-1].String;
+  ;
+    break;}
+case 103:
+#line 535 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string(); ;
+    break;}
+case 105:
+#line 539 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string(); ;
+    break;}
+case 106:
+#line 540 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+      yyvsp[-1].String->insert(0, ", ");
+      if (!yyvsp[0].String->empty())
+        *yyvsp[-1].String += " " + *yyvsp[0].String;
+      delete yyvsp[0].String;
+      yyval.String = yyvsp[-1].String;
+    ;
+    break;}
+case 108:
+#line 550 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+      *yyvsp[-1].String += " " + *yyvsp[0].String;
+      delete yyvsp[0].String;
+      yyval.String = yyvsp[-1].String;
+    ;
+    break;}
+case 126:
+#line 572 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ 
+    yyval.Type = new TypeInfo(yyvsp[0].String, OpaqueTy);
+  ;
+    break;}
+case 127:
+#line 575 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ 
+    yyval.Type = new TypeInfo(yyvsp[0].String, UnresolvedTy);
+  ;
+    break;}
+case 128:
+#line 578 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ 
+    yyval.Type = yyvsp[0].Type; 
+  ;
+    break;}
+case 129:
+#line 581 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{                   // Type UpReference
+    yyvsp[0].String->insert(0, "\\");
+    yyval.Type = new TypeInfo(yyvsp[0].String, UpRefTy);
+  ;
+    break;}
+case 130:
+#line 585 "/Volumes/ProjectsDisk/cvs/llvm/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) {
       if (i != 0)
         newTy +=  ", ";
-      if ((*(yyvsp[-1].TypeVec))[i]->isVoid())
+      if ((*yyvsp[-1].TypeVec)[i]->isVoid())
         newTy += "...";
       else
-        newTy += (*(yyvsp[-1].TypeVec))[i]->getNewTy();
+        newTy += (*yyvsp[-1].TypeVec)[i]->getNewTy();
     }
     newTy += ")";
-    (yyval.Type) = new TypeInfo(new std::string(newTy), (yyvsp[-3].Type), (yyvsp[-1].TypeVec));
-  ;}
-    break;
-
-  case 132:
-#line 597 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {          // Sized array type?
-    (yyvsp[-3].String)->insert(0,"[ ");
-    *(yyvsp[-3].String) += " x " + (yyvsp[-1].Type)->getNewTy() + " ]";
-    uint64_t elems = atoi((yyvsp[-3].String)->c_str());
-    (yyval.Type) = new TypeInfo((yyvsp[-3].String), ArrayTy, (yyvsp[-1].Type), elems);
-  ;}
-    break;
-
-  case 133:
-#line 603 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {          // Packed array type?
-    (yyvsp[-3].String)->insert(0,"< ");
-    *(yyvsp[-3].String) += " x " + (yyvsp[-1].Type)->getNewTy() + " >";
-    uint64_t elems = atoi((yyvsp[-3].String)->c_str());
-    (yyval.Type) = new TypeInfo((yyvsp[-3].String), PackedTy, (yyvsp[-1].Type), elems);
-  ;}
-    break;
-
-  case 134:
-#line 609 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {                        // Structure type?
+    yyval.Type = new TypeInfo(new std::string(newTy), yyvsp[-3].Type, yyvsp[-1].TypeVec);
+  ;
+    break;}
+case 131:
+#line 598 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{          // Sized array type?
+    yyvsp[-3].String->insert(0,"[ ");
+    *yyvsp[-3].String += " x " + yyvsp[-1].Type->getNewTy() + " ]";
+    uint64_t elems = atoi(yyvsp[-3].String->c_str());
+    yyval.Type = new TypeInfo(yyvsp[-3].String, ArrayTy, yyvsp[-1].Type, elems);
+  ;
+    break;}
+case 132:
+#line 604 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{          // Packed array type?
+    yyvsp[-3].String->insert(0,"< ");
+    *yyvsp[-3].String += " x " + yyvsp[-1].Type->getNewTy() + " >";
+    uint64_t elems = atoi(yyvsp[-3].String->c_str());
+    yyval.Type = new TypeInfo(yyvsp[-3].String, PackedTy, yyvsp[-1].Type, elems);
+  ;
+    break;}
+case 133:
+#line 610 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{                        // Structure type?
     std::string newTy("{");
-    for (unsigned i = 0; i < (yyvsp[-1].TypeVec)->size(); ++i) {
+    for (unsigned i = 0; i < yyvsp[-1].TypeVec->size(); ++i) {
       if (i != 0)
         newTy +=  ", ";
-      newTy += (*(yyvsp[-1].TypeVec))[i]->getNewTy();
+      newTy += (*yyvsp[-1].TypeVec)[i]->getNewTy();
     }
     newTy += "}";
-    (yyval.Type) = new TypeInfo(new std::string(newTy), StructTy, (yyvsp[-1].TypeVec));
-  ;}
-    break;
-
-  case 135:
-#line 619 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {                                  // Empty structure type?
-    (yyval.Type) = new TypeInfo(new std::string("{}"), StructTy, new TypeList());
-  ;}
-    break;
-
-  case 136:
-#line 622 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {                // Packed Structure type?
+    yyval.Type = new TypeInfo(new std::string(newTy), StructTy, yyvsp[-1].TypeVec);
+  ;
+    break;}
+case 134:
+#line 620 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{                                  // Empty structure type?
+    yyval.Type = new TypeInfo(new std::string("{}"), StructTy, new TypeList());
+  ;
+    break;}
+case 135:
+#line 623 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{                // Packed Structure type?
     std::string newTy("<{");
-    for (unsigned i = 0; i < (yyvsp[-2].TypeVec)->size(); ++i) {
+    for (unsigned i = 0; i < yyvsp[-2].TypeVec->size(); ++i) {
       if (i != 0)
         newTy +=  ", ";
-      newTy += (*(yyvsp[-2].TypeVec))[i]->getNewTy();
+      newTy += (*yyvsp[-2].TypeVec)[i]->getNewTy();
     }
     newTy += "}>";
-    (yyval.Type) = new TypeInfo(new std::string(newTy), PackedStructTy, (yyvsp[-2].TypeVec));
-  ;}
-    break;
-
-  case 137:
-#line 632 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {                          // Empty packed structure type?
-    (yyval.Type) = new TypeInfo(new std::string("<{}>"), PackedStructTy, new TypeList());
-  ;}
-    break;
-
-  case 138:
-#line 635 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {                             // Pointer type?
-    (yyval.Type) = (yyvsp[-1].Type)->getPointerType();
-  ;}
-    break;
-
-  case 139:
-#line 643 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.TypeVec) = new TypeList();
-    (yyval.TypeVec)->push_back((yyvsp[0].Type));
-  ;}
-    break;
-
-  case 140:
-#line 647 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.TypeVec) = (yyvsp[-2].TypeVec);
-    (yyval.TypeVec)->push_back((yyvsp[0].Type));
-  ;}
-    break;
-
-  case 142:
-#line 655 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.TypeVec) = (yyvsp[-2].TypeVec);
-    (yyval.TypeVec)->push_back(new TypeInfo("void",VoidTy));
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 143:
-#line 660 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.TypeVec) = new TypeList();
-    (yyval.TypeVec)->push_back(new TypeInfo("void",VoidTy));
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 144:
-#line 665 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.TypeVec) = new TypeList();
-  ;}
-    break;
-
-  case 145:
-#line 675 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { // Nonempty unsized arr
-    (yyval.Const).type = (yyvsp[-3].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy());
-    *(yyval.Const).cnst += " [ " + *(yyvsp[-1].String) + " ]";
-    delete (yyvsp[-1].String);
-  ;}
-    break;
-
-  case 146:
-#line 681 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.Const).type = (yyvsp[-2].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy());
-    *(yyval.Const).cnst += "[ ]";
-  ;}
-    break;
-
-  case 147:
-#line 686 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.Const).type = (yyvsp[-2].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy());
-    *(yyval.Const).cnst += " c" + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 148:
-#line 692 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { // Nonempty unsized arr
-    (yyval.Const).type = (yyvsp[-3].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy());
-    *(yyval.Const).cnst += " < " + *(yyvsp[-1].String) + " >";
-    delete (yyvsp[-1].String);
-  ;}
-    break;
-
-  case 149:
-#line 698 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.Const).type = (yyvsp[-3].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-3].Type)->getNewTy());
-    *(yyval.Const).cnst += " { " + *(yyvsp[-1].String) + " }";
-    delete (yyvsp[-1].String);
-  ;}
-    break;
-
-  case 150:
-#line 704 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.Const).type = (yyvsp[-2].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-2].Type)->getNewTy());
-    *(yyval.Const).cnst += " {}";
-  ;}
-    break;
-
-  case 151:
-#line 709 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.Const).type = (yyvsp[-1].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
-    *(yyval.Const).cnst +=  " " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 152:
-#line 715 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.Const).type = (yyvsp[-1].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
-    *(yyval.Const).cnst += " " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 153:
-#line 721 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    std::string Name = getUniqueName((yyvsp[0].String),(yyvsp[-1].Type));
-    (yyval.Const).type = (yyvsp[-1].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
-    *(yyval.Const).cnst += " " + Name;
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 154:
-#line 728 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.Const).type = (yyvsp[-1].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
-    *(yyval.Const).cnst += " " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 155:
-#line 734 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.Const).type = (yyvsp[-1].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
-    *(yyval.Const).cnst += " " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 156:
-#line 740 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {      // integral constants
-    (yyval.Const).type = (yyvsp[-1].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
-    *(yyval.Const).cnst += " " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 157:
-#line 746 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {            // integral constants
-    (yyval.Const).type = (yyvsp[-1].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
-    *(yyval.Const).cnst += " " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 158:
-#line 752 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {                      // Boolean constants
-    (yyval.Const).type = (yyvsp[-1].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
-    *(yyval.Const).cnst += " " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 159:
-#line 758 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {                     // Boolean constants
-    (yyval.Const).type = (yyvsp[-1].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
-    *(yyval.Const).cnst += " " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 160:
-#line 764 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {                   // Float & Double constants
-    (yyval.Const).type = (yyvsp[-1].Type);
-    (yyval.Const).cnst = new std::string((yyvsp[-1].Type)->getNewTy());
-    *(yyval.Const).cnst += " " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 161:
-#line 772 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    std::string source = *(yyvsp[-3].Const).cnst;
-    TypeInfo* DstTy = ResolveType((yyvsp[-1].Type));
-    if (*(yyvsp[-5].String) == "cast") {
+    yyval.Type = new TypeInfo(new std::string(newTy), PackedStructTy, yyvsp[-2].TypeVec);
+  ;
+    break;}
+case 136:
+#line 633 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{                          // Empty packed structure type?
+    yyval.Type = new TypeInfo(new std::string("<{}>"), PackedStructTy, new TypeList());
+  ;
+    break;}
+case 137:
+#line 636 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{                             // Pointer type?
+    yyval.Type = yyvsp[-1].Type->getPointerType();
+  ;
+    break;}
+case 138:
+#line 644 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.TypeVec = new TypeList();
+    yyval.TypeVec->push_back(yyvsp[0].Type);
+  ;
+    break;}
+case 139:
+#line 648 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.TypeVec = yyvsp[-2].TypeVec;
+    yyval.TypeVec->push_back(yyvsp[0].Type);
+  ;
+    break;}
+case 141:
+#line 656 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.TypeVec = yyvsp[-2].TypeVec;
+    yyval.TypeVec->push_back(new TypeInfo("void",VoidTy));
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 142:
+#line 661 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.TypeVec = new TypeList();
+    yyval.TypeVec->push_back(new TypeInfo("void",VoidTy));
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 143:
+#line 666 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.TypeVec = new TypeList();
+  ;
+    break;}
+case 144:
+#line 676 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ // Nonempty unsized arr
+    yyval.Const.type = yyvsp[-3].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-3].Type->getNewTy());
+    *yyval.Const.cnst += " [ " + *yyvsp[-1].String + " ]";
+    delete yyvsp[-1].String;
+  ;
+    break;}
+case 145:
+#line 682 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.Const.type = yyvsp[-2].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-2].Type->getNewTy());
+    *yyval.Const.cnst += "[ ]";
+  ;
+    break;}
+case 146:
+#line 687 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.Const.type = yyvsp[-2].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-2].Type->getNewTy());
+    *yyval.Const.cnst += " c" + *yyvsp[0].String;
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 147:
+#line 693 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ // Nonempty unsized arr
+    yyval.Const.type = yyvsp[-3].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-3].Type->getNewTy());
+    *yyval.Const.cnst += " < " + *yyvsp[-1].String + " >";
+    delete yyvsp[-1].String;
+  ;
+    break;}
+case 148:
+#line 699 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.Const.type = yyvsp[-3].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-3].Type->getNewTy());
+    *yyval.Const.cnst += " { " + *yyvsp[-1].String + " }";
+    delete yyvsp[-1].String;
+  ;
+    break;}
+case 149:
+#line 705 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.Const.type = yyvsp[-2].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-2].Type->getNewTy());
+    *yyval.Const.cnst += " {}";
+  ;
+    break;}
+case 150:
+#line 710 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.Const.type = yyvsp[-1].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-1].Type->getNewTy());
+    *yyval.Const.cnst +=  " " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 151:
+#line 716 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.Const.type = yyvsp[-1].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-1].Type->getNewTy());
+    *yyval.Const.cnst += " " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 152:
+#line 722 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    std::string Name = getUniqueName(yyvsp[0].String,yyvsp[-1].Type);
+    yyval.Const.type = yyvsp[-1].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-1].Type->getNewTy());
+    *yyval.Const.cnst += " " + Name;
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 153:
+#line 729 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.Const.type = yyvsp[-1].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-1].Type->getNewTy());
+    *yyval.Const.cnst += " " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 154:
+#line 735 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.Const.type = yyvsp[-1].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-1].Type->getNewTy());
+    *yyval.Const.cnst += " " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 155:
+#line 741 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{      // integral constants
+    yyval.Const.type = yyvsp[-1].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-1].Type->getNewTy());
+    *yyval.Const.cnst += " " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 156:
+#line 747 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{            // integral constants
+    yyval.Const.type = yyvsp[-1].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-1].Type->getNewTy());
+    *yyval.Const.cnst += " " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 157:
+#line 753 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{                      // Boolean constants
+    yyval.Const.type = yyvsp[-1].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-1].Type->getNewTy());
+    *yyval.Const.cnst += " " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 158:
+#line 759 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{                     // Boolean constants
+    yyval.Const.type = yyvsp[-1].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-1].Type->getNewTy());
+    *yyval.Const.cnst += " " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 159:
+#line 765 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{                   // Float & Double constants
+    yyval.Const.type = yyvsp[-1].Type;
+    yyval.Const.cnst = new std::string(yyvsp[-1].Type->getNewTy());
+    *yyval.Const.cnst += " " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 160:
+#line 773 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    std::string source = *yyvsp[-3].Const.cnst;
+    TypeInfo* DstTy = ResolveType(yyvsp[-1].Type);
+    if (*yyvsp[-5].String == "cast") {
       // Call getCastUpgrade to upgrade the old cast
-      (yyval.String) = new std::string(getCastUpgrade(source, (yyvsp[-3].Const).type, DstTy, true));
+      yyval.String = new std::string(getCastUpgrade(source, yyvsp[-3].Const.type, DstTy, true));
     } else {
       // Nothing to upgrade, just create the cast constant expr
-      (yyval.String) = new std::string(*(yyvsp[-5].String));
-      *(yyval.String) += "( " + source + " to " + (yyvsp[-1].Type)->getNewTy() + ")";
+      yyval.String = new std::string(*yyvsp[-5].String);
+      *yyval.String += "( " + source + " to " + yyvsp[-1].Type->getNewTy() + ")";
     }
-    delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); delete (yyvsp[-2].String);
-  ;}
-    break;
-
-  case 162:
-#line 785 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-4].String) += "(" + *(yyvsp[-2].Const).cnst;
-    for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) {
-      ValueInfo& VI = (*(yyvsp[-1].ValList))[i];
-      *(yyvsp[-4].String) += ", " + *VI.val;
+    delete yyvsp[-5].String; yyvsp[-3].Const.destroy(); delete yyvsp[-2].String;
+  ;
+    break;}
+case 161:
+#line 786 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-4].String += "(" + *yyvsp[-2].Const.cnst;
+    for (unsigned i = 0; i < yyvsp[-1].ValList->size(); ++i) {
+      ValueInfo& VI = (*yyvsp[-1].ValList)[i];
+      *yyvsp[-4].String += ", " + *VI.val;
       VI.destroy();
     }
-    *(yyvsp[-4].String) += ")";
-    (yyval.String) = (yyvsp[-4].String);
-    (yyvsp[-2].Const).destroy();
-    delete (yyvsp[-1].ValList);
-  ;}
-    break;
-
-  case 163:
-#line 797 "/proj/llvm/llvm-3/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();
-    (yyval.String) = (yyvsp[-7].String);
-  ;}
-    break;
-
-  case 164:
-#line 802 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    const char* op = getDivRemOpcode(*(yyvsp[-5].String), (yyvsp[-3].Const).type); 
-    (yyval.String) = new std::string(op);
-    *(yyval.String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
-    delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
-  ;}
-    break;
-
-  case 165:
-#line 808 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
-    (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
-    (yyval.String) = (yyvsp[-5].String);
-  ;}
-    break;
-
-  case 166:
-#line 813 "/proj/llvm/llvm-3/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 + ")";
-    (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
-    (yyval.String) = (yyvsp[-5].String);
-  ;}
-    break;
-
-  case 167:
-#line 819 "/proj/llvm/llvm-3/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();
-    (yyval.String) = (yyvsp[-6].String);
-  ;}
-    break;
-
-  case 168:
-#line 824 "/proj/llvm/llvm-3/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();
-    (yyval.String) = (yyvsp[-6].String);
-  ;}
-    break;
-
-  case 169:
-#line 829 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    const char* shiftop = (yyvsp[-5].String)->c_str();
-    if (*(yyvsp[-5].String) == "shr")
-      shiftop = ((yyvsp[-3].Const).type->isUnsigned()) ? "lshr" : "ashr";
-    (yyval.String) = new std::string(shiftop);
-    *(yyval.String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
-    delete (yyvsp[-5].String); (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
-  ;}
-    break;
-
-  case 170:
-#line 837 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-5].String) += "(" + *(yyvsp[-3].Const).cnst + "," + *(yyvsp[-1].Const).cnst + ")";
-    (yyvsp[-3].Const).destroy(); (yyvsp[-1].Const).destroy();
-    (yyval.String) = (yyvsp[-5].String);
-  ;}
-    break;
-
-  case 171:
-#line 842 "/proj/llvm/llvm-3/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();
-    (yyval.String) = (yyvsp[-7].String);
-  ;}
-    break;
-
-  case 172:
-#line 847 "/proj/llvm/llvm-3/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();
-    (yyval.String) = (yyvsp[-7].String);
-  ;}
-    break;
-
-  case 173:
-#line 857 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-2].String) += ", " + *(yyvsp[0].Const).cnst;
-    (yyvsp[0].Const).destroy();
-    (yyval.String) = (yyvsp[-2].String);
-  ;}
-    break;
-
-  case 174:
-#line 862 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string(*(yyvsp[0].Const).cnst); (yyvsp[0].Const).destroy(); ;}
-    break;
-
-  case 177:
-#line 877 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-;}
-    break;
-
-  case 178:
-#line 882 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 179:
-#line 885 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *O << *(yyvsp[0].String) << '\n';
-    delete (yyvsp[0].String);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 180:
-#line 890 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *O << "module asm " << ' ' << *(yyvsp[0].String) << '\n';
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 181:
-#line 894 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
+    *yyvsp[-4].String += ")";
+    yyval.String = yyvsp[-4].String;
+    yyvsp[-2].Const.destroy();
+    delete yyvsp[-1].ValList;
+  ;
+    break;}
+case 162:
+#line 798 "/Volumes/ProjectsDisk/cvs/llvm/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();
+    yyval.String = yyvsp[-7].String;
+  ;
+    break;}
+case 163:
+#line 803 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    const char* op = getDivRemOpcode(*yyvsp[-5].String, yyvsp[-3].Const.type); 
+    yyval.String = new std::string(op);
+    *yyval.String += "(" + *yyvsp[-3].Const.cnst + "," + *yyvsp[-1].Const.cnst + ")";
+    delete yyvsp[-5].String; yyvsp[-3].Const.destroy(); yyvsp[-1].Const.destroy();
+  ;
+    break;}
+case 164:
+#line 809 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-5].String += "(" + *yyvsp[-3].Const.cnst + "," + *yyvsp[-1].Const.cnst + ")";
+    yyvsp[-3].Const.destroy(); yyvsp[-1].Const.destroy();
+    yyval.String = yyvsp[-5].String;
+  ;
+    break;}
+case 165:
+#line 814 "/Volumes/ProjectsDisk/cvs/llvm/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 + ")";
+    yyvsp[-3].Const.destroy(); yyvsp[-1].Const.destroy();
+    yyval.String = yyvsp[-5].String;
+  ;
+    break;}
+case 166:
+#line 820 "/Volumes/ProjectsDisk/cvs/llvm/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();
+    yyval.String = yyvsp[-6].String;
+  ;
+    break;}
+case 167:
+#line 825 "/Volumes/ProjectsDisk/cvs/llvm/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();
+    yyval.String = yyvsp[-6].String;
+  ;
+    break;}
+case 168:
+#line 830 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    const char* shiftop = yyvsp[-5].String->c_str();
+    if (*yyvsp[-5].String == "shr")
+      shiftop = (yyvsp[-3].Const.type->isUnsigned()) ? "lshr" : "ashr";
+    yyval.String = new std::string(shiftop);
+    *yyval.String += "(" + *yyvsp[-3].Const.cnst + "," + *yyvsp[-1].Const.cnst + ")";
+    delete yyvsp[-5].String; yyvsp[-3].Const.destroy(); yyvsp[-1].Const.destroy();
+  ;
+    break;}
+case 169:
+#line 838 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-5].String += "(" + *yyvsp[-3].Const.cnst + "," + *yyvsp[-1].Const.cnst + ")";
+    yyvsp[-3].Const.destroy(); yyvsp[-1].Const.destroy();
+    yyval.String = yyvsp[-5].String;
+  ;
+    break;}
+case 170:
+#line 843 "/Volumes/ProjectsDisk/cvs/llvm/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();
+    yyval.String = yyvsp[-7].String;
+  ;
+    break;}
+case 171:
+#line 848 "/Volumes/ProjectsDisk/cvs/llvm/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();
+    yyval.String = yyvsp[-7].String;
+  ;
+    break;}
+case 172:
+#line 858 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-2].String += ", " + *yyvsp[0].Const.cnst;
+    yyvsp[0].Const.destroy();
+    yyval.String = yyvsp[-2].String;
+  ;
+    break;}
+case 173:
+#line 863 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string(*yyvsp[0].Const.cnst); yyvsp[0].Const.destroy(); ;
+    break;}
+case 176:
+#line 878 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+;
+    break;}
+case 177:
+#line 883 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.String = 0;
+  ;
+    break;}
+case 178:
+#line 886 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *O << *yyvsp[0].String << '\n';
+    delete yyvsp[0].String;
+    yyval.String = 0;
+  ;
+    break;}
+case 179:
+#line 891 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *O << "module asm " << ' ' << *yyvsp[0].String << '\n';
+    yyval.String = 0;
+  ;
+    break;}
+case 180:
+#line 895 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
     *O << "implementation\n";
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 182:
-#line 898 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = 0; ;}
-    break;
-
-  case 184:
-#line 900 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "external"; ;}
-    break;
-
-  case 185:
-#line 903 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    EnumeratedTypes.push_back(*(yyvsp[0].Type));
-    if (!(yyvsp[-2].String)->empty()) {
-      NamedTypes[*(yyvsp[-2].String)] = *(yyvsp[0].Type);
-      *O << *(yyvsp[-2].String) << " = ";
+    yyval.String = 0;
+  ;
+    break;}
+case 181:
+#line 899 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = 0; ;
+    break;}
+case 183:
+#line 901 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = yyvsp[0].String; *yyval.String = "external"; ;
+    break;}
+case 184:
+#line 904 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    EnumeratedTypes.push_back(*yyvsp[0].Type);
+    if (!yyvsp[-2].String->empty()) {
+      NamedTypes[*yyvsp[-2].String] = *yyvsp[0].Type;
+      *O << *yyvsp[-2].String << " = ";
     }
-    *O << "type " << (yyvsp[0].Type)->getNewTy() << '\n';
-    delete (yyvsp[-2].String); delete (yyvsp[-1].String);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 186:
-#line 913 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {       // Function prototypes can be in const pool
-    *O << *(yyvsp[0].String) << '\n';
-    delete (yyvsp[0].String);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 187:
-#line 918 "/proj/llvm/llvm-3/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); 
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 188:
-#line 923 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    if (!(yyvsp[-4].String)->empty()) {
-      std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Const).type);
+    *O << "type " << yyvsp[0].Type->getNewTy() << '\n';
+    delete yyvsp[-2].String; delete yyvsp[-1].String;
+    yyval.String = 0;
+  ;
+    break;}
+case 185:
+#line 914 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{       // Function prototypes can be in const pool
+    *O << *yyvsp[0].String << '\n';
+    delete yyvsp[0].String;
+    yyval.String = 0;
+  ;
+    break;}
+case 186:
+#line 919 "/Volumes/ProjectsDisk/cvs/llvm/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; 
+    yyval.String = 0;
+  ;
+    break;}
+case 187:
+#line 924 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    if (!yyvsp[-4].String->empty()) {
+      std::string Name = getUniqueName(yyvsp[-4].String,yyvsp[-1].Const.type);
       *O << Name << " = ";
-      Globals[Name] = *(yyvsp[-1].Const).type;
+      Globals[Name] = *yyvsp[-1].Const.type;
     }
-    *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << *(yyvsp[-1].Const).cnst << ' ' << *(yyvsp[0].String) << '\n';
-    delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); delete (yyvsp[0].String); 
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 189:
-#line 933 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    if (!(yyvsp[-4].String)->empty()) {
-      std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type));
+    *O << *yyvsp[-3].String << ' ' << *yyvsp[-2].String << ' ' << *yyvsp[-1].Const.cnst << ' ' << *yyvsp[0].String << '\n';
+    delete yyvsp[-4].String; delete yyvsp[-3].String; delete yyvsp[-2].String; delete yyvsp[0].String; 
+    yyval.String = 0;
+  ;
+    break;}
+case 188:
+#line 934 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    if (!yyvsp[-4].String->empty()) {
+      std::string Name = getUniqueName(yyvsp[-4].String,yyvsp[-1].Type);
       *O << Name << " = ";
-      Globals[Name] = *(yyvsp[-1].Type);
+      Globals[Name] = *yyvsp[-1].Type;
     }
-    *O <<  *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].String) << '\n';
-    delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); delete (yyvsp[0].String);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 190:
-#line 943 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    if (!(yyvsp[-4].String)->empty()) {
-      std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type));
+    *O <<  *yyvsp[-3].String << ' ' << *yyvsp[-2].String << ' ' << yyvsp[-1].Type->getNewTy() << ' ' << *yyvsp[0].String << '\n';
+    delete yyvsp[-4].String; delete yyvsp[-3].String; delete yyvsp[-2].String; delete yyvsp[0].String;
+    yyval.String = 0;
+  ;
+    break;}
+case 189:
+#line 944 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    if (!yyvsp[-4].String->empty()) {
+      std::string Name = getUniqueName(yyvsp[-4].String,yyvsp[-1].Type);
       *O << Name << " = ";
-      Globals[Name] = *(yyvsp[-1].Type);
+      Globals[Name] = *yyvsp[-1].Type;
     }
-    *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].String) << '\n';
-    delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); delete (yyvsp[0].String);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 191:
-#line 953 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    if (!(yyvsp[-4].String)->empty()) {
-      std::string Name = getUniqueName((yyvsp[-4].String),(yyvsp[-1].Type));
+    *O << *yyvsp[-3].String << ' ' << *yyvsp[-2].String << ' ' << yyvsp[-1].Type->getNewTy() << ' ' << *yyvsp[0].String << '\n';
+    delete yyvsp[-4].String; delete yyvsp[-3].String; delete yyvsp[-2].String; delete yyvsp[0].String;
+    yyval.String = 0;
+  ;
+    break;}
+case 190:
+#line 954 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    if (!yyvsp[-4].String->empty()) {
+      std::string Name = getUniqueName(yyvsp[-4].String,yyvsp[-1].Type);
       *O << Name << " = ";
-      Globals[Name] = *(yyvsp[-1].Type);
+      Globals[Name] = *yyvsp[-1].Type;
     }
-    *O << *(yyvsp[-3].String) << ' ' << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].String) << '\n';
-    delete (yyvsp[-4].String); delete (yyvsp[-3].String); delete (yyvsp[-2].String); delete (yyvsp[0].String);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 192:
-#line 963 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { 
-    *O << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n';
-    delete (yyvsp[-1].String); delete (yyvsp[0].String);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 193:
-#line 968 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *O << *(yyvsp[-2].String) << " = " << *(yyvsp[0].String) << '\n';
-    delete (yyvsp[-2].String); delete (yyvsp[0].String);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 194:
-#line 973 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { 
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 198:
-#line 983 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-    (yyval.String) = (yyvsp[-2].String);
-  ;}
-    break;
-
-  case 199:
-#line 988 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
-    if (*(yyvsp[0].String) == "64")
+    *O << *yyvsp[-3].String << ' ' << *yyvsp[-2].String << ' ' << yyvsp[-1].Type->getNewTy() << ' ' << *yyvsp[0].String << '\n';
+    delete yyvsp[-4].String; delete yyvsp[-3].String; delete yyvsp[-2].String; delete yyvsp[0].String;
+    yyval.String = 0;
+  ;
+    break;}
+case 191:
+#line 964 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ 
+    *O << *yyvsp[-1].String << ' ' << *yyvsp[0].String << '\n';
+    delete yyvsp[-1].String; delete yyvsp[0].String;
+    yyval.String = 0;
+  ;
+    break;}
+case 192:
+#line 969 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *O << *yyvsp[-2].String << " = " << *yyvsp[0].String << '\n';
+    delete yyvsp[-2].String; delete yyvsp[0].String;
+    yyval.String = 0;
+  ;
+    break;}
+case 193:
+#line 974 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ 
+    yyval.String = 0;
+  ;
+    break;}
+case 197:
+#line 984 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-2].String += " = " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+    yyval.String = yyvsp[-2].String;
+  ;
+    break;}
+case 198:
+#line 989 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-2].String += " = " + *yyvsp[0].String;
+    if (*yyvsp[0].String == "64")
       SizeOfPointer = 64;
-    delete (yyvsp[0].String);
-    (yyval.String) = (yyvsp[-2].String);
-  ;}
-    break;
-
-  case 200:
-#line 995 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-    (yyval.String) = (yyvsp[-2].String);
-  ;}
-    break;
-
-  case 201:
-#line 1000 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-2].String) += " = " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-    (yyval.String) = (yyvsp[-2].String);
-  ;}
-    break;
-
-  case 202:
-#line 1007 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyvsp[-1].String)->insert(0, "[ ");
-    *(yyvsp[-1].String) += " ]";
-    (yyval.String) = (yyvsp[-1].String);
-  ;}
-    break;
-
-  case 203:
-#line 1014 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-    (yyval.String) = (yyvsp[-2].String);
-  ;}
-    break;
-
-  case 205:
-#line 1020 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.String) = new std::string();
-  ;}
-    break;
-
-  case 209:
-#line 1029 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string(); ;}
-    break;
-
-  case 210:
-#line 1031 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-  (yyval.String) = new std::string((yyvsp[-1].Type)->getNewTy());
-  if (!(yyvsp[0].String)->empty()) {
-    std::string Name = getUniqueName((yyvsp[0].String), (yyvsp[-1].Type));
-    *(yyval.String) += " " + Name;
+    delete yyvsp[0].String;
+    yyval.String = yyvsp[-2].String;
+  ;
+    break;}
+case 199:
+#line 996 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-2].String += " = " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+    yyval.String = yyvsp[-2].String;
+  ;
+    break;}
+case 200:
+#line 1001 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-2].String += " = " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+    yyval.String = yyvsp[-2].String;
+  ;
+    break;}
+case 201:
+#line 1008 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyvsp[-1].String->insert(0, "[ ");
+    *yyvsp[-1].String += " ]";
+    yyval.String = yyvsp[-1].String;
+  ;
+    break;}
+case 202:
+#line 1015 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-2].String += ", " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+    yyval.String = yyvsp[-2].String;
+  ;
+    break;}
+case 204:
+#line 1021 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.String = new std::string();
+  ;
+    break;}
+case 208:
+#line 1030 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string(); ;
+    break;}
+case 209:
+#line 1032 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+  yyval.String = new std::string(yyvsp[-1].Type->getNewTy());
+  if (!yyvsp[0].String->empty()) {
+    std::string Name = getUniqueName(yyvsp[0].String, yyvsp[-1].Type);
+    *yyval.String += " " + Name;
   }
-  delete (yyvsp[0].String);
-;}
-    break;
-
-  case 211:
-#line 1040 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-2].String) += ", " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 212:
-#line 1044 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.String) = (yyvsp[0].String);
-  ;}
-    break;
-
-  case 213:
-#line 1048 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.String) = (yyvsp[0].String);
-  ;}
-    break;
-
-  case 214:
-#line 1051 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-2].String) += ", ...";
-    (yyval.String) = (yyvsp[-2].String);
-    delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 215:
-#line 1056 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.String) = (yyvsp[0].String);
-  ;}
-    break;
-
-  case 216:
-#line 1059 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string(); ;}
-    break;
-
-  case 217:
-#line 1062 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    if (!(yyvsp[-7].String)->empty()) {
-      *(yyvsp[-7].String) += " ";
+  delete yyvsp[0].String;
+;
+    break;}
+case 210:
+#line 1041 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-2].String += ", " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 211:
+#line 1045 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.String = yyvsp[0].String;
+  ;
+    break;}
+case 212:
+#line 1049 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.String = yyvsp[0].String;
+  ;
+    break;}
+case 213:
+#line 1052 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-2].String += ", ...";
+    yyval.String = yyvsp[-2].String;
+    delete yyvsp[0].String;
+  ;
+    break;}
+case 214:
+#line 1057 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.String = yyvsp[0].String;
+  ;
+    break;}
+case 215:
+#line 1060 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string(); ;
+    break;}
+case 216:
+#line 1063 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    if (!yyvsp[-7].String->empty()) {
+      *yyvsp[-7].String += " ";
     }
-    *(yyvsp[-7].String) += (yyvsp[-6].Type)->getNewTy() + " " + *(yyvsp[-5].String) + "(" + *(yyvsp[-3].String) + ")";
-    if (!(yyvsp[-1].String)->empty()) {
-      *(yyvsp[-7].String) += " " + *(yyvsp[-1].String);
+    *yyvsp[-7].String += yyvsp[-6].Type->getNewTy() + " " + *yyvsp[-5].String + "(" + *yyvsp[-3].String + ")";
+    if (!yyvsp[-1].String->empty()) {
+      *yyvsp[-7].String += " " + *yyvsp[-1].String;
     }
-    if (!(yyvsp[0].String)->empty()) {
-      *(yyvsp[-7].String) += " " + *(yyvsp[0].String);
+    if (!yyvsp[0].String->empty()) {
+      *yyvsp[-7].String += " " + *yyvsp[0].String;
     }
-    delete (yyvsp[-5].String);
-    delete (yyvsp[-3].String);
-    delete (yyvsp[-1].String);
-    delete (yyvsp[0].String);
-    (yyval.String) = (yyvsp[-7].String);
-  ;}
-    break;
-
-  case 218:
-#line 1080 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string("{"); delete (yyvsp[0].String); ;}
-    break;
-
-  case 219:
-#line 1081 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string ("{"); ;}
-    break;
-
-  case 220:
-#line 1084 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
+    delete yyvsp[-5].String;
+    delete yyvsp[-3].String;
+    delete yyvsp[-1].String;
+    delete yyvsp[0].String;
+    yyval.String = yyvsp[-7].String;
+  ;
+    break;}
+case 217:
+#line 1081 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string("{"); delete yyvsp[0].String; ;
+    break;}
+case 218:
+#line 1082 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string ("{"); ;
+    break;}
+case 219:
+#line 1085 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
     *O << "define ";
-    if (!(yyvsp[-2].String)->empty()) {
-      *O << *(yyvsp[-2].String) << ' ';
+    if (!yyvsp[-2].String->empty()) {
+      *O << *yyvsp[-2].String << ' ';
     }
-    *O << *(yyvsp[-1].String) << ' ' << *(yyvsp[0].String) << '\n';
-    delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 221:
-#line 1095 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string("}"); delete (yyvsp[0].String); ;}
-    break;
-
-  case 222:
-#line 1096 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string("}"); ;}
-    break;
-
-  case 223:
-#line 1098 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-  if ((yyvsp[-1].String))
-    *O << *(yyvsp[-1].String);
-  *O << *(yyvsp[0].String) << "\n\n";
-  delete (yyvsp[-2].String); delete (yyvsp[-1].String); delete (yyvsp[0].String);
-  (yyval.String) = 0;
-;}
-    break;
-
-  case 224:
-#line 1107 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string(); ;}
-    break;
-
-  case 227:
-#line 1113 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { 
-    if (!(yyvsp[-1].String)->empty())
-      *(yyvsp[-2].String) += " " + *(yyvsp[-1].String);
-    *(yyvsp[-2].String) += " " + *(yyvsp[0].String);
-    delete (yyvsp[-1].String);
-    delete (yyvsp[0].String);
-    (yyval.String) = (yyvsp[-2].String);
-  ;}
-    break;
-
-  case 228:
-#line 1126 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string(); ;}
-    break;
-
-  case 238:
-#line 1132 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { 
-    (yyvsp[-1].String)->insert(0, "<");
-    *(yyvsp[-1].String) += ">";
-    (yyval.String) = (yyvsp[-1].String);
-  ;}
-    break;
-
-  case 240:
-#line 1138 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    if (!(yyvsp[-3].String)->empty()) {
-      *(yyvsp[-4].String) += " " + *(yyvsp[-3].String);
+    *O << *yyvsp[-1].String << ' ' << *yyvsp[0].String << '\n';
+    delete yyvsp[-2].String; delete yyvsp[-1].String; delete yyvsp[0].String;
+    yyval.String = 0;
+  ;
+    break;}
+case 220:
+#line 1096 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string("}"); delete yyvsp[0].String; ;
+    break;}
+case 221:
+#line 1097 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string("}"); ;
+    break;}
+case 222:
+#line 1099 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+  if (yyvsp[-1].String)
+    *O << *yyvsp[-1].String;
+  *O << *yyvsp[0].String << "\n\n";
+  delete yyvsp[-2].String; delete yyvsp[-1].String; delete yyvsp[0].String;
+  yyval.String = 0;
+;
+    break;}
+case 223:
+#line 1108 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string(); ;
+    break;}
+case 226:
+#line 1114 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ 
+    if (!yyvsp[-1].String->empty())
+      *yyvsp[-2].String += " " + *yyvsp[-1].String;
+    *yyvsp[-2].String += " " + *yyvsp[0].String;
+    delete yyvsp[-1].String;
+    delete yyvsp[0].String;
+    yyval.String = yyvsp[-2].String;
+  ;
+    break;}
+case 227:
+#line 1127 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string(); ;
+    break;}
+case 237:
+#line 1133 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ 
+    yyvsp[-1].String->insert(0, "<");
+    *yyvsp[-1].String += ">";
+    yyval.String = yyvsp[-1].String;
+  ;
+    break;}
+case 239:
+#line 1139 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    if (!yyvsp[-3].String->empty()) {
+      *yyvsp[-4].String += " " + *yyvsp[-3].String;
     }
-    *(yyvsp[-4].String) += " " + *(yyvsp[-2].String) + ", " + *(yyvsp[0].String);
-    delete (yyvsp[-3].String); delete (yyvsp[-2].String); delete (yyvsp[0].String);
-    (yyval.String) = (yyvsp[-4].String);
-  ;}
-    break;
-
-  case 243:
-#line 1151 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.Value).val = (yyvsp[0].String);
-    (yyval.Value).constant = false;
-    (yyval.Value).type = new TypeInfo();
-  ;}
-    break;
-
-  case 244:
-#line 1156 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.Value).val = (yyvsp[0].String);
-    (yyval.Value).constant = true;
-    (yyval.Value).type = new TypeInfo();
-  ;}
-    break;
-
-  case 245:
-#line 1166 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    ResolveType((yyvsp[-1].Type));
-    std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type));
-    (yyval.Value) = (yyvsp[0].Value);
-    delete (yyval.Value).val;
-    delete (yyval.Value).type;
-    (yyval.Value).val = new std::string((yyvsp[-1].Type)->getNewTy() + " " + Name);
-    (yyval.Value).type = (yyvsp[-1].Type);
-  ;}
-    break;
-
-  case 246:
-#line 1176 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 247:
-#line 1179 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { // Do not allow functions with 0 basic blocks   
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 248:
-#line 1187 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 249:
-#line 1191 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *O << "    " << *(yyvsp[0].String) << '\n';
-    delete (yyvsp[0].String);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 250:
-#line 1196 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 251:
-#line 1199 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *O << *(yyvsp[0].String) << '\n';
-    delete (yyvsp[0].String);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 253:
-#line 1205 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = (yyvsp[0].String); *(yyval.String) = "unwind"; ;}
-    break;
-
-  case 254:
-#line 1207 "/proj/llvm/llvm-3/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();
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 255:
-#line 1212 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {                                       // Return with no result...
-    *O << "    " << *(yyvsp[-1].String) << ' ' << (yyvsp[0].Type)->getNewTy() << '\n';
-    delete (yyvsp[-1].String); delete (yyvsp[0].Type);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 256:
-#line 1217 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {                         // Unconditional Branch...
-    *O << "    " << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].Value).val << '\n';
-    delete (yyvsp[-2].String); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy();
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 257:
-#line 1222 "/proj/llvm/llvm-3/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 << ", " 
-       << (yyvsp[-4].Type)->getNewTy() << ' ' << *(yyvsp[-3].Value).val << ", " << (yyvsp[-1].Type)->getNewTy() << ' ' 
-       << *(yyvsp[0].Value).val << '\n';
-    delete (yyvsp[-8].String); delete (yyvsp[-7].Type); (yyvsp[-6].Value).destroy(); delete (yyvsp[-4].Type); (yyvsp[-3].Value).destroy(); 
-    delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy();
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 258:
-#line 1231 "/proj/llvm/llvm-3/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 << ", " 
-       << (yyvsp[-4].Type)->getNewTy() << ' ' << *(yyvsp[-3].Value).val << " [" << *(yyvsp[-1].String) << " ]\n";
-    delete (yyvsp[-8].String); delete (yyvsp[-7].Type); (yyvsp[-6].Value).destroy(); delete (yyvsp[-4].Type); (yyvsp[-3].Value).destroy(); 
-    delete (yyvsp[-1].String);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 259:
-#line 1239 "/proj/llvm/llvm-3/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 << ", " 
-       << (yyvsp[-3].Type)->getNewTy() << ' ' << *(yyvsp[-2].Value).val << "[]\n";
-    delete (yyvsp[-7].String); delete (yyvsp[-6].Type); (yyvsp[-5].Value).destroy(); delete (yyvsp[-3].Type); (yyvsp[-2].Value).destroy();
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 260:
-#line 1247 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    TypeInfo* ResTy = getFunctionReturnType((yyvsp[-10].Type));
+    *yyvsp[-4].String += " " + *yyvsp[-2].String + ", " + *yyvsp[0].String;
+    delete yyvsp[-3].String; delete yyvsp[-2].String; delete yyvsp[0].String;
+    yyval.String = yyvsp[-4].String;
+  ;
+    break;}
+case 242:
+#line 1152 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.Value.val = yyvsp[0].String;
+    yyval.Value.constant = false;
+    yyval.Value.type = new TypeInfo();
+  ;
+    break;}
+case 243:
+#line 1157 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.Value.val = yyvsp[0].String;
+    yyval.Value.constant = true;
+    yyval.Value.type = new TypeInfo();
+  ;
+    break;}
+case 244:
+#line 1167 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    ResolveType(yyvsp[-1].Type);
+    std::string Name = getUniqueName(yyvsp[0].Value.val, yyvsp[-1].Type);
+    yyval.Value = yyvsp[0].Value;
+    delete yyval.Value.val;
+    delete yyval.Value.type;
+    yyval.Value.val = new std::string(yyvsp[-1].Type->getNewTy() + " " + Name);
+    yyval.Value.type = yyvsp[-1].Type;
+  ;
+    break;}
+case 245:
+#line 1177 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.String = 0;
+  ;
+    break;}
+case 246:
+#line 1180 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ // Do not allow functions with 0 basic blocks   
+    yyval.String = 0;
+  ;
+    break;}
+case 247:
+#line 1188 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.String = 0;
+  ;
+    break;}
+case 248:
+#line 1192 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *O << "    " << *yyvsp[0].String << '\n';
+    delete yyvsp[0].String;
+    yyval.String = 0;
+  ;
+    break;}
+case 249:
+#line 1197 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.String = 0;
+  ;
+    break;}
+case 250:
+#line 1200 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *O << *yyvsp[0].String << '\n';
+    delete yyvsp[0].String;
+    yyval.String = 0;
+  ;
+    break;}
+case 252:
+#line 1206 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = yyvsp[0].String; *yyval.String = "unwind"; ;
+    break;}
+case 253:
+#line 1208 "/Volumes/ProjectsDisk/cvs/llvm/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();
+    yyval.String = 0;
+  ;
+    break;}
+case 254:
+#line 1213 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{                                       // Return with no result...
+    *O << "    " << *yyvsp[-1].String << ' ' << yyvsp[0].Type->getNewTy() << '\n';
+    delete yyvsp[-1].String; delete yyvsp[0].Type;
+    yyval.String = 0;
+  ;
+    break;}
+case 255:
+#line 1218 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{                         // Unconditional Branch...
+    *O << "    " << *yyvsp[-2].String << ' ' << yyvsp[-1].Type->getNewTy() << ' ' << *yyvsp[0].Value.val << '\n';
+    delete yyvsp[-2].String; delete yyvsp[-1].Type; yyvsp[0].Value.destroy();
+    yyval.String = 0;
+  ;
+    break;}
+case 256:
+#line 1223 "/Volumes/ProjectsDisk/cvs/llvm/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 << ", " 
+       << yyvsp[-4].Type->getNewTy() << ' ' << *yyvsp[-3].Value.val << ", " << yyvsp[-1].Type->getNewTy() << ' ' 
+       << *yyvsp[0].Value.val << '\n';
+    delete yyvsp[-8].String; delete yyvsp[-7].Type; yyvsp[-6].Value.destroy(); delete yyvsp[-4].Type; yyvsp[-3].Value.destroy(); 
+    delete yyvsp[-1].Type; yyvsp[0].Value.destroy();
+    yyval.String = 0;
+  ;
+    break;}
+case 257:
+#line 1232 "/Volumes/ProjectsDisk/cvs/llvm/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 << ", " 
+       << yyvsp[-4].Type->getNewTy() << ' ' << *yyvsp[-3].Value.val << " [" << *yyvsp[-1].String << " ]\n";
+    delete yyvsp[-8].String; delete yyvsp[-7].Type; yyvsp[-6].Value.destroy(); delete yyvsp[-4].Type; yyvsp[-3].Value.destroy(); 
+    delete yyvsp[-1].String;
+    yyval.String = 0;
+  ;
+    break;}
+case 258:
+#line 1240 "/Volumes/ProjectsDisk/cvs/llvm/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 << ", " 
+       << yyvsp[-3].Type->getNewTy() << ' ' << *yyvsp[-2].Value.val << "[]\n";
+    delete yyvsp[-7].String; delete yyvsp[-6].Type; yyvsp[-5].Value.destroy(); delete yyvsp[-3].Type; yyvsp[-2].Value.destroy();
+    yyval.String = 0;
+  ;
+    break;}
+case 259:
+#line 1248 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    TypeInfo* ResTy = getFunctionReturnType(yyvsp[-10].Type);
     *O << "    ";
-    if (!(yyvsp[-13].String)->empty()) {
-      std::string Name = getUniqueName((yyvsp[-13].String), ResTy);
+    if (!yyvsp[-13].String->empty()) {
+      std::string Name = getUniqueName(yyvsp[-13].String, ResTy);
       *O << Name << " = ";
     }
-    *O << *(yyvsp[-12].String) << ' ' << *(yyvsp[-11].String) << ' ' << (yyvsp[-10].Type)->getNewTy() << ' ' << *(yyvsp[-9].Value).val << " (";
-    for (unsigned i = 0; i < (yyvsp[-7].ValList)->size(); ++i) {
-      ValueInfo& VI = (*(yyvsp[-7].ValList))[i];
+    *O << *yyvsp[-12].String << ' ' << *yyvsp[-11].String << ' ' << yyvsp[-10].Type->getNewTy() << ' ' << *yyvsp[-9].Value.val << " (";
+    for (unsigned i = 0; i < yyvsp[-7].ValList->size(); ++i) {
+      ValueInfo& VI = (*yyvsp[-7].ValList)[i];
       *O << *VI.val;
-      if (i+1 < (yyvsp[-7].ValList)->size())
+      if (i+1 < yyvsp[-7].ValList->size())
         *O << ", ";
       VI.destroy();
     }
-    *O << ") " << *(yyvsp[-5].String) << ' ' << (yyvsp[-4].Type)->getNewTy() << ' ' << *(yyvsp[-3].Value).val << ' ' 
-       << *(yyvsp[-2].String) << ' ' << (yyvsp[-1].Type)->getNewTy() << ' ' << *(yyvsp[0].Value).val << '\n';
-    delete (yyvsp[-13].String); delete (yyvsp[-12].String); delete (yyvsp[-11].String); delete (yyvsp[-10].Type); (yyvsp[-9].Value).destroy(); delete (yyvsp[-7].ValList); 
-    delete (yyvsp[-5].String); delete (yyvsp[-4].Type); (yyvsp[-3].Value).destroy(); delete (yyvsp[-2].String); delete (yyvsp[-1].Type); 
-    (yyvsp[0].Value).destroy(); 
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 261:
-#line 1269 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *O << "    " << *(yyvsp[0].String) << '\n';
-    delete (yyvsp[0].String);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 262:
-#line 1274 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *O << "    " << *(yyvsp[0].String) << '\n';
-    delete (yyvsp[0].String);
-    (yyval.String) = 0;
-  ;}
-    break;
-
-  case 263:
-#line 1280 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-5].String) += " " + (yyvsp[-4].Type)->getNewTy() + " " + *(yyvsp[-3].String) + ", " + (yyvsp[-1].Type)->getNewTy() + " " + 
-           *(yyvsp[0].Value).val;
-    delete (yyvsp[-4].Type); delete (yyvsp[-3].String); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy();
-    (yyval.String) = (yyvsp[-5].String);
-  ;}
-    break;
-
-  case 264:
-#line 1286 "/proj/llvm/llvm-3/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;
-    delete (yyvsp[-4].Type); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy();
-    (yyval.String) = (yyvsp[-3].String);
-  ;}
-    break;
-
-  case 265:
-#line 1294 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    if (!(yyvsp[-1].String)->empty()) {
-      if (deleteUselessCastFlag && *deleteUselessCastName == *(yyvsp[-1].String)) {
-        *(yyvsp[-1].String) += " = ";
-        (yyvsp[-1].String)->insert(0, "; "); // don't actually delete it, just comment it out
+    *O << ") " << *yyvsp[-5].String << ' ' << yyvsp[-4].Type->getNewTy() << ' ' << *yyvsp[-3].Value.val << ' ' 
+       << *yyvsp[-2].String << ' ' << yyvsp[-1].Type->getNewTy() << ' ' << *yyvsp[0].Value.val << '\n';
+    delete yyvsp[-13].String; delete yyvsp[-12].String; delete yyvsp[-11].String; delete yyvsp[-10].Type; yyvsp[-9].Value.destroy(); delete yyvsp[-7].ValList; 
+    delete yyvsp[-5].String; delete yyvsp[-4].Type; yyvsp[-3].Value.destroy(); delete yyvsp[-2].String; delete yyvsp[-1].Type; 
+    yyvsp[0].Value.destroy(); 
+    yyval.String = 0;
+  ;
+    break;}
+case 260:
+#line 1270 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *O << "    " << *yyvsp[0].String << '\n';
+    delete yyvsp[0].String;
+    yyval.String = 0;
+  ;
+    break;}
+case 261:
+#line 1275 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *O << "    " << *yyvsp[0].String << '\n';
+    delete yyvsp[0].String;
+    yyval.String = 0;
+  ;
+    break;}
+case 262:
+#line 1281 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-5].String += " " + yyvsp[-4].Type->getNewTy() + " " + *yyvsp[-3].String + ", " + yyvsp[-1].Type->getNewTy() + " " + 
+           *yyvsp[0].Value.val;
+    delete yyvsp[-4].Type; delete yyvsp[-3].String; delete yyvsp[-1].Type; yyvsp[0].Value.destroy();
+    yyval.String = yyvsp[-5].String;
+  ;
+    break;}
+case 263:
+#line 1287 "/Volumes/ProjectsDisk/cvs/llvm/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;
+    delete yyvsp[-4].Type; delete yyvsp[-1].Type; yyvsp[0].Value.destroy();
+    yyval.String = yyvsp[-3].String;
+  ;
+    break;}
+case 264:
+#line 1295 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    if (!yyvsp[-1].String->empty()) {
+      if (deleteUselessCastFlag && *deleteUselessCastName == *yyvsp[-1].String) {
+        *yyvsp[-1].String += " = ";
+        yyvsp[-1].String->insert(0, "; "); // don't actually delete it, just comment it out
         delete deleteUselessCastName;
       } else {
         // Get a unique name for the name of this value, based on its type.
-        *(yyvsp[-1].String) = getUniqueName((yyvsp[-1].String), (yyvsp[0].Value).type) + " = ";
+        *yyvsp[-1].String = getUniqueName(yyvsp[-1].String, yyvsp[0].Value.type) + " = ";
       }
     }
-    *(yyvsp[-1].String) += *(yyvsp[0].Value).val;
-    (yyvsp[0].Value).destroy();
+    *yyvsp[-1].String += *yyvsp[0].Value.val;
+    yyvsp[0].Value.destroy();
     deleteUselessCastFlag = false;
-    (yyval.String) = (yyvsp[-1].String); 
-  ;}
-    break;
-
-  case 266:
-#line 1312 "/proj/llvm/llvm-3/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() + "[");
-    Name += "," + *(yyvsp[-1].Value).val + "]";
-    (yyval.Value).val = new std::string(Name);
-    (yyval.Value).type = (yyvsp[-5].Type);
-    (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
-  ;}
-    break;
-
-  case 267:
-#line 1320 "/proj/llvm/llvm-3/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 + "]";
-    (yyvsp[-3].Value).destroy(); (yyvsp[-1].Value).destroy();
-    (yyval.Value) = (yyvsp[-6].Value);
-  ;}
-    break;
-
-  case 268:
-#line 1329 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.ValList) = new ValueList();
-    (yyval.ValList)->push_back((yyvsp[0].Value));
-  ;}
-    break;
-
-  case 269:
-#line 1333 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.ValList) = (yyvsp[-2].ValList);
-    (yyval.ValList)->push_back((yyvsp[0].Value));
-  ;}
-    break;
-
-  case 270:
-#line 1340 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.ValList) = (yyvsp[0].ValList); ;}
-    break;
-
-  case 271:
-#line 1341 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.ValList) = new ValueList(); ;}
-    break;
-
-  case 272:
-#line 1345 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-1].String) += " " + *(yyvsp[0].String);
-    delete (yyvsp[0].String);
-    (yyval.String) = (yyvsp[-1].String);
-  ;}
-    break;
-
-  case 274:
-#line 1353 "/proj/llvm/llvm-3/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));
-    std::string Name2 = getUniqueName((yyvsp[0].Value).val, (yyvsp[-3].Type));
-    (yyval.Value).val = new std::string(op);
-    *(yyval.Value).val += " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + ", " + Name2;
-    (yyval.Value).type = (yyvsp[-3].Type);
-    delete (yyvsp[-4].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
-  ;}
-    break;
-
-  case 275:
-#line 1362 "/proj/llvm/llvm-3/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));
-    *(yyvsp[-4].String) += " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + ", " + Name2;
-    (yyval.Value).val = (yyvsp[-4].String);
-    (yyval.Value).type = (yyvsp[-3].Type);
-    (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
-  ;}
-    break;
-
-  case 276:
-#line 1370 "/proj/llvm/llvm-3/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));
-    *(yyvsp[-4].String) = getCompareOp(*(yyvsp[-4].String), (yyvsp[-3].Type));
-    *(yyvsp[-4].String) += " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + ", " + Name2;
-    (yyval.Value).val = (yyvsp[-4].String);
-    (yyval.Value).type = new TypeInfo("bool",BoolTy);
-    (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
-  ;}
-    break;
-
-  case 277:
-#line 1379 "/proj/llvm/llvm-3/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));
-    *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + "," + Name2;
-    (yyval.Value).val = (yyvsp[-5].String);
-    (yyval.Value).type = new TypeInfo("bool",BoolTy);
-    delete (yyvsp[-4].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
-  ;}
-    break;
-
-  case 278:
-#line 1387 "/proj/llvm/llvm-3/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));
-    *(yyvsp[-5].String) += " " + *(yyvsp[-4].String) + " " + (yyvsp[-3].Type)->getNewTy() + " " + Name1 + "," + Name2;
-    (yyval.Value).val = (yyvsp[-5].String);
-    (yyval.Value).type = new TypeInfo("bool",BoolTy);
-    delete (yyvsp[-4].String); (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
-  ;}
-    break;
-
-  case 279:
-#line 1395 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    (yyval.Value) = (yyvsp[0].Value);
-    (yyval.Value).val->insert(0, *(yyvsp[-1].String) + " ");
-    delete (yyvsp[-1].String);
-  ;}
-    break;
-
-  case 280:
-#line 1400 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    const char* shiftop = (yyvsp[-3].String)->c_str();
-    if (*(yyvsp[-3].String) == "shr")
-      shiftop = ((yyvsp[-2].Value).type->isUnsigned()) ? "lshr" : "ashr";
-    (yyval.Value).val = new std::string(shiftop);
-    *(yyval.Value).val += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
-    (yyval.Value).type = (yyvsp[-2].Value).type;
-    delete (yyvsp[-3].String); delete (yyvsp[-2].Value).val; (yyvsp[0].Value).destroy();
-  ;}
-    break;
-
-  case 281:
-#line 1409 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    std::string source = *(yyvsp[-2].Value).val;
-    TypeInfo* SrcTy = (yyvsp[-2].Value).type;
-    TypeInfo* DstTy = ResolveType((yyvsp[0].Type));
-    (yyval.Value).val = new std::string();
-    if (*(yyvsp[-3].String) == "cast") {
-      *(yyval.Value).val +=  getCastUpgrade(source, SrcTy, DstTy, false);
+    yyval.String = yyvsp[-1].String; 
+  ;
+    break;}
+case 265:
+#line 1313 "/Volumes/ProjectsDisk/cvs/llvm/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() + "[");
+    Name += "," + *yyvsp[-1].Value.val + "]";
+    yyval.Value.val = new std::string(Name);
+    yyval.Value.type = yyvsp[-5].Type;
+    yyvsp[-3].Value.destroy(); yyvsp[-1].Value.destroy();
+  ;
+    break;}
+case 266:
+#line 1321 "/Volumes/ProjectsDisk/cvs/llvm/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 + "]";
+    yyvsp[-3].Value.destroy(); yyvsp[-1].Value.destroy();
+    yyval.Value = yyvsp[-6].Value;
+  ;
+    break;}
+case 267:
+#line 1330 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.ValList = new ValueList();
+    yyval.ValList->push_back(yyvsp[0].Value);
+  ;
+    break;}
+case 268:
+#line 1334 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.ValList = yyvsp[-2].ValList;
+    yyval.ValList->push_back(yyvsp[0].Value);
+  ;
+    break;}
+case 269:
+#line 1341 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.ValList = yyvsp[0].ValList; ;
+    break;}
+case 270:
+#line 1342 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.ValList = new ValueList(); ;
+    break;}
+case 271:
+#line 1346 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-1].String += " " + *yyvsp[0].String;
+    delete yyvsp[0].String;
+    yyval.String = yyvsp[-1].String;
+  ;
+    break;}
+case 273:
+#line 1354 "/Volumes/ProjectsDisk/cvs/llvm/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);
+    std::string Name2 = getUniqueName(yyvsp[0].Value.val, yyvsp[-3].Type);
+    yyval.Value.val = new std::string(op);
+    *yyval.Value.val += " " + yyvsp[-3].Type->getNewTy() + " " + Name1 + ", " + Name2;
+    yyval.Value.type = yyvsp[-3].Type;
+    delete yyvsp[-4].String; yyvsp[-2].Value.destroy(); yyvsp[0].Value.destroy();
+  ;
+    break;}
+case 274:
+#line 1363 "/Volumes/ProjectsDisk/cvs/llvm/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);
+    *yyvsp[-4].String += " " + yyvsp[-3].Type->getNewTy() + " " + Name1 + ", " + Name2;
+    yyval.Value.val = yyvsp[-4].String;
+    yyval.Value.type = yyvsp[-3].Type;
+    yyvsp[-2].Value.destroy(); yyvsp[0].Value.destroy();
+  ;
+    break;}
+case 275:
+#line 1371 "/Volumes/ProjectsDisk/cvs/llvm/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);
+    *yyvsp[-4].String = getCompareOp(*yyvsp[-4].String, yyvsp[-3].Type);
+    *yyvsp[-4].String += " " + yyvsp[-3].Type->getNewTy() + " " + Name1 + ", " + Name2;
+    yyval.Value.val = yyvsp[-4].String;
+    yyval.Value.type = new TypeInfo("bool",BoolTy);
+    yyvsp[-2].Value.destroy(); yyvsp[0].Value.destroy();
+  ;
+    break;}
+case 276:
+#line 1380 "/Volumes/ProjectsDisk/cvs/llvm/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);
+    *yyvsp[-5].String += " " + *yyvsp[-4].String + " " + yyvsp[-3].Type->getNewTy() + " " + Name1 + "," + Name2;
+    yyval.Value.val = yyvsp[-5].String;
+    yyval.Value.type = new TypeInfo("bool",BoolTy);
+    delete yyvsp[-4].String; yyvsp[-2].Value.destroy(); yyvsp[0].Value.destroy();
+  ;
+    break;}
+case 277:
+#line 1388 "/Volumes/ProjectsDisk/cvs/llvm/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);
+    *yyvsp[-5].String += " " + *yyvsp[-4].String + " " + yyvsp[-3].Type->getNewTy() + " " + Name1 + "," + Name2;
+    yyval.Value.val = yyvsp[-5].String;
+    yyval.Value.type = new TypeInfo("bool",BoolTy);
+    delete yyvsp[-4].String; yyvsp[-2].Value.destroy(); yyvsp[0].Value.destroy();
+  ;
+    break;}
+case 278:
+#line 1396 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    yyval.Value = yyvsp[0].Value;
+    yyval.Value.val->insert(0, *yyvsp[-1].String + " ");
+    delete yyvsp[-1].String;
+  ;
+    break;}
+case 279:
+#line 1401 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    const char* shiftop = yyvsp[-3].String->c_str();
+    if (*yyvsp[-3].String == "shr")
+      shiftop = (yyvsp[-2].Value.type->isUnsigned()) ? "lshr" : "ashr";
+    yyval.Value.val = new std::string(shiftop);
+    *yyval.Value.val += " " + *yyvsp[-2].Value.val + ", " + *yyvsp[0].Value.val;
+    yyval.Value.type = yyvsp[-2].Value.type;
+    delete yyvsp[-3].String; delete yyvsp[-2].Value.val; yyvsp[0].Value.destroy();
+  ;
+    break;}
+case 280:
+#line 1410 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    std::string source = *yyvsp[-2].Value.val;
+    TypeInfo* SrcTy = yyvsp[-2].Value.type;
+    TypeInfo* DstTy = ResolveType(yyvsp[0].Type);
+    yyval.Value.val = new std::string();
+    if (*yyvsp[-3].String == "cast") {
+      *yyval.Value.val +=  getCastUpgrade(source, SrcTy, DstTy, false);
     } else {
-      *(yyval.Value).val += *(yyvsp[-3].String) + " " + source + " to " + DstTy->getNewTy();
+      *yyval.Value.val += *yyvsp[-3].String + " " + source + " to " + DstTy->getNewTy();
     }
-    (yyval.Value).type = (yyvsp[0].Type);
+    yyval.Value.type = yyvsp[0].Type;
     // Check to see if this is a useless cast of a value to the same name
     // and the same type. Such casts will probably cause redefinition errors
     // when assembled and perform no code gen action so just remove them.
-    if (*(yyvsp[-3].String) == "cast" || *(yyvsp[-3].String) == "bitcast")
-      if ((yyvsp[-2].Value).type->isInteger() && DstTy->isInteger() &&
-          (yyvsp[-2].Value).type->getBitWidth() == DstTy->getBitWidth()) {
+    if (*yyvsp[-3].String == "cast" || *yyvsp[-3].String == "bitcast")
+      if (yyvsp[-2].Value.type->isInteger() && DstTy->isInteger() &&
+          yyvsp[-2].Value.type->getBitWidth() == DstTy->getBitWidth()) {
         deleteUselessCastFlag = true; // Flag the "Inst" rule
-        deleteUselessCastName = new std::string(*(yyvsp[-2].Value).val); // save the name
+        deleteUselessCastName = new std::string(*yyvsp[-2].Value.val); // save the name
         size_t pos = deleteUselessCastName->find_first_of("%\"",0);
         if (pos != std::string::npos) {
           // remove the type portion before val
           deleteUselessCastName->erase(0, pos);
         }
       }
-    delete (yyvsp[-3].String); (yyvsp[-2].Value).destroy();
-    delete (yyvsp[-1].String);
-  ;}
-    break;
-
-  case 282:
-#line 1437 "/proj/llvm/llvm-3/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);
-    (yyval.Value).type = (yyvsp[-2].Value).type;
-    (yyvsp[-4].Value).destroy(); delete (yyvsp[-2].Value).val; (yyvsp[0].Value).destroy();
-  ;}
-    break;
-
-  case 283:
-#line 1443 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + (yyvsp[0].Type)->getNewTy();
-    (yyval.Value).val = (yyvsp[-3].String);
-    (yyval.Value).type = (yyvsp[0].Type);
-    (yyvsp[-2].Value).destroy();
-  ;}
-    break;
-
-  case 284:
-#line 1449 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-3].String) += " " + *(yyvsp[-2].Value).val + ", " + *(yyvsp[0].Value).val;
-    (yyval.Value).val = (yyvsp[-3].String);
-    ResolveType((yyvsp[-2].Value).type);
-    (yyval.Value).type = (yyvsp[-2].Value).type->getElementType();
-    delete (yyvsp[-2].Value).val; (yyvsp[0].Value).destroy();
-  ;}
-    break;
-
-  case 285:
-#line 1456 "/proj/llvm/llvm-3/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);
-    (yyval.Value).type = (yyvsp[-4].Value).type;
-    delete (yyvsp[-4].Value).val; (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
-  ;}
-    break;
-
-  case 286:
-#line 1462 "/proj/llvm/llvm-3/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);
-    (yyval.Value).type = (yyvsp[-4].Value).type;
-    delete (yyvsp[-4].Value).val; (yyvsp[-2].Value).destroy(); (yyvsp[0].Value).destroy();
-  ;}
-    break;
-
-  case 287:
-#line 1468 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
-    (yyval.Value).val = (yyvsp[-1].String);
-    (yyval.Value).type = (yyvsp[0].Value).type;
-    delete (yyvsp[0].Value).val;
-  ;}
-    break;
-
-  case 288:
-#line 1474 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    if (!(yyvsp[-5].String)->empty())
-      *(yyvsp[-6].String) += " " + *(yyvsp[-5].String);
-    if (!(yyvsp[-6].String)->empty())
-      *(yyvsp[-6].String) += " ";
-    *(yyvsp[-6].String) += (yyvsp[-4].Type)->getNewTy() + " " + *(yyvsp[-3].Value).val + "(";
-    for (unsigned i = 0; i < (yyvsp[-1].ValList)->size(); ++i) {
-      ValueInfo& VI = (*(yyvsp[-1].ValList))[i];
-      *(yyvsp[-6].String) += *VI.val;
-      if (i+1 < (yyvsp[-1].ValList)->size())
-        *(yyvsp[-6].String) += ", ";
+    delete yyvsp[-3].String; yyvsp[-2].Value.destroy();
+    delete yyvsp[-1].String;
+  ;
+    break;}
+case 281:
+#line 1438 "/Volumes/ProjectsDisk/cvs/llvm/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;
+    yyval.Value.type = yyvsp[-2].Value.type;
+    yyvsp[-4].Value.destroy(); delete yyvsp[-2].Value.val; yyvsp[0].Value.destroy();
+  ;
+    break;}
+case 282:
+#line 1444 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-3].String += " " + *yyvsp[-2].Value.val + ", " + yyvsp[0].Type->getNewTy();
+    yyval.Value.val = yyvsp[-3].String;
+    yyval.Value.type = yyvsp[0].Type;
+    yyvsp[-2].Value.destroy();
+  ;
+    break;}
+case 283:
+#line 1450 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-3].String += " " + *yyvsp[-2].Value.val + ", " + *yyvsp[0].Value.val;
+    yyval.Value.val = yyvsp[-3].String;
+    ResolveType(yyvsp[-2].Value.type);
+    yyval.Value.type = yyvsp[-2].Value.type->getElementType();
+    delete yyvsp[-2].Value.val; yyvsp[0].Value.destroy();
+  ;
+    break;}
+case 284:
+#line 1457 "/Volumes/ProjectsDisk/cvs/llvm/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;
+    yyval.Value.type = yyvsp[-4].Value.type;
+    delete yyvsp[-4].Value.val; yyvsp[-2].Value.destroy(); yyvsp[0].Value.destroy();
+  ;
+    break;}
+case 285:
+#line 1463 "/Volumes/ProjectsDisk/cvs/llvm/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;
+    yyval.Value.type = yyvsp[-4].Value.type;
+    delete yyvsp[-4].Value.val; yyvsp[-2].Value.destroy(); yyvsp[0].Value.destroy();
+  ;
+    break;}
+case 286:
+#line 1469 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-1].String += " " + *yyvsp[0].Value.val;
+    yyval.Value.val = yyvsp[-1].String;
+    yyval.Value.type = yyvsp[0].Value.type;
+    delete yyvsp[0].Value.val;
+  ;
+    break;}
+case 287:
+#line 1475 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    if (!yyvsp[-5].String->empty())
+      *yyvsp[-6].String += " " + *yyvsp[-5].String;
+    if (!yyvsp[-6].String->empty())
+      *yyvsp[-6].String += " ";
+    *yyvsp[-6].String += yyvsp[-4].Type->getNewTy() + " " + *yyvsp[-3].Value.val + "(";
+    for (unsigned i = 0; i < yyvsp[-1].ValList->size(); ++i) {
+      ValueInfo& VI = (*yyvsp[-1].ValList)[i];
+      *yyvsp[-6].String += *VI.val;
+      if (i+1 < yyvsp[-1].ValList->size())
+        *yyvsp[-6].String += ", ";
       VI.destroy();
     }
-    *(yyvsp[-6].String) += ")";
-    (yyval.Value).val = (yyvsp[-6].String);
-    (yyval.Value).type = getFunctionReturnType((yyvsp[-4].Type));
-    delete (yyvsp[-5].String); delete (yyvsp[-4].Type); (yyvsp[-3].Value).destroy(); delete (yyvsp[-1].ValList);
-  ;}
-    break;
-
-  case 290:
-#line 1497 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.ValList) = (yyvsp[0].ValList); ;}
-    break;
-
-  case 291:
-#line 1498 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {  (yyval.ValList) = new ValueList(); ;}
-    break;
-
-  case 293:
-#line 1503 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    { (yyval.String) = new std::string(); ;}
-    break;
-
-  case 294:
-#line 1506 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy();
-    if (!(yyvsp[0].String)->empty())
-      *(yyvsp[-2].String) += " " + *(yyvsp[0].String);
-    (yyval.Value).val = (yyvsp[-2].String);
-    (yyval.Value).type = (yyvsp[-1].Type)->getPointerType();
-    delete (yyvsp[-1].Type); delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 295:
-#line 1514 "/proj/llvm/llvm-3/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;
-    if (!(yyvsp[0].String)->empty())
-      *(yyvsp[-5].String) += " " + *(yyvsp[0].String);
-    (yyval.Value).val = (yyvsp[-5].String);
-    (yyval.Value).type = (yyvsp[-4].Type)->getPointerType();
-    delete (yyvsp[-4].Type); delete (yyvsp[-2].Type); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 296:
-#line 1523 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-2].String) += " " + (yyvsp[-1].Type)->getNewTy();
-    if (!(yyvsp[0].String)->empty())
-      *(yyvsp[-2].String) += " " + *(yyvsp[0].String);
-    (yyval.Value).val = (yyvsp[-2].String);
-    (yyval.Value).type = (yyvsp[-1].Type)->getPointerType();
-    delete (yyvsp[-1].Type); delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 297:
-#line 1531 "/proj/llvm/llvm-3/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;
-    if (!(yyvsp[0].String)->empty())
-      *(yyvsp[-5].String) += " " + *(yyvsp[0].String);
-    (yyval.Value).val = (yyvsp[-5].String);
-    (yyval.Value).type = (yyvsp[-4].Type)->getPointerType();
-    delete (yyvsp[-4].Type); delete (yyvsp[-2].Type); (yyvsp[-1].Value).destroy(); delete (yyvsp[0].String);
-  ;}
-    break;
-
-  case 298:
-#line 1540 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    *(yyvsp[-1].String) += " " + *(yyvsp[0].Value).val;
-    (yyval.Value).val = (yyvsp[-1].String);
-    (yyval.Value).type = new TypeInfo("void", VoidTy); 
-    (yyvsp[0].Value).destroy();
-  ;}
-    break;
-
-  case 299:
-#line 1546 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type));
-    if (!(yyvsp[-3].String)->empty())
-      *(yyvsp[-3].String) += " ";
-    *(yyvsp[-3].String) += *(yyvsp[-2].String) + " " + (yyvsp[-1].Type)->getNewTy() + " " + Name;
-    (yyval.Value).val = (yyvsp[-3].String);
-    (yyval.Value).type = (yyvsp[-1].Type)->getElementType()->clone();
-    delete (yyvsp[-2].String); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy();
-  ;}
-    break;
-
-  case 300:
-#line 1555 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    std::string Name = getUniqueName((yyvsp[0].Value).val, (yyvsp[-1].Type));
-    if (!(yyvsp[-5].String)->empty())
-      *(yyvsp[-5].String) += " ";
-    *(yyvsp[-5].String) += *(yyvsp[-4].String) + " " + *(yyvsp[-3].Value).val + ", " + (yyvsp[-1].Type)->getNewTy() + " " + Name;
-    (yyval.Value).val = (yyvsp[-5].String);
-    (yyval.Value).type = new TypeInfo("void", VoidTy);
-    delete (yyvsp[-4].String); (yyvsp[-3].Value).destroy(); delete (yyvsp[-1].Type); (yyvsp[0].Value).destroy();
-  ;}
-    break;
-
-  case 301:
-#line 1564 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
-    {
-    std::string Name = getUniqueName((yyvsp[-1].Value).val, (yyvsp[-2].Type));
+    *yyvsp[-6].String += ")";
+    yyval.Value.val = yyvsp[-6].String;
+    yyval.Value.type = getFunctionReturnType(yyvsp[-4].Type);
+    delete yyvsp[-5].String; delete yyvsp[-4].Type; yyvsp[-3].Value.destroy(); delete yyvsp[-1].ValList;
+  ;
+    break;}
+case 289:
+#line 1498 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.ValList = yyvsp[0].ValList; ;
+    break;}
+case 290:
+#line 1499 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{  yyval.ValList = new ValueList(); ;
+    break;}
+case 292:
+#line 1504 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{ yyval.String = new std::string(); ;
+    break;}
+case 293:
+#line 1507 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-2].String += " " + yyvsp[-1].Type->getNewTy();
+    if (!yyvsp[0].String->empty())
+      *yyvsp[-2].String += " " + *yyvsp[0].String;
+    yyval.Value.val = yyvsp[-2].String;
+    yyval.Value.type = yyvsp[-1].Type->getPointerType();
+    delete yyvsp[-1].Type; delete yyvsp[0].String;
+  ;
+    break;}
+case 294:
+#line 1515 "/Volumes/ProjectsDisk/cvs/llvm/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;
+    if (!yyvsp[0].String->empty())
+      *yyvsp[-5].String += " " + *yyvsp[0].String;
+    yyval.Value.val = yyvsp[-5].String;
+    yyval.Value.type = yyvsp[-4].Type->getPointerType();
+    delete yyvsp[-4].Type; delete yyvsp[-2].Type; yyvsp[-1].Value.destroy(); delete yyvsp[0].String;
+  ;
+    break;}
+case 295:
+#line 1524 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-2].String += " " + yyvsp[-1].Type->getNewTy();
+    if (!yyvsp[0].String->empty())
+      *yyvsp[-2].String += " " + *yyvsp[0].String;
+    yyval.Value.val = yyvsp[-2].String;
+    yyval.Value.type = yyvsp[-1].Type->getPointerType();
+    delete yyvsp[-1].Type; delete yyvsp[0].String;
+  ;
+    break;}
+case 296:
+#line 1532 "/Volumes/ProjectsDisk/cvs/llvm/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;
+    if (!yyvsp[0].String->empty())
+      *yyvsp[-5].String += " " + *yyvsp[0].String;
+    yyval.Value.val = yyvsp[-5].String;
+    yyval.Value.type = yyvsp[-4].Type->getPointerType();
+    delete yyvsp[-4].Type; delete yyvsp[-2].Type; yyvsp[-1].Value.destroy(); delete yyvsp[0].String;
+  ;
+    break;}
+case 297:
+#line 1541 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    *yyvsp[-1].String += " " + *yyvsp[0].Value.val;
+    yyval.Value.val = yyvsp[-1].String;
+    yyval.Value.type = new TypeInfo("void", VoidTy); 
+    yyvsp[0].Value.destroy();
+  ;
+    break;}
+case 298:
+#line 1547 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    std::string Name = getUniqueName(yyvsp[0].Value.val, yyvsp[-1].Type);
+    if (!yyvsp[-3].String->empty())
+      *yyvsp[-3].String += " ";
+    *yyvsp[-3].String += *yyvsp[-2].String + " " + yyvsp[-1].Type->getNewTy() + " " + Name;
+    yyval.Value.val = yyvsp[-3].String;
+    yyval.Value.type = yyvsp[-1].Type->getElementType()->clone();
+    delete yyvsp[-2].String; delete yyvsp[-1].Type; yyvsp[0].Value.destroy();
+  ;
+    break;}
+case 299:
+#line 1556 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    std::string Name = getUniqueName(yyvsp[0].Value.val, yyvsp[-1].Type);
+    if (!yyvsp[-5].String->empty())
+      *yyvsp[-5].String += " ";
+    *yyvsp[-5].String += *yyvsp[-4].String + " " + *yyvsp[-3].Value.val + ", " + yyvsp[-1].Type->getNewTy() + " " + Name;
+    yyval.Value.val = yyvsp[-5].String;
+    yyval.Value.type = new TypeInfo("void", VoidTy);
+    delete yyvsp[-4].String; yyvsp[-3].Value.destroy(); delete yyvsp[-1].Type; yyvsp[0].Value.destroy();
+  ;
+    break;}
+case 300:
+#line 1565 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
+{
+    std::string Name = getUniqueName(yyvsp[-1].Value.val, yyvsp[-2].Type);
     // Upgrade the indices
-    for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) {
-      ValueInfo& VI = (*(yyvsp[0].ValList))[i];
+    for (unsigned i = 0; i < yyvsp[0].ValList->size(); ++i) {
+      ValueInfo& VI = (*yyvsp[0].ValList)[i];
       if (VI.type->isUnsigned() && !VI.isConstant() && 
           VI.type->getBitWidth() < 64) {
         std::string* old = VI.val;
@@ -4076,291 +3272,239 @@
         VI.type->setOldTy(ULongTy);
       }
     }
-    *(yyvsp[-3].String) += " " + (yyvsp[-2].Type)->getNewTy() + " " + Name;
-    for (unsigned i = 0; i < (yyvsp[0].ValList)->size(); ++i) {
-      ValueInfo& VI = (*(yyvsp[0].ValList))[i];
-      *(yyvsp[-3].String) += ", " + *VI.val;
+    *yyvsp[-3].String += " " + yyvsp[-2].Type->getNewTy() + " " + Name;
+    for (unsigned i = 0; i < yyvsp[0].ValList->size(); ++i) {
+      ValueInfo& VI = (*yyvsp[0].ValList)[i];
+      *yyvsp[-3].String += ", " + *VI.val;
     }
-    (yyval.Value).val = (yyvsp[-3].String);
-    (yyval.Value).type = getGEPIndexedType((yyvsp[-2].Type),(yyvsp[0].ValList)); 
-    (yyvsp[-1].Value).destroy(); delete (yyvsp[0].ValList);
-  ;}
-    break;
-
-
-      default: break;
-    }
-
-/* Line 1126 of yacc.c.  */
-#line 4096 "UpgradeParser.tab.c"
+    yyval.Value.val = yyvsp[-3].String;
+    yyval.Value.type = getGEPIndexedType(yyvsp[-2].Type,yyvsp[0].ValList); 
+    yyvsp[-1].Value.destroy(); delete yyvsp[0].ValList;
+  ;
+    break;}
+}
+   /* the action file gets copied in in place of this dollarsign */
+#line 543 "/usr/share/bison.simple"
 
   yyvsp -= yylen;
   yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+  yylsp -= yylen;
+#endif
 
-
-  YY_STACK_PRINT (yyss, yyssp);
+#if YYDEBUG != 0
+  if (yydebug)
+    {
+      short *ssp1 = yyss - 1;
+      fprintf (stderr, "state stack now");
+      while (ssp1 != yyssp)
+	fprintf (stderr, " %d", *++ssp1);
+      fprintf (stderr, "\n");
+    }
+#endif
 
   *++yyvsp = yyval;
 
+#ifdef YYLSP_NEEDED
+  yylsp++;
+  if (yylen == 0)
+    {
+      yylsp->first_line = yylloc.first_line;
+      yylsp->first_column = yylloc.first_column;
+      yylsp->last_line = (yylsp-1)->last_line;
+      yylsp->last_column = (yylsp-1)->last_column;
+      yylsp->text = 0;
+    }
+  else
+    {
+      yylsp->last_line = (yylsp+yylen-1)->last_line;
+      yylsp->last_column = (yylsp+yylen-1)->last_column;
+    }
+#endif
 
-  /* Now `shift' the result of the reduction.  Determine what state
-     that goes to, based on the state we popped back to and the rule
-     number reduced by.  */
+  /* Now "shift" the result of the reduction.
+     Determine what state that goes to,
+     based on the state we popped back to
+     and the rule number reduced by.  */
 
   yyn = yyr1[yyn];
 
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
     yystate = yytable[yystate];
   else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+    yystate = yydefgoto[yyn - YYNTBASE];
 
   goto yynewstate;
 
+yyerrlab:   /* here on detecting error */
 
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
-yyerrlab:
-  /* If not already recovering from an error, report this error.  */
-  if (!yyerrstatus)
+  if (! yyerrstatus)
+    /* If not already recovering from an error, report this error.  */
     {
       ++yynerrs;
-#if YYERROR_VERBOSE
+
+#ifdef YYERROR_VERBOSE
       yyn = yypact[yystate];
 
-      if (YYPACT_NINF < yyn && yyn < YYLAST)
+      if (yyn > YYFLAG && yyn < YYLAST)
 	{
-	  int yytype = YYTRANSLATE (yychar);
-	  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-	  YYSIZE_T yysize = yysize0;
-	  YYSIZE_T yysize1;
-	  int yysize_overflow = 0;
-	  char *yymsg = 0;
-#	  define YYERROR_VERBOSE_ARGS_MAXIMUM 5
-	  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-	  int yyx;
+	  int size = 0;
+	  char *msg;
+	  int x, count;
 
-#if 0
-	  /* This is so xgettext sees the translatable formats that are
-	     constructed on the fly.  */
-	  YY_("syntax error, unexpected %s");
-	  YY_("syntax error, unexpected %s, expecting %s");
-	  YY_("syntax error, unexpected %s, expecting %s or %s");
-	  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-	  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-#endif
-	  char *yyfmt;
-	  char const *yyf;
-	  static char const yyunexpected[] = "syntax error, unexpected %s";
-	  static char const yyexpecting[] = ", expecting %s";
-	  static char const yyor[] = " or %s";
-	  char yyformat[sizeof yyunexpected
-			+ sizeof yyexpecting - 1
-			+ ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-			   * (sizeof yyor - 1))];
-	  char const *yyprefix = yyexpecting;
-
-	  /* Start YYX at -YYN if negative to avoid negative indexes in
-	     YYCHECK.  */
-	  int yyxbegin = yyn < 0 ? -yyn : 0;
-
-	  /* Stay within bounds of both yycheck and yytname.  */
-	  int yychecklim = YYLAST - yyn;
-	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-	  int yycount = 1;
-
-	  yyarg[0] = yytname[yytype];
-	  yyfmt = yystpcpy (yyformat, yyunexpected);
-
-	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	      {
-		if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-		  {
-		    yycount = 1;
-		    yysize = yysize0;
-		    yyformat[sizeof yyunexpected - 1] = '\0';
-		    break;
-		  }
-		yyarg[yycount++] = yytname[yyx];
-		yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-		yysize_overflow |= yysize1 < yysize;
-		yysize = yysize1;
-		yyfmt = yystpcpy (yyfmt, yyprefix);
-		yyprefix = yyor;
-	      }
-
-	  yyf = YY_(yyformat);
-	  yysize1 = yysize + yystrlen (yyf);
-	  yysize_overflow |= yysize1 < yysize;
-	  yysize = yysize1;
-
-	  if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
-	    yymsg = (char *) YYSTACK_ALLOC (yysize);
-	  if (yymsg)
+	  count = 0;
+	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
+	  for (x = (yyn < 0 ? -yyn : 0);
+	       x < (sizeof(yytname) / sizeof(char *)); x++)
+	    if (yycheck[x + yyn] == x)
+	      size += strlen(yytname[x]) + 15, count++;
+	  msg = (char *) malloc(size + 15);
+	  if (msg != 0)
 	    {
-	      /* Avoid sprintf, as that infringes on the user's name space.
-		 Don't have undefined behavior even if the translation
-		 produced a string with the wrong number of "%s"s.  */
-	      char *yyp = yymsg;
-	      int yyi = 0;
-	      while ((*yyp = *yyf))
+	      strcpy(msg, "parse error");
+
+	      if (count < 5)
 		{
-		  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		    {
-		      yyp += yytnamerr (yyp, yyarg[yyi++]);
-		      yyf += 2;
-		    }
-		  else
-		    {
-		      yyp++;
-		      yyf++;
-		    }
+		  count = 0;
+		  for (x = (yyn < 0 ? -yyn : 0);
+		       x < (sizeof(yytname) / sizeof(char *)); x++)
+		    if (yycheck[x + yyn] == x)
+		      {
+			strcat(msg, count == 0 ? ", expecting `" : " or `");
+			strcat(msg, yytname[x]);
+			strcat(msg, "'");
+			count++;
+		      }
 		}
-	      yyerror (yymsg);
-	      YYSTACK_FREE (yymsg);
+	      yyerror(msg);
+	      free(msg);
 	    }
 	  else
-	    {
-	      yyerror (YY_("syntax error"));
-	      goto yyexhaustedlab;
-	    }
+	    yyerror ("parse error; also virtual memory exceeded");
 	}
       else
 #endif /* YYERROR_VERBOSE */
-	yyerror (YY_("syntax error"));
+	yyerror("parse error");
     }
 
-
+  goto yyerrlab1;
+yyerrlab1:   /* here on error raised explicitly by an action */
 
   if (yyerrstatus == 3)
     {
-      /* If just tried and failed to reuse look-ahead token after an
-	 error, discard it.  */
+      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
 
-      if (yychar <= YYEOF)
-        {
-	  /* Return failure if at end of input.  */
-	  if (yychar == YYEOF)
-	    YYABORT;
-        }
-      else
-	{
-	  yydestruct ("Error: discarding", yytoken, &yylval);
-	  yychar = YYEMPTY;
-	}
-    }
-
-  /* Else will try to reuse look-ahead token after shifting the error
-     token.  */
-  goto yyerrlab1;
-
-
-/*---------------------------------------------------.
-| yyerrorlab -- error raised explicitly by YYERROR.  |
-`---------------------------------------------------*/
-yyerrorlab:
-
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (0)
-     goto yyerrorlab;
-
-yyvsp -= yylen;
-  yyssp -= yylen;
-  yystate = *yyssp;
-  goto yyerrlab1;
-
-
-/*-------------------------------------------------------------.
-| yyerrlab1 -- common code for both syntax error and YYERROR.  |
-`-------------------------------------------------------------*/
-yyerrlab1:
-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
-
-  for (;;)
-    {
-      yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
-	{
-	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-	    {
-	      yyn = yytable[yyn];
-	      if (0 < yyn)
-		break;
-	    }
-	}
-
-      /* Pop the current state because it cannot handle the error token.  */
-      if (yyssp == yyss)
+      /* return failure if at end of input */
+      if (yychar == YYEOF)
 	YYABORT;
 
+#if YYDEBUG != 0
+      if (yydebug)
+	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
+#endif
 
-      yydestruct ("Error: popping", yystos[yystate], yyvsp);
-      YYPOPSTACK;
-      yystate = *yyssp;
-      YY_STACK_PRINT (yyss, yyssp);
+      yychar = YYEMPTY;
     }
 
+  /* Else will try to reuse lookahead token
+     after shifting the error token.  */
+
+  yyerrstatus = 3;		/* Each real token shifted decrements this */
+
+  goto yyerrhandle;
+
+yyerrdefault:  /* current state does not do anything special for the error token. */
+
+#if 0
+  /* This is wrong; only states that explicitly want error tokens
+     should shift them.  */
+  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
+  if (yyn) goto yydefault;
+#endif
+
+yyerrpop:   /* pop the current state because it cannot handle the error token */
+
+  if (yyssp == yyss) YYABORT;
+  yyvsp--;
+  yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+  yylsp--;
+#endif
+
+#if YYDEBUG != 0
+  if (yydebug)
+    {
+      short *ssp1 = yyss - 1;
+      fprintf (stderr, "Error: state stack now");
+      while (ssp1 != yyssp)
+	fprintf (stderr, " %d", *++ssp1);
+      fprintf (stderr, "\n");
+    }
+#endif
+
+yyerrhandle:
+
+  yyn = yypact[yystate];
+  if (yyn == YYFLAG)
+    goto yyerrdefault;
+
+  yyn += YYTERROR;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+    goto yyerrdefault;
+
+  yyn = yytable[yyn];
+  if (yyn < 0)
+    {
+      if (yyn == YYFLAG)
+	goto yyerrpop;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+  else if (yyn == 0)
+    goto yyerrpop;
+
   if (yyn == YYFINAL)
     YYACCEPT;
 
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Shifting error token, ");
+#endif
+
   *++yyvsp = yylval;
-
-
-  /* Shift the error token. */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+#ifdef YYLSP_NEEDED
+  *++yylsp = yylloc;
+#endif
 
   yystate = yyn;
   goto yynewstate;
 
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here.  |
-`-------------------------------------*/
-yyacceptlab:
-  yyresult = 0;
-  goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here.  |
-`-----------------------------------*/
-yyabortlab:
-  yyresult = 1;
-  goto yyreturn;
-
-#ifndef yyoverflow
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here.  |
-`-------------------------------------------------*/
-yyexhaustedlab:
-  yyerror (YY_("memory exhausted"));
-  yyresult = 2;
-  /* Fall through.  */
-#endif
-
-yyreturn:
-  if (yychar != YYEOF && yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-		 yytoken, &yylval);
-  while (yyssp != yyss)
+ yyacceptlab:
+  /* YYACCEPT comes here.  */
+  if (yyfree_stacks)
     {
-      yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp);
-      YYPOPSTACK;
-    }
-#ifndef yyoverflow
-  if (yyss != yyssa)
-    YYSTACK_FREE (yyss);
+      free (yyss);
+      free (yyvs);
+#ifdef YYLSP_NEEDED
+      free (yyls);
 #endif
-  return yyresult;
+    }
+  return 0;
+
+ yyabortlab:
+  /* YYABORT comes here.  */
+  if (yyfree_stacks)
+    {
+      free (yyss);
+      free (yyvs);
+#ifdef YYLSP_NEEDED
+      free (yyls);
+#endif
+    }
+  return 1;
 }
-
-
-#line 1588 "/proj/llvm/llvm-3/tools/llvm-upgrade/UpgradeParser.y"
+#line 1589 "/Volumes/ProjectsDisk/cvs/llvm/tools/llvm-upgrade/UpgradeParser.y"
 
 
 int yyerror(const char *ErrorMsg) {
@@ -4373,6 +3517,6 @@
   else
     errMsg += "token: '" + std::string(Upgradetext, Upgradeleng) + "'";
   std::cerr << "llvm-upgrade: " << errMsg << '\n';
+  *O << "llvm-upgrade parse failed.\n";
   exit(1);
 }
-
