diff --git a/lib/AsmParser/llvmAsmParser.cpp b/lib/AsmParser/llvmAsmParser.cpp
index dfae972..5cb9fff 100644
--- a/lib/AsmParser/llvmAsmParser.cpp
+++ b/lib/AsmParser/llvmAsmParser.cpp
@@ -1,113 +1,265 @@
+/* A Bison parser, made by GNU Bison 1.875c.  */
 
-/*  A Bison parser, made from /Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y
-    by GNU Bison version 1.28  */
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
-#define YYBISON 1  /* Identify Bison output.  */
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
 
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 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.  */
+
+/* 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
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+/* If NAME_PREFIX is specified substitute the variables and functions
+   names.  */
 #define yyparse llvmAsmparse
-#define yylex llvmAsmlex
+#define yylex   llvmAsmlex
 #define yyerror llvmAsmerror
-#define yylval llvmAsmlval
-#define yychar llvmAsmchar
+#define yylval  llvmAsmlval
+#define yychar  llvmAsmchar
 #define yydebug llvmAsmdebug
 #define yynerrs llvmAsmnerrs
-#define	ESINT64VAL	257
-#define	EUINT64VAL	258
-#define	SINTVAL	259
-#define	UINTVAL	260
-#define	FPVAL	261
-#define	VOID	262
-#define	BOOL	263
-#define	SBYTE	264
-#define	UBYTE	265
-#define	SHORT	266
-#define	USHORT	267
-#define	INT	268
-#define	UINT	269
-#define	LONG	270
-#define	ULONG	271
-#define	FLOAT	272
-#define	DOUBLE	273
-#define	TYPE	274
-#define	LABEL	275
-#define	VAR_ID	276
-#define	LABELSTR	277
-#define	STRINGCONSTANT	278
-#define	IMPLEMENTATION	279
-#define	ZEROINITIALIZER	280
-#define	TRUETOK	281
-#define	FALSETOK	282
-#define	BEGINTOK	283
-#define	ENDTOK	284
-#define	DECLARE	285
-#define	GLOBAL	286
-#define	CONSTANT	287
-#define	SECTION	288
-#define	VOLATILE	289
-#define	TO	290
-#define	DOTDOTDOT	291
-#define	NULL_TOK	292
-#define	UNDEF	293
-#define	CONST	294
-#define	INTERNAL	295
-#define	LINKONCE	296
-#define	WEAK	297
-#define	APPENDING	298
-#define	OPAQUE	299
-#define	NOT	300
-#define	EXTERNAL	301
-#define	TARGET	302
-#define	TRIPLE	303
-#define	ENDIAN	304
-#define	POINTERSIZE	305
-#define	LITTLE	306
-#define	BIG	307
-#define	ALIGN	308
-#define	DEPLIBS	309
-#define	CALL	310
-#define	TAIL	311
-#define	CC_TOK	312
-#define	CCC_TOK	313
-#define	FASTCC_TOK	314
-#define	COLDCC_TOK	315
-#define	RET	316
-#define	BR	317
-#define	SWITCH	318
-#define	INVOKE	319
-#define	UNWIND	320
-#define	UNREACHABLE	321
-#define	ADD	322
-#define	SUB	323
-#define	MUL	324
-#define	DIV	325
-#define	REM	326
-#define	AND	327
-#define	OR	328
-#define	XOR	329
-#define	SETLE	330
-#define	SETGE	331
-#define	SETLT	332
-#define	SETGT	333
-#define	SETEQ	334
-#define	SETNE	335
-#define	MALLOC	336
-#define	ALLOCA	337
-#define	FREE	338
-#define	LOAD	339
-#define	STORE	340
-#define	GETELEMENTPTR	341
-#define	PHI_TOK	342
-#define	CAST	343
-#define	SELECT	344
-#define	SHL	345
-#define	SHR	346
-#define	VAARG	347
-#define	EXTRACTELEMENT	348
-#define	INSERTELEMENT	349
-#define	VAARG_old	350
-#define	VANEXT_old	351
 
-#line 14 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     ESINT64VAL = 258,
+     EUINT64VAL = 259,
+     SINTVAL = 260,
+     UINTVAL = 261,
+     FPVAL = 262,
+     VOID = 263,
+     BOOL = 264,
+     SBYTE = 265,
+     UBYTE = 266,
+     SHORT = 267,
+     USHORT = 268,
+     INT = 269,
+     UINT = 270,
+     LONG = 271,
+     ULONG = 272,
+     FLOAT = 273,
+     DOUBLE = 274,
+     TYPE = 275,
+     LABEL = 276,
+     VAR_ID = 277,
+     LABELSTR = 278,
+     STRINGCONSTANT = 279,
+     IMPLEMENTATION = 280,
+     ZEROINITIALIZER = 281,
+     TRUETOK = 282,
+     FALSETOK = 283,
+     BEGINTOK = 284,
+     ENDTOK = 285,
+     DECLARE = 286,
+     GLOBAL = 287,
+     CONSTANT = 288,
+     SECTION = 289,
+     VOLATILE = 290,
+     TO = 291,
+     DOTDOTDOT = 292,
+     NULL_TOK = 293,
+     UNDEF = 294,
+     CONST = 295,
+     INTERNAL = 296,
+     LINKONCE = 297,
+     WEAK = 298,
+     APPENDING = 299,
+     OPAQUE = 300,
+     NOT = 301,
+     EXTERNAL = 302,
+     TARGET = 303,
+     TRIPLE = 304,
+     ENDIAN = 305,
+     POINTERSIZE = 306,
+     LITTLE = 307,
+     BIG = 308,
+     ALIGN = 309,
+     DEPLIBS = 310,
+     CALL = 311,
+     TAIL = 312,
+     CC_TOK = 313,
+     CCC_TOK = 314,
+     FASTCC_TOK = 315,
+     COLDCC_TOK = 316,
+     RET = 317,
+     BR = 318,
+     SWITCH = 319,
+     INVOKE = 320,
+     UNWIND = 321,
+     UNREACHABLE = 322,
+     ADD = 323,
+     SUB = 324,
+     MUL = 325,
+     DIV = 326,
+     REM = 327,
+     AND = 328,
+     OR = 329,
+     XOR = 330,
+     SETLE = 331,
+     SETGE = 332,
+     SETLT = 333,
+     SETGT = 334,
+     SETEQ = 335,
+     SETNE = 336,
+     MALLOC = 337,
+     ALLOCA = 338,
+     FREE = 339,
+     LOAD = 340,
+     STORE = 341,
+     GETELEMENTPTR = 342,
+     PHI_TOK = 343,
+     CAST = 344,
+     SELECT = 345,
+     SHL = 346,
+     SHR = 347,
+     VAARG = 348,
+     EXTRACTELEMENT = 349,
+     INSERTELEMENT = 350,
+     VAARG_old = 351,
+     VANEXT_old = 352
+   };
+#endif
+#define ESINT64VAL 258
+#define EUINT64VAL 259
+#define SINTVAL 260
+#define UINTVAL 261
+#define FPVAL 262
+#define VOID 263
+#define BOOL 264
+#define SBYTE 265
+#define UBYTE 266
+#define SHORT 267
+#define USHORT 268
+#define INT 269
+#define UINT 270
+#define LONG 271
+#define ULONG 272
+#define FLOAT 273
+#define DOUBLE 274
+#define TYPE 275
+#define LABEL 276
+#define VAR_ID 277
+#define LABELSTR 278
+#define STRINGCONSTANT 279
+#define IMPLEMENTATION 280
+#define ZEROINITIALIZER 281
+#define TRUETOK 282
+#define FALSETOK 283
+#define BEGINTOK 284
+#define ENDTOK 285
+#define DECLARE 286
+#define GLOBAL 287
+#define CONSTANT 288
+#define SECTION 289
+#define VOLATILE 290
+#define TO 291
+#define DOTDOTDOT 292
+#define NULL_TOK 293
+#define UNDEF 294
+#define CONST 295
+#define INTERNAL 296
+#define LINKONCE 297
+#define WEAK 298
+#define APPENDING 299
+#define OPAQUE 300
+#define NOT 301
+#define EXTERNAL 302
+#define TARGET 303
+#define TRIPLE 304
+#define ENDIAN 305
+#define POINTERSIZE 306
+#define LITTLE 307
+#define BIG 308
+#define ALIGN 309
+#define DEPLIBS 310
+#define CALL 311
+#define TAIL 312
+#define CC_TOK 313
+#define CCC_TOK 314
+#define FASTCC_TOK 315
+#define COLDCC_TOK 316
+#define RET 317
+#define BR 318
+#define SWITCH 319
+#define INVOKE 320
+#define UNWIND 321
+#define UNREACHABLE 322
+#define ADD 323
+#define SUB 324
+#define MUL 325
+#define DIV 326
+#define REM 327
+#define AND 328
+#define OR 329
+#define XOR 330
+#define SETLE 331
+#define SETGE 332
+#define SETLT 333
+#define SETGT 334
+#define SETEQ 335
+#define SETNE 336
+#define MALLOC 337
+#define ALLOCA 338
+#define FREE 339
+#define LOAD 340
+#define STORE 341
+#define GETELEMENTPTR 342
+#define PHI_TOK 343
+#define CAST 344
+#define SELECT 345
+#define SHL 346
+#define SHR 347
+#define VAARG 348
+#define EXTRACTELEMENT 349
+#define INSERTELEMENT 350
+#define VAARG_old 351
+#define VANEXT_old 352
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 14 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
 
 #include "ParserInternals.h"
 #include "llvm/CallingConv.h"
@@ -202,10 +354,10 @@
       ThrowException(UndefinedReferences);
     }
 
-    // Rename any overloaded intrinsic functions.
-    for (Module::iterator FI = CurrentModule->begin(), FE =
-         CurrentModule->end(); FI != FE; ++FI)
-      UpgradeIntrinsicFunction(&(*FI));
+    // Look for intrinsic functions and CallInst that need to be upgraded
+    for (Module::iterator FI = CurrentModule->begin(),FE = CurrentModule->end();
+         FI != FE; ++FI)
+      UpgradeCallsToIntrinsic(FI);
 
     Values.clear();         // Clear out function local definitions
     Types.clear();
@@ -971,8 +1123,23 @@
 }
 
 
-#line 878 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-typedef union {
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 878 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+typedef union YYSTYPE {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
   std::pair<llvm::PATypeHolder*, char*>  *ArgVal;
@@ -1011,939 +1178,1284 @@
   llvm::Instruction::OtherOps             OtherOpVal;
   llvm::Module::Endianness                Endianness;
 } YYSTYPE;
-#include <stdio.h>
-
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
+/* Line 191 of yacc.c.  */
+#line 1183 "llvmAsmParser.tab.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 
 
-#define	YYFINAL		460
-#define	YYFLAG		-32768
-#define	YYNTBASE	112
+/* Copy the second part of user declarations.  */
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 351 ? yytranslate[x] : 181)
 
-static const 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,   101,
-   102,   110,     2,    99,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,   106,
-    98,   107,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-   103,   100,   105,     2,     2,     2,     2,     2,   111,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,   104,
-     2,     2,   108,     2,   109,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     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
-};
+/* Line 214 of yacc.c.  */
+#line 1195 "llvmAsmParser.tab.c"
 
-#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,    67,    68,    70,    72,    74,    76,    77,
-    78,    80,    82,    84,    87,    88,    91,    92,    96,    99,
-   100,   102,   103,   107,   109,   112,   114,   116,   118,   120,
-   122,   124,   126,   128,   130,   132,   134,   136,   138,   140,
-   142,   144,   146,   148,   150,   152,   154,   157,   162,   168,
-   174,   178,   181,   184,   186,   190,   192,   196,   198,   199,
-   204,   208,   212,   217,   222,   226,   229,   232,   235,   238,
-   241,   244,   247,   250,   253,   256,   263,   269,   278,   285,
-   292,   299,   306,   313,   317,   319,   321,   323,   325,   328,
-   331,   334,   336,   341,   344,   345,   353,   354,   362,   366,
-   371,   372,   374,   376,   380,   384,   388,   392,   396,   398,
-   399,   401,   403,   405,   406,   409,   413,   415,   417,   421,
-   423,   424,   433,   435,   437,   441,   443,   445,   448,   449,
-   453,   455,   457,   459,   461,   463,   465,   467,   469,   473,
-   475,   477,   479,   481,   483,   486,   489,   492,   496,   499,
-   500,   502,   505,   508,   512,   522,   532,   541,   555,   557,
-   559,   566,   572,   575,   582,   590,   592,   596,   598,   599,
-   602,   604,   610,   616,   622,   625,   630,   635,   642,   647,
-   652,   657,   662,   669,   672,   680,   682,   685,   686,   688,
-   689,   693,   700,   704,   711,   714,   719,   726
-};
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
 
-static const short yyrhs[] = {     5,
-     0,     6,     0,     3,     0,     4,     0,    68,     0,    69,
-     0,    70,     0,    71,     0,    72,     0,    73,     0,    74,
-     0,    75,     0,    76,     0,    77,     0,    78,     0,    79,
-     0,    80,     0,    81,     0,    91,     0,    92,     0,    16,
-     0,    14,     0,    12,     0,    10,     0,    17,     0,    15,
-     0,    13,     0,    11,     0,   118,     0,   119,     0,    18,
-     0,    19,     0,   151,    98,     0,     0,    41,     0,    42,
-     0,    43,     0,    44,     0,     0,     0,    59,     0,    60,
-     0,    61,     0,    58,     4,     0,     0,    54,     4,     0,
-     0,    99,    54,     4,     0,    34,    24,     0,     0,   127,
-     0,     0,    99,   130,   129,     0,   127,     0,    54,     4,
-     0,   133,     0,     8,     0,   135,     0,     8,     0,   135,
-     0,     9,     0,    10,     0,    11,     0,    12,     0,    13,
-     0,    14,     0,    15,     0,    16,     0,    17,     0,    18,
-     0,    19,     0,    20,     0,    21,     0,    45,     0,   134,
-     0,   164,     0,   100,     4,     0,   132,   101,   137,   102,
-     0,   103,     4,   104,   135,   105,     0,   106,     4,   104,
-   135,   107,     0,   108,   136,   109,     0,   108,   109,     0,
-   135,   110,     0,   135,     0,   136,    99,   135,     0,   136,
-     0,   136,    99,    37,     0,    37,     0,     0,   133,   103,
-   140,   105,     0,   133,   103,   105,     0,   133,   111,    24,
-     0,   133,   106,   140,   107,     0,   133,   108,   140,   109,
-     0,   133,   108,   109,     0,   133,    38,     0,   133,    39,
-     0,   133,   164,     0,   133,   139,     0,   133,    26,     0,
-   118,   113,     0,   119,     4,     0,     9,    27,     0,     9,
-    28,     0,   121,     7,     0,    89,   101,   138,    36,   133,
-   102,     0,    87,   101,   138,   178,   102,     0,    90,   101,
-   138,    99,   138,    99,   138,   102,     0,   114,   101,   138,
-    99,   138,   102,     0,   115,   101,   138,    99,   138,   102,
-     0,   116,   101,   138,    99,   138,   102,     0,   117,   101,
-   138,    99,   138,   102,     0,    94,   101,   138,    99,   138,
-   102,     0,   140,    99,   138,     0,   138,     0,    32,     0,
-    33,     0,   143,     0,   143,   160,     0,   143,   161,     0,
-   143,    25,     0,   144,     0,   144,   122,    20,   131,     0,
-   144,   161,     0,     0,   144,   122,   123,   141,   138,   145,
-   129,     0,     0,   144,   122,    47,   141,   133,   146,   129,
-     0,   144,    48,   148,     0,   144,    55,    98,   149,     0,
-     0,    53,     0,    52,     0,    50,    98,   147,     0,    51,
-    98,     4,     0,    49,    98,    24,     0,   103,   150,   105,
-     0,   150,    99,    24,     0,    24,     0,     0,    22,     0,
-    24,     0,   151,     0,     0,   133,   152,     0,   154,    99,
-   153,     0,   153,     0,   154,     0,   154,    99,    37,     0,
-    37,     0,     0,   124,   131,   151,   101,   155,   102,   128,
-   125,     0,    29,     0,   108,     0,   123,   156,   157,     0,
-    30,     0,   109,     0,   167,   159,     0,     0,    31,   162,
-   156,     0,     3,     0,     4,     0,     7,     0,    27,     0,
-    28,     0,    38,     0,    39,     0,    26,     0,   106,   140,
-   107,     0,   139,     0,   112,     0,   151,     0,   164,     0,
-   163,     0,   133,   165,     0,   167,   168,     0,   158,   168,
-     0,   169,   122,   170,     0,   169,   172,     0,     0,    23,
-     0,    62,   166,     0,    62,     8,     0,    63,    21,   165,
-     0,    63,     9,   165,    99,    21,   165,    99,    21,   165,
-     0,    64,   120,   165,    99,    21,   165,   103,   171,   105,
-     0,    64,   120,   165,    99,    21,   165,   103,   105,     0,
-    65,   124,   131,   165,   101,   175,   102,    36,    21,   165,
-    66,    21,   165,     0,    66,     0,    67,     0,   171,   120,
-   163,    99,    21,   165,     0,   120,   163,    99,    21,   165,
-     0,   122,   177,     0,   133,   103,   165,    99,   165,   105,
-     0,   173,    99,   103,   165,    99,   165,   105,     0,   166,
-     0,   174,    99,   166,     0,   174,     0,     0,    57,    56,
-     0,    56,     0,   114,   133,   165,    99,   165,     0,   115,
-   133,   165,    99,   165,     0,   116,   133,   165,    99,   165,
-     0,    46,   166,     0,   117,   166,    99,   166,     0,    89,
-   166,    36,   133,     0,    90,   166,    99,   166,    99,   166,
-     0,    93,   166,    99,   133,     0,    96,   166,    99,   133,
-     0,    97,   166,    99,   133,     0,    94,   166,    99,   166,
-     0,    95,   166,    99,   166,    99,   166,     0,    88,   173,
-     0,   176,   124,   131,   165,   101,   175,   102,     0,   180,
-     0,    99,   174,     0,     0,    35,     0,     0,    82,   133,
-   126,     0,    82,   133,    99,    15,   165,   126,     0,    83,
-   133,   126,     0,    83,   133,    99,    15,   165,   126,     0,
-    84,   166,     0,   179,    85,   133,   165,     0,   179,    86,
-   166,    99,   133,   165,     0,    87,   133,   165,   178,     0
-};
+# ifndef YYFREE
+#  define YYFREE free
+# endif
+# ifndef YYMALLOC
+#  define YYMALLOC malloc
+# endif
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   define YYSTACK_ALLOC alloca
+#  endif
+# else
+#  if defined (alloca) || defined (_ALLOCA_H)
+#   define YYSTACK_ALLOC alloca
+#  else
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+#  if defined (__STDC__) || defined (__cplusplus)
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   define YYSIZE_T size_t
+#  endif
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+# 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 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) + 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					\
+	{					\
+	  register 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)
 
 #endif
 
-#if YYDEBUG != 0
-static const short yyrline[] = { 0,
-   997,   998,  1005,  1006,  1015,  1015,  1015,  1015,  1015,  1016,
-  1016,  1016,  1017,  1017,  1017,  1017,  1017,  1017,  1019,  1019,
-  1023,  1023,  1023,  1023,  1024,  1024,  1024,  1024,  1025,  1025,
-  1026,  1026,  1029,  1032,  1036,  1036,  1037,  1038,  1039,  1042,
-  1042,  1043,  1044,  1045,  1054,  1054,  1060,  1060,  1068,  1075,
-  1075,  1081,  1081,  1083,  1087,  1100,  1100,  1101,  1101,  1103,
-  1112,  1112,  1112,  1112,  1112,  1112,  1112,  1113,  1113,  1113,
-  1113,  1113,  1113,  1114,  1117,  1120,  1126,  1133,  1145,  1149,
-  1160,  1169,  1172,  1180,  1184,  1189,  1190,  1193,  1196,  1206,
-  1231,  1244,  1272,  1297,  1317,  1329,  1338,  1342,  1401,  1407,
-  1415,  1420,  1425,  1428,  1431,  1438,  1448,  1479,  1486,  1507,
-  1517,  1522,  1529,  1539,  1542,  1549,  1549,  1559,  1566,  1570,
-  1573,  1576,  1589,  1609,  1611,  1614,  1617,  1621,  1624,  1626,
-  1628,  1633,  1634,  1636,  1639,  1647,  1652,  1654,  1658,  1662,
-  1670,  1670,  1671,  1671,  1673,  1679,  1684,  1690,  1693,  1698,
-  1702,  1706,  1792,  1792,  1794,  1802,  1802,  1804,  1808,  1808,
-  1817,  1820,  1823,  1826,  1829,  1832,  1835,  1838,  1841,  1865,
-  1872,  1875,  1880,  1880,  1886,  1890,  1893,  1901,  1910,  1914,
-  1924,  1935,  1938,  1941,  1944,  1947,  1961,  1965,  2018,  2021,
-  2027,  2035,  2045,  2052,  2057,  2064,  2068,  2074,  2074,  2076,
-  2079,  2085,  2097,  2108,  2118,  2130,  2137,  2144,  2151,  2156,
-  2175,  2197,  2205,  2217,  2231,  2288,  2294,  2296,  2300,  2303,
-  2309,  2313,  2317,  2321,  2325,  2332,  2342,  2355
-};
-#endif
-
-
-#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-
-static const char * const yytname[] = {   "$","error","$undefined.","ESINT64VAL",
-"EUINT64VAL","SINTVAL","UINTVAL","FPVAL","VOID","BOOL","SBYTE","UBYTE","SHORT",
-"USHORT","INT","UINT","LONG","ULONG","FLOAT","DOUBLE","TYPE","LABEL","VAR_ID",
-"LABELSTR","STRINGCONSTANT","IMPLEMENTATION","ZEROINITIALIZER","TRUETOK","FALSETOK",
-"BEGINTOK","ENDTOK","DECLARE","GLOBAL","CONSTANT","SECTION","VOLATILE","TO",
-"DOTDOTDOT","NULL_TOK","UNDEF","CONST","INTERNAL","LINKONCE","WEAK","APPENDING",
-"OPAQUE","NOT","EXTERNAL","TARGET","TRIPLE","ENDIAN","POINTERSIZE","LITTLE",
-"BIG","ALIGN","DEPLIBS","CALL","TAIL","CC_TOK","CCC_TOK","FASTCC_TOK","COLDCC_TOK",
-"RET","BR","SWITCH","INVOKE","UNWIND","UNREACHABLE","ADD","SUB","MUL","DIV",
-"REM","AND","OR","XOR","SETLE","SETGE","SETLT","SETGT","SETEQ","SETNE","MALLOC",
-"ALLOCA","FREE","LOAD","STORE","GETELEMENTPTR","PHI_TOK","CAST","SELECT","SHL",
-"SHR","VAARG","EXTRACTELEMENT","INSERTELEMENT","VAARG_old","VANEXT_old","'='",
-"','","'\\\\'","'('","')'","'['","'x'","']'","'<'","'>'","'{'","'}'","'*'","'c'",
-"INTVAL","EINT64VAL","ArithmeticOps","LogicalOps","SetCondOps","ShiftOps","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","FunctionList","ConstPool",
-"@1","@2","BigOrLittle","TargetDefinition","LibrariesDefinition","LibList","Name",
-"OptName","ArgVal","ArgListH","ArgList","FunctionHeaderH","BEGIN","FunctionHeader",
-"END","Function","FunctionProto","@3","ConstValueRef","SymbolicValueRef","ValueRef",
-"ResolvedVal","BasicBlockList","BasicBlock","InstructionList","BBTerminatorInst",
-"JumpTable","Inst","PHIList","ValueRefList","ValueRefListE","OptTailCall","InstVal",
-"IndexList","OptVolatile","MemoryInst", NULL
-};
-#endif
-
-static const short yyr1[] = {     0,
-   112,   112,   113,   113,   114,   114,   114,   114,   114,   115,
-   115,   115,   116,   116,   116,   116,   116,   116,   117,   117,
-   118,   118,   118,   118,   119,   119,   119,   119,   120,   120,
-   121,   121,   122,   122,   123,   123,   123,   123,   123,   124,
-   124,   124,   124,   124,   125,   125,   126,   126,   127,   128,
-   128,   129,   129,   130,   130,   131,   131,   132,   132,   133,
-   134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-   134,   134,   134,   135,   135,   135,   135,   135,   135,   135,
-   135,   135,   135,   136,   136,   137,   137,   137,   137,   138,
-   138,   138,   138,   138,   138,   138,   138,   138,   138,   138,
-   138,   138,   138,   138,   138,   139,   139,   139,   139,   139,
-   139,   139,   139,   140,   140,   141,   141,   142,   143,   143,
-   143,   143,   144,   144,   145,   144,   146,   144,   144,   144,
-   144,   147,   147,   148,   148,   148,   149,   150,   150,   150,
-   151,   151,   152,   152,   153,   154,   154,   155,   155,   155,
-   155,   156,   157,   157,   158,   159,   159,   160,   162,   161,
-   163,   163,   163,   163,   163,   163,   163,   163,   163,   163,
-   164,   164,   165,   165,   166,   167,   167,   168,   169,   169,
-   169,   170,   170,   170,   170,   170,   170,   170,   170,   170,
-   171,   171,   172,   173,   173,   174,   174,   175,   175,   176,
-   176,   177,   177,   177,   177,   177,   177,   177,   177,   177,
-   177,   177,   177,   177,   177,   177,   178,   178,   179,   179,
-   180,   180,   180,   180,   180,   180,   180,   180
-};
-
-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,     2,     0,     1,     1,     1,     1,     0,     0,
-     1,     1,     1,     2,     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,     1,     2,     4,     5,     5,
-     3,     2,     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,     6,     6,     3,     1,     1,     1,     1,     2,     2,
-     2,     1,     4,     2,     0,     7,     0,     7,     3,     4,
-     0,     1,     1,     3,     3,     3,     3,     3,     1,     0,
-     1,     1,     1,     0,     2,     3,     1,     1,     3,     1,
-     0,     8,     1,     1,     3,     1,     1,     2,     0,     3,
-     1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
-     1,     1,     1,     1,     2,     2,     2,     3,     2,     0,
-     1,     2,     2,     3,     9,     9,     8,    13,     1,     1,
-     6,     5,     2,     6,     7,     1,     3,     1,     0,     2,
-     1,     5,     5,     5,     2,     4,     4,     6,     4,     4,
-     4,     4,     6,     2,     7,     1,     2,     0,     1,     0,
-     3,     6,     3,     6,     2,     4,     6,     4
-};
-
-static const short yydefact[] = {   131,
-    39,   122,   121,   159,    35,    36,    37,    38,    40,   180,
-   119,   120,   180,   141,   142,     0,     0,    39,     0,   124,
-    40,     0,    41,    42,    43,     0,     0,   181,   177,    34,
-   156,   157,   158,   176,     0,     0,     0,   129,     0,     0,
-     0,     0,    33,   160,    44,     1,     2,    57,    61,    62,
-    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-    73,    74,     0,     0,     0,     0,   171,     0,     0,    56,
-    75,    60,   172,    76,   153,   154,   155,   220,   179,     0,
-     0,     0,   140,   130,   123,   116,   117,     0,     0,    77,
-     0,     0,    59,    82,    84,     0,     0,    89,    83,   219,
-     0,   201,     0,     0,     0,     0,    40,   189,   190,     5,
-     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,     0,     0,     0,     0,     0,     0,     0,
-    19,    20,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   178,    40,   193,     0,   216,   136,   133,   132,   134,
-   135,   139,     0,   127,    61,    62,    63,    64,    65,    66,
-    67,    68,    69,    70,    71,     0,     0,     0,     0,   125,
-     0,     0,     0,    81,   151,    88,    86,     0,     0,   205,
-   200,   183,   182,     0,     0,    24,    28,    23,    27,    22,
-    26,    21,    25,    29,    30,     0,     0,    47,    47,   225,
-     0,     0,   214,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   137,    52,
-   103,   104,     3,     4,   101,   102,   105,   100,    96,    97,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    99,    98,    52,    58,    58,    85,   150,   144,
-   147,   148,     0,     0,    78,   161,   162,   163,   168,   164,
-   165,   166,   167,     0,   170,   174,   173,   175,     0,   184,
-     0,     0,     0,   221,     0,   223,   218,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   138,     0,   128,     0,     0,     0,     0,
-    91,   115,     0,     0,    95,     0,    92,     0,     0,     0,
-     0,   126,    79,    80,   143,   145,     0,    50,    87,     0,
-     0,     0,     0,     0,     0,     0,     0,   228,     0,     0,
-   207,     0,   209,   212,     0,   210,   211,     0,     0,     0,
-   206,     0,   226,     0,     0,     0,    54,    52,   218,     0,
-     0,     0,     0,    90,    93,    94,     0,     0,     0,     0,
-   149,   146,    51,    45,   169,     0,     0,   199,    47,    48,
-    47,   196,   217,     0,     0,     0,     0,   202,   203,   204,
-   199,     0,    49,    55,    53,     0,     0,     0,     0,   114,
-     0,     0,     0,     0,     0,   152,     0,     0,   198,     0,
-     0,   222,   224,     0,     0,     0,   208,   213,     0,   227,
-   107,     0,     0,     0,     0,     0,     0,     0,    46,     0,
-     0,     0,   197,   194,     0,   215,   106,     0,   113,   109,
-   110,   111,   112,     0,   187,     0,     0,     0,   195,     0,
-   185,     0,   186,     0,     0,   108,     0,     0,     0,     0,
-     0,     0,   192,     0,     0,   191,   188,     0,     0,     0
-};
-
-static const short yydefgoto[] = {    67,
-   225,   239,   240,   241,   242,   166,   167,   196,   168,    18,
-     9,    26,   396,   274,   347,   364,   296,   348,    68,    69,
-   179,    71,    72,    96,   178,   302,   265,   303,    88,   458,
-     1,     2,   245,   220,   150,    38,    84,   153,    73,   316,
-   251,   252,   253,    27,    77,    10,    33,    11,    12,    21,
-   266,    74,   268,   372,    13,    29,    30,   142,   437,    79,
-   203,   399,   400,   143,   144,   328,   145,   146
-};
-
-static const short yypact[] = {-32768,
-    94,   198,-32768,-32768,-32768,-32768,-32768,-32768,   100,    26,
--32768,-32768,   -14,-32768,-32768,    96,   -77,    80,   -47,-32768,
-   100,   104,-32768,-32768,-32768,   976,   -16,-32768,-32768,    67,
--32768,-32768,-32768,-32768,    22,    35,    69,-32768,    62,   976,
-     3,     3,-32768,-32768,-32768,-32768,-32768,    76,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   166,   175,   182,    66,-32768,    67,    86,-32768,
--32768,   -67,-32768,-32768,-32768,-32768,-32768,  1095,-32768,   164,
-   -34,   187,   169,-32768,-32768,-32768,-32768,   998,  1042,-32768,
-    92,    93,-32768,-32768,   -67,    -3,    98,   729,-32768,-32768,
-   998,-32768,   144,  1102,    -1,   369,   100,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   998,   998,   998,   998,   998,   998,   998,
--32768,-32768,   998,   998,   998,   998,   998,   998,   998,   998,
-   998,-32768,   100,-32768,    19,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,     4,-32768,   102,   139,   199,   149,   200,   151,
-   201,   160,   202,   195,   209,   178,   203,   210,   371,-32768,
-   998,   998,   998,-32768,   767,-32768,   109,   117,   549,-32768,
--32768,    76,-32768,   549,   549,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,   549,   976,   122,   128,-32768,
-   549,   125,   133,   197,   135,   136,   137,   138,   148,   150,
-   549,   549,   549,   153,   976,   998,   998,   219,-32768,   156,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   147,   157,   161,   165,   833,  1042,   504,   233,   168,   174,
-   176,   177,-32768,-32768,   156,   -40,   -43,   -67,-32768,    67,
--32768,   162,   163,   871,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,  1042,-32768,-32768,-32768,-32768,   171,-32768,
-   180,   549,    -4,-32768,     7,-32768,   181,   549,   173,   998,
-   998,   998,   998,   998,   998,   998,   190,   191,   193,   998,
-   549,   549,   194,-32768,    39,-32768,  1042,  1042,  1042,  1042,
--32768,-32768,    45,    27,-32768,    -2,-32768,  1042,  1042,  1042,
-  1042,-32768,-32768,-32768,-32768,-32768,   938,   247,-32768,    32,
-   246,   265,   196,   549,   290,   549,   998,-32768,   206,   549,
--32768,   220,-32768,-32768,   221,-32768,-32768,   549,   549,   549,
--32768,   222,-32768,   998,   271,   295,-32768,   156,   181,   264,
-   223,   225,  1042,-32768,-32768,-32768,   227,   229,   230,   232,
--32768,-32768,-32768,   267,-32768,   549,   549,   998,   235,-32768,
-   235,-32768,   236,   549,   237,   998,   998,-32768,-32768,-32768,
-   998,   549,-32768,-32768,-32768,   242,   998,  1042,  1042,-32768,
-  1042,  1042,  1042,  1042,   297,-32768,   238,   244,   236,   243,
-   294,-32768,-32768,   998,   245,   549,-32768,-32768,   249,-32768,
--32768,   250,   254,   253,   255,   256,   257,   258,-32768,   328,
-    13,   320,-32768,-32768,   259,-32768,-32768,  1042,-32768,-32768,
--32768,-32768,-32768,   549,-32768,   630,    43,   348,-32768,   268,
--32768,   272,-32768,   630,   549,-32768,   351,   274,   308,   549,
-   354,   366,-32768,   549,   549,-32768,-32768,   388,   389,-32768
-};
-
-static const short yypgoto[] = {-32768,
--32768,   312,   313,   314,   316,  -105,  -104,  -404,-32768,   368,
-   378,   -75,-32768,  -193,    81,-32768,  -238,-32768,   -35,-32768,
-   -26,-32768,   -56,   302,-32768,   -85,   234,  -198,   362,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,     1,-32768,
-    88,-32768,-32768,   387,-32768,-32768,-32768,-32768,   409,-32768,
-  -304,   -28,   129,   -89,-32768,   399,-32768,-32768,-32768,-32768,
--32768,    87,    34,-32768,-32768,    64,-32768,-32768
-};
-
-
-#define	YYLAST		1210
-
-
-static const short yytable[] = {    70,
-   194,   195,    19,   170,    85,   276,   312,   184,    28,    95,
-   324,   180,    75,    70,   183,    31,   436,   148,   149,   185,
-    39,   326,   186,   187,   188,   189,   190,   191,   192,   193,
-    19,   197,   444,   -58,    86,    87,   200,   304,   306,   204,
-   205,    95,    99,   206,   207,   208,   209,   210,    28,   325,
-    43,   214,   186,   187,   188,   189,   190,   191,   192,   193,
-   325,   154,   169,   314,   313,   320,    99,   215,    97,    99,
-    46,    47,   345,    93,    49,    50,    51,    52,    53,    54,
-    55,    56,    57,    58,    59,    60,    61,    14,    14,    15,
-    15,    76,   346,  -118,    32,   173,   353,   198,   199,    40,
-   201,   202,   218,   216,   217,   174,   356,    45,   219,   385,
-    62,   211,   212,   213,   246,   247,   248,   435,     3,    80,
-     5,     6,     7,     8,     4,   353,    41,   293,   221,   222,
-   353,   442,    81,   355,     5,     6,     7,     8,   365,   448,
-   244,   -24,   -24,   353,    35,    36,    37,   443,   250,   354,
-   267,   -23,   -23,   -22,   -22,   267,   267,    22,    23,    24,
-    25,   272,   -21,   -21,    83,    63,    82,   267,    64,    90,
-    70,    65,   267,    66,    94,   402,   -59,   403,    91,   291,
-   223,   224,   267,   267,   267,    92,    98,   147,    70,   292,
-   151,   332,   152,   334,   335,   171,   172,   248,   175,   181,
-   341,   -31,   -28,   -27,   -26,   -25,   226,   254,   169,   169,
-   169,   349,   350,   351,   352,   -32,   227,   -34,   255,    14,
-   273,    15,   357,   358,   359,   360,   275,   278,     4,   -34,
-   -34,   279,   280,   281,   282,   283,   284,   169,   -34,   -34,
-   -34,   -34,   294,   267,   -34,    16,   285,   297,   286,   267,
-   315,   290,    17,   331,   295,   333,   307,   298,   336,   337,
-   317,   299,   267,   267,   318,   300,   366,   390,   308,   321,
-   169,   169,   169,   169,   309,   330,   310,   311,   322,   327,
-   345,   169,   169,   169,   169,   367,   407,   408,   338,   339,
-   250,   340,   344,   370,   383,   267,   368,   267,   384,   387,
-   419,   267,   413,   414,   374,   415,   416,   417,   418,   267,
-   267,   267,   269,   270,   423,   194,   195,   382,   376,   377,
-   395,   388,   381,   389,   271,   391,   169,   392,   393,   277,
-   394,   194,   195,   401,   404,   406,   420,   267,   267,   287,
-   288,   289,   440,   411,   422,   267,   421,   325,   434,   424,
-   426,   427,   428,   267,   429,   438,   430,   431,   432,   433,
-   412,   169,   169,   439,   169,   169,   169,   169,   445,   446,
-   447,   450,   451,   452,   454,    46,    47,   267,   186,   187,
-   188,   189,   190,   191,   192,   193,   455,   459,   460,   138,
-   139,   140,    14,   141,    15,    42,   228,    78,   363,   177,
-   323,   169,   243,    89,   362,   267,   329,    44,   229,   230,
-    20,    34,   386,   373,   409,     0,   267,     0,     0,   342,
-   343,   267,     0,     0,     0,   267,   267,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   110,   111,
-   112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-   122,   123,   369,     0,   371,     0,     0,   231,   375,   232,
-   233,   131,   132,     0,   234,     0,   378,   379,   380,     0,
-     0,     0,     0,   235,     0,     0,   236,     0,   237,     0,
-     0,   238,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   397,   398,     0,     0,     0,     0,
-     0,     0,   405,     0,     0,     0,     0,     0,    46,    47,
-   410,    93,   155,   156,   157,   158,   159,   160,   161,   162,
-   163,   164,   165,    60,    61,    14,     0,    15,     0,     0,
-     0,     0,     0,     0,   425,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    62,     0,
-     0,   256,   257,    46,    47,   258,     0,     0,     0,     0,
-     0,     0,   441,     0,     0,     0,     0,     0,     0,     0,
-    14,     0,    15,   449,   259,   260,   261,     0,   453,     0,
-     0,     0,   456,   457,     0,     0,   262,   263,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    63,     0,     0,    64,     0,     0,    65,
-     0,    66,   305,     0,     0,     0,   110,   111,   112,   113,
-   114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     0,     0,   256,   257,     0,   231,   258,   232,   233,   131,
-   132,     0,   234,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   264,   259,   260,   261,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   262,   263,     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,   110,   111,   112,
-   113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-   123,     0,     0,     0,     0,     0,   231,     0,   232,   233,
-   131,   132,     0,   234,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    46,    47,   264,    93,    49,    50,    51,
-    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-    14,     0,    15,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   176,     0,     0,     0,     0,
-     0,    46,    47,    62,    93,    49,    50,    51,    52,    53,
-    54,    55,    56,    57,    58,    59,    60,    61,    14,     0,
-    15,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   249,     0,     0,     0,     0,     0,     0,
-     0,    62,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    63,     0,
-     0,    64,     0,     0,    65,     0,    66,    46,    47,     0,
-    93,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-   164,   165,    60,    61,    14,     0,    15,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    63,     0,     0,    64,
-     0,     0,    65,     0,    66,    46,    47,    62,    93,    49,
-    50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-    60,    61,    14,     0,    15,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   319,     0,     0,
-     0,     0,     0,     0,     0,    62,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    63,     0,     0,    64,     0,   301,    65,     0,
-    66,     0,    46,    47,     0,    93,    49,    50,    51,    52,
-    53,    54,    55,    56,    57,    58,    59,    60,    61,    14,
-     0,    15,     0,     0,     0,     0,     0,     0,     0,     0,
-    63,     0,     0,    64,   361,     0,    65,     0,    66,     0,
-    46,    47,    62,    48,    49,    50,    51,    52,    53,    54,
-    55,    56,    57,    58,    59,    60,    61,    14,     0,    15,
-     0,     0,    46,    47,     0,    93,    49,    50,    51,    52,
-    53,    54,    55,    56,    57,    58,    59,    60,    61,    14,
-    62,    15,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    63,     0,     0,
-    64,     0,    62,    65,     0,    66,    46,    47,     0,    93,
-   155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-   165,    60,    61,    14,     0,    15,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    63,     0,     0,    64,     0,
-     0,    65,     0,    66,     0,     0,    62,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    63,     0,     0,
-    64,     0,     0,    65,     0,    66,    46,    47,     0,   182,
-    49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-    59,    60,    61,    14,     0,    15,     0,     0,     0,   100,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   101,    63,     0,     0,    64,     0,    62,    65,     0,    66,
-   102,   103,     0,     0,     0,     0,   104,   105,   106,   107,
-   108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,   126,     0,
-     0,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-   136,   137,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    63,     0,     0,    64,     0,     0,    65,     0,    66
-};
-
-static const short yycheck[] = {    26,
-   106,   106,     2,    89,    40,   199,   245,     9,    23,    66,
-    15,   101,    29,    40,   104,    30,   421,    52,    53,    21,
-    98,    15,    10,    11,    12,    13,    14,    15,    16,    17,
-    30,   107,   437,   101,    32,    33,   126,   236,   237,   129,
-   130,    98,   110,   133,   134,   135,   136,   137,    23,    54,
-    98,   141,    10,    11,    12,    13,    14,    15,    16,    17,
-    54,    88,    89,   107,   105,   264,   110,   143,    68,   110,
-     5,     6,    34,     8,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    22,    24,
-    24,   108,    54,     0,   109,    99,    99,   124,   125,    20,
-   127,   128,    99,    85,    86,   109,   109,     4,   105,   348,
-    45,   138,   139,   140,   171,   172,   173,   105,    25,    98,
-    41,    42,    43,    44,    31,    99,    47,   217,    27,    28,
-    99,   436,    98,   107,    41,    42,    43,    44,   107,   444,
-   169,     3,     4,    99,    49,    50,    51,   105,   175,   105,
-   179,     3,     4,     3,     4,   184,   185,    58,    59,    60,
-    61,   197,     3,     4,   103,   100,    98,   196,   103,     4,
-   197,   106,   201,   108,   109,   369,   101,   371,     4,   215,
-     3,     4,   211,   212,   213,     4,   101,    24,   215,   216,
-     4,   281,    24,   283,   284,   104,   104,   254,   101,    56,
-   290,     7,     4,     4,     4,     4,     4,    99,   235,   236,
-   237,   297,   298,   299,   300,     7,     7,    20,   102,    22,
-    99,    24,   308,   309,   310,   311,    99,   103,    31,    32,
-    33,    99,    36,    99,    99,    99,    99,   264,    41,    42,
-    43,    44,    24,   272,    47,    48,    99,   101,    99,   278,
-   250,    99,    55,   280,    99,   282,    24,   101,   285,   286,
-    99,   101,   291,   292,   102,   101,    21,   353,   101,    99,
-   297,   298,   299,   300,   101,   103,   101,   101,    99,    99,
-    34,   308,   309,   310,   311,    21,   376,   377,    99,    99,
-   317,    99,    99,     4,    24,   324,   101,   326,     4,    36,
-     4,   330,   388,   389,    99,   391,   392,   393,   394,   338,
-   339,   340,   184,   185,   404,   421,   421,   344,    99,    99,
-    54,    99,   101,    99,   196,    99,   353,    99,    99,   201,
-    99,   437,   437,    99,    99,    99,    99,   366,   367,   211,
-   212,   213,   428,   102,   102,   374,   103,    54,    21,   105,
-   102,   102,    99,   382,   102,    36,   102,   102,   102,   102,
-   387,   388,   389,   105,   391,   392,   393,   394,    21,   102,
-    99,    21,    99,    66,    21,     5,     6,   406,    10,    11,
-    12,    13,    14,    15,    16,    17,    21,     0,     0,    78,
-    78,    78,    22,    78,    24,    18,    26,    30,   318,    98,
-   272,   428,   169,    42,   317,   434,   278,    21,    38,    39,
-     2,    13,   349,   327,   381,    -1,   445,    -1,    -1,   291,
-   292,   450,    -1,    -1,    -1,   454,   455,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,
-    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-    80,    81,   324,    -1,   326,    -1,    -1,    87,   330,    89,
-    90,    91,    92,    -1,    94,    -1,   338,   339,   340,    -1,
-    -1,    -1,    -1,   103,    -1,    -1,   106,    -1,   108,    -1,
-    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   366,   367,    -1,    -1,    -1,    -1,
-    -1,    -1,   374,    -1,    -1,    -1,    -1,    -1,     5,     6,
-   382,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    -1,    24,    -1,    -1,
-    -1,    -1,    -1,    -1,   406,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,
-    -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
-    -1,    -1,   434,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    22,    -1,    24,   445,    26,    27,    28,    -1,   450,    -1,
-    -1,    -1,   454,   455,    -1,    -1,    38,    39,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   100,    -1,    -1,   103,    -1,    -1,   106,
-    -1,   108,   109,    -1,    -1,    -1,    68,    69,    70,    71,
-    72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-    -1,    -1,     3,     4,    -1,    87,     7,    89,    90,    91,
-    92,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   106,    26,    27,    28,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    39,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    70,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    -1,    -1,    -1,    -1,    -1,    87,    -1,    89,    90,
-    91,    92,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,     5,     6,   106,     8,     9,    10,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
-    -1,     5,     6,    45,     8,     9,    10,    11,    12,    13,
-    14,    15,    16,    17,    18,    19,    20,    21,    22,    -1,
-    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,    -1,
-    -1,   103,    -1,    -1,   106,    -1,   108,     5,     6,    -1,
-     8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-    18,    19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   100,    -1,    -1,   103,
-    -1,    -1,   106,    -1,   108,     5,     6,    45,     8,     9,
-    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    20,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   100,    -1,    -1,   103,    -1,   105,   106,    -1,
-   108,    -1,     5,     6,    -1,     8,     9,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   100,    -1,    -1,   103,    37,    -1,   106,    -1,   108,    -1,
-     5,     6,    45,     8,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    -1,    24,
-    -1,    -1,     5,     6,    -1,     8,     9,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-    45,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,    -1,    -1,
-   103,    -1,    45,   106,    -1,   108,     5,     6,    -1,     8,
-     9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   100,    -1,    -1,   103,    -1,
-    -1,   106,    -1,   108,    -1,    -1,    45,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,    -1,    -1,
-   103,    -1,    -1,   106,    -1,   108,     5,     6,    -1,     8,
-     9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,    35,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    46,   100,    -1,    -1,   103,    -1,    45,   106,    -1,   108,
-    56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,    77,    78,    79,    80,    81,    82,    83,    84,    -1,
-    -1,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-    96,    97,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   100,    -1,    -1,   103,    -1,    -1,   106,    -1,   108
-};
-/* -*-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
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
 #else
-#define YYSTACK_ALLOC malloc
+   typedef short yysigned_char;
 #endif
 
-/* 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.  */
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  4
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   1210
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  112
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  70
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  229
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  460
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   352
+
+#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,
+     101,   102,   110,     2,    99,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     106,    98,   107,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,   103,   100,   105,     2,     2,     2,     2,     2,   111,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     104,     2,     2,   108,     2,   109,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     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
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned short 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,    70,    71,    73,    75,    77,
+      79,    80,    81,    83,    85,    87,    90,    91,    94,    95,
+      99,   102,   103,   105,   106,   110,   112,   115,   117,   119,
+     121,   123,   125,   127,   129,   131,   133,   135,   137,   139,
+     141,   143,   145,   147,   149,   151,   153,   155,   157,   160,
+     165,   171,   177,   181,   184,   187,   189,   193,   195,   199,
+     201,   202,   207,   211,   215,   220,   225,   229,   232,   235,
+     238,   241,   244,   247,   250,   253,   256,   259,   266,   272,
+     281,   288,   295,   302,   309,   316,   320,   322,   324,   326,
+     328,   331,   334,   337,   339,   344,   347,   348,   356,   357,
+     365,   369,   374,   375,   377,   379,   383,   387,   391,   395,
+     399,   401,   402,   404,   406,   408,   409,   412,   416,   418,
+     420,   424,   426,   427,   436,   438,   440,   444,   446,   448,
+     451,   452,   456,   458,   460,   462,   464,   466,   468,   470,
+     472,   476,   478,   480,   482,   484,   486,   489,   492,   495,
+     499,   502,   503,   505,   508,   511,   515,   525,   535,   544,
+     558,   560,   562,   569,   575,   578,   585,   593,   595,   599,
+     601,   602,   605,   607,   613,   619,   625,   628,   633,   638,
+     645,   650,   655,   660,   665,   672,   675,   683,   685,   688,
+     689,   691,   692,   696,   703,   707,   714,   717,   722,   729
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short yyrhs[] =
+{
+     143,     0,    -1,     5,    -1,     6,    -1,     3,    -1,     4,
+      -1,    68,    -1,    69,    -1,    70,    -1,    71,    -1,    72,
+      -1,    73,    -1,    74,    -1,    75,    -1,    76,    -1,    77,
+      -1,    78,    -1,    79,    -1,    80,    -1,    81,    -1,    91,
+      -1,    92,    -1,    16,    -1,    14,    -1,    12,    -1,    10,
+      -1,    17,    -1,    15,    -1,    13,    -1,    11,    -1,   119,
+      -1,   120,    -1,    18,    -1,    19,    -1,   152,    98,    -1,
+      -1,    41,    -1,    42,    -1,    43,    -1,    44,    -1,    -1,
+      -1,    59,    -1,    60,    -1,    61,    -1,    58,     4,    -1,
+      -1,    54,     4,    -1,    -1,    99,    54,     4,    -1,    34,
+      24,    -1,    -1,   128,    -1,    -1,    99,   131,   130,    -1,
+     128,    -1,    54,     4,    -1,   134,    -1,     8,    -1,   136,
+      -1,     8,    -1,   136,    -1,     9,    -1,    10,    -1,    11,
+      -1,    12,    -1,    13,    -1,    14,    -1,    15,    -1,    16,
+      -1,    17,    -1,    18,    -1,    19,    -1,    20,    -1,    21,
+      -1,    45,    -1,   135,    -1,   165,    -1,   100,     4,    -1,
+     133,   101,   138,   102,    -1,   103,     4,   104,   136,   105,
+      -1,   106,     4,   104,   136,   107,    -1,   108,   137,   109,
+      -1,   108,   109,    -1,   136,   110,    -1,   136,    -1,   137,
+      99,   136,    -1,   137,    -1,   137,    99,    37,    -1,    37,
+      -1,    -1,   134,   103,   141,   105,    -1,   134,   103,   105,
+      -1,   134,   111,    24,    -1,   134,   106,   141,   107,    -1,
+     134,   108,   141,   109,    -1,   134,   108,   109,    -1,   134,
+      38,    -1,   134,    39,    -1,   134,   165,    -1,   134,   140,
+      -1,   134,    26,    -1,   119,   114,    -1,   120,     4,    -1,
+       9,    27,    -1,     9,    28,    -1,   122,     7,    -1,    89,
+     101,   139,    36,   134,   102,    -1,    87,   101,   139,   179,
+     102,    -1,    90,   101,   139,    99,   139,    99,   139,   102,
+      -1,   115,   101,   139,    99,   139,   102,    -1,   116,   101,
+     139,    99,   139,   102,    -1,   117,   101,   139,    99,   139,
+     102,    -1,   118,   101,   139,    99,   139,   102,    -1,    94,
+     101,   139,    99,   139,   102,    -1,   141,    99,   139,    -1,
+     139,    -1,    32,    -1,    33,    -1,   144,    -1,   144,   161,
+      -1,   144,   162,    -1,   144,    25,    -1,   145,    -1,   145,
+     123,    20,   132,    -1,   145,   162,    -1,    -1,   145,   123,
+     124,   142,   139,   146,   130,    -1,    -1,   145,   123,    47,
+     142,   134,   147,   130,    -1,   145,    48,   149,    -1,   145,
+      55,    98,   150,    -1,    -1,    53,    -1,    52,    -1,    50,
+      98,   148,    -1,    51,    98,     4,    -1,    49,    98,    24,
+      -1,   103,   151,   105,    -1,   151,    99,    24,    -1,    24,
+      -1,    -1,    22,    -1,    24,    -1,   152,    -1,    -1,   134,
+     153,    -1,   155,    99,   154,    -1,   154,    -1,   155,    -1,
+     155,    99,    37,    -1,    37,    -1,    -1,   125,   132,   152,
+     101,   156,   102,   129,   126,    -1,    29,    -1,   108,    -1,
+     124,   157,   158,    -1,    30,    -1,   109,    -1,   168,   160,
+      -1,    -1,    31,   163,   157,    -1,     3,    -1,     4,    -1,
+       7,    -1,    27,    -1,    28,    -1,    38,    -1,    39,    -1,
+      26,    -1,   106,   141,   107,    -1,   140,    -1,   113,    -1,
+     152,    -1,   165,    -1,   164,    -1,   134,   166,    -1,   168,
+     169,    -1,   159,   169,    -1,   170,   123,   171,    -1,   170,
+     173,    -1,    -1,    23,    -1,    62,   167,    -1,    62,     8,
+      -1,    63,    21,   166,    -1,    63,     9,   166,    99,    21,
+     166,    99,    21,   166,    -1,    64,   121,   166,    99,    21,
+     166,   103,   172,   105,    -1,    64,   121,   166,    99,    21,
+     166,   103,   105,    -1,    65,   125,   132,   166,   101,   176,
+     102,    36,    21,   166,    66,    21,   166,    -1,    66,    -1,
+      67,    -1,   172,   121,   164,    99,    21,   166,    -1,   121,
+     164,    99,    21,   166,    -1,   123,   178,    -1,   134,   103,
+     166,    99,   166,   105,    -1,   174,    99,   103,   166,    99,
+     166,   105,    -1,   167,    -1,   175,    99,   167,    -1,   175,
+      -1,    -1,    57,    56,    -1,    56,    -1,   115,   134,   166,
+      99,   166,    -1,   116,   134,   166,    99,   166,    -1,   117,
+     134,   166,    99,   166,    -1,    46,   167,    -1,   118,   167,
+      99,   167,    -1,    89,   167,    36,   134,    -1,    90,   167,
+      99,   167,    99,   167,    -1,    93,   167,    99,   134,    -1,
+      96,   167,    99,   134,    -1,    97,   167,    99,   134,    -1,
+      94,   167,    99,   167,    -1,    95,   167,    99,   167,    99,
+     167,    -1,    88,   174,    -1,   177,   125,   132,   166,   101,
+     176,   102,    -1,   181,    -1,    99,   175,    -1,    -1,    35,
+      -1,    -1,    82,   134,   127,    -1,    82,   134,    99,    15,
+     166,   127,    -1,    83,   134,   127,    -1,    83,   134,    99,
+      15,   166,   127,    -1,    84,   167,    -1,   180,    85,   134,
+     166,    -1,   180,    86,   167,    99,   134,   166,    -1,    87,
+     134,   166,   179,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short yyrline[] =
+{
+       0,   997,   997,   998,  1005,  1006,  1015,  1015,  1015,  1015,
+    1015,  1016,  1016,  1016,  1017,  1017,  1017,  1017,  1017,  1017,
+    1019,  1019,  1023,  1023,  1023,  1023,  1024,  1024,  1024,  1024,
+    1025,  1025,  1026,  1026,  1029,  1032,  1036,  1037,  1038,  1039,
+    1040,  1042,  1043,  1044,  1045,  1046,  1054,  1055,  1060,  1061,
+    1068,  1075,  1076,  1081,  1082,  1083,  1087,  1100,  1100,  1101,
+    1101,  1103,  1112,  1112,  1112,  1112,  1112,  1112,  1112,  1113,
+    1113,  1113,  1113,  1113,  1113,  1114,  1117,  1120,  1126,  1133,
+    1145,  1149,  1160,  1169,  1172,  1180,  1184,  1189,  1190,  1193,
+    1196,  1206,  1231,  1244,  1272,  1297,  1317,  1329,  1338,  1342,
+    1401,  1407,  1415,  1420,  1425,  1428,  1431,  1438,  1448,  1479,
+    1486,  1507,  1517,  1522,  1529,  1539,  1542,  1549,  1549,  1559,
+    1566,  1570,  1573,  1576,  1589,  1609,  1611,  1611,  1617,  1617,
+    1624,  1626,  1628,  1633,  1634,  1636,  1639,  1647,  1652,  1654,
+    1658,  1662,  1670,  1670,  1671,  1671,  1673,  1679,  1684,  1690,
+    1693,  1698,  1702,  1706,  1792,  1792,  1794,  1802,  1802,  1804,
+    1808,  1808,  1817,  1820,  1823,  1826,  1829,  1832,  1835,  1838,
+    1841,  1865,  1872,  1875,  1880,  1880,  1886,  1890,  1893,  1901,
+    1910,  1914,  1924,  1935,  1938,  1941,  1944,  1947,  1961,  1965,
+    2018,  2021,  2027,  2035,  2045,  2052,  2057,  2064,  2068,  2074,
+    2074,  2076,  2079,  2085,  2097,  2108,  2118,  2130,  2137,  2144,
+    2151,  2156,  2175,  2197,  2205,  2217,  2231,  2288,  2294,  2296,
+    2300,  2303,  2309,  2313,  2317,  2321,  2325,  2332,  2342,  2355
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE
+/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "ESINT64VAL", "EUINT64VAL", "SINTVAL",
+  "UINTVAL", "FPVAL", "VOID", "BOOL", "SBYTE", "UBYTE", "SHORT", "USHORT",
+  "INT", "UINT", "LONG", "ULONG", "FLOAT", "DOUBLE", "TYPE", "LABEL",
+  "VAR_ID", "LABELSTR", "STRINGCONSTANT", "IMPLEMENTATION",
+  "ZEROINITIALIZER", "TRUETOK", "FALSETOK", "BEGINTOK", "ENDTOK",
+  "DECLARE", "GLOBAL", "CONSTANT", "SECTION", "VOLATILE", "TO",
+  "DOTDOTDOT", "NULL_TOK", "UNDEF", "CONST", "INTERNAL", "LINKONCE",
+  "WEAK", "APPENDING", "OPAQUE", "NOT", "EXTERNAL", "TARGET", "TRIPLE",
+  "ENDIAN", "POINTERSIZE", "LITTLE", "BIG", "ALIGN", "DEPLIBS", "CALL",
+  "TAIL", "CC_TOK", "CCC_TOK", "FASTCC_TOK", "COLDCC_TOK", "RET", "BR",
+  "SWITCH", "INVOKE", "UNWIND", "UNREACHABLE", "ADD", "SUB", "MUL", "DIV",
+  "REM", "AND", "OR", "XOR", "SETLE", "SETGE", "SETLT", "SETGT", "SETEQ",
+  "SETNE", "MALLOC", "ALLOCA", "FREE", "LOAD", "STORE", "GETELEMENTPTR",
+  "PHI_TOK", "CAST", "SELECT", "SHL", "SHR", "VAARG", "EXTRACTELEMENT",
+  "INSERTELEMENT", "VAARG_old", "VANEXT_old", "'='", "','", "'\\\\'",
+  "'('", "')'", "'['", "'x'", "']'", "'<'", "'>'", "'{'", "'}'", "'*'",
+  "'c'", "$accept", "INTVAL", "EINT64VAL", "ArithmeticOps", "LogicalOps",
+  "SetCondOps", "ShiftOps", "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", "FunctionList", "ConstPool", "@1",
+  "@2", "BigOrLittle", "TargetDefinition", "LibrariesDefinition",
+  "LibList", "Name", "OptName", "ArgVal", "ArgListH", "ArgList",
+  "FunctionHeaderH", "BEGIN", "FunctionHeader", "END", "Function",
+  "FunctionProto", "@3", "ConstValueRef", "SymbolicValueRef", "ValueRef",
+  "ResolvedVal", "BasicBlockList", "BasicBlock", "InstructionList",
+  "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 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,    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,   112,   113,   113,   114,   114,   115,   115,   115,   115,
+     115,   116,   116,   116,   117,   117,   117,   117,   117,   117,
+     118,   118,   119,   119,   119,   119,   120,   120,   120,   120,
+     121,   121,   122,   122,   123,   123,   124,   124,   124,   124,
+     124,   125,   125,   125,   125,   125,   126,   126,   127,   127,
+     128,   129,   129,   130,   130,   131,   131,   132,   132,   133,
+     133,   134,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   136,   136,   136,   136,   136,
+     136,   136,   136,   136,   136,   137,   137,   138,   138,   138,
+     138,   139,   139,   139,   139,   139,   139,   139,   139,   139,
+     139,   139,   139,   139,   139,   139,   139,   140,   140,   140,
+     140,   140,   140,   140,   140,   141,   141,   142,   142,   143,
+     144,   144,   144,   144,   145,   145,   146,   145,   147,   145,
+     145,   145,   145,   148,   148,   149,   149,   149,   150,   151,
+     151,   151,   152,   152,   153,   153,   154,   155,   155,   156,
+     156,   156,   156,   157,   158,   158,   159,   160,   160,   161,
+     163,   162,   164,   164,   164,   164,   164,   164,   164,   164,
+     164,   164,   165,   165,   166,   166,   167,   168,   168,   169,
+     170,   170,   170,   171,   171,   171,   171,   171,   171,   171,
+     171,   171,   172,   172,   173,   174,   174,   175,   175,   176,
+     176,   177,   177,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   179,   179,
+     180,   180,   181,   181,   181,   181,   181,   181,   181,   181
+};
+
+/* 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,     2,     0,     1,     1,     1,     1,
+       0,     0,     1,     1,     1,     2,     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,     1,     2,     4,
+       5,     5,     3,     2,     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,     6,     6,     3,     1,     1,     1,     1,
+       2,     2,     2,     1,     4,     2,     0,     7,     0,     7,
+       3,     4,     0,     1,     1,     3,     3,     3,     3,     3,
+       1,     0,     1,     1,     1,     0,     2,     3,     1,     1,
+       3,     1,     0,     8,     1,     1,     3,     1,     1,     2,
+       0,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       3,     1,     1,     1,     1,     1,     2,     2,     2,     3,
+       2,     0,     1,     2,     2,     3,     9,     9,     8,    13,
+       1,     1,     6,     5,     2,     6,     7,     1,     3,     1,
+       0,     2,     1,     5,     5,     5,     2,     4,     4,     6,
+       4,     4,     4,     4,     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 char yydefact[] =
+{
+     132,     0,    40,   123,     1,   122,   160,    36,    37,    38,
+      39,    41,   181,   120,   121,   181,   142,   143,     0,     0,
+      40,     0,   125,    41,     0,    42,    43,    44,     0,     0,
+     182,   178,    35,   157,   158,   159,   177,     0,     0,     0,
+     130,     0,     0,     0,     0,    34,   161,    45,     2,     3,
+      58,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,     0,     0,     0,     0,   172,
+       0,     0,    57,    76,    61,   173,    77,   154,   155,   156,
+     221,   180,     0,     0,     0,   141,   131,   124,   117,   118,
+       0,     0,    78,     0,     0,    60,    83,    85,     0,     0,
+      90,    84,   220,     0,   202,     0,     0,     0,     0,    41,
+     190,   191,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
+       0,     0,     0,    20,    21,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   179,    41,   194,     0,   217,   137,
+     134,   133,   135,   136,   140,     0,   128,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,     0,     0,
+       0,     0,   126,     0,     0,     0,    82,   152,    89,    87,
+       0,     0,   206,   201,   184,   183,     0,     0,    25,    29,
+      24,    28,    23,    27,    22,    26,    30,    31,     0,     0,
+      48,    48,   226,     0,     0,   215,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   138,    53,   104,   105,     4,     5,   102,   103,   106,
+     101,    97,    98,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   100,    99,    53,    59,    59,
+      86,   151,   145,   148,   149,     0,     0,    79,   162,   163,
+     164,   169,   165,   166,   167,   168,     0,   171,   175,   174,
+     176,     0,   185,     0,     0,     0,   222,     0,   224,   219,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   139,     0,   129,     0,
+       0,     0,     0,    92,   116,     0,     0,    96,     0,    93,
+       0,     0,     0,     0,   127,    80,    81,   144,   146,     0,
+      51,    88,     0,     0,     0,     0,     0,     0,     0,     0,
+     229,     0,     0,   208,     0,   210,   213,     0,   211,   212,
+       0,     0,     0,   207,     0,   227,     0,     0,     0,    55,
+      53,   219,     0,     0,     0,     0,    91,    94,    95,     0,
+       0,     0,     0,   150,   147,    52,    46,   170,     0,     0,
+     200,    48,    49,    48,   197,   218,     0,     0,     0,     0,
+     203,   204,   205,   200,     0,    50,    56,    54,     0,     0,
+       0,     0,   115,     0,     0,     0,     0,     0,   153,     0,
+       0,   199,     0,     0,   223,   225,     0,     0,     0,   209,
+     214,     0,   228,   108,     0,     0,     0,     0,     0,     0,
+       0,    47,     0,     0,     0,   198,   195,     0,   216,   107,
+       0,   114,   110,   111,   112,   113,     0,   188,     0,     0,
+       0,   196,     0,   186,     0,   187,     0,     0,   109,     0,
+       0,     0,     0,     0,     0,   193,     0,     0,   192,   189
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short yydefgoto[] =
+{
+      -1,    69,   227,   241,   242,   243,   244,   168,   169,   198,
+     170,    20,    11,    28,   398,   276,   349,   366,   298,   350,
+      70,    71,   181,    73,    74,    98,   180,   304,   267,   305,
+      90,     1,     2,     3,   247,   222,   152,    40,    86,   155,
+      75,   318,   253,   254,   255,    29,    79,    12,    35,    13,
+      14,    23,   268,    76,   270,   374,    15,    31,    32,   144,
+     439,    81,   205,   401,   402,   145,   146,   330,   147,   148
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -407
+static const short yypact[] =
+{
+    -407,    19,    94,   198,  -407,  -407,  -407,  -407,  -407,  -407,
+    -407,    71,    28,  -407,  -407,   -14,  -407,  -407,    58,    -7,
+      80,    22,  -407,    71,    60,  -407,  -407,  -407,   976,   -16,
+    -407,  -407,   121,  -407,  -407,  -407,  -407,    46,    69,    72,
+    -407,   -35,   976,     3,     3,  -407,  -407,  -407,  -407,  -407,
+      49,  -407,  -407,  -407,  -407,  -407,  -407,  -407,  -407,  -407,
+    -407,  -407,  -407,  -407,  -407,   161,   173,   175,    66,  -407,
+     121,    87,  -407,  -407,   -67,  -407,  -407,  -407,  -407,  -407,
+    1095,  -407,   167,    52,   189,   172,  -407,  -407,  -407,  -407,
+     998,  1042,  -407,    93,    95,  -407,  -407,   -67,    -6,    99,
+     729,  -407,  -407,   998,  -407,   146,  1102,    -1,   369,    71,
+    -407,  -407,  -407,  -407,  -407,  -407,  -407,  -407,  -407,  -407,
+    -407,  -407,  -407,  -407,  -407,  -407,   998,   998,   998,   998,
+     998,   998,   998,  -407,  -407,   998,   998,   998,   998,   998,
+     998,   998,   998,   998,  -407,    71,  -407,    67,  -407,  -407,
+    -407,  -407,  -407,  -407,  -407,    34,  -407,   131,   151,   199,
+     157,   200,   160,   201,   178,   202,   209,   210,   183,   203,
+     212,   371,  -407,   998,   998,   998,  -407,   767,  -407,   109,
+     119,   549,  -407,  -407,    49,  -407,   549,   549,  -407,  -407,
+    -407,  -407,  -407,  -407,  -407,  -407,  -407,  -407,   549,   976,
+     128,   129,  -407,   549,   130,   133,   207,   135,   136,   137,
+     138,   148,   149,   549,   549,   549,   150,   976,   998,   998,
+     227,  -407,   156,  -407,  -407,  -407,  -407,  -407,  -407,  -407,
+    -407,  -407,  -407,   164,   165,   166,   168,   833,  1042,   504,
+     233,   169,   174,   176,   177,  -407,  -407,   156,    37,   -89,
+     -67,  -407,   121,  -407,   159,   179,   871,  -407,  -407,  -407,
+    -407,  -407,  -407,  -407,  -407,  -407,  1042,  -407,  -407,  -407,
+    -407,   162,  -407,   163,   549,    -4,  -407,     7,  -407,   180,
+     549,   186,   998,   998,   998,   998,   998,   998,   998,   181,
+     187,   191,   998,   549,   549,   193,  -407,    15,  -407,  1042,
+    1042,  1042,  1042,  -407,  -407,    41,   -34,  -407,    -3,  -407,
+    1042,  1042,  1042,  1042,  -407,  -407,  -407,  -407,  -407,   938,
+     242,  -407,   -10,   272,   273,   194,   549,   293,   549,   998,
+    -407,   206,   549,  -407,   220,  -407,  -407,   221,  -407,  -407,
+     549,   549,   549,  -407,   222,  -407,   998,   275,   296,  -407,
+     156,   180,   265,   223,   225,  1042,  -407,  -407,  -407,   229,
+     230,   232,   235,  -407,  -407,  -407,   267,  -407,   549,   549,
+     998,   236,  -407,   236,  -407,   237,   549,   238,   998,   998,
+    -407,  -407,  -407,   998,   549,  -407,  -407,  -407,   224,   998,
+    1042,  1042,  -407,  1042,  1042,  1042,  1042,   340,  -407,   246,
+     244,   237,   247,   294,  -407,  -407,   998,   245,   549,  -407,
+    -407,   249,  -407,  -407,   250,   254,   253,   255,   256,   257,
+     258,  -407,   335,    13,   328,  -407,  -407,   264,  -407,  -407,
+    1042,  -407,  -407,  -407,  -407,  -407,   549,  -407,   630,    43,
+     349,  -407,   269,  -407,   274,  -407,   630,   549,  -407,   351,
+     276,   308,   549,   366,   367,  -407,   549,   549,  -407,  -407
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const short yypgoto[] =
+{
+    -407,  -407,  -407,   309,   310,   311,   312,  -107,  -106,  -406,
+    -407,   362,   376,   -78,  -407,  -195,    78,  -407,  -240,  -407,
+     -37,  -407,   -28,  -407,   -58,   299,  -407,   -87,   234,  -200,
+     356,  -407,  -407,  -407,  -407,  -407,  -407,  -407,  -407,  -407,
+       0,  -407,    84,  -407,  -407,   381,  -407,  -407,  -407,  -407,
+     405,  -407,  -312,   -30,   127,   -91,  -407,   396,  -407,  -407,
+    -407,  -407,  -407,    83,    30,  -407,  -407,    63,  -407,  -407
+};
+
+/* 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 -120
+static const short yytable[] =
+{
+      72,   196,   197,    21,   172,    87,   278,   314,   186,    30,
+      97,   326,   182,    77,    72,   185,    33,   438,   316,     4,
+     187,   101,   328,   188,   189,   190,   191,   192,   193,   194,
+     195,   199,    21,   446,   -59,    88,    89,   202,   306,   308,
+     206,   207,    97,   101,   208,   209,   210,   211,   212,   347,
+     327,    30,   216,   188,   189,   190,   191,   192,   193,   194,
+     195,   327,   156,   171,    47,   355,   322,   217,    85,   348,
+      99,    48,    49,   357,    95,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    16,   355,
+      17,    41,    78,   175,  -119,    34,   355,   367,   200,   201,
+      42,   203,   204,   176,   150,   151,   358,    37,    38,    39,
+     387,    64,   213,   214,   215,   248,   249,   250,   437,     5,
+      45,     7,     8,     9,    10,     6,   444,    43,   295,    24,
+      25,    26,    27,   220,   450,     7,     8,     9,    10,   221,
+     355,   246,   315,    16,    82,    17,   356,   101,   445,   252,
+     -60,   269,   218,   219,   -25,   -25,   269,   269,   223,   224,
+     -24,   -24,   274,   -23,   -23,    92,    65,    83,   269,    66,
+      84,    72,    67,   269,    68,    96,   404,    93,   405,    94,
+     293,   -22,   -22,   269,   269,   269,   225,   226,   100,    72,
+     294,   149,   334,   153,   336,   337,   154,   173,   250,   174,
+     177,   343,   183,   -29,   -28,   -27,   -26,   228,   256,   171,
+     171,   171,   351,   352,   353,   354,   -32,   -33,   -35,   229,
+      16,   257,    17,   359,   360,   361,   362,   275,   277,     6,
+     -35,   -35,   281,   280,   283,   284,   285,   286,   171,   -35,
+     -35,   -35,   -35,   282,   269,   -35,    18,   287,   288,   292,
+     269,   296,   317,    19,   333,   297,   335,   309,   319,   338,
+     339,   323,   324,   269,   269,   299,   300,   301,   392,   302,
+     310,   171,   171,   171,   171,   311,   347,   312,   313,   329,
+     340,   320,   171,   171,   171,   171,   341,   409,   410,   332,
+     342,   252,   346,   368,   369,   370,   269,   372,   269,   385,
+     386,   389,   269,   415,   416,   376,   417,   418,   419,   420,
+     269,   269,   269,   271,   272,   425,   196,   197,   384,   378,
+     379,   397,   390,   383,   391,   273,   413,   171,   393,   394,
+     279,   395,   196,   197,   396,   403,   406,   408,   269,   269,
+     289,   290,   291,   442,   421,   422,   269,   423,   327,   424,
+     426,   428,   429,   430,   269,   431,   436,   432,   433,   434,
+     435,   414,   171,   171,   440,   171,   171,   171,   171,   441,
+     447,   448,   452,   449,   454,   453,    48,    49,   269,   188,
+     189,   190,   191,   192,   193,   194,   195,   456,   457,   140,
+     141,   142,   143,    16,    80,    17,    44,   230,   365,   179,
+      91,   325,   171,   364,    46,   245,   269,   331,    22,   231,
+     232,    36,   375,   411,   388,     0,     0,   269,     0,     0,
+     344,   345,   269,     0,     0,     0,   269,   269,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   112,
+     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,   371,     0,   373,     0,     0,   233,   377,
+     234,   235,   133,   134,     0,   236,     0,   380,   381,   382,
+       0,     0,     0,     0,   237,     0,     0,   238,     0,   239,
+       0,     0,   240,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   399,   400,     0,     0,     0,
+       0,     0,     0,   407,     0,     0,     0,     0,     0,    48,
+      49,   412,    95,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,    62,    63,    16,     0,    17,     0,
+       0,     0,     0,     0,     0,   427,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    64,
+       0,     0,   258,   259,    48,    49,   260,     0,     0,     0,
+       0,     0,     0,   443,     0,     0,     0,     0,     0,     0,
+       0,    16,     0,    17,   451,   261,   262,   263,     0,   455,
+       0,     0,     0,   458,   459,     0,     0,   264,   265,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    65,     0,     0,    66,     0,     0,
+      67,     0,    68,   307,     0,     0,     0,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,     0,     0,   258,   259,     0,   233,   260,   234,   235,
+     133,   134,     0,   236,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   266,   261,   262,   263,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   264,   265,
+       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,   112,   113,
+     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,     0,     0,     0,     0,     0,   233,     0,   234,
+     235,   133,   134,     0,   236,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    48,    49,   266,    95,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    16,     0,    17,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   178,     0,     0,     0,
+       0,     0,    48,    49,    64,    95,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    16,
+       0,    17,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   251,     0,     0,     0,     0,     0,
+       0,     0,    64,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    65,
+       0,     0,    66,     0,     0,    67,     0,    68,    48,    49,
+       0,    95,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,    62,    63,    16,     0,    17,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    65,     0,     0,
+      66,     0,     0,    67,     0,    68,    48,    49,    64,    95,
+      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    16,     0,    17,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   321,     0,
+       0,     0,     0,     0,     0,     0,    64,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    65,     0,     0,    66,     0,   303,    67,
+       0,    68,     0,    48,    49,     0,    95,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      16,     0,    17,     0,     0,     0,     0,     0,     0,     0,
+       0,    65,     0,     0,    66,   363,     0,    67,     0,    68,
+       0,    48,    49,    64,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    16,     0,
+      17,     0,     0,    48,    49,     0,    95,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      16,    64,    17,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    65,     0,
+       0,    66,     0,    64,    67,     0,    68,    48,    49,     0,
+      95,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,    62,    63,    16,     0,    17,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    65,     0,     0,    66,
+       0,     0,    67,     0,    68,     0,     0,    64,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    65,     0,
+       0,    66,     0,     0,    67,     0,    68,    48,    49,     0,
+     184,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    16,     0,    17,     0,     0,     0,
+     102,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   103,    65,     0,     0,    66,     0,    64,    67,     0,
+      68,   104,   105,     0,     0,     0,     0,   106,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+       0,     0,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    65,     0,     0,    66,     0,     0,    67,     0,
+      68
+};
+
+static const short yycheck[] =
+{
+      28,   108,   108,     3,    91,    42,   201,   247,     9,    23,
+      68,    15,   103,    29,    42,   106,    30,   423,   107,     0,
+      21,   110,    15,    10,    11,    12,    13,    14,    15,    16,
+      17,   109,    32,   439,   101,    32,    33,   128,   238,   239,
+     131,   132,   100,   110,   135,   136,   137,   138,   139,    34,
+      54,    23,   143,    10,    11,    12,    13,    14,    15,    16,
+      17,    54,    90,    91,     4,    99,   266,   145,   103,    54,
+      70,     5,     6,   107,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    99,
+      24,    98,   108,    99,     0,   109,    99,   107,   126,   127,
+      20,   129,   130,   109,    52,    53,   109,    49,    50,    51,
+     350,    45,   140,   141,   142,   173,   174,   175,   105,    25,
+      98,    41,    42,    43,    44,    31,   438,    47,   219,    58,
+      59,    60,    61,    99,   446,    41,    42,    43,    44,   105,
+      99,   171,   105,    22,    98,    24,   105,   110,   105,   177,
+     101,   181,    85,    86,     3,     4,   186,   187,    27,    28,
+       3,     4,   199,     3,     4,     4,   100,    98,   198,   103,
+      98,   199,   106,   203,   108,   109,   371,     4,   373,     4,
+     217,     3,     4,   213,   214,   215,     3,     4,   101,   217,
+     218,    24,   283,     4,   285,   286,    24,   104,   256,   104,
+     101,   292,    56,     4,     4,     4,     4,     4,    99,   237,
+     238,   239,   299,   300,   301,   302,     7,     7,    20,     7,
+      22,   102,    24,   310,   311,   312,   313,    99,    99,    31,
+      32,    33,    99,   103,    99,    99,    99,    99,   266,    41,
+      42,    43,    44,    36,   274,    47,    48,    99,    99,    99,
+     280,    24,   252,    55,   282,    99,   284,    24,    99,   287,
+     288,    99,    99,   293,   294,   101,   101,   101,   355,   101,
+     101,   299,   300,   301,   302,   101,    34,   101,   101,    99,
+      99,   102,   310,   311,   312,   313,    99,   378,   379,   103,
+      99,   319,    99,    21,    21,   101,   326,     4,   328,    24,
+       4,    36,   332,   390,   391,    99,   393,   394,   395,   396,
+     340,   341,   342,   186,   187,   406,   423,   423,   346,    99,
+      99,    54,    99,   101,    99,   198,   102,   355,    99,    99,
+     203,    99,   439,   439,    99,    99,    99,    99,   368,   369,
+     213,   214,   215,   430,     4,    99,   376,   103,    54,   102,
+     105,   102,   102,    99,   384,   102,    21,   102,   102,   102,
+     102,   389,   390,   391,    36,   393,   394,   395,   396,   105,
+      21,   102,    21,    99,    66,    99,     5,     6,   408,    10,
+      11,    12,    13,    14,    15,    16,    17,    21,    21,    80,
+      80,    80,    80,    22,    32,    24,    20,    26,   320,   100,
+      44,   274,   430,   319,    23,   171,   436,   280,     3,    38,
+      39,    15,   329,   383,   351,    -1,    -1,   447,    -1,    -1,
+     293,   294,   452,    -1,    -1,    -1,   456,   457,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,   326,    -1,   328,    -1,    -1,    87,   332,
+      89,    90,    91,    92,    -1,    94,    -1,   340,   341,   342,
+      -1,    -1,    -1,    -1,   103,    -1,    -1,   106,    -1,   108,
+      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   368,   369,    -1,    -1,    -1,
+      -1,    -1,    -1,   376,    -1,    -1,    -1,    -1,    -1,     5,
+       6,   384,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    -1,    24,    -1,
+      -1,    -1,    -1,    -1,    -1,   408,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,
+      -1,    -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,
+      -1,    -1,    -1,   436,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    22,    -1,    24,   447,    26,    27,    28,    -1,   452,
+      -1,    -1,    -1,   456,   457,    -1,    -1,    38,    39,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   100,    -1,    -1,   103,    -1,    -1,
+     106,    -1,   108,   109,    -1,    -1,    -1,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    -1,    -1,     3,     4,    -1,    87,     7,    89,    90,
+      91,    92,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   106,    26,    27,    28,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    39,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    -1,    -1,    -1,    -1,    -1,    87,    -1,    89,
+      90,    91,    92,    -1,    94,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     5,     6,   106,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
+      -1,    -1,     5,     6,    45,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,
+      -1,    -1,   103,    -1,    -1,   106,    -1,   108,     5,     6,
+      -1,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    -1,    24,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,    -1,    -1,
+     103,    -1,    -1,   106,    -1,   108,     5,     6,    45,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   100,    -1,    -1,   103,    -1,   105,   106,
+      -1,   108,    -1,     5,     6,    -1,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   100,    -1,    -1,   103,    37,    -1,   106,    -1,   108,
+      -1,     5,     6,    45,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    -1,
+      24,    -1,    -1,     5,     6,    -1,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    45,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,    -1,
+      -1,   103,    -1,    45,   106,    -1,   108,     5,     6,    -1,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   100,    -1,    -1,   103,
+      -1,    -1,   106,    -1,   108,    -1,    -1,    45,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,    -1,
+      -1,   103,    -1,    -1,   106,    -1,   108,     5,     6,    -1,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,
+      35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    46,   100,    -1,    -1,   103,    -1,    45,   106,    -1,
+     108,    56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      -1,    -1,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   100,    -1,    -1,   103,    -1,    -1,   106,    -1,
+     108
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,   143,   144,   145,     0,    25,    31,    41,    42,    43,
+      44,   124,   159,   161,   162,   168,    22,    24,    48,    55,
+     123,   152,   162,   163,    58,    59,    60,    61,   125,   157,
+      23,   169,   170,    30,   109,   160,   169,    49,    50,    51,
+     149,    98,    20,    47,   124,    98,   157,     4,     5,     6,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    45,   100,   103,   106,   108,   113,
+     132,   133,   134,   135,   136,   152,   165,    29,   108,   158,
+     123,   173,    98,    98,    98,   103,   150,   132,    32,    33,
+     142,   142,     4,     4,     4,     8,   109,   136,   137,   152,
+     101,   110,    35,    46,    56,    57,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+     115,   116,   117,   118,   171,   177,   178,   180,   181,    24,
+      52,    53,   148,     4,    24,   151,   134,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,   119,   120,
+     122,   134,   139,   104,   104,    99,   109,   101,    37,   137,
+     138,   134,   167,    56,     8,   167,     9,    21,    10,    11,
+      12,    13,    14,    15,    16,    17,   119,   120,   121,   125,
+     134,   134,   167,   134,   134,   174,   167,   167,   167,   167,
+     167,   167,   167,   134,   134,   134,   167,   125,    85,    86,
+      99,   105,   147,    27,    28,     3,     4,   114,     4,     7,
+      26,    38,    39,    87,    89,    90,    94,   103,   106,   108,
+     111,   115,   116,   117,   118,   140,   165,   146,   136,   136,
+     136,    37,   134,   154,   155,   156,    99,   102,     3,     4,
+       7,    26,    27,    28,    38,    39,   106,   140,   164,   165,
+     166,   166,   166,   166,   132,    99,   127,    99,   127,   166,
+     103,    99,    36,    99,    99,    99,    99,    99,    99,   166,
+     166,   166,    99,   132,   134,   167,    24,    99,   130,   101,
+     101,   101,   101,   105,   139,   141,   141,   109,   141,    24,
+     101,   101,   101,   101,   130,   105,   107,   152,   153,    99,
+     102,    37,   141,    99,    99,   166,    15,    54,    15,    99,
+     179,   166,   103,   134,   167,   134,   167,   167,   134,   134,
+      99,    99,    99,   167,   166,   166,    99,    34,    54,   128,
+     131,   139,   139,   139,   139,    99,   105,   107,   109,   139,
+     139,   139,   139,    37,   154,   128,   129,   107,    21,    21,
+     101,   166,     4,   166,   167,   175,    99,   166,    99,    99,
+     166,   166,   166,   101,   134,    24,     4,   130,   179,    36,
+      99,    99,   139,    99,    99,    99,    99,    54,   126,   166,
+     166,   175,   176,    99,   127,   127,    99,   166,    99,   167,
+     167,   176,   166,   102,   134,   139,   139,   139,   139,   139,
+     139,     4,    99,   103,   102,   167,   105,   166,   102,   102,
+      99,   102,   102,   102,   102,   102,    21,   105,   121,   172,
+      36,   105,   139,   166,   164,   105,   121,    21,   102,    99,
+     164,   166,    21,    99,    66,   166,    21,    21,   166,   166
+};
+
+#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)
+# if defined (__STDC__) || defined (__cplusplus)
+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T size_t
+# endif
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
 
 #define yyerrok		(yyerrstatus = 0)
 #define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		-2
+#define YYEMPTY		(-2)
 #define YYEOF		0
+
 #define YYACCEPT	goto yyacceptlab
-#define YYABORT 	goto yyabortlab
-#define YYERROR		goto yyerrlab1
-/* Like YYERROR except do call yyerror.
-   This remains here temporarily to ease the
-   transition to the new meaning of YYERROR, for GCC.
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
    Once GCC version 2 has supplanted version 1, this can go.  */
+
 #define YYFAIL		goto yyerrlab
+
 #define YYRECOVERING()  (!!yyerrstatus)
-#define YYBACKUP(token, value) \
+
+#define YYBACKUP(Token, Value)					\
 do								\
   if (yychar == YYEMPTY && yylen == 1)				\
-    { yychar = (token), yylval = (value);			\
-      yychar1 = YYTRANSLATE (yychar);				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
       YYPOPSTACK;						\
       goto yybackup;						\
     }								\
   else								\
-    { yyerror ("syntax error: cannot back up"); YYERROR; }	\
+    { 								\
+      yyerror ("syntax error: cannot back up");\
+      YYERROR;							\
+    }								\
 while (0)
 
 #define YYTERROR	1
 #define YYERRCODE	256
 
-#ifndef YYPURE
-#define YYLEX		yylex()
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+   are run).  */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)		\
+   ((Current).first_line   = (Rhs)[1].first_line,	\
+    (Current).first_column = (Rhs)[1].first_column,	\
+    (Current).last_line    = (Rhs)[N].last_line,	\
+    (Current).last_column  = (Rhs)[N].last_column)
 #endif
 
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
 #ifdef YYLEX_PARAM
-#define YYLEX		yylex(&yylval, &yylloc, YYLEX_PARAM)
+# define YYLEX yylex (YYLEX_PARAM)
 #else
-#define YYLEX		yylex(&yylval, &yylloc)
+# define YYLEX yylex ()
 #endif
-#else /* not YYLSP_NEEDED */
-#ifdef YYLEX_PARAM
-#define YYLEX		yylex(&yylval, YYLEX_PARAM)
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (0)
+
+# define YYDSYMPRINT(Args)			\
+do {						\
+  if (yydebug)					\
+    yysymprint Args;				\
+} while (0)
+
+# define YYDSYMPRINTF(Title, Token, Value, Location)		\
+do {								\
+  if (yydebug)							\
+    {								\
+      YYFPRINTF (stderr, "%s ", Title);				\
+      yysymprint (stderr, 					\
+                  Token, 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 *bottom, short *top)
 #else
-#define YYLEX		yylex(&yylval)
+static void
+yy_stack_print (bottom, top)
+    short *bottom;
+    short *top;
 #endif
-#endif /* not YYLSP_NEEDED */
+{
+  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)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
 #endif
+{
+  int yyi;
+  unsigned int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+             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]]);
+}
 
-/* If nonreentrant, generate the variables here */
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (Rule);		\
+} while (0)
 
-#ifndef YYPURE
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YYDSYMPRINT(Args)
+# define YYDSYMPRINTF(Title, Token, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
 
-int	yychar;			/*  the lookahead symbol		*/
-YYSTYPE	yylval;			/*  the semantic value of the		*/
-				/*  lookahead symbol			*/
 
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc;			/*  location data for the lookahead	*/
-				/*  symbol				*/
-#endif
-
-int yynerrs;			/*  number of parse errors so far       */
-#endif  /* not YYPURE */
-
-#if YYDEBUG != 0
-int yydebug;			/*  nonzero means print parse trace	*/
-/* Since this is uninitialized, it does not stop multiple parsers
-   from coexisting.  */
-#endif
-
-/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/
-
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
 #ifndef	YYINITDEPTH
-#define YYINITDEPTH 200
+# define YYINITDEPTH 200
 #endif
 
-/*  YYMAXDEPTH is the maximum size the stacks can grow to
-    (effective only if the built-in stack extension method is used).  */
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
 
-#if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
+   Do not make this value too large; the results are undefined if
+   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#if defined (YYMAXDEPTH) && 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 __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
+#if YYERROR_VERBOSE
 
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (to, from, count)
-     char *to;
-     char *from;
-     unsigned int count;
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
 {
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
+  register const char *yys = yystr;
 
-  while (i-- > 0)
-    *t++ = *f++;
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
 }
+#  endif
+# endif
 
-#else /* __cplusplus */
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (char *to, char *from, unsigned int count)
+# 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
 {
-  register char *t = to;
-  register char *f = from;
-  register int i = count;
+  register char *yyd = yydest;
+  register const char *yys = yysrc;
 
-  while (i-- > 0)
-    *t++ = *f++;
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
 }
+#  endif
+# endif
 
-#endif
-#endif
+#endif /* !YYERROR_VERBOSE */
+
 
-#line 217 "/usr/share/bison.simple"
 
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-   into yyparse.  The argument should have type void *.
-   It should actually point to an object.
-   Grammar actions can access the variable by casting it
-   to the proper pointer type.  */
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
 
-#ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
-
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-#ifdef YYPARSE_PARAM
-int yyparse (void *);
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
 #else
-int yyparse (void);
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
 #endif
-#endif
-
-int
-yyparse(YYPARSE_PARAM_ARG)
-     YYPARSE_PARAM_DECL
 {
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    {
+      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+# ifdef YYPRINT
+      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+    }
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yytype, yyvaluep)
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#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)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The lookahead symbol.  */
+int yychar;
+
+/* The semantic value of the lookahead 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
+{
+  
   register int yystate;
   register int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short	yyssa[YYINITDEPTH];
+  short *yyss = yyssa;
   register short *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
   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 */
 
-  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
-  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/
 
-  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
-  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */
 
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
-  YYLTYPE *yyls = yylsa;
-  YYLTYPE *yylsp;
-
-#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
-#else
 #define YYPOPSTACK   (yyvsp--, yyssp--)
-#endif
 
-  int yystacksize = YYINITDEPTH;
-  int yyfree_stacks = 0;
+  YYSIZE_T yystacksize = YYINITDEPTH;
 
-#ifdef YYPURE
-  int yychar;
-  YYSTYPE yylval;
-  int yynerrs;
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylloc;
-#endif
-#endif
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
 
-  YYSTYPE yyval;		/*  the variable used to return		*/
-				/*  semantic values from the action	*/
-				/*  routines				*/
 
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
   int yylen;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Starting parse\n");
-#endif
+  YYDPRINTF ((stderr, "Starting parse\n"));
 
   yystate = 0;
   yyerrstatus = 0;
@@ -1955,110 +2467,96 @@
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
 
-  yyssp = yyss - 1;
+  yyssp = yyss;
   yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
-  yylsp = yyls;
-#endif
 
-/* Push a new state, which is found in  yystate  .  */
-/* In all cases, when you get here, the value and location stacks
-   have just been pushed. so pushing a state here evens the stacks.  */
-yynewstate:
+  goto yysetstate;
 
-  *++yyssp = yystate;
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
 
-  if (yyssp >= yyss + yystacksize - 1)
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
     {
-      /* 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.  */
-      int size = yyssp - yyss + 1;
+      YYSIZE_T yysize = yyssp - yyss + 1;
 
 #ifdef yyoverflow
-      /* Each stack pointer address is followed by the size of
-	 the data in use in that stack, in bytes.  */
-#ifdef YYLSP_NEEDED
-      /* This used to be a conditional around just the two extra args,
-	 but that might be undefined if yyoverflow is a macro.  */
-      yyoverflow("parser stack overflow",
-		 &yyss1, size * sizeof (*yyssp),
-		 &yyvs1, size * sizeof (*yyvsp),
-		 &yyls1, size * sizeof (*yylsp),
-		 &yystacksize);
-#else
-      yyoverflow("parser stack overflow",
-		 &yyss1, size * sizeof (*yyssp),
-		 &yyvs1, size * sizeof (*yyvsp),
-		 &yystacksize);
-#endif
+      {
+	/* 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;
 
-      yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
-      yyls = yyls1;
-#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 ("parser stack overflow",
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
 #else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyoverflowlab;
+# else
       /* Extend the stack our own way.  */
-      if (yystacksize >= YYMAXDEPTH)
-	{
-	  yyerror("parser stack overflow");
-	  if (yyfree_stacks)
-	    {
-	      free (yyss);
-	      free (yyvs);
-#ifdef YYLSP_NEEDED
-	      free (yyls);
-#endif
-	    }
-	  return 2;
-	}
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyoverflowlab;
       yystacksize *= 2;
-      if (yystacksize > YYMAXDEPTH)
+      if (YYMAXDEPTH < yystacksize)
 	yystacksize = YYMAXDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
-      yyfree_stacks = 1;
-#endif
-      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1,
-		   size * (unsigned int) sizeof (*yyssp));
-      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
-		   size * (unsigned int) sizeof (*yyvsp));
-#ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1,
-		   size * (unsigned int) sizeof (*yylsp));
-#endif
+
+      {
+	short *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyoverflowlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
 #endif /* no yyoverflow */
 
-      yyssp = yyss + size - 1;
-      yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
-      yylsp = yyls + size - 1;
-#endif
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
 
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
 
-      if (yyssp >= yyss + yystacksize - 1)
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
 	YYABORT;
     }
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Entering state %d\n", yystate);
-#endif
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
   goto yybackup;
- yybackup:
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
 
 /* Do appropriate processing given the current state.  */
 /* Read a lookahead token if we need one and don't already have one.  */
@@ -2067,315 +2565,311 @@
   /* First try to decide what to do without reference to lookahead token.  */
 
   yyn = yypact[yystate];
-  if (yyn == YYFLAG)
+  if (yyn == YYPACT_NINF)
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* yychar is either YYEMPTY or YYEOF
-     or a valid token in external form.  */
-
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
   if (yychar == YYEMPTY)
     {
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Reading a token: ");
-#endif
+      YYDPRINTF ((stderr, "Reading a token: "));
       yychar = YYLEX;
     }
 
-  /* Convert token to internal form (in yychar1) for indexing tables with */
-
-  if (yychar <= 0)		/* This means end of input. */
+  if (yychar <= YYEOF)
     {
-      yychar1 = 0;
-      yychar = YYEOF;		/* Don't call YYLEX any more */
-
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Now at end of input.\n");
-#endif
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
   else
     {
-      yychar1 = YYTRANSLATE(yychar);
-
-#if YYDEBUG != 0
-      if (yydebug)
-	{
-	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-	  /* Give the individual parser a way to print the precise meaning
-	     of a token, for further debugging info.  */
-#ifdef YYPRINT
-	  YYPRINT (stderr, yychar, yylval);
-#endif
-	  fprintf (stderr, ")\n");
-	}
-#endif
+      yytoken = YYTRANSLATE (yychar);
+      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
     }
 
-  yyn += yychar1;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
     goto yydefault;
-
   yyn = yytable[yyn];
-
-  /* yyn is what to do for this token type in this state.
-     Negative => reduce, -yyn is rule number.
-     Positive => shift, yyn is new state.
-       New state is final state => don't bother to shift,
-       just return success.
-     0, or most negative number => error.  */
-
-  if (yyn < 0)
+  if (yyn <= 0)
     {
-      if (yyn == YYFLAG)
+      if (yyn == 0 || yyn == YYTABLE_NINF)
 	goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
-  else if (yyn == 0)
-    goto yyerrlab;
 
   if (yyn == YYFINAL)
     YYACCEPT;
 
   /* Shift the lookahead token.  */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
+  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
 
   /* Discard the token being shifted unless it is eof.  */
   if (yychar != YYEOF)
     yychar = YYEMPTY;
 
   *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
 
-  /* count tokens shifted since error; after three, turn off error status.  */
-  if (yyerrstatus) yyerrstatus--;
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
 
   yystate = yyn;
   goto yynewstate;
 
-/* Do the default action for the current state.  */
-yydefault:
 
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
   yyn = yydefact[yystate];
   if (yyn == 0)
     goto yyerrlab;
+  goto yyreduce;
 
-/* Do a reduction.  yyn is the number of a rule to reduce with.  */
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
 yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
-  if (yylen > 0)
-    yyval = yyvsp[1-yylen]; /* implement default value of the action */
 
-#if YYDEBUG != 0
-  if (yydebug)
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
     {
-      int i;
-
-      fprintf (stderr, "Reducing via rule %d (line %d), ",
-	       yyn, yyrline[yyn]);
-
-      /* 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
-
-
-  switch (yyn) {
-
-case 2:
-#line 998 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+        case 3:
+#line 998 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
   if (yyvsp[0].UIntVal > (uint32_t)INT32_MAX)     // Outside of my range!
     ThrowException("Value too large for type!");
   yyval.SIntVal = (int32_t)yyvsp[0].UIntVal;
-;
-    break;}
-case 4:
-#line 1006 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+;}
+    break;
+
+  case 5:
+#line 1006 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
   if (yyvsp[0].UInt64Val > (uint64_t)INT64_MAX)     // Outside of my range!
     ThrowException("Value too large for type!");
   yyval.SInt64Val = (int64_t)yyvsp[0].UInt64Val;
-;
-    break;}
-case 33:
-#line 1029 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+;}
+    break;
+
+  case 34:
+#line 1029 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.StrVal = yyvsp[-1].StrVal;
-  ;
-    break;}
-case 34:
-#line 1032 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 35:
+#line 1032 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.StrVal = 0;
-  ;
-    break;}
-case 35:
-#line 1036 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::InternalLinkage; ;
-    break;}
-case 36:
-#line 1037 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::LinkOnceLinkage; ;
-    break;}
-case 37:
-#line 1038 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::WeakLinkage; ;
-    break;}
-case 38:
-#line 1039 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::AppendingLinkage; ;
-    break;}
-case 39:
-#line 1040 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::ExternalLinkage; ;
-    break;}
-case 40:
-#line 1042 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::C; ;
-    break;}
-case 41:
-#line 1043 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::C; ;
-    break;}
-case 42:
-#line 1044 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::Fast; ;
-    break;}
-case 43:
-#line 1045 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::Cold; ;
-    break;}
-case 44:
-#line 1046 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 36:
+#line 1036 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.Linkage = GlobalValue::InternalLinkage; ;}
+    break;
+
+  case 37:
+#line 1037 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.Linkage = GlobalValue::LinkOnceLinkage; ;}
+    break;
+
+  case 38:
+#line 1038 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.Linkage = GlobalValue::WeakLinkage; ;}
+    break;
+
+  case 39:
+#line 1039 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.Linkage = GlobalValue::AppendingLinkage; ;}
+    break;
+
+  case 40:
+#line 1040 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.Linkage = GlobalValue::ExternalLinkage; ;}
+    break;
+
+  case 41:
+#line 1042 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.UIntVal = CallingConv::C; ;}
+    break;
+
+  case 42:
+#line 1043 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.UIntVal = CallingConv::C; ;}
+    break;
+
+  case 43:
+#line 1044 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.UIntVal = CallingConv::Fast; ;}
+    break;
+
+  case 44:
+#line 1045 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.UIntVal = CallingConv::Cold; ;}
+    break;
+
+  case 45:
+#line 1046 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
                    if ((unsigned)yyvsp[0].UInt64Val != yyvsp[0].UInt64Val)
                      ThrowException("Calling conv too large!");
                    yyval.UIntVal = yyvsp[0].UInt64Val;
-                 ;
-    break;}
-case 45:
-#line 1054 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = 0; ;
-    break;}
-case 46:
-#line 1055 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+                 ;}
+    break;
+
+  case 46:
+#line 1054 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.UIntVal = 0; ;}
+    break;
+
+  case 47:
+#line 1055 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
   yyval.UIntVal = yyvsp[0].UInt64Val;
   if (yyval.UIntVal != 0 && !isPowerOf2_32(yyval.UIntVal))
     ThrowException("Alignment must be a power of two!");
-;
-    break;}
-case 47:
-#line 1060 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = 0; ;
-    break;}
-case 48:
-#line 1061 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+;}
+    break;
+
+  case 48:
+#line 1060 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.UIntVal = 0; ;}
+    break;
+
+  case 49:
+#line 1061 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
   yyval.UIntVal = yyvsp[0].UInt64Val;
   if (yyval.UIntVal != 0 && !isPowerOf2_32(yyval.UIntVal))
     ThrowException("Alignment must be a power of two!");
-;
-    break;}
-case 49:
-#line 1068 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+;}
+    break;
+
+  case 50:
+#line 1068 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
   for (unsigned i = 0, e = strlen(yyvsp[0].StrVal); i != e; ++i)
     if (yyvsp[0].StrVal[i] == '"' || yyvsp[0].StrVal[i] == '\\')
       ThrowException("Invalid character in section name!");
   yyval.StrVal = yyvsp[0].StrVal;
-;
-    break;}
-case 50:
-#line 1075 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.StrVal = 0; ;
-    break;}
-case 51:
-#line 1076 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.StrVal = yyvsp[0].StrVal; ;
-    break;}
-case 52:
-#line 1081 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{;
-    break;}
-case 53:
-#line 1082 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{;
-    break;}
-case 54:
-#line 1083 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+;}
+    break;
+
+  case 51:
+#line 1075 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.StrVal = 0; ;}
+    break;
+
+  case 52:
+#line 1076 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.StrVal = yyvsp[0].StrVal; ;}
+    break;
+
+  case 53:
+#line 1081 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {;}
+    break;
+
+  case 54:
+#line 1082 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {;}
+    break;
+
+  case 55:
+#line 1083 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     CurGV->setSection(yyvsp[0].StrVal);
     free(yyvsp[0].StrVal);
-  ;
-    break;}
-case 55:
-#line 1087 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 56:
+#line 1087 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (yyvsp[0].UInt64Val != 0 && !isPowerOf2_32(yyvsp[0].UInt64Val))
       ThrowException("Alignment must be a power of two!");
     CurGV->setAlignment(yyvsp[0].UInt64Val);
-  ;
-    break;}
-case 57:
-#line 1100 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ;
-    break;}
-case 59:
-#line 1101 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ;
-    break;}
-case 60:
-#line 1103 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 58:
+#line 1100 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ;}
+    break;
+
+  case 60:
+#line 1101 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ;}
+    break;
+
+  case 61:
+#line 1103 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
       ThrowException("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
     yyval.TypeVal = yyvsp[0].TypeVal;
-  ;
-    break;}
-case 74:
-#line 1114 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 75:
+#line 1114 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.TypeVal = new PATypeHolder(OpaqueType::get());
-  ;
-    break;}
-case 75:
-#line 1117 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 76:
+#line 1117 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType);
-  ;
-    break;}
-case 76:
-#line 1120 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{            // Named types are also simple types...
+  ;}
+    break;
+
+  case 77:
+#line 1120 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {            // Named types are also simple types...
   yyval.TypeVal = new PATypeHolder(getTypeVal(yyvsp[0].ValIDVal));
-;
-    break;}
-case 77:
-#line 1126 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{                   // Type UpReference
+;}
+    break;
+
+  case 78:
+#line 1126 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {                   // Type UpReference
     if (yyvsp[0].UInt64Val > (uint64_t)~0U) ThrowException("Value out of range!");
     OpaqueType *OT = OpaqueType::get();        // Use temporary placeholder
     UpRefs.push_back(UpRefRecord((unsigned)yyvsp[0].UInt64Val, OT));  // Add to vector...
     yyval.TypeVal = new PATypeHolder(OT);
     UR_OUT("New Upreference!\n");
-  ;
-    break;}
-case 78:
-#line 1133 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{           // Function derived type?
+  ;}
+    break;
+
+  case 79:
+#line 1133 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {           // Function derived type?
     std::vector<const Type*> Params;
     for (std::list<llvm::PATypeHolder>::iterator I = yyvsp[-1].TypeList->begin(),
            E = yyvsp[-1].TypeList->end(); I != E; ++I)
@@ -2386,18 +2880,20 @@
     yyval.TypeVal = new PATypeHolder(HandleUpRefs(FunctionType::get(*yyvsp[-3].TypeVal,Params,isVarArg)));
     delete yyvsp[-1].TypeList;      // Delete the argument list
     delete yyvsp[-3].TypeVal;      // Delete the return type handle
-  ;
-    break;}
-case 79:
-#line 1145 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{          // Sized array type?
+  ;}
+    break;
+
+  case 80:
+#line 1145 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {          // Sized array type?
     yyval.TypeVal = new PATypeHolder(HandleUpRefs(ArrayType::get(*yyvsp[-1].TypeVal, (unsigned)yyvsp[-3].UInt64Val)));
     delete yyvsp[-1].TypeVal;
-  ;
-    break;}
-case 80:
-#line 1149 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{          // Packed array type?
+  ;}
+    break;
+
+  case 81:
+#line 1149 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {          // Packed array type?
      const llvm::Type* ElemTy = yyvsp[-1].TypeVal->get();
      if ((unsigned)yyvsp[-3].UInt64Val != yyvsp[-3].UInt64Val)
         ThrowException("Unsigned result not equal to signed result");
@@ -2407,11 +2903,12 @@
        ThrowException("Vector length should be a power of 2!");
      yyval.TypeVal = new PATypeHolder(HandleUpRefs(PackedType::get(*yyvsp[-1].TypeVal, (unsigned)yyvsp[-3].UInt64Val)));
      delete yyvsp[-1].TypeVal;
-  ;
-    break;}
-case 81:
-#line 1160 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{                        // Structure type?
+  ;}
+    break;
+
+  case 82:
+#line 1160 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {                        // Structure type?
     std::vector<const Type*> Elements;
     for (std::list<llvm::PATypeHolder>::iterator I = yyvsp[-1].TypeList->begin(),
            E = yyvsp[-1].TypeList->end(); I != E; ++I)
@@ -2419,55 +2916,63 @@
 
     yyval.TypeVal = new PATypeHolder(HandleUpRefs(StructType::get(Elements)));
     delete yyvsp[-1].TypeList;
-  ;
-    break;}
-case 82:
-#line 1169 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{                                  // Empty structure type?
+  ;}
+    break;
+
+  case 83:
+#line 1169 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {                                  // Empty structure type?
     yyval.TypeVal = new PATypeHolder(StructType::get(std::vector<const Type*>()));
-  ;
-    break;}
-case 83:
-#line 1172 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{                             // Pointer type?
+  ;}
+    break;
+
+  case 84:
+#line 1172 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {                             // Pointer type?
     yyval.TypeVal = new PATypeHolder(HandleUpRefs(PointerType::get(*yyvsp[-1].TypeVal)));
     delete yyvsp[-1].TypeVal;
-  ;
-    break;}
-case 84:
-#line 1180 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 85:
+#line 1180 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.TypeList = new std::list<PATypeHolder>();
     yyval.TypeList->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal;
-  ;
-    break;}
-case 85:
-#line 1184 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 86:
+#line 1184 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     (yyval.TypeList=yyvsp[-2].TypeList)->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal;
-  ;
-    break;}
-case 87:
-#line 1190 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 88:
+#line 1190 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     (yyval.TypeList=yyvsp[-2].TypeList)->push_back(Type::VoidTy);
-  ;
-    break;}
-case 88:
-#line 1193 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 89:
+#line 1193 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     (yyval.TypeList = new std::list<PATypeHolder>())->push_back(Type::VoidTy);
-  ;
-    break;}
-case 89:
-#line 1196 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 90:
+#line 1196 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.TypeList = new std::list<PATypeHolder>();
-  ;
-    break;}
-case 90:
-#line 1206 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ // Nonempty unsized arr
+  ;}
+    break;
+
+  case 91:
+#line 1206 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { // Nonempty unsized arr
     const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-3].TypeVal->get());
     if (ATy == 0)
       ThrowException("Cannot make array constant with type: '" + 
@@ -2491,11 +2996,12 @@
 
     yyval.ConstVal = ConstantArray::get(ATy, *yyvsp[-1].ConstVector);
     delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
-  ;
-    break;}
-case 91:
-#line 1231 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 92:
+#line 1231 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-2].TypeVal->get());
     if (ATy == 0)
       ThrowException("Cannot make array constant with type: '" + 
@@ -2507,11 +3013,12 @@
                      " arguments, but has size of " + itostr(NumElements) +"!");
     yyval.ConstVal = ConstantArray::get(ATy, std::vector<Constant*>());
     delete yyvsp[-2].TypeVal;
-  ;
-    break;}
-case 92:
-#line 1244 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 93:
+#line 1244 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-2].TypeVal->get());
     if (ATy == 0)
       ThrowException("Cannot make array constant with type: '" + 
@@ -2538,11 +3045,12 @@
     free(yyvsp[0].StrVal);
     yyval.ConstVal = ConstantArray::get(ATy, Vals);
     delete yyvsp[-2].TypeVal;
-  ;
-    break;}
-case 93:
-#line 1272 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ // Nonempty unsized arr
+  ;}
+    break;
+
+  case 94:
+#line 1272 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { // Nonempty unsized arr
     const PackedType *PTy = dyn_cast<PackedType>(yyvsp[-3].TypeVal->get());
     if (PTy == 0)
       ThrowException("Cannot make packed constant with type: '" + 
@@ -2566,11 +3074,12 @@
 
     yyval.ConstVal = ConstantPacked::get(PTy, *yyvsp[-1].ConstVector);
     delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
-  ;
-    break;}
-case 94:
-#line 1297 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 95:
+#line 1297 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     const StructType *STy = dyn_cast<StructType>(yyvsp[-3].TypeVal->get());
     if (STy == 0)
       ThrowException("Cannot make struct constant with type: '" + 
@@ -2589,11 +3098,12 @@
 
     yyval.ConstVal = ConstantStruct::get(STy, *yyvsp[-1].ConstVector);
     delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
-  ;
-    break;}
-case 95:
-#line 1317 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 96:
+#line 1317 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     const StructType *STy = dyn_cast<StructType>(yyvsp[-2].TypeVal->get());
     if (STy == 0)
       ThrowException("Cannot make struct constant with type: '" + 
@@ -2604,11 +3114,12 @@
 
     yyval.ConstVal = ConstantStruct::get(STy, std::vector<Constant*>());
     delete yyvsp[-2].TypeVal;
-  ;
-    break;}
-case 96:
-#line 1329 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 97:
+#line 1329 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     const PointerType *PTy = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
     if (PTy == 0)
       ThrowException("Cannot make null pointer constant with type: '" + 
@@ -2616,18 +3127,20 @@
 
     yyval.ConstVal = ConstantPointerNull::get(PTy);
     delete yyvsp[-1].TypeVal;
-  ;
-    break;}
-case 97:
-#line 1338 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 98:
+#line 1338 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ConstVal = UndefValue::get(yyvsp[-1].TypeVal->get());
     delete yyvsp[-1].TypeVal;
-  ;
-    break;}
-case 98:
-#line 1342 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 99:
+#line 1342 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     const PointerType *Ty = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
     if (Ty == 0)
       ThrowException("Global const reference must be a pointer type!");
@@ -2685,66 +3198,74 @@
 
     yyval.ConstVal = cast<GlobalValue>(V);
     delete yyvsp[-1].TypeVal;            // Free the type handle
-  ;
-    break;}
-case 99:
-#line 1401 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 100:
+#line 1401 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (yyvsp[-1].TypeVal->get() != yyvsp[0].ConstVal->getType())
       ThrowException("Mismatched types for constant expression!");
     yyval.ConstVal = yyvsp[0].ConstVal;
     delete yyvsp[-1].TypeVal;
-  ;
-    break;}
-case 100:
-#line 1407 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 101:
+#line 1407 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     const Type *Ty = yyvsp[-1].TypeVal->get();
     if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty))
       ThrowException("Cannot create a null initialized value of this type!");
     yyval.ConstVal = Constant::getNullValue(Ty);
     delete yyvsp[-1].TypeVal;
-  ;
-    break;}
-case 101:
-#line 1415 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{      // integral constants
+  ;}
+    break;
+
+  case 102:
+#line 1415 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {      // integral constants
     if (!ConstantSInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].SInt64Val))
       ThrowException("Constant value doesn't fit in type!");
     yyval.ConstVal = ConstantSInt::get(yyvsp[-1].PrimType, yyvsp[0].SInt64Val);
-  ;
-    break;}
-case 102:
-#line 1420 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{            // integral constants
+  ;}
+    break;
+
+  case 103:
+#line 1420 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {            // integral constants
     if (!ConstantUInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].UInt64Val))
       ThrowException("Constant value doesn't fit in type!");
     yyval.ConstVal = ConstantUInt::get(yyvsp[-1].PrimType, yyvsp[0].UInt64Val);
-  ;
-    break;}
-case 103:
-#line 1425 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{                      // Boolean constants
+  ;}
+    break;
+
+  case 104:
+#line 1425 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {                      // Boolean constants
     yyval.ConstVal = ConstantBool::True;
-  ;
-    break;}
-case 104:
-#line 1428 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{                     // Boolean constants
+  ;}
+    break;
+
+  case 105:
+#line 1428 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {                     // Boolean constants
     yyval.ConstVal = ConstantBool::False;
-  ;
-    break;}
-case 105:
-#line 1431 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{                   // Float & Double constants
+  ;}
+    break;
+
+  case 106:
+#line 1431 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {                   // Float & Double constants
     if (!ConstantFP::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].FPVal))
       ThrowException("Floating point constant invalid for type!!");
     yyval.ConstVal = ConstantFP::get(yyvsp[-1].PrimType, yyvsp[0].FPVal);
-  ;
-    break;}
-case 106:
-#line 1438 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 107:
+#line 1438 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!yyvsp[-3].ConstVal->getType()->isFirstClassType())
       ThrowException("cast constant expression from a non-primitive type: '" +
                      yyvsp[-3].ConstVal->getType()->getDescription() + "'!");
@@ -2753,11 +3274,12 @@
                      yyvsp[-1].TypeVal->get()->getDescription() + "'!");
     yyval.ConstVal = ConstantExpr::getCast(yyvsp[-3].ConstVal, yyvsp[-1].TypeVal->get());
     delete yyvsp[-1].TypeVal;
-  ;
-    break;}
-case 107:
-#line 1448 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 108:
+#line 1448 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!isa<PointerType>(yyvsp[-2].ConstVal->getType()))
       ThrowException("GetElementPtr requires a pointer operand!");
 
@@ -2787,21 +3309,23 @@
     delete yyvsp[-1].ValueList;
 
     yyval.ConstVal = ConstantExpr::getGetElementPtr(yyvsp[-2].ConstVal, IdxVec);
-  ;
-    break;}
-case 108:
-#line 1479 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 109:
+#line 1479 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (yyvsp[-5].ConstVal->getType() != Type::BoolTy)
       ThrowException("Select condition must be of boolean type!");
     if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
       ThrowException("Select operand types must match!");
     yyval.ConstVal = ConstantExpr::getSelect(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  ;
-    break;}
-case 109:
-#line 1486 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 110:
+#line 1486 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
       ThrowException("Binary operator types must match!");
     // HACK: llvm 1.3 and earlier used to emit invalid pointer constant exprs.
@@ -2821,11 +3345,12 @@
                              ConstantExpr::getCast(yyvsp[-1].ConstVal, IntPtrTy));
       yyval.ConstVal = ConstantExpr::getCast(yyval.ConstVal, yyvsp[-3].ConstVal->getType());
     }
-  ;
-    break;}
-case 110:
-#line 1507 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 111:
+#line 1507 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
       ThrowException("Logical operator types must match!");
     if (!yyvsp[-3].ConstVal->getType()->isIntegral()) {
@@ -2834,87 +3359,99 @@
         ThrowException("Logical operator requires integral operands!");
     }
     yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  ;
-    break;}
-case 111:
-#line 1517 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 112:
+#line 1517 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
       ThrowException("setcc operand types must match!");
     yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  ;
-    break;}
-case 112:
-#line 1522 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 113:
+#line 1522 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (yyvsp[-1].ConstVal->getType() != Type::UByteTy)
       ThrowException("Shift count for shift constant must be unsigned byte!");
     if (!yyvsp[-3].ConstVal->getType()->isInteger())
       ThrowException("Shift constant expression requires integer operand!");
     yyval.ConstVal = ConstantExpr::get(yyvsp[-5].OtherOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  ;
-    break;}
-case 113:
-#line 1529 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 114:
+#line 1529 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
         if (!isa<PackedType>(yyvsp[-3].ConstVal->getType()))
       ThrowException("First operand of extractelement must be "
                      "packed type!");
     if (yyvsp[-1].ConstVal->getType() != Type::UIntTy)
       ThrowException("Second operand of extractelement must be uint!");
     yyval.ConstVal = ConstantExpr::getExtractElement(yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  ;
-    break;}
-case 114:
-#line 1539 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 115:
+#line 1539 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     (yyval.ConstVector = yyvsp[-2].ConstVector)->push_back(yyvsp[0].ConstVal);
-  ;
-    break;}
-case 115:
-#line 1542 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 116:
+#line 1542 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ConstVector = new std::vector<Constant*>();
     yyval.ConstVector->push_back(yyvsp[0].ConstVal);
-  ;
-    break;}
-case 116:
-#line 1549 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.BoolVal = false; ;
-    break;}
-case 117:
-#line 1549 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.BoolVal = true; ;
-    break;}
-case 118:
-#line 1559 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 117:
+#line 1549 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.BoolVal = false; ;}
+    break;
+
+  case 118:
+#line 1549 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.BoolVal = true; ;}
+    break;
+
+  case 119:
+#line 1559 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
   yyval.ModuleVal = ParserResult = yyvsp[0].ModuleVal;
   CurModule.ModuleDone();
-;
-    break;}
-case 119:
-#line 1566 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+;}
+    break;
+
+  case 120:
+#line 1566 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ModuleVal = yyvsp[-1].ModuleVal;
     CurFun.FunctionDone();
-  ;
-    break;}
-case 120:
-#line 1570 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 121:
+#line 1570 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ModuleVal = yyvsp[-1].ModuleVal;
-  ;
-    break;}
-case 121:
-#line 1573 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 122:
+#line 1573 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ModuleVal = yyvsp[-1].ModuleVal;
-  ;
-    break;}
-case 122:
-#line 1576 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 123:
+#line 1576 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ModuleVal = CurModule.CurrentModule;
     // Emit an error if there are any unresolved types left.
     if (!CurModule.LateResolveTypes.empty()) {
@@ -2924,11 +3461,12 @@
       else
         ThrowException("Reference to an undefined type: #" + itostr(DID.Num));
     }
-  ;
-    break;}
-case 123:
-#line 1589 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 124:
+#line 1589 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     // Eagerly resolve types.  This is not an optimization, this is a
     // requirement that is due to the fact that we could have this:
     //
@@ -2947,164 +3485,189 @@
     }
 
     delete yyvsp[0].TypeVal;
-  ;
-    break;}
-case 124:
-#line 1609 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{       // Function prototypes can be in const pool
-  ;
-    break;}
-case 125:
-#line 1611 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 125:
+#line 1609 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {       // Function prototypes can be in const pool
+  ;}
+    break;
+
+  case 126:
+#line 1611 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (yyvsp[0].ConstVal == 0) ThrowException("Global value initializer is not a constant!");
     CurGV = ParseGlobalVariable(yyvsp[-3].StrVal, yyvsp[-2].Linkage, yyvsp[-1].BoolVal, yyvsp[0].ConstVal->getType(), yyvsp[0].ConstVal);
-                                                       ;
-    break;}
-case 126:
-#line 1614 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+                                                       ;}
+    break;
+
+  case 127:
+#line 1614 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     CurGV = 0;
-  ;
-    break;}
-case 127:
-#line 1617 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 128:
+#line 1617 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     CurGV = ParseGlobalVariable(yyvsp[-3].StrVal, GlobalValue::ExternalLinkage,
                                              yyvsp[-1].BoolVal, *yyvsp[0].TypeVal, 0);
     delete yyvsp[0].TypeVal;
-                                                   ;
-    break;}
-case 128:
-#line 1621 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+                                                   ;}
+    break;
+
+  case 129:
+#line 1621 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     CurGV = 0;
-  ;
-    break;}
-case 129:
-#line 1624 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ 
-  ;
-    break;}
-case 130:
-#line 1626 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
-  ;
-    break;}
-case 131:
-#line 1628 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ 
-  ;
-    break;}
-case 132:
-#line 1633 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Endianness = Module::BigEndian; ;
-    break;}
-case 133:
-#line 1634 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Endianness = Module::LittleEndian; ;
-    break;}
-case 134:
-#line 1636 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 130:
+#line 1624 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { 
+  ;}
+    break;
+
+  case 131:
+#line 1626 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
+  ;}
+    break;
+
+  case 132:
+#line 1628 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { 
+  ;}
+    break;
+
+  case 133:
+#line 1633 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.Endianness = Module::BigEndian; ;}
+    break;
+
+  case 134:
+#line 1634 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.Endianness = Module::LittleEndian; ;}
+    break;
+
+  case 135:
+#line 1636 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     CurModule.CurrentModule->setEndianness(yyvsp[0].Endianness);
-  ;
-    break;}
-case 135:
-#line 1639 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 136:
+#line 1639 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (yyvsp[0].UInt64Val == 32)
       CurModule.CurrentModule->setPointerSize(Module::Pointer32);
     else if (yyvsp[0].UInt64Val == 64)
       CurModule.CurrentModule->setPointerSize(Module::Pointer64);
     else
       ThrowException("Invalid pointer size: '" + utostr(yyvsp[0].UInt64Val) + "'!");
-  ;
-    break;}
-case 136:
-#line 1647 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 137:
+#line 1647 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     CurModule.CurrentModule->setTargetTriple(yyvsp[0].StrVal);
     free(yyvsp[0].StrVal);
-  ;
-    break;}
-case 138:
-#line 1654 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 139:
+#line 1654 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
           CurModule.CurrentModule->addLibrary(yyvsp[0].StrVal);
           free(yyvsp[0].StrVal);
-        ;
-    break;}
-case 139:
-#line 1658 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+        ;}
+    break;
+
+  case 140:
+#line 1658 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
           CurModule.CurrentModule->addLibrary(yyvsp[0].StrVal);
           free(yyvsp[0].StrVal);
-        ;
-    break;}
-case 140:
-#line 1662 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
-        ;
-    break;}
-case 144:
-#line 1671 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.StrVal = 0; ;
-    break;}
-case 145:
-#line 1673 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+        ;}
+    break;
+
+  case 141:
+#line 1662 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
+        ;}
+    break;
+
+  case 145:
+#line 1671 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.StrVal = 0; ;}
+    break;
+
+  case 146:
+#line 1673 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
   if (*yyvsp[-1].TypeVal == Type::VoidTy)
     ThrowException("void typed arguments are invalid!");
   yyval.ArgVal = new std::pair<PATypeHolder*, char*>(yyvsp[-1].TypeVal, yyvsp[0].StrVal);
-;
-    break;}
-case 146:
-#line 1679 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+;}
+    break;
+
+  case 147:
+#line 1679 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ArgList = yyvsp[-2].ArgList;
     yyvsp[-2].ArgList->push_back(*yyvsp[0].ArgVal);
     delete yyvsp[0].ArgVal;
-  ;
-    break;}
-case 147:
-#line 1684 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 148:
+#line 1684 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ArgList = new std::vector<std::pair<PATypeHolder*,char*> >();
     yyval.ArgList->push_back(*yyvsp[0].ArgVal);
     delete yyvsp[0].ArgVal;
-  ;
-    break;}
-case 148:
-#line 1690 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 149:
+#line 1690 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ArgList = yyvsp[0].ArgList;
-  ;
-    break;}
-case 149:
-#line 1693 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 150:
+#line 1693 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ArgList = yyvsp[-2].ArgList;
     yyval.ArgList->push_back(std::pair<PATypeHolder*,
                             char*>(new PATypeHolder(Type::VoidTy), 0));
-  ;
-    break;}
-case 150:
-#line 1698 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 151:
+#line 1698 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ArgList = new std::vector<std::pair<PATypeHolder*,char*> >();
     yyval.ArgList->push_back(std::make_pair(new PATypeHolder(Type::VoidTy), (char*)0));
-  ;
-    break;}
-case 151:
-#line 1702 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 152:
+#line 1702 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ArgList = 0;
-  ;
-    break;}
-case 152:
-#line 1707 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 153:
+#line 1707 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
   UnEscapeLexed(yyvsp[-5].StrVal);
   std::string FunctionName(yyvsp[-5].StrVal);
   free(yyvsp[-5].StrVal);  // Free strdup'd memory!
@@ -3187,86 +3750,99 @@
 
     delete yyvsp[-3].ArgList;                     // We're now done with the argument list
   }
-;
-    break;}
-case 155:
-#line 1794 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+;}
+    break;
+
+  case 156:
+#line 1794 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
   yyval.FunctionVal = CurFun.CurrentFunction;
 
   // Make sure that we keep track of the linkage type even if there was a
   // previous "declare".
   yyval.FunctionVal->setLinkage(yyvsp[-2].Linkage);
-;
-    break;}
-case 158:
-#line 1804 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+;}
+    break;
+
+  case 159:
+#line 1804 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
   yyval.FunctionVal = yyvsp[-1].FunctionVal;
-;
-    break;}
-case 159:
-#line 1808 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ CurFun.isDeclare = true; ;
-    break;}
-case 160:
-#line 1808 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+;}
+    break;
+
+  case 160:
+#line 1808 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { CurFun.isDeclare = true; ;}
+    break;
+
+  case 161:
+#line 1808 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
   yyval.FunctionVal = CurFun.CurrentFunction;
   CurFun.FunctionDone();
-;
-    break;}
-case 161:
-#line 1817 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{    // A reference to a direct constant
+;}
+    break;
+
+  case 162:
+#line 1817 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {    // A reference to a direct constant
     yyval.ValIDVal = ValID::create(yyvsp[0].SInt64Val);
-  ;
-    break;}
-case 162:
-#line 1820 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 163:
+#line 1820 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ValIDVal = ValID::create(yyvsp[0].UInt64Val);
-  ;
-    break;}
-case 163:
-#line 1823 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{                     // Perhaps it's an FP constant?
+  ;}
+    break;
+
+  case 164:
+#line 1823 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {                     // Perhaps it's an FP constant?
     yyval.ValIDVal = ValID::create(yyvsp[0].FPVal);
-  ;
-    break;}
-case 164:
-#line 1826 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 165:
+#line 1826 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ValIDVal = ValID::create(ConstantBool::True);
-  ;
-    break;}
-case 165:
-#line 1829 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 166:
+#line 1829 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ValIDVal = ValID::create(ConstantBool::False);
-  ;
-    break;}
-case 166:
-#line 1832 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 167:
+#line 1832 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ValIDVal = ValID::createNull();
-  ;
-    break;}
-case 167:
-#line 1835 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 168:
+#line 1835 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ValIDVal = ValID::createUndef();
-  ;
-    break;}
-case 168:
-#line 1838 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{     // A vector zero constant.
+  ;}
+    break;
+
+  case 169:
+#line 1838 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {     // A vector zero constant.
     yyval.ValIDVal = ValID::createZeroInit();
-  ;
-    break;}
-case 169:
-#line 1841 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ // Nonempty unsized packed vector
+  ;}
+    break;
+
+  case 170:
+#line 1841 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { // Nonempty unsized packed vector
     const Type *ETy = (*yyvsp[-1].ConstVector)[0]->getType();
     int NumElements = yyvsp[-1].ConstVector->size(); 
     
@@ -3289,65 +3865,74 @@
 
     yyval.ValIDVal = ValID::create(ConstantPacked::get(pt, *yyvsp[-1].ConstVector));
     delete PTy; delete yyvsp[-1].ConstVector;
-  ;
-    break;}
-case 170:
-#line 1865 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 171:
+#line 1865 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ValIDVal = ValID::create(yyvsp[0].ConstVal);
-  ;
-    break;}
-case 171:
-#line 1872 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{  // Is it an integer reference...?
+  ;}
+    break;
+
+  case 172:
+#line 1872 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {  // Is it an integer reference...?
     yyval.ValIDVal = ValID::create(yyvsp[0].SIntVal);
-  ;
-    break;}
-case 172:
-#line 1875 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{                   // Is it a named reference...?
+  ;}
+    break;
+
+  case 173:
+#line 1875 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {                   // Is it a named reference...?
     yyval.ValIDVal = ValID::create(yyvsp[0].StrVal);
-  ;
-    break;}
-case 175:
-#line 1886 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 176:
+#line 1886 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ValueVal = getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal); delete yyvsp[-1].TypeVal;
-  ;
-    break;}
-case 176:
-#line 1890 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 177:
+#line 1890 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.FunctionVal = yyvsp[-1].FunctionVal;
-  ;
-    break;}
-case 177:
-#line 1893 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ // Do not allow functions with 0 basic blocks   
+  ;}
+    break;
+
+  case 178:
+#line 1893 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { // Do not allow functions with 0 basic blocks   
     yyval.FunctionVal = yyvsp[-1].FunctionVal;
-  ;
-    break;}
-case 178:
-#line 1901 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 179:
+#line 1901 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     setValueName(yyvsp[0].TermInstVal, yyvsp[-1].StrVal);
     InsertValue(yyvsp[0].TermInstVal);
 
     yyvsp[-2].BasicBlockVal->getInstList().push_back(yyvsp[0].TermInstVal);
     InsertValue(yyvsp[-2].BasicBlockVal);
     yyval.BasicBlockVal = yyvsp[-2].BasicBlockVal;
-  ;
-    break;}
-case 179:
-#line 1910 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 180:
+#line 1910 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyvsp[-1].BasicBlockVal->getInstList().push_back(yyvsp[0].InstVal);
     yyval.BasicBlockVal = yyvsp[-1].BasicBlockVal;
-  ;
-    break;}
-case 180:
-#line 1914 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 181:
+#line 1914 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.BasicBlockVal = CurBB = getBBVal(ValID::create((int)CurFun.NextBBNum++), true);
 
     // Make sure to move the basic block to the correct location in the
@@ -3356,11 +3941,12 @@
     Function::BasicBlockListType &BBL = 
       CurFun.CurrentFunction->getBasicBlockList();
     BBL.splice(BBL.end(), BBL, yyval.BasicBlockVal);
-  ;
-    break;}
-case 181:
-#line 1924 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 182:
+#line 1924 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.BasicBlockVal = CurBB = getBBVal(ValID::create(yyvsp[0].StrVal), true);
 
     // Make sure to move the basic block to the correct location in the
@@ -3369,35 +3955,40 @@
     Function::BasicBlockListType &BBL = 
       CurFun.CurrentFunction->getBasicBlockList();
     BBL.splice(BBL.end(), BBL, yyval.BasicBlockVal);
-  ;
-    break;}
-case 182:
-#line 1935 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{              // Return with a result...
+  ;}
+    break;
+
+  case 183:
+#line 1935 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {              // Return with a result...
     yyval.TermInstVal = new ReturnInst(yyvsp[0].ValueVal);
-  ;
-    break;}
-case 183:
-#line 1938 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{                                       // Return with no result...
+  ;}
+    break;
+
+  case 184:
+#line 1938 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {                                       // Return with no result...
     yyval.TermInstVal = new ReturnInst();
-  ;
-    break;}
-case 184:
-#line 1941 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{                         // Unconditional Branch...
+  ;}
+    break;
+
+  case 185:
+#line 1941 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {                         // Unconditional Branch...
     yyval.TermInstVal = new BranchInst(getBBVal(yyvsp[0].ValIDVal));
-  ;
-    break;}
-case 185:
-#line 1944 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{  
+  ;}
+    break;
+
+  case 186:
+#line 1944 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {  
     yyval.TermInstVal = new BranchInst(getBBVal(yyvsp[-3].ValIDVal), getBBVal(yyvsp[0].ValIDVal), getVal(Type::BoolTy, yyvsp[-6].ValIDVal));
-  ;
-    break;}
-case 186:
-#line 1947 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 187:
+#line 1947 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     SwitchInst *S = new SwitchInst(getVal(yyvsp[-7].PrimType, yyvsp[-6].ValIDVal), getBBVal(yyvsp[-3].ValIDVal), yyvsp[-1].JumpTable->size());
     yyval.TermInstVal = S;
 
@@ -3410,18 +4001,20 @@
         ThrowException("Switch case is constant, but not a simple integer!");
     }
     delete yyvsp[-1].JumpTable;
-  ;
-    break;}
-case 187:
-#line 1961 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 188:
+#line 1961 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     SwitchInst *S = new SwitchInst(getVal(yyvsp[-6].PrimType, yyvsp[-5].ValIDVal), getBBVal(yyvsp[-2].ValIDVal), 0);
     yyval.TermInstVal = S;
-  ;
-    break;}
-case 188:
-#line 1966 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 189:
+#line 1966 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     const PointerType *PFTy;
     const FunctionType *Ty;
 
@@ -3472,34 +4065,38 @@
   
     delete yyvsp[-10].TypeVal;
     delete yyvsp[-7].ValueList;
-  ;
-    break;}
-case 189:
-#line 2018 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 190:
+#line 2018 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.TermInstVal = new UnwindInst();
-  ;
-    break;}
-case 190:
-#line 2021 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 191:
+#line 2021 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.TermInstVal = new UnreachableInst();
-  ;
-    break;}
-case 191:
-#line 2027 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 192:
+#line 2027 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.JumpTable = yyvsp[-5].JumpTable;
     Constant *V = cast<Constant>(getValNonImprovising(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal));
     if (V == 0)
       ThrowException("May only switch on a constant pool value!");
 
     yyval.JumpTable->push_back(std::make_pair(V, getBBVal(yyvsp[0].ValIDVal)));
-  ;
-    break;}
-case 192:
-#line 2035 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 193:
+#line 2035 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.JumpTable = new std::vector<std::pair<Constant*, BasicBlock*> >();
     Constant *V = cast<Constant>(getValNonImprovising(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal));
 
@@ -3507,66 +4104,75 @@
       ThrowException("May only switch on a constant pool value!");
 
     yyval.JumpTable->push_back(std::make_pair(V, getBBVal(yyvsp[0].ValIDVal)));
-  ;
-    break;}
-case 193:
-#line 2045 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 194:
+#line 2045 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
   // Is this definition named?? if so, assign the name...
   setValueName(yyvsp[0].InstVal, yyvsp[-1].StrVal);
   InsertValue(yyvsp[0].InstVal);
   yyval.InstVal = yyvsp[0].InstVal;
-;
-    break;}
-case 194:
-#line 2052 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{    // Used for PHI nodes
+;}
+    break;
+
+  case 195:
+#line 2052 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {    // Used for PHI nodes
     yyval.PHIList = new std::list<std::pair<Value*, BasicBlock*> >();
     yyval.PHIList->push_back(std::make_pair(getVal(*yyvsp[-5].TypeVal, yyvsp[-3].ValIDVal), getBBVal(yyvsp[-1].ValIDVal)));
     delete yyvsp[-5].TypeVal;
-  ;
-    break;}
-case 195:
-#line 2057 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 196:
+#line 2057 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.PHIList = yyvsp[-6].PHIList;
     yyvsp[-6].PHIList->push_back(std::make_pair(getVal(yyvsp[-6].PHIList->front().first->getType(), yyvsp[-3].ValIDVal),
                                  getBBVal(yyvsp[-1].ValIDVal)));
-  ;
-    break;}
-case 196:
-#line 2064 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{    // Used for call statements, and memory insts...
+  ;}
+    break;
+
+  case 197:
+#line 2064 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {    // Used for call statements, and memory insts...
     yyval.ValueList = new std::vector<Value*>();
     yyval.ValueList->push_back(yyvsp[0].ValueVal);
-  ;
-    break;}
-case 197:
-#line 2068 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 198:
+#line 2068 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.ValueList = yyvsp[-2].ValueList;
     yyvsp[-2].ValueList->push_back(yyvsp[0].ValueVal);
-  ;
-    break;}
-case 199:
-#line 2074 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ValueList = 0; ;
-    break;}
-case 200:
-#line 2076 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 200:
+#line 2074 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { yyval.ValueList = 0; ;}
+    break;
+
+  case 201:
+#line 2076 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.BoolVal = true;
-  ;
-    break;}
-case 201:
-#line 2079 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 202:
+#line 2079 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.BoolVal = false;
-  ;
-    break;}
-case 202:
-#line 2085 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 203:
+#line 2085 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!(*yyvsp[-3].TypeVal)->isInteger() && !(*yyvsp[-3].TypeVal)->isFloatingPoint() && 
         !isa<PackedType>((*yyvsp[-3].TypeVal).get()))
       ThrowException(
@@ -3577,11 +4183,12 @@
     if (yyval.InstVal == 0)
       ThrowException("binary operator returned null!");
     delete yyvsp[-3].TypeVal;
-  ;
-    break;}
-case 203:
-#line 2097 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 204:
+#line 2097 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!(*yyvsp[-3].TypeVal)->isIntegral()) {
       if (!isa<PackedType>(yyvsp[-3].TypeVal->get()) ||
           !cast<PackedType>(yyvsp[-3].TypeVal->get())->getElementType()->isIntegral())
@@ -3591,11 +4198,12 @@
     if (yyval.InstVal == 0)
       ThrowException("binary operator returned null!");
     delete yyvsp[-3].TypeVal;
-  ;
-    break;}
-case 204:
-#line 2108 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 205:
+#line 2108 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if(isa<PackedType>((*yyvsp[-3].TypeVal).get())) {
       ThrowException(
         "PackedTypes currently not supported in setcc instructions!");
@@ -3604,11 +4212,12 @@
     if (yyval.InstVal == 0)
       ThrowException("binary operator returned null!");
     delete yyvsp[-3].TypeVal;
-  ;
-    break;}
-case 205:
-#line 2118 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 206:
+#line 2118 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     std::cerr << "WARNING: Use of eliminated 'not' instruction:"
               << " Replacing with 'xor'.\n";
 
@@ -3619,49 +4228,54 @@
     yyval.InstVal = BinaryOperator::create(Instruction::Xor, yyvsp[0].ValueVal, Ones);
     if (yyval.InstVal == 0)
       ThrowException("Could not create a xor instruction!");
-  ;
-    break;}
-case 206:
-#line 2130 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 207:
+#line 2130 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (yyvsp[0].ValueVal->getType() != Type::UByteTy)
       ThrowException("Shift amount must be ubyte!");
     if (!yyvsp[-2].ValueVal->getType()->isInteger())
       ThrowException("Shift constant expression requires integer operand!");
     yyval.InstVal = new ShiftInst(yyvsp[-3].OtherOpVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
-  ;
-    break;}
-case 207:
-#line 2137 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 208:
+#line 2137 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!yyvsp[0].TypeVal->get()->isFirstClassType())
       ThrowException("cast instruction to a non-primitive type: '" +
                      yyvsp[0].TypeVal->get()->getDescription() + "'!");
     yyval.InstVal = new CastInst(yyvsp[-2].ValueVal, *yyvsp[0].TypeVal);
     delete yyvsp[0].TypeVal;
-  ;
-    break;}
-case 208:
-#line 2144 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 209:
+#line 2144 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (yyvsp[-4].ValueVal->getType() != Type::BoolTy)
       ThrowException("select condition must be boolean!");
     if (yyvsp[-2].ValueVal->getType() != yyvsp[0].ValueVal->getType())
       ThrowException("select value types should match!");
     yyval.InstVal = new SelectInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
-  ;
-    break;}
-case 209:
-#line 2151 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 210:
+#line 2151 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     NewVarArgs = true;
     yyval.InstVal = new VAArgInst(yyvsp[-2].ValueVal, *yyvsp[0].TypeVal);
     delete yyvsp[0].TypeVal;
-  ;
-    break;}
-case 210:
-#line 2156 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 211:
+#line 2156 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     ObsoleteVarArgs = true;
     const Type* ArgTy = yyvsp[-2].ValueVal->getType();
     Function* NF = CurModule.CurrentModule->
@@ -3679,11 +4293,12 @@
     CurBB->getInstList().push_back(new StoreInst(bar, foo));
     yyval.InstVal = new VAArgInst(foo, *yyvsp[0].TypeVal);
     delete yyvsp[0].TypeVal;
-  ;
-    break;}
-case 211:
-#line 2175 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 212:
+#line 2175 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     ObsoleteVarArgs = true;
     const Type* ArgTy = yyvsp[-2].ValueVal->getType();
     Function* NF = CurModule.CurrentModule->
@@ -3704,22 +4319,24 @@
     CurBB->getInstList().push_back(tmp);
     yyval.InstVal = new LoadInst(foo);
     delete yyvsp[0].TypeVal;
-  ;
-    break;}
-case 212:
-#line 2197 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 213:
+#line 2197 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!isa<PackedType>(yyvsp[-2].ValueVal->getType()))
       ThrowException("First operand of extractelement must be "
                      "packed type!");
     if (yyvsp[0].ValueVal->getType() != Type::UIntTy)
       ThrowException("Second operand of extractelement must be uint!");
     yyval.InstVal = new ExtractElementInst(yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
-  ;
-    break;}
-case 213:
-#line 2205 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 214:
+#line 2205 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!isa<PackedType>(yyvsp[-4].ValueVal->getType()))
       ThrowException("First operand of insertelement must be "
                      "packed type!");
@@ -3730,11 +4347,12 @@
     if (yyvsp[0].ValueVal->getType() != Type::UIntTy)
       ThrowException("Third operand of insertelement must be uint!");
     yyval.InstVal = new InsertElementInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
-  ;
-    break;}
-case 214:
-#line 2217 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 215:
+#line 2217 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     const Type *Ty = yyvsp[0].PHIList->front().first->getType();
     if (!Ty->isFirstClassType())
       ThrowException("PHI node operands must be of first class type!");
@@ -3747,11 +4365,12 @@
       yyvsp[0].PHIList->pop_front();
     }
     delete yyvsp[0].PHIList;  // Free the list...
-  ;
-    break;}
-case 215:
-#line 2231 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 216:
+#line 2231 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     const PointerType *PFTy;
     const FunctionType *Ty;
 
@@ -3807,78 +4426,89 @@
     cast<CallInst>(yyval.InstVal)->setCallingConv(yyvsp[-5].UIntVal);
     delete yyvsp[-4].TypeVal;
     delete yyvsp[-1].ValueList;
-  ;
-    break;}
-case 216:
-#line 2288 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 217:
+#line 2288 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.InstVal = yyvsp[0].InstVal;
-  ;
-    break;}
-case 217:
-#line 2294 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ 
+  ;}
+    break;
+
+  case 218:
+#line 2294 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { 
     yyval.ValueList = yyvsp[0].ValueList; 
-  ;
-    break;}
-case 218:
-#line 2296 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{ 
+  ;}
+    break;
+
+  case 219:
+#line 2296 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    { 
     yyval.ValueList = new std::vector<Value*>(); 
-  ;
-    break;}
-case 219:
-#line 2300 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 220:
+#line 2300 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.BoolVal = true;
-  ;
-    break;}
-case 220:
-#line 2303 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 221:
+#line 2303 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.BoolVal = false;
-  ;
-    break;}
-case 221:
-#line 2309 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 222:
+#line 2309 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.InstVal = new MallocInst(*yyvsp[-1].TypeVal, 0, yyvsp[0].UIntVal);
     delete yyvsp[-1].TypeVal;
-  ;
-    break;}
-case 222:
-#line 2313 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 223:
+#line 2313 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.InstVal = new MallocInst(*yyvsp[-4].TypeVal, getVal(yyvsp[-2].PrimType, yyvsp[-1].ValIDVal), yyvsp[0].UIntVal);
     delete yyvsp[-4].TypeVal;
-  ;
-    break;}
-case 223:
-#line 2317 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 224:
+#line 2317 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.InstVal = new AllocaInst(*yyvsp[-1].TypeVal, 0, yyvsp[0].UIntVal);
     delete yyvsp[-1].TypeVal;
-  ;
-    break;}
-case 224:
-#line 2321 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 225:
+#line 2321 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     yyval.InstVal = new AllocaInst(*yyvsp[-4].TypeVal, getVal(yyvsp[-2].PrimType, yyvsp[-1].ValIDVal), yyvsp[0].UIntVal);
     delete yyvsp[-4].TypeVal;
-  ;
-    break;}
-case 225:
-#line 2325 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 226:
+#line 2325 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!isa<PointerType>(yyvsp[0].ValueVal->getType()))
       ThrowException("Trying to free nonpointer type " + 
                      yyvsp[0].ValueVal->getType()->getDescription() + "!");
     yyval.InstVal = new FreeInst(yyvsp[0].ValueVal);
-  ;
-    break;}
-case 226:
-#line 2332 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 227:
+#line 2332 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!isa<PointerType>(yyvsp[-1].TypeVal->get()))
       ThrowException("Can't load from nonpointer type: " +
                      (*yyvsp[-1].TypeVal)->getDescription());
@@ -3887,11 +4517,12 @@
                      (*yyvsp[-1].TypeVal)->getDescription());
     yyval.InstVal = new LoadInst(getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal), "", yyvsp[-3].BoolVal);
     delete yyvsp[-1].TypeVal;
-  ;
-    break;}
-case 227:
-#line 2342 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 228:
+#line 2342 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     const PointerType *PT = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
     if (!PT)
       ThrowException("Can't store to a nonpointer type: " +
@@ -3903,11 +4534,12 @@
 
     yyval.InstVal = new StoreInst(yyvsp[-3].ValueVal, getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal), yyvsp[-5].BoolVal);
     delete yyvsp[-1].TypeVal;
-  ;
-    break;}
-case 228:
-#line 2355 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 229:
+#line 2355 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!isa<PointerType>(yyvsp[-2].TypeVal->get()))
       ThrowException("getelementptr insn requires pointer operand!");
 
@@ -3927,231 +4559,239 @@
                      (*yyvsp[-2].TypeVal)->getDescription()+ "'!");
     yyval.InstVal = new GetElementPtrInst(getVal(*yyvsp[-2].TypeVal, yyvsp[-1].ValIDVal), *yyvsp[0].ValueList);
     delete yyvsp[-2].TypeVal; delete yyvsp[0].ValueList;
-  ;
-    break;}
-}
-   /* the action file gets copied in in place of this dollarsign */
-#line 543 "/usr/share/bison.simple"
+  ;}
+    break;
+
+
+    }
+
+/* Line 1000 of yacc.c.  */
+#line 4570 "llvmAsmParser.tab.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
-#ifdef YYLSP_NEEDED
-  yylsp -= yylen;
-#endif
 
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "state stack now");
-      while (ssp1 != yyssp)
-	fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
+
+  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
-#ifdef YYLSP_NEEDED
-  yylsp++;
-  if (yylen == 0)
-    {
-      yylsp->first_line = yylloc.first_line;
-      yylsp->first_column = yylloc.first_column;
-      yylsp->last_line = (yylsp-1)->last_line;
-      yylsp->last_column = (yylsp-1)->last_column;
-      yylsp->text = 0;
-    }
-  else
-    {
-      yylsp->last_line = (yylsp+yylen-1)->last_line;
-      yylsp->last_column = (yylsp+yylen-1)->last_column;
-    }
-#endif
 
-  /* Now "shift" the result of the reduction.
-     Determine what state that goes to,
-     based on the state we popped back to
-     and the rule number reduced by.  */
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
 
   yyn = yyr1[yyn];
 
-  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
     yystate = yytable[yystate];
   else
-    yystate = yydefgoto[yyn - YYNTBASE];
+    yystate = yydefgoto[yyn - YYNTOKENS];
 
   goto yynewstate;
 
-yyerrlab:   /* here on detecting error */
 
-  if (! yyerrstatus)
-    /* If not already recovering from an error, report this error.  */
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
     {
       ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
+#if YYERROR_VERBOSE
       yyn = yypact[yystate];
 
-      if (yyn > YYFLAG && yyn < YYLAST)
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
 	{
-	  int size = 0;
-	  char *msg;
-	  int x, count;
+	  YYSIZE_T yysize = 0;
+	  int yytype = YYTRANSLATE (yychar);
+	  const char* yyprefix;
+	  char *yymsg;
+	  int yyx;
 
-	  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)
+	  /* 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 = 0;
+
+	  yyprefix = ", expecting ";
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+		yycount += 1;
+		if (yycount == 5)
+		  {
+		    yysize = 0;
+		    break;
+		  }
+	      }
+	  yysize += (sizeof ("syntax error, unexpected ")
+		     + yystrlen (yytname[yytype]));
+	  yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg != 0)
 	    {
-	      strcpy(msg, "parse error");
+	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+	      yyp = yystpcpy (yyp, yytname[yytype]);
 
-	      if (count < 5)
+	      if (yycount < 5)
 		{
-		  count = 0;
-		  for (x = (yyn < 0 ? -yyn : 0);
-		       x < (sizeof(yytname) / sizeof(char *)); x++)
-		    if (yycheck[x + yyn] == x)
+		  yyprefix = ", expecting ";
+		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
 		      {
-			strcat(msg, count == 0 ? ", expecting `" : " or `");
-			strcat(msg, yytname[x]);
-			strcat(msg, "'");
-			count++;
+			yyp = yystpcpy (yyp, yyprefix);
+			yyp = yystpcpy (yyp, yytname[yyx]);
+			yyprefix = " or ";
 		      }
 		}
-	      yyerror(msg);
-	      free(msg);
+	      yyerror (yymsg);
+	      YYSTACK_FREE (yymsg);
 	    }
 	  else
-	    yyerror ("parse error; also virtual memory exceeded");
+	    yyerror ("syntax error; also virtual memory exhausted");
 	}
       else
 #endif /* YYERROR_VERBOSE */
-	yyerror("parse error");
+	yyerror ("syntax error");
     }
 
-  goto yyerrlab1;
-yyerrlab1:   /* here on error raised explicitly by an action */
+
 
   if (yyerrstatus == 3)
     {
-      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
+      /* If just tried and failed to reuse lookahead token after an
+	 error, discard it.  */
 
-      /* return failure if at end of input */
-      if (yychar == YYEOF)
+      if (yychar <= YYEOF)
+        {
+          /* If at end of input, pop the error token,
+	     then the rest of the stack, then return failure.  */
+	  if (yychar == YYEOF)
+	     for (;;)
+	       {
+		 YYPOPSTACK;
+		 if (yyssp == yyss)
+		   YYABORT;
+		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+		 yydestruct (yystos[*yyssp], yyvsp);
+	       }
+        }
+      else
+	{
+	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+	  yydestruct (yytoken, &yylval);
+	  yychar = YYEMPTY;
+
+	}
+    }
+
+  /* Else will try to reuse lookahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+#ifdef __GNUC__
+  /* Pacify GCC when the user code never invokes YYERROR and the label
+     yyerrorlab therefore never appears in user code.  */
+  if (0)
+     goto yyerrorlab;
+#endif
+
+  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)
 	YYABORT;
 
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
-
-      yychar = YYEMPTY;
+      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+      yydestruct (yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
     }
 
-  /* 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
+  YYDPRINTF ((stderr, "Shifting error token, "));
 
   *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
+
 
   yystate = yyn;
   goto yynewstate;
 
- yyacceptlab:
-  /* YYACCEPT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
-#endif
-    }
-  return 0;
 
- yyabortlab:
-  /* YYABORT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*----------------------------------------------.
+| yyoverflowlab -- parser overflow comes here.  |
+`----------------------------------------------*/
+yyoverflowlab:
+  yyerror ("parser stack overflow");
+  yyresult = 2;
+  /* Fall through.  */
 #endif
-    }
-  return 1;
+
+yyreturn:
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
 }
-#line 2378 "/Users/bocchino/llvm-checkin/src/lib/AsmParser/llvmAsmParser.y"
+
+
+#line 2378 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
 
 int yyerror(const char *ErrorMsg) {
   std::string where 
@@ -4165,3 +4805,4 @@
   ThrowException(errMsg);
   return 0;
 }
+
diff --git a/lib/AsmParser/llvmAsmParser.h b/lib/AsmParser/llvmAsmParser.h
index f9026f8..ad9dfa4 100644
--- a/lib/AsmParser/llvmAsmParser.h
+++ b/lib/AsmParser/llvmAsmParser.h
@@ -1,4 +1,233 @@
-typedef union {
+/* A Bison parser, made by GNU Bison 1.875c.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 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.  */
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     ESINT64VAL = 258,
+     EUINT64VAL = 259,
+     SINTVAL = 260,
+     UINTVAL = 261,
+     FPVAL = 262,
+     VOID = 263,
+     BOOL = 264,
+     SBYTE = 265,
+     UBYTE = 266,
+     SHORT = 267,
+     USHORT = 268,
+     INT = 269,
+     UINT = 270,
+     LONG = 271,
+     ULONG = 272,
+     FLOAT = 273,
+     DOUBLE = 274,
+     TYPE = 275,
+     LABEL = 276,
+     VAR_ID = 277,
+     LABELSTR = 278,
+     STRINGCONSTANT = 279,
+     IMPLEMENTATION = 280,
+     ZEROINITIALIZER = 281,
+     TRUETOK = 282,
+     FALSETOK = 283,
+     BEGINTOK = 284,
+     ENDTOK = 285,
+     DECLARE = 286,
+     GLOBAL = 287,
+     CONSTANT = 288,
+     SECTION = 289,
+     VOLATILE = 290,
+     TO = 291,
+     DOTDOTDOT = 292,
+     NULL_TOK = 293,
+     UNDEF = 294,
+     CONST = 295,
+     INTERNAL = 296,
+     LINKONCE = 297,
+     WEAK = 298,
+     APPENDING = 299,
+     OPAQUE = 300,
+     NOT = 301,
+     EXTERNAL = 302,
+     TARGET = 303,
+     TRIPLE = 304,
+     ENDIAN = 305,
+     POINTERSIZE = 306,
+     LITTLE = 307,
+     BIG = 308,
+     ALIGN = 309,
+     DEPLIBS = 310,
+     CALL = 311,
+     TAIL = 312,
+     CC_TOK = 313,
+     CCC_TOK = 314,
+     FASTCC_TOK = 315,
+     COLDCC_TOK = 316,
+     RET = 317,
+     BR = 318,
+     SWITCH = 319,
+     INVOKE = 320,
+     UNWIND = 321,
+     UNREACHABLE = 322,
+     ADD = 323,
+     SUB = 324,
+     MUL = 325,
+     DIV = 326,
+     REM = 327,
+     AND = 328,
+     OR = 329,
+     XOR = 330,
+     SETLE = 331,
+     SETGE = 332,
+     SETLT = 333,
+     SETGT = 334,
+     SETEQ = 335,
+     SETNE = 336,
+     MALLOC = 337,
+     ALLOCA = 338,
+     FREE = 339,
+     LOAD = 340,
+     STORE = 341,
+     GETELEMENTPTR = 342,
+     PHI_TOK = 343,
+     CAST = 344,
+     SELECT = 345,
+     SHL = 346,
+     SHR = 347,
+     VAARG = 348,
+     EXTRACTELEMENT = 349,
+     INSERTELEMENT = 350,
+     VAARG_old = 351,
+     VANEXT_old = 352
+   };
+#endif
+#define ESINT64VAL 258
+#define EUINT64VAL 259
+#define SINTVAL 260
+#define UINTVAL 261
+#define FPVAL 262
+#define VOID 263
+#define BOOL 264
+#define SBYTE 265
+#define UBYTE 266
+#define SHORT 267
+#define USHORT 268
+#define INT 269
+#define UINT 270
+#define LONG 271
+#define ULONG 272
+#define FLOAT 273
+#define DOUBLE 274
+#define TYPE 275
+#define LABEL 276
+#define VAR_ID 277
+#define LABELSTR 278
+#define STRINGCONSTANT 279
+#define IMPLEMENTATION 280
+#define ZEROINITIALIZER 281
+#define TRUETOK 282
+#define FALSETOK 283
+#define BEGINTOK 284
+#define ENDTOK 285
+#define DECLARE 286
+#define GLOBAL 287
+#define CONSTANT 288
+#define SECTION 289
+#define VOLATILE 290
+#define TO 291
+#define DOTDOTDOT 292
+#define NULL_TOK 293
+#define UNDEF 294
+#define CONST 295
+#define INTERNAL 296
+#define LINKONCE 297
+#define WEAK 298
+#define APPENDING 299
+#define OPAQUE 300
+#define NOT 301
+#define EXTERNAL 302
+#define TARGET 303
+#define TRIPLE 304
+#define ENDIAN 305
+#define POINTERSIZE 306
+#define LITTLE 307
+#define BIG 308
+#define ALIGN 309
+#define DEPLIBS 310
+#define CALL 311
+#define TAIL 312
+#define CC_TOK 313
+#define CCC_TOK 314
+#define FASTCC_TOK 315
+#define COLDCC_TOK 316
+#define RET 317
+#define BR 318
+#define SWITCH 319
+#define INVOKE 320
+#define UNWIND 321
+#define UNREACHABLE 322
+#define ADD 323
+#define SUB 324
+#define MUL 325
+#define DIV 326
+#define REM 327
+#define AND 328
+#define OR 329
+#define XOR 330
+#define SETLE 331
+#define SETGE 332
+#define SETLT 333
+#define SETGT 334
+#define SETEQ 335
+#define SETNE 336
+#define MALLOC 337
+#define ALLOCA 338
+#define FREE 339
+#define LOAD 340
+#define STORE 341
+#define GETELEMENTPTR 342
+#define PHI_TOK 343
+#define CAST 344
+#define SELECT 345
+#define SHL 346
+#define SHR 347
+#define VAARG 348
+#define EXTRACTELEMENT 349
+#define INSERTELEMENT 350
+#define VAARG_old 351
+#define VANEXT_old 352
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 878 "/proj/llvm/llvm2/lib/AsmParser/llvmAsmParser.y"
+typedef union YYSTYPE {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
   std::pair<llvm::PATypeHolder*, char*>  *ArgVal;
@@ -37,101 +266,14 @@
   llvm::Instruction::OtherOps             OtherOpVal;
   llvm::Module::Endianness                Endianness;
 } YYSTYPE;
-#define	ESINT64VAL	257
-#define	EUINT64VAL	258
-#define	SINTVAL	259
-#define	UINTVAL	260
-#define	FPVAL	261
-#define	VOID	262
-#define	BOOL	263
-#define	SBYTE	264
-#define	UBYTE	265
-#define	SHORT	266
-#define	USHORT	267
-#define	INT	268
-#define	UINT	269
-#define	LONG	270
-#define	ULONG	271
-#define	FLOAT	272
-#define	DOUBLE	273
-#define	TYPE	274
-#define	LABEL	275
-#define	VAR_ID	276
-#define	LABELSTR	277
-#define	STRINGCONSTANT	278
-#define	IMPLEMENTATION	279
-#define	ZEROINITIALIZER	280
-#define	TRUETOK	281
-#define	FALSETOK	282
-#define	BEGINTOK	283
-#define	ENDTOK	284
-#define	DECLARE	285
-#define	GLOBAL	286
-#define	CONSTANT	287
-#define	SECTION	288
-#define	VOLATILE	289
-#define	TO	290
-#define	DOTDOTDOT	291
-#define	NULL_TOK	292
-#define	UNDEF	293
-#define	CONST	294
-#define	INTERNAL	295
-#define	LINKONCE	296
-#define	WEAK	297
-#define	APPENDING	298
-#define	OPAQUE	299
-#define	NOT	300
-#define	EXTERNAL	301
-#define	TARGET	302
-#define	TRIPLE	303
-#define	ENDIAN	304
-#define	POINTERSIZE	305
-#define	LITTLE	306
-#define	BIG	307
-#define	ALIGN	308
-#define	DEPLIBS	309
-#define	CALL	310
-#define	TAIL	311
-#define	CC_TOK	312
-#define	CCC_TOK	313
-#define	FASTCC_TOK	314
-#define	COLDCC_TOK	315
-#define	RET	316
-#define	BR	317
-#define	SWITCH	318
-#define	INVOKE	319
-#define	UNWIND	320
-#define	UNREACHABLE	321
-#define	ADD	322
-#define	SUB	323
-#define	MUL	324
-#define	DIV	325
-#define	REM	326
-#define	AND	327
-#define	OR	328
-#define	XOR	329
-#define	SETLE	330
-#define	SETGE	331
-#define	SETLT	332
-#define	SETGT	333
-#define	SETEQ	334
-#define	SETNE	335
-#define	MALLOC	336
-#define	ALLOCA	337
-#define	FREE	338
-#define	LOAD	339
-#define	STORE	340
-#define	GETELEMENTPTR	341
-#define	PHI_TOK	342
-#define	CAST	343
-#define	SELECT	344
-#define	SHL	345
-#define	SHR	346
-#define	VAARG	347
-#define	EXTRACTELEMENT	348
-#define	INSERTELEMENT	349
-#define	VAARG_old	350
-#define	VANEXT_old	351
-
+/* Line 1275 of yacc.c.  */
+#line 271 "llvmAsmParser.tab.h"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
 
 extern YYSTYPE llvmAsmlval;
+
+
+
diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y
index 01d4334..ebf24f1 100644
--- a/lib/AsmParser/llvmAsmParser.y
+++ b/lib/AsmParser/llvmAsmParser.y
@@ -105,10 +105,10 @@
       ThrowException(UndefinedReferences);
     }
 
-    // Rename any overloaded intrinsic functions.
-    for (Module::iterator FI = CurrentModule->begin(), FE =
-         CurrentModule->end(); FI != FE; ++FI)
-      UpgradeIntrinsicFunction(&(*FI));
+    // Look for intrinsic functions and CallInst that need to be upgraded
+    for (Module::iterator FI = CurrentModule->begin(),FE = CurrentModule->end();
+         FI != FE; ++FI)
+      UpgradeCallsToIntrinsic(FI);
 
     Values.clear();         // Clear out function local definitions
     Types.clear();
diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp
index 2ec670e..55e1606 100644
--- a/lib/Bytecode/Reader/Reader.cpp
+++ b/lib/Bytecode/Reader/Reader.cpp
@@ -857,6 +857,11 @@
     }
 
     Result = new CallInst(F, Params);
+    if (CallInst* newCI = UpgradeIntrinsicCall(cast<CallInst>(Result))) {
+      Result->replaceAllUsesWith(newCI);
+      Result->eraseFromParent();
+      Result = newCI;
+    }
     if (isTailCall) cast<CallInst>(Result)->setTailCall();
     if (CallingConv) cast<CallInst>(Result)->setCallingConv(CallingConv);
     break;
