Initial, non-functional, version of llvm-upgrade. This version just echos
authorReid Spencer <rspencer@reidspencer.com>
Thu, 30 Nov 2006 06:36:44 +0000 (06:36 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Thu, 30 Nov 2006 06:36:44 +0000 (06:36 +0000)
its input. Committed for safekeeping purposes. Don't use this yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32030 91177308-0d34-0410-b5e6-96231b3b80d8

13 files changed:
tools/llvm-upgrade/Makefile [new file with mode: 0644]
tools/llvm-upgrade/ParserInternals.h [new file with mode: 0644]
tools/llvm-upgrade/UpgradeLexer.cpp [new file with mode: 0644]
tools/llvm-upgrade/UpgradeLexer.cpp.cvs [new file with mode: 0644]
tools/llvm-upgrade/UpgradeLexer.l [new file with mode: 0644]
tools/llvm-upgrade/UpgradeLexer.l.cvs [new file with mode: 0644]
tools/llvm-upgrade/UpgradeParser.cpp [new file with mode: 0644]
tools/llvm-upgrade/UpgradeParser.cpp.cvs [new file with mode: 0644]
tools/llvm-upgrade/UpgradeParser.h [new file with mode: 0644]
tools/llvm-upgrade/UpgradeParser.h.cvs [new file with mode: 0644]
tools/llvm-upgrade/UpgradeParser.y [new file with mode: 0644]
tools/llvm-upgrade/UpgradeParser.y.cvs [new file with mode: 0644]
tools/llvm-upgrade/llvm-upgrade.cpp [new file with mode: 0644]

diff --git a/tools/llvm-upgrade/Makefile b/tools/llvm-upgrade/Makefile
new file mode 100644 (file)
index 0000000..48ce02f
--- /dev/null
@@ -0,0 +1,22 @@
+##===- tools/llvm-upgrade/Makefile -------------------------*- Makefile -*-===##
+# 
+#                     The LLVM Compiler Infrastructure
+#
+# This file was developed by Reid Spencer and is distributed under the
+# University of Illinois Open Source License. See LICENSE.TXT for details.
+# 
+##===----------------------------------------------------------------------===##
+
+LEVEL = ../..
+TOOLNAME = llvm-upgrade
+LINK_COMPONENTS := support system
+
+include $(LEVEL)/Makefile.common
+
+# Make the object code file for the lexer depend upon the header file generated
+# by the Bison parser.  This prevents the Lexer from being compiled before the
+# header file it needs is built.
+$(ObjDir)/upgradeLexer.o: $(PROJ_SRC_DIR)/UpgradeParser.h
+
+test:
+       ../../Debug/bin/llvm-upgrade -o - ../../test/Feature/basictest.ll
diff --git a/tools/llvm-upgrade/ParserInternals.h b/tools/llvm-upgrade/ParserInternals.h
new file mode 100644 (file)
index 0000000..c7707ae
--- /dev/null
@@ -0,0 +1,37 @@
+//===-- ParserInternals.h - Definitions internal to the parser --*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by Reid Spencer and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+//  This header file defines the variables that are shared between the lexer,
+//  the parser, and the main program.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef PARSER_INTERNALS_H
+#define PARSER_INTERNALS_H
+
+#include <string>
+
+// Global variables exported from the lexer...
+
+extern std::string CurFileName;
+extern std::string Textin;
+extern int Upgradelineno;
+
+// functions exported from the lexer
+void set_scan_bytes (const char * str, size_t len);
+
+void UpgradeAssembly(const std::string & infile, std::ostream &out);
+
+// Globals exported by the parser...
+extern char* Upgradetext;
+extern int   Upgradeleng;
+
+int yyerror(const char *ErrorMsg) ;
+
+#endif
diff --git a/tools/llvm-upgrade/UpgradeLexer.cpp b/tools/llvm-upgrade/UpgradeLexer.cpp
new file mode 100644 (file)
index 0000000..a3a7c66
--- /dev/null
@@ -0,0 +1,2613 @@
+#define yy_create_buffer Upgrade_create_buffer
+#define yy_delete_buffer Upgrade_delete_buffer
+#define yy_scan_buffer Upgrade_scan_buffer
+#define yy_scan_string Upgrade_scan_string
+#define yy_scan_bytes Upgrade_scan_bytes
+#define yy_flex_debug Upgrade_flex_debug
+#define yy_init_buffer Upgrade_init_buffer
+#define yy_flush_buffer Upgrade_flush_buffer
+#define yy_load_buffer_state Upgrade_load_buffer_state
+#define yy_switch_to_buffer Upgrade_switch_to_buffer
+#define yyin Upgradein
+#define yyleng Upgradeleng
+#define yylex Upgradelex
+#define yyout Upgradeout
+#define yyrestart Upgraderestart
+#define yytext Upgradetext
+#define yylineno Upgradelineno
+
+#line 20 "UpgradeLexer.cpp"
+/* A lexical scanner generated by flex*/
+
+/* Scanner skeleton version:
+ * $Header$
+ */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+
+#include <stdio.h>
+#include <unistd.h>
+
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+
+/* Use prototypes in function declarations. */
+#define YY_USE_PROTOS
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else  /* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_PROTOS
+#define YY_USE_CONST
+
+#endif /* __STDC__ */
+#endif /* ! __cplusplus */
+
+#ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
+#define YY_USE_CONST
+#define YY_USE_PROTOS
+#endif
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#define YY_BUF_SIZE (16384*64)
+
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+
+extern int yyleng;
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+/* The funky do-while in the following #define is used to turn the definition
+ * int a single C statement (which needs a semi-colon terminator).  This
+ * avoids problems with code like:
+ *
+ *     if ( condition_holds )
+ *             yyless( 5 );
+ *     else
+ *             do_something_else();
+ *
+ * Prior to using the do-while the compiler would get upset at the
+ * "else" because it interpreted the "if" statement as being all
+ * done when it reached the ';' after the yyless() call.
+ */
+
+/* Return all but the first 'n' matched characters back to the input stream. */
+
+#define yyless(n) \
+       do \
+               { \
+               /* Undo effects of setting up yytext. */ \
+               *yy_cp = yy_hold_char; \
+               YY_RESTORE_YY_MORE_OFFSET \
+               yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+               } \
+       while ( 0 )
+
+#define unput(c) yyunput( c, yytext_ptr )
+
+/* Some routines like yy_flex_realloc() are emitted as static but are
+   not called by all lexers. This generates warnings in some compilers,
+   notably GCC. Arrange to suppress these. */
+#ifdef __GNUC__
+#define YY_MAY_BE_UNUSED __attribute__((unused))
+#else
+#define YY_MAY_BE_UNUSED
+#endif
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+typedef unsigned int yy_size_t;
+
+
+struct yy_buffer_state
+       {
+       FILE *yy_input_file;
+
+       char *yy_ch_buf;                /* input buffer */
+       char *yy_buf_pos;               /* current position in input buffer */
+
+       /* Size of input buffer in bytes, not including room for EOB
+        * characters.
+        */
+       yy_size_t yy_buf_size;
+
+       /* Number of characters read into yy_ch_buf, not including EOB
+        * characters.
+        */
+       int yy_n_chars;
+
+       /* Whether we "own" the buffer - i.e., we know we created it,
+        * and can realloc() it to grow it, and should free() it to
+        * delete it.
+        */
+       int yy_is_our_buffer;
+
+       /* Whether this is an "interactive" input source; if so, and
+        * if we're using stdio for input, then we want to use getc()
+        * instead of fread(), to make sure we stop fetching input after
+        * each newline.
+        */
+       int yy_is_interactive;
+
+       /* Whether we're considered to be at the beginning of a line.
+        * If so, '^' rules will be active on the next match, otherwise
+        * not.
+        */
+       int yy_at_bol;
+
+       /* Whether to try to fill the input buffer when we reach the
+        * end of it.
+        */
+       int yy_fill_buffer;
+
+       int yy_buffer_status;
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+       /* When an EOF's been seen but there's still some text to process
+        * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+        * shouldn't try reading from the input source any more.  We might
+        * still have a bunch of tokens to match, though, because of
+        * possible backing-up.
+        *
+        * When we actually see the EOF, we change the status to "new"
+        * (via yyrestart()), so that the user can continue scanning by
+        * just pointing yyin at a new input file.
+        */
+#define YY_BUFFER_EOF_PENDING 2
+       };
+
+static YY_BUFFER_STATE yy_current_buffer = 0;
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ */
+#define YY_CURRENT_BUFFER yy_current_buffer
+
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+
+static int yy_n_chars;         /* number of characters read into yy_ch_buf */
+
+
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 1;                /* whether we need to initialize */
+static int yy_start = 0;       /* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart YY_PROTO(( FILE *input_file ));
+
+void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
+void yy_load_buffer_state YY_PROTO(( void ));
+YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
+void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
+void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
+
+YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
+YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
+
+static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
+static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED;
+static void yy_flex_free YY_PROTO(( void * ));
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+       { \
+       if ( ! yy_current_buffer ) \
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+       yy_current_buffer->yy_is_interactive = is_interactive; \
+       }
+
+#define yy_set_bol(at_bol) \
+       { \
+       if ( ! yy_current_buffer ) \
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+       yy_current_buffer->yy_at_bol = at_bol; \
+       }
+
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+
+
+#define YY_USES_REJECT
+
+#define yywrap() 1
+#define YY_SKIP_YYWRAP
+typedef unsigned char YY_CHAR;
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+typedef int yy_state_type;
+extern int yylineno;
+int yylineno = 1;
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state YY_PROTO(( void ));
+static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
+static int yy_get_next_buffer YY_PROTO(( void ));
+static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+       yytext_ptr = yy_bp; \
+       yyleng = (int) (yy_cp - yy_bp); \
+       yy_hold_char = *yy_cp; \
+       *yy_cp = '\0'; \
+       yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 116
+#define YY_END_OF_BUFFER 117
+static yyconst short int yy_acclist[194] =
+    {   0,
+      117,  115,  116,  114,  115,  116,  114,  116,  115,  116,
+      115,  116,  115,  116,  115,  116,  115,  116,  115,  116,
+      107,  115,  116,  107,  115,  116,    1,  115,  116,  115,
+      116,  115,  116,  115,  116,  115,  116,  115,  116,  115,
+      116,  115,  116,  115,  116,  115,  116,  115,  116,  115,
+      116,  115,  116,  115,  116,  115,  116,  115,  116,  115,
+      116,  115,  116,  115,  116,  115,  116,  115,  116,  115,
+      116,  106,  104,  103,  103,  110,  108,  112,  107,    1,
+       89,   38,   72,   22,  106,  103,  103,  111,  112,   19,
+      112,  113,   60,   71,   36,   31,   39,   63,    3,   51,
+
+       62,   80,   67,   88,   84,   61,   73,  105,  112,  112,
+       86,   46,   81,   82,   66,   96,   70,   97,   53,   85,
+       21,  109,   65,   69,   23,    4,   58,   64,   52,   68,
+       45,   11,  112,   33,    2,    5,   55,   57,   47,   75,
+       79,   77,   78,   76,   74,   49,   98,   48,   54,   20,
+       95,   42,   56,   27,   41,    7,   91,   30,   94,   35,
+       59,   83,   90,   24,   25,   92,   50,   87,   40,    6,
+       26,   34,    8,   16,    9,   10,   32,   12,   14,   13,
+       29,   37,   15,   28,   93,   99,  101,  102,   43,  100,
+       17,   44,   18
+
+    } ;
+
+static yyconst short int yy_accept[507] =
+    {   0,
+        1,    1,    1,    2,    4,    7,    9,   11,   13,   15,
+       17,   19,   21,   24,   27,   30,   32,   34,   36,   38,
+       40,   42,   44,   46,   48,   50,   52,   54,   56,   58,
+       60,   62,   64,   66,   68,   70,   72,   72,   73,   73,
+       74,   75,   76,   77,   77,   78,   78,   79,   80,   80,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   82,
+       82,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+
+       84,   84,   84,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   86,
+       87,   89,   90,   91,   92,   92,   93,   94,   94,   94,
+       95,   95,   95,   96,   96,   97,   97,   97,   97,   98,
+       98,   98,   98,   98,   98,   98,   99,   99,   99,  100,
+      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
+      101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
+      102,  102,  102,  103,  103,  104,  105,  105,  105,  105,
+      105,  105,  105,  106,  106,  106,  106,  106,  106,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      108,  108,  109,  110,  110,  110,  110,  111,  111,  111,
+      111,  112,  112,  113,  114,  115,  115,  115,  115,  115,
+      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
+      116,  116,  117,  118,  118,  118,  118,  118,  118,  118,
+      118,  118,  118,  119,  120,  121,  121,  121,  122,  122,
+      122,  123,  123,  124,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  125,  125,  125,  126,  126,  126,  127,
+      128,  128,  129,  130,  130,  130,  130,  130,  131,  131,
+      131,  132,  132,  133,  133,  133,  134,  135,  135,  135,
+
+      136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+      136,  136,  136,  137,  137,  138,  138,  138,  138,  138,
+      138,  138,  139,  139,  139,  139,  139,  139,  139,  140,
+      140,  140,  141,  142,  143,  144,  145,  146,  147,  147,
+      147,  148,  148,  148,  148,  149,  150,  151,  151,  151,
+      151,  151,  151,  151,  151,  151,  152,  152,  153,  153,
+      153,  153,  153,  153,  153,  153,  154,  155,  155,  155,
+      156,  156,  157,  157,  157,  157,  158,  158,  159,  160,
+      161,  162,  162,  162,  163,  163,  163,  164,  165,  166,
+      166,  167,  168,  169,  169,  169,  169,  169,  169,  169,
+
+      170,  170,  171,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  174,  174,  174,  174,  174,  175,
+      175,  175,  175,  175,  176,  177,  177,  177,  177,  177,
+      178,  178,  178,  178,  179,  179,  180,  181,  181,  181,
+      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
+      182,  182,  182,  182,  182,  182,  182,  182,  183,  183,
+      183,  183,  183,  184,  184,  184,  184,  184,  185,  185,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  187,  187,  188,  189,  189,  190,  190,
+
+      191,  192,  193,  193,  194,  194
+    } ;
+
+static yyconst int yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    2,    1,    4,    1,    5,    6,    1,    1,    1,
+        1,    1,    7,    1,    8,    9,    1,   10,   11,   11,
+       11,   11,   11,   12,   11,   13,   11,   14,   15,    1,
+        1,    1,    1,    1,   16,   16,   16,   16,   17,   16,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        1,    1,    1,    1,   18,    1,   19,   20,   21,   22,
+
+       23,   24,   25,   26,   27,    5,   28,   29,   30,   31,
+       32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
+       42,   43,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst int yy_meta[44] =
+    {   0,
+        1,    1,    2,    1,    3,    1,    1,    3,    3,    3,
+        3,    3,    3,    4,    1,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3
+    } ;
+
+static yyconst short int yy_base[511] =
+    {   0,
+        0,    0, 1100, 1101, 1101, 1101, 1095, 1084,   36,   40,
+       44,   50,   56,   62,    0,   63,   66,   81,   89,   47,
+      100,   97,   76,   96,  111,   46,   48,  110,   68,  140,
+      126,  171,  119,  123,   73,  125, 1093, 1101, 1082, 1101,
+        0,  159,  176,  199,  204,   95,  209,  224,  229,    0,
+      130,  165,  133,  120,  169,  151,  159,   31, 1081,  168,
+      143,  230,  189,  191,  233,  117,  145,  187,  241,  242,
+      244,  243,  246,  248,  250,  251,  253,  254,  176,  258,
+      263,  255,  270,  274,  271,  278,  283, 1080,  284,  287,
+      289,  290,  291,  294,  295,  296,  298,  292,  303,  309,
+
+      313,  316, 1079,  322,  304,  299,  325,  324,  330,  328,
+      331,  332,  213,  342,  334,  262,  343,  345, 1078,    0,
+      354,  362, 1077,  376,  393,    0, 1076,  356,  362, 1075,
+      368,  363, 1074,  369, 1073,  381,  383,  347, 1072,  394,
+      378,  388,  399,  395,  401, 1071,  405,  403,  406,  408,
+      411,  407,  308,  415,  412,  413,  425,  423,  426,  427,
+      424,  432,  113,  434,  437,  439,  440,  443,  444, 1070,
+      447,  446, 1069,  448, 1068, 1067,  473,  451,  452,  463,
+      455,  484, 1066,  467,  449,  485,  473,  487, 1065,  490,
+      491,  492,  496,  498,  500,  497,  502,  505,  504,  510,
+
+      514,  511,  516,  512,  517,  518,  529,  525,  456, 1064,
+      531, 1101,  539,  547,  554,  558,  563,  547,  565,  566,
+     1063,  567, 1062, 1061, 1060,  568,  569,  570,  571,  573,
+      574,  576,  579,  581,  577,  580,  585,  588,  591, 1059,
+      589, 1058, 1057,  594,  599,  602,  600,  605,  606,  607,
+      610,  608, 1056, 1055, 1054,  613,  614, 1053,  615,  617,
+        0,  616, 1052,  619,  627,  618,  624,  635,  636,  630,
+      641,  637, 1051,  643,  642, 1050,  648,  650, 1049, 1048,
+      654, 1047, 1046,  655,  659,  656,  660, 1045,  662,  664,
+     1044,  667, 1043,  670,  668,  675, 1042,  679,  678, 1041,
+
+      675,  688,  687,  691,  676,  689,  698,  699,  700,  702,
+      703,  701, 1040,  704, 1039,  705,  706,  707,  710,  712,
+      713, 1038,  715,  716,  724,  726,  727,  728, 1037,  730,
+      734, 1036, 1035, 1034, 1033, 1032, 1031, 1030,  738,  739,
+     1029,  740,  741,  742, 1028, 1027, 1026,  743,  746,  744,
+      745,  747,  758,  755,  759, 1025,  761, 1024,  762,  765,
+      766,  768,  769,  770,  771, 1023, 1022,  780,  773, 1021,
+      781, 1020,  783,  786,  782, 1019,  793, 1018, 1017, 1016,
+     1015,  790,  798, 1014,  799,  802, 1013, 1012, 1011,  801,
+     1010, 1009, 1008,  803,  804,  806,  807,  805,  809, 1007,
+
+      810, 1006, 1005,  816,  817,  819,  821,  824,  825,  823,
+      827,  829,  830,  831, 1004,  835,  841,  843,  846,  847,
+      849,  851,  852, 1003,  854,  857,  858,  859, 1002,  861,
+      862,  864,  866, 1001,  998,  869,  877,  865,  867,  988,
+      883,  884,  885,  987,  871,  986,  984,  888,  891,  892,
+      896,  895,  897,  899,  902,  903,  904,  905,  907,  983,
+      908,  913,  914,  916,  910,  921,  917,  982,  923,  927,
+      928,  931,  981,  935,  924,  936,  934,  977,  937,  976,
+      938,  941,  945,  950,  952,  954,  956,  957,  959,  961,
+      960,  962,  975,  963,  970,  775,  964,  533,  965,  454,
+
+      453,  261,  969,  216, 1101, 1004, 1006,  226, 1010,   76
+    } ;
+
+static yyconst short int yy_def[511] =
+    {   0,
+      505,    1,  505,  505,  505,  505,  506,  507,  508,  505,
+      507,  507,  507,  507,  509,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  506,  505,  507,  505,
+      510,  510,  505,  505,  507,  507,  507,  507,  507,  509,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  505,  510,
+      510,  505,  507,  507,  507,   49,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,   49,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  505,  505,  505,  505,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      177,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  505,  507,  507,  507,  507,
+
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+
+      507,  507,  507,  507,    0,  505,  505,  505,  505,  505
+    } ;
+
+static yyconst short int yy_nxt[1145] =
+    {   0,
+        4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
+       14,   14,   14,    4,   15,    8,    8,    8,   16,   17,
+       18,   19,   20,   21,   22,    8,   23,    8,   24,   25,
+       26,   27,   28,    8,   29,   30,   31,   32,   33,   34,
+       35,    8,   36,   42,   40,   43,   43,   43,   43,   44,
+       44,   44,   44,   45,   45,   45,   45,   40,   46,   40,
+       40,   40,  136,   40,   47,   48,   48,   48,   48,   40,
+       47,   48,   48,   48,   48,   40,   40,   69,  120,   40,
+       87,   40,   88,   86,   51,  116,   40,   70,   56,   40,
+       91,   52,   57,   53,   40,   54,   49,   58,   55,   60,
+
+       59,   61,   40,  123,  117,   77,   78,   64,   40,   40,
+       40,   65,   62,   40,   79,   66,   63,   67,   71,   75,
+       68,   72,   80,   40,   40,   76,   40,   81,   73,   83,
+       40,   82,   40,   40,   74,   89,   40,  113,   40,   40,
+      251,   90,   84,   40,  102,  115,   40,  118,   85,   92,
+      114,  127,  131,   40,  130,  146,   40,  103,   40,   93,
+      104,   94,   95,  139,   40,   96,   97,  105,  121,  121,
+      121,  121,   40,  147,   98,  134,   99,  100,   40,  101,
+       92,   40,   40,  135,   40,   43,   43,   43,   43,   40,
+      106,  128,  107,  129,  132,  162,  137,  108,  133,  109,
+
+       40,  110,   40,  138,   40,  111,  112,  122,   44,   44,
+       44,   44,   47,   45,   45,   45,   45,   40,  124,  124,
+      124,  124,   40,  142,  148,  125,   40,  143,   41,   40,
+      205,  125,   47,   48,   48,   48,   48,   40,  126,  126,
+      126,  126,   40,   40,  126,  126,   40,  126,  126,  126,
+      126,  126,  126,  144,   40,   40,   40,   40,  140,   40,
+      141,   40,  149,   40,   40,  145,   40,   40,   40,  153,
+      155,   40,  151,  209,   40,   40,   40,  154,  150,  152,
+      167,  165,  157,   40,   40,  158,  156,   40,  163,  159,
+      160,   40,  161,  166,  164,  169,   40,   40,  168,  170,
+
+       40,  172,   40,   40,   40,   40,  171,   40,   40,   40,
+      173,   40,   40,  174,  187,  180,   40,   40,  175,  186,
+      179,   40,   40,  181,  183,  176,   40,  184,  189,   40,
+      177,  182,  178,  185,  188,   40,  195,   40,   40,  190,
+      196,   40,  191,   40,   40,   40,  240,   40,  193,  200,
+      192,  197,  208,  203,  198,   40,   40,  204,   40,  194,
+       40,  199,  201,  121,  121,  121,  121,  202,  206,   40,
+      207,  213,  213,  213,  213,   40,   40,  210,  214,  211,
+      218,   40,   40,  225,  214,  124,  124,  124,  124,   40,
+      220,   40,  125,  219,   40,  222,   40,  221,  125,  215,
+
+      216,   40,  217,  217,  217,  217,   40,   40,   40,  223,
+      228,  224,   40,  227,   40,  226,   40,  229,   40,   40,
+       40,   40,  234,  230,   40,   40,   40,  232,   40,  231,
+      236,  233,  235,  241,  242,  244,   40,   40,   40,   40,
+       40,  243,  237,  239,  245,   40,  238,   40,  247,  248,
+       40,  246,   40,   40,  250,  249,   40,   40,  253,   40,
+       40,   40,   40,  254,   40,   40,   40,   40,   40,   40,
+      252,  256,  271,  294,  255,  258,   40,  265,  260,  259,
+       40,  257,  261,  261,  261,  261,   40,  262,  261,  261,
+      263,  261,  261,  261,  261,  261,  261,   40,   40,  264,
+
+       40,  270,  273,   40,   40,   40,  266,  272,  267,   40,
+       40,   40,  268,   40,  269,   40,  277,   40,   40,  276,
+      279,  274,  280,   40,   40,   40,  275,   40,  278,   40,
+       40,   40,  285,  281,  284,  290,  286,  287,   40,  291,
+      282,  283,   40,  289,   40,  288,   40,  292,  213,  213,
+      213,  213,  293,  215,  215,  214,  296,  296,  296,  296,
+       40,  214,  295,  296,  296,  296,  296,  217,  217,  217,
+      217,   40,  217,  217,  217,  217,   40,  297,   40,   40,
+       40,   40,   40,   40,   40,  298,   40,   40,  301,   40,
+       40,  305,   40,   40,   40,  310,  299,  300,   40,  304,
+
+      306,   40,   40,  312,   40,  302,  303,   40,  308,  309,
+      313,  314,   40,   40,  311,   40,  307,  317,   40,   40,
+       40,   40,  316,   40,  318,  315,   40,   40,   40,   40,
+       40,   40,   40,  321,  319,  322,  324,   40,  329,  320,
+       40,  323,  326,   40,  325,  330,  333,  331,   40,   40,
+       40,  332,  327,  328,   40,   40,   40,  335,  337,  340,
+      334,   40,  342,   40,  339,  341,  338,   40,   40,   40,
+      343,  336,   40,   40,  348,   40,  345,   40,  344,  346,
+       40,   40,  347,   40,  296,  296,  296,  296,   40,   40,
+      349,   40,   40,  353,  355,  358,  350,  356,  351,  357,
+
+       40,   40,   40,  352,   40,  354,  359,  360,  363,  361,
+      362,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,  369,  366,   40,  370,   40,   40,  371,   40,   40,
+      364,  365,  367,  368,  372,  376,  373,   40,  378,   40,
+       40,   40,  375,   40,  379,  377,  374,   40,  380,  381,
+      382,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,  383,  386,  390,  389,  387,  385,  391,   40,  393,
+      384,   40,   40,  394,   40,   40,  395,  388,   40,   40,
+      392,   40,   40,   40,   40,  400,   40,  398,   40,  397,
+      402,  396,  399,   40,   40,   40,   40,  406,  407,   40,
+
+      412,  404,  405,   40,  403,  410,   40,  401,  411,  408,
+      409,   40,   40,  413,   40,   40,   40,   40,   40,   40,
+       40,  416,   40,   40,  414,  417,  418,  421,  415,   40,
+       40,  419,   40,  422,   40,  423,   40,   40,   40,  420,
+       40,  425,   40,   40,   40,  424,  430,  431,   40,  429,
+      426,  427,  435,  432,   40,  433,   40,  434,  428,   40,
+       40,  439,   40,  438,   40,   40,  436,   40,  440,  442,
+       40,   40,   40,  437,   40,   40,  444,   40,   40,   40,
+       40,  448,   40,  441,   40,  455,  456,  443,  452,  449,
+       40,  445,  450,  446,  447,  453,   40,   40,   40,  454,
+
+      451,   40,  458,  457,   40,   40,  461,  460,   40,   40,
+       40,  459,   40,  462,  464,   40,   40,   40,   40,  467,
+       40,   40,  470,   40,  465,  472,   40,   40,  463,   40,
+       40,  469,  477,  471,   40,  473,   40,   40,  468,  466,
+       40,   40,  474,  478,   40,  480,  475,   40,   40,   40,
+       40,   40,  476,  479,   40,  481,  482,  484,   40,  483,
+      485,  490,  486,   40,  487,   40,  489,   40,  488,   40,
+       40,  491,   40,   40,   40,   40,   40,   40,   40,  497,
+      492,  498,   40,   40,  502,  494,  493,  503,   40,   40,
+       40,  496,  495,  501,   40,   40,   40,   40,  500,   40,
+
+       40,   40,  499,  504,   37,   37,   37,   37,   39,   39,
+       50,   40,   50,   50,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,  212,   40,   40,   40,   40,  119,   40,   38,  505,
+
+        3,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505
+    } ;
+
+static yyconst short int yy_chk[1145] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    9,   58,    9,    9,    9,    9,   10,
+       10,   10,   10,   11,   11,   11,   11,   11,   12,   26,
+       20,   27,   58,   12,   13,   13,   13,   13,   13,   13,
+       14,   14,   14,   14,   14,   14,   16,   20,  510,   17,
+       27,   29,   27,   26,   16,   35,   35,   20,   17,   23,
+       29,   16,   17,   16,   18,   16,   13,   17,   16,   18,
+
+       17,   18,   19,   46,   35,   23,   23,   19,   46,   24,
+       22,   19,   18,   21,   24,   19,   18,   19,   21,   22,
+       19,   21,   24,   28,   25,   22,  163,   24,   21,   25,
+       66,   24,   33,   54,   21,   28,   34,   33,   36,   31,
+      163,   28,   25,   51,   31,   34,   53,   36,   25,   30,
+       33,   51,   54,   30,   53,   66,   61,   31,   67,   30,
+       31,   30,   30,   61,   56,   30,   30,   31,   42,   42,
+       42,   42,   57,   67,   30,   56,   30,   30,   52,   30,
+       32,   60,   55,   57,   32,   43,   43,   43,   43,   79,
+       32,   52,   32,   52,   55,   79,   60,   32,   55,   32,
+
+       68,   32,   63,   60,   64,   32,   32,   44,   44,   44,
+       44,   44,   45,   45,   45,   45,   45,   45,   47,   47,
+       47,   47,   47,   63,   68,   47,  113,   64,  508,  504,
+      113,   47,   48,   48,   48,   48,   48,   48,   49,   49,
+       49,   49,   49,   62,   49,   49,   65,   49,   49,   49,
+       49,   49,   49,   65,   69,   70,   72,   71,   62,   73,
+       62,   74,   69,   75,   76,   65,   77,   78,   82,   72,
+       74,   80,   71,  116,  502,  116,   81,   73,   70,   71,
+       82,   81,   76,   83,   85,   77,   75,   84,   80,   78,
+       78,   86,   78,   81,   80,   84,   87,   89,   83,   85,
+
+       90,   87,   91,   92,   93,   98,   86,   94,   95,   96,
+       89,   97,  106,   90,   98,   95,   99,  105,   91,   97,
+       94,  153,  100,   95,   96,   91,  101,   96,  100,  102,
+       92,   95,   93,   96,   99,  104,  105,  108,  107,  101,
+      106,  110,  102,  109,  111,  112,  153,  115,  104,  110,
+      102,  107,  115,  111,  108,  114,  117,  112,  118,  104,
+      138,  109,  110,  121,  121,  121,  121,  110,  114,  128,
+      114,  122,  122,  122,  122,  129,  132,  117,  122,  118,
+      128,  131,  134,  138,  122,  124,  124,  124,  124,  124,
+      131,  141,  124,  129,  136,  134,  137,  132,  124,  125,
+
+      125,  142,  125,  125,  125,  125,  125,  140,  144,  136,
+      142,  137,  143,  141,  145,  140,  148,  143,  147,  149,
+      152,  150,  148,  144,  151,  155,  156,  147,  154,  145,
+      150,  147,  149,  154,  155,  156,  158,  161,  157,  159,
+      160,  155,  150,  152,  157,  162,  151,  164,  159,  160,
+      165,  158,  166,  167,  162,  161,  168,  169,  165,  172,
+      171,  174,  185,  166,  178,  179,  501,  500,  181,  209,
+      164,  168,  185,  209,  167,  171,  180,  181,  174,  172,
+      184,  169,  177,  177,  177,  177,  187,  178,  177,  177,
+      179,  177,  177,  177,  177,  177,  177,  182,  186,  180,
+
+      188,  184,  187,  190,  191,  192,  182,  186,  182,  193,
+      196,  194,  182,  195,  182,  197,  192,  199,  198,  191,
+      194,  188,  195,  200,  202,  204,  190,  201,  193,  203,
+      205,  206,  200,  196,  199,  205,  201,  202,  208,  206,
+      197,  198,  207,  204,  211,  203,  498,  207,  213,  213,
+      213,  213,  208,  214,  214,  213,  214,  214,  214,  214,
+      218,  213,  211,  215,  215,  215,  215,  216,  216,  216,
+      216,  216,  217,  217,  217,  217,  217,  218,  219,  220,
+      222,  226,  227,  228,  229,  219,  230,  231,  226,  232,
+      235,  230,  233,  236,  234,  235,  220,  222,  237,  229,
+
+      231,  238,  241,  237,  239,  227,  228,  244,  233,  234,
+      238,  239,  245,  247,  236,  246,  232,  245,  248,  249,
+      250,  252,  244,  251,  246,  241,  256,  257,  259,  262,
+      260,  266,  264,  249,  247,  250,  252,  267,  262,  248,
+      265,  251,  257,  270,  256,  264,  267,  265,  268,  269,
+      272,  266,  259,  260,  271,  275,  274,  268,  269,  272,
+      267,  277,  275,  278,  271,  274,  270,  281,  284,  286,
+      277,  268,  285,  287,  286,  289,  281,  290,  278,  284,
+      292,  295,  285,  294,  296,  296,  296,  296,  301,  305,
+      287,  299,  298,  294,  295,  301,  289,  298,  290,  299,
+
+      303,  302,  306,  292,  304,  294,  302,  303,  306,  304,
+      305,  307,  308,  309,  312,  310,  311,  314,  316,  317,
+      318,  312,  309,  319,  314,  320,  321,  316,  323,  324,
+      307,  308,  310,  311,  317,  321,  318,  325,  324,  326,
+      327,  328,  320,  330,  325,  323,  319,  331,  326,  327,
+      328,  339,  340,  342,  343,  344,  348,  350,  351,  349,
+      352,  330,  340,  348,  344,  342,  339,  349,  354,  351,
+      331,  353,  355,  352,  357,  359,  353,  343,  360,  361,
+      350,  362,  363,  364,  365,  360,  369,  357,  496,  355,
+      362,  354,  359,  368,  371,  375,  373,  368,  368,  374,
+
+      375,  364,  365,  382,  363,  373,  377,  361,  374,  369,
+      371,  383,  385,  377,  390,  386,  394,  395,  398,  396,
+      397,  385,  399,  401,  382,  386,  390,  396,  383,  404,
+      405,  394,  406,  397,  407,  398,  410,  408,  409,  395,
+      411,  401,  412,  413,  414,  399,  408,  409,  416,  407,
+      404,  405,  413,  410,  417,  411,  418,  412,  406,  419,
+      420,  418,  421,  417,  422,  423,  414,  425,  419,  421,
+      426,  427,  428,  416,  430,  431,  423,  432,  438,  433,
+      439,  428,  436,  420,  445,  438,  439,  422,  433,  430,
+      437,  425,  431,  426,  427,  436,  441,  442,  443,  437,
+
+      432,  448,  442,  441,  449,  450,  448,  445,  452,  451,
+      453,  443,  454,  449,  451,  455,  456,  457,  458,  454,
+      459,  461,  457,  465,  452,  459,  462,  463,  450,  464,
+      467,  456,  465,  458,  466,  461,  469,  475,  455,  453,
+      470,  471,  462,  466,  472,  469,  463,  477,  474,  476,
+      479,  481,  464,  467,  482,  470,  471,  474,  483,  472,
+      475,  482,  476,  484,  477,  485,  481,  486,  479,  487,
+      488,  483,  489,  491,  490,  492,  494,  497,  499,  489,
+      484,  490,  503,  495,  497,  486,  485,  499,  493,  480,
+      478,  488,  487,  494,  473,  468,  460,  447,  492,  446,
+
+      444,  440,  491,  503,  506,  506,  506,  506,  507,  507,
+      509,  435,  509,  509,  434,  429,  424,  415,  403,  402,
+      400,  393,  392,  391,  389,  388,  387,  384,  381,  380,
+      379,  378,  376,  372,  370,  367,  366,  358,  356,  347,
+      346,  345,  341,  338,  337,  336,  335,  334,  333,  332,
+      329,  322,  315,  313,  300,  297,  293,  291,  288,  283,
+      282,  280,  279,  276,  273,  263,  258,  255,  254,  253,
+      243,  242,  240,  225,  224,  223,  221,  210,  189,  183,
+      176,  175,  173,  170,  146,  139,  135,  133,  130,  127,
+      123,  119,  103,   88,   59,   39,   37,    8,    7,    3,
+
+      505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505
+    } ;
+
+static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
+static char *yy_full_match;
+static int yy_lp;
+#define REJECT \
+{ \
+*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
+yy_cp = yy_full_match; /* restore poss. backed-over text */ \
+++yy_lp; \
+goto find_rule; \
+}
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+#define INITIAL 0
+/*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by the LLVM research group and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+//  This file implements the flex scanner for LLVM assembly languages files.
+//
+//===----------------------------------------------------------------------===*/
+#define YY_NEVER_INTERACTIVE 1
+#line 28 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+
+#include "ParserInternals.h"
+#define YYSTYPE std::string*
+#include "UpgradeParser.h"
+#include <cctype>
+#include <cstdlib>
+
+void set_scan_bytes (const char * str, size_t len) {
+  Upgrade_scan_bytes (str, len);
+}
+
+static void trim(std::string& str) {
+  size_t startpos = str.find_first_not_of(" \t\n\r",0);
+  if (startpos != std::string::npos)
+    str.erase(0,startpos);
+}
+
+// Construct a token value for a non-obsolete token
+#define RET_TOK(sym) \
+  Upgradelval = new std::string(yytext); \
+  trim(*Upgradelval); \
+  return sym
+
+#define YY_NEVER_INTERACTIVE 1
+/* Comments start with a ; and go till end of line */
+/* Variable(Value) identifiers start with a % sign */
+/* Label identifiers end with a colon */
+/* Quoted names can contain any character except " and \ */
+/* [PN]Integer: match positive and negative literal integer values that
+ * are preceeded by a '%' character.  These represent unnamed variable slots.
+ */
+/* E[PN]Integer: match positive and negative literal integer values */
+/* FPConstant - A Floating point constant.
+ */
+/* HexFPConstant - Floating point constant represented in IEEE format as a
+ *  hexadecimal number for when exponential notation is not precise enough.
+ */
+/* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing
+ * it to deal with 64 bit numbers.
+ */
+#line 900 "UpgradeLexer.cpp"
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap YY_PROTO(( void ));
+#else
+extern int yywrap YY_PROTO(( void ));
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+static inline void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int yy_start_stack_ptr = 0;
+static int yy_start_stack_depth = 0;
+static int *yy_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void yy_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state YY_PROTO(( void ));
+#endif
+
+#else
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
+#endif
+
+#ifdef YY_MALLOC_DECL
+YY_MALLOC_DECL
+#else
+#if __STDC__
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#else
+/* Just try to get by without declaring the routines.  This will fail
+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
+ * or sizeof(void*) != sizeof(int).
+ */
+#endif
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+       if ( yy_current_buffer->yy_is_interactive ) \
+               { \
+               int c = '*', n; \
+               for ( n = 0; n < max_size && \
+                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+                       buf[n] = (char) c; \
+               if ( c == '\n' ) \
+                       buf[n++] = (char) c; \
+               if ( c == EOF && ferror( yyin ) ) \
+                       YY_FATAL_ERROR( "input in flex scanner failed" ); \
+               result = n; \
+               } \
+       else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
+                 && ferror( yyin ) ) \
+               YY_FATAL_ERROR( "input in flex scanner failed" );
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL int yylex YY_PROTO(( void ))
+#endif
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+       YY_USER_ACTION
+
+YY_DECL
+       {
+       register yy_state_type yy_current_state;
+       register char *yy_cp = NULL, *yy_bp = NULL;
+       register int yy_act;
+
+#line 94 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+
+
+#line 1054 "UpgradeLexer.cpp"
+
+       if ( yy_init )
+               {
+               yy_init = 0;
+
+#ifdef YY_USER_INIT
+               YY_USER_INIT;
+#endif
+
+               if ( ! yy_start )
+                       yy_start = 1;   /* first start state */
+
+               if ( ! yyin )
+                       yyin = stdin;
+
+               if ( ! yyout )
+                       yyout = stdout;
+
+               if ( ! yy_current_buffer )
+                       yy_current_buffer =
+                               yy_create_buffer( yyin, YY_BUF_SIZE );
+
+               yy_load_buffer_state();
+               }
+
+       while ( 1 )             /* loops until end-of-file is reached */
+               {
+               yy_cp = yy_c_buf_p;
+
+               /* Support of yytext. */
+               *yy_cp = yy_hold_char;
+
+               /* yy_bp points to the position in yy_ch_buf of the start of
+                * the current run.
+                */
+               yy_bp = yy_cp;
+
+               yy_current_state = yy_start;
+               yy_state_ptr = yy_state_buf;
+               *yy_state_ptr++ = yy_current_state;
+yy_match:
+               do
+                       {
+                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+                       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+                               {
+                               yy_current_state = (int) yy_def[yy_current_state];
+                               if ( yy_current_state >= 506 )
+                                       yy_c = yy_meta[(unsigned int) yy_c];
+                               }
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+                       *yy_state_ptr++ = yy_current_state;
+                       ++yy_cp;
+                       }
+               while ( yy_current_state != 505 );
+
+yy_find_action:
+               yy_current_state = *--yy_state_ptr;
+               yy_lp = yy_accept[yy_current_state];
+find_rule: /* we branch to this label when backing up */
+               for ( ; ; ) /* until we find what rule we matched */
+                       {
+                       if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
+                               {
+                               yy_act = yy_acclist[yy_lp];
+                                       {
+                                       yy_full_match = yy_cp;
+                                       break;
+                                       }
+                               }
+                       --yy_cp;
+                       yy_current_state = *--yy_state_ptr;
+                       yy_lp = yy_accept[yy_current_state];
+                       }
+
+               YY_DO_BEFORE_ACTION;
+
+               if ( yy_act != YY_END_OF_BUFFER )
+                       {
+                       int yyl;
+                       for ( yyl = 0; yyl < yyleng; ++yyl )
+                               if ( yytext[yyl] == '\n' )
+                                       ++yylineno;
+                       }
+
+do_action:     /* This label is used only to access EOF actions. */
+
+
+               switch ( yy_act )
+       { /* beginning of action switch */
+case 1:
+YY_RULE_SETUP
+#line 96 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ /* Ignore comments for now */ }
+       YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 98 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( BEGINTOK); }
+       YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 99 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ENDTOK); }
+       YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 100 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( TRUETOK);  }
+       YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 101 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FALSETOK); }
+       YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 102 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( DECLARE); }
+       YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 103 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( GLOBAL); }
+       YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 104 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( CONSTANT); }
+       YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 105 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( INTERNAL); }
+       YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 106 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LINKONCE); }
+       YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 107 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( WEAK); }
+       YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 108 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( APPENDING); }
+       YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 109 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( DLLIMPORT); }
+       YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 110 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( DLLEXPORT); }
+       YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 111 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( EXTERN_WEAK); }
+       YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 112 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( EXTERNAL); }
+       YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 113 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( IMPLEMENTATION); }
+       YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 114 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ZEROINITIALIZER); }
+       YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 115 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( DOTDOTDOT); }
+       YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 116 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UNDEF); }
+       YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 117 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( NULL_TOK); }
+       YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 118 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( TO); }
+       YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 119 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( TAIL); }
+       YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 120 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( TARGET); }
+       YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 121 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( TRIPLE); }
+       YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 122 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( DEPLIBS); }
+       YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 123 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ENDIAN); }
+       YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 124 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( POINTERSIZE); }
+       YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 125 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( DATALAYOUT); }
+       YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 126 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LITTLE); }
+       YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 127 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( BIG); }
+       YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 128 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( VOLATILE); }
+       YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 129 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ALIGN);  }
+       YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 130 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SECTION); }
+       YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 131 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( MODULE); }
+       YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 132 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ASM_TOK); }
+       YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 133 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SIDEEFFECT); }
+       YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 135 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( CC_TOK); }
+       YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 136 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( CCC_TOK); }
+       YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 137 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( CSRETCC_TOK); }
+       YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 138 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FASTCC_TOK); }
+       YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 139 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( COLDCC_TOK); }
+       YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 140 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( X86_STDCALLCC_TOK); }
+       YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 141 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( X86_FASTCALLCC_TOK); }
+       YY_BREAK
+case 45:
+YY_RULE_SETUP
+#line 143 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( VOID); }
+       YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 144 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( BOOL); }
+       YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 145 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SBYTE); }
+       YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 146 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UBYTE); }
+       YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 147 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SHORT); }
+       YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 148 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( USHORT); }
+       YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 149 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( INT);   }
+       YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 150 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UINT);  }
+       YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 151 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LONG);  }
+       YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 152 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ULONG); }
+       YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 153 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FLOAT); }
+       YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 154 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( DOUBLE); }
+       YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 155 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LABEL); }
+       YY_BREAK
+case 58:
+YY_RULE_SETUP
+#line 156 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( TYPE);   }
+       YY_BREAK
+case 59:
+YY_RULE_SETUP
+#line 157 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( OPAQUE); }
+       YY_BREAK
+case 60:
+YY_RULE_SETUP
+#line 159 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ADD); }
+       YY_BREAK
+case 61:
+YY_RULE_SETUP
+#line 160 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SUB); }
+       YY_BREAK
+case 62:
+YY_RULE_SETUP
+#line 161 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( MUL); }
+       YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 162 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UDIV); }
+       YY_BREAK
+case 64:
+YY_RULE_SETUP
+#line 163 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UDIV); }
+       YY_BREAK
+case 65:
+YY_RULE_SETUP
+#line 164 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SDIV); }
+       YY_BREAK
+case 66:
+YY_RULE_SETUP
+#line 165 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FDIV); }
+       YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 166 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UREM); }
+       YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 167 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UREM); }
+       YY_BREAK
+case 69:
+YY_RULE_SETUP
+#line 168 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SREM); }
+       YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 169 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FREM); }
+       YY_BREAK
+case 71:
+YY_RULE_SETUP
+#line 170 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( AND); }
+       YY_BREAK
+case 72:
+YY_RULE_SETUP
+#line 171 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( OR); }
+       YY_BREAK
+case 73:
+YY_RULE_SETUP
+#line 172 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( XOR); }
+       YY_BREAK
+case 74:
+YY_RULE_SETUP
+#line 173 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SETNE); }
+       YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 174 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SETEQ); }
+       YY_BREAK
+case 76:
+YY_RULE_SETUP
+#line 175 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SETLT); }
+       YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 176 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SETGT); }
+       YY_BREAK
+case 78:
+YY_RULE_SETUP
+#line 177 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SETLE); }
+       YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 178 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SETGE); }
+       YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 180 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( PHI_TOK); }
+       YY_BREAK
+case 81:
+YY_RULE_SETUP
+#line 181 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( CALL); }
+       YY_BREAK
+case 82:
+YY_RULE_SETUP
+#line 182 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( TRUNC); }
+       YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 183 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SELECT); }
+       YY_BREAK
+case 84:
+YY_RULE_SETUP
+#line 184 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SHL); }
+       YY_BREAK
+case 85:
+YY_RULE_SETUP
+#line 185 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LSHR); }
+       YY_BREAK
+case 86:
+YY_RULE_SETUP
+#line 186 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ASHR); }
+       YY_BREAK
+case 87:
+YY_RULE_SETUP
+#line 187 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( VAARG); }
+       YY_BREAK
+case 88:
+YY_RULE_SETUP
+#line 188 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( RET); }
+       YY_BREAK
+case 89:
+YY_RULE_SETUP
+#line 189 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( BR); }
+       YY_BREAK
+case 90:
+YY_RULE_SETUP
+#line 190 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SWITCH); }
+       YY_BREAK
+case 91:
+YY_RULE_SETUP
+#line 191 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( INVOKE); }
+       YY_BREAK
+case 92:
+YY_RULE_SETUP
+#line 192 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UNWIND); }
+       YY_BREAK
+case 93:
+YY_RULE_SETUP
+#line 193 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UNREACHABLE); }
+       YY_BREAK
+case 94:
+YY_RULE_SETUP
+#line 195 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( MALLOC); }
+       YY_BREAK
+case 95:
+YY_RULE_SETUP
+#line 196 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ALLOCA); }
+       YY_BREAK
+case 96:
+YY_RULE_SETUP
+#line 197 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FREE); }
+       YY_BREAK
+case 97:
+YY_RULE_SETUP
+#line 198 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LOAD); }
+       YY_BREAK
+case 98:
+YY_RULE_SETUP
+#line 199 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( STORE); }
+       YY_BREAK
+case 99:
+YY_RULE_SETUP
+#line 200 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( GETELEMENTPTR); }
+       YY_BREAK
+case 100:
+YY_RULE_SETUP
+#line 202 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( EXTRACTELEMENT); }
+       YY_BREAK
+case 101:
+YY_RULE_SETUP
+#line 203 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( INSERTELEMENT); }
+       YY_BREAK
+case 102:
+YY_RULE_SETUP
+#line 204 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SHUFFLEVECTOR); }
+       YY_BREAK
+case 103:
+YY_RULE_SETUP
+#line 207 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( VAR_ID); }
+       YY_BREAK
+case 104:
+YY_RULE_SETUP
+#line 208 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LABELSTR); }
+       YY_BREAK
+case 105:
+YY_RULE_SETUP
+#line 209 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LABELSTR); }
+       YY_BREAK
+case 106:
+YY_RULE_SETUP
+#line 210 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( STRINGCONSTANT ); }
+       YY_BREAK
+case 107:
+YY_RULE_SETUP
+#line 211 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( EUINT64VAL ); }
+       YY_BREAK
+case 108:
+YY_RULE_SETUP
+#line 212 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ESINT64VAL ); }
+       YY_BREAK
+case 109:
+YY_RULE_SETUP
+#line 213 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( yytext[0] == 's' ? ESINT64VAL : EUINT64VAL ); }
+       YY_BREAK
+case 110:
+YY_RULE_SETUP
+#line 214 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UINTVAL); }
+       YY_BREAK
+case 111:
+YY_RULE_SETUP
+#line 215 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SINTVAL); }
+       YY_BREAK
+case 112:
+YY_RULE_SETUP
+#line 216 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FPVAL); }
+       YY_BREAK
+case 113:
+YY_RULE_SETUP
+#line 217 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FPVAL); }
+       YY_BREAK
+case YY_STATE_EOF(INITIAL):
+#line 218 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{
+                  /* Make sure to free the internal buffers for flex when we are
+                   * done reading our input!
+                   */
+                  yy_delete_buffer(YY_CURRENT_BUFFER);
+                  return EOF;
+                }
+       YY_BREAK
+case 114:
+YY_RULE_SETUP
+#line 226 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ /* Ignore whitespace */ }
+       YY_BREAK
+case 115:
+YY_RULE_SETUP
+#line 227 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ return yytext[0]; }
+       YY_BREAK
+case 116:
+YY_RULE_SETUP
+#line 229 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+YY_FATAL_ERROR( "flex scanner jammed" );
+       YY_BREAK
+#line 1735 "UpgradeLexer.cpp"
+
+       case YY_END_OF_BUFFER:
+               {
+               /* Amount of text matched not including the EOB char. */
+               int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
+
+               /* Undo the effects of YY_DO_BEFORE_ACTION. */
+               *yy_cp = yy_hold_char;
+               YY_RESTORE_YY_MORE_OFFSET
+
+               if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
+                       {
+                       /* We're scanning a new file or input source.  It's
+                        * possible that this happened because the user
+                        * just pointed yyin at a new source and called
+                        * yylex().  If so, then we have to assure
+                        * consistency between yy_current_buffer and our
+                        * globals.  Here is the right place to do so, because
+                        * this is the first action (other than possibly a
+                        * back-up) that will match for the new input source.
+                        */
+                       yy_n_chars = yy_current_buffer->yy_n_chars;
+                       yy_current_buffer->yy_input_file = yyin;
+                       yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+                       }
+
+               /* Note that here we test for yy_c_buf_p "<=" to the position
+                * of the first EOB in the buffer, since yy_c_buf_p will
+                * already have been incremented past the NUL character
+                * (since all states make transitions on EOB to the
+                * end-of-buffer state).  Contrast this with the test
+                * in input().
+                */
+               if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+                       { /* This was really a NUL. */
+                       yy_state_type yy_next_state;
+
+                       yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
+
+                       yy_current_state = yy_get_previous_state();
+
+                       /* Okay, we're now positioned to make the NUL
+                        * transition.  We couldn't have
+                        * yy_get_previous_state() go ahead and do it
+                        * for us because it doesn't know how to deal
+                        * with the possibility of jamming (and we don't
+                        * want to build jamming into it because then it
+                        * will run more slowly).
+                        */
+
+                       yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+                       yy_bp = yytext_ptr + YY_MORE_ADJ;
+
+                       if ( yy_next_state )
+                               {
+                               /* Consume the NUL. */
+                               yy_cp = ++yy_c_buf_p;
+                               yy_current_state = yy_next_state;
+                               goto yy_match;
+                               }
+
+                       else
+                               {
+                               yy_cp = yy_c_buf_p;
+                               goto yy_find_action;
+                               }
+                       }
+
+               else switch ( yy_get_next_buffer() )
+                       {
+                       case EOB_ACT_END_OF_FILE:
+                               {
+                               yy_did_buffer_switch_on_eof = 0;
+
+                               if ( yywrap() )
+                                       {
+                                       /* Note: because we've taken care in
+                                        * yy_get_next_buffer() to have set up
+                                        * yytext, we can now set up
+                                        * yy_c_buf_p so that if some total
+                                        * hoser (like flex itself) wants to
+                                        * call the scanner after we return the
+                                        * YY_NULL, it'll still work - another
+                                        * YY_NULL will get returned.
+                                        */
+                                       yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+
+                                       yy_act = YY_STATE_EOF(YY_START);
+                                       goto do_action;
+                                       }
+
+                               else
+                                       {
+                                       if ( ! yy_did_buffer_switch_on_eof )
+                                               YY_NEW_FILE;
+                                       }
+                               break;
+                               }
+
+                       case EOB_ACT_CONTINUE_SCAN:
+                               yy_c_buf_p =
+                                       yytext_ptr + yy_amount_of_matched_text;
+
+                               yy_current_state = yy_get_previous_state();
+
+                               yy_cp = yy_c_buf_p;
+                               yy_bp = yytext_ptr + YY_MORE_ADJ;
+                               goto yy_match;
+
+                       case EOB_ACT_LAST_MATCH:
+                               yy_c_buf_p =
+                               &yy_current_buffer->yy_ch_buf[yy_n_chars];
+
+                               yy_current_state = yy_get_previous_state();
+
+                               yy_cp = yy_c_buf_p;
+                               yy_bp = yytext_ptr + YY_MORE_ADJ;
+                               goto yy_find_action;
+                       }
+               break;
+               }
+
+       default:
+               YY_FATAL_ERROR(
+                       "fatal flex scanner internal error--no action found" );
+       } /* end of action switch */
+               } /* end of scanning one token */
+       } /* end of yylex */
+
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *     EOB_ACT_LAST_MATCH -
+ *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *     EOB_ACT_END_OF_FILE - end of file
+ */
+
+static int yy_get_next_buffer()
+       {
+       register char *dest = yy_current_buffer->yy_ch_buf;
+       register char *source = yytext_ptr;
+       register int number_to_move, i;
+       int ret_val;
+
+       if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+               YY_FATAL_ERROR(
+               "fatal flex scanner internal error--end of buffer missed" );
+
+       if ( yy_current_buffer->yy_fill_buffer == 0 )
+               { /* Don't try to fill the buffer, so this is an EOF. */
+               if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
+                       {
+                       /* We matched a single character, the EOB, so
+                        * treat this as a final EOF.
+                        */
+                       return EOB_ACT_END_OF_FILE;
+                       }
+
+               else
+                       {
+                       /* We matched some text prior to the EOB, first
+                        * process it.
+                        */
+                       return EOB_ACT_LAST_MATCH;
+                       }
+               }
+
+       /* Try to read more data. */
+
+       /* First move last chars to start of buffer. */
+       number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
+
+       for ( i = 0; i < number_to_move; ++i )
+               *(dest++) = *(source++);
+
+       if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+               /* don't do the read, it's not guaranteed to return an EOF,
+                * just force an EOF
+                */
+               yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+
+       else
+               {
+               int num_to_read =
+                       yy_current_buffer->yy_buf_size - number_to_move - 1;
+
+               while ( num_to_read <= 0 )
+                       { /* Not enough room in the buffer - grow it. */
+#ifdef YY_USES_REJECT
+                       YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+#else
+
+                       /* just a shorter name for the current buffer */
+                       YY_BUFFER_STATE b = yy_current_buffer;
+
+                       int yy_c_buf_p_offset =
+                               (int) (yy_c_buf_p - b->yy_ch_buf);
+
+                       if ( b->yy_is_our_buffer )
+                               {
+                               int new_size = b->yy_buf_size * 2;
+
+                               if ( new_size <= 0 )
+                                       b->yy_buf_size += b->yy_buf_size / 8;
+                               else
+                                       b->yy_buf_size *= 2;
+
+                               b->yy_ch_buf = (char *)
+                                       /* Include room in for 2 EOB chars. */
+                                       yy_flex_realloc( (void *) b->yy_ch_buf,
+                                                        b->yy_buf_size + 2 );
+                               }
+                       else
+                               /* Can't grow it, we don't own it. */
+                               b->yy_ch_buf = 0;
+
+                       if ( ! b->yy_ch_buf )
+                               YY_FATAL_ERROR(
+                               "fatal error - scanner input buffer overflow" );
+
+                       yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+                       num_to_read = yy_current_buffer->yy_buf_size -
+                                               number_to_move - 1;
+#endif
+                       }
+
+               if ( num_to_read > YY_READ_BUF_SIZE )
+                       num_to_read = YY_READ_BUF_SIZE;
+
+               /* Read in more data. */
+               YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+                       yy_n_chars, num_to_read );
+
+               yy_current_buffer->yy_n_chars = yy_n_chars;
+               }
+
+       if ( yy_n_chars == 0 )
+               {
+               if ( number_to_move == YY_MORE_ADJ )
+                       {
+                       ret_val = EOB_ACT_END_OF_FILE;
+                       yyrestart( yyin );
+                       }
+
+               else
+                       {
+                       ret_val = EOB_ACT_LAST_MATCH;
+                       yy_current_buffer->yy_buffer_status =
+                               YY_BUFFER_EOF_PENDING;
+                       }
+               }
+
+       else
+               ret_val = EOB_ACT_CONTINUE_SCAN;
+
+       yy_n_chars += number_to_move;
+       yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+       yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+       yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+
+       return ret_val;
+       }
+
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+static yy_state_type yy_get_previous_state()
+       {
+       register yy_state_type yy_current_state;
+       register char *yy_cp;
+
+       yy_current_state = yy_start;
+       yy_state_ptr = yy_state_buf;
+       *yy_state_ptr++ = yy_current_state;
+
+       for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
+               {
+               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+               while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+                       {
+                       yy_current_state = (int) yy_def[yy_current_state];
+                       if ( yy_current_state >= 506 )
+                               yy_c = yy_meta[(unsigned int) yy_c];
+                       }
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+               *yy_state_ptr++ = yy_current_state;
+               }
+
+       return yy_current_state;
+       }
+
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *     next_state = yy_try_NUL_trans( current_state );
+ */
+
+#ifdef YY_USE_PROTOS
+static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
+#else
+static yy_state_type yy_try_NUL_trans( yy_current_state )
+yy_state_type yy_current_state;
+#endif
+       {
+       register int yy_is_jam;
+
+       register YY_CHAR yy_c = 1;
+       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+               {
+               yy_current_state = (int) yy_def[yy_current_state];
+               if ( yy_current_state >= 506 )
+                       yy_c = yy_meta[(unsigned int) yy_c];
+               }
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+       yy_is_jam = (yy_current_state == 505);
+       if ( ! yy_is_jam )
+               *yy_state_ptr++ = yy_current_state;
+
+       return yy_is_jam ? 0 : yy_current_state;
+       }
+
+
+#ifndef YY_NO_UNPUT
+#ifdef YY_USE_PROTOS
+static inline void yyunput( int c, register char *yy_bp )
+#else
+static inline void yyunput( c, yy_bp )
+int c;
+register char *yy_bp;
+#endif
+       {
+       register char *yy_cp = yy_c_buf_p;
+
+       /* undo effects of setting up yytext */
+       *yy_cp = yy_hold_char;
+
+       if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+               { /* need to shift things up to make room */
+               /* +2 for EOB chars. */
+               register int number_to_move = yy_n_chars + 2;
+               register char *dest = &yy_current_buffer->yy_ch_buf[
+                                       yy_current_buffer->yy_buf_size + 2];
+               register char *source =
+                               &yy_current_buffer->yy_ch_buf[number_to_move];
+
+               while ( source > yy_current_buffer->yy_ch_buf )
+                       *--dest = *--source;
+
+               yy_cp += (int) (dest - source);
+               yy_bp += (int) (dest - source);
+               yy_current_buffer->yy_n_chars =
+                       yy_n_chars = yy_current_buffer->yy_buf_size;
+
+               if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+                       YY_FATAL_ERROR( "flex scanner push-back overflow" );
+               }
+
+       *--yy_cp = (char) c;
+
+       if ( c == '\n' )
+               --yylineno;
+
+       yytext_ptr = yy_bp;
+       yy_hold_char = *yy_cp;
+       yy_c_buf_p = yy_cp;
+       }
+#endif /* ifndef YY_NO_UNPUT */
+
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput()
+#else
+static int input()
+#endif
+       {
+       int c;
+
+       *yy_c_buf_p = yy_hold_char;
+
+       if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+               {
+               /* yy_c_buf_p now points to the character we want to return.
+                * If this occurs *before* the EOB characters, then it's a
+                * valid NUL; if not, then we've hit the end of the buffer.
+                */
+               if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+                       /* This was really a NUL. */
+                       *yy_c_buf_p = '\0';
+
+               else
+                       { /* need more input */
+                       int offset = yy_c_buf_p - yytext_ptr;
+                       ++yy_c_buf_p;
+
+                       switch ( yy_get_next_buffer() )
+                               {
+                               case EOB_ACT_LAST_MATCH:
+                                       /* This happens because yy_g_n_b()
+                                        * sees that we've accumulated a
+                                        * token and flags that we need to
+                                        * try matching the token before
+                                        * proceeding.  But for input(),
+                                        * there's no matching to consider.
+                                        * So convert the EOB_ACT_LAST_MATCH
+                                        * to EOB_ACT_END_OF_FILE.
+                                        */
+
+                                       /* Reset buffer status. */
+                                       yyrestart( yyin );
+
+                                       /* fall through */
+
+                               case EOB_ACT_END_OF_FILE:
+                                       {
+                                       if ( yywrap() )
+                                               return EOF;
+
+                                       if ( ! yy_did_buffer_switch_on_eof )
+                                               YY_NEW_FILE;
+#ifdef __cplusplus
+                                       return yyinput();
+#else
+                                       return input();
+#endif
+                                       }
+
+                               case EOB_ACT_CONTINUE_SCAN:
+                                       yy_c_buf_p = yytext_ptr + offset;
+                                       break;
+                               }
+                       }
+               }
+
+       c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
+       *yy_c_buf_p = '\0';     /* preserve yytext */
+       yy_hold_char = *++yy_c_buf_p;
+
+       if ( c == '\n' )
+               ++yylineno;
+
+       return c;
+       }
+#endif /* YY_NO_INPUT */
+
+#ifdef YY_USE_PROTOS
+void yyrestart( FILE *input_file )
+#else
+void yyrestart( input_file )
+FILE *input_file;
+#endif
+       {
+       if ( ! yy_current_buffer )
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+
+       yy_init_buffer( yy_current_buffer, input_file );
+       yy_load_buffer_state();
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+#else
+void yy_switch_to_buffer( new_buffer )
+YY_BUFFER_STATE new_buffer;
+#endif
+       {
+       if ( yy_current_buffer == new_buffer )
+               return;
+
+       if ( yy_current_buffer )
+               {
+               /* Flush out information for old buffer. */
+               *yy_c_buf_p = yy_hold_char;
+               yy_current_buffer->yy_buf_pos = yy_c_buf_p;
+               yy_current_buffer->yy_n_chars = yy_n_chars;
+               }
+
+       yy_current_buffer = new_buffer;
+       yy_load_buffer_state();
+
+       /* We don't actually know whether we did this switch during
+        * EOF (yywrap()) processing, but the only time this flag
+        * is looked at is after yywrap() is called, so it's safe
+        * to go ahead and always set it.
+        */
+       yy_did_buffer_switch_on_eof = 1;
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_load_buffer_state( void )
+#else
+void yy_load_buffer_state()
+#endif
+       {
+       yy_n_chars = yy_current_buffer->yy_n_chars;
+       yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
+       yyin = yy_current_buffer->yy_input_file;
+       yy_hold_char = *yy_c_buf_p;
+       }
+
+
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
+#else
+YY_BUFFER_STATE yy_create_buffer( file, size )
+FILE *file;
+int size;
+#endif
+       {
+       YY_BUFFER_STATE b;
+
+       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+       if ( ! b )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+       b->yy_buf_size = size;
+
+       /* yy_ch_buf has to be 2 characters longer than the size given because
+        * we need to put in 2 end-of-buffer characters.
+        */
+       b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+       if ( ! b->yy_ch_buf )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+       b->yy_is_our_buffer = 1;
+
+       yy_init_buffer( b, file );
+
+       return b;
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_delete_buffer( YY_BUFFER_STATE b )
+#else
+void yy_delete_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+       {
+       if ( ! b )
+               return;
+
+       if ( b == yy_current_buffer )
+               yy_current_buffer = (YY_BUFFER_STATE) 0;
+
+       if ( b->yy_is_our_buffer )
+               yy_flex_free( (void *) b->yy_ch_buf );
+
+       yy_flex_free( (void *) b );
+       }
+
+
+
+#ifdef YY_USE_PROTOS
+void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
+#else
+void yy_init_buffer( b, file )
+YY_BUFFER_STATE b;
+FILE *file;
+#endif
+
+
+       {
+       yy_flush_buffer( b );
+
+       b->yy_input_file = file;
+       b->yy_fill_buffer = 1;
+
+#if YY_ALWAYS_INTERACTIVE
+       b->yy_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+       b->yy_is_interactive = 0;
+#else
+       b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_flush_buffer( YY_BUFFER_STATE b )
+#else
+void yy_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+       {
+       if ( ! b )
+               return;
+
+       b->yy_n_chars = 0;
+
+       /* We always need two end-of-buffer characters.  The first causes
+        * a transition to the end-of-buffer state.  The second causes
+        * a jam in that state.
+        */
+       b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+       b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+       b->yy_buf_pos = &b->yy_ch_buf[0];
+
+       b->yy_at_bol = 1;
+       b->yy_buffer_status = YY_BUFFER_NEW;
+
+       if ( b == yy_current_buffer )
+               yy_load_buffer_state();
+       }
+
+
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
+#else
+YY_BUFFER_STATE yy_scan_buffer( base, size )
+char *base;
+yy_size_t size;
+#endif
+       {
+       YY_BUFFER_STATE b;
+
+       if ( size < 2 ||
+            base[size-2] != YY_END_OF_BUFFER_CHAR ||
+            base[size-1] != YY_END_OF_BUFFER_CHAR )
+               /* They forgot to leave room for the EOB's. */
+               return 0;
+
+       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+       if ( ! b )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
+       b->yy_buf_pos = b->yy_ch_buf = base;
+       b->yy_is_our_buffer = 0;
+       b->yy_input_file = 0;
+       b->yy_n_chars = b->yy_buf_size;
+       b->yy_is_interactive = 0;
+       b->yy_at_bol = 1;
+       b->yy_fill_buffer = 0;
+       b->yy_buffer_status = YY_BUFFER_NEW;
+
+       yy_switch_to_buffer( b );
+
+       return b;
+       }
+#endif
+
+
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
+#else
+YY_BUFFER_STATE yy_scan_string( yy_str )
+yyconst char *yy_str;
+#endif
+       {
+       int len;
+       for ( len = 0; yy_str[len]; ++len )
+               ;
+
+       return yy_scan_bytes( yy_str, len );
+       }
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
+#else
+YY_BUFFER_STATE yy_scan_bytes( bytes, len )
+yyconst char *bytes;
+int len;
+#endif
+       {
+       YY_BUFFER_STATE b;
+       char *buf;
+       yy_size_t n;
+       int i;
+
+       /* Get memory for full buffer, including space for trailing EOB's. */
+       n = len + 2;
+       buf = (char *) yy_flex_alloc( n );
+       if ( ! buf )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+       for ( i = 0; i < len; ++i )
+               buf[i] = bytes[i];
+
+       buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+       b = yy_scan_buffer( buf, n );
+       if ( ! b )
+               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+       /* It's okay to grow etc. this buffer, and we should throw it
+        * away when we're done.
+        */
+       b->yy_is_our_buffer = 1;
+
+       return b;
+       }
+#endif
+
+
+#ifndef YY_NO_PUSH_STATE
+#ifdef YY_USE_PROTOS
+static void yy_push_state( int new_state )
+#else
+static void yy_push_state( new_state )
+int new_state;
+#endif
+       {
+       if ( yy_start_stack_ptr >= yy_start_stack_depth )
+               {
+               yy_size_t new_size;
+
+               yy_start_stack_depth += YY_START_STACK_INCR;
+               new_size = yy_start_stack_depth * sizeof( int );
+
+               if ( ! yy_start_stack )
+                       yy_start_stack = (int *) yy_flex_alloc( new_size );
+
+               else
+                       yy_start_stack = (int *) yy_flex_realloc(
+                                       (void *) yy_start_stack, new_size );
+
+               if ( ! yy_start_stack )
+                       YY_FATAL_ERROR(
+                       "out of memory expanding start-condition stack" );
+               }
+
+       yy_start_stack[yy_start_stack_ptr++] = YY_START;
+
+       BEGIN(new_state);
+       }
+#endif
+
+
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state()
+       {
+       if ( --yy_start_stack_ptr < 0 )
+               YY_FATAL_ERROR( "start-condition stack underflow" );
+
+       BEGIN(yy_start_stack[yy_start_stack_ptr]);
+       }
+#endif
+
+
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state()
+       {
+       return yy_start_stack[yy_start_stack_ptr - 1];
+       }
+#endif
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+#ifdef YY_USE_PROTOS
+static void yy_fatal_error( yyconst char msg[] )
+#else
+static void yy_fatal_error( msg )
+char msg[];
+#endif
+       {
+       (void) fprintf( stderr, "%s\n", msg );
+       exit( YY_EXIT_FAILURE );
+       }
+
+
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+       do \
+               { \
+               /* Undo effects of setting up yytext. */ \
+               yytext[yyleng] = yy_hold_char; \
+               yy_c_buf_p = yytext + n; \
+               yy_hold_char = *yy_c_buf_p; \
+               *yy_c_buf_p = '\0'; \
+               yyleng = n; \
+               } \
+       while ( 0 )
+
+
+/* Internal utility routines. */
+
+#ifndef yytext_ptr
+#ifdef YY_USE_PROTOS
+static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
+#else
+static void yy_flex_strncpy( s1, s2, n )
+char *s1;
+yyconst char *s2;
+int n;
+#endif
+       {
+       register int i;
+       for ( i = 0; i < n; ++i )
+               s1[i] = s2[i];
+       }
+#endif
+
+#ifdef YY_NEED_STRLEN
+#ifdef YY_USE_PROTOS
+static int yy_flex_strlen( yyconst char *s )
+#else
+static int yy_flex_strlen( s )
+yyconst char *s;
+#endif
+       {
+       register int n;
+       for ( n = 0; s[n]; ++n )
+               ;
+
+       return n;
+       }
+#endif
+
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_alloc( yy_size_t size )
+#else
+static void *yy_flex_alloc( size )
+yy_size_t size;
+#endif
+       {
+       return (void *) malloc( size );
+       }
+
+#ifdef YY_USE_PROTOS
+static inline void *yy_flex_realloc( void *ptr, yy_size_t size )
+#else
+static inline void *yy_flex_realloc( ptr, size )
+void *ptr;
+yy_size_t size;
+#endif
+       {
+       /* The cast to (char *) in the following accommodates both
+        * implementations that use char* generic pointers, and those
+        * that use void* generic pointers.  It works with the latter
+        * because both ANSI C and C++ allow castless assignment from
+        * any pointer type to void*, and deal with argument conversions
+        * as though doing an assignment.
+        */
+       return (void *) realloc( (char *) ptr, size );
+       }
+
+#ifdef YY_USE_PROTOS
+static void yy_flex_free( void *ptr )
+#else
+static void yy_flex_free( ptr )
+void *ptr;
+#endif
+       {
+       free( ptr );
+       }
+
+#if YY_MAIN
+int main()
+       {
+       yylex();
+       return 0;
+       }
+#endif
+#line 229 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+
diff --git a/tools/llvm-upgrade/UpgradeLexer.cpp.cvs b/tools/llvm-upgrade/UpgradeLexer.cpp.cvs
new file mode 100644 (file)
index 0000000..a3a7c66
--- /dev/null
@@ -0,0 +1,2613 @@
+#define yy_create_buffer Upgrade_create_buffer
+#define yy_delete_buffer Upgrade_delete_buffer
+#define yy_scan_buffer Upgrade_scan_buffer
+#define yy_scan_string Upgrade_scan_string
+#define yy_scan_bytes Upgrade_scan_bytes
+#define yy_flex_debug Upgrade_flex_debug
+#define yy_init_buffer Upgrade_init_buffer
+#define yy_flush_buffer Upgrade_flush_buffer
+#define yy_load_buffer_state Upgrade_load_buffer_state
+#define yy_switch_to_buffer Upgrade_switch_to_buffer
+#define yyin Upgradein
+#define yyleng Upgradeleng
+#define yylex Upgradelex
+#define yyout Upgradeout
+#define yyrestart Upgraderestart
+#define yytext Upgradetext
+#define yylineno Upgradelineno
+
+#line 20 "UpgradeLexer.cpp"
+/* A lexical scanner generated by flex*/
+
+/* Scanner skeleton version:
+ * $Header$
+ */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+
+#include <stdio.h>
+#include <unistd.h>
+
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+
+/* Use prototypes in function declarations. */
+#define YY_USE_PROTOS
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else  /* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_PROTOS
+#define YY_USE_CONST
+
+#endif /* __STDC__ */
+#endif /* ! __cplusplus */
+
+#ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
+#define YY_USE_CONST
+#define YY_USE_PROTOS
+#endif
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#define YY_BUF_SIZE (16384*64)
+
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+
+extern int yyleng;
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+/* The funky do-while in the following #define is used to turn the definition
+ * int a single C statement (which needs a semi-colon terminator).  This
+ * avoids problems with code like:
+ *
+ *     if ( condition_holds )
+ *             yyless( 5 );
+ *     else
+ *             do_something_else();
+ *
+ * Prior to using the do-while the compiler would get upset at the
+ * "else" because it interpreted the "if" statement as being all
+ * done when it reached the ';' after the yyless() call.
+ */
+
+/* Return all but the first 'n' matched characters back to the input stream. */
+
+#define yyless(n) \
+       do \
+               { \
+               /* Undo effects of setting up yytext. */ \
+               *yy_cp = yy_hold_char; \
+               YY_RESTORE_YY_MORE_OFFSET \
+               yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+               } \
+       while ( 0 )
+
+#define unput(c) yyunput( c, yytext_ptr )
+
+/* Some routines like yy_flex_realloc() are emitted as static but are
+   not called by all lexers. This generates warnings in some compilers,
+   notably GCC. Arrange to suppress these. */
+#ifdef __GNUC__
+#define YY_MAY_BE_UNUSED __attribute__((unused))
+#else
+#define YY_MAY_BE_UNUSED
+#endif
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+typedef unsigned int yy_size_t;
+
+
+struct yy_buffer_state
+       {
+       FILE *yy_input_file;
+
+       char *yy_ch_buf;                /* input buffer */
+       char *yy_buf_pos;               /* current position in input buffer */
+
+       /* Size of input buffer in bytes, not including room for EOB
+        * characters.
+        */
+       yy_size_t yy_buf_size;
+
+       /* Number of characters read into yy_ch_buf, not including EOB
+        * characters.
+        */
+       int yy_n_chars;
+
+       /* Whether we "own" the buffer - i.e., we know we created it,
+        * and can realloc() it to grow it, and should free() it to
+        * delete it.
+        */
+       int yy_is_our_buffer;
+
+       /* Whether this is an "interactive" input source; if so, and
+        * if we're using stdio for input, then we want to use getc()
+        * instead of fread(), to make sure we stop fetching input after
+        * each newline.
+        */
+       int yy_is_interactive;
+
+       /* Whether we're considered to be at the beginning of a line.
+        * If so, '^' rules will be active on the next match, otherwise
+        * not.
+        */
+       int yy_at_bol;
+
+       /* Whether to try to fill the input buffer when we reach the
+        * end of it.
+        */
+       int yy_fill_buffer;
+
+       int yy_buffer_status;
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+       /* When an EOF's been seen but there's still some text to process
+        * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+        * shouldn't try reading from the input source any more.  We might
+        * still have a bunch of tokens to match, though, because of
+        * possible backing-up.
+        *
+        * When we actually see the EOF, we change the status to "new"
+        * (via yyrestart()), so that the user can continue scanning by
+        * just pointing yyin at a new input file.
+        */
+#define YY_BUFFER_EOF_PENDING 2
+       };
+
+static YY_BUFFER_STATE yy_current_buffer = 0;
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ */
+#define YY_CURRENT_BUFFER yy_current_buffer
+
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+
+static int yy_n_chars;         /* number of characters read into yy_ch_buf */
+
+
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 1;                /* whether we need to initialize */
+static int yy_start = 0;       /* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart YY_PROTO(( FILE *input_file ));
+
+void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
+void yy_load_buffer_state YY_PROTO(( void ));
+YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
+void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
+void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
+
+YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
+YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
+
+static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
+static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED;
+static void yy_flex_free YY_PROTO(( void * ));
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+       { \
+       if ( ! yy_current_buffer ) \
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+       yy_current_buffer->yy_is_interactive = is_interactive; \
+       }
+
+#define yy_set_bol(at_bol) \
+       { \
+       if ( ! yy_current_buffer ) \
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+       yy_current_buffer->yy_at_bol = at_bol; \
+       }
+
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+
+
+#define YY_USES_REJECT
+
+#define yywrap() 1
+#define YY_SKIP_YYWRAP
+typedef unsigned char YY_CHAR;
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+typedef int yy_state_type;
+extern int yylineno;
+int yylineno = 1;
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state YY_PROTO(( void ));
+static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
+static int yy_get_next_buffer YY_PROTO(( void ));
+static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+       yytext_ptr = yy_bp; \
+       yyleng = (int) (yy_cp - yy_bp); \
+       yy_hold_char = *yy_cp; \
+       *yy_cp = '\0'; \
+       yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 116
+#define YY_END_OF_BUFFER 117
+static yyconst short int yy_acclist[194] =
+    {   0,
+      117,  115,  116,  114,  115,  116,  114,  116,  115,  116,
+      115,  116,  115,  116,  115,  116,  115,  116,  115,  116,
+      107,  115,  116,  107,  115,  116,    1,  115,  116,  115,
+      116,  115,  116,  115,  116,  115,  116,  115,  116,  115,
+      116,  115,  116,  115,  116,  115,  116,  115,  116,  115,
+      116,  115,  116,  115,  116,  115,  116,  115,  116,  115,
+      116,  115,  116,  115,  116,  115,  116,  115,  116,  115,
+      116,  106,  104,  103,  103,  110,  108,  112,  107,    1,
+       89,   38,   72,   22,  106,  103,  103,  111,  112,   19,
+      112,  113,   60,   71,   36,   31,   39,   63,    3,   51,
+
+       62,   80,   67,   88,   84,   61,   73,  105,  112,  112,
+       86,   46,   81,   82,   66,   96,   70,   97,   53,   85,
+       21,  109,   65,   69,   23,    4,   58,   64,   52,   68,
+       45,   11,  112,   33,    2,    5,   55,   57,   47,   75,
+       79,   77,   78,   76,   74,   49,   98,   48,   54,   20,
+       95,   42,   56,   27,   41,    7,   91,   30,   94,   35,
+       59,   83,   90,   24,   25,   92,   50,   87,   40,    6,
+       26,   34,    8,   16,    9,   10,   32,   12,   14,   13,
+       29,   37,   15,   28,   93,   99,  101,  102,   43,  100,
+       17,   44,   18
+
+    } ;
+
+static yyconst short int yy_accept[507] =
+    {   0,
+        1,    1,    1,    2,    4,    7,    9,   11,   13,   15,
+       17,   19,   21,   24,   27,   30,   32,   34,   36,   38,
+       40,   42,   44,   46,   48,   50,   52,   54,   56,   58,
+       60,   62,   64,   66,   68,   70,   72,   72,   73,   73,
+       74,   75,   76,   77,   77,   78,   78,   79,   80,   80,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   82,
+       82,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+
+       84,   84,   84,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   86,
+       87,   89,   90,   91,   92,   92,   93,   94,   94,   94,
+       95,   95,   95,   96,   96,   97,   97,   97,   97,   98,
+       98,   98,   98,   98,   98,   98,   99,   99,   99,  100,
+      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
+      101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
+      102,  102,  102,  103,  103,  104,  105,  105,  105,  105,
+      105,  105,  105,  106,  106,  106,  106,  106,  106,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      108,  108,  109,  110,  110,  110,  110,  111,  111,  111,
+      111,  112,  112,  113,  114,  115,  115,  115,  115,  115,
+      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
+      116,  116,  117,  118,  118,  118,  118,  118,  118,  118,
+      118,  118,  118,  119,  120,  121,  121,  121,  122,  122,
+      122,  123,  123,  124,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  125,  125,  125,  126,  126,  126,  127,
+      128,  128,  129,  130,  130,  130,  130,  130,  131,  131,
+      131,  132,  132,  133,  133,  133,  134,  135,  135,  135,
+
+      136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+      136,  136,  136,  137,  137,  138,  138,  138,  138,  138,
+      138,  138,  139,  139,  139,  139,  139,  139,  139,  140,
+      140,  140,  141,  142,  143,  144,  145,  146,  147,  147,
+      147,  148,  148,  148,  148,  149,  150,  151,  151,  151,
+      151,  151,  151,  151,  151,  151,  152,  152,  153,  153,
+      153,  153,  153,  153,  153,  153,  154,  155,  155,  155,
+      156,  156,  157,  157,  157,  157,  158,  158,  159,  160,
+      161,  162,  162,  162,  163,  163,  163,  164,  165,  166,
+      166,  167,  168,  169,  169,  169,  169,  169,  169,  169,
+
+      170,  170,  171,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  174,  174,  174,  174,  174,  175,
+      175,  175,  175,  175,  176,  177,  177,  177,  177,  177,
+      178,  178,  178,  178,  179,  179,  180,  181,  181,  181,
+      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
+      182,  182,  182,  182,  182,  182,  182,  182,  183,  183,
+      183,  183,  183,  184,  184,  184,  184,  184,  185,  185,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  187,  187,  188,  189,  189,  190,  190,
+
+      191,  192,  193,  193,  194,  194
+    } ;
+
+static yyconst int yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    2,    1,    4,    1,    5,    6,    1,    1,    1,
+        1,    1,    7,    1,    8,    9,    1,   10,   11,   11,
+       11,   11,   11,   12,   11,   13,   11,   14,   15,    1,
+        1,    1,    1,    1,   16,   16,   16,   16,   17,   16,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        1,    1,    1,    1,   18,    1,   19,   20,   21,   22,
+
+       23,   24,   25,   26,   27,    5,   28,   29,   30,   31,
+       32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
+       42,   43,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst int yy_meta[44] =
+    {   0,
+        1,    1,    2,    1,    3,    1,    1,    3,    3,    3,
+        3,    3,    3,    4,    1,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3
+    } ;
+
+static yyconst short int yy_base[511] =
+    {   0,
+        0,    0, 1100, 1101, 1101, 1101, 1095, 1084,   36,   40,
+       44,   50,   56,   62,    0,   63,   66,   81,   89,   47,
+      100,   97,   76,   96,  111,   46,   48,  110,   68,  140,
+      126,  171,  119,  123,   73,  125, 1093, 1101, 1082, 1101,
+        0,  159,  176,  199,  204,   95,  209,  224,  229,    0,
+      130,  165,  133,  120,  169,  151,  159,   31, 1081,  168,
+      143,  230,  189,  191,  233,  117,  145,  187,  241,  242,
+      244,  243,  246,  248,  250,  251,  253,  254,  176,  258,
+      263,  255,  270,  274,  271,  278,  283, 1080,  284,  287,
+      289,  290,  291,  294,  295,  296,  298,  292,  303,  309,
+
+      313,  316, 1079,  322,  304,  299,  325,  324,  330,  328,
+      331,  332,  213,  342,  334,  262,  343,  345, 1078,    0,
+      354,  362, 1077,  376,  393,    0, 1076,  356,  362, 1075,
+      368,  363, 1074,  369, 1073,  381,  383,  347, 1072,  394,
+      378,  388,  399,  395,  401, 1071,  405,  403,  406,  408,
+      411,  407,  308,  415,  412,  413,  425,  423,  426,  427,
+      424,  432,  113,  434,  437,  439,  440,  443,  444, 1070,
+      447,  446, 1069,  448, 1068, 1067,  473,  451,  452,  463,
+      455,  484, 1066,  467,  449,  485,  473,  487, 1065,  490,
+      491,  492,  496,  498,  500,  497,  502,  505,  504,  510,
+
+      514,  511,  516,  512,  517,  518,  529,  525,  456, 1064,
+      531, 1101,  539,  547,  554,  558,  563,  547,  565,  566,
+     1063,  567, 1062, 1061, 1060,  568,  569,  570,  571,  573,
+      574,  576,  579,  581,  577,  580,  585,  588,  591, 1059,
+      589, 1058, 1057,  594,  599,  602,  600,  605,  606,  607,
+      610,  608, 1056, 1055, 1054,  613,  614, 1053,  615,  617,
+        0,  616, 1052,  619,  627,  618,  624,  635,  636,  630,
+      641,  637, 1051,  643,  642, 1050,  648,  650, 1049, 1048,
+      654, 1047, 1046,  655,  659,  656,  660, 1045,  662,  664,
+     1044,  667, 1043,  670,  668,  675, 1042,  679,  678, 1041,
+
+      675,  688,  687,  691,  676,  689,  698,  699,  700,  702,
+      703,  701, 1040,  704, 1039,  705,  706,  707,  710,  712,
+      713, 1038,  715,  716,  724,  726,  727,  728, 1037,  730,
+      734, 1036, 1035, 1034, 1033, 1032, 1031, 1030,  738,  739,
+     1029,  740,  741,  742, 1028, 1027, 1026,  743,  746,  744,
+      745,  747,  758,  755,  759, 1025,  761, 1024,  762,  765,
+      766,  768,  769,  770,  771, 1023, 1022,  780,  773, 1021,
+      781, 1020,  783,  786,  782, 1019,  793, 1018, 1017, 1016,
+     1015,  790,  798, 1014,  799,  802, 1013, 1012, 1011,  801,
+     1010, 1009, 1008,  803,  804,  806,  807,  805,  809, 1007,
+
+      810, 1006, 1005,  816,  817,  819,  821,  824,  825,  823,
+      827,  829,  830,  831, 1004,  835,  841,  843,  846,  847,
+      849,  851,  852, 1003,  854,  857,  858,  859, 1002,  861,
+      862,  864,  866, 1001,  998,  869,  877,  865,  867,  988,
+      883,  884,  885,  987,  871,  986,  984,  888,  891,  892,
+      896,  895,  897,  899,  902,  903,  904,  905,  907,  983,
+      908,  913,  914,  916,  910,  921,  917,  982,  923,  927,
+      928,  931,  981,  935,  924,  936,  934,  977,  937,  976,
+      938,  941,  945,  950,  952,  954,  956,  957,  959,  961,
+      960,  962,  975,  963,  970,  775,  964,  533,  965,  454,
+
+      453,  261,  969,  216, 1101, 1004, 1006,  226, 1010,   76
+    } ;
+
+static yyconst short int yy_def[511] =
+    {   0,
+      505,    1,  505,  505,  505,  505,  506,  507,  508,  505,
+      507,  507,  507,  507,  509,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  506,  505,  507,  505,
+      510,  510,  505,  505,  507,  507,  507,  507,  507,  509,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  505,  510,
+      510,  505,  507,  507,  507,   49,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,   49,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  505,  505,  505,  505,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      177,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  505,  507,  507,  507,  507,
+
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+
+      507,  507,  507,  507,    0,  505,  505,  505,  505,  505
+    } ;
+
+static yyconst short int yy_nxt[1145] =
+    {   0,
+        4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
+       14,   14,   14,    4,   15,    8,    8,    8,   16,   17,
+       18,   19,   20,   21,   22,    8,   23,    8,   24,   25,
+       26,   27,   28,    8,   29,   30,   31,   32,   33,   34,
+       35,    8,   36,   42,   40,   43,   43,   43,   43,   44,
+       44,   44,   44,   45,   45,   45,   45,   40,   46,   40,
+       40,   40,  136,   40,   47,   48,   48,   48,   48,   40,
+       47,   48,   48,   48,   48,   40,   40,   69,  120,   40,
+       87,   40,   88,   86,   51,  116,   40,   70,   56,   40,
+       91,   52,   57,   53,   40,   54,   49,   58,   55,   60,
+
+       59,   61,   40,  123,  117,   77,   78,   64,   40,   40,
+       40,   65,   62,   40,   79,   66,   63,   67,   71,   75,
+       68,   72,   80,   40,   40,   76,   40,   81,   73,   83,
+       40,   82,   40,   40,   74,   89,   40,  113,   40,   40,
+      251,   90,   84,   40,  102,  115,   40,  118,   85,   92,
+      114,  127,  131,   40,  130,  146,   40,  103,   40,   93,
+      104,   94,   95,  139,   40,   96,   97,  105,  121,  121,
+      121,  121,   40,  147,   98,  134,   99,  100,   40,  101,
+       92,   40,   40,  135,   40,   43,   43,   43,   43,   40,
+      106,  128,  107,  129,  132,  162,  137,  108,  133,  109,
+
+       40,  110,   40,  138,   40,  111,  112,  122,   44,   44,
+       44,   44,   47,   45,   45,   45,   45,   40,  124,  124,
+      124,  124,   40,  142,  148,  125,   40,  143,   41,   40,
+      205,  125,   47,   48,   48,   48,   48,   40,  126,  126,
+      126,  126,   40,   40,  126,  126,   40,  126,  126,  126,
+      126,  126,  126,  144,   40,   40,   40,   40,  140,   40,
+      141,   40,  149,   40,   40,  145,   40,   40,   40,  153,
+      155,   40,  151,  209,   40,   40,   40,  154,  150,  152,
+      167,  165,  157,   40,   40,  158,  156,   40,  163,  159,
+      160,   40,  161,  166,  164,  169,   40,   40,  168,  170,
+
+       40,  172,   40,   40,   40,   40,  171,   40,   40,   40,
+      173,   40,   40,  174,  187,  180,   40,   40,  175,  186,
+      179,   40,   40,  181,  183,  176,   40,  184,  189,   40,
+      177,  182,  178,  185,  188,   40,  195,   40,   40,  190,
+      196,   40,  191,   40,   40,   40,  240,   40,  193,  200,
+      192,  197,  208,  203,  198,   40,   40,  204,   40,  194,
+       40,  199,  201,  121,  121,  121,  121,  202,  206,   40,
+      207,  213,  213,  213,  213,   40,   40,  210,  214,  211,
+      218,   40,   40,  225,  214,  124,  124,  124,  124,   40,
+      220,   40,  125,  219,   40,  222,   40,  221,  125,  215,
+
+      216,   40,  217,  217,  217,  217,   40,   40,   40,  223,
+      228,  224,   40,  227,   40,  226,   40,  229,   40,   40,
+       40,   40,  234,  230,   40,   40,   40,  232,   40,  231,
+      236,  233,  235,  241,  242,  244,   40,   40,   40,   40,
+       40,  243,  237,  239,  245,   40,  238,   40,  247,  248,
+       40,  246,   40,   40,  250,  249,   40,   40,  253,   40,
+       40,   40,   40,  254,   40,   40,   40,   40,   40,   40,
+      252,  256,  271,  294,  255,  258,   40,  265,  260,  259,
+       40,  257,  261,  261,  261,  261,   40,  262,  261,  261,
+      263,  261,  261,  261,  261,  261,  261,   40,   40,  264,
+
+       40,  270,  273,   40,   40,   40,  266,  272,  267,   40,
+       40,   40,  268,   40,  269,   40,  277,   40,   40,  276,
+      279,  274,  280,   40,   40,   40,  275,   40,  278,   40,
+       40,   40,  285,  281,  284,  290,  286,  287,   40,  291,
+      282,  283,   40,  289,   40,  288,   40,  292,  213,  213,
+      213,  213,  293,  215,  215,  214,  296,  296,  296,  296,
+       40,  214,  295,  296,  296,  296,  296,  217,  217,  217,
+      217,   40,  217,  217,  217,  217,   40,  297,   40,   40,
+       40,   40,   40,   40,   40,  298,   40,   40,  301,   40,
+       40,  305,   40,   40,   40,  310,  299,  300,   40,  304,
+
+      306,   40,   40,  312,   40,  302,  303,   40,  308,  309,
+      313,  314,   40,   40,  311,   40,  307,  317,   40,   40,
+       40,   40,  316,   40,  318,  315,   40,   40,   40,   40,
+       40,   40,   40,  321,  319,  322,  324,   40,  329,  320,
+       40,  323,  326,   40,  325,  330,  333,  331,   40,   40,
+       40,  332,  327,  328,   40,   40,   40,  335,  337,  340,
+      334,   40,  342,   40,  339,  341,  338,   40,   40,   40,
+      343,  336,   40,   40,  348,   40,  345,   40,  344,  346,
+       40,   40,  347,   40,  296,  296,  296,  296,   40,   40,
+      349,   40,   40,  353,  355,  358,  350,  356,  351,  357,
+
+       40,   40,   40,  352,   40,  354,  359,  360,  363,  361,
+      362,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,  369,  366,   40,  370,   40,   40,  371,   40,   40,
+      364,  365,  367,  368,  372,  376,  373,   40,  378,   40,
+       40,   40,  375,   40,  379,  377,  374,   40,  380,  381,
+      382,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,  383,  386,  390,  389,  387,  385,  391,   40,  393,
+      384,   40,   40,  394,   40,   40,  395,  388,   40,   40,
+      392,   40,   40,   40,   40,  400,   40,  398,   40,  397,
+      402,  396,  399,   40,   40,   40,   40,  406,  407,   40,
+
+      412,  404,  405,   40,  403,  410,   40,  401,  411,  408,
+      409,   40,   40,  413,   40,   40,   40,   40,   40,   40,
+       40,  416,   40,   40,  414,  417,  418,  421,  415,   40,
+       40,  419,   40,  422,   40,  423,   40,   40,   40,  420,
+       40,  425,   40,   40,   40,  424,  430,  431,   40,  429,
+      426,  427,  435,  432,   40,  433,   40,  434,  428,   40,
+       40,  439,   40,  438,   40,   40,  436,   40,  440,  442,
+       40,   40,   40,  437,   40,   40,  444,   40,   40,   40,
+       40,  448,   40,  441,   40,  455,  456,  443,  452,  449,
+       40,  445,  450,  446,  447,  453,   40,   40,   40,  454,
+
+      451,   40,  458,  457,   40,   40,  461,  460,   40,   40,
+       40,  459,   40,  462,  464,   40,   40,   40,   40,  467,
+       40,   40,  470,   40,  465,  472,   40,   40,  463,   40,
+       40,  469,  477,  471,   40,  473,   40,   40,  468,  466,
+       40,   40,  474,  478,   40,  480,  475,   40,   40,   40,
+       40,   40,  476,  479,   40,  481,  482,  484,   40,  483,
+      485,  490,  486,   40,  487,   40,  489,   40,  488,   40,
+       40,  491,   40,   40,   40,   40,   40,   40,   40,  497,
+      492,  498,   40,   40,  502,  494,  493,  503,   40,   40,
+       40,  496,  495,  501,   40,   40,   40,   40,  500,   40,
+
+       40,   40,  499,  504,   37,   37,   37,   37,   39,   39,
+       50,   40,   50,   50,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,  212,   40,   40,   40,   40,  119,   40,   38,  505,
+
+        3,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505
+    } ;
+
+static yyconst short int yy_chk[1145] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    9,   58,    9,    9,    9,    9,   10,
+       10,   10,   10,   11,   11,   11,   11,   11,   12,   26,
+       20,   27,   58,   12,   13,   13,   13,   13,   13,   13,
+       14,   14,   14,   14,   14,   14,   16,   20,  510,   17,
+       27,   29,   27,   26,   16,   35,   35,   20,   17,   23,
+       29,   16,   17,   16,   18,   16,   13,   17,   16,   18,
+
+       17,   18,   19,   46,   35,   23,   23,   19,   46,   24,
+       22,   19,   18,   21,   24,   19,   18,   19,   21,   22,
+       19,   21,   24,   28,   25,   22,  163,   24,   21,   25,
+       66,   24,   33,   54,   21,   28,   34,   33,   36,   31,
+      163,   28,   25,   51,   31,   34,   53,   36,   25,   30,
+       33,   51,   54,   30,   53,   66,   61,   31,   67,   30,
+       31,   30,   30,   61,   56,   30,   30,   31,   42,   42,
+       42,   42,   57,   67,   30,   56,   30,   30,   52,   30,
+       32,   60,   55,   57,   32,   43,   43,   43,   43,   79,
+       32,   52,   32,   52,   55,   79,   60,   32,   55,   32,
+
+       68,   32,   63,   60,   64,   32,   32,   44,   44,   44,
+       44,   44,   45,   45,   45,   45,   45,   45,   47,   47,
+       47,   47,   47,   63,   68,   47,  113,   64,  508,  504,
+      113,   47,   48,   48,   48,   48,   48,   48,   49,   49,
+       49,   49,   49,   62,   49,   49,   65,   49,   49,   49,
+       49,   49,   49,   65,   69,   70,   72,   71,   62,   73,
+       62,   74,   69,   75,   76,   65,   77,   78,   82,   72,
+       74,   80,   71,  116,  502,  116,   81,   73,   70,   71,
+       82,   81,   76,   83,   85,   77,   75,   84,   80,   78,
+       78,   86,   78,   81,   80,   84,   87,   89,   83,   85,
+
+       90,   87,   91,   92,   93,   98,   86,   94,   95,   96,
+       89,   97,  106,   90,   98,   95,   99,  105,   91,   97,
+       94,  153,  100,   95,   96,   91,  101,   96,  100,  102,
+       92,   95,   93,   96,   99,  104,  105,  108,  107,  101,
+      106,  110,  102,  109,  111,  112,  153,  115,  104,  110,
+      102,  107,  115,  111,  108,  114,  117,  112,  118,  104,
+      138,  109,  110,  121,  121,  121,  121,  110,  114,  128,
+      114,  122,  122,  122,  122,  129,  132,  117,  122,  118,
+      128,  131,  134,  138,  122,  124,  124,  124,  124,  124,
+      131,  141,  124,  129,  136,  134,  137,  132,  124,  125,
+
+      125,  142,  125,  125,  125,  125,  125,  140,  144,  136,
+      142,  137,  143,  141,  145,  140,  148,  143,  147,  149,
+      152,  150,  148,  144,  151,  155,  156,  147,  154,  145,
+      150,  147,  149,  154,  155,  156,  158,  161,  157,  159,
+      160,  155,  150,  152,  157,  162,  151,  164,  159,  160,
+      165,  158,  166,  167,  162,  161,  168,  169,  165,  172,
+      171,  174,  185,  166,  178,  179,  501,  500,  181,  209,
+      164,  168,  185,  209,  167,  171,  180,  181,  174,  172,
+      184,  169,  177,  177,  177,  177,  187,  178,  177,  177,
+      179,  177,  177,  177,  177,  177,  177,  182,  186,  180,
+
+      188,  184,  187,  190,  191,  192,  182,  186,  182,  193,
+      196,  194,  182,  195,  182,  197,  192,  199,  198,  191,
+      194,  188,  195,  200,  202,  204,  190,  201,  193,  203,
+      205,  206,  200,  196,  199,  205,  201,  202,  208,  206,
+      197,  198,  207,  204,  211,  203,  498,  207,  213,  213,
+      213,  213,  208,  214,  214,  213,  214,  214,  214,  214,
+      218,  213,  211,  215,  215,  215,  215,  216,  216,  216,
+      216,  216,  217,  217,  217,  217,  217,  218,  219,  220,
+      222,  226,  227,  228,  229,  219,  230,  231,  226,  232,
+      235,  230,  233,  236,  234,  235,  220,  222,  237,  229,
+
+      231,  238,  241,  237,  239,  227,  228,  244,  233,  234,
+      238,  239,  245,  247,  236,  246,  232,  245,  248,  249,
+      250,  252,  244,  251,  246,  241,  256,  257,  259,  262,
+      260,  266,  264,  249,  247,  250,  252,  267,  262,  248,
+      265,  251,  257,  270,  256,  264,  267,  265,  268,  269,
+      272,  266,  259,  260,  271,  275,  274,  268,  269,  272,
+      267,  277,  275,  278,  271,  274,  270,  281,  284,  286,
+      277,  268,  285,  287,  286,  289,  281,  290,  278,  284,
+      292,  295,  285,  294,  296,  296,  296,  296,  301,  305,
+      287,  299,  298,  294,  295,  301,  289,  298,  290,  299,
+
+      303,  302,  306,  292,  304,  294,  302,  303,  306,  304,
+      305,  307,  308,  309,  312,  310,  311,  314,  316,  317,
+      318,  312,  309,  319,  314,  320,  321,  316,  323,  324,
+      307,  308,  310,  311,  317,  321,  318,  325,  324,  326,
+      327,  328,  320,  330,  325,  323,  319,  331,  326,  327,
+      328,  339,  340,  342,  343,  344,  348,  350,  351,  349,
+      352,  330,  340,  348,  344,  342,  339,  349,  354,  351,
+      331,  353,  355,  352,  357,  359,  353,  343,  360,  361,
+      350,  362,  363,  364,  365,  360,  369,  357,  496,  355,
+      362,  354,  359,  368,  371,  375,  373,  368,  368,  374,
+
+      375,  364,  365,  382,  363,  373,  377,  361,  374,  369,
+      371,  383,  385,  377,  390,  386,  394,  395,  398,  396,
+      397,  385,  399,  401,  382,  386,  390,  396,  383,  404,
+      405,  394,  406,  397,  407,  398,  410,  408,  409,  395,
+      411,  401,  412,  413,  414,  399,  408,  409,  416,  407,
+      404,  405,  413,  410,  417,  411,  418,  412,  406,  419,
+      420,  418,  421,  417,  422,  423,  414,  425,  419,  421,
+      426,  427,  428,  416,  430,  431,  423,  432,  438,  433,
+      439,  428,  436,  420,  445,  438,  439,  422,  433,  430,
+      437,  425,  431,  426,  427,  436,  441,  442,  443,  437,
+
+      432,  448,  442,  441,  449,  450,  448,  445,  452,  451,
+      453,  443,  454,  449,  451,  455,  456,  457,  458,  454,
+      459,  461,  457,  465,  452,  459,  462,  463,  450,  464,
+      467,  456,  465,  458,  466,  461,  469,  475,  455,  453,
+      470,  471,  462,  466,  472,  469,  463,  477,  474,  476,
+      479,  481,  464,  467,  482,  470,  471,  474,  483,  472,
+      475,  482,  476,  484,  477,  485,  481,  486,  479,  487,
+      488,  483,  489,  491,  490,  492,  494,  497,  499,  489,
+      484,  490,  503,  495,  497,  486,  485,  499,  493,  480,
+      478,  488,  487,  494,  473,  468,  460,  447,  492,  446,
+
+      444,  440,  491,  503,  506,  506,  506,  506,  507,  507,
+      509,  435,  509,  509,  434,  429,  424,  415,  403,  402,
+      400,  393,  392,  391,  389,  388,  387,  384,  381,  380,
+      379,  378,  376,  372,  370,  367,  366,  358,  356,  347,
+      346,  345,  341,  338,  337,  336,  335,  334,  333,  332,
+      329,  322,  315,  313,  300,  297,  293,  291,  288,  283,
+      282,  280,  279,  276,  273,  263,  258,  255,  254,  253,
+      243,  242,  240,  225,  224,  223,  221,  210,  189,  183,
+      176,  175,  173,  170,  146,  139,  135,  133,  130,  127,
+      123,  119,  103,   88,   59,   39,   37,    8,    7,    3,
+
+      505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
+      505,  505,  505,  505
+    } ;
+
+static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
+static char *yy_full_match;
+static int yy_lp;
+#define REJECT \
+{ \
+*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
+yy_cp = yy_full_match; /* restore poss. backed-over text */ \
+++yy_lp; \
+goto find_rule; \
+}
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+#define INITIAL 0
+/*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by the LLVM research group and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+//  This file implements the flex scanner for LLVM assembly languages files.
+//
+//===----------------------------------------------------------------------===*/
+#define YY_NEVER_INTERACTIVE 1
+#line 28 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+
+#include "ParserInternals.h"
+#define YYSTYPE std::string*
+#include "UpgradeParser.h"
+#include <cctype>
+#include <cstdlib>
+
+void set_scan_bytes (const char * str, size_t len) {
+  Upgrade_scan_bytes (str, len);
+}
+
+static void trim(std::string& str) {
+  size_t startpos = str.find_first_not_of(" \t\n\r",0);
+  if (startpos != std::string::npos)
+    str.erase(0,startpos);
+}
+
+// Construct a token value for a non-obsolete token
+#define RET_TOK(sym) \
+  Upgradelval = new std::string(yytext); \
+  trim(*Upgradelval); \
+  return sym
+
+#define YY_NEVER_INTERACTIVE 1
+/* Comments start with a ; and go till end of line */
+/* Variable(Value) identifiers start with a % sign */
+/* Label identifiers end with a colon */
+/* Quoted names can contain any character except " and \ */
+/* [PN]Integer: match positive and negative literal integer values that
+ * are preceeded by a '%' character.  These represent unnamed variable slots.
+ */
+/* E[PN]Integer: match positive and negative literal integer values */
+/* FPConstant - A Floating point constant.
+ */
+/* HexFPConstant - Floating point constant represented in IEEE format as a
+ *  hexadecimal number for when exponential notation is not precise enough.
+ */
+/* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing
+ * it to deal with 64 bit numbers.
+ */
+#line 900 "UpgradeLexer.cpp"
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap YY_PROTO(( void ));
+#else
+extern int yywrap YY_PROTO(( void ));
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+static inline void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int yy_start_stack_ptr = 0;
+static int yy_start_stack_depth = 0;
+static int *yy_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void yy_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state YY_PROTO(( void ));
+#endif
+
+#else
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
+#endif
+
+#ifdef YY_MALLOC_DECL
+YY_MALLOC_DECL
+#else
+#if __STDC__
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#else
+/* Just try to get by without declaring the routines.  This will fail
+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
+ * or sizeof(void*) != sizeof(int).
+ */
+#endif
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+       if ( yy_current_buffer->yy_is_interactive ) \
+               { \
+               int c = '*', n; \
+               for ( n = 0; n < max_size && \
+                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+                       buf[n] = (char) c; \
+               if ( c == '\n' ) \
+                       buf[n++] = (char) c; \
+               if ( c == EOF && ferror( yyin ) ) \
+                       YY_FATAL_ERROR( "input in flex scanner failed" ); \
+               result = n; \
+               } \
+       else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
+                 && ferror( yyin ) ) \
+               YY_FATAL_ERROR( "input in flex scanner failed" );
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL int yylex YY_PROTO(( void ))
+#endif
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+       YY_USER_ACTION
+
+YY_DECL
+       {
+       register yy_state_type yy_current_state;
+       register char *yy_cp = NULL, *yy_bp = NULL;
+       register int yy_act;
+
+#line 94 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+
+
+#line 1054 "UpgradeLexer.cpp"
+
+       if ( yy_init )
+               {
+               yy_init = 0;
+
+#ifdef YY_USER_INIT
+               YY_USER_INIT;
+#endif
+
+               if ( ! yy_start )
+                       yy_start = 1;   /* first start state */
+
+               if ( ! yyin )
+                       yyin = stdin;
+
+               if ( ! yyout )
+                       yyout = stdout;
+
+               if ( ! yy_current_buffer )
+                       yy_current_buffer =
+                               yy_create_buffer( yyin, YY_BUF_SIZE );
+
+               yy_load_buffer_state();
+               }
+
+       while ( 1 )             /* loops until end-of-file is reached */
+               {
+               yy_cp = yy_c_buf_p;
+
+               /* Support of yytext. */
+               *yy_cp = yy_hold_char;
+
+               /* yy_bp points to the position in yy_ch_buf of the start of
+                * the current run.
+                */
+               yy_bp = yy_cp;
+
+               yy_current_state = yy_start;
+               yy_state_ptr = yy_state_buf;
+               *yy_state_ptr++ = yy_current_state;
+yy_match:
+               do
+                       {
+                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+                       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+                               {
+                               yy_current_state = (int) yy_def[yy_current_state];
+                               if ( yy_current_state >= 506 )
+                                       yy_c = yy_meta[(unsigned int) yy_c];
+                               }
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+                       *yy_state_ptr++ = yy_current_state;
+                       ++yy_cp;
+                       }
+               while ( yy_current_state != 505 );
+
+yy_find_action:
+               yy_current_state = *--yy_state_ptr;
+               yy_lp = yy_accept[yy_current_state];
+find_rule: /* we branch to this label when backing up */
+               for ( ; ; ) /* until we find what rule we matched */
+                       {
+                       if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
+                               {
+                               yy_act = yy_acclist[yy_lp];
+                                       {
+                                       yy_full_match = yy_cp;
+                                       break;
+                                       }
+                               }
+                       --yy_cp;
+                       yy_current_state = *--yy_state_ptr;
+                       yy_lp = yy_accept[yy_current_state];
+                       }
+
+               YY_DO_BEFORE_ACTION;
+
+               if ( yy_act != YY_END_OF_BUFFER )
+                       {
+                       int yyl;
+                       for ( yyl = 0; yyl < yyleng; ++yyl )
+                               if ( yytext[yyl] == '\n' )
+                                       ++yylineno;
+                       }
+
+do_action:     /* This label is used only to access EOF actions. */
+
+
+               switch ( yy_act )
+       { /* beginning of action switch */
+case 1:
+YY_RULE_SETUP
+#line 96 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ /* Ignore comments for now */ }
+       YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 98 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( BEGINTOK); }
+       YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 99 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ENDTOK); }
+       YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 100 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( TRUETOK);  }
+       YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 101 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FALSETOK); }
+       YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 102 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( DECLARE); }
+       YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 103 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( GLOBAL); }
+       YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 104 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( CONSTANT); }
+       YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 105 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( INTERNAL); }
+       YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 106 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LINKONCE); }
+       YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 107 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( WEAK); }
+       YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 108 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( APPENDING); }
+       YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 109 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( DLLIMPORT); }
+       YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 110 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( DLLEXPORT); }
+       YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 111 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( EXTERN_WEAK); }
+       YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 112 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( EXTERNAL); }
+       YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 113 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( IMPLEMENTATION); }
+       YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 114 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ZEROINITIALIZER); }
+       YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 115 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( DOTDOTDOT); }
+       YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 116 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UNDEF); }
+       YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 117 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( NULL_TOK); }
+       YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 118 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( TO); }
+       YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 119 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( TAIL); }
+       YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 120 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( TARGET); }
+       YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 121 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( TRIPLE); }
+       YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 122 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( DEPLIBS); }
+       YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 123 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ENDIAN); }
+       YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 124 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( POINTERSIZE); }
+       YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 125 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( DATALAYOUT); }
+       YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 126 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LITTLE); }
+       YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 127 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( BIG); }
+       YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 128 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( VOLATILE); }
+       YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 129 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ALIGN);  }
+       YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 130 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SECTION); }
+       YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 131 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( MODULE); }
+       YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 132 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ASM_TOK); }
+       YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 133 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SIDEEFFECT); }
+       YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 135 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( CC_TOK); }
+       YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 136 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( CCC_TOK); }
+       YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 137 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( CSRETCC_TOK); }
+       YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 138 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FASTCC_TOK); }
+       YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 139 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( COLDCC_TOK); }
+       YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 140 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( X86_STDCALLCC_TOK); }
+       YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 141 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( X86_FASTCALLCC_TOK); }
+       YY_BREAK
+case 45:
+YY_RULE_SETUP
+#line 143 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( VOID); }
+       YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 144 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( BOOL); }
+       YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 145 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SBYTE); }
+       YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 146 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UBYTE); }
+       YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 147 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SHORT); }
+       YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 148 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( USHORT); }
+       YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 149 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( INT);   }
+       YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 150 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UINT);  }
+       YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 151 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LONG);  }
+       YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 152 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ULONG); }
+       YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 153 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FLOAT); }
+       YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 154 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( DOUBLE); }
+       YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 155 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LABEL); }
+       YY_BREAK
+case 58:
+YY_RULE_SETUP
+#line 156 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( TYPE);   }
+       YY_BREAK
+case 59:
+YY_RULE_SETUP
+#line 157 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( OPAQUE); }
+       YY_BREAK
+case 60:
+YY_RULE_SETUP
+#line 159 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ADD); }
+       YY_BREAK
+case 61:
+YY_RULE_SETUP
+#line 160 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SUB); }
+       YY_BREAK
+case 62:
+YY_RULE_SETUP
+#line 161 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( MUL); }
+       YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 162 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UDIV); }
+       YY_BREAK
+case 64:
+YY_RULE_SETUP
+#line 163 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UDIV); }
+       YY_BREAK
+case 65:
+YY_RULE_SETUP
+#line 164 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SDIV); }
+       YY_BREAK
+case 66:
+YY_RULE_SETUP
+#line 165 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FDIV); }
+       YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 166 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UREM); }
+       YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 167 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UREM); }
+       YY_BREAK
+case 69:
+YY_RULE_SETUP
+#line 168 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SREM); }
+       YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 169 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FREM); }
+       YY_BREAK
+case 71:
+YY_RULE_SETUP
+#line 170 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( AND); }
+       YY_BREAK
+case 72:
+YY_RULE_SETUP
+#line 171 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( OR); }
+       YY_BREAK
+case 73:
+YY_RULE_SETUP
+#line 172 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( XOR); }
+       YY_BREAK
+case 74:
+YY_RULE_SETUP
+#line 173 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SETNE); }
+       YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 174 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SETEQ); }
+       YY_BREAK
+case 76:
+YY_RULE_SETUP
+#line 175 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SETLT); }
+       YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 176 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SETGT); }
+       YY_BREAK
+case 78:
+YY_RULE_SETUP
+#line 177 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SETLE); }
+       YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 178 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SETGE); }
+       YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 180 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( PHI_TOK); }
+       YY_BREAK
+case 81:
+YY_RULE_SETUP
+#line 181 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( CALL); }
+       YY_BREAK
+case 82:
+YY_RULE_SETUP
+#line 182 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( TRUNC); }
+       YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 183 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SELECT); }
+       YY_BREAK
+case 84:
+YY_RULE_SETUP
+#line 184 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SHL); }
+       YY_BREAK
+case 85:
+YY_RULE_SETUP
+#line 185 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LSHR); }
+       YY_BREAK
+case 86:
+YY_RULE_SETUP
+#line 186 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ASHR); }
+       YY_BREAK
+case 87:
+YY_RULE_SETUP
+#line 187 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( VAARG); }
+       YY_BREAK
+case 88:
+YY_RULE_SETUP
+#line 188 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( RET); }
+       YY_BREAK
+case 89:
+YY_RULE_SETUP
+#line 189 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( BR); }
+       YY_BREAK
+case 90:
+YY_RULE_SETUP
+#line 190 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SWITCH); }
+       YY_BREAK
+case 91:
+YY_RULE_SETUP
+#line 191 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( INVOKE); }
+       YY_BREAK
+case 92:
+YY_RULE_SETUP
+#line 192 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UNWIND); }
+       YY_BREAK
+case 93:
+YY_RULE_SETUP
+#line 193 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UNREACHABLE); }
+       YY_BREAK
+case 94:
+YY_RULE_SETUP
+#line 195 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( MALLOC); }
+       YY_BREAK
+case 95:
+YY_RULE_SETUP
+#line 196 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ALLOCA); }
+       YY_BREAK
+case 96:
+YY_RULE_SETUP
+#line 197 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FREE); }
+       YY_BREAK
+case 97:
+YY_RULE_SETUP
+#line 198 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LOAD); }
+       YY_BREAK
+case 98:
+YY_RULE_SETUP
+#line 199 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( STORE); }
+       YY_BREAK
+case 99:
+YY_RULE_SETUP
+#line 200 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( GETELEMENTPTR); }
+       YY_BREAK
+case 100:
+YY_RULE_SETUP
+#line 202 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( EXTRACTELEMENT); }
+       YY_BREAK
+case 101:
+YY_RULE_SETUP
+#line 203 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( INSERTELEMENT); }
+       YY_BREAK
+case 102:
+YY_RULE_SETUP
+#line 204 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SHUFFLEVECTOR); }
+       YY_BREAK
+case 103:
+YY_RULE_SETUP
+#line 207 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( VAR_ID); }
+       YY_BREAK
+case 104:
+YY_RULE_SETUP
+#line 208 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LABELSTR); }
+       YY_BREAK
+case 105:
+YY_RULE_SETUP
+#line 209 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( LABELSTR); }
+       YY_BREAK
+case 106:
+YY_RULE_SETUP
+#line 210 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( STRINGCONSTANT ); }
+       YY_BREAK
+case 107:
+YY_RULE_SETUP
+#line 211 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( EUINT64VAL ); }
+       YY_BREAK
+case 108:
+YY_RULE_SETUP
+#line 212 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( ESINT64VAL ); }
+       YY_BREAK
+case 109:
+YY_RULE_SETUP
+#line 213 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( yytext[0] == 's' ? ESINT64VAL : EUINT64VAL ); }
+       YY_BREAK
+case 110:
+YY_RULE_SETUP
+#line 214 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( UINTVAL); }
+       YY_BREAK
+case 111:
+YY_RULE_SETUP
+#line 215 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( SINTVAL); }
+       YY_BREAK
+case 112:
+YY_RULE_SETUP
+#line 216 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FPVAL); }
+       YY_BREAK
+case 113:
+YY_RULE_SETUP
+#line 217 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ RET_TOK( FPVAL); }
+       YY_BREAK
+case YY_STATE_EOF(INITIAL):
+#line 218 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{
+                  /* Make sure to free the internal buffers for flex when we are
+                   * done reading our input!
+                   */
+                  yy_delete_buffer(YY_CURRENT_BUFFER);
+                  return EOF;
+                }
+       YY_BREAK
+case 114:
+YY_RULE_SETUP
+#line 226 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ /* Ignore whitespace */ }
+       YY_BREAK
+case 115:
+YY_RULE_SETUP
+#line 227 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+{ return yytext[0]; }
+       YY_BREAK
+case 116:
+YY_RULE_SETUP
+#line 229 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+YY_FATAL_ERROR( "flex scanner jammed" );
+       YY_BREAK
+#line 1735 "UpgradeLexer.cpp"
+
+       case YY_END_OF_BUFFER:
+               {
+               /* Amount of text matched not including the EOB char. */
+               int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
+
+               /* Undo the effects of YY_DO_BEFORE_ACTION. */
+               *yy_cp = yy_hold_char;
+               YY_RESTORE_YY_MORE_OFFSET
+
+               if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
+                       {
+                       /* We're scanning a new file or input source.  It's
+                        * possible that this happened because the user
+                        * just pointed yyin at a new source and called
+                        * yylex().  If so, then we have to assure
+                        * consistency between yy_current_buffer and our
+                        * globals.  Here is the right place to do so, because
+                        * this is the first action (other than possibly a
+                        * back-up) that will match for the new input source.
+                        */
+                       yy_n_chars = yy_current_buffer->yy_n_chars;
+                       yy_current_buffer->yy_input_file = yyin;
+                       yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+                       }
+
+               /* Note that here we test for yy_c_buf_p "<=" to the position
+                * of the first EOB in the buffer, since yy_c_buf_p will
+                * already have been incremented past the NUL character
+                * (since all states make transitions on EOB to the
+                * end-of-buffer state).  Contrast this with the test
+                * in input().
+                */
+               if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+                       { /* This was really a NUL. */
+                       yy_state_type yy_next_state;
+
+                       yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
+
+                       yy_current_state = yy_get_previous_state();
+
+                       /* Okay, we're now positioned to make the NUL
+                        * transition.  We couldn't have
+                        * yy_get_previous_state() go ahead and do it
+                        * for us because it doesn't know how to deal
+                        * with the possibility of jamming (and we don't
+                        * want to build jamming into it because then it
+                        * will run more slowly).
+                        */
+
+                       yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+                       yy_bp = yytext_ptr + YY_MORE_ADJ;
+
+                       if ( yy_next_state )
+                               {
+                               /* Consume the NUL. */
+                               yy_cp = ++yy_c_buf_p;
+                               yy_current_state = yy_next_state;
+                               goto yy_match;
+                               }
+
+                       else
+                               {
+                               yy_cp = yy_c_buf_p;
+                               goto yy_find_action;
+                               }
+                       }
+
+               else switch ( yy_get_next_buffer() )
+                       {
+                       case EOB_ACT_END_OF_FILE:
+                               {
+                               yy_did_buffer_switch_on_eof = 0;
+
+                               if ( yywrap() )
+                                       {
+                                       /* Note: because we've taken care in
+                                        * yy_get_next_buffer() to have set up
+                                        * yytext, we can now set up
+                                        * yy_c_buf_p so that if some total
+                                        * hoser (like flex itself) wants to
+                                        * call the scanner after we return the
+                                        * YY_NULL, it'll still work - another
+                                        * YY_NULL will get returned.
+                                        */
+                                       yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+
+                                       yy_act = YY_STATE_EOF(YY_START);
+                                       goto do_action;
+                                       }
+
+                               else
+                                       {
+                                       if ( ! yy_did_buffer_switch_on_eof )
+                                               YY_NEW_FILE;
+                                       }
+                               break;
+                               }
+
+                       case EOB_ACT_CONTINUE_SCAN:
+                               yy_c_buf_p =
+                                       yytext_ptr + yy_amount_of_matched_text;
+
+                               yy_current_state = yy_get_previous_state();
+
+                               yy_cp = yy_c_buf_p;
+                               yy_bp = yytext_ptr + YY_MORE_ADJ;
+                               goto yy_match;
+
+                       case EOB_ACT_LAST_MATCH:
+                               yy_c_buf_p =
+                               &yy_current_buffer->yy_ch_buf[yy_n_chars];
+
+                               yy_current_state = yy_get_previous_state();
+
+                               yy_cp = yy_c_buf_p;
+                               yy_bp = yytext_ptr + YY_MORE_ADJ;
+                               goto yy_find_action;
+                       }
+               break;
+               }
+
+       default:
+               YY_FATAL_ERROR(
+                       "fatal flex scanner internal error--no action found" );
+       } /* end of action switch */
+               } /* end of scanning one token */
+       } /* end of yylex */
+
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *     EOB_ACT_LAST_MATCH -
+ *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *     EOB_ACT_END_OF_FILE - end of file
+ */
+
+static int yy_get_next_buffer()
+       {
+       register char *dest = yy_current_buffer->yy_ch_buf;
+       register char *source = yytext_ptr;
+       register int number_to_move, i;
+       int ret_val;
+
+       if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+               YY_FATAL_ERROR(
+               "fatal flex scanner internal error--end of buffer missed" );
+
+       if ( yy_current_buffer->yy_fill_buffer == 0 )
+               { /* Don't try to fill the buffer, so this is an EOF. */
+               if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
+                       {
+                       /* We matched a single character, the EOB, so
+                        * treat this as a final EOF.
+                        */
+                       return EOB_ACT_END_OF_FILE;
+                       }
+
+               else
+                       {
+                       /* We matched some text prior to the EOB, first
+                        * process it.
+                        */
+                       return EOB_ACT_LAST_MATCH;
+                       }
+               }
+
+       /* Try to read more data. */
+
+       /* First move last chars to start of buffer. */
+       number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
+
+       for ( i = 0; i < number_to_move; ++i )
+               *(dest++) = *(source++);
+
+       if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+               /* don't do the read, it's not guaranteed to return an EOF,
+                * just force an EOF
+                */
+               yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+
+       else
+               {
+               int num_to_read =
+                       yy_current_buffer->yy_buf_size - number_to_move - 1;
+
+               while ( num_to_read <= 0 )
+                       { /* Not enough room in the buffer - grow it. */
+#ifdef YY_USES_REJECT
+                       YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+#else
+
+                       /* just a shorter name for the current buffer */
+                       YY_BUFFER_STATE b = yy_current_buffer;
+
+                       int yy_c_buf_p_offset =
+                               (int) (yy_c_buf_p - b->yy_ch_buf);
+
+                       if ( b->yy_is_our_buffer )
+                               {
+                               int new_size = b->yy_buf_size * 2;
+
+                               if ( new_size <= 0 )
+                                       b->yy_buf_size += b->yy_buf_size / 8;
+                               else
+                                       b->yy_buf_size *= 2;
+
+                               b->yy_ch_buf = (char *)
+                                       /* Include room in for 2 EOB chars. */
+                                       yy_flex_realloc( (void *) b->yy_ch_buf,
+                                                        b->yy_buf_size + 2 );
+                               }
+                       else
+                               /* Can't grow it, we don't own it. */
+                               b->yy_ch_buf = 0;
+
+                       if ( ! b->yy_ch_buf )
+                               YY_FATAL_ERROR(
+                               "fatal error - scanner input buffer overflow" );
+
+                       yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+                       num_to_read = yy_current_buffer->yy_buf_size -
+                                               number_to_move - 1;
+#endif
+                       }
+
+               if ( num_to_read > YY_READ_BUF_SIZE )
+                       num_to_read = YY_READ_BUF_SIZE;
+
+               /* Read in more data. */
+               YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+                       yy_n_chars, num_to_read );
+
+               yy_current_buffer->yy_n_chars = yy_n_chars;
+               }
+
+       if ( yy_n_chars == 0 )
+               {
+               if ( number_to_move == YY_MORE_ADJ )
+                       {
+                       ret_val = EOB_ACT_END_OF_FILE;
+                       yyrestart( yyin );
+                       }
+
+               else
+                       {
+                       ret_val = EOB_ACT_LAST_MATCH;
+                       yy_current_buffer->yy_buffer_status =
+                               YY_BUFFER_EOF_PENDING;
+                       }
+               }
+
+       else
+               ret_val = EOB_ACT_CONTINUE_SCAN;
+
+       yy_n_chars += number_to_move;
+       yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+       yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+       yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+
+       return ret_val;
+       }
+
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+static yy_state_type yy_get_previous_state()
+       {
+       register yy_state_type yy_current_state;
+       register char *yy_cp;
+
+       yy_current_state = yy_start;
+       yy_state_ptr = yy_state_buf;
+       *yy_state_ptr++ = yy_current_state;
+
+       for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
+               {
+               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+               while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+                       {
+                       yy_current_state = (int) yy_def[yy_current_state];
+                       if ( yy_current_state >= 506 )
+                               yy_c = yy_meta[(unsigned int) yy_c];
+                       }
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+               *yy_state_ptr++ = yy_current_state;
+               }
+
+       return yy_current_state;
+       }
+
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *     next_state = yy_try_NUL_trans( current_state );
+ */
+
+#ifdef YY_USE_PROTOS
+static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
+#else
+static yy_state_type yy_try_NUL_trans( yy_current_state )
+yy_state_type yy_current_state;
+#endif
+       {
+       register int yy_is_jam;
+
+       register YY_CHAR yy_c = 1;
+       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+               {
+               yy_current_state = (int) yy_def[yy_current_state];
+               if ( yy_current_state >= 506 )
+                       yy_c = yy_meta[(unsigned int) yy_c];
+               }
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+       yy_is_jam = (yy_current_state == 505);
+       if ( ! yy_is_jam )
+               *yy_state_ptr++ = yy_current_state;
+
+       return yy_is_jam ? 0 : yy_current_state;
+       }
+
+
+#ifndef YY_NO_UNPUT
+#ifdef YY_USE_PROTOS
+static inline void yyunput( int c, register char *yy_bp )
+#else
+static inline void yyunput( c, yy_bp )
+int c;
+register char *yy_bp;
+#endif
+       {
+       register char *yy_cp = yy_c_buf_p;
+
+       /* undo effects of setting up yytext */
+       *yy_cp = yy_hold_char;
+
+       if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+               { /* need to shift things up to make room */
+               /* +2 for EOB chars. */
+               register int number_to_move = yy_n_chars + 2;
+               register char *dest = &yy_current_buffer->yy_ch_buf[
+                                       yy_current_buffer->yy_buf_size + 2];
+               register char *source =
+                               &yy_current_buffer->yy_ch_buf[number_to_move];
+
+               while ( source > yy_current_buffer->yy_ch_buf )
+                       *--dest = *--source;
+
+               yy_cp += (int) (dest - source);
+               yy_bp += (int) (dest - source);
+               yy_current_buffer->yy_n_chars =
+                       yy_n_chars = yy_current_buffer->yy_buf_size;
+
+               if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+                       YY_FATAL_ERROR( "flex scanner push-back overflow" );
+               }
+
+       *--yy_cp = (char) c;
+
+       if ( c == '\n' )
+               --yylineno;
+
+       yytext_ptr = yy_bp;
+       yy_hold_char = *yy_cp;
+       yy_c_buf_p = yy_cp;
+       }
+#endif /* ifndef YY_NO_UNPUT */
+
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput()
+#else
+static int input()
+#endif
+       {
+       int c;
+
+       *yy_c_buf_p = yy_hold_char;
+
+       if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+               {
+               /* yy_c_buf_p now points to the character we want to return.
+                * If this occurs *before* the EOB characters, then it's a
+                * valid NUL; if not, then we've hit the end of the buffer.
+                */
+               if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+                       /* This was really a NUL. */
+                       *yy_c_buf_p = '\0';
+
+               else
+                       { /* need more input */
+                       int offset = yy_c_buf_p - yytext_ptr;
+                       ++yy_c_buf_p;
+
+                       switch ( yy_get_next_buffer() )
+                               {
+                               case EOB_ACT_LAST_MATCH:
+                                       /* This happens because yy_g_n_b()
+                                        * sees that we've accumulated a
+                                        * token and flags that we need to
+                                        * try matching the token before
+                                        * proceeding.  But for input(),
+                                        * there's no matching to consider.
+                                        * So convert the EOB_ACT_LAST_MATCH
+                                        * to EOB_ACT_END_OF_FILE.
+                                        */
+
+                                       /* Reset buffer status. */
+                                       yyrestart( yyin );
+
+                                       /* fall through */
+
+                               case EOB_ACT_END_OF_FILE:
+                                       {
+                                       if ( yywrap() )
+                                               return EOF;
+
+                                       if ( ! yy_did_buffer_switch_on_eof )
+                                               YY_NEW_FILE;
+#ifdef __cplusplus
+                                       return yyinput();
+#else
+                                       return input();
+#endif
+                                       }
+
+                               case EOB_ACT_CONTINUE_SCAN:
+                                       yy_c_buf_p = yytext_ptr + offset;
+                                       break;
+                               }
+                       }
+               }
+
+       c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
+       *yy_c_buf_p = '\0';     /* preserve yytext */
+       yy_hold_char = *++yy_c_buf_p;
+
+       if ( c == '\n' )
+               ++yylineno;
+
+       return c;
+       }
+#endif /* YY_NO_INPUT */
+
+#ifdef YY_USE_PROTOS
+void yyrestart( FILE *input_file )
+#else
+void yyrestart( input_file )
+FILE *input_file;
+#endif
+       {
+       if ( ! yy_current_buffer )
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+
+       yy_init_buffer( yy_current_buffer, input_file );
+       yy_load_buffer_state();
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+#else
+void yy_switch_to_buffer( new_buffer )
+YY_BUFFER_STATE new_buffer;
+#endif
+       {
+       if ( yy_current_buffer == new_buffer )
+               return;
+
+       if ( yy_current_buffer )
+               {
+               /* Flush out information for old buffer. */
+               *yy_c_buf_p = yy_hold_char;
+               yy_current_buffer->yy_buf_pos = yy_c_buf_p;
+               yy_current_buffer->yy_n_chars = yy_n_chars;
+               }
+
+       yy_current_buffer = new_buffer;
+       yy_load_buffer_state();
+
+       /* We don't actually know whether we did this switch during
+        * EOF (yywrap()) processing, but the only time this flag
+        * is looked at is after yywrap() is called, so it's safe
+        * to go ahead and always set it.
+        */
+       yy_did_buffer_switch_on_eof = 1;
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_load_buffer_state( void )
+#else
+void yy_load_buffer_state()
+#endif
+       {
+       yy_n_chars = yy_current_buffer->yy_n_chars;
+       yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
+       yyin = yy_current_buffer->yy_input_file;
+       yy_hold_char = *yy_c_buf_p;
+       }
+
+
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
+#else
+YY_BUFFER_STATE yy_create_buffer( file, size )
+FILE *file;
+int size;
+#endif
+       {
+       YY_BUFFER_STATE b;
+
+       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+       if ( ! b )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+       b->yy_buf_size = size;
+
+       /* yy_ch_buf has to be 2 characters longer than the size given because
+        * we need to put in 2 end-of-buffer characters.
+        */
+       b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+       if ( ! b->yy_ch_buf )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+       b->yy_is_our_buffer = 1;
+
+       yy_init_buffer( b, file );
+
+       return b;
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_delete_buffer( YY_BUFFER_STATE b )
+#else
+void yy_delete_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+       {
+       if ( ! b )
+               return;
+
+       if ( b == yy_current_buffer )
+               yy_current_buffer = (YY_BUFFER_STATE) 0;
+
+       if ( b->yy_is_our_buffer )
+               yy_flex_free( (void *) b->yy_ch_buf );
+
+       yy_flex_free( (void *) b );
+       }
+
+
+
+#ifdef YY_USE_PROTOS
+void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
+#else
+void yy_init_buffer( b, file )
+YY_BUFFER_STATE b;
+FILE *file;
+#endif
+
+
+       {
+       yy_flush_buffer( b );
+
+       b->yy_input_file = file;
+       b->yy_fill_buffer = 1;
+
+#if YY_ALWAYS_INTERACTIVE
+       b->yy_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+       b->yy_is_interactive = 0;
+#else
+       b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_flush_buffer( YY_BUFFER_STATE b )
+#else
+void yy_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+       {
+       if ( ! b )
+               return;
+
+       b->yy_n_chars = 0;
+
+       /* We always need two end-of-buffer characters.  The first causes
+        * a transition to the end-of-buffer state.  The second causes
+        * a jam in that state.
+        */
+       b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+       b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+       b->yy_buf_pos = &b->yy_ch_buf[0];
+
+       b->yy_at_bol = 1;
+       b->yy_buffer_status = YY_BUFFER_NEW;
+
+       if ( b == yy_current_buffer )
+               yy_load_buffer_state();
+       }
+
+
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
+#else
+YY_BUFFER_STATE yy_scan_buffer( base, size )
+char *base;
+yy_size_t size;
+#endif
+       {
+       YY_BUFFER_STATE b;
+
+       if ( size < 2 ||
+            base[size-2] != YY_END_OF_BUFFER_CHAR ||
+            base[size-1] != YY_END_OF_BUFFER_CHAR )
+               /* They forgot to leave room for the EOB's. */
+               return 0;
+
+       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+       if ( ! b )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
+       b->yy_buf_pos = b->yy_ch_buf = base;
+       b->yy_is_our_buffer = 0;
+       b->yy_input_file = 0;
+       b->yy_n_chars = b->yy_buf_size;
+       b->yy_is_interactive = 0;
+       b->yy_at_bol = 1;
+       b->yy_fill_buffer = 0;
+       b->yy_buffer_status = YY_BUFFER_NEW;
+
+       yy_switch_to_buffer( b );
+
+       return b;
+       }
+#endif
+
+
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
+#else
+YY_BUFFER_STATE yy_scan_string( yy_str )
+yyconst char *yy_str;
+#endif
+       {
+       int len;
+       for ( len = 0; yy_str[len]; ++len )
+               ;
+
+       return yy_scan_bytes( yy_str, len );
+       }
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
+#else
+YY_BUFFER_STATE yy_scan_bytes( bytes, len )
+yyconst char *bytes;
+int len;
+#endif
+       {
+       YY_BUFFER_STATE b;
+       char *buf;
+       yy_size_t n;
+       int i;
+
+       /* Get memory for full buffer, including space for trailing EOB's. */
+       n = len + 2;
+       buf = (char *) yy_flex_alloc( n );
+       if ( ! buf )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+       for ( i = 0; i < len; ++i )
+               buf[i] = bytes[i];
+
+       buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+       b = yy_scan_buffer( buf, n );
+       if ( ! b )
+               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+       /* It's okay to grow etc. this buffer, and we should throw it
+        * away when we're done.
+        */
+       b->yy_is_our_buffer = 1;
+
+       return b;
+       }
+#endif
+
+
+#ifndef YY_NO_PUSH_STATE
+#ifdef YY_USE_PROTOS
+static void yy_push_state( int new_state )
+#else
+static void yy_push_state( new_state )
+int new_state;
+#endif
+       {
+       if ( yy_start_stack_ptr >= yy_start_stack_depth )
+               {
+               yy_size_t new_size;
+
+               yy_start_stack_depth += YY_START_STACK_INCR;
+               new_size = yy_start_stack_depth * sizeof( int );
+
+               if ( ! yy_start_stack )
+                       yy_start_stack = (int *) yy_flex_alloc( new_size );
+
+               else
+                       yy_start_stack = (int *) yy_flex_realloc(
+                                       (void *) yy_start_stack, new_size );
+
+               if ( ! yy_start_stack )
+                       YY_FATAL_ERROR(
+                       "out of memory expanding start-condition stack" );
+               }
+
+       yy_start_stack[yy_start_stack_ptr++] = YY_START;
+
+       BEGIN(new_state);
+       }
+#endif
+
+
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state()
+       {
+       if ( --yy_start_stack_ptr < 0 )
+               YY_FATAL_ERROR( "start-condition stack underflow" );
+
+       BEGIN(yy_start_stack[yy_start_stack_ptr]);
+       }
+#endif
+
+
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state()
+       {
+       return yy_start_stack[yy_start_stack_ptr - 1];
+       }
+#endif
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+#ifdef YY_USE_PROTOS
+static void yy_fatal_error( yyconst char msg[] )
+#else
+static void yy_fatal_error( msg )
+char msg[];
+#endif
+       {
+       (void) fprintf( stderr, "%s\n", msg );
+       exit( YY_EXIT_FAILURE );
+       }
+
+
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+       do \
+               { \
+               /* Undo effects of setting up yytext. */ \
+               yytext[yyleng] = yy_hold_char; \
+               yy_c_buf_p = yytext + n; \
+               yy_hold_char = *yy_c_buf_p; \
+               *yy_c_buf_p = '\0'; \
+               yyleng = n; \
+               } \
+       while ( 0 )
+
+
+/* Internal utility routines. */
+
+#ifndef yytext_ptr
+#ifdef YY_USE_PROTOS
+static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
+#else
+static void yy_flex_strncpy( s1, s2, n )
+char *s1;
+yyconst char *s2;
+int n;
+#endif
+       {
+       register int i;
+       for ( i = 0; i < n; ++i )
+               s1[i] = s2[i];
+       }
+#endif
+
+#ifdef YY_NEED_STRLEN
+#ifdef YY_USE_PROTOS
+static int yy_flex_strlen( yyconst char *s )
+#else
+static int yy_flex_strlen( s )
+yyconst char *s;
+#endif
+       {
+       register int n;
+       for ( n = 0; s[n]; ++n )
+               ;
+
+       return n;
+       }
+#endif
+
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_alloc( yy_size_t size )
+#else
+static void *yy_flex_alloc( size )
+yy_size_t size;
+#endif
+       {
+       return (void *) malloc( size );
+       }
+
+#ifdef YY_USE_PROTOS
+static inline void *yy_flex_realloc( void *ptr, yy_size_t size )
+#else
+static inline void *yy_flex_realloc( ptr, size )
+void *ptr;
+yy_size_t size;
+#endif
+       {
+       /* The cast to (char *) in the following accommodates both
+        * implementations that use char* generic pointers, and those
+        * that use void* generic pointers.  It works with the latter
+        * because both ANSI C and C++ allow castless assignment from
+        * any pointer type to void*, and deal with argument conversions
+        * as though doing an assignment.
+        */
+       return (void *) realloc( (char *) ptr, size );
+       }
+
+#ifdef YY_USE_PROTOS
+static void yy_flex_free( void *ptr )
+#else
+static void yy_flex_free( ptr )
+void *ptr;
+#endif
+       {
+       free( ptr );
+       }
+
+#if YY_MAIN
+int main()
+       {
+       yylex();
+       return 0;
+       }
+#endif
+#line 229 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeLexer.l"
+
diff --git a/tools/llvm-upgrade/UpgradeLexer.l b/tools/llvm-upgrade/UpgradeLexer.l
new file mode 100644 (file)
index 0000000..3d4dde3
--- /dev/null
@@ -0,0 +1,229 @@
+/*===-- UpgradeLexer.l - Scanner for 1.9 assembly files --------*- C++ -*--===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by Reid Spencer and is distributed under the 
+// University of Illinois Open Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+//  This file implements the flex scanner for LLVM 1.9 assembly languages files.
+//
+//===----------------------------------------------------------------------===*/
+
+%option prefix="Upgrade"
+%option yylineno
+%option nostdinit
+%option never-interactive
+%option batch
+%option noyywrap
+%option nodefault
+%option 8bit
+%option outfile="UpgradeLexer.cpp"
+%option ecs
+%option noreject
+%option noyymore
+
+%{
+
+#include "ParserInternals.h"
+#define YYSTYPE std::string*
+#include "UpgradeParser.h"
+#include <cctype>
+#include <cstdlib>
+
+void set_scan_bytes (const char * str, size_t len) {
+  Upgrade_scan_bytes (str, len);
+}
+
+static void trim(std::string& str) {
+  size_t startpos = str.find_first_not_of(" \t\n\r",0);
+  if (startpos != std::string::npos)
+    str.erase(0,startpos);
+}
+
+// Construct a token value for a non-obsolete token
+#define RET_TOK(sym) \
+  Upgradelval = new std::string(yytext); \
+  trim(*Upgradelval); \
+  return sym
+
+#define YY_NEVER_INTERACTIVE 1
+%}
+
+
+
+/* Comments start with a ; and go till end of line */
+Comment    ;.*
+
+/* Variable(Value) identifiers start with a % sign */
+VarID       %[-a-zA-Z$._][-a-zA-Z$._0-9]*
+
+/* Label identifiers end with a colon */
+Label       [-a-zA-Z$._0-9]+:
+QuoteLabel \"[^\"]+\":
+
+/* Quoted names can contain any character except " and \ */
+StringConstant \"[^\"]*\"
+
+
+/* [PN]Integer: match positive and negative literal integer values that
+ * are preceeded by a '%' character.  These represent unnamed variable slots.
+ */
+EPInteger     %[0-9]+
+ENInteger    %-[0-9]+
+
+
+/* E[PN]Integer: match positive and negative literal integer values */
+PInteger   [0-9]+
+NInteger  -[0-9]+
+
+/* FPConstant - A Floating point constant.
+ */
+FPConstant [-+]?[0-9]+[.][0-9]*([eE][-+]?[0-9]+)?
+
+/* HexFPConstant - Floating point constant represented in IEEE format as a
+ *  hexadecimal number for when exponential notation is not precise enough.
+ */
+HexFPConstant 0x[0-9A-Fa-f]+
+
+/* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing
+ * it to deal with 64 bit numbers.
+ */
+HexIntConstant [us]0x[0-9A-Fa-f]+
+%%
+
+{Comment}       { /* Ignore comments for now */ }
+
+begin           { RET_TOK( BEGINTOK); }
+end             { RET_TOK( ENDTOK); }
+true            { RET_TOK( TRUETOK);  }
+false           { RET_TOK( FALSETOK); }
+declare         { RET_TOK( DECLARE); }
+global          { RET_TOK( GLOBAL); }
+constant        { RET_TOK( CONSTANT); }
+internal        { RET_TOK( INTERNAL); }
+linkonce        { RET_TOK( LINKONCE); }
+weak            { RET_TOK( WEAK); }
+appending       { RET_TOK( APPENDING); }
+dllimport       { RET_TOK( DLLIMPORT); }
+dllexport       { RET_TOK( DLLEXPORT); }
+extern_weak     { RET_TOK( EXTERN_WEAK); }
+external        { RET_TOK( EXTERNAL); }
+implementation  { RET_TOK( IMPLEMENTATION); }
+zeroinitializer { RET_TOK( ZEROINITIALIZER); }
+\.\.\.          { RET_TOK( DOTDOTDOT); }
+undef           { RET_TOK( UNDEF); }
+null            { RET_TOK( NULL_TOK); }
+to              { RET_TOK( TO); }
+tail            { RET_TOK( TAIL); }
+target          { RET_TOK( TARGET); }
+triple          { RET_TOK( TRIPLE); }
+deplibs         { RET_TOK( DEPLIBS); }
+endian          { RET_TOK( ENDIAN); }
+pointersize     { RET_TOK( POINTERSIZE); }
+datalayout      { RET_TOK( DATALAYOUT); }
+little          { RET_TOK( LITTLE); }
+big             { RET_TOK( BIG); }
+volatile        { RET_TOK( VOLATILE); }
+align           { RET_TOK( ALIGN);  }
+section         { RET_TOK( SECTION); }
+module          { RET_TOK( MODULE); }
+asm             { RET_TOK( ASM_TOK); }
+sideeffect      { RET_TOK( SIDEEFFECT); }
+
+cc              { RET_TOK( CC_TOK); }
+ccc             { RET_TOK( CCC_TOK); }
+csretcc         { RET_TOK( CSRETCC_TOK); }
+fastcc          { RET_TOK( FASTCC_TOK); }
+coldcc          { RET_TOK( COLDCC_TOK); }
+x86_stdcallcc   { RET_TOK( X86_STDCALLCC_TOK); }
+x86_fastcallcc  { RET_TOK( X86_FASTCALLCC_TOK); }
+
+void            { RET_TOK( VOID); }
+bool            { RET_TOK( BOOL); }
+sbyte           { RET_TOK( SBYTE); }
+ubyte           { RET_TOK( UBYTE); }
+short           { RET_TOK( SHORT); }
+ushort          { RET_TOK( USHORT); }
+int             { RET_TOK( INT);   }
+uint            { RET_TOK( UINT);  }
+long            { RET_TOK( LONG);  }
+ulong           { RET_TOK( ULONG); }
+float           { RET_TOK( FLOAT); }
+double          { RET_TOK( DOUBLE); }
+label           { RET_TOK( LABEL); }
+type            { RET_TOK( TYPE);   }
+opaque          { RET_TOK( OPAQUE); }
+
+add             { RET_TOK( ADD); }
+sub             { RET_TOK( SUB); }
+mul             { RET_TOK( MUL); }
+div             { RET_TOK( UDIV); }
+udiv            { RET_TOK( UDIV); }
+sdiv            { RET_TOK( SDIV); }
+fdiv            { RET_TOK( FDIV); }
+rem             { RET_TOK( UREM); }
+urem            { RET_TOK( UREM); }
+srem            { RET_TOK( SREM); }
+frem            { RET_TOK( FREM); }
+and             { RET_TOK( AND); }
+or              { RET_TOK( OR); }
+xor             { RET_TOK( XOR); }
+setne           { RET_TOK( SETNE); }
+seteq           { RET_TOK( SETEQ); }
+setlt           { RET_TOK( SETLT); }
+setgt           { RET_TOK( SETGT); }
+setle           { RET_TOK( SETLE); }
+setge           { RET_TOK( SETGE); }
+
+phi             { RET_TOK( PHI_TOK); }
+call            { RET_TOK( CALL); }
+cast            { RET_TOK( TRUNC); }
+select          { RET_TOK( SELECT); }
+shl             { RET_TOK( SHL); }
+lshr            { RET_TOK( LSHR); }
+ashr            { RET_TOK( ASHR); }
+va_arg          { RET_TOK( VAARG); }
+ret             { RET_TOK( RET); }
+br              { RET_TOK( BR); }
+switch          { RET_TOK( SWITCH); }
+invoke          { RET_TOK( INVOKE); }
+unwind          { RET_TOK( UNWIND); }
+unreachable     { RET_TOK( UNREACHABLE); }
+
+malloc          { RET_TOK( MALLOC); }
+alloca          { RET_TOK( ALLOCA); }
+free            { RET_TOK( FREE); }
+load            { RET_TOK( LOAD); }
+store           { RET_TOK( STORE); }
+getelementptr   { RET_TOK( GETELEMENTPTR); }
+
+extractelement  { RET_TOK( EXTRACTELEMENT); }
+insertelement   { RET_TOK( INSERTELEMENT); }
+shufflevector   { RET_TOK( SHUFFLEVECTOR); }
+
+
+{VarID}          { RET_TOK( VAR_ID); }
+{Label}          { RET_TOK( LABELSTR); }
+{QuoteLabel}     { RET_TOK( LABELSTR); }
+{StringConstant} { RET_TOK( STRINGCONSTANT ); }
+{PInteger}       { RET_TOK( EUINT64VAL ); }
+{NInteger}       { RET_TOK( ESINT64VAL ); }
+{HexIntConstant} { RET_TOK( yytext[0] == 's' ? ESINT64VAL : EUINT64VAL ); }
+{EPInteger}      { RET_TOK( UINTVAL); }
+{ENInteger}      { RET_TOK( SINTVAL); }
+{FPConstant}     { RET_TOK( FPVAL); }
+{HexFPConstant}  { RET_TOK( FPVAL); }
+<<EOF>>          {
+                  /* Make sure to free the internal buffers for flex when we are
+                   * done reading our input!
+                   */
+                  yy_delete_buffer(YY_CURRENT_BUFFER);
+                  return EOF;
+                }
+
+[ \r\t\n]       { /* Ignore whitespace */ }
+.               { return yytext[0]; }
+
+%%
diff --git a/tools/llvm-upgrade/UpgradeLexer.l.cvs b/tools/llvm-upgrade/UpgradeLexer.l.cvs
new file mode 100644 (file)
index 0000000..08dfd8f
--- /dev/null
@@ -0,0 +1,229 @@
+/*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by the LLVM research group and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+//  This file implements the flex scanner for LLVM assembly languages files.
+//
+//===----------------------------------------------------------------------===*/
+
+%option prefix="Upgrade"
+%option yylineno
+%option nostdinit
+%option never-interactive
+%option batch
+%option noyywrap
+%option nodefault
+%option 8bit
+%option outfile="UpgradeLexer.cpp"
+%option ecs
+%option noreject
+%option noyymore
+
+%{
+
+#include "ParserInternals.h"
+#define YYSTYPE std::string*
+#include "UpgradeParser.h"
+#include <cctype>
+#include <cstdlib>
+
+void set_scan_bytes (const char * str, size_t len) {
+  Upgrade_scan_bytes (str, len);
+}
+
+static void trim(std::string& str) {
+  size_t startpos = str.find_first_not_of(" \t\n\r",0);
+  if (startpos != std::string::npos)
+    str.erase(0,startpos);
+}
+
+// Construct a token value for a non-obsolete token
+#define RET_TOK(sym) \
+  Upgradelval = new std::string(yytext); \
+  trim(*Upgradelval); \
+  return sym
+
+#define YY_NEVER_INTERACTIVE 1
+%}
+
+
+
+/* Comments start with a ; and go till end of line */
+Comment    ;.*
+
+/* Variable(Value) identifiers start with a % sign */
+VarID       %[-a-zA-Z$._][-a-zA-Z$._0-9]*
+
+/* Label identifiers end with a colon */
+Label       [-a-zA-Z$._0-9]+:
+QuoteLabel \"[^\"]+\":
+
+/* Quoted names can contain any character except " and \ */
+StringConstant \"[^\"]*\"
+
+
+/* [PN]Integer: match positive and negative literal integer values that
+ * are preceeded by a '%' character.  These represent unnamed variable slots.
+ */
+EPInteger     %[0-9]+
+ENInteger    %-[0-9]+
+
+
+/* E[PN]Integer: match positive and negative literal integer values */
+PInteger   [0-9]+
+NInteger  -[0-9]+
+
+/* FPConstant - A Floating point constant.
+ */
+FPConstant [-+]?[0-9]+[.][0-9]*([eE][-+]?[0-9]+)?
+
+/* HexFPConstant - Floating point constant represented in IEEE format as a
+ *  hexadecimal number for when exponential notation is not precise enough.
+ */
+HexFPConstant 0x[0-9A-Fa-f]+
+
+/* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing
+ * it to deal with 64 bit numbers.
+ */
+HexIntConstant [us]0x[0-9A-Fa-f]+
+%%
+
+{Comment}       { /* Ignore comments for now */ }
+
+begin           { RET_TOK( BEGINTOK); }
+end             { RET_TOK( ENDTOK); }
+true            { RET_TOK( TRUETOK);  }
+false           { RET_TOK( FALSETOK); }
+declare         { RET_TOK( DECLARE); }
+global          { RET_TOK( GLOBAL); }
+constant        { RET_TOK( CONSTANT); }
+internal        { RET_TOK( INTERNAL); }
+linkonce        { RET_TOK( LINKONCE); }
+weak            { RET_TOK( WEAK); }
+appending       { RET_TOK( APPENDING); }
+dllimport       { RET_TOK( DLLIMPORT); }
+dllexport       { RET_TOK( DLLEXPORT); }
+extern_weak     { RET_TOK( EXTERN_WEAK); }
+external        { RET_TOK( EXTERNAL); }
+implementation  { RET_TOK( IMPLEMENTATION); }
+zeroinitializer { RET_TOK( ZEROINITIALIZER); }
+\.\.\.          { RET_TOK( DOTDOTDOT); }
+undef           { RET_TOK( UNDEF); }
+null            { RET_TOK( NULL_TOK); }
+to              { RET_TOK( TO); }
+tail            { RET_TOK( TAIL); }
+target          { RET_TOK( TARGET); }
+triple          { RET_TOK( TRIPLE); }
+deplibs         { RET_TOK( DEPLIBS); }
+endian          { RET_TOK( ENDIAN); }
+pointersize     { RET_TOK( POINTERSIZE); }
+datalayout      { RET_TOK( DATALAYOUT); }
+little          { RET_TOK( LITTLE); }
+big             { RET_TOK( BIG); }
+volatile        { RET_TOK( VOLATILE); }
+align           { RET_TOK( ALIGN);  }
+section         { RET_TOK( SECTION); }
+module          { RET_TOK( MODULE); }
+asm             { RET_TOK( ASM_TOK); }
+sideeffect      { RET_TOK( SIDEEFFECT); }
+
+cc              { RET_TOK( CC_TOK); }
+ccc             { RET_TOK( CCC_TOK); }
+csretcc         { RET_TOK( CSRETCC_TOK); }
+fastcc          { RET_TOK( FASTCC_TOK); }
+coldcc          { RET_TOK( COLDCC_TOK); }
+x86_stdcallcc   { RET_TOK( X86_STDCALLCC_TOK); }
+x86_fastcallcc  { RET_TOK( X86_FASTCALLCC_TOK); }
+
+void            { RET_TOK( VOID); }
+bool            { RET_TOK( BOOL); }
+sbyte           { RET_TOK( SBYTE); }
+ubyte           { RET_TOK( UBYTE); }
+short           { RET_TOK( SHORT); }
+ushort          { RET_TOK( USHORT); }
+int             { RET_TOK( INT);   }
+uint            { RET_TOK( UINT);  }
+long            { RET_TOK( LONG);  }
+ulong           { RET_TOK( ULONG); }
+float           { RET_TOK( FLOAT); }
+double          { RET_TOK( DOUBLE); }
+label           { RET_TOK( LABEL); }
+type            { RET_TOK( TYPE);   }
+opaque          { RET_TOK( OPAQUE); }
+
+add             { RET_TOK( ADD); }
+sub             { RET_TOK( SUB); }
+mul             { RET_TOK( MUL); }
+div             { RET_TOK( UDIV); }
+udiv            { RET_TOK( UDIV); }
+sdiv            { RET_TOK( SDIV); }
+fdiv            { RET_TOK( FDIV); }
+rem             { RET_TOK( UREM); }
+urem            { RET_TOK( UREM); }
+srem            { RET_TOK( SREM); }
+frem            { RET_TOK( FREM); }
+and             { RET_TOK( AND); }
+or              { RET_TOK( OR); }
+xor             { RET_TOK( XOR); }
+setne           { RET_TOK( SETNE); }
+seteq           { RET_TOK( SETEQ); }
+setlt           { RET_TOK( SETLT); }
+setgt           { RET_TOK( SETGT); }
+setle           { RET_TOK( SETLE); }
+setge           { RET_TOK( SETGE); }
+
+phi             { RET_TOK( PHI_TOK); }
+call            { RET_TOK( CALL); }
+cast            { RET_TOK( TRUNC); }
+select          { RET_TOK( SELECT); }
+shl             { RET_TOK( SHL); }
+lshr            { RET_TOK( LSHR); }
+ashr            { RET_TOK( ASHR); }
+va_arg          { RET_TOK( VAARG); }
+ret             { RET_TOK( RET); }
+br              { RET_TOK( BR); }
+switch          { RET_TOK( SWITCH); }
+invoke          { RET_TOK( INVOKE); }
+unwind          { RET_TOK( UNWIND); }
+unreachable     { RET_TOK( UNREACHABLE); }
+
+malloc          { RET_TOK( MALLOC); }
+alloca          { RET_TOK( ALLOCA); }
+free            { RET_TOK( FREE); }
+load            { RET_TOK( LOAD); }
+store           { RET_TOK( STORE); }
+getelementptr   { RET_TOK( GETELEMENTPTR); }
+
+extractelement  { RET_TOK( EXTRACTELEMENT); }
+insertelement   { RET_TOK( INSERTELEMENT); }
+shufflevector   { RET_TOK( SHUFFLEVECTOR); }
+
+
+{VarID}          { RET_TOK( VAR_ID); }
+{Label}          { RET_TOK( LABELSTR); }
+{QuoteLabel}     { RET_TOK( LABELSTR); }
+{StringConstant} { RET_TOK( STRINGCONSTANT ); }
+{PInteger}       { RET_TOK( EUINT64VAL ); }
+{NInteger}       { RET_TOK( ESINT64VAL ); }
+{HexIntConstant} { RET_TOK( yytext[0] == 's' ? ESINT64VAL : EUINT64VAL ); }
+{EPInteger}      { RET_TOK( UINTVAL); }
+{ENInteger}      { RET_TOK( SINTVAL); }
+{FPConstant}     { RET_TOK( FPVAL); }
+{HexFPConstant}  { RET_TOK( FPVAL); }
+<<EOF>>          {
+                  /* Make sure to free the internal buffers for flex when we are
+                   * done reading our input!
+                   */
+                  yy_delete_buffer(YY_CURRENT_BUFFER);
+                  return EOF;
+                }
+
+[ \r\t\n]       { /* Ignore whitespace */ }
+.               { return yytext[0]; }
+
+%%
diff --git a/tools/llvm-upgrade/UpgradeParser.cpp b/tools/llvm-upgrade/UpgradeParser.cpp
new file mode 100644 (file)
index 0000000..30393d7
--- /dev/null
@@ -0,0 +1,3489 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+/* Substitute the variable and function names.  */
+#define yyparse Upgradeparse
+#define yylex   Upgradelex
+#define yyerror Upgradeerror
+#define yylval  Upgradelval
+#define yychar  Upgradechar
+#define yydebug Upgradedebug
+#define yynerrs Upgradenerrs
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     ESINT64VAL = 258,
+     EUINT64VAL = 259,
+     SINTVAL = 260,
+     UINTVAL = 261,
+     FPVAL = 262,
+     VOID = 263,
+     BOOL = 264,
+     SBYTE = 265,
+     UBYTE = 266,
+     SHORT = 267,
+     USHORT = 268,
+     INT = 269,
+     UINT = 270,
+     LONG = 271,
+     ULONG = 272,
+     FLOAT = 273,
+     DOUBLE = 274,
+     TYPE = 275,
+     LABEL = 276,
+     VAR_ID = 277,
+     LABELSTR = 278,
+     STRINGCONSTANT = 279,
+     IMPLEMENTATION = 280,
+     ZEROINITIALIZER = 281,
+     TRUETOK = 282,
+     FALSETOK = 283,
+     BEGINTOK = 284,
+     ENDTOK = 285,
+     DECLARE = 286,
+     GLOBAL = 287,
+     CONSTANT = 288,
+     SECTION = 289,
+     VOLATILE = 290,
+     TO = 291,
+     DOTDOTDOT = 292,
+     NULL_TOK = 293,
+     UNDEF = 294,
+     CONST = 295,
+     INTERNAL = 296,
+     LINKONCE = 297,
+     WEAK = 298,
+     APPENDING = 299,
+     DLLIMPORT = 300,
+     DLLEXPORT = 301,
+     EXTERN_WEAK = 302,
+     OPAQUE = 303,
+     NOT = 304,
+     EXTERNAL = 305,
+     TARGET = 306,
+     TRIPLE = 307,
+     ENDIAN = 308,
+     POINTERSIZE = 309,
+     LITTLE = 310,
+     BIG = 311,
+     ALIGN = 312,
+     DEPLIBS = 313,
+     CALL = 314,
+     TAIL = 315,
+     ASM_TOK = 316,
+     MODULE = 317,
+     SIDEEFFECT = 318,
+     CC_TOK = 319,
+     CCC_TOK = 320,
+     CSRETCC_TOK = 321,
+     FASTCC_TOK = 322,
+     COLDCC_TOK = 323,
+     X86_STDCALLCC_TOK = 324,
+     X86_FASTCALLCC_TOK = 325,
+     DATALAYOUT = 326,
+     RET = 327,
+     BR = 328,
+     SWITCH = 329,
+     INVOKE = 330,
+     UNWIND = 331,
+     UNREACHABLE = 332,
+     ADD = 333,
+     SUB = 334,
+     MUL = 335,
+     UDIV = 336,
+     SDIV = 337,
+     FDIV = 338,
+     UREM = 339,
+     SREM = 340,
+     FREM = 341,
+     AND = 342,
+     OR = 343,
+     XOR = 344,
+     SETLE = 345,
+     SETGE = 346,
+     SETLT = 347,
+     SETGT = 348,
+     SETEQ = 349,
+     SETNE = 350,
+     MALLOC = 351,
+     ALLOCA = 352,
+     FREE = 353,
+     LOAD = 354,
+     STORE = 355,
+     GETELEMENTPTR = 356,
+     TRUNC = 357,
+     ZEXT = 358,
+     SEXT = 359,
+     FPTRUNC = 360,
+     FPEXT = 361,
+     BITCAST = 362,
+     UITOFP = 363,
+     SITOFP = 364,
+     FPTOUI = 365,
+     FPTOSI = 366,
+     INTTOPTR = 367,
+     PTRTOINT = 368,
+     PHI_TOK = 369,
+     SELECT = 370,
+     SHL = 371,
+     LSHR = 372,
+     ASHR = 373,
+     VAARG = 374,
+     EXTRACTELEMENT = 375,
+     INSERTELEMENT = 376,
+     SHUFFLEVECTOR = 377,
+     CAST = 378
+   };
+#endif
+/* Tokens.  */
+#define ESINT64VAL 258
+#define EUINT64VAL 259
+#define SINTVAL 260
+#define UINTVAL 261
+#define FPVAL 262
+#define VOID 263
+#define BOOL 264
+#define SBYTE 265
+#define UBYTE 266
+#define SHORT 267
+#define USHORT 268
+#define INT 269
+#define UINT 270
+#define LONG 271
+#define ULONG 272
+#define FLOAT 273
+#define DOUBLE 274
+#define TYPE 275
+#define LABEL 276
+#define VAR_ID 277
+#define LABELSTR 278
+#define STRINGCONSTANT 279
+#define IMPLEMENTATION 280
+#define ZEROINITIALIZER 281
+#define TRUETOK 282
+#define FALSETOK 283
+#define BEGINTOK 284
+#define ENDTOK 285
+#define DECLARE 286
+#define GLOBAL 287
+#define CONSTANT 288
+#define SECTION 289
+#define VOLATILE 290
+#define TO 291
+#define DOTDOTDOT 292
+#define NULL_TOK 293
+#define UNDEF 294
+#define CONST 295
+#define INTERNAL 296
+#define LINKONCE 297
+#define WEAK 298
+#define APPENDING 299
+#define DLLIMPORT 300
+#define DLLEXPORT 301
+#define EXTERN_WEAK 302
+#define OPAQUE 303
+#define NOT 304
+#define EXTERNAL 305
+#define TARGET 306
+#define TRIPLE 307
+#define ENDIAN 308
+#define POINTERSIZE 309
+#define LITTLE 310
+#define BIG 311
+#define ALIGN 312
+#define DEPLIBS 313
+#define CALL 314
+#define TAIL 315
+#define ASM_TOK 316
+#define MODULE 317
+#define SIDEEFFECT 318
+#define CC_TOK 319
+#define CCC_TOK 320
+#define CSRETCC_TOK 321
+#define FASTCC_TOK 322
+#define COLDCC_TOK 323
+#define X86_STDCALLCC_TOK 324
+#define X86_FASTCALLCC_TOK 325
+#define DATALAYOUT 326
+#define RET 327
+#define BR 328
+#define SWITCH 329
+#define INVOKE 330
+#define UNWIND 331
+#define UNREACHABLE 332
+#define ADD 333
+#define SUB 334
+#define MUL 335
+#define UDIV 336
+#define SDIV 337
+#define FDIV 338
+#define UREM 339
+#define SREM 340
+#define FREM 341
+#define AND 342
+#define OR 343
+#define XOR 344
+#define SETLE 345
+#define SETGE 346
+#define SETLT 347
+#define SETGT 348
+#define SETEQ 349
+#define SETNE 350
+#define MALLOC 351
+#define ALLOCA 352
+#define FREE 353
+#define LOAD 354
+#define STORE 355
+#define GETELEMENTPTR 356
+#define TRUNC 357
+#define ZEXT 358
+#define SEXT 359
+#define FPTRUNC 360
+#define FPEXT 361
+#define BITCAST 362
+#define UITOFP 363
+#define SITOFP 364
+#define FPTOUI 365
+#define FPTOSI 366
+#define INTTOPTR 367
+#define PTRTOINT 368
+#define PHI_TOK 369
+#define SELECT 370
+#define SHL 371
+#define LSHR 372
+#define ASHR 373
+#define VAARG 374
+#define EXTRACTELEMENT 375
+#define INSERTELEMENT 376
+#define SHUFFLEVECTOR 377
+#define CAST 378
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 14 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+
+#define YYERROR_VERBOSE 1
+#define YYSTYPE std::string*
+
+#include "ParserInternals.h"
+#include <llvm/ADT/StringExtras.h>
+#include <llvm/System/MappedFile.h>
+#include <algorithm>
+#include <list>
+#include <utility>
+#include <iostream>
+
+
+int yylex();                       // declaration" of xxx warnings.
+int yyparse();
+
+static std::string CurFilename;
+
+static std::ostream *O = 0;
+
+void UpgradeAssembly(const std::string &infile, std::ostream &out)
+{
+  Upgradelineno = 1; 
+  CurFilename = infile;
+  llvm::sys::Path p(infile);
+  llvm::sys::MappedFile mf;
+  mf.open(p);
+  mf.map();
+  const char* base = mf.charBase();
+  size_t sz = mf.size();
+
+  set_scan_bytes(base, sz);
+
+  O = &out;
+
+  if (yyparse()) {
+    std::cerr << "Parse failed.\n";
+    exit(1);
+  }
+}
+
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+typedef int YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 219 of yacc.c.  */
+#line 393 "UpgradeParser.tab.c"
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#ifndef YY_
+# if YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if defined (__STDC__) || defined (__cplusplus)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     define YYINCLUDED_STDLIB_H
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+#  endif
+#  ifdef __cplusplus
+extern "C" {
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+       && (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+       && (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifdef __cplusplus
+}
+#  endif
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+        || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short int yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))                    \
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined (__GNUC__) && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)             \
+      do                                       \
+       {                                       \
+         YYSIZE_T yyi;                         \
+         for (yyi = 0; yyi < (Count); yyi++)   \
+           (To)[yyi] = (From)[yyi];            \
+       }                                       \
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)                                       \
+    do                                                                 \
+      {                                                                        \
+       YYSIZE_T yynewbytes;                                            \
+       YYCOPY (&yyptr->Stack, Stack, yysize);                          \
+       Stack = &yyptr->Stack;                                          \
+       yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+       yyptr += yynewbytes / sizeof (*yyptr);                          \
+      }                                                                        \
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  4
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   1246
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  138
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  71
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  251
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  510
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   378
+
+#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,
+     127,   128,   136,     2,   125,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     132,   124,   133,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,   129,   126,   131,     2,     2,     2,     2,     2,   137,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     130,     2,     2,   134,     2,   135,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned short int yyprhs[] =
+{
+       0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
+      19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
+      39,    41,    43,    45,    47,    49,    51,    53,    55,    57,
+      59,    61,    63,    65,    67,    69,    71,    73,    75,    77,
+      79,    82,    83,    85,    87,    89,    91,    93,    95,    97,
+      98,   100,   102,   104,   106,   108,   110,   113,   114,   115,
+     118,   119,   123,   126,   127,   129,   130,   134,   136,   139,
+     141,   143,   145,   147,   149,   151,   153,   155,   157,   159,
+     161,   163,   165,   167,   169,   171,   173,   175,   177,   179,
+     181,   184,   189,   195,   201,   205,   208,   211,   213,   217,
+     219,   223,   225,   226,   231,   235,   239,   244,   249,   253,
+     256,   259,   262,   265,   268,   271,   274,   277,   280,   283,
+     290,   296,   305,   312,   319,   326,   333,   340,   349,   358,
+     362,   364,   366,   368,   370,   373,   376,   381,   384,   386,
+     391,   394,   399,   406,   413,   420,   427,   431,   436,   437,
+     439,   441,   443,   447,   451,   455,   459,   463,   467,   469,
+     470,   472,   474,   476,   477,   480,   484,   486,   488,   492,
+     494,   495,   504,   506,   508,   512,   514,   516,   520,   521,
+     523,   525,   529,   530,   532,   534,   536,   538,   540,   542,
+     544,   546,   548,   552,   554,   560,   562,   564,   566,   568,
+     571,   574,   576,   580,   583,   584,   586,   589,   592,   596,
+     606,   616,   625,   639,   641,   643,   650,   656,   659,   666,
+     674,   676,   680,   682,   683,   686,   688,   694,   700,   706,
+     709,   714,   719,   726,   731,   736,   743,   750,   753,   761,
+     763,   766,   767,   769,   770,   774,   781,   785,   792,   795,
+     800,   807
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short int yyrhs[] =
+{
+     170,     0,    -1,     5,    -1,     6,    -1,     3,    -1,     4,
+      -1,    78,    -1,    79,    -1,    80,    -1,    81,    -1,    82,
+      -1,    83,    -1,    84,    -1,    85,    -1,    86,    -1,    87,
+      -1,    88,    -1,    89,    -1,    90,    -1,    91,    -1,    92,
+      -1,    93,    -1,    94,    -1,    95,    -1,   123,    -1,   116,
+      -1,   117,    -1,   118,    -1,    16,    -1,    14,    -1,    12,
+      -1,    10,    -1,    17,    -1,    15,    -1,    13,    -1,    11,
+      -1,   146,    -1,   147,    -1,    18,    -1,    19,    -1,   178,
+     124,    -1,    -1,    41,    -1,    42,    -1,    43,    -1,    44,
+      -1,    45,    -1,    46,    -1,    47,    -1,    -1,    65,    -1,
+      66,    -1,    67,    -1,    68,    -1,    69,    -1,    70,    -1,
+      64,     4,    -1,    -1,    -1,    57,     4,    -1,    -1,   125,
+      57,     4,    -1,    34,    24,    -1,    -1,   155,    -1,    -1,
+     125,   158,   157,    -1,   155,    -1,    57,     4,    -1,   161,
+      -1,     8,    -1,   163,    -1,     8,    -1,   163,    -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,    48,    -1,   162,    -1,   192,
+      -1,   126,     4,    -1,   160,   127,   165,   128,    -1,   129,
+       4,   130,   163,   131,    -1,   132,     4,   130,   163,   133,
+      -1,   134,   164,   135,    -1,   134,   135,    -1,   163,   136,
+      -1,   163,    -1,   164,   125,   163,    -1,   164,    -1,   164,
+     125,    37,    -1,    37,    -1,    -1,   161,   129,   168,   131,
+      -1,   161,   129,   131,    -1,   161,   137,    24,    -1,   161,
+     132,   168,   133,    -1,   161,   134,   168,   135,    -1,   161,
+     134,   135,    -1,   161,    38,    -1,   161,    39,    -1,   161,
+     192,    -1,   161,   167,    -1,   161,    26,    -1,   146,   140,
+      -1,   147,     4,    -1,     9,    27,    -1,     9,    28,    -1,
+     149,     7,    -1,   144,   127,   166,    36,   161,   128,    -1,
+     101,   127,   166,   206,   128,    -1,   115,   127,   166,   125,
+     166,   125,   166,   128,    -1,   141,   127,   166,   125,   166,
+     128,    -1,   142,   127,   166,   125,   166,   128,    -1,   143,
+     127,   166,   125,   166,   128,    -1,   145,   127,   166,   125,
+     166,   128,    -1,   120,   127,   166,   125,   166,   128,    -1,
+     121,   127,   166,   125,   166,   125,   166,   128,    -1,   122,
+     127,   166,   125,   166,   125,   166,   128,    -1,   168,   125,
+     166,    -1,   166,    -1,    32,    -1,    33,    -1,   171,    -1,
+     171,   187,    -1,   171,   189,    -1,   171,    62,    61,   173,
+      -1,   171,    25,    -1,   172,    -1,   172,   150,    20,   159,
+      -1,   172,   189,    -1,   172,    62,    61,   173,    -1,   172,
+     150,   151,   169,   166,   157,    -1,   172,   150,    50,   169,
+     161,   157,    -1,   172,   150,    45,   169,   161,   157,    -1,
+     172,   150,    47,   169,   161,   157,    -1,   172,    51,   175,
+      -1,   172,    58,   124,   176,    -1,    -1,    24,    -1,    56,
+      -1,    55,    -1,    53,   124,   174,    -1,    54,   124,     4,
+      -1,    52,   124,    24,    -1,    71,   124,    24,    -1,   129,
+     177,   131,    -1,   177,   125,    24,    -1,    24,    -1,    -1,
+      22,    -1,    24,    -1,   178,    -1,    -1,   161,   179,    -1,
+     181,   125,   180,    -1,   180,    -1,   181,    -1,   181,   125,
+      37,    -1,    37,    -1,    -1,   152,   159,   178,   127,   182,
+     128,   156,   153,    -1,    29,    -1,   134,    -1,   151,   183,
+     184,    -1,    30,    -1,   135,    -1,   185,   195,   186,    -1,
+      -1,    45,    -1,    47,    -1,    31,   188,   183,    -1,    -1,
+      63,    -1,     3,    -1,     4,    -1,     7,    -1,    27,    -1,
+      28,    -1,    38,    -1,    39,    -1,    26,    -1,   132,   168,
+     133,    -1,   167,    -1,    61,   190,    24,   125,    24,    -1,
+     139,    -1,   178,    -1,   192,    -1,   191,    -1,   161,   193,
+      -1,   195,   196,    -1,   196,    -1,   197,   150,   198,    -1,
+     197,   200,    -1,    -1,    23,    -1,    72,   194,    -1,    72,
+       8,    -1,    73,    21,   193,    -1,    73,     9,   193,   125,
+      21,   193,   125,    21,   193,    -1,    74,   148,   193,   125,
+      21,   193,   129,   199,   131,    -1,    74,   148,   193,   125,
+      21,   193,   129,   131,    -1,    75,   152,   159,   193,   127,
+     203,   128,    36,    21,   193,    76,    21,   193,    -1,    76,
+      -1,    77,    -1,   199,   148,   191,   125,    21,   193,    -1,
+     148,   191,   125,    21,   193,    -1,   150,   205,    -1,   161,
+     129,   193,   125,   193,   131,    -1,   201,   125,   129,   193,
+     125,   193,   131,    -1,   194,    -1,   202,   125,   194,    -1,
+     202,    -1,    -1,    60,    59,    -1,    59,    -1,   141,   161,
+     193,   125,   193,    -1,   142,   161,   193,   125,   193,    -1,
+     143,   161,   193,   125,   193,    -1,    49,   194,    -1,   145,
+     194,   125,   194,    -1,   144,   194,    36,   161,    -1,   115,
+     194,   125,   194,   125,   194,    -1,   119,   194,   125,   161,
+      -1,   120,   194,   125,   194,    -1,   121,   194,   125,   194,
+     125,   194,    -1,   122,   194,   125,   194,   125,   194,    -1,
+     114,   201,    -1,   204,   152,   159,   193,   127,   203,   128,
+      -1,   208,    -1,   125,   202,    -1,    -1,    35,    -1,    -1,
+      96,   161,   154,    -1,    96,   161,   125,    15,   193,   154,
+      -1,    97,   161,   154,    -1,    97,   161,   125,    15,   193,
+     154,    -1,    98,   194,    -1,   207,    99,   161,   193,    -1,
+     207,   100,   194,   125,   161,   193,    -1,   101,   161,   193,
+     206,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short int yyrline[] =
+{
+       0,    89,    89,    89,    90,    90,    94,    94,    94,    94,
+      94,    94,    94,    94,    94,    95,    95,    95,    96,    96,
+      96,    96,    96,    96,    97,    98,    98,    98,   102,   102,
+     102,   102,   103,   103,   103,   103,   104,   104,   105,   105,
+     108,   112,   117,   117,   117,   117,   117,   117,   118,   119,
+     122,   122,   122,   122,   122,   123,   123,   124,   129,   130,
+     133,   134,   142,   148,   149,   152,   153,   162,   163,   176,
+     176,   177,   177,   178,   182,   182,   182,   182,   182,   182,
+     182,   183,   183,   183,   183,   183,   183,   184,   184,   184,
+     188,   192,   197,   203,   209,   214,   217,   225,   225,   232,
+     233,   238,   241,   251,   256,   259,   264,   269,   274,   277,
+     282,   287,   292,   297,   303,   308,   313,   318,   323,   330,
+     335,   337,   339,   341,   343,   345,   347,   349,   351,   356,
+     358,   363,   363,   373,   378,   381,   386,   389,   392,   396,
+     401,   406,   411,   416,   421,   426,   431,   436,   441,   446,
+     448,   448,   451,   456,   461,   466,   473,   480,   485,   486,
+     494,   494,   495,   495,   497,   503,   506,   510,   513,   517,
+     520,   524,   539,   542,   546,   555,   556,   558,   564,   565,
+     566,   570,   580,   582,   585,   585,   585,   585,   585,   586,
+     586,   586,   587,   592,   593,   602,   602,   605,   605,   611,
+     617,   619,   626,   630,   635,   638,   644,   649,   654,   659,
+     665,   671,   677,   686,   691,   697,   702,   709,   716,   721,
+     729,   730,   738,   739,   743,   748,   751,   756,   761,   766,
+     771,   776,   781,   786,   791,   796,   801,   806,   811,   820,
+     825,   829,   833,   834,   837,   844,   851,   858,   865,   870,
+     877,   884
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "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", "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK", "OPAQUE",
+  "NOT", "EXTERNAL", "TARGET", "TRIPLE", "ENDIAN", "POINTERSIZE", "LITTLE",
+  "BIG", "ALIGN", "DEPLIBS", "CALL", "TAIL", "ASM_TOK", "MODULE",
+  "SIDEEFFECT", "CC_TOK", "CCC_TOK", "CSRETCC_TOK", "FASTCC_TOK",
+  "COLDCC_TOK", "X86_STDCALLCC_TOK", "X86_FASTCALLCC_TOK", "DATALAYOUT",
+  "RET", "BR", "SWITCH", "INVOKE", "UNWIND", "UNREACHABLE", "ADD", "SUB",
+  "MUL", "UDIV", "SDIV", "FDIV", "UREM", "SREM", "FREM", "AND", "OR",
+  "XOR", "SETLE", "SETGE", "SETLT", "SETGT", "SETEQ", "SETNE", "MALLOC",
+  "ALLOCA", "FREE", "LOAD", "STORE", "GETELEMENTPTR", "TRUNC", "ZEXT",
+  "SEXT", "FPTRUNC", "FPEXT", "BITCAST", "UITOFP", "SITOFP", "FPTOUI",
+  "FPTOSI", "INTTOPTR", "PTRTOINT", "PHI_TOK", "SELECT", "SHL", "LSHR",
+  "ASHR", "VAARG", "EXTRACTELEMENT", "INSERTELEMENT", "SHUFFLEVECTOR",
+  "CAST", "'='", "','", "'\\\\'", "'('", "')'", "'['", "'x'", "']'", "'<'",
+  "'>'", "'{'", "'}'", "'*'", "'c'", "$accept", "INTVAL", "EINT64VAL",
+  "ArithmeticOps", "LogicalOps", "SetCondOps", "CastOps", "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", "DefinitionList",
+  "ConstPool", "AsmBlock", "BigOrLittle", "TargetDefinition",
+  "LibrariesDefinition", "LibList", "Name", "OptName", "ArgVal",
+  "ArgListH", "ArgList", "FunctionHeaderH", "BEGIN", "FunctionHeader",
+  "END", "Function", "FnDeclareLinkage", "FunctionProto", "OptSideEffect",
+  "ConstValueRef", "SymbolicValueRef", "ValueRef", "ResolvedVal",
+  "BasicBlockList", "BasicBlock", "InstructionList", "BBTerminatorInst",
+  "JumpTable", "Inst", "PHIList", "ValueRefList", "ValueRefListE",
+  "OptTailCall", "InstVal", "IndexList", "OptVolatile", "MemoryInst", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short int yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
+     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
+     375,   376,   377,   378,    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,   138,   139,   139,   140,   140,   141,   141,   141,   141,
+     141,   141,   141,   141,   141,   142,   142,   142,   143,   143,
+     143,   143,   143,   143,   144,   145,   145,   145,   146,   146,
+     146,   146,   147,   147,   147,   147,   148,   148,   149,   149,
+     150,   150,   151,   151,   151,   151,   151,   151,   151,   151,
+     152,   152,   152,   152,   152,   152,   152,   152,   153,   153,
+     154,   154,   155,   156,   156,   157,   157,   158,   158,   159,
+     159,   160,   160,   161,   162,   162,   162,   162,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,   163,   163,   163,
+     163,   163,   163,   163,   163,   163,   163,   164,   164,   165,
+     165,   165,   165,   166,   166,   166,   166,   166,   166,   166,
+     166,   166,   166,   166,   166,   166,   166,   166,   166,   167,
+     167,   167,   167,   167,   167,   167,   167,   167,   167,   168,
+     168,   169,   169,   170,   171,   171,   171,   171,   171,   172,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   173,
+     174,   174,   175,   175,   175,   175,   176,   177,   177,   177,
+     178,   178,   179,   179,   180,   181,   181,   182,   182,   182,
+     182,   183,   184,   184,   185,   186,   186,   187,   188,   188,
+     188,   189,   190,   190,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   192,   192,   193,   193,   194,
+     195,   195,   196,   197,   197,   197,   198,   198,   198,   198,
+     198,   198,   198,   198,   198,   199,   199,   200,   201,   201,
+     202,   202,   203,   203,   204,   204,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     206,   206,   207,   207,   208,   208,   208,   208,   208,   208,
+     208,   208
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       2,     0,     1,     1,     1,     1,     1,     1,     1,     0,
+       1,     1,     1,     1,     1,     1,     2,     0,     0,     2,
+       0,     3,     2,     0,     1,     0,     3,     1,     2,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     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,     8,     8,     3,
+       1,     1,     1,     1,     2,     2,     4,     2,     1,     4,
+       2,     4,     6,     6,     6,     6,     3,     4,     0,     1,
+       1,     1,     3,     3,     3,     3,     3,     3,     1,     0,
+       1,     1,     1,     0,     2,     3,     1,     1,     3,     1,
+       0,     8,     1,     1,     3,     1,     1,     3,     0,     1,
+       1,     3,     0,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     3,     1,     5,     1,     1,     1,     1,     2,
+       2,     1,     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,     6,     6,     2,     7,     1,
+       2,     0,     1,     0,     3,     6,     3,     6,     2,     4,
+       6,     4
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned char yydefact[] =
+{
+     148,     0,    49,   138,     1,   137,   178,    42,    43,    44,
+      45,    46,    47,    48,     0,    57,   204,   134,   135,   160,
+     161,     0,     0,     0,    49,     0,   140,   179,   180,    57,
+       0,     0,    50,    51,    52,    53,    54,    55,     0,     0,
+     205,   204,   201,    41,     0,     0,     0,     0,   146,     0,
+       0,     0,     0,     0,     0,     0,    40,   181,   149,   136,
+      56,     2,     3,    70,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,     0,     0,
+       0,     0,   195,     0,     0,    69,    88,    73,   196,    89,
+     172,   173,   174,   175,   176,   177,   200,   243,   203,     0,
+       0,     0,     0,   159,   147,   141,   139,   131,   132,     0,
+       0,     0,     0,    90,     0,     0,    72,    95,    97,     0,
+       0,   102,    96,   242,     0,   225,     0,     0,     0,     0,
+      57,   213,   214,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,     0,     0,     0,     0,     0,     0,    25,    26,    27,
+       0,     0,     0,     0,    24,     0,     0,     0,     0,     0,
+     202,    57,   217,     0,   239,   154,   151,   150,   152,   153,
+     155,   158,     0,    65,    65,    65,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,     0,     0,     0,
+       0,    65,     0,     0,     0,    94,   170,   101,    99,     0,
+       0,   229,   224,   207,   206,     0,     0,    31,    35,    30,
+      34,    29,    33,    28,    32,    36,    37,     0,     0,    60,
+      60,   248,     0,     0,   237,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   156,
+       0,   144,   145,   143,   116,   117,     4,     5,   114,   115,
+     118,   113,   109,   110,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   112,   111,
+     142,    71,    71,    98,   169,   163,   166,   167,     0,     0,
+      91,   184,   185,   186,   191,   187,   188,   189,   190,   182,
+       0,   193,   198,   197,   199,     0,   208,     0,     0,     0,
+     244,     0,   246,   241,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   157,
+       0,     0,    67,    65,     0,     0,     0,     0,     0,   104,
+     130,     0,     0,   108,     0,   105,     0,     0,     0,     0,
+       0,    92,    93,   162,   164,     0,    63,   100,   183,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   251,     0,
+       0,     0,   233,   234,     0,     0,     0,     0,     0,   231,
+     230,     0,   249,     0,    62,    68,    66,   241,     0,     0,
+       0,     0,     0,   103,   106,   107,     0,     0,     0,     0,
+       0,   168,   165,    64,    58,     0,   192,     0,     0,   223,
+      60,    61,    60,   220,   240,     0,     0,     0,     0,     0,
+     226,   227,   228,   223,     0,     0,     0,     0,     0,     0,
+     129,     0,     0,     0,     0,     0,     0,   171,     0,     0,
+       0,   222,     0,     0,   245,   247,     0,     0,     0,   232,
+     235,   236,     0,   250,   120,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    59,   194,     0,     0,     0,   221,
+     218,     0,   238,     0,   126,     0,     0,   122,   123,   124,
+     119,   125,     0,   211,     0,     0,     0,   219,     0,     0,
+       0,   209,     0,   210,     0,     0,   121,   127,   128,     0,
+       0,     0,     0,     0,     0,   216,     0,     0,   215,   212
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short int yydefgoto[] =
+{
+      -1,    82,   258,   273,   274,   275,   276,   277,   197,   198,
+     227,   199,    24,    15,    38,   437,   310,   332,   404,   251,
+     333,    83,    84,   200,    86,    87,   119,   209,   340,   301,
+     341,   109,     1,     2,     3,    59,   178,    48,   104,   182,
+      88,   354,   286,   287,   288,    39,    92,    16,    95,    17,
+      29,    18,   359,   302,    89,   304,   413,    41,    42,    43,
+     170,   485,    98,   234,   441,   442,   171,   172,   368,   173,
+     174
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -451
+static const short int yypact[] =
+{
+    -451,    18,   670,   213,  -451,  -451,    63,  -451,  -451,  -451,
+    -451,  -451,  -451,  -451,   -39,   308,    33,  -451,  -451,  -451,
+    -451,    14,   -36,    31,   150,   -12,  -451,  -451,  -451,   308,
+      96,   136,  -451,  -451,  -451,  -451,  -451,  -451,   971,   -13,
+    -451,    -9,  -451,   119,    10,    20,    37,    56,  -451,    40,
+      96,   971,    45,    45,    45,    45,  -451,  -451,  -451,  -451,
+    -451,  -451,  -451,    52,  -451,  -451,  -451,  -451,  -451,  -451,
+    -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,   177,   179,
+     180,    85,  -451,   119,    58,  -451,  -451,   -52,  -451,  -451,
+    -451,  -451,  -451,  -451,  -451,  -451,  -451,  1123,  -451,   163,
+      97,   185,   174,   178,  -451,  -451,  -451,  -451,  -451,  1019,
+    1019,  1019,  1060,  -451,    76,    82,  -451,  -451,   -52,   -85,
+      86,   786,  -451,  -451,  1019,  -451,   157,  1101,    30,   278,
+     308,  -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,
+    -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,
+    -451,  1019,  1019,  1019,  1019,  1019,  1019,  -451,  -451,  -451,
+    1019,  1019,  1019,  1019,  -451,  1019,  1019,  1019,  1019,  1019,
+    -451,   308,  -451,    55,  -451,  -451,  -451,  -451,  -451,  -451,
+    -451,  -451,   -49,    90,    90,    90,   130,   156,   214,   160,
+     217,   162,   218,   168,   220,   224,   225,   170,   221,   227,
+     387,    90,  1019,  1019,  1019,  -451,   827,  -451,   111,   122,
+     560,  -451,  -451,    52,  -451,   560,   560,  -451,  -451,  -451,
+    -451,  -451,  -451,  -451,  -451,  -451,  -451,   560,   971,   123,
+     126,  -451,   560,   118,   127,   128,   140,   141,   142,   143,
+     560,   560,   560,   233,   145,   971,  1019,  1019,   248,  -451,
+     -23,  -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,
+    -451,  -451,  -451,  -451,   146,   147,   149,   169,   171,   868,
+    1060,   537,   253,   173,   181,   182,   183,   187,  -451,  -451,
+    -451,   -94,     6,   -52,  -451,   119,  -451,   158,   188,   889,
+    -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,   234,
+    1060,  -451,  -451,  -451,  -451,   190,  -451,   197,   560,    -5,
+    -451,     8,  -451,   201,   560,   199,  1019,  1019,  1019,  1019,
+    1019,   205,   207,   208,  1019,  1019,   560,   560,   209,  -451,
+     282,   303,  -451,    90,  1060,  1060,  1060,  1060,  1060,  -451,
+    -451,   -44,   -89,  -451,   -56,  -451,  1060,  1060,  1060,  1060,
+    1060,  -451,  -451,  -451,  -451,   930,   304,  -451,  -451,   313,
+     -14,   320,   323,   219,   560,   344,   560,  1019,  -451,   226,
+     560,   228,  -451,  -451,   229,   230,   560,   560,   560,  -451,
+    -451,   222,  -451,  1019,  -451,  -451,  -451,   201,   231,   238,
+     239,   241,  1060,  -451,  -451,  -451,   244,   245,   257,   348,
+     261,  -451,  -451,  -451,   330,   263,  -451,   560,   560,  1019,
+     264,  -451,   264,  -451,   265,   560,   266,  1019,  1019,  1019,
+    -451,  -451,  -451,  1019,   560,   267,  1060,  1060,  1060,  1060,
+    -451,  1060,  1060,  1060,  1019,  1060,   390,  -451,   373,   273,
+     270,   265,   272,   345,  -451,  -451,  1019,   274,   560,  -451,
+    -451,  -451,   275,  -451,  -451,   276,   279,   281,   285,   284,
+     286,   287,   288,   290,  -451,  -451,   383,    15,   384,  -451,
+    -451,   291,  -451,  1060,  -451,  1060,  1060,  -451,  -451,  -451,
+    -451,  -451,   560,  -451,   661,    47,   398,  -451,   293,   295,
+     296,  -451,   302,  -451,   661,   560,  -451,  -451,  -451,   408,
+     306,   356,   560,   412,   414,  -451,   560,   560,  -451,  -451
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const short int yypgoto[] =
+{
+    -451,  -451,  -451,   339,   341,   342,   343,   346,  -128,  -127,
+    -450,  -451,   401,   421,   -97,  -451,  -224,    92,  -451,  -177,
+    -451,   -46,  -451,   -38,  -451,   -66,   328,  -451,  -108,   250,
+    -251,    94,  -451,  -451,  -451,   402,  -451,  -451,  -451,  -451,
+       0,  -451,    98,  -451,  -451,   422,  -451,  -451,  -451,  -451,
+    -451,   451,  -451,  -414,   -65,   120,  -115,  -451,   415,  -451,
+    -451,  -451,  -451,  -451,    88,    34,  -451,  -451,    71,  -451,
+    -451
+};
+
+/* 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 -134
+static const short int yytable[] =
+{
+      85,   225,   226,    25,   201,   106,   312,   252,   253,   211,
+     364,   330,   214,    85,    40,   118,    90,   484,     4,   342,
+     344,    93,    30,   366,   280,   217,   218,   219,   220,   221,
+     222,   223,   224,   228,   331,   494,   392,   351,   231,   215,
+     204,   235,   122,    25,   394,   236,   237,   238,   239,   360,
+     205,   216,   365,   243,   244,   118,    40,   217,   218,   219,
+     220,   221,   222,   223,   224,   365,    44,    45,    46,   392,
+     492,   183,   184,   185,   245,   -71,   248,   107,   108,   395,
+     500,   392,   249,   120,   122,    47,   210,   393,    49,   210,
+      61,    62,    50,   116,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    19,    27,    20,
+      28,   392,    56,   229,   230,   210,   232,   233,   210,   406,
+      58,    91,   210,   210,   210,   210,    94,   240,   241,   242,
+     210,   210,   328,    77,    99,   279,   281,   282,   283,   352,
+      60,    19,   122,    20,   100,   303,   483,   110,   111,   112,
+     303,   303,   176,   177,   246,   247,   386,   254,   255,   -31,
+     -31,   101,   303,   -30,   -30,   -29,   -29,   303,   285,   103,
+      51,   -28,   -28,   256,   257,   303,   303,   303,   493,   -72,
+     102,   113,   308,   114,   115,   121,   444,   175,   445,   179,
+      85,     7,     8,     9,    10,    52,    12,    53,   180,   326,
+      54,   371,   181,   373,   374,   375,   202,    85,   327,   210,
+     380,    78,   203,   206,    79,   250,   212,    80,   -35,    81,
+     117,   -34,   -33,   283,   -32,   259,   387,   388,   389,   390,
+     391,   -38,   -39,   -41,   260,    19,   289,    20,   396,   397,
+     398,   399,   400,   303,     6,   -41,   -41,   314,   309,   303,
+     290,   311,   315,   316,   -41,   -41,   -41,   -41,   -41,   -41,
+     -41,   303,   303,   -41,    21,   317,   318,   319,   320,   324,
+     325,    22,   329,   334,   335,    23,   336,   345,   210,   372,
+     210,   210,   210,   355,   430,   353,   379,   210,   217,   218,
+     219,   220,   221,   222,   223,   224,   337,   358,   338,   303,
+     346,   303,   449,   450,   451,   303,   384,   385,   347,   348,
+     349,   303,   303,   303,   350,   361,   356,   285,   455,   456,
+     457,   458,   362,   459,   460,   461,   367,   463,   370,   210,
+     376,   469,   377,   378,   383,   305,   306,   405,   330,   225,
+     226,   407,   303,   303,   408,   424,   409,   307,   411,   423,
+     303,   415,   313,   417,   418,   419,   426,   225,   226,   303,
+     321,   322,   323,   427,   428,   488,   429,   489,   490,   431,
+     432,   210,    31,    32,    33,    34,    35,    36,    37,   210,
+     210,   210,   433,   303,   434,   210,   435,   436,   438,   443,
+     446,   448,    61,    62,   464,   454,   462,   465,   466,   467,
+     468,   473,   365,   472,   482,   470,   475,   474,   210,    19,
+     476,    20,   477,   261,   478,   479,   480,   303,   481,   495,
+     486,   496,   487,   497,   498,   262,   263,   499,   363,   502,
+     303,   503,   504,   506,   369,   507,   165,   303,   166,   167,
+     168,   303,   303,   169,    97,    55,   381,   382,   403,   208,
+     278,    57,   105,   402,    26,   414,    96,   452,   425,     0,
+       0,     0,     0,     0,     0,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,     0,   410,     0,   412,     0,   264,     0,
+     416,     0,     0,     0,     0,     0,   420,   421,   422,     0,
+       0,     0,   265,   157,   158,   159,     0,   266,   267,   268,
+     164,     0,     0,     0,     0,     0,   269,     0,     0,   270,
+       0,   271,     0,     0,   272,     0,     0,   439,   440,     0,
+       0,     0,     0,     0,     0,   447,     0,     0,     0,     0,
+       0,     0,    61,    62,   453,   116,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,    75,    76,    19,
+       0,    20,     0,   291,   292,    61,    62,   293,   471,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    19,     0,    20,    77,   294,   295,   296,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   297,   298,
+       0,     0,   491,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   501,     0,     0,     0,     0,
+       0,   299,   505,     0,     0,     0,   508,   509,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,     0,     0,     0,     0,
+       0,   264,     0,    78,   291,   292,    79,     0,   293,    80,
+    -133,    81,   343,     0,     0,   265,   157,   158,   159,     0,
+     266,   267,   268,   164,     0,     0,     0,   294,   295,   296,
+       0,     0,   300,     0,     0,     5,     0,     0,     0,   297,
+     298,     6,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     7,     8,     9,    10,    11,    12,    13,     0,     0,
+       0,     0,   299,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    14,     0,     0,     0,     0,     0,     0,   133,
+     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,     0,     0,     0,
+       0,     0,   264,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   265,   157,   158,   159,
+       0,   266,   267,   268,   164,     0,     0,     0,     0,     0,
+       0,    61,    62,   300,   116,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    19,     0,
+      20,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   207,     0,     0,     0,     0,     0,     0,
+       0,     0,    61,    62,    77,   116,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    19,
+       0,    20,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   284,     0,     0,     0,     0,     0,
+       0,     0,     0,    61,    62,    77,   116,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,    75,    76,
+      19,     0,    20,     0,    61,    62,     0,   116,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    19,    78,    20,     0,    79,    77,     0,    80,     0,
+      81,     0,     0,     0,     0,     0,   357,     0,     0,     0,
+       0,     0,     0,     0,     0,    61,    62,    77,   116,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    19,    78,    20,     0,    79,     0,     0,    80,
+       0,    81,     0,     0,     0,     0,     0,   401,     0,     0,
+       0,     0,     0,     0,     0,     0,    61,    62,    77,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    19,    78,    20,     0,    79,     0,   339,
+      80,     0,    81,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    78,     0,     0,    79,    77,
+       0,    80,     0,    81,    61,    62,     0,   116,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    19,     0,    20,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    78,     0,     0,    79,
+       0,     0,    80,     0,    81,    61,    62,    77,   116,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+      75,    76,    19,     0,    20,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    78,     0,     0,
+      79,     0,     0,    80,     0,    81,    61,    62,    77,   213,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    19,     0,    20,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    78,     0,     0,    79,    77,
+       0,    80,     0,    81,     0,     0,     0,     0,   123,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   124,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   125,   126,     0,     0,    78,     0,     0,    79,
+       0,     0,    80,     0,    81,   127,   128,   129,   130,   131,
+     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
+     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+     152,   153,     0,     0,   154,     0,     0,    78,     0,     0,
+      79,     0,     0,    80,     0,    81,     0,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   164
+};
+
+static const short int yycheck[] =
+{
+      38,   129,   129,     3,   112,    51,   230,   184,   185,   124,
+      15,    34,   127,    51,    23,    81,    29,   467,     0,   270,
+     271,    30,    61,    15,   201,    10,    11,    12,    13,    14,
+      15,    16,    17,   130,    57,   485,   125,   131,   153,     9,
+     125,   156,   136,    43,   133,   160,   161,   162,   163,   300,
+     135,    21,    57,   168,   169,   121,    23,    10,    11,    12,
+      13,    14,    15,    16,    17,    57,    52,    53,    54,   125,
+     484,   109,   110,   111,   171,   127,   125,    32,    33,   135,
+     494,   125,   131,    83,   136,    71,   124,   131,   124,   127,
+       5,     6,    61,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    45,    24,
+      47,   125,   124,   151,   152,   153,   154,   155,   156,   133,
+      24,   134,   160,   161,   162,   163,   135,   165,   166,   167,
+     168,   169,   247,    48,   124,   200,   202,   203,   204,   133,
+       4,    22,   136,    24,   124,   210,   131,    53,    54,    55,
+     215,   216,    55,    56,    99,   100,   333,    27,    28,     3,
+       4,   124,   227,     3,     4,     3,     4,   232,   206,   129,
+      20,     3,     4,     3,     4,   240,   241,   242,   131,   127,
+     124,     4,   228,     4,     4,   127,   410,    24,   412,     4,
+     228,    41,    42,    43,    44,    45,    46,    47,    24,   245,
+      50,   316,    24,   318,   319,   320,   130,   245,   246,   247,
+     325,   126,   130,   127,   129,   125,    59,   132,     4,   134,
+     135,     4,     4,   289,     4,     4,   334,   335,   336,   337,
+     338,     7,     7,    20,     7,    22,   125,    24,   346,   347,
+     348,   349,   350,   308,    31,    32,    33,   129,   125,   314,
+     128,   125,   125,   125,    41,    42,    43,    44,    45,    46,
+      47,   326,   327,    50,    51,   125,   125,   125,   125,    36,
+     125,    58,    24,   127,   127,    62,   127,    24,   316,   317,
+     318,   319,   320,   125,   392,   285,   324,   325,    10,    11,
+      12,    13,    14,    15,    16,    17,   127,    63,   127,   364,
+     127,   366,   417,   418,   419,   370,    24,     4,   127,   127,
+     127,   376,   377,   378,   127,   125,   128,   355,   426,   427,
+     428,   429,   125,   431,   432,   433,   125,   435,   129,   367,
+     125,   446,   125,   125,   125,   215,   216,    24,    34,   467,
+     467,    21,   407,   408,    21,   383,   127,   227,     4,   127,
+     415,   125,   232,   125,   125,   125,   125,   485,   485,   424,
+     240,   241,   242,   125,   125,   473,   125,   475,   476,   125,
+     125,   409,    64,    65,    66,    67,    68,    69,    70,   417,
+     418,   419,   125,   448,    36,   423,   125,    57,   125,   125,
+     125,   125,     5,     6,     4,   128,   434,    24,   125,   129,
+     128,   125,    57,   128,    21,   131,   125,   128,   446,    22,
+     125,    24,   128,    26,   128,   128,   128,   482,   128,    21,
+      36,   128,   131,   128,   128,    38,    39,   125,   308,    21,
+     495,   125,    76,    21,   314,    21,    97,   502,    97,    97,
+      97,   506,   507,    97,    43,    24,   326,   327,   356,   121,
+     200,    29,    50,   355,     3,   367,    41,   423,   387,    -1,
+      -1,    -1,    -1,    -1,    -1,    78,    79,    80,    81,    82,
+      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,    -1,   364,    -1,   366,    -1,   101,    -1,
+     370,    -1,    -1,    -1,    -1,    -1,   376,   377,   378,    -1,
+      -1,    -1,   115,   116,   117,   118,    -1,   120,   121,   122,
+     123,    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,   132,
+      -1,   134,    -1,    -1,   137,    -1,    -1,   407,   408,    -1,
+      -1,    -1,    -1,    -1,    -1,   415,    -1,    -1,    -1,    -1,
+      -1,    -1,     5,     6,   424,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      -1,    24,    -1,     3,     4,     5,     6,     7,   448,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    22,    -1,    24,    48,    26,    27,    28,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    39,
+      -1,    -1,   482,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   495,    -1,    -1,    -1,    -1,
+      -1,    61,   502,    -1,    -1,    -1,   506,   507,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    -1,    -1,    -1,    -1,
+      -1,   101,    -1,   126,     3,     4,   129,    -1,     7,   132,
+       0,   134,   135,    -1,    -1,   115,   116,   117,   118,    -1,
+     120,   121,   122,   123,    -1,    -1,    -1,    26,    27,    28,
+      -1,    -1,   132,    -1,    -1,    25,    -1,    -1,    -1,    38,
+      39,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    41,    42,    43,    44,    45,    46,    47,    -1,    -1,
+      -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    -1,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    -1,    -1,    -1,
+      -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   115,   116,   117,   118,
+      -1,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+      -1,     5,     6,   132,     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,    -1,     5,     6,    48,     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,    -1,     5,     6,    48,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    -1,    24,    -1,     5,     6,    -1,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,   126,    24,    -1,   129,    48,    -1,   132,    -1,
+     134,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,     5,     6,    48,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,   126,    24,    -1,   129,    -1,    -1,   132,
+      -1,   134,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     5,     6,    48,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,   126,    24,    -1,   129,    -1,   131,
+     132,    -1,   134,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   126,    -1,    -1,   129,    48,
+      -1,   132,    -1,   134,     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,    -1,    -1,    -1,   126,    -1,    -1,   129,
+      -1,    -1,   132,    -1,   134,     5,     6,    48,     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,   126,    -1,    -1,
+     129,    -1,    -1,   132,    -1,   134,     5,     6,    48,     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,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   126,    -1,    -1,   129,    48,
+      -1,   132,    -1,   134,    -1,    -1,    -1,    -1,    35,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    59,    60,    -1,    -1,   126,    -1,    -1,   129,
+      -1,    -1,   132,    -1,   134,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,    98,    -1,    -1,   101,    -1,    -1,   126,    -1,    -1,
+     129,    -1,    -1,   132,    -1,   134,    -1,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,   123
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,   170,   171,   172,     0,    25,    31,    41,    42,    43,
+      44,    45,    46,    47,    62,   151,   185,   187,   189,    22,
+      24,    51,    58,    62,   150,   178,   189,    45,    47,   188,
+      61,    64,    65,    66,    67,    68,    69,    70,   152,   183,
+      23,   195,   196,   197,    52,    53,    54,    71,   175,   124,
+      61,    20,    45,    47,    50,   151,   124,   183,    24,   173,
+       4,     5,     6,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    48,   126,   129,
+     132,   134,   139,   159,   160,   161,   162,   163,   178,   192,
+      29,   134,   184,    30,   135,   186,   196,   150,   200,   124,
+     124,   124,   124,   129,   176,   173,   159,    32,    33,   169,
+     169,   169,   169,     4,     4,     4,     8,   135,   163,   164,
+     178,   127,   136,    35,    49,    59,    60,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,   101,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   141,   142,   143,   144,   145,
+     198,   204,   205,   207,   208,    24,    55,    56,   174,     4,
+      24,    24,   177,   161,   161,   161,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,   146,   147,   149,
+     161,   166,   130,   130,   125,   135,   127,    37,   164,   165,
+     161,   194,    59,     8,   194,     9,    21,    10,    11,    12,
+      13,    14,    15,    16,    17,   146,   147,   148,   152,   161,
+     161,   194,   161,   161,   201,   194,   194,   194,   194,   194,
+     161,   161,   161,   194,   194,   152,    99,   100,   125,   131,
+     125,   157,   157,   157,    27,    28,     3,     4,   140,     4,
+       7,    26,    38,    39,   101,   115,   120,   121,   122,   129,
+     132,   134,   137,   141,   142,   143,   144,   145,   167,   192,
+     157,   163,   163,   163,    37,   161,   180,   181,   182,   125,
+     128,     3,     4,     7,    26,    27,    28,    38,    39,    61,
+     132,   167,   191,   192,   193,   193,   193,   193,   159,   125,
+     154,   125,   154,   193,   129,   125,   125,   125,   125,   125,
+     125,   193,   193,   193,    36,   125,   159,   161,   194,    24,
+      34,    57,   155,   158,   127,   127,   127,   127,   127,   131,
+     166,   168,   168,   135,   168,    24,   127,   127,   127,   127,
+     127,   131,   133,   178,   179,   125,   128,    37,    63,   190,
+     168,   125,   125,   193,    15,    57,    15,   125,   206,   193,
+     129,   194,   161,   194,   194,   194,   125,   125,   125,   161,
+     194,   193,   193,   125,    24,     4,   157,   166,   166,   166,
+     166,   166,   125,   131,   133,   135,   166,   166,   166,   166,
+     166,    37,   180,   155,   156,    24,   133,    21,    21,   127,
+     193,     4,   193,   194,   202,   125,   193,   125,   125,   125,
+     193,   193,   193,   127,   161,   206,   125,   125,   125,   125,
+     166,   125,   125,   125,    36,   125,    57,   153,   125,   193,
+     193,   202,   203,   125,   154,   154,   125,   193,   125,   194,
+     194,   194,   203,   193,   128,   166,   166,   166,   166,   166,
+     166,   166,   161,   166,     4,    24,   125,   129,   128,   194,
+     131,   193,   128,   125,   128,   125,   125,   128,   128,   128,
+     128,   128,    21,   131,   148,   199,    36,   131,   166,   166,
+     166,   193,   191,   131,   148,    21,   128,   128,   128,   125,
+     191,   193,    21,   125,    76,   193,    21,    21,   193,   193
+};
+
+#define yyerrok                (yyerrstatus = 0)
+#define yyclearin      (yychar = YYEMPTY)
+#define YYEMPTY                (-2)
+#define YYEOF          0
+
+#define YYACCEPT       goto yyacceptlab
+#define YYABORT                goto yyabortlab
+#define YYERROR                goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL         goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)                                 \
+do                                                             \
+  if (yychar == YYEMPTY && yylen == 1)                         \
+    {                                                          \
+      yychar = (Token);                                                \
+      yylval = (Value);                                                \
+      yytoken = YYTRANSLATE (yychar);                          \
+      YYPOPSTACK;                                              \
+      goto yybackup;                                           \
+    }                                                          \
+  else                                                         \
+    {                                                          \
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;                                                 \
+    }                                                          \
+while (0)
+
+
+#define YYTERROR       1
+#define YYERRCODE      256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)                               \
+    do                                                                 \
+      if (N)                                                           \
+       {                                                               \
+         (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
+         (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
+         (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
+         (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
+       }                                                               \
+      else                                                             \
+       {                                                               \
+         (Current).first_line   = (Current).last_line   =              \
+           YYRHSLOC (Rhs, 0).last_line;                                \
+         (Current).first_column = (Current).last_column =              \
+           YYRHSLOC (Rhs, 0).last_column;                              \
+       }                                                               \
+    while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)                 \
+     fprintf (File, "%d.%d-%d.%d",                     \
+              (Loc).first_line, (Loc).first_column,    \
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* 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 YY_SYMBOL_PRINT(Title, Type, Value, Location)         \
+do {                                                           \
+  if (yydebug)                                                 \
+    {                                                          \
+      YYFPRINTF (stderr, "%s ", Title);                                \
+      yysymprint (stderr,                                      \
+                  Type, Value);        \
+      YYFPRINTF (stderr, "\n");                                        \
+    }                                                          \
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short int *bottom;
+    short int *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)                           \
+do {                                                           \
+  if (yydebug)                                                 \
+    yy_stack_print ((Bottom), (Top));                          \
+} while (0)
+
+
+/*------------------------------------------------.
+| 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 long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)         \
+do {                                   \
+  if (yydebug)                         \
+    yy_reduce_print (Rule);            \
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef        YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+\f
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      size_t yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+       switch (*++yyp)
+         {
+         case '\'':
+         case ',':
+           goto do_not_strip_quotes;
+
+         case '\\':
+           if (*++yyp != '\\')
+             goto do_not_strip_quotes;
+           /* Fall through.  */
+         default:
+           if (yyres)
+             yyres[yyn] = *yyp;
+           yyn++;
+           break;
+
+         case '"':
+           if (yyres)
+             yyres[yyn] = '\0';
+           return yyn;
+         }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+#endif /* YYERROR_VERBOSE */
+
+\f
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
+\f
+
+/* 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 look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* 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 int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  short int *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;            /* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| 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++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+       /* Give user a chance to reallocate the stack. Use copies of
+          these so that the &'s don't force the real ones into
+          memory.  */
+       YYSTYPE *yyvs1 = yyvs;
+       short int *yyss1 = yyss;
+
+
+       /* Each stack pointer address is followed by the size of the
+          data in use in that stack, in bytes.  This used to be a
+          conditional around just the two extra args, but that might
+          be undefined if yyoverflow is a macro.  */
+       yyoverflow (YY_("memory exhausted"),
+                   &yyss1, yysize * sizeof (*yyssp),
+                   &yyvs1, yysize * sizeof (*yyvsp),
+
+                   &yystacksize);
+
+       yyss = yyss1;
+       yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+       goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+       yystacksize = YYMAXDEPTH;
+
+      {
+       short int *yyss1 = yyss;
+       union yyalloc *yyptr =
+         (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+       if (! yyptr)
+         goto yyexhaustedlab;
+       YYSTACK_RELOCATE (yyss);
+       YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+       if (yyss1 != yyssa)
+         YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+                 (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+       YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* 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];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+       goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* 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)
+    {
+        case 40:
+#line 108 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyvsp[-1])->append(" = ");
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 41:
+#line 112 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = new std::string(""); 
+  ;}
+    break;
+
+  case 49:
+#line 119 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(""); ;}
+    break;
+
+  case 57:
+#line 124 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(""); ;}
+    break;
+
+  case 58:
+#line 129 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(); ;}
+    break;
+
+  case 59:
+#line 130 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { *(yyvsp[-1]) += " " + *(yyvsp[0]); delete (yyvsp[0]); (yyval) = (yyvsp[-1]); ;}
+    break;
+
+  case 60:
+#line 133 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(); ;}
+    break;
+
+  case 61:
+#line 134 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    (yyvsp[-1])->insert(0, ", "); 
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 62:
+#line 142 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 63:
+#line 148 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(); ;}
+    break;
+
+  case 65:
+#line 152 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(); ;}
+    break;
+
+  case 66:
+#line 153 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+      (yyvsp[-1])->insert(0, ", ");
+      if (!(yyvsp[0])->empty())
+        *(yyvsp[-1]) += " " + *(yyvsp[0]);
+      delete (yyvsp[0]);
+      (yyval) = (yyvsp[-1]);
+    ;}
+    break;
+
+  case 68:
+#line 163 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+      *(yyvsp[-1]) += " " + *(yyvsp[0]);
+      delete (yyvsp[0]);
+      (yyval) = (yyvsp[-1]);
+    ;}
+    break;
+
+  case 90:
+#line 188 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                   // Type UpReference
+    (yyvsp[0])->insert(0, "\\");
+    (yyval) = (yyvsp[0]);
+  ;}
+    break;
+
+  case 91:
+#line 192 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {           // Function derived type?
+    *(yyvsp[-3]) += "( " + *(yyvsp[-1]) + " )";
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 92:
+#line 197 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {          // Sized array type?
+    (yyvsp[-3])->insert(0,"[ ");
+    *(yyvsp[-3]) += " x " + *(yyvsp[-1]) + " ]";
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 93:
+#line 203 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {          // Packed array type?
+    (yyvsp[-3])->insert(0,"< ");
+    *(yyvsp[-3]) += " x " + *(yyvsp[-1]) + " >";
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 94:
+#line 209 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                        // Structure type?
+    (yyvsp[-1])->insert(0, "{ ");
+    *(yyvsp[-1]) += " }";
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 95:
+#line 214 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                                  // Empty structure type?
+    (yyval) = new std::string("{ }");
+  ;}
+    break;
+
+  case 96:
+#line 217 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                             // Pointer type?
+    *(yyvsp[-1]) += '*';
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 98:
+#line 225 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += ", " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 100:
+#line 233 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += ", ...";
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 101:
+#line 238 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = (yyvsp[0]);
+  ;}
+    break;
+
+  case 102:
+#line 241 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = new std::string();
+  ;}
+    break;
+
+  case 103:
+#line 251 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { // Nonempty unsized arr
+    *(yyvsp[-3]) += " [ " + *(yyvsp[-1]) + " ]";
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 104:
+#line 256 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = new std::string("[ ]");
+  ;}
+    break;
+
+  case 105:
+#line 259 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += " c" + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 106:
+#line 264 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { // Nonempty unsized arr
+    *(yyvsp[-3]) += " < " + *(yyvsp[-1]) + " >";
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 107:
+#line 269 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-3]) += " { " + *(yyvsp[-1]) + " }";
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 108:
+#line 274 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = new std::string("[ ]");
+  ;}
+    break;
+
+  case 109:
+#line 277 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]); 
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 110:
+#line 282 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 111:
+#line 287 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 112:
+#line 292 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 113:
+#line 297 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 114:
+#line 303 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {      // integral constants
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 115:
+#line 308 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {            // integral constants
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 116:
+#line 313 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                      // Boolean constants
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 117:
+#line 318 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                     // Boolean constants
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 118:
+#line 323 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                   // Float & Double constants
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 119:
+#line 330 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-5]) += " (" + *(yyvsp[-3]) + " " + *(yyvsp[-2]) + " " + *(yyvsp[-1]) + ")";
+    delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 120:
+#line 335 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 121:
+#line 337 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 122:
+#line 339 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 123:
+#line 341 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 124:
+#line 343 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 125:
+#line 345 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 126:
+#line 347 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 127:
+#line 349 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 128:
+#line 351 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 129:
+#line 356 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 130:
+#line 358 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 131:
+#line 363 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { ;}
+    break;
+
+  case 132:
+#line 363 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { ;}
+    break;
+
+  case 133:
+#line 373 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+;}
+    break;
+
+  case 134:
+#line 378 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 135:
+#line 381 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[0]) << "\n";
+    delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 136:
+#line 386 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "module asm " << " " << *(yyvsp[0]) << "\n";
+  ;}
+    break;
+
+  case 137:
+#line 389 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "implementation\n";
+  ;}
+    break;
+
+  case 138:
+#line 392 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 139:
+#line 396 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[-2]) << " " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 140:
+#line 401 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {       // Function prototypes can be in const pool
+    *O << *(yyvsp[0]) << "\n";
+    delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 141:
+#line 406 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {  // Asm blocks can be in the const pool
+    *O << *(yyvsp[-2]) << " " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]); 
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 142:
+#line 411 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[-4]) << " " << *(yyvsp[-3]) << " " << *(yyvsp[-2]) << " " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 143:
+#line 416 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[-4]) << " " << *(yyvsp[-3]) << " " << *(yyvsp[-2]) << " " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 144:
+#line 421 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[-4]) << " " << *(yyvsp[-3]) << " " << *(yyvsp[-2]) << " " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 145:
+#line 426 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[-4]) << " " << *(yyvsp[-3]) << " " << *(yyvsp[-2]) << " " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 146:
+#line 431 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    *O << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 147:
+#line 436 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[-2]) << " = " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 148:
+#line 441 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 152:
+#line 451 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += " = " + *(yyvsp[-1]);
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 153:
+#line 456 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += " = " + *(yyvsp[-1]);
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 154:
+#line 461 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += " = " + *(yyvsp[-1]);
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 155:
+#line 466 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += " = " + *(yyvsp[-1]);
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 156:
+#line 473 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyvsp[-1])->insert(0, "[ ");
+    *(yyvsp[-1]) += " ]";
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 157:
+#line 480 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += ", " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 159:
+#line 486 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = new std::string();
+  ;}
+    break;
+
+  case 163:
+#line 495 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(); ;}
+    break;
+
+  case 164:
+#line 497 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  (yyval) = (yyvsp[-1]);
+  if (!(yyvsp[0])->empty())
+    *(yyval) += " " + *(yyvsp[0]);
+;}
+    break;
+
+  case 165:
+#line 503 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += ", " + *(yyvsp[0]);
+  ;}
+    break;
+
+  case 166:
+#line 506 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = (yyvsp[0]);
+  ;}
+    break;
+
+  case 167:
+#line 510 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = (yyvsp[0]);
+  ;}
+    break;
+
+  case 168:
+#line 513 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += ", ...";
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 169:
+#line 517 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = (yyvsp[0]);
+  ;}
+    break;
+
+  case 170:
+#line 520 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = new std::string();
+  ;}
+    break;
+
+  case 171:
+#line 525 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    if (!(yyvsp[-7])->empty()) {
+      (yyvsp[-6])->insert(0, *(yyvsp[-7]) + " ");
+    }
+    *(yyvsp[-6]) += " " + *(yyvsp[-5]) + "( " + *(yyvsp[-3]) + " )";
+    if (!(yyvsp[-1])->empty()) {
+      *(yyvsp[-6]) += " " + *(yyvsp[-1]);
+    }
+    if (!(yyvsp[0])->empty()) {
+      *(yyvsp[-6]) += " " + *(yyvsp[0]);
+    }
+    (yyval) = (yyvsp[-6]);
+  ;}
+    break;
+
+  case 172:
+#line 539 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = new std::string("begin");
+  ;}
+    break;
+
+  case 173:
+#line 542 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    (yyval) = new std::string ("{");
+  ;}
+    break;
+
+  case 174:
+#line 546 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  if (!(yyvsp[-2])->empty()) {
+    *O << *(yyvsp[-2]) << " ";
+  }
+  *O << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+  delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+  (yyval) = 0;
+;}
+    break;
+
+  case 175:
+#line 555 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string("end"); ;}
+    break;
+
+  case 176:
+#line 556 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string("}"); ;}
+    break;
+
+  case 177:
+#line 558 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  if ((yyvsp[-1]))
+    *O << *(yyvsp[-1]);
+  *O << '\n' << *(yyvsp[0]) << "\n";
+;}
+    break;
+
+  case 181:
+#line 570 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    *(yyvsp[-2]) += " " + *(yyvsp[-1]) + " " + *(yyvsp[0]);
+    delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 182:
+#line 580 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 183:
+#line 582 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 192:
+#line 587 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    (yyvsp[-1])->insert(0, "<");
+    *(yyvsp[-1]) += ">";
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 194:
+#line 593 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    if (!(yyvsp[-3])->empty()) {
+      *(yyvsp[-4]) += " " + *(yyvsp[-3]);
+    }
+    *(yyvsp[-4]) += " " + *(yyvsp[-2]) + ", " + *(yyvsp[-1]);
+    delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-4]);
+  ;}
+    break;
+
+  case 199:
+#line 611 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 200:
+#line 617 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 201:
+#line 619 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { // Do not allow functions with 0 basic blocks   
+  ;}
+    break;
+
+  case 202:
+#line 626 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[-1]) ;
+  ;}
+    break;
+
+  case 203:
+#line 630 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "    " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 204:
+#line 635 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 205:
+#line 638 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[0]) << "\n";
+    delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 206:
+#line 644 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {              // Return with a result...
+    *O << "    " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 207:
+#line 649 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                                       // Return with no result...
+    *O << "    " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 208:
+#line 654 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                         // Unconditional Branch...
+    *O << "    " << *(yyvsp[-2]) << " " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 209:
+#line 659 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {  
+    *O << "    " << *(yyvsp[-8]) << " " << *(yyvsp[-7]) << " " << *(yyvsp[-6]) << ", " << *(yyvsp[-4]) << " "
+       << *(yyvsp[-3]) << ", " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-8]); delete (yyvsp[-7]); delete (yyvsp[-6]); delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 210:
+#line 665 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "    " << *(yyvsp[-8]) << " " << *(yyvsp[-7]) << " " << *(yyvsp[-6]) << ", " << *(yyvsp[-4]) << " " 
+       << *(yyvsp[-3]) << " [" << *(yyvsp[-1]) << " ]\n";
+    delete (yyvsp[-8]); delete (yyvsp[-7]); delete (yyvsp[-6]); delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-1]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 211:
+#line 671 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "    " << *(yyvsp[-7]) << " " << *(yyvsp[-6]) << " " << *(yyvsp[-5]) << ", " << *(yyvsp[-3]) << " " 
+       << *(yyvsp[-2]) << "[]\n";
+    delete (yyvsp[-7]); delete (yyvsp[-6]); delete (yyvsp[-5]); delete (yyvsp[-3]); delete (yyvsp[-2]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 212:
+#line 678 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "    " << *(yyvsp[-12]) << " " << *(yyvsp[-11]) << " " << *(yyvsp[-10]) << " " << *(yyvsp[-9]) << " ("
+       << *(yyvsp[-7]) << ") " << *(yyvsp[-5]) << " " << *(yyvsp[-4]) << " " << *(yyvsp[-3]) << " " << *(yyvsp[-2]) << " "
+       << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-12]); delete (yyvsp[-11]); delete (yyvsp[-10]); delete (yyvsp[-9]); delete (yyvsp[-7]); delete (yyvsp[-5]); delete (yyvsp[-4]);
+    delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]); 
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 213:
+#line 686 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "    " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 214:
+#line 691 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "    " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 215:
+#line 697 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-5]) += *(yyvsp[-4]) + " " + *(yyvsp[-3]) + ", " + *(yyvsp[-1]) + " " + *(yyvsp[0]);
+    delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 216:
+#line 702 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-4]) += *(yyvsp[-3]) + ", " + *(yyvsp[-1]) + " " + *(yyvsp[0]);
+    delete (yyvsp[-3]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-4]);
+  ;}
+    break;
+
+  case 217:
+#line 709 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]); 
+  ;}
+    break;
+
+  case 218:
+#line 716 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {    // Used for PHI nodes
+    *(yyvsp[-5]) += " [" + *(yyvsp[-3]) + "," + *(yyvsp[-1]) + "]";
+    delete (yyvsp[-3]); delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 219:
+#line 721 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-6]) += ", [" + *(yyvsp[-3]) + "," + *(yyvsp[-1]) + "]";
+    delete (yyvsp[-3]); delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-6]);
+  ;}
+    break;
+
+  case 221:
+#line 730 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += ", " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 223:
+#line 739 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(); ;}
+    break;
+
+  case 224:
+#line 743 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 226:
+#line 751 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-4]) += " " + *(yyvsp[-3]) + " " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-4]);
+  ;}
+    break;
+
+  case 227:
+#line 756 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-4]) += " " + *(yyvsp[-3]) + " " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-4]);
+  ;}
+    break;
+
+  case 228:
+#line 761 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-4]) += " " + *(yyvsp[-3]) + " " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-4]);
+  ;}
+    break;
+
+  case 229:
+#line 766 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 230:
+#line 771 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-3]) += " " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 231:
+#line 776 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-3]) += " " + *(yyvsp[-2]) + " " + *(yyvsp[-1]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 232:
+#line 781 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-5]) += " " + *(yyvsp[-4]) + ", " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-4]); delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 233:
+#line 786 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-3]) += " " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 234:
+#line 791 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-3]) += " " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 235:
+#line 796 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-5]) += " " + *(yyvsp[-4]) + ", " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-4]); delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 236:
+#line 801 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-5]) += " " + *(yyvsp[-4]) + ", " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-4]); delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 237:
+#line 806 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 238:
+#line 811 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    if (!(yyvsp[-5])->empty())
+      *(yyvsp[-6]) += " " + *(yyvsp[-5]);
+    if (!(yyvsp[-6])->empty())
+      *(yyvsp[-6]) += " ";
+    *(yyvsp[-6]) += *(yyvsp[-4]) += " " + *(yyvsp[-3]) + "(" + *(yyvsp[-2]) + ")";
+    delete (yyvsp[-5]); delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-6]);
+  ;}
+    break;
+
+  case 240:
+#line 825 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    (yyvsp[0])->insert(0, ", ");
+    (yyval) = (yyvsp[0]);
+  ;}
+    break;
+
+  case 241:
+#line 829 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {  (yyval) = new std::string(); ;}
+    break;
+
+  case 243:
+#line 834 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(); ;}
+    break;
+
+  case 244:
+#line 837 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += " " + *(yyvsp[-1]);
+    if (!(yyvsp[0])->empty())
+      *(yyvsp[-2]) += " " + *(yyvsp[0]);
+    delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 245:
+#line 844 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-5]) += " " + *(yyvsp[-4]) + ", " + *(yyvsp[-2]) + " " + *(yyvsp[-1]);
+    if (!(yyvsp[0])->empty())
+      *(yyvsp[-5]) += " " + *(yyvsp[0]);
+    delete (yyvsp[-4]); delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 246:
+#line 851 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += " " + *(yyvsp[-1]);
+    if (!(yyvsp[0])->empty())
+      *(yyvsp[-2]) += " " + *(yyvsp[0]);
+    delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 247:
+#line 858 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-5]) += " " + *(yyvsp[-4]) + ", " + *(yyvsp[-2]) + " " + *(yyvsp[-1]);
+    if (!(yyvsp[0])->empty())
+      *(yyvsp[-5]) += " " + *(yyvsp[0]);
+    delete (yyvsp[-4]); delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 248:
+#line 865 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 249:
+#line 870 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    if (!(yyvsp[-3])->empty())
+      *(yyvsp[-3]) += " ";
+    *(yyvsp[-3]) += *(yyvsp[-2]) + " " + *(yyvsp[-1]) + " " + *(yyvsp[0]);
+    delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 250:
+#line 877 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    if (!(yyvsp[-5])->empty())
+      *(yyvsp[-5]) += " ";
+    *(yyvsp[-5]) += *(yyvsp[-4]) + " " + *(yyvsp[-3]) + ", " + *(yyvsp[-1]) + " " + *(yyvsp[0]);
+    delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 251:
+#line 884 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-3]) += *(yyvsp[-2]) + " " + *(yyvsp[-1]) + " " + *(yyvsp[0]);
+    delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+
+      default: break;
+    }
+
+/* Line 1126 of yacc.c.  */
+#line 3207 "UpgradeParser.tab.c"
+\f
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+       {
+         int yytype = YYTRANSLATE (yychar);
+         YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+         YYSIZE_T yysize = yysize0;
+         YYSIZE_T yysize1;
+         int yysize_overflow = 0;
+         char *yymsg = 0;
+#        define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+         char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+         int yyx;
+
+#if 0
+         /* This is so xgettext sees the translatable formats that are
+            constructed on the fly.  */
+         YY_("syntax error, unexpected %s");
+         YY_("syntax error, unexpected %s, expecting %s");
+         YY_("syntax error, unexpected %s, expecting %s or %s");
+         YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+         YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+         char *yyfmt;
+         char const *yyf;
+         static char const yyunexpected[] = "syntax error, unexpected %s";
+         static char const yyexpecting[] = ", expecting %s";
+         static char const yyor[] = " or %s";
+         char yyformat[sizeof yyunexpected
+                       + sizeof yyexpecting - 1
+                       + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+                          * (sizeof yyor - 1))];
+         char const *yyprefix = yyexpecting;
+
+         /* Start YYX at -YYN if negative to avoid negative indexes in
+            YYCHECK.  */
+         int yyxbegin = yyn < 0 ? -yyn : 0;
+
+         /* Stay within bounds of both yycheck and yytname.  */
+         int yychecklim = YYLAST - yyn;
+         int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+         int yycount = 1;
+
+         yyarg[0] = yytname[yytype];
+         yyfmt = yystpcpy (yyformat, yyunexpected);
+
+         for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+           if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+             {
+               if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                 {
+                   yycount = 1;
+                   yysize = yysize0;
+                   yyformat[sizeof yyunexpected - 1] = '\0';
+                   break;
+                 }
+               yyarg[yycount++] = yytname[yyx];
+               yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+               yysize_overflow |= yysize1 < yysize;
+               yysize = yysize1;
+               yyfmt = yystpcpy (yyfmt, yyprefix);
+               yyprefix = yyor;
+             }
+
+         yyf = YY_(yyformat);
+         yysize1 = yysize + yystrlen (yyf);
+         yysize_overflow |= yysize1 < yysize;
+         yysize = yysize1;
+
+         if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+           yymsg = (char *) YYSTACK_ALLOC (yysize);
+         if (yymsg)
+           {
+             /* Avoid sprintf, as that infringes on the user's name space.
+                Don't have undefined behavior even if the translation
+                produced a string with the wrong number of "%s"s.  */
+             char *yyp = yymsg;
+             int yyi = 0;
+             while ((*yyp = *yyf))
+               {
+                 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+                   {
+                     yyp += yytnamerr (yyp, yyarg[yyi++]);
+                     yyf += 2;
+                   }
+                 else
+                   {
+                     yyp++;
+                     yyf++;
+                   }
+               }
+             yyerror (yymsg);
+             YYSTACK_FREE (yymsg);
+           }
+         else
+           {
+             yyerror (YY_("syntax error"));
+             goto yyexhaustedlab;
+           }
+       }
+      else
+#endif /* YYERROR_VERBOSE */
+       yyerror (YY_("syntax error"));
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+        error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+         /* Return failure if at end of input.  */
+         if (yychar == YYEOF)
+           YYABORT;
+        }
+      else
+       {
+         yydestruct ("Error: discarding", yytoken, &yylval);
+         yychar = YYEMPTY;
+       }
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (0)
+     goto yyerrorlab;
+
+yyvsp -= yylen;
+  yyssp -= yylen;
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;     /* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+       {
+         yyn += YYTERROR;
+         if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+           {
+             yyn = yytable[yyn];
+             if (0 < yyn)
+               break;
+           }
+       }
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+       YYABORT;
+
+
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+                yytoken, &yylval);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+                 yystos[*yyssp], yyvsp);
+      YYPOPSTACK;
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+
+
+#line 890 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+
+
+int yyerror(const char *ErrorMsg) {
+  std::string where 
+    = std::string((CurFilename == "-") ? std::string("<stdin>") : CurFilename)
+                  + ":" + llvm::utostr((unsigned) Upgradelineno) + ": ";
+  std::string errMsg = std::string(ErrorMsg) + "\n" + where + " while reading ";
+  if (yychar == YYEMPTY || yychar == 0)
+    errMsg += "end-of-file.";
+  else
+    errMsg += "token: '" + std::string(Upgradetext, Upgradeleng) + "'";
+  std::cerr << errMsg << '\n';
+  exit(1);
+}
+
diff --git a/tools/llvm-upgrade/UpgradeParser.cpp.cvs b/tools/llvm-upgrade/UpgradeParser.cpp.cvs
new file mode 100644 (file)
index 0000000..30393d7
--- /dev/null
@@ -0,0 +1,3489 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+/* Substitute the variable and function names.  */
+#define yyparse Upgradeparse
+#define yylex   Upgradelex
+#define yyerror Upgradeerror
+#define yylval  Upgradelval
+#define yychar  Upgradechar
+#define yydebug Upgradedebug
+#define yynerrs Upgradenerrs
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     ESINT64VAL = 258,
+     EUINT64VAL = 259,
+     SINTVAL = 260,
+     UINTVAL = 261,
+     FPVAL = 262,
+     VOID = 263,
+     BOOL = 264,
+     SBYTE = 265,
+     UBYTE = 266,
+     SHORT = 267,
+     USHORT = 268,
+     INT = 269,
+     UINT = 270,
+     LONG = 271,
+     ULONG = 272,
+     FLOAT = 273,
+     DOUBLE = 274,
+     TYPE = 275,
+     LABEL = 276,
+     VAR_ID = 277,
+     LABELSTR = 278,
+     STRINGCONSTANT = 279,
+     IMPLEMENTATION = 280,
+     ZEROINITIALIZER = 281,
+     TRUETOK = 282,
+     FALSETOK = 283,
+     BEGINTOK = 284,
+     ENDTOK = 285,
+     DECLARE = 286,
+     GLOBAL = 287,
+     CONSTANT = 288,
+     SECTION = 289,
+     VOLATILE = 290,
+     TO = 291,
+     DOTDOTDOT = 292,
+     NULL_TOK = 293,
+     UNDEF = 294,
+     CONST = 295,
+     INTERNAL = 296,
+     LINKONCE = 297,
+     WEAK = 298,
+     APPENDING = 299,
+     DLLIMPORT = 300,
+     DLLEXPORT = 301,
+     EXTERN_WEAK = 302,
+     OPAQUE = 303,
+     NOT = 304,
+     EXTERNAL = 305,
+     TARGET = 306,
+     TRIPLE = 307,
+     ENDIAN = 308,
+     POINTERSIZE = 309,
+     LITTLE = 310,
+     BIG = 311,
+     ALIGN = 312,
+     DEPLIBS = 313,
+     CALL = 314,
+     TAIL = 315,
+     ASM_TOK = 316,
+     MODULE = 317,
+     SIDEEFFECT = 318,
+     CC_TOK = 319,
+     CCC_TOK = 320,
+     CSRETCC_TOK = 321,
+     FASTCC_TOK = 322,
+     COLDCC_TOK = 323,
+     X86_STDCALLCC_TOK = 324,
+     X86_FASTCALLCC_TOK = 325,
+     DATALAYOUT = 326,
+     RET = 327,
+     BR = 328,
+     SWITCH = 329,
+     INVOKE = 330,
+     UNWIND = 331,
+     UNREACHABLE = 332,
+     ADD = 333,
+     SUB = 334,
+     MUL = 335,
+     UDIV = 336,
+     SDIV = 337,
+     FDIV = 338,
+     UREM = 339,
+     SREM = 340,
+     FREM = 341,
+     AND = 342,
+     OR = 343,
+     XOR = 344,
+     SETLE = 345,
+     SETGE = 346,
+     SETLT = 347,
+     SETGT = 348,
+     SETEQ = 349,
+     SETNE = 350,
+     MALLOC = 351,
+     ALLOCA = 352,
+     FREE = 353,
+     LOAD = 354,
+     STORE = 355,
+     GETELEMENTPTR = 356,
+     TRUNC = 357,
+     ZEXT = 358,
+     SEXT = 359,
+     FPTRUNC = 360,
+     FPEXT = 361,
+     BITCAST = 362,
+     UITOFP = 363,
+     SITOFP = 364,
+     FPTOUI = 365,
+     FPTOSI = 366,
+     INTTOPTR = 367,
+     PTRTOINT = 368,
+     PHI_TOK = 369,
+     SELECT = 370,
+     SHL = 371,
+     LSHR = 372,
+     ASHR = 373,
+     VAARG = 374,
+     EXTRACTELEMENT = 375,
+     INSERTELEMENT = 376,
+     SHUFFLEVECTOR = 377,
+     CAST = 378
+   };
+#endif
+/* Tokens.  */
+#define ESINT64VAL 258
+#define EUINT64VAL 259
+#define SINTVAL 260
+#define UINTVAL 261
+#define FPVAL 262
+#define VOID 263
+#define BOOL 264
+#define SBYTE 265
+#define UBYTE 266
+#define SHORT 267
+#define USHORT 268
+#define INT 269
+#define UINT 270
+#define LONG 271
+#define ULONG 272
+#define FLOAT 273
+#define DOUBLE 274
+#define TYPE 275
+#define LABEL 276
+#define VAR_ID 277
+#define LABELSTR 278
+#define STRINGCONSTANT 279
+#define IMPLEMENTATION 280
+#define ZEROINITIALIZER 281
+#define TRUETOK 282
+#define FALSETOK 283
+#define BEGINTOK 284
+#define ENDTOK 285
+#define DECLARE 286
+#define GLOBAL 287
+#define CONSTANT 288
+#define SECTION 289
+#define VOLATILE 290
+#define TO 291
+#define DOTDOTDOT 292
+#define NULL_TOK 293
+#define UNDEF 294
+#define CONST 295
+#define INTERNAL 296
+#define LINKONCE 297
+#define WEAK 298
+#define APPENDING 299
+#define DLLIMPORT 300
+#define DLLEXPORT 301
+#define EXTERN_WEAK 302
+#define OPAQUE 303
+#define NOT 304
+#define EXTERNAL 305
+#define TARGET 306
+#define TRIPLE 307
+#define ENDIAN 308
+#define POINTERSIZE 309
+#define LITTLE 310
+#define BIG 311
+#define ALIGN 312
+#define DEPLIBS 313
+#define CALL 314
+#define TAIL 315
+#define ASM_TOK 316
+#define MODULE 317
+#define SIDEEFFECT 318
+#define CC_TOK 319
+#define CCC_TOK 320
+#define CSRETCC_TOK 321
+#define FASTCC_TOK 322
+#define COLDCC_TOK 323
+#define X86_STDCALLCC_TOK 324
+#define X86_FASTCALLCC_TOK 325
+#define DATALAYOUT 326
+#define RET 327
+#define BR 328
+#define SWITCH 329
+#define INVOKE 330
+#define UNWIND 331
+#define UNREACHABLE 332
+#define ADD 333
+#define SUB 334
+#define MUL 335
+#define UDIV 336
+#define SDIV 337
+#define FDIV 338
+#define UREM 339
+#define SREM 340
+#define FREM 341
+#define AND 342
+#define OR 343
+#define XOR 344
+#define SETLE 345
+#define SETGE 346
+#define SETLT 347
+#define SETGT 348
+#define SETEQ 349
+#define SETNE 350
+#define MALLOC 351
+#define ALLOCA 352
+#define FREE 353
+#define LOAD 354
+#define STORE 355
+#define GETELEMENTPTR 356
+#define TRUNC 357
+#define ZEXT 358
+#define SEXT 359
+#define FPTRUNC 360
+#define FPEXT 361
+#define BITCAST 362
+#define UITOFP 363
+#define SITOFP 364
+#define FPTOUI 365
+#define FPTOSI 366
+#define INTTOPTR 367
+#define PTRTOINT 368
+#define PHI_TOK 369
+#define SELECT 370
+#define SHL 371
+#define LSHR 372
+#define ASHR 373
+#define VAARG 374
+#define EXTRACTELEMENT 375
+#define INSERTELEMENT 376
+#define SHUFFLEVECTOR 377
+#define CAST 378
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 14 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+
+#define YYERROR_VERBOSE 1
+#define YYSTYPE std::string*
+
+#include "ParserInternals.h"
+#include <llvm/ADT/StringExtras.h>
+#include <llvm/System/MappedFile.h>
+#include <algorithm>
+#include <list>
+#include <utility>
+#include <iostream>
+
+
+int yylex();                       // declaration" of xxx warnings.
+int yyparse();
+
+static std::string CurFilename;
+
+static std::ostream *O = 0;
+
+void UpgradeAssembly(const std::string &infile, std::ostream &out)
+{
+  Upgradelineno = 1; 
+  CurFilename = infile;
+  llvm::sys::Path p(infile);
+  llvm::sys::MappedFile mf;
+  mf.open(p);
+  mf.map();
+  const char* base = mf.charBase();
+  size_t sz = mf.size();
+
+  set_scan_bytes(base, sz);
+
+  O = &out;
+
+  if (yyparse()) {
+    std::cerr << "Parse failed.\n";
+    exit(1);
+  }
+}
+
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+typedef int YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 219 of yacc.c.  */
+#line 393 "UpgradeParser.tab.c"
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#ifndef YY_
+# if YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if defined (__STDC__) || defined (__cplusplus)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     define YYINCLUDED_STDLIB_H
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+#  endif
+#  ifdef __cplusplus
+extern "C" {
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+       && (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+       && (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifdef __cplusplus
+}
+#  endif
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+        || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short int yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))                    \
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined (__GNUC__) && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)             \
+      do                                       \
+       {                                       \
+         YYSIZE_T yyi;                         \
+         for (yyi = 0; yyi < (Count); yyi++)   \
+           (To)[yyi] = (From)[yyi];            \
+       }                                       \
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)                                       \
+    do                                                                 \
+      {                                                                        \
+       YYSIZE_T yynewbytes;                                            \
+       YYCOPY (&yyptr->Stack, Stack, yysize);                          \
+       Stack = &yyptr->Stack;                                          \
+       yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+       yyptr += yynewbytes / sizeof (*yyptr);                          \
+      }                                                                        \
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  4
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   1246
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  138
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  71
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  251
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  510
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   378
+
+#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,
+     127,   128,   136,     2,   125,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     132,   124,   133,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,   129,   126,   131,     2,     2,     2,     2,     2,   137,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     130,     2,     2,   134,     2,   135,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned short int yyprhs[] =
+{
+       0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
+      19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
+      39,    41,    43,    45,    47,    49,    51,    53,    55,    57,
+      59,    61,    63,    65,    67,    69,    71,    73,    75,    77,
+      79,    82,    83,    85,    87,    89,    91,    93,    95,    97,
+      98,   100,   102,   104,   106,   108,   110,   113,   114,   115,
+     118,   119,   123,   126,   127,   129,   130,   134,   136,   139,
+     141,   143,   145,   147,   149,   151,   153,   155,   157,   159,
+     161,   163,   165,   167,   169,   171,   173,   175,   177,   179,
+     181,   184,   189,   195,   201,   205,   208,   211,   213,   217,
+     219,   223,   225,   226,   231,   235,   239,   244,   249,   253,
+     256,   259,   262,   265,   268,   271,   274,   277,   280,   283,
+     290,   296,   305,   312,   319,   326,   333,   340,   349,   358,
+     362,   364,   366,   368,   370,   373,   376,   381,   384,   386,
+     391,   394,   399,   406,   413,   420,   427,   431,   436,   437,
+     439,   441,   443,   447,   451,   455,   459,   463,   467,   469,
+     470,   472,   474,   476,   477,   480,   484,   486,   488,   492,
+     494,   495,   504,   506,   508,   512,   514,   516,   520,   521,
+     523,   525,   529,   530,   532,   534,   536,   538,   540,   542,
+     544,   546,   548,   552,   554,   560,   562,   564,   566,   568,
+     571,   574,   576,   580,   583,   584,   586,   589,   592,   596,
+     606,   616,   625,   639,   641,   643,   650,   656,   659,   666,
+     674,   676,   680,   682,   683,   686,   688,   694,   700,   706,
+     709,   714,   719,   726,   731,   736,   743,   750,   753,   761,
+     763,   766,   767,   769,   770,   774,   781,   785,   792,   795,
+     800,   807
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short int yyrhs[] =
+{
+     170,     0,    -1,     5,    -1,     6,    -1,     3,    -1,     4,
+      -1,    78,    -1,    79,    -1,    80,    -1,    81,    -1,    82,
+      -1,    83,    -1,    84,    -1,    85,    -1,    86,    -1,    87,
+      -1,    88,    -1,    89,    -1,    90,    -1,    91,    -1,    92,
+      -1,    93,    -1,    94,    -1,    95,    -1,   123,    -1,   116,
+      -1,   117,    -1,   118,    -1,    16,    -1,    14,    -1,    12,
+      -1,    10,    -1,    17,    -1,    15,    -1,    13,    -1,    11,
+      -1,   146,    -1,   147,    -1,    18,    -1,    19,    -1,   178,
+     124,    -1,    -1,    41,    -1,    42,    -1,    43,    -1,    44,
+      -1,    45,    -1,    46,    -1,    47,    -1,    -1,    65,    -1,
+      66,    -1,    67,    -1,    68,    -1,    69,    -1,    70,    -1,
+      64,     4,    -1,    -1,    -1,    57,     4,    -1,    -1,   125,
+      57,     4,    -1,    34,    24,    -1,    -1,   155,    -1,    -1,
+     125,   158,   157,    -1,   155,    -1,    57,     4,    -1,   161,
+      -1,     8,    -1,   163,    -1,     8,    -1,   163,    -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,    48,    -1,   162,    -1,   192,
+      -1,   126,     4,    -1,   160,   127,   165,   128,    -1,   129,
+       4,   130,   163,   131,    -1,   132,     4,   130,   163,   133,
+      -1,   134,   164,   135,    -1,   134,   135,    -1,   163,   136,
+      -1,   163,    -1,   164,   125,   163,    -1,   164,    -1,   164,
+     125,    37,    -1,    37,    -1,    -1,   161,   129,   168,   131,
+      -1,   161,   129,   131,    -1,   161,   137,    24,    -1,   161,
+     132,   168,   133,    -1,   161,   134,   168,   135,    -1,   161,
+     134,   135,    -1,   161,    38,    -1,   161,    39,    -1,   161,
+     192,    -1,   161,   167,    -1,   161,    26,    -1,   146,   140,
+      -1,   147,     4,    -1,     9,    27,    -1,     9,    28,    -1,
+     149,     7,    -1,   144,   127,   166,    36,   161,   128,    -1,
+     101,   127,   166,   206,   128,    -1,   115,   127,   166,   125,
+     166,   125,   166,   128,    -1,   141,   127,   166,   125,   166,
+     128,    -1,   142,   127,   166,   125,   166,   128,    -1,   143,
+     127,   166,   125,   166,   128,    -1,   145,   127,   166,   125,
+     166,   128,    -1,   120,   127,   166,   125,   166,   128,    -1,
+     121,   127,   166,   125,   166,   125,   166,   128,    -1,   122,
+     127,   166,   125,   166,   125,   166,   128,    -1,   168,   125,
+     166,    -1,   166,    -1,    32,    -1,    33,    -1,   171,    -1,
+     171,   187,    -1,   171,   189,    -1,   171,    62,    61,   173,
+      -1,   171,    25,    -1,   172,    -1,   172,   150,    20,   159,
+      -1,   172,   189,    -1,   172,    62,    61,   173,    -1,   172,
+     150,   151,   169,   166,   157,    -1,   172,   150,    50,   169,
+     161,   157,    -1,   172,   150,    45,   169,   161,   157,    -1,
+     172,   150,    47,   169,   161,   157,    -1,   172,    51,   175,
+      -1,   172,    58,   124,   176,    -1,    -1,    24,    -1,    56,
+      -1,    55,    -1,    53,   124,   174,    -1,    54,   124,     4,
+      -1,    52,   124,    24,    -1,    71,   124,    24,    -1,   129,
+     177,   131,    -1,   177,   125,    24,    -1,    24,    -1,    -1,
+      22,    -1,    24,    -1,   178,    -1,    -1,   161,   179,    -1,
+     181,   125,   180,    -1,   180,    -1,   181,    -1,   181,   125,
+      37,    -1,    37,    -1,    -1,   152,   159,   178,   127,   182,
+     128,   156,   153,    -1,    29,    -1,   134,    -1,   151,   183,
+     184,    -1,    30,    -1,   135,    -1,   185,   195,   186,    -1,
+      -1,    45,    -1,    47,    -1,    31,   188,   183,    -1,    -1,
+      63,    -1,     3,    -1,     4,    -1,     7,    -1,    27,    -1,
+      28,    -1,    38,    -1,    39,    -1,    26,    -1,   132,   168,
+     133,    -1,   167,    -1,    61,   190,    24,   125,    24,    -1,
+     139,    -1,   178,    -1,   192,    -1,   191,    -1,   161,   193,
+      -1,   195,   196,    -1,   196,    -1,   197,   150,   198,    -1,
+     197,   200,    -1,    -1,    23,    -1,    72,   194,    -1,    72,
+       8,    -1,    73,    21,   193,    -1,    73,     9,   193,   125,
+      21,   193,   125,    21,   193,    -1,    74,   148,   193,   125,
+      21,   193,   129,   199,   131,    -1,    74,   148,   193,   125,
+      21,   193,   129,   131,    -1,    75,   152,   159,   193,   127,
+     203,   128,    36,    21,   193,    76,    21,   193,    -1,    76,
+      -1,    77,    -1,   199,   148,   191,   125,    21,   193,    -1,
+     148,   191,   125,    21,   193,    -1,   150,   205,    -1,   161,
+     129,   193,   125,   193,   131,    -1,   201,   125,   129,   193,
+     125,   193,   131,    -1,   194,    -1,   202,   125,   194,    -1,
+     202,    -1,    -1,    60,    59,    -1,    59,    -1,   141,   161,
+     193,   125,   193,    -1,   142,   161,   193,   125,   193,    -1,
+     143,   161,   193,   125,   193,    -1,    49,   194,    -1,   145,
+     194,   125,   194,    -1,   144,   194,    36,   161,    -1,   115,
+     194,   125,   194,   125,   194,    -1,   119,   194,   125,   161,
+      -1,   120,   194,   125,   194,    -1,   121,   194,   125,   194,
+     125,   194,    -1,   122,   194,   125,   194,   125,   194,    -1,
+     114,   201,    -1,   204,   152,   159,   193,   127,   203,   128,
+      -1,   208,    -1,   125,   202,    -1,    -1,    35,    -1,    -1,
+      96,   161,   154,    -1,    96,   161,   125,    15,   193,   154,
+      -1,    97,   161,   154,    -1,    97,   161,   125,    15,   193,
+     154,    -1,    98,   194,    -1,   207,    99,   161,   193,    -1,
+     207,   100,   194,   125,   161,   193,    -1,   101,   161,   193,
+     206,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short int yyrline[] =
+{
+       0,    89,    89,    89,    90,    90,    94,    94,    94,    94,
+      94,    94,    94,    94,    94,    95,    95,    95,    96,    96,
+      96,    96,    96,    96,    97,    98,    98,    98,   102,   102,
+     102,   102,   103,   103,   103,   103,   104,   104,   105,   105,
+     108,   112,   117,   117,   117,   117,   117,   117,   118,   119,
+     122,   122,   122,   122,   122,   123,   123,   124,   129,   130,
+     133,   134,   142,   148,   149,   152,   153,   162,   163,   176,
+     176,   177,   177,   178,   182,   182,   182,   182,   182,   182,
+     182,   183,   183,   183,   183,   183,   183,   184,   184,   184,
+     188,   192,   197,   203,   209,   214,   217,   225,   225,   232,
+     233,   238,   241,   251,   256,   259,   264,   269,   274,   277,
+     282,   287,   292,   297,   303,   308,   313,   318,   323,   330,
+     335,   337,   339,   341,   343,   345,   347,   349,   351,   356,
+     358,   363,   363,   373,   378,   381,   386,   389,   392,   396,
+     401,   406,   411,   416,   421,   426,   431,   436,   441,   446,
+     448,   448,   451,   456,   461,   466,   473,   480,   485,   486,
+     494,   494,   495,   495,   497,   503,   506,   510,   513,   517,
+     520,   524,   539,   542,   546,   555,   556,   558,   564,   565,
+     566,   570,   580,   582,   585,   585,   585,   585,   585,   586,
+     586,   586,   587,   592,   593,   602,   602,   605,   605,   611,
+     617,   619,   626,   630,   635,   638,   644,   649,   654,   659,
+     665,   671,   677,   686,   691,   697,   702,   709,   716,   721,
+     729,   730,   738,   739,   743,   748,   751,   756,   761,   766,
+     771,   776,   781,   786,   791,   796,   801,   806,   811,   820,
+     825,   829,   833,   834,   837,   844,   851,   858,   865,   870,
+     877,   884
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "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", "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK", "OPAQUE",
+  "NOT", "EXTERNAL", "TARGET", "TRIPLE", "ENDIAN", "POINTERSIZE", "LITTLE",
+  "BIG", "ALIGN", "DEPLIBS", "CALL", "TAIL", "ASM_TOK", "MODULE",
+  "SIDEEFFECT", "CC_TOK", "CCC_TOK", "CSRETCC_TOK", "FASTCC_TOK",
+  "COLDCC_TOK", "X86_STDCALLCC_TOK", "X86_FASTCALLCC_TOK", "DATALAYOUT",
+  "RET", "BR", "SWITCH", "INVOKE", "UNWIND", "UNREACHABLE", "ADD", "SUB",
+  "MUL", "UDIV", "SDIV", "FDIV", "UREM", "SREM", "FREM", "AND", "OR",
+  "XOR", "SETLE", "SETGE", "SETLT", "SETGT", "SETEQ", "SETNE", "MALLOC",
+  "ALLOCA", "FREE", "LOAD", "STORE", "GETELEMENTPTR", "TRUNC", "ZEXT",
+  "SEXT", "FPTRUNC", "FPEXT", "BITCAST", "UITOFP", "SITOFP", "FPTOUI",
+  "FPTOSI", "INTTOPTR", "PTRTOINT", "PHI_TOK", "SELECT", "SHL", "LSHR",
+  "ASHR", "VAARG", "EXTRACTELEMENT", "INSERTELEMENT", "SHUFFLEVECTOR",
+  "CAST", "'='", "','", "'\\\\'", "'('", "')'", "'['", "'x'", "']'", "'<'",
+  "'>'", "'{'", "'}'", "'*'", "'c'", "$accept", "INTVAL", "EINT64VAL",
+  "ArithmeticOps", "LogicalOps", "SetCondOps", "CastOps", "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", "DefinitionList",
+  "ConstPool", "AsmBlock", "BigOrLittle", "TargetDefinition",
+  "LibrariesDefinition", "LibList", "Name", "OptName", "ArgVal",
+  "ArgListH", "ArgList", "FunctionHeaderH", "BEGIN", "FunctionHeader",
+  "END", "Function", "FnDeclareLinkage", "FunctionProto", "OptSideEffect",
+  "ConstValueRef", "SymbolicValueRef", "ValueRef", "ResolvedVal",
+  "BasicBlockList", "BasicBlock", "InstructionList", "BBTerminatorInst",
+  "JumpTable", "Inst", "PHIList", "ValueRefList", "ValueRefListE",
+  "OptTailCall", "InstVal", "IndexList", "OptVolatile", "MemoryInst", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short int yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
+     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
+     375,   376,   377,   378,    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,   138,   139,   139,   140,   140,   141,   141,   141,   141,
+     141,   141,   141,   141,   141,   142,   142,   142,   143,   143,
+     143,   143,   143,   143,   144,   145,   145,   145,   146,   146,
+     146,   146,   147,   147,   147,   147,   148,   148,   149,   149,
+     150,   150,   151,   151,   151,   151,   151,   151,   151,   151,
+     152,   152,   152,   152,   152,   152,   152,   152,   153,   153,
+     154,   154,   155,   156,   156,   157,   157,   158,   158,   159,
+     159,   160,   160,   161,   162,   162,   162,   162,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,   163,   163,   163,
+     163,   163,   163,   163,   163,   163,   163,   164,   164,   165,
+     165,   165,   165,   166,   166,   166,   166,   166,   166,   166,
+     166,   166,   166,   166,   166,   166,   166,   166,   166,   167,
+     167,   167,   167,   167,   167,   167,   167,   167,   167,   168,
+     168,   169,   169,   170,   171,   171,   171,   171,   171,   172,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   173,
+     174,   174,   175,   175,   175,   175,   176,   177,   177,   177,
+     178,   178,   179,   179,   180,   181,   181,   182,   182,   182,
+     182,   183,   184,   184,   185,   186,   186,   187,   188,   188,
+     188,   189,   190,   190,   191,   191,   191,   191,   191,   191,
+     191,   191,   191,   191,   191,   192,   192,   193,   193,   194,
+     195,   195,   196,   197,   197,   197,   198,   198,   198,   198,
+     198,   198,   198,   198,   198,   199,   199,   200,   201,   201,
+     202,   202,   203,   203,   204,   204,   205,   205,   205,   205,
+     205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
+     206,   206,   207,   207,   208,   208,   208,   208,   208,   208,
+     208,   208
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       2,     0,     1,     1,     1,     1,     1,     1,     1,     0,
+       1,     1,     1,     1,     1,     1,     2,     0,     0,     2,
+       0,     3,     2,     0,     1,     0,     3,     1,     2,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     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,     8,     8,     3,
+       1,     1,     1,     1,     2,     2,     4,     2,     1,     4,
+       2,     4,     6,     6,     6,     6,     3,     4,     0,     1,
+       1,     1,     3,     3,     3,     3,     3,     3,     1,     0,
+       1,     1,     1,     0,     2,     3,     1,     1,     3,     1,
+       0,     8,     1,     1,     3,     1,     1,     3,     0,     1,
+       1,     3,     0,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     3,     1,     5,     1,     1,     1,     1,     2,
+       2,     1,     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,     6,     6,     2,     7,     1,
+       2,     0,     1,     0,     3,     6,     3,     6,     2,     4,
+       6,     4
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned char yydefact[] =
+{
+     148,     0,    49,   138,     1,   137,   178,    42,    43,    44,
+      45,    46,    47,    48,     0,    57,   204,   134,   135,   160,
+     161,     0,     0,     0,    49,     0,   140,   179,   180,    57,
+       0,     0,    50,    51,    52,    53,    54,    55,     0,     0,
+     205,   204,   201,    41,     0,     0,     0,     0,   146,     0,
+       0,     0,     0,     0,     0,     0,    40,   181,   149,   136,
+      56,     2,     3,    70,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,     0,     0,
+       0,     0,   195,     0,     0,    69,    88,    73,   196,    89,
+     172,   173,   174,   175,   176,   177,   200,   243,   203,     0,
+       0,     0,     0,   159,   147,   141,   139,   131,   132,     0,
+       0,     0,     0,    90,     0,     0,    72,    95,    97,     0,
+       0,   102,    96,   242,     0,   225,     0,     0,     0,     0,
+      57,   213,   214,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,     0,     0,     0,     0,     0,     0,    25,    26,    27,
+       0,     0,     0,     0,    24,     0,     0,     0,     0,     0,
+     202,    57,   217,     0,   239,   154,   151,   150,   152,   153,
+     155,   158,     0,    65,    65,    65,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,     0,     0,     0,
+       0,    65,     0,     0,     0,    94,   170,   101,    99,     0,
+       0,   229,   224,   207,   206,     0,     0,    31,    35,    30,
+      34,    29,    33,    28,    32,    36,    37,     0,     0,    60,
+      60,   248,     0,     0,   237,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   156,
+       0,   144,   145,   143,   116,   117,     4,     5,   114,   115,
+     118,   113,   109,   110,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   112,   111,
+     142,    71,    71,    98,   169,   163,   166,   167,     0,     0,
+      91,   184,   185,   186,   191,   187,   188,   189,   190,   182,
+       0,   193,   198,   197,   199,     0,   208,     0,     0,     0,
+     244,     0,   246,   241,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   157,
+       0,     0,    67,    65,     0,     0,     0,     0,     0,   104,
+     130,     0,     0,   108,     0,   105,     0,     0,     0,     0,
+       0,    92,    93,   162,   164,     0,    63,   100,   183,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   251,     0,
+       0,     0,   233,   234,     0,     0,     0,     0,     0,   231,
+     230,     0,   249,     0,    62,    68,    66,   241,     0,     0,
+       0,     0,     0,   103,   106,   107,     0,     0,     0,     0,
+       0,   168,   165,    64,    58,     0,   192,     0,     0,   223,
+      60,    61,    60,   220,   240,     0,     0,     0,     0,     0,
+     226,   227,   228,   223,     0,     0,     0,     0,     0,     0,
+     129,     0,     0,     0,     0,     0,     0,   171,     0,     0,
+       0,   222,     0,     0,   245,   247,     0,     0,     0,   232,
+     235,   236,     0,   250,   120,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    59,   194,     0,     0,     0,   221,
+     218,     0,   238,     0,   126,     0,     0,   122,   123,   124,
+     119,   125,     0,   211,     0,     0,     0,   219,     0,     0,
+       0,   209,     0,   210,     0,     0,   121,   127,   128,     0,
+       0,     0,     0,     0,     0,   216,     0,     0,   215,   212
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short int yydefgoto[] =
+{
+      -1,    82,   258,   273,   274,   275,   276,   277,   197,   198,
+     227,   199,    24,    15,    38,   437,   310,   332,   404,   251,
+     333,    83,    84,   200,    86,    87,   119,   209,   340,   301,
+     341,   109,     1,     2,     3,    59,   178,    48,   104,   182,
+      88,   354,   286,   287,   288,    39,    92,    16,    95,    17,
+      29,    18,   359,   302,    89,   304,   413,    41,    42,    43,
+     170,   485,    98,   234,   441,   442,   171,   172,   368,   173,
+     174
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -451
+static const short int yypact[] =
+{
+    -451,    18,   670,   213,  -451,  -451,    63,  -451,  -451,  -451,
+    -451,  -451,  -451,  -451,   -39,   308,    33,  -451,  -451,  -451,
+    -451,    14,   -36,    31,   150,   -12,  -451,  -451,  -451,   308,
+      96,   136,  -451,  -451,  -451,  -451,  -451,  -451,   971,   -13,
+    -451,    -9,  -451,   119,    10,    20,    37,    56,  -451,    40,
+      96,   971,    45,    45,    45,    45,  -451,  -451,  -451,  -451,
+    -451,  -451,  -451,    52,  -451,  -451,  -451,  -451,  -451,  -451,
+    -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,   177,   179,
+     180,    85,  -451,   119,    58,  -451,  -451,   -52,  -451,  -451,
+    -451,  -451,  -451,  -451,  -451,  -451,  -451,  1123,  -451,   163,
+      97,   185,   174,   178,  -451,  -451,  -451,  -451,  -451,  1019,
+    1019,  1019,  1060,  -451,    76,    82,  -451,  -451,   -52,   -85,
+      86,   786,  -451,  -451,  1019,  -451,   157,  1101,    30,   278,
+     308,  -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,
+    -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,
+    -451,  1019,  1019,  1019,  1019,  1019,  1019,  -451,  -451,  -451,
+    1019,  1019,  1019,  1019,  -451,  1019,  1019,  1019,  1019,  1019,
+    -451,   308,  -451,    55,  -451,  -451,  -451,  -451,  -451,  -451,
+    -451,  -451,   -49,    90,    90,    90,   130,   156,   214,   160,
+     217,   162,   218,   168,   220,   224,   225,   170,   221,   227,
+     387,    90,  1019,  1019,  1019,  -451,   827,  -451,   111,   122,
+     560,  -451,  -451,    52,  -451,   560,   560,  -451,  -451,  -451,
+    -451,  -451,  -451,  -451,  -451,  -451,  -451,   560,   971,   123,
+     126,  -451,   560,   118,   127,   128,   140,   141,   142,   143,
+     560,   560,   560,   233,   145,   971,  1019,  1019,   248,  -451,
+     -23,  -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,
+    -451,  -451,  -451,  -451,   146,   147,   149,   169,   171,   868,
+    1060,   537,   253,   173,   181,   182,   183,   187,  -451,  -451,
+    -451,   -94,     6,   -52,  -451,   119,  -451,   158,   188,   889,
+    -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,  -451,   234,
+    1060,  -451,  -451,  -451,  -451,   190,  -451,   197,   560,    -5,
+    -451,     8,  -451,   201,   560,   199,  1019,  1019,  1019,  1019,
+    1019,   205,   207,   208,  1019,  1019,   560,   560,   209,  -451,
+     282,   303,  -451,    90,  1060,  1060,  1060,  1060,  1060,  -451,
+    -451,   -44,   -89,  -451,   -56,  -451,  1060,  1060,  1060,  1060,
+    1060,  -451,  -451,  -451,  -451,   930,   304,  -451,  -451,   313,
+     -14,   320,   323,   219,   560,   344,   560,  1019,  -451,   226,
+     560,   228,  -451,  -451,   229,   230,   560,   560,   560,  -451,
+    -451,   222,  -451,  1019,  -451,  -451,  -451,   201,   231,   238,
+     239,   241,  1060,  -451,  -451,  -451,   244,   245,   257,   348,
+     261,  -451,  -451,  -451,   330,   263,  -451,   560,   560,  1019,
+     264,  -451,   264,  -451,   265,   560,   266,  1019,  1019,  1019,
+    -451,  -451,  -451,  1019,   560,   267,  1060,  1060,  1060,  1060,
+    -451,  1060,  1060,  1060,  1019,  1060,   390,  -451,   373,   273,
+     270,   265,   272,   345,  -451,  -451,  1019,   274,   560,  -451,
+    -451,  -451,   275,  -451,  -451,   276,   279,   281,   285,   284,
+     286,   287,   288,   290,  -451,  -451,   383,    15,   384,  -451,
+    -451,   291,  -451,  1060,  -451,  1060,  1060,  -451,  -451,  -451,
+    -451,  -451,   560,  -451,   661,    47,   398,  -451,   293,   295,
+     296,  -451,   302,  -451,   661,   560,  -451,  -451,  -451,   408,
+     306,   356,   560,   412,   414,  -451,   560,   560,  -451,  -451
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const short int yypgoto[] =
+{
+    -451,  -451,  -451,   339,   341,   342,   343,   346,  -128,  -127,
+    -450,  -451,   401,   421,   -97,  -451,  -224,    92,  -451,  -177,
+    -451,   -46,  -451,   -38,  -451,   -66,   328,  -451,  -108,   250,
+    -251,    94,  -451,  -451,  -451,   402,  -451,  -451,  -451,  -451,
+       0,  -451,    98,  -451,  -451,   422,  -451,  -451,  -451,  -451,
+    -451,   451,  -451,  -414,   -65,   120,  -115,  -451,   415,  -451,
+    -451,  -451,  -451,  -451,    88,    34,  -451,  -451,    71,  -451,
+    -451
+};
+
+/* 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 -134
+static const short int yytable[] =
+{
+      85,   225,   226,    25,   201,   106,   312,   252,   253,   211,
+     364,   330,   214,    85,    40,   118,    90,   484,     4,   342,
+     344,    93,    30,   366,   280,   217,   218,   219,   220,   221,
+     222,   223,   224,   228,   331,   494,   392,   351,   231,   215,
+     204,   235,   122,    25,   394,   236,   237,   238,   239,   360,
+     205,   216,   365,   243,   244,   118,    40,   217,   218,   219,
+     220,   221,   222,   223,   224,   365,    44,    45,    46,   392,
+     492,   183,   184,   185,   245,   -71,   248,   107,   108,   395,
+     500,   392,   249,   120,   122,    47,   210,   393,    49,   210,
+      61,    62,    50,   116,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    19,    27,    20,
+      28,   392,    56,   229,   230,   210,   232,   233,   210,   406,
+      58,    91,   210,   210,   210,   210,    94,   240,   241,   242,
+     210,   210,   328,    77,    99,   279,   281,   282,   283,   352,
+      60,    19,   122,    20,   100,   303,   483,   110,   111,   112,
+     303,   303,   176,   177,   246,   247,   386,   254,   255,   -31,
+     -31,   101,   303,   -30,   -30,   -29,   -29,   303,   285,   103,
+      51,   -28,   -28,   256,   257,   303,   303,   303,   493,   -72,
+     102,   113,   308,   114,   115,   121,   444,   175,   445,   179,
+      85,     7,     8,     9,    10,    52,    12,    53,   180,   326,
+      54,   371,   181,   373,   374,   375,   202,    85,   327,   210,
+     380,    78,   203,   206,    79,   250,   212,    80,   -35,    81,
+     117,   -34,   -33,   283,   -32,   259,   387,   388,   389,   390,
+     391,   -38,   -39,   -41,   260,    19,   289,    20,   396,   397,
+     398,   399,   400,   303,     6,   -41,   -41,   314,   309,   303,
+     290,   311,   315,   316,   -41,   -41,   -41,   -41,   -41,   -41,
+     -41,   303,   303,   -41,    21,   317,   318,   319,   320,   324,
+     325,    22,   329,   334,   335,    23,   336,   345,   210,   372,
+     210,   210,   210,   355,   430,   353,   379,   210,   217,   218,
+     219,   220,   221,   222,   223,   224,   337,   358,   338,   303,
+     346,   303,   449,   450,   451,   303,   384,   385,   347,   348,
+     349,   303,   303,   303,   350,   361,   356,   285,   455,   456,
+     457,   458,   362,   459,   460,   461,   367,   463,   370,   210,
+     376,   469,   377,   378,   383,   305,   306,   405,   330,   225,
+     226,   407,   303,   303,   408,   424,   409,   307,   411,   423,
+     303,   415,   313,   417,   418,   419,   426,   225,   226,   303,
+     321,   322,   323,   427,   428,   488,   429,   489,   490,   431,
+     432,   210,    31,    32,    33,    34,    35,    36,    37,   210,
+     210,   210,   433,   303,   434,   210,   435,   436,   438,   443,
+     446,   448,    61,    62,   464,   454,   462,   465,   466,   467,
+     468,   473,   365,   472,   482,   470,   475,   474,   210,    19,
+     476,    20,   477,   261,   478,   479,   480,   303,   481,   495,
+     486,   496,   487,   497,   498,   262,   263,   499,   363,   502,
+     303,   503,   504,   506,   369,   507,   165,   303,   166,   167,
+     168,   303,   303,   169,    97,    55,   381,   382,   403,   208,
+     278,    57,   105,   402,    26,   414,    96,   452,   425,     0,
+       0,     0,     0,     0,     0,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,     0,   410,     0,   412,     0,   264,     0,
+     416,     0,     0,     0,     0,     0,   420,   421,   422,     0,
+       0,     0,   265,   157,   158,   159,     0,   266,   267,   268,
+     164,     0,     0,     0,     0,     0,   269,     0,     0,   270,
+       0,   271,     0,     0,   272,     0,     0,   439,   440,     0,
+       0,     0,     0,     0,     0,   447,     0,     0,     0,     0,
+       0,     0,    61,    62,   453,   116,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,    75,    76,    19,
+       0,    20,     0,   291,   292,    61,    62,   293,   471,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    19,     0,    20,    77,   294,   295,   296,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   297,   298,
+       0,     0,   491,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   501,     0,     0,     0,     0,
+       0,   299,   505,     0,     0,     0,   508,   509,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,     0,     0,     0,     0,
+       0,   264,     0,    78,   291,   292,    79,     0,   293,    80,
+    -133,    81,   343,     0,     0,   265,   157,   158,   159,     0,
+     266,   267,   268,   164,     0,     0,     0,   294,   295,   296,
+       0,     0,   300,     0,     0,     5,     0,     0,     0,   297,
+     298,     6,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     7,     8,     9,    10,    11,    12,    13,     0,     0,
+       0,     0,   299,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    14,     0,     0,     0,     0,     0,     0,   133,
+     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,     0,     0,     0,
+       0,     0,   264,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   265,   157,   158,   159,
+       0,   266,   267,   268,   164,     0,     0,     0,     0,     0,
+       0,    61,    62,   300,   116,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    19,     0,
+      20,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   207,     0,     0,     0,     0,     0,     0,
+       0,     0,    61,    62,    77,   116,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    19,
+       0,    20,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   284,     0,     0,     0,     0,     0,
+       0,     0,     0,    61,    62,    77,   116,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,    75,    76,
+      19,     0,    20,     0,    61,    62,     0,   116,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    19,    78,    20,     0,    79,    77,     0,    80,     0,
+      81,     0,     0,     0,     0,     0,   357,     0,     0,     0,
+       0,     0,     0,     0,     0,    61,    62,    77,   116,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    19,    78,    20,     0,    79,     0,     0,    80,
+       0,    81,     0,     0,     0,     0,     0,   401,     0,     0,
+       0,     0,     0,     0,     0,     0,    61,    62,    77,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    19,    78,    20,     0,    79,     0,   339,
+      80,     0,    81,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    78,     0,     0,    79,    77,
+       0,    80,     0,    81,    61,    62,     0,   116,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    19,     0,    20,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    78,     0,     0,    79,
+       0,     0,    80,     0,    81,    61,    62,    77,   116,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+      75,    76,    19,     0,    20,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    78,     0,     0,
+      79,     0,     0,    80,     0,    81,    61,    62,    77,   213,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    19,     0,    20,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    78,     0,     0,    79,    77,
+       0,    80,     0,    81,     0,     0,     0,     0,   123,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   124,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   125,   126,     0,     0,    78,     0,     0,    79,
+       0,     0,    80,     0,    81,   127,   128,   129,   130,   131,
+     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
+     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+     152,   153,     0,     0,   154,     0,     0,    78,     0,     0,
+      79,     0,     0,    80,     0,    81,     0,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   164
+};
+
+static const short int yycheck[] =
+{
+      38,   129,   129,     3,   112,    51,   230,   184,   185,   124,
+      15,    34,   127,    51,    23,    81,    29,   467,     0,   270,
+     271,    30,    61,    15,   201,    10,    11,    12,    13,    14,
+      15,    16,    17,   130,    57,   485,   125,   131,   153,     9,
+     125,   156,   136,    43,   133,   160,   161,   162,   163,   300,
+     135,    21,    57,   168,   169,   121,    23,    10,    11,    12,
+      13,    14,    15,    16,    17,    57,    52,    53,    54,   125,
+     484,   109,   110,   111,   171,   127,   125,    32,    33,   135,
+     494,   125,   131,    83,   136,    71,   124,   131,   124,   127,
+       5,     6,    61,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    45,    24,
+      47,   125,   124,   151,   152,   153,   154,   155,   156,   133,
+      24,   134,   160,   161,   162,   163,   135,   165,   166,   167,
+     168,   169,   247,    48,   124,   200,   202,   203,   204,   133,
+       4,    22,   136,    24,   124,   210,   131,    53,    54,    55,
+     215,   216,    55,    56,    99,   100,   333,    27,    28,     3,
+       4,   124,   227,     3,     4,     3,     4,   232,   206,   129,
+      20,     3,     4,     3,     4,   240,   241,   242,   131,   127,
+     124,     4,   228,     4,     4,   127,   410,    24,   412,     4,
+     228,    41,    42,    43,    44,    45,    46,    47,    24,   245,
+      50,   316,    24,   318,   319,   320,   130,   245,   246,   247,
+     325,   126,   130,   127,   129,   125,    59,   132,     4,   134,
+     135,     4,     4,   289,     4,     4,   334,   335,   336,   337,
+     338,     7,     7,    20,     7,    22,   125,    24,   346,   347,
+     348,   349,   350,   308,    31,    32,    33,   129,   125,   314,
+     128,   125,   125,   125,    41,    42,    43,    44,    45,    46,
+      47,   326,   327,    50,    51,   125,   125,   125,   125,    36,
+     125,    58,    24,   127,   127,    62,   127,    24,   316,   317,
+     318,   319,   320,   125,   392,   285,   324,   325,    10,    11,
+      12,    13,    14,    15,    16,    17,   127,    63,   127,   364,
+     127,   366,   417,   418,   419,   370,    24,     4,   127,   127,
+     127,   376,   377,   378,   127,   125,   128,   355,   426,   427,
+     428,   429,   125,   431,   432,   433,   125,   435,   129,   367,
+     125,   446,   125,   125,   125,   215,   216,    24,    34,   467,
+     467,    21,   407,   408,    21,   383,   127,   227,     4,   127,
+     415,   125,   232,   125,   125,   125,   125,   485,   485,   424,
+     240,   241,   242,   125,   125,   473,   125,   475,   476,   125,
+     125,   409,    64,    65,    66,    67,    68,    69,    70,   417,
+     418,   419,   125,   448,    36,   423,   125,    57,   125,   125,
+     125,   125,     5,     6,     4,   128,   434,    24,   125,   129,
+     128,   125,    57,   128,    21,   131,   125,   128,   446,    22,
+     125,    24,   128,    26,   128,   128,   128,   482,   128,    21,
+      36,   128,   131,   128,   128,    38,    39,   125,   308,    21,
+     495,   125,    76,    21,   314,    21,    97,   502,    97,    97,
+      97,   506,   507,    97,    43,    24,   326,   327,   356,   121,
+     200,    29,    50,   355,     3,   367,    41,   423,   387,    -1,
+      -1,    -1,    -1,    -1,    -1,    78,    79,    80,    81,    82,
+      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,    -1,   364,    -1,   366,    -1,   101,    -1,
+     370,    -1,    -1,    -1,    -1,    -1,   376,   377,   378,    -1,
+      -1,    -1,   115,   116,   117,   118,    -1,   120,   121,   122,
+     123,    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,   132,
+      -1,   134,    -1,    -1,   137,    -1,    -1,   407,   408,    -1,
+      -1,    -1,    -1,    -1,    -1,   415,    -1,    -1,    -1,    -1,
+      -1,    -1,     5,     6,   424,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      -1,    24,    -1,     3,     4,     5,     6,     7,   448,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    22,    -1,    24,    48,    26,    27,    28,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    39,
+      -1,    -1,   482,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   495,    -1,    -1,    -1,    -1,
+      -1,    61,   502,    -1,    -1,    -1,   506,   507,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    -1,    -1,    -1,    -1,
+      -1,   101,    -1,   126,     3,     4,   129,    -1,     7,   132,
+       0,   134,   135,    -1,    -1,   115,   116,   117,   118,    -1,
+     120,   121,   122,   123,    -1,    -1,    -1,    26,    27,    28,
+      -1,    -1,   132,    -1,    -1,    25,    -1,    -1,    -1,    38,
+      39,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    41,    42,    43,    44,    45,    46,    47,    -1,    -1,
+      -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    -1,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    -1,    -1,    -1,
+      -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   115,   116,   117,   118,
+      -1,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+      -1,     5,     6,   132,     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,    -1,     5,     6,    48,     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,    -1,     5,     6,    48,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    -1,    24,    -1,     5,     6,    -1,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,   126,    24,    -1,   129,    48,    -1,   132,    -1,
+     134,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,     5,     6,    48,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,   126,    24,    -1,   129,    -1,    -1,   132,
+      -1,   134,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     5,     6,    48,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,   126,    24,    -1,   129,    -1,   131,
+     132,    -1,   134,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   126,    -1,    -1,   129,    48,
+      -1,   132,    -1,   134,     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,    -1,    -1,    -1,   126,    -1,    -1,   129,
+      -1,    -1,   132,    -1,   134,     5,     6,    48,     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,   126,    -1,    -1,
+     129,    -1,    -1,   132,    -1,   134,     5,     6,    48,     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,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   126,    -1,    -1,   129,    48,
+      -1,   132,    -1,   134,    -1,    -1,    -1,    -1,    35,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    59,    60,    -1,    -1,   126,    -1,    -1,   129,
+      -1,    -1,   132,    -1,   134,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,    98,    -1,    -1,   101,    -1,    -1,   126,    -1,    -1,
+     129,    -1,    -1,   132,    -1,   134,    -1,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,   123
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,   170,   171,   172,     0,    25,    31,    41,    42,    43,
+      44,    45,    46,    47,    62,   151,   185,   187,   189,    22,
+      24,    51,    58,    62,   150,   178,   189,    45,    47,   188,
+      61,    64,    65,    66,    67,    68,    69,    70,   152,   183,
+      23,   195,   196,   197,    52,    53,    54,    71,   175,   124,
+      61,    20,    45,    47,    50,   151,   124,   183,    24,   173,
+       4,     5,     6,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    48,   126,   129,
+     132,   134,   139,   159,   160,   161,   162,   163,   178,   192,
+      29,   134,   184,    30,   135,   186,   196,   150,   200,   124,
+     124,   124,   124,   129,   176,   173,   159,    32,    33,   169,
+     169,   169,   169,     4,     4,     4,     8,   135,   163,   164,
+     178,   127,   136,    35,    49,    59,    60,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,   101,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   141,   142,   143,   144,   145,
+     198,   204,   205,   207,   208,    24,    55,    56,   174,     4,
+      24,    24,   177,   161,   161,   161,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,   146,   147,   149,
+     161,   166,   130,   130,   125,   135,   127,    37,   164,   165,
+     161,   194,    59,     8,   194,     9,    21,    10,    11,    12,
+      13,    14,    15,    16,    17,   146,   147,   148,   152,   161,
+     161,   194,   161,   161,   201,   194,   194,   194,   194,   194,
+     161,   161,   161,   194,   194,   152,    99,   100,   125,   131,
+     125,   157,   157,   157,    27,    28,     3,     4,   140,     4,
+       7,    26,    38,    39,   101,   115,   120,   121,   122,   129,
+     132,   134,   137,   141,   142,   143,   144,   145,   167,   192,
+     157,   163,   163,   163,    37,   161,   180,   181,   182,   125,
+     128,     3,     4,     7,    26,    27,    28,    38,    39,    61,
+     132,   167,   191,   192,   193,   193,   193,   193,   159,   125,
+     154,   125,   154,   193,   129,   125,   125,   125,   125,   125,
+     125,   193,   193,   193,    36,   125,   159,   161,   194,    24,
+      34,    57,   155,   158,   127,   127,   127,   127,   127,   131,
+     166,   168,   168,   135,   168,    24,   127,   127,   127,   127,
+     127,   131,   133,   178,   179,   125,   128,    37,    63,   190,
+     168,   125,   125,   193,    15,    57,    15,   125,   206,   193,
+     129,   194,   161,   194,   194,   194,   125,   125,   125,   161,
+     194,   193,   193,   125,    24,     4,   157,   166,   166,   166,
+     166,   166,   125,   131,   133,   135,   166,   166,   166,   166,
+     166,    37,   180,   155,   156,    24,   133,    21,    21,   127,
+     193,     4,   193,   194,   202,   125,   193,   125,   125,   125,
+     193,   193,   193,   127,   161,   206,   125,   125,   125,   125,
+     166,   125,   125,   125,    36,   125,    57,   153,   125,   193,
+     193,   202,   203,   125,   154,   154,   125,   193,   125,   194,
+     194,   194,   203,   193,   128,   166,   166,   166,   166,   166,
+     166,   166,   161,   166,     4,    24,   125,   129,   128,   194,
+     131,   193,   128,   125,   128,   125,   125,   128,   128,   128,
+     128,   128,    21,   131,   148,   199,    36,   131,   166,   166,
+     166,   193,   191,   131,   148,    21,   128,   128,   128,   125,
+     191,   193,    21,   125,    76,   193,    21,    21,   193,   193
+};
+
+#define yyerrok                (yyerrstatus = 0)
+#define yyclearin      (yychar = YYEMPTY)
+#define YYEMPTY                (-2)
+#define YYEOF          0
+
+#define YYACCEPT       goto yyacceptlab
+#define YYABORT                goto yyabortlab
+#define YYERROR                goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL         goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)                                 \
+do                                                             \
+  if (yychar == YYEMPTY && yylen == 1)                         \
+    {                                                          \
+      yychar = (Token);                                                \
+      yylval = (Value);                                                \
+      yytoken = YYTRANSLATE (yychar);                          \
+      YYPOPSTACK;                                              \
+      goto yybackup;                                           \
+    }                                                          \
+  else                                                         \
+    {                                                          \
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;                                                 \
+    }                                                          \
+while (0)
+
+
+#define YYTERROR       1
+#define YYERRCODE      256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)                               \
+    do                                                                 \
+      if (N)                                                           \
+       {                                                               \
+         (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
+         (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
+         (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
+         (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
+       }                                                               \
+      else                                                             \
+       {                                                               \
+         (Current).first_line   = (Current).last_line   =              \
+           YYRHSLOC (Rhs, 0).last_line;                                \
+         (Current).first_column = (Current).last_column =              \
+           YYRHSLOC (Rhs, 0).last_column;                              \
+       }                                                               \
+    while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)                 \
+     fprintf (File, "%d.%d-%d.%d",                     \
+              (Loc).first_line, (Loc).first_column,    \
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* 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 YY_SYMBOL_PRINT(Title, Type, Value, Location)         \
+do {                                                           \
+  if (yydebug)                                                 \
+    {                                                          \
+      YYFPRINTF (stderr, "%s ", Title);                                \
+      yysymprint (stderr,                                      \
+                  Type, Value);        \
+      YYFPRINTF (stderr, "\n");                                        \
+    }                                                          \
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short int *bottom;
+    short int *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)                           \
+do {                                                           \
+  if (yydebug)                                                 \
+    yy_stack_print ((Bottom), (Top));                          \
+} while (0)
+
+
+/*------------------------------------------------.
+| 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 long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)         \
+do {                                   \
+  if (yydebug)                         \
+    yy_reduce_print (Rule);            \
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef        YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+\f
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      size_t yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+       switch (*++yyp)
+         {
+         case '\'':
+         case ',':
+           goto do_not_strip_quotes;
+
+         case '\\':
+           if (*++yyp != '\\')
+             goto do_not_strip_quotes;
+           /* Fall through.  */
+         default:
+           if (yyres)
+             yyres[yyn] = *yyp;
+           yyn++;
+           break;
+
+         case '"':
+           if (yyres)
+             yyres[yyn] = '\0';
+           return yyn;
+         }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+#endif /* YYERROR_VERBOSE */
+
+\f
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
+\f
+
+/* 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 look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* 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 int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  short int *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;            /* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| 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++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+       /* Give user a chance to reallocate the stack. Use copies of
+          these so that the &'s don't force the real ones into
+          memory.  */
+       YYSTYPE *yyvs1 = yyvs;
+       short int *yyss1 = yyss;
+
+
+       /* Each stack pointer address is followed by the size of the
+          data in use in that stack, in bytes.  This used to be a
+          conditional around just the two extra args, but that might
+          be undefined if yyoverflow is a macro.  */
+       yyoverflow (YY_("memory exhausted"),
+                   &yyss1, yysize * sizeof (*yyssp),
+                   &yyvs1, yysize * sizeof (*yyvsp),
+
+                   &yystacksize);
+
+       yyss = yyss1;
+       yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+       goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+       yystacksize = YYMAXDEPTH;
+
+      {
+       short int *yyss1 = yyss;
+       union yyalloc *yyptr =
+         (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+       if (! yyptr)
+         goto yyexhaustedlab;
+       YYSTACK_RELOCATE (yyss);
+       YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+       if (yyss1 != yyssa)
+         YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+                 (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+       YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* 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];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+       goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* 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)
+    {
+        case 40:
+#line 108 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyvsp[-1])->append(" = ");
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 41:
+#line 112 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = new std::string(""); 
+  ;}
+    break;
+
+  case 49:
+#line 119 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(""); ;}
+    break;
+
+  case 57:
+#line 124 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(""); ;}
+    break;
+
+  case 58:
+#line 129 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(); ;}
+    break;
+
+  case 59:
+#line 130 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { *(yyvsp[-1]) += " " + *(yyvsp[0]); delete (yyvsp[0]); (yyval) = (yyvsp[-1]); ;}
+    break;
+
+  case 60:
+#line 133 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(); ;}
+    break;
+
+  case 61:
+#line 134 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    (yyvsp[-1])->insert(0, ", "); 
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 62:
+#line 142 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 63:
+#line 148 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(); ;}
+    break;
+
+  case 65:
+#line 152 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(); ;}
+    break;
+
+  case 66:
+#line 153 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+      (yyvsp[-1])->insert(0, ", ");
+      if (!(yyvsp[0])->empty())
+        *(yyvsp[-1]) += " " + *(yyvsp[0]);
+      delete (yyvsp[0]);
+      (yyval) = (yyvsp[-1]);
+    ;}
+    break;
+
+  case 68:
+#line 163 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+      *(yyvsp[-1]) += " " + *(yyvsp[0]);
+      delete (yyvsp[0]);
+      (yyval) = (yyvsp[-1]);
+    ;}
+    break;
+
+  case 90:
+#line 188 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                   // Type UpReference
+    (yyvsp[0])->insert(0, "\\");
+    (yyval) = (yyvsp[0]);
+  ;}
+    break;
+
+  case 91:
+#line 192 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {           // Function derived type?
+    *(yyvsp[-3]) += "( " + *(yyvsp[-1]) + " )";
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 92:
+#line 197 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {          // Sized array type?
+    (yyvsp[-3])->insert(0,"[ ");
+    *(yyvsp[-3]) += " x " + *(yyvsp[-1]) + " ]";
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 93:
+#line 203 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {          // Packed array type?
+    (yyvsp[-3])->insert(0,"< ");
+    *(yyvsp[-3]) += " x " + *(yyvsp[-1]) + " >";
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 94:
+#line 209 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                        // Structure type?
+    (yyvsp[-1])->insert(0, "{ ");
+    *(yyvsp[-1]) += " }";
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 95:
+#line 214 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                                  // Empty structure type?
+    (yyval) = new std::string("{ }");
+  ;}
+    break;
+
+  case 96:
+#line 217 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                             // Pointer type?
+    *(yyvsp[-1]) += '*';
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 98:
+#line 225 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += ", " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 100:
+#line 233 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += ", ...";
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 101:
+#line 238 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = (yyvsp[0]);
+  ;}
+    break;
+
+  case 102:
+#line 241 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = new std::string();
+  ;}
+    break;
+
+  case 103:
+#line 251 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { // Nonempty unsized arr
+    *(yyvsp[-3]) += " [ " + *(yyvsp[-1]) + " ]";
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 104:
+#line 256 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = new std::string("[ ]");
+  ;}
+    break;
+
+  case 105:
+#line 259 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += " c" + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 106:
+#line 264 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { // Nonempty unsized arr
+    *(yyvsp[-3]) += " < " + *(yyvsp[-1]) + " >";
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 107:
+#line 269 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-3]) += " { " + *(yyvsp[-1]) + " }";
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 108:
+#line 274 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = new std::string("[ ]");
+  ;}
+    break;
+
+  case 109:
+#line 277 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]); 
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 110:
+#line 282 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 111:
+#line 287 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 112:
+#line 292 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 113:
+#line 297 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 114:
+#line 303 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {      // integral constants
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 115:
+#line 308 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {            // integral constants
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 116:
+#line 313 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                      // Boolean constants
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 117:
+#line 318 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                     // Boolean constants
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 118:
+#line 323 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                   // Float & Double constants
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 119:
+#line 330 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-5]) += " (" + *(yyvsp[-3]) + " " + *(yyvsp[-2]) + " " + *(yyvsp[-1]) + ")";
+    delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 120:
+#line 335 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 121:
+#line 337 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 122:
+#line 339 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 123:
+#line 341 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 124:
+#line 343 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 125:
+#line 345 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 126:
+#line 347 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 127:
+#line 349 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 128:
+#line 351 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 129:
+#line 356 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 130:
+#line 358 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 131:
+#line 363 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { ;}
+    break;
+
+  case 132:
+#line 363 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { ;}
+    break;
+
+  case 133:
+#line 373 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+;}
+    break;
+
+  case 134:
+#line 378 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 135:
+#line 381 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[0]) << "\n";
+    delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 136:
+#line 386 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "module asm " << " " << *(yyvsp[0]) << "\n";
+  ;}
+    break;
+
+  case 137:
+#line 389 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "implementation\n";
+  ;}
+    break;
+
+  case 138:
+#line 392 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 139:
+#line 396 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[-2]) << " " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 140:
+#line 401 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {       // Function prototypes can be in const pool
+    *O << *(yyvsp[0]) << "\n";
+    delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 141:
+#line 406 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {  // Asm blocks can be in the const pool
+    *O << *(yyvsp[-2]) << " " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]); 
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 142:
+#line 411 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[-4]) << " " << *(yyvsp[-3]) << " " << *(yyvsp[-2]) << " " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 143:
+#line 416 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[-4]) << " " << *(yyvsp[-3]) << " " << *(yyvsp[-2]) << " " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 144:
+#line 421 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[-4]) << " " << *(yyvsp[-3]) << " " << *(yyvsp[-2]) << " " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 145:
+#line 426 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[-4]) << " " << *(yyvsp[-3]) << " " << *(yyvsp[-2]) << " " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 146:
+#line 431 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    *O << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 147:
+#line 436 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[-2]) << " = " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 148:
+#line 441 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 152:
+#line 451 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += " = " + *(yyvsp[-1]);
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 153:
+#line 456 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += " = " + *(yyvsp[-1]);
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 154:
+#line 461 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += " = " + *(yyvsp[-1]);
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 155:
+#line 466 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += " = " + *(yyvsp[-1]);
+    delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 156:
+#line 473 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyvsp[-1])->insert(0, "[ ");
+    *(yyvsp[-1]) += " ]";
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 157:
+#line 480 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += ", " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 159:
+#line 486 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = new std::string();
+  ;}
+    break;
+
+  case 163:
+#line 495 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(); ;}
+    break;
+
+  case 164:
+#line 497 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  (yyval) = (yyvsp[-1]);
+  if (!(yyvsp[0])->empty())
+    *(yyval) += " " + *(yyvsp[0]);
+;}
+    break;
+
+  case 165:
+#line 503 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += ", " + *(yyvsp[0]);
+  ;}
+    break;
+
+  case 166:
+#line 506 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = (yyvsp[0]);
+  ;}
+    break;
+
+  case 167:
+#line 510 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = (yyvsp[0]);
+  ;}
+    break;
+
+  case 168:
+#line 513 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += ", ...";
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 169:
+#line 517 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = (yyvsp[0]);
+  ;}
+    break;
+
+  case 170:
+#line 520 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = new std::string();
+  ;}
+    break;
+
+  case 171:
+#line 525 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    if (!(yyvsp[-7])->empty()) {
+      (yyvsp[-6])->insert(0, *(yyvsp[-7]) + " ");
+    }
+    *(yyvsp[-6]) += " " + *(yyvsp[-5]) + "( " + *(yyvsp[-3]) + " )";
+    if (!(yyvsp[-1])->empty()) {
+      *(yyvsp[-6]) += " " + *(yyvsp[-1]);
+    }
+    if (!(yyvsp[0])->empty()) {
+      *(yyvsp[-6]) += " " + *(yyvsp[0]);
+    }
+    (yyval) = (yyvsp[-6]);
+  ;}
+    break;
+
+  case 172:
+#line 539 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = new std::string("begin");
+  ;}
+    break;
+
+  case 173:
+#line 542 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    (yyval) = new std::string ("{");
+  ;}
+    break;
+
+  case 174:
+#line 546 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  if (!(yyvsp[-2])->empty()) {
+    *O << *(yyvsp[-2]) << " ";
+  }
+  *O << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+  delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+  (yyval) = 0;
+;}
+    break;
+
+  case 175:
+#line 555 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string("end"); ;}
+    break;
+
+  case 176:
+#line 556 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string("}"); ;}
+    break;
+
+  case 177:
+#line 558 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  if ((yyvsp[-1]))
+    *O << *(yyvsp[-1]);
+  *O << '\n' << *(yyvsp[0]) << "\n";
+;}
+    break;
+
+  case 181:
+#line 570 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    *(yyvsp[-2]) += " " + *(yyvsp[-1]) + " " + *(yyvsp[0]);
+    delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 182:
+#line 580 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 183:
+#line 582 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 192:
+#line 587 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    (yyvsp[-1])->insert(0, "<");
+    *(yyvsp[-1]) += ">";
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 194:
+#line 593 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    if (!(yyvsp[-3])->empty()) {
+      *(yyvsp[-4]) += " " + *(yyvsp[-3]);
+    }
+    *(yyvsp[-4]) += " " + *(yyvsp[-2]) + ", " + *(yyvsp[-1]);
+    delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-4]);
+  ;}
+    break;
+
+  case 199:
+#line 611 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 200:
+#line 617 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+  ;}
+    break;
+
+  case 201:
+#line 619 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { // Do not allow functions with 0 basic blocks   
+  ;}
+    break;
+
+  case 202:
+#line 626 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[-1]) ;
+  ;}
+    break;
+
+  case 203:
+#line 630 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "    " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 204:
+#line 635 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 205:
+#line 638 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << *(yyvsp[0]) << "\n";
+    delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 206:
+#line 644 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {              // Return with a result...
+    *O << "    " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 207:
+#line 649 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                                       // Return with no result...
+    *O << "    " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 208:
+#line 654 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {                         // Unconditional Branch...
+    *O << "    " << *(yyvsp[-2]) << " " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 209:
+#line 659 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {  
+    *O << "    " << *(yyvsp[-8]) << " " << *(yyvsp[-7]) << " " << *(yyvsp[-6]) << ", " << *(yyvsp[-4]) << " "
+       << *(yyvsp[-3]) << ", " << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-8]); delete (yyvsp[-7]); delete (yyvsp[-6]); delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 210:
+#line 665 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "    " << *(yyvsp[-8]) << " " << *(yyvsp[-7]) << " " << *(yyvsp[-6]) << ", " << *(yyvsp[-4]) << " " 
+       << *(yyvsp[-3]) << " [" << *(yyvsp[-1]) << " ]\n";
+    delete (yyvsp[-8]); delete (yyvsp[-7]); delete (yyvsp[-6]); delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-1]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 211:
+#line 671 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "    " << *(yyvsp[-7]) << " " << *(yyvsp[-6]) << " " << *(yyvsp[-5]) << ", " << *(yyvsp[-3]) << " " 
+       << *(yyvsp[-2]) << "[]\n";
+    delete (yyvsp[-7]); delete (yyvsp[-6]); delete (yyvsp[-5]); delete (yyvsp[-3]); delete (yyvsp[-2]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 212:
+#line 678 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "    " << *(yyvsp[-12]) << " " << *(yyvsp[-11]) << " " << *(yyvsp[-10]) << " " << *(yyvsp[-9]) << " ("
+       << *(yyvsp[-7]) << ") " << *(yyvsp[-5]) << " " << *(yyvsp[-4]) << " " << *(yyvsp[-3]) << " " << *(yyvsp[-2]) << " "
+       << *(yyvsp[-1]) << " " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[-12]); delete (yyvsp[-11]); delete (yyvsp[-10]); delete (yyvsp[-9]); delete (yyvsp[-7]); delete (yyvsp[-5]); delete (yyvsp[-4]);
+    delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]); 
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 213:
+#line 686 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "    " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 214:
+#line 691 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *O << "    " << *(yyvsp[0]) << "\n";
+    delete (yyvsp[0]);
+    (yyval) = 0;
+  ;}
+    break;
+
+  case 215:
+#line 697 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-5]) += *(yyvsp[-4]) + " " + *(yyvsp[-3]) + ", " + *(yyvsp[-1]) + " " + *(yyvsp[0]);
+    delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 216:
+#line 702 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-4]) += *(yyvsp[-3]) + ", " + *(yyvsp[-1]) + " " + *(yyvsp[0]);
+    delete (yyvsp[-3]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-4]);
+  ;}
+    break;
+
+  case 217:
+#line 709 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]); 
+  ;}
+    break;
+
+  case 218:
+#line 716 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {    // Used for PHI nodes
+    *(yyvsp[-5]) += " [" + *(yyvsp[-3]) + "," + *(yyvsp[-1]) + "]";
+    delete (yyvsp[-3]); delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 219:
+#line 721 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-6]) += ", [" + *(yyvsp[-3]) + "," + *(yyvsp[-1]) + "]";
+    delete (yyvsp[-3]); delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-6]);
+  ;}
+    break;
+
+  case 221:
+#line 730 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += ", " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 223:
+#line 739 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(); ;}
+    break;
+
+  case 224:
+#line 743 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 226:
+#line 751 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-4]) += " " + *(yyvsp[-3]) + " " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-4]);
+  ;}
+    break;
+
+  case 227:
+#line 756 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-4]) += " " + *(yyvsp[-3]) + " " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-4]);
+  ;}
+    break;
+
+  case 228:
+#line 761 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-4]) += " " + *(yyvsp[-3]) + " " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-3]); delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-4]);
+  ;}
+    break;
+
+  case 229:
+#line 766 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 230:
+#line 771 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-3]) += " " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 231:
+#line 776 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-3]) += " " + *(yyvsp[-2]) + " " + *(yyvsp[-1]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 232:
+#line 781 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-5]) += " " + *(yyvsp[-4]) + ", " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-4]); delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 233:
+#line 786 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-3]) += " " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 234:
+#line 791 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-3]) += " " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 235:
+#line 796 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-5]) += " " + *(yyvsp[-4]) + ", " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-4]); delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 236:
+#line 801 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-5]) += " " + *(yyvsp[-4]) + ", " + *(yyvsp[-2]) + ", " + *(yyvsp[0]);
+    delete (yyvsp[-4]); delete (yyvsp[-2]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 237:
+#line 806 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 238:
+#line 811 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    if (!(yyvsp[-5])->empty())
+      *(yyvsp[-6]) += " " + *(yyvsp[-5]);
+    if (!(yyvsp[-6])->empty())
+      *(yyvsp[-6]) += " ";
+    *(yyvsp[-6]) += *(yyvsp[-4]) += " " + *(yyvsp[-3]) + "(" + *(yyvsp[-2]) + ")";
+    delete (yyvsp[-5]); delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-1]);
+    (yyval) = (yyvsp[-6]);
+  ;}
+    break;
+
+  case 240:
+#line 825 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { 
+    (yyvsp[0])->insert(0, ", ");
+    (yyval) = (yyvsp[0]);
+  ;}
+    break;
+
+  case 241:
+#line 829 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {  (yyval) = new std::string(); ;}
+    break;
+
+  case 243:
+#line 834 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    { (yyval) = new std::string(); ;}
+    break;
+
+  case 244:
+#line 837 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += " " + *(yyvsp[-1]);
+    if (!(yyvsp[0])->empty())
+      *(yyvsp[-2]) += " " + *(yyvsp[0]);
+    delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 245:
+#line 844 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-5]) += " " + *(yyvsp[-4]) + ", " + *(yyvsp[-2]) + " " + *(yyvsp[-1]);
+    if (!(yyvsp[0])->empty())
+      *(yyvsp[-5]) += " " + *(yyvsp[0]);
+    delete (yyvsp[-4]); delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 246:
+#line 851 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-2]) += " " + *(yyvsp[-1]);
+    if (!(yyvsp[0])->empty())
+      *(yyvsp[-2]) += " " + *(yyvsp[0]);
+    delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-2]);
+  ;}
+    break;
+
+  case 247:
+#line 858 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-5]) += " " + *(yyvsp[-4]) + ", " + *(yyvsp[-2]) + " " + *(yyvsp[-1]);
+    if (!(yyvsp[0])->empty())
+      *(yyvsp[-5]) += " " + *(yyvsp[0]);
+    delete (yyvsp[-4]); delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 248:
+#line 865 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-1]) += " " + *(yyvsp[0]);
+    delete (yyvsp[0]);
+    (yyval) = (yyvsp[-1]);
+  ;}
+    break;
+
+  case 249:
+#line 870 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    if (!(yyvsp[-3])->empty())
+      *(yyvsp[-3]) += " ";
+    *(yyvsp[-3]) += *(yyvsp[-2]) + " " + *(yyvsp[-1]) + " " + *(yyvsp[0]);
+    delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+  case 250:
+#line 877 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    if (!(yyvsp[-5])->empty())
+      *(yyvsp[-5]) += " ";
+    *(yyvsp[-5]) += *(yyvsp[-4]) + " " + *(yyvsp[-3]) + ", " + *(yyvsp[-1]) + " " + *(yyvsp[0]);
+    delete (yyvsp[-4]); delete (yyvsp[-3]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-5]);
+  ;}
+    break;
+
+  case 251:
+#line 884 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+    {
+    *(yyvsp[-3]) += *(yyvsp[-2]) + " " + *(yyvsp[-1]) + " " + *(yyvsp[0]);
+    delete (yyvsp[-2]); delete (yyvsp[-1]); delete (yyvsp[0]);
+    (yyval) = (yyvsp[-3]);
+  ;}
+    break;
+
+
+      default: break;
+    }
+
+/* Line 1126 of yacc.c.  */
+#line 3207 "UpgradeParser.tab.c"
+\f
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+       {
+         int yytype = YYTRANSLATE (yychar);
+         YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+         YYSIZE_T yysize = yysize0;
+         YYSIZE_T yysize1;
+         int yysize_overflow = 0;
+         char *yymsg = 0;
+#        define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+         char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+         int yyx;
+
+#if 0
+         /* This is so xgettext sees the translatable formats that are
+            constructed on the fly.  */
+         YY_("syntax error, unexpected %s");
+         YY_("syntax error, unexpected %s, expecting %s");
+         YY_("syntax error, unexpected %s, expecting %s or %s");
+         YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+         YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+         char *yyfmt;
+         char const *yyf;
+         static char const yyunexpected[] = "syntax error, unexpected %s";
+         static char const yyexpecting[] = ", expecting %s";
+         static char const yyor[] = " or %s";
+         char yyformat[sizeof yyunexpected
+                       + sizeof yyexpecting - 1
+                       + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+                          * (sizeof yyor - 1))];
+         char const *yyprefix = yyexpecting;
+
+         /* Start YYX at -YYN if negative to avoid negative indexes in
+            YYCHECK.  */
+         int yyxbegin = yyn < 0 ? -yyn : 0;
+
+         /* Stay within bounds of both yycheck and yytname.  */
+         int yychecklim = YYLAST - yyn;
+         int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+         int yycount = 1;
+
+         yyarg[0] = yytname[yytype];
+         yyfmt = yystpcpy (yyformat, yyunexpected);
+
+         for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+           if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+             {
+               if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                 {
+                   yycount = 1;
+                   yysize = yysize0;
+                   yyformat[sizeof yyunexpected - 1] = '\0';
+                   break;
+                 }
+               yyarg[yycount++] = yytname[yyx];
+               yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+               yysize_overflow |= yysize1 < yysize;
+               yysize = yysize1;
+               yyfmt = yystpcpy (yyfmt, yyprefix);
+               yyprefix = yyor;
+             }
+
+         yyf = YY_(yyformat);
+         yysize1 = yysize + yystrlen (yyf);
+         yysize_overflow |= yysize1 < yysize;
+         yysize = yysize1;
+
+         if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+           yymsg = (char *) YYSTACK_ALLOC (yysize);
+         if (yymsg)
+           {
+             /* Avoid sprintf, as that infringes on the user's name space.
+                Don't have undefined behavior even if the translation
+                produced a string with the wrong number of "%s"s.  */
+             char *yyp = yymsg;
+             int yyi = 0;
+             while ((*yyp = *yyf))
+               {
+                 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+                   {
+                     yyp += yytnamerr (yyp, yyarg[yyi++]);
+                     yyf += 2;
+                   }
+                 else
+                   {
+                     yyp++;
+                     yyf++;
+                   }
+               }
+             yyerror (yymsg);
+             YYSTACK_FREE (yymsg);
+           }
+         else
+           {
+             yyerror (YY_("syntax error"));
+             goto yyexhaustedlab;
+           }
+       }
+      else
+#endif /* YYERROR_VERBOSE */
+       yyerror (YY_("syntax error"));
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+        error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+         /* Return failure if at end of input.  */
+         if (yychar == YYEOF)
+           YYABORT;
+        }
+      else
+       {
+         yydestruct ("Error: discarding", yytoken, &yylval);
+         yychar = YYEMPTY;
+       }
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (0)
+     goto yyerrorlab;
+
+yyvsp -= yylen;
+  yyssp -= yylen;
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;     /* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+       {
+         yyn += YYTERROR;
+         if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+           {
+             yyn = yytable[yyn];
+             if (0 < yyn)
+               break;
+           }
+       }
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+       YYABORT;
+
+
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+                yytoken, &yylval);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+                 yystos[*yyssp], yyvsp);
+      YYPOPSTACK;
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+
+
+#line 890 "/proj/llvm/llvm-4/tools/llvm-upgrade/UpgradeParser.y"
+
+
+int yyerror(const char *ErrorMsg) {
+  std::string where 
+    = std::string((CurFilename == "-") ? std::string("<stdin>") : CurFilename)
+                  + ":" + llvm::utostr((unsigned) Upgradelineno) + ": ";
+  std::string errMsg = std::string(ErrorMsg) + "\n" + where + " while reading ";
+  if (yychar == YYEMPTY || yychar == 0)
+    errMsg += "end-of-file.";
+  else
+    errMsg += "token: '" + std::string(Upgradetext, Upgradeleng) + "'";
+  std::cerr << errMsg << '\n';
+  exit(1);
+}
+
diff --git a/tools/llvm-upgrade/UpgradeParser.h b/tools/llvm-upgrade/UpgradeParser.h
new file mode 100644 (file)
index 0000000..f484ef4
--- /dev/null
@@ -0,0 +1,291 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, 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,
+     DLLIMPORT = 300,
+     DLLEXPORT = 301,
+     EXTERN_WEAK = 302,
+     OPAQUE = 303,
+     NOT = 304,
+     EXTERNAL = 305,
+     TARGET = 306,
+     TRIPLE = 307,
+     ENDIAN = 308,
+     POINTERSIZE = 309,
+     LITTLE = 310,
+     BIG = 311,
+     ALIGN = 312,
+     DEPLIBS = 313,
+     CALL = 314,
+     TAIL = 315,
+     ASM_TOK = 316,
+     MODULE = 317,
+     SIDEEFFECT = 318,
+     CC_TOK = 319,
+     CCC_TOK = 320,
+     CSRETCC_TOK = 321,
+     FASTCC_TOK = 322,
+     COLDCC_TOK = 323,
+     X86_STDCALLCC_TOK = 324,
+     X86_FASTCALLCC_TOK = 325,
+     DATALAYOUT = 326,
+     RET = 327,
+     BR = 328,
+     SWITCH = 329,
+     INVOKE = 330,
+     UNWIND = 331,
+     UNREACHABLE = 332,
+     ADD = 333,
+     SUB = 334,
+     MUL = 335,
+     UDIV = 336,
+     SDIV = 337,
+     FDIV = 338,
+     UREM = 339,
+     SREM = 340,
+     FREM = 341,
+     AND = 342,
+     OR = 343,
+     XOR = 344,
+     SETLE = 345,
+     SETGE = 346,
+     SETLT = 347,
+     SETGT = 348,
+     SETEQ = 349,
+     SETNE = 350,
+     MALLOC = 351,
+     ALLOCA = 352,
+     FREE = 353,
+     LOAD = 354,
+     STORE = 355,
+     GETELEMENTPTR = 356,
+     TRUNC = 357,
+     ZEXT = 358,
+     SEXT = 359,
+     FPTRUNC = 360,
+     FPEXT = 361,
+     BITCAST = 362,
+     UITOFP = 363,
+     SITOFP = 364,
+     FPTOUI = 365,
+     FPTOSI = 366,
+     INTTOPTR = 367,
+     PTRTOINT = 368,
+     PHI_TOK = 369,
+     SELECT = 370,
+     SHL = 371,
+     LSHR = 372,
+     ASHR = 373,
+     VAARG = 374,
+     EXTRACTELEMENT = 375,
+     INSERTELEMENT = 376,
+     SHUFFLEVECTOR = 377,
+     CAST = 378
+   };
+#endif
+/* Tokens.  */
+#define ESINT64VAL 258
+#define EUINT64VAL 259
+#define SINTVAL 260
+#define UINTVAL 261
+#define FPVAL 262
+#define VOID 263
+#define BOOL 264
+#define SBYTE 265
+#define UBYTE 266
+#define SHORT 267
+#define USHORT 268
+#define INT 269
+#define UINT 270
+#define LONG 271
+#define ULONG 272
+#define FLOAT 273
+#define DOUBLE 274
+#define TYPE 275
+#define LABEL 276
+#define VAR_ID 277
+#define LABELSTR 278
+#define STRINGCONSTANT 279
+#define IMPLEMENTATION 280
+#define ZEROINITIALIZER 281
+#define TRUETOK 282
+#define FALSETOK 283
+#define BEGINTOK 284
+#define ENDTOK 285
+#define DECLARE 286
+#define GLOBAL 287
+#define CONSTANT 288
+#define SECTION 289
+#define VOLATILE 290
+#define TO 291
+#define DOTDOTDOT 292
+#define NULL_TOK 293
+#define UNDEF 294
+#define CONST 295
+#define INTERNAL 296
+#define LINKONCE 297
+#define WEAK 298
+#define APPENDING 299
+#define DLLIMPORT 300
+#define DLLEXPORT 301
+#define EXTERN_WEAK 302
+#define OPAQUE 303
+#define NOT 304
+#define EXTERNAL 305
+#define TARGET 306
+#define TRIPLE 307
+#define ENDIAN 308
+#define POINTERSIZE 309
+#define LITTLE 310
+#define BIG 311
+#define ALIGN 312
+#define DEPLIBS 313
+#define CALL 314
+#define TAIL 315
+#define ASM_TOK 316
+#define MODULE 317
+#define SIDEEFFECT 318
+#define CC_TOK 319
+#define CCC_TOK 320
+#define CSRETCC_TOK 321
+#define FASTCC_TOK 322
+#define COLDCC_TOK 323
+#define X86_STDCALLCC_TOK 324
+#define X86_FASTCALLCC_TOK 325
+#define DATALAYOUT 326
+#define RET 327
+#define BR 328
+#define SWITCH 329
+#define INVOKE 330
+#define UNWIND 331
+#define UNREACHABLE 332
+#define ADD 333
+#define SUB 334
+#define MUL 335
+#define UDIV 336
+#define SDIV 337
+#define FDIV 338
+#define UREM 339
+#define SREM 340
+#define FREM 341
+#define AND 342
+#define OR 343
+#define XOR 344
+#define SETLE 345
+#define SETGE 346
+#define SETLT 347
+#define SETGT 348
+#define SETEQ 349
+#define SETNE 350
+#define MALLOC 351
+#define ALLOCA 352
+#define FREE 353
+#define LOAD 354
+#define STORE 355
+#define GETELEMENTPTR 356
+#define TRUNC 357
+#define ZEXT 358
+#define SEXT 359
+#define FPTRUNC 360
+#define FPEXT 361
+#define BITCAST 362
+#define UITOFP 363
+#define SITOFP 364
+#define FPTOUI 365
+#define FPTOSI 366
+#define INTTOPTR 367
+#define PTRTOINT 368
+#define PHI_TOK 369
+#define SELECT 370
+#define SHL 371
+#define LSHR 372
+#define ASHR 373
+#define VAARG 374
+#define EXTRACTELEMENT 375
+#define INSERTELEMENT 376
+#define SHUFFLEVECTOR 377
+#define CAST 378
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+typedef int YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE Upgradelval;
+
+
+
diff --git a/tools/llvm-upgrade/UpgradeParser.h.cvs b/tools/llvm-upgrade/UpgradeParser.h.cvs
new file mode 100644 (file)
index 0000000..f484ef4
--- /dev/null
@@ -0,0 +1,291 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, 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,
+     DLLIMPORT = 300,
+     DLLEXPORT = 301,
+     EXTERN_WEAK = 302,
+     OPAQUE = 303,
+     NOT = 304,
+     EXTERNAL = 305,
+     TARGET = 306,
+     TRIPLE = 307,
+     ENDIAN = 308,
+     POINTERSIZE = 309,
+     LITTLE = 310,
+     BIG = 311,
+     ALIGN = 312,
+     DEPLIBS = 313,
+     CALL = 314,
+     TAIL = 315,
+     ASM_TOK = 316,
+     MODULE = 317,
+     SIDEEFFECT = 318,
+     CC_TOK = 319,
+     CCC_TOK = 320,
+     CSRETCC_TOK = 321,
+     FASTCC_TOK = 322,
+     COLDCC_TOK = 323,
+     X86_STDCALLCC_TOK = 324,
+     X86_FASTCALLCC_TOK = 325,
+     DATALAYOUT = 326,
+     RET = 327,
+     BR = 328,
+     SWITCH = 329,
+     INVOKE = 330,
+     UNWIND = 331,
+     UNREACHABLE = 332,
+     ADD = 333,
+     SUB = 334,
+     MUL = 335,
+     UDIV = 336,
+     SDIV = 337,
+     FDIV = 338,
+     UREM = 339,
+     SREM = 340,
+     FREM = 341,
+     AND = 342,
+     OR = 343,
+     XOR = 344,
+     SETLE = 345,
+     SETGE = 346,
+     SETLT = 347,
+     SETGT = 348,
+     SETEQ = 349,
+     SETNE = 350,
+     MALLOC = 351,
+     ALLOCA = 352,
+     FREE = 353,
+     LOAD = 354,
+     STORE = 355,
+     GETELEMENTPTR = 356,
+     TRUNC = 357,
+     ZEXT = 358,
+     SEXT = 359,
+     FPTRUNC = 360,
+     FPEXT = 361,
+     BITCAST = 362,
+     UITOFP = 363,
+     SITOFP = 364,
+     FPTOUI = 365,
+     FPTOSI = 366,
+     INTTOPTR = 367,
+     PTRTOINT = 368,
+     PHI_TOK = 369,
+     SELECT = 370,
+     SHL = 371,
+     LSHR = 372,
+     ASHR = 373,
+     VAARG = 374,
+     EXTRACTELEMENT = 375,
+     INSERTELEMENT = 376,
+     SHUFFLEVECTOR = 377,
+     CAST = 378
+   };
+#endif
+/* Tokens.  */
+#define ESINT64VAL 258
+#define EUINT64VAL 259
+#define SINTVAL 260
+#define UINTVAL 261
+#define FPVAL 262
+#define VOID 263
+#define BOOL 264
+#define SBYTE 265
+#define UBYTE 266
+#define SHORT 267
+#define USHORT 268
+#define INT 269
+#define UINT 270
+#define LONG 271
+#define ULONG 272
+#define FLOAT 273
+#define DOUBLE 274
+#define TYPE 275
+#define LABEL 276
+#define VAR_ID 277
+#define LABELSTR 278
+#define STRINGCONSTANT 279
+#define IMPLEMENTATION 280
+#define ZEROINITIALIZER 281
+#define TRUETOK 282
+#define FALSETOK 283
+#define BEGINTOK 284
+#define ENDTOK 285
+#define DECLARE 286
+#define GLOBAL 287
+#define CONSTANT 288
+#define SECTION 289
+#define VOLATILE 290
+#define TO 291
+#define DOTDOTDOT 292
+#define NULL_TOK 293
+#define UNDEF 294
+#define CONST 295
+#define INTERNAL 296
+#define LINKONCE 297
+#define WEAK 298
+#define APPENDING 299
+#define DLLIMPORT 300
+#define DLLEXPORT 301
+#define EXTERN_WEAK 302
+#define OPAQUE 303
+#define NOT 304
+#define EXTERNAL 305
+#define TARGET 306
+#define TRIPLE 307
+#define ENDIAN 308
+#define POINTERSIZE 309
+#define LITTLE 310
+#define BIG 311
+#define ALIGN 312
+#define DEPLIBS 313
+#define CALL 314
+#define TAIL 315
+#define ASM_TOK 316
+#define MODULE 317
+#define SIDEEFFECT 318
+#define CC_TOK 319
+#define CCC_TOK 320
+#define CSRETCC_TOK 321
+#define FASTCC_TOK 322
+#define COLDCC_TOK 323
+#define X86_STDCALLCC_TOK 324
+#define X86_FASTCALLCC_TOK 325
+#define DATALAYOUT 326
+#define RET 327
+#define BR 328
+#define SWITCH 329
+#define INVOKE 330
+#define UNWIND 331
+#define UNREACHABLE 332
+#define ADD 333
+#define SUB 334
+#define MUL 335
+#define UDIV 336
+#define SDIV 337
+#define FDIV 338
+#define UREM 339
+#define SREM 340
+#define FREM 341
+#define AND 342
+#define OR 343
+#define XOR 344
+#define SETLE 345
+#define SETGE 346
+#define SETLT 347
+#define SETGT 348
+#define SETEQ 349
+#define SETNE 350
+#define MALLOC 351
+#define ALLOCA 352
+#define FREE 353
+#define LOAD 354
+#define STORE 355
+#define GETELEMENTPTR 356
+#define TRUNC 357
+#define ZEXT 358
+#define SEXT 359
+#define FPTRUNC 360
+#define FPEXT 361
+#define BITCAST 362
+#define UITOFP 363
+#define SITOFP 364
+#define FPTOUI 365
+#define FPTOSI 366
+#define INTTOPTR 367
+#define PTRTOINT 368
+#define PHI_TOK 369
+#define SELECT 370
+#define SHL 371
+#define LSHR 372
+#define ASHR 373
+#define VAARG 374
+#define EXTRACTELEMENT 375
+#define INSERTELEMENT 376
+#define SHUFFLEVECTOR 377
+#define CAST 378
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+typedef int YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE Upgradelval;
+
+
+
diff --git a/tools/llvm-upgrade/UpgradeParser.y b/tools/llvm-upgrade/UpgradeParser.y
new file mode 100644 (file)
index 0000000..eaf52b4
--- /dev/null
@@ -0,0 +1,903 @@
+//===-- UpgradeParser.y - Upgrade parser for llvm assmbly -------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by Reid Spencer and is distributed under the
+// University of Illinois Open Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+//  This file implements the bison parser for LLVM 1.9 assembly language.
+//
+//===----------------------------------------------------------------------===//
+
+%{
+#define YYERROR_VERBOSE 1
+#define YYSTYPE std::string*
+
+#include "ParserInternals.h"
+#include <llvm/ADT/StringExtras.h>
+#include <llvm/System/MappedFile.h>
+#include <algorithm>
+#include <list>
+#include <utility>
+#include <iostream>
+
+
+int yylex();                       // declaration" of xxx warnings.
+int yyparse();
+
+static std::string CurFilename;
+
+static std::ostream *O = 0;
+
+void UpgradeAssembly(const std::string &infile, std::ostream &out)
+{
+  Upgradelineno = 1; 
+  CurFilename = infile;
+  llvm::sys::Path p(infile);
+  llvm::sys::MappedFile mf;
+  mf.open(p);
+  mf.map();
+  const char* base = mf.charBase();
+  size_t sz = mf.size();
+
+  set_scan_bytes(base, sz);
+
+  O = &out;
+
+  if (yyparse()) {
+    std::cerr << "Parse failed.\n";
+    exit(1);
+  }
+}
+
+%}
+
+%token ESINT64VAL
+%token EUINT64VAL
+%token SINTVAL   // Signed 32 bit ints...
+%token UINTVAL   // Unsigned 32 bit ints...
+%token FPVAL     // Float or Double constant
+%token VOID BOOL SBYTE UBYTE SHORT USHORT INT UINT LONG ULONG
+%token FLOAT DOUBLE TYPE LABEL
+%token VAR_ID LABELSTR STRINGCONSTANT
+%token IMPLEMENTATION ZEROINITIALIZER TRUETOK FALSETOK BEGINTOK ENDTOK
+%token DECLARE GLOBAL CONSTANT SECTION VOLATILE
+%token TO DOTDOTDOT NULL_TOK UNDEF CONST INTERNAL LINKONCE WEAK APPENDING
+%token DLLIMPORT DLLEXPORT EXTERN_WEAK
+%token OPAQUE NOT EXTERNAL TARGET TRIPLE ENDIAN POINTERSIZE LITTLE BIG ALIGN
+%token DEPLIBS CALL TAIL ASM_TOK MODULE SIDEEFFECT
+%token CC_TOK CCC_TOK CSRETCC_TOK FASTCC_TOK COLDCC_TOK
+%token X86_STDCALLCC_TOK X86_FASTCALLCC_TOK
+%token DATALAYOUT
+%token RET BR SWITCH INVOKE UNWIND UNREACHABLE
+%token ADD SUB MUL UDIV SDIV FDIV UREM SREM FREM AND OR XOR
+%token SETLE SETGE SETLT SETGT SETEQ SETNE  // Binary Comparators
+%token MALLOC ALLOCA FREE LOAD STORE GETELEMENTPTR
+%token TRUNC ZEXT SEXT FPTRUNC FPEXT BITCAST
+%token UITOFP SITOFP FPTOUI FPTOSI INTTOPTR PTRTOINT
+%token PHI_TOK SELECT SHL LSHR ASHR VAARG
+%token EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR
+%token CAST
+
+%start Module
+
+%%
+
+// Handle constant integer size restriction and conversion...
+INTVAL : SINTVAL | UINTVAL 
+EINT64VAL : ESINT64VAL | EUINT64VAL;
+
+// Operations that are notably excluded from this list include:
+// RET, BR, & SWITCH because they end basic blocks and are treated specially.
+ArithmeticOps: ADD | SUB | MUL | UDIV | SDIV | FDIV | UREM | SREM | FREM;
+LogicalOps   : AND | OR | XOR;
+SetCondOps   : SETLE | SETGE | SETLT | SETGT | SETEQ | SETNE;
+CastOps      : CAST;
+ShiftOps     : SHL | LSHR | ASHR;
+
+// These are some types that allow classification if we only want a particular 
+// thing... for example, only a signed, unsigned, or integral type.
+SIntType :  LONG |  INT |  SHORT | SBYTE;
+UIntType : ULONG | UINT | USHORT | UBYTE;
+IntType  : SIntType | UIntType;
+FPType   : FLOAT | DOUBLE;
+
+// OptAssign - Value producing statements have an optional assignment component
+OptAssign : Name '=' {
+    $1->append(" = ");
+    $$ = $1;
+  }
+  | /*empty*/ {
+    $$ = new std::string(""); 
+  };
+
+OptLinkage 
+  : INTERNAL | LINKONCE | WEAK | APPENDING | DLLIMPORT | DLLEXPORT 
+  | EXTERN_WEAK 
+  | /*empty*/   { $$ = new std::string(""); } ;
+
+OptCallingConv 
+  : CCC_TOK | CSRETCC_TOK | FASTCC_TOK | COLDCC_TOK | X86_STDCALLCC_TOK 
+  | X86_FASTCALLCC_TOK | CC_TOK EUINT64VAL
+  | /*empty*/ { $$ = new std::string(""); } ;
+
+// OptAlign/OptCAlign - An optional alignment, and an optional alignment with
+// a comma before it.
+OptAlign 
+  : /*empty*/        { $$ = new std::string(); }
+  | ALIGN EUINT64VAL { *$1 += " " + *$2; delete $2; $$ = $1; };
+         ;
+OptCAlign 
+  : /*empty*/            { $$ = new std::string(); } 
+  | ',' ALIGN EUINT64VAL { 
+    $2->insert(0, ", "); 
+    *$2 += " " + *$3;
+    delete $3;
+    $$ = $2;
+  };
+
+SectionString 
+  : SECTION STRINGCONSTANT { 
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  };
+
+OptSection : /*empty*/     { $$ = new std::string(); } 
+           | SectionString;
+
+GlobalVarAttributes 
+    : /* empty */ { $$ = new std::string(); } 
+    | ',' GlobalVarAttribute GlobalVarAttributes  {
+      $2->insert(0, ", ");
+      if (!$3->empty())
+        *$2 += " " + *$3;
+      delete $3;
+      $$ = $2;
+    };
+
+GlobalVarAttribute 
+    : SectionString 
+    | ALIGN EUINT64VAL {
+      *$1 += " " + *$2;
+      delete $2;
+      $$ = $1;
+    };
+
+//===----------------------------------------------------------------------===//
+// Types includes all predefined types... except void, because it can only be
+// used in specific contexts (function returning void for example).  To have
+// access to it, a user must explicitly use TypesV.
+//
+
+// TypesV includes all of 'Types', but it also includes the void type.
+TypesV    : Types    | VOID ;
+UpRTypesV : UpRTypes | VOID ; 
+Types     : UpRTypes ;
+
+// Derived types are added later...
+//
+PrimType : BOOL | SBYTE | UBYTE | SHORT  | USHORT | INT   | UINT ;
+PrimType : LONG | ULONG | FLOAT | DOUBLE | TYPE   | LABEL;
+UpRTypes : OPAQUE | PrimType | SymbolicValueRef ;
+
+// Include derived types in the Types production.
+//
+UpRTypes : '\\' EUINT64VAL {                   // Type UpReference
+    $2->insert(0, "\\");
+    $$ = $2;
+  }
+  | UpRTypesV '(' ArgTypeListI ')' {           // Function derived type?
+    *$1 += "( " + *$3 + " )";
+    delete $3;
+    $$ = $1;
+  }
+  | '[' EUINT64VAL 'x' UpRTypes ']' {          // Sized array type?
+    $2->insert(0,"[ ");
+    *$2 += " x " + *$4 + " ]";
+    delete $4;
+    $$ = $2;
+  }
+  | '<' EUINT64VAL 'x' UpRTypes '>' {          // Packed array type?
+    $2->insert(0,"< ");
+    *$2 += " x " + *$4 + " >";
+    delete $4;
+    $$ = $2;
+  }
+  | '{' TypeListI '}' {                        // Structure type?
+    $2->insert(0, "{ ");
+    *$2 += " }";
+    $$ = $2;
+  }
+  | '{' '}' {                                  // Empty structure type?
+    $$ = new std::string("{ }");
+  }
+  | UpRTypes '*' {                             // Pointer type?
+    *$1 += '*';
+    $$ = $1;
+  };
+
+// TypeList - Used for struct declarations and as a basis for function type 
+// declaration type lists
+//
+TypeListI : UpRTypes | TypeListI ',' UpRTypes {
+    *$1 += ", " + *$3;
+    delete $3;
+    $$ = $1;
+  };
+
+// ArgTypeList - List of types for a function type declaration...
+ArgTypeListI : TypeListI
+  | TypeListI ',' DOTDOTDOT {
+    *$1 += ", ...";
+    delete $3;
+    $$ = $1;
+  }
+  | DOTDOTDOT {
+    $$ = $1;
+  }
+  | /*empty*/ {
+    $$ = new std::string();
+  };
+
+// ConstVal - The various declarations that go into the constant pool.  This
+// production is used ONLY to represent constants that show up AFTER a 'const',
+// 'constant' or 'global' token at global scope.  Constants that can be inlined
+// into other expressions (such as integers and constexprs) are handled by the
+// ResolvedVal, ValueRef and ConstValueRef productions.
+//
+ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr
+    *$1 += " [ " + *$3 + " ]";
+    delete $3;
+    $$ = $1;
+  }
+  | Types '[' ']' {
+    $$ = new std::string("[ ]");
+  }
+  | Types 'c' STRINGCONSTANT {
+    *$1 += " c" + *$3;
+    delete $3;
+    $$ = $1;
+  }
+  | Types '<' ConstVector '>' { // Nonempty unsized arr
+    *$1 += " < " + *$3 + " >";
+    delete $3;
+    $$ = $1;
+  }
+  | Types '{' ConstVector '}' {
+    *$1 += " { " + *$3 + " }";
+    delete $3;
+    $$ = $1;
+  }
+  | Types '{' '}' {
+    $$ = new std::string("[ ]");
+  }
+  | Types NULL_TOK {
+    *$1 += " " + *$2; 
+    delete $2;
+    $$ = $1;
+  }
+  | Types UNDEF {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | Types SymbolicValueRef {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | Types ConstExpr {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | Types ZEROINITIALIZER {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  };
+
+ConstVal : SIntType EINT64VAL {      // integral constants
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | UIntType EUINT64VAL {            // integral constants
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | BOOL TRUETOK {                      // Boolean constants
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | BOOL FALSETOK {                     // Boolean constants
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | FPType FPVAL {                   // Float & Double constants
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  };
+
+
+ConstExpr: CastOps '(' ConstVal TO Types ')' {
+    *$1 += " (" + *$3 + " " + *$4 + " " + *$5 + ")";
+    delete $3; delete $4; delete $5;
+    $$ = $1;
+  }
+  | GETELEMENTPTR '(' ConstVal IndexList ')' {
+  }
+  | SELECT '(' ConstVal ',' ConstVal ',' ConstVal ')' {
+  }
+  | ArithmeticOps '(' ConstVal ',' ConstVal ')' {
+  }
+  | LogicalOps '(' ConstVal ',' ConstVal ')' {
+  }
+  | SetCondOps '(' ConstVal ',' ConstVal ')' {
+  }
+  | ShiftOps '(' ConstVal ',' ConstVal ')' {
+  }
+  | EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' {
+  }
+  | INSERTELEMENT '(' ConstVal ',' ConstVal ',' ConstVal ')' {
+  }
+  | SHUFFLEVECTOR '(' ConstVal ',' ConstVal ',' ConstVal ')' {
+  };
+
+
+// ConstVector - A list of comma separated constants.
+ConstVector : ConstVector ',' ConstVal {
+  }
+  | ConstVal {
+  };
+
+
+// GlobalType - Match either GLOBAL or CONSTANT for global declarations...
+GlobalType : GLOBAL { } | CONSTANT { };
+
+
+//===----------------------------------------------------------------------===//
+//                             Rules to match Modules
+//===----------------------------------------------------------------------===//
+
+// Module rule: Capture the result of parsing the whole file into a result
+// variable...
+//
+Module : DefinitionList {
+};
+
+// DefinitionList - Top level definitions
+//
+DefinitionList : DefinitionList Function {
+    $$ = 0;
+  } 
+  | DefinitionList FunctionProto {
+    *O << *$2 << "\n";
+    delete $2;
+    $$ = 0;
+  }
+  | DefinitionList MODULE ASM_TOK AsmBlock {
+    *O << "module asm " << " " << *$4 << "\n";
+  }  
+  | DefinitionList IMPLEMENTATION {
+    *O << "implementation\n";
+  }
+  | ConstPool {
+  };
+
+// ConstPool - Constants with optional names assigned to them.
+ConstPool : ConstPool OptAssign TYPE TypesV {
+    *O << *$2 << " " << *$3 << " " << *$4 << "\n";
+    delete $2; delete $3; delete $4;
+    $$ = 0;
+  }
+  | ConstPool FunctionProto {       // Function prototypes can be in const pool
+    *O << *$2 << "\n";
+    delete $2;
+    $$ = 0;
+  }
+  | ConstPool MODULE ASM_TOK AsmBlock {  // Asm blocks can be in the const pool
+    *O << *$2 << " " << *$3 << " " << *$4 << "\n";
+    delete $2; delete $3; delete $4; 
+    $$ = 0;
+  }
+  | ConstPool OptAssign OptLinkage GlobalType ConstVal  GlobalVarAttributes {
+    *O << *$2 << " " << *$3 << " " << *$4 << " " << *$5 << " " << *$6 << "\n";
+    delete $2; delete $3; delete $4; delete $5; delete $6;
+    $$ = 0;
+  }
+  | ConstPool OptAssign EXTERNAL GlobalType Types  GlobalVarAttributes {
+    *O << *$2 << " " << *$3 << " " << *$4 << " " << *$5 << " " << *$6 << "\n";
+    delete $2; delete $3; delete $4; delete $5; delete $6;
+    $$ = 0;
+  }
+  | ConstPool OptAssign DLLIMPORT GlobalType Types  GlobalVarAttributes {
+    *O << *$2 << " " << *$3 << " " << *$4 << " " << *$5 << " " << *$6 << "\n";
+    delete $2; delete $3; delete $4; delete $5; delete $6;
+    $$ = 0;
+  }
+  | ConstPool OptAssign EXTERN_WEAK GlobalType Types  GlobalVarAttributes {
+    *O << *$2 << " " << *$3 << " " << *$4 << " " << *$5 << " " << *$6 << "\n";
+    delete $2; delete $3; delete $4; delete $5; delete $6;
+    $$ = 0;
+  }
+  | ConstPool TARGET TargetDefinition { 
+    *O << *$2 << " " << *$3 << "\n";
+    delete $2; delete $3;
+    $$ = 0;
+  }
+  | ConstPool DEPLIBS '=' LibrariesDefinition {
+    *O << *$2 << " = " << *$4 << "\n";
+    delete $2; delete $4;
+    $$ = 0;
+  }
+  | /* empty: end of list */ { 
+    $$ = 0;
+  };
+
+
+AsmBlock : STRINGCONSTANT ;
+
+BigOrLittle : BIG | LITTLE 
+
+TargetDefinition 
+  : ENDIAN '=' BigOrLittle {
+    *$1 += " = " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | POINTERSIZE '=' EUINT64VAL {
+    *$1 += " = " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | TRIPLE '=' STRINGCONSTANT {
+    *$1 += " = " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | DATALAYOUT '=' STRINGCONSTANT {
+    *$1 += " = " + *$2;
+    delete $2;
+    $$ = $1;
+  };
+
+LibrariesDefinition 
+  : '[' LibList ']' {
+    $2->insert(0, "[ ");
+    *$2 += " ]";
+    $$ = $2;
+  };
+
+LibList 
+  : LibList ',' STRINGCONSTANT {
+    *$1 += ", " + *$3;
+    delete $3;
+    $$ = $1;
+  }
+  | STRINGCONSTANT 
+  | /* empty: end of list */ {
+    $$ = new std::string();
+  };
+
+//===----------------------------------------------------------------------===//
+//                       Rules to match Function Headers
+//===----------------------------------------------------------------------===//
+
+Name : VAR_ID | STRINGCONSTANT;
+OptName : Name | /*empty*/ { $$ = new std::string(); };
+
+ArgVal : Types OptName {
+  $$ = $1;
+  if (!$2->empty())
+    *$$ += " " + *$2;
+};
+
+ArgListH : ArgListH ',' ArgVal {
+    *$1 += ", " + *$3;
+  }
+  | ArgVal {
+    $$ = $1;
+  };
+
+ArgList : ArgListH {
+    $$ = $1;
+  }
+  | ArgListH ',' DOTDOTDOT {
+    *$1 += ", ...";
+    $$ = $1;
+  }
+  | DOTDOTDOT {
+    $$ = $1;
+  }
+  | /* empty */ {
+    $$ = new std::string();
+  };
+
+FunctionHeaderH : OptCallingConv TypesV Name '(' ArgList ')' 
+                  OptSection OptAlign {
+    if (!$1->empty()) {
+      $2->insert(0, *$1 + " ");
+    }
+    *$2 += " " + *$3 + "( " + *$5 + " )";
+    if (!$7->empty()) {
+      *$2 += " " + *$7;
+    }
+    if (!$8->empty()) {
+      *$2 += " " + *$8;
+    }
+    $$ = $2;
+  };
+
+BEGIN : BEGINTOK {
+    $$ = new std::string("begin");
+  }
+  | '{' { 
+    $$ = new std::string ("{");
+  }
+
+FunctionHeader : OptLinkage FunctionHeaderH BEGIN {
+  if (!$1->empty()) {
+    *O << *$1 << " ";
+  }
+  *O << *$2 << " " << *$3 << "\n";
+  delete $1; delete $2; delete $3;
+  $$ = 0;
+};
+
+END : ENDTOK { $$ = new std::string("end"); }
+    | '}' { $$ = new std::string("}"); };
+
+Function : FunctionHeader BasicBlockList END {
+  if ($2)
+    *O << *$2;
+  *O << '\n' << *$3 << "\n";
+};
+
+FnDeclareLinkage: /*default*/ 
+  | DLLIMPORT    
+  | EXTERN_WEAK 
+  ;
+  
+FunctionProto 
+  : DECLARE FnDeclareLinkage FunctionHeaderH { 
+    *$1 += " " + *$2 + " " + *$3;
+    delete $2; delete $3;
+    $$ = $1;
+  };
+
+//===----------------------------------------------------------------------===//
+//                        Rules to match Basic Blocks
+//===----------------------------------------------------------------------===//
+
+OptSideEffect : /* empty */ {
+  }
+  | SIDEEFFECT {
+  };
+
+ConstValueRef : ESINT64VAL | EUINT64VAL | FPVAL | TRUETOK  | FALSETOK 
+  | NULL_TOK | UNDEF | ZEROINITIALIZER 
+  | '<' ConstVector '>' { 
+    $2->insert(0, "<");
+    *$2 += ">";
+    $$ = $2;
+  }
+  | ConstExpr 
+  | ASM_TOK OptSideEffect STRINGCONSTANT ',' STRINGCONSTANT {
+    if (!$2->empty()) {
+      *$1 += " " + *$2;
+    }
+    *$1 += " " + *$3 + ", " + *$4;
+    delete $2; delete $3; delete $4;
+    $$ = $1;
+  };
+
+SymbolicValueRef : INTVAL | Name ;
+
+// ValueRef - A reference to a definition... either constant or symbolic
+ValueRef : SymbolicValueRef | ConstValueRef;
+
+
+// ResolvedVal - a <type> <value> pair.  This is used only in cases where the
+// type immediately preceeds the value reference, and allows complex constant
+// pool references (for things like: 'ret [2 x int] [ int 12, int 42]')
+ResolvedVal : Types ValueRef {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  };
+
+BasicBlockList : BasicBlockList BasicBlock {
+  }
+  | BasicBlock { // Do not allow functions with 0 basic blocks   
+  };
+
+
+// Basic blocks are terminated by branching instructions: 
+// br, br/cc, switch, ret
+//
+BasicBlock : InstructionList OptAssign BBTerminatorInst  {
+    *O << *$2 ;
+  };
+
+InstructionList : InstructionList Inst {
+    *O << "    " << *$2 << "\n";
+    delete $2;
+    $$ = 0;
+  }
+  | /* empty */ {
+    $$ = 0;
+  }
+  | LABELSTR {
+    *O << *$1 << "\n";
+    delete $1;
+    $$ = 0;
+  };
+
+BBTerminatorInst : RET ResolvedVal {              // Return with a result...
+    *O << "    " << *$1 << " " << *$2 << "\n";
+    delete $1; delete $2;
+    $$ = 0;
+  }
+  | RET VOID {                                       // Return with no result...
+    *O << "    " << *$1 << " " << *$2 << "\n";
+    delete $1; delete $2;
+    $$ = 0;
+  }
+  | BR LABEL ValueRef {                         // Unconditional Branch...
+    *O << "    " << *$1 << " " << *$2 << " " << *$3 << "\n";
+    delete $1; delete $2; delete $3;
+    $$ = 0;
+  }                                                  // Conditional Branch...
+  | BR BOOL ValueRef ',' LABEL ValueRef ',' LABEL ValueRef {  
+    *O << "    " << *$1 << " " << *$2 << " " << *$3 << ", " << *$5 << " "
+       << *$6 << ", " << *$8 << " " << *$9 << "\n";
+    delete $1; delete $2; delete $3; delete $5; delete $6; delete $8; delete $9;
+    $$ = 0;
+  }
+  | SWITCH IntType ValueRef ',' LABEL ValueRef '[' JumpTable ']' {
+    *O << "    " << *$1 << " " << *$2 << " " << *$3 << ", " << *$5 << " " 
+       << *$6 << " [" << *$8 << " ]\n";
+    delete $1; delete $2; delete $3; delete $5; delete $6; delete $8;
+    $$ = 0;
+  }
+  | SWITCH IntType ValueRef ',' LABEL ValueRef '[' ']' {
+    *O << "    " << *$1 << " " << *$2 << " " << *$3 << ", " << *$5 << " " 
+       << *$6 << "[]\n";
+    delete $1; delete $2; delete $3; delete $5; delete $6;
+    $$ = 0;
+  }
+  | INVOKE OptCallingConv TypesV ValueRef '(' ValueRefListE ')'
+    TO LABEL ValueRef UNWIND LABEL ValueRef {
+    *O << "    " << *$1 << " " << *$2 << " " << *$3 << " " << *$4 << " ("
+       << *$6 << ") " << *$8 << " " << *$9 << " " << *$10 << " " << *$11 << " "
+       << *$12 << " " << *$13 << "\n";
+    delete $1; delete $2; delete $3; delete $4; delete $6; delete $8; delete $9;
+    delete $10; delete $11; delete $12; delete $13; 
+    $$ = 0;
+  }
+  | UNWIND {
+    *O << "    " << *$1 << "\n";
+    delete $1;
+    $$ = 0;
+  }
+  | UNREACHABLE {
+    *O << "    " << *$1 << "\n";
+    delete $1;
+    $$ = 0;
+  };
+
+JumpTable : JumpTable IntType ConstValueRef ',' LABEL ValueRef {
+    *$1 += *$2 + " " + *$3 + ", " + *$5 + " " + *$6;
+    delete $2; delete $3; delete $5; delete $6;
+    $$ = $1;
+  }
+  | IntType ConstValueRef ',' LABEL ValueRef {
+    *$1 += *$2 + ", " + *$4 + " " + *$5;
+    delete $2; delete $4; delete $5;
+    $$ = $1;
+  };
+
+Inst 
+  : OptAssign InstVal {
+    *$1 += *$2;
+    delete $2;
+    $$ = $1; 
+  };
+
+PHIList 
+  : Types '[' ValueRef ',' ValueRef ']' {    // Used for PHI nodes
+    *$1 += " [" + *$3 + "," + *$5 + "]";
+    delete $3; delete $5;
+    $$ = $1;
+  }
+  | PHIList ',' '[' ValueRef ',' ValueRef ']' {
+    *$1 += ", [" + *$4 + "," + *$6 + "]";
+    delete $4; delete $6;
+    $$ = $1;
+  };
+
+
+ValueRefList 
+  : ResolvedVal 
+  | ValueRefList ',' ResolvedVal {
+    *$1 += ", " + *$3;
+    delete $3;
+    $$ = $1;
+  };
+
+// ValueRefListE - Just like ValueRefList, except that it may also be empty!
+ValueRefListE 
+  : ValueRefList 
+  | /*empty*/ { $$ = new std::string(); }
+  ;
+
+OptTailCall 
+  : TAIL CALL {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | CALL 
+  ;
+
+InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
+    *$1 += " " + *$2 + " " + *$3 + ", " + *$5;
+    delete $2; delete $3; delete $5;
+    $$ = $1;
+  }
+  | LogicalOps Types ValueRef ',' ValueRef {
+    *$1 += " " + *$2 + " " + *$3 + ", " + *$5;
+    delete $2; delete $3; delete $5;
+    $$ = $1;
+  }
+  | SetCondOps Types ValueRef ',' ValueRef {
+    *$1 += " " + *$2 + " " + *$3 + ", " + *$5;
+    delete $2; delete $3; delete $5;
+    $$ = $1;
+  }
+  | NOT ResolvedVal {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | ShiftOps ResolvedVal ',' ResolvedVal {
+    *$1 += " " + *$2 + ", " + *$4;
+    delete $2; delete $4;
+    $$ = $1;
+  }
+  | CastOps ResolvedVal TO Types {
+    *$1 += " " + *$2 + " " + *$3 + ", " + *$4;
+    delete $2; delete $3; delete $4;
+    $$ = $1;
+  }
+  | SELECT ResolvedVal ',' ResolvedVal ',' ResolvedVal {
+    *$1 += " " + *$2 + ", " + *$4 + ", " + *$6;
+    delete $2; delete $4; delete $6;
+    $$ = $1;
+  }
+  | VAARG ResolvedVal ',' Types {
+    *$1 += " " + *$2 + ", " + *$4;
+    delete $2; delete $4;
+    $$ = $1;
+  }
+  | EXTRACTELEMENT ResolvedVal ',' ResolvedVal {
+    *$1 += " " + *$2 + ", " + *$4;
+    delete $2; delete $4;
+    $$ = $1;
+  }
+  | INSERTELEMENT ResolvedVal ',' ResolvedVal ',' ResolvedVal {
+    *$1 += " " + *$2 + ", " + *$4 + ", " + *$6;
+    delete $2; delete $4; delete $6;
+    $$ = $1;
+  }
+  | SHUFFLEVECTOR ResolvedVal ',' ResolvedVal ',' ResolvedVal {
+    *$1 += " " + *$2 + ", " + *$4 + ", " + *$6;
+    delete $2; delete $4; delete $6;
+    $$ = $1;
+  }
+  | PHI_TOK PHIList {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | OptTailCall OptCallingConv TypesV ValueRef '(' ValueRefListE ')'  {
+    if (!$2->empty())
+      *$1 += " " + *$2;
+    if (!$1->empty())
+      *$1 += " ";
+    *$1 += *$3 += " " + *$4 + "(" + *$5 + ")";
+    delete $2; delete $3; delete $4; delete $6;
+    $$ = $1;
+  }
+  | MemoryInst ;
+
+
+// IndexList - List of indices for GEP based instructions...
+IndexList 
+  : ',' ValueRefList { 
+    $2->insert(0, ", ");
+    $$ = $2;
+  } 
+  | /* empty */ {  $$ = new std::string(); }
+  ;
+
+OptVolatile 
+  : VOLATILE 
+  | /* empty */ { $$ = new std::string(); }
+  ;
+
+MemoryInst : MALLOC Types OptCAlign {
+    *$1 += " " + *$2;
+    if (!$3->empty())
+      *$1 += " " + *$3;
+    delete $2; delete $3;
+    $$ = $1;
+  }
+  | MALLOC Types ',' UINT ValueRef OptCAlign {
+    *$1 += " " + *$2 + ", " + *$4 + " " + *$5;
+    if (!$6->empty())
+      *$1 += " " + *$6;
+    delete $2; delete $4; delete $5; delete $6;
+    $$ = $1;
+  }
+  | ALLOCA Types OptCAlign {
+    *$1 += " " + *$2;
+    if (!$3->empty())
+      *$1 += " " + *$3;
+    delete $2; delete $3;
+    $$ = $1;
+  }
+  | ALLOCA Types ',' UINT ValueRef OptCAlign {
+    *$1 += " " + *$2 + ", " + *$4 + " " + *$5;
+    if (!$6->empty())
+      *$1 += " " + *$6;
+    delete $2; delete $4; delete $5; delete $6;
+    $$ = $1;
+  }
+  | FREE ResolvedVal {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | OptVolatile LOAD Types ValueRef {
+    if (!$1->empty())
+      *$1 += " ";
+    *$1 += *$2 + " " + *$3 + " " + *$4;
+    delete $2; delete $3; delete $4;
+    $$ = $1;
+  }
+  | OptVolatile STORE ResolvedVal ',' Types ValueRef {
+    if (!$1->empty())
+      *$1 += " ";
+    *$1 += *$2 + " " + *$3 + ", " + *$5 + " " + *$6;
+    delete $2; delete $3; delete $5; delete $6;
+    $$ = $1;
+  }
+  | GETELEMENTPTR Types ValueRef IndexList {
+    *$1 += *$2 + " " + *$3 + " " + *$4;
+    delete $2; delete $3; delete $4;
+    $$ = $1;
+  };
+
+%%
+
+int yyerror(const char *ErrorMsg) {
+  std::string where 
+    = std::string((CurFilename == "-") ? std::string("<stdin>") : CurFilename)
+                  + ":" + llvm::utostr((unsigned) Upgradelineno) + ": ";
+  std::string errMsg = std::string(ErrorMsg) + "\n" + where + " while reading ";
+  if (yychar == YYEMPTY || yychar == 0)
+    errMsg += "end-of-file.";
+  else
+    errMsg += "token: '" + std::string(Upgradetext, Upgradeleng) + "'";
+  std::cerr << errMsg << '\n';
+  exit(1);
+}
diff --git a/tools/llvm-upgrade/UpgradeParser.y.cvs b/tools/llvm-upgrade/UpgradeParser.y.cvs
new file mode 100644 (file)
index 0000000..48ea0b7
--- /dev/null
@@ -0,0 +1,903 @@
+//===-- upgradeParser.y - Upgrade parser for llvm assmbly -------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by Reid Spencer and is distributed under the
+// University of Illinois Open Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+//  This file implements the bison parser for LLVM assembly language upgrade.
+//
+//===----------------------------------------------------------------------===//
+
+%{
+#define YYERROR_VERBOSE 1
+#define YYSTYPE std::string*
+
+#include "ParserInternals.h"
+#include <llvm/ADT/StringExtras.h>
+#include <llvm/System/MappedFile.h>
+#include <algorithm>
+#include <list>
+#include <utility>
+#include <iostream>
+
+
+int yylex();                       // declaration" of xxx warnings.
+int yyparse();
+
+static std::string CurFilename;
+
+static std::ostream *O = 0;
+
+void UpgradeAssembly(const std::string &infile, std::ostream &out)
+{
+  Upgradelineno = 1; 
+  CurFilename = infile;
+  llvm::sys::Path p(infile);
+  llvm::sys::MappedFile mf;
+  mf.open(p);
+  mf.map();
+  const char* base = mf.charBase();
+  size_t sz = mf.size();
+
+  set_scan_bytes(base, sz);
+
+  O = &out;
+
+  if (yyparse()) {
+    std::cerr << "Parse failed.\n";
+    exit(1);
+  }
+}
+
+%}
+
+%token ESINT64VAL
+%token EUINT64VAL
+%token SINTVAL   // Signed 32 bit ints...
+%token UINTVAL   // Unsigned 32 bit ints...
+%token FPVAL     // Float or Double constant
+%token VOID BOOL SBYTE UBYTE SHORT USHORT INT UINT LONG ULONG
+%token FLOAT DOUBLE TYPE LABEL
+%token VAR_ID LABELSTR STRINGCONSTANT
+%token IMPLEMENTATION ZEROINITIALIZER TRUETOK FALSETOK BEGINTOK ENDTOK
+%token DECLARE GLOBAL CONSTANT SECTION VOLATILE
+%token TO DOTDOTDOT NULL_TOK UNDEF CONST INTERNAL LINKONCE WEAK APPENDING
+%token DLLIMPORT DLLEXPORT EXTERN_WEAK
+%token OPAQUE NOT EXTERNAL TARGET TRIPLE ENDIAN POINTERSIZE LITTLE BIG ALIGN
+%token DEPLIBS CALL TAIL ASM_TOK MODULE SIDEEFFECT
+%token CC_TOK CCC_TOK CSRETCC_TOK FASTCC_TOK COLDCC_TOK
+%token X86_STDCALLCC_TOK X86_FASTCALLCC_TOK
+%token DATALAYOUT
+%token RET BR SWITCH INVOKE UNWIND UNREACHABLE
+%token ADD SUB MUL UDIV SDIV FDIV UREM SREM FREM AND OR XOR
+%token SETLE SETGE SETLT SETGT SETEQ SETNE  // Binary Comparators
+%token MALLOC ALLOCA FREE LOAD STORE GETELEMENTPTR
+%token TRUNC ZEXT SEXT FPTRUNC FPEXT BITCAST
+%token UITOFP SITOFP FPTOUI FPTOSI INTTOPTR PTRTOINT
+%token PHI_TOK SELECT SHL LSHR ASHR VAARG
+%token EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR
+%token CAST
+
+%start Module
+
+%%
+
+// Handle constant integer size restriction and conversion...
+INTVAL : SINTVAL | UINTVAL 
+EINT64VAL : ESINT64VAL | EUINT64VAL;
+
+// Operations that are notably excluded from this list include:
+// RET, BR, & SWITCH because they end basic blocks and are treated specially.
+ArithmeticOps: ADD | SUB | MUL | UDIV | SDIV | FDIV | UREM | SREM | FREM;
+LogicalOps   : AND | OR | XOR;
+SetCondOps   : SETLE | SETGE | SETLT | SETGT | SETEQ | SETNE;
+CastOps      : CAST;
+ShiftOps     : SHL | LSHR | ASHR;
+
+// These are some types that allow classification if we only want a particular 
+// thing... for example, only a signed, unsigned, or integral type.
+SIntType :  LONG |  INT |  SHORT | SBYTE;
+UIntType : ULONG | UINT | USHORT | UBYTE;
+IntType  : SIntType | UIntType;
+FPType   : FLOAT | DOUBLE;
+
+// OptAssign - Value producing statements have an optional assignment component
+OptAssign : Name '=' {
+    $1->append(" = ");
+    $$ = $1;
+  }
+  | /*empty*/ {
+    $$ = new std::string(""); 
+  };
+
+OptLinkage 
+  : INTERNAL | LINKONCE | WEAK | APPENDING | DLLIMPORT | DLLEXPORT 
+  | EXTERN_WEAK 
+  | /*empty*/   { $$ = new std::string(""); } ;
+
+OptCallingConv 
+  : CCC_TOK | CSRETCC_TOK | FASTCC_TOK | COLDCC_TOK | X86_STDCALLCC_TOK 
+  | X86_FASTCALLCC_TOK | CC_TOK EUINT64VAL
+  | /*empty*/ { $$ = new std::string(""); } ;
+
+// OptAlign/OptCAlign - An optional alignment, and an optional alignment with
+// a comma before it.
+OptAlign 
+  : /*empty*/        { $$ = new std::string(); }
+  | ALIGN EUINT64VAL { *$1 += " " + *$2; delete $2; $$ = $1; };
+         ;
+OptCAlign 
+  : /*empty*/            { $$ = new std::string(); } 
+  | ',' ALIGN EUINT64VAL { 
+    $2->insert(0, ", "); 
+    *$2 += " " + *$3;
+    delete $3;
+    $$ = $2;
+  };
+
+SectionString 
+  : SECTION STRINGCONSTANT { 
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  };
+
+OptSection : /*empty*/     { $$ = new std::string(); } 
+           | SectionString;
+
+GlobalVarAttributes 
+    : /* empty */ { $$ = new std::string(); } 
+    | ',' GlobalVarAttribute GlobalVarAttributes  {
+      $2->insert(0, ", ");
+      if (!$3->empty())
+        *$2 += " " + *$3;
+      delete $3;
+      $$ = $2;
+    };
+
+GlobalVarAttribute 
+    : SectionString 
+    | ALIGN EUINT64VAL {
+      *$1 += " " + *$2;
+      delete $2;
+      $$ = $1;
+    };
+
+//===----------------------------------------------------------------------===//
+// Types includes all predefined types... except void, because it can only be
+// used in specific contexts (function returning void for example).  To have
+// access to it, a user must explicitly use TypesV.
+//
+
+// TypesV includes all of 'Types', but it also includes the void type.
+TypesV    : Types    | VOID ;
+UpRTypesV : UpRTypes | VOID ; 
+Types     : UpRTypes ;
+
+// Derived types are added later...
+//
+PrimType : BOOL | SBYTE | UBYTE | SHORT  | USHORT | INT   | UINT ;
+PrimType : LONG | ULONG | FLOAT | DOUBLE | TYPE   | LABEL;
+UpRTypes : OPAQUE | PrimType | SymbolicValueRef ;
+
+// Include derived types in the Types production.
+//
+UpRTypes : '\\' EUINT64VAL {                   // Type UpReference
+    $2->insert(0, "\\");
+    $$ = $2;
+  }
+  | UpRTypesV '(' ArgTypeListI ')' {           // Function derived type?
+    *$1 += "( " + *$3 + " )";
+    delete $3;
+    $$ = $1;
+  }
+  | '[' EUINT64VAL 'x' UpRTypes ']' {          // Sized array type?
+    $2->insert(0,"[ ");
+    *$2 += " x " + *$4 + " ]";
+    delete $4;
+    $$ = $2;
+  }
+  | '<' EUINT64VAL 'x' UpRTypes '>' {          // Packed array type?
+    $2->insert(0,"< ");
+    *$2 += " x " + *$4 + " >";
+    delete $4;
+    $$ = $2;
+  }
+  | '{' TypeListI '}' {                        // Structure type?
+    $2->insert(0, "{ ");
+    *$2 += " }";
+    $$ = $2;
+  }
+  | '{' '}' {                                  // Empty structure type?
+    $$ = new std::string("{ }");
+  }
+  | UpRTypes '*' {                             // Pointer type?
+    *$1 += '*';
+    $$ = $1;
+  };
+
+// TypeList - Used for struct declarations and as a basis for function type 
+// declaration type lists
+//
+TypeListI : UpRTypes | TypeListI ',' UpRTypes {
+    *$1 += ", " + *$3;
+    delete $3;
+    $$ = $1;
+  };
+
+// ArgTypeList - List of types for a function type declaration...
+ArgTypeListI : TypeListI
+  | TypeListI ',' DOTDOTDOT {
+    *$1 += ", ...";
+    delete $3;
+    $$ = $1;
+  }
+  | DOTDOTDOT {
+    $$ = $1;
+  }
+  | /*empty*/ {
+    $$ = new std::string();
+  };
+
+// ConstVal - The various declarations that go into the constant pool.  This
+// production is used ONLY to represent constants that show up AFTER a 'const',
+// 'constant' or 'global' token at global scope.  Constants that can be inlined
+// into other expressions (such as integers and constexprs) are handled by the
+// ResolvedVal, ValueRef and ConstValueRef productions.
+//
+ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr
+    *$1 += " [ " + *$3 + " ]";
+    delete $3;
+    $$ = $1;
+  }
+  | Types '[' ']' {
+    $$ = new std::string("[ ]");
+  }
+  | Types 'c' STRINGCONSTANT {
+    *$1 += " c" + *$3;
+    delete $3;
+    $$ = $1;
+  }
+  | Types '<' ConstVector '>' { // Nonempty unsized arr
+    *$1 += " < " + *$3 + " >";
+    delete $3;
+    $$ = $1;
+  }
+  | Types '{' ConstVector '}' {
+    *$1 += " { " + *$3 + " }";
+    delete $3;
+    $$ = $1;
+  }
+  | Types '{' '}' {
+    $$ = new std::string("[ ]");
+  }
+  | Types NULL_TOK {
+    *$1 += " " + *$2; 
+    delete $2;
+    $$ = $1;
+  }
+  | Types UNDEF {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | Types SymbolicValueRef {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | Types ConstExpr {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | Types ZEROINITIALIZER {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  };
+
+ConstVal : SIntType EINT64VAL {      // integral constants
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | UIntType EUINT64VAL {            // integral constants
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | BOOL TRUETOK {                      // Boolean constants
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | BOOL FALSETOK {                     // Boolean constants
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | FPType FPVAL {                   // Float & Double constants
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  };
+
+
+ConstExpr: CastOps '(' ConstVal TO Types ')' {
+    *$1 += " (" + *$3 + " " + *$4 + " " + *$5 + ")";
+    delete $3; delete $4; delete $5;
+    $$ = $1;
+  }
+  | GETELEMENTPTR '(' ConstVal IndexList ')' {
+  }
+  | SELECT '(' ConstVal ',' ConstVal ',' ConstVal ')' {
+  }
+  | ArithmeticOps '(' ConstVal ',' ConstVal ')' {
+  }
+  | LogicalOps '(' ConstVal ',' ConstVal ')' {
+  }
+  | SetCondOps '(' ConstVal ',' ConstVal ')' {
+  }
+  | ShiftOps '(' ConstVal ',' ConstVal ')' {
+  }
+  | EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' {
+  }
+  | INSERTELEMENT '(' ConstVal ',' ConstVal ',' ConstVal ')' {
+  }
+  | SHUFFLEVECTOR '(' ConstVal ',' ConstVal ',' ConstVal ')' {
+  };
+
+
+// ConstVector - A list of comma separated constants.
+ConstVector : ConstVector ',' ConstVal {
+  }
+  | ConstVal {
+  };
+
+
+// GlobalType - Match either GLOBAL or CONSTANT for global declarations...
+GlobalType : GLOBAL { } | CONSTANT { };
+
+
+//===----------------------------------------------------------------------===//
+//                             Rules to match Modules
+//===----------------------------------------------------------------------===//
+
+// Module rule: Capture the result of parsing the whole file into a result
+// variable...
+//
+Module : DefinitionList {
+};
+
+// DefinitionList - Top level definitions
+//
+DefinitionList : DefinitionList Function {
+    $$ = 0;
+  } 
+  | DefinitionList FunctionProto {
+    *O << *$2 << "\n";
+    delete $2;
+    $$ = 0;
+  }
+  | DefinitionList MODULE ASM_TOK AsmBlock {
+    *O << "module asm " << " " << *$4 << "\n";
+  }  
+  | DefinitionList IMPLEMENTATION {
+    *O << "implementation\n";
+  }
+  | ConstPool {
+  };
+
+// ConstPool - Constants with optional names assigned to them.
+ConstPool : ConstPool OptAssign TYPE TypesV {
+    *O << *$2 << " " << *$3 << " " << *$4 << "\n";
+    delete $2; delete $3; delete $4;
+    $$ = 0;
+  }
+  | ConstPool FunctionProto {       // Function prototypes can be in const pool
+    *O << *$2 << "\n";
+    delete $2;
+    $$ = 0;
+  }
+  | ConstPool MODULE ASM_TOK AsmBlock {  // Asm blocks can be in the const pool
+    *O << *$2 << " " << *$3 << " " << *$4 << "\n";
+    delete $2; delete $3; delete $4; 
+    $$ = 0;
+  }
+  | ConstPool OptAssign OptLinkage GlobalType ConstVal  GlobalVarAttributes {
+    *O << *$2 << " " << *$3 << " " << *$4 << " " << *$5 << " " << *$6 << "\n";
+    delete $2; delete $3; delete $4; delete $5; delete $6;
+    $$ = 0;
+  }
+  | ConstPool OptAssign EXTERNAL GlobalType Types  GlobalVarAttributes {
+    *O << *$2 << " " << *$3 << " " << *$4 << " " << *$5 << " " << *$6 << "\n";
+    delete $2; delete $3; delete $4; delete $5; delete $6;
+    $$ = 0;
+  }
+  | ConstPool OptAssign DLLIMPORT GlobalType Types  GlobalVarAttributes {
+    *O << *$2 << " " << *$3 << " " << *$4 << " " << *$5 << " " << *$6 << "\n";
+    delete $2; delete $3; delete $4; delete $5; delete $6;
+    $$ = 0;
+  }
+  | ConstPool OptAssign EXTERN_WEAK GlobalType Types  GlobalVarAttributes {
+    *O << *$2 << " " << *$3 << " " << *$4 << " " << *$5 << " " << *$6 << "\n";
+    delete $2; delete $3; delete $4; delete $5; delete $6;
+    $$ = 0;
+  }
+  | ConstPool TARGET TargetDefinition { 
+    *O << *$2 << " " << *$3 << "\n";
+    delete $2; delete $3;
+    $$ = 0;
+  }
+  | ConstPool DEPLIBS '=' LibrariesDefinition {
+    *O << *$2 << " = " << *$4 << "\n";
+    delete $2; delete $4;
+    $$ = 0;
+  }
+  | /* empty: end of list */ { 
+    $$ = 0;
+  };
+
+
+AsmBlock : STRINGCONSTANT ;
+
+BigOrLittle : BIG | LITTLE 
+
+TargetDefinition 
+  : ENDIAN '=' BigOrLittle {
+    *$1 += " = " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | POINTERSIZE '=' EUINT64VAL {
+    *$1 += " = " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | TRIPLE '=' STRINGCONSTANT {
+    *$1 += " = " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | DATALAYOUT '=' STRINGCONSTANT {
+    *$1 += " = " + *$2;
+    delete $2;
+    $$ = $1;
+  };
+
+LibrariesDefinition 
+  : '[' LibList ']' {
+    $2->insert(0, "[ ");
+    *$2 += " ]";
+    $$ = $2;
+  };
+
+LibList 
+  : LibList ',' STRINGCONSTANT {
+    *$1 += ", " + *$3;
+    delete $3;
+    $$ = $1;
+  }
+  | STRINGCONSTANT 
+  | /* empty: end of list */ {
+    $$ = new std::string();
+  };
+
+//===----------------------------------------------------------------------===//
+//                       Rules to match Function Headers
+//===----------------------------------------------------------------------===//
+
+Name : VAR_ID | STRINGCONSTANT;
+OptName : Name | /*empty*/ { $$ = new std::string(); };
+
+ArgVal : Types OptName {
+  $$ = $1;
+  if (!$2->empty())
+    *$$ += " " + *$2;
+};
+
+ArgListH : ArgListH ',' ArgVal {
+    *$1 += ", " + *$3;
+  }
+  | ArgVal {
+    $$ = $1;
+  };
+
+ArgList : ArgListH {
+    $$ = $1;
+  }
+  | ArgListH ',' DOTDOTDOT {
+    *$1 += ", ...";
+    $$ = $1;
+  }
+  | DOTDOTDOT {
+    $$ = $1;
+  }
+  | /* empty */ {
+    $$ = new std::string();
+  };
+
+FunctionHeaderH : OptCallingConv TypesV Name '(' ArgList ')' 
+                  OptSection OptAlign {
+    if (!$1->empty()) {
+      $2->insert(0, *$1 + " ");
+    }
+    *$2 += " " + *$3 + "( " + *$5 + " )";
+    if (!$7->empty()) {
+      *$2 += " " + *$7;
+    }
+    if (!$8->empty()) {
+      *$2 += " " + *$8;
+    }
+    $$ = $2;
+  };
+
+BEGIN : BEGINTOK {
+    $$ = new std::string("begin");
+  }
+  | '{' { 
+    $$ = new std::string ("{");
+  }
+
+FunctionHeader : OptLinkage FunctionHeaderH BEGIN {
+  if (!$1->empty()) {
+    *O << *$1 << " ";
+  }
+  *O << *$2 << " " << *$3 << "\n";
+  delete $1; delete $2; delete $3;
+  $$ = 0;
+};
+
+END : ENDTOK { $$ = new std::string("end"); }
+    | '}' { $$ = new std::string("}"); };
+
+Function : FunctionHeader BasicBlockList END {
+  if ($2)
+    *O << *$2;
+  *O << '\n' << *$3 << "\n";
+};
+
+FnDeclareLinkage: /*default*/ 
+  | DLLIMPORT    
+  | EXTERN_WEAK 
+  ;
+  
+FunctionProto 
+  : DECLARE FnDeclareLinkage FunctionHeaderH { 
+    *$1 += " " + *$2 + " " + *$3;
+    delete $2; delete $3;
+    $$ = $1;
+  };
+
+//===----------------------------------------------------------------------===//
+//                        Rules to match Basic Blocks
+//===----------------------------------------------------------------------===//
+
+OptSideEffect : /* empty */ {
+  }
+  | SIDEEFFECT {
+  };
+
+ConstValueRef : ESINT64VAL | EUINT64VAL | FPVAL | TRUETOK  | FALSETOK 
+  | NULL_TOK | UNDEF | ZEROINITIALIZER 
+  | '<' ConstVector '>' { 
+    $2->insert(0, "<");
+    *$2 += ">";
+    $$ = $2;
+  }
+  | ConstExpr 
+  | ASM_TOK OptSideEffect STRINGCONSTANT ',' STRINGCONSTANT {
+    if (!$2->empty()) {
+      *$1 += " " + *$2;
+    }
+    *$1 += " " + *$3 + ", " + *$4;
+    delete $2; delete $3; delete $4;
+    $$ = $1;
+  };
+
+SymbolicValueRef : INTVAL | Name ;
+
+// ValueRef - A reference to a definition... either constant or symbolic
+ValueRef : SymbolicValueRef | ConstValueRef;
+
+
+// ResolvedVal - a <type> <value> pair.  This is used only in cases where the
+// type immediately preceeds the value reference, and allows complex constant
+// pool references (for things like: 'ret [2 x int] [ int 12, int 42]')
+ResolvedVal : Types ValueRef {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  };
+
+BasicBlockList : BasicBlockList BasicBlock {
+  }
+  | BasicBlock { // Do not allow functions with 0 basic blocks   
+  };
+
+
+// Basic blocks are terminated by branching instructions: 
+// br, br/cc, switch, ret
+//
+BasicBlock : InstructionList OptAssign BBTerminatorInst  {
+    *O << *$2 ;
+  };
+
+InstructionList : InstructionList Inst {
+    *O << "    " << *$2 << "\n";
+    delete $2;
+    $$ = 0;
+  }
+  | /* empty */ {
+    $$ = 0;
+  }
+  | LABELSTR {
+    *O << *$1 << "\n";
+    delete $1;
+    $$ = 0;
+  };
+
+BBTerminatorInst : RET ResolvedVal {              // Return with a result...
+    *O << "    " << *$1 << " " << *$2 << "\n";
+    delete $1; delete $2;
+    $$ = 0;
+  }
+  | RET VOID {                                       // Return with no result...
+    *O << "    " << *$1 << " " << *$2 << "\n";
+    delete $1; delete $2;
+    $$ = 0;
+  }
+  | BR LABEL ValueRef {                         // Unconditional Branch...
+    *O << "    " << *$1 << " " << *$2 << " " << *$3 << "\n";
+    delete $1; delete $2; delete $3;
+    $$ = 0;
+  }                                                  // Conditional Branch...
+  | BR BOOL ValueRef ',' LABEL ValueRef ',' LABEL ValueRef {  
+    *O << "    " << *$1 << " " << *$2 << " " << *$3 << ", " << *$5 << " "
+       << *$6 << ", " << *$8 << " " << *$9 << "\n";
+    delete $1; delete $2; delete $3; delete $5; delete $6; delete $8; delete $9;
+    $$ = 0;
+  }
+  | SWITCH IntType ValueRef ',' LABEL ValueRef '[' JumpTable ']' {
+    *O << "    " << *$1 << " " << *$2 << " " << *$3 << ", " << *$5 << " " 
+       << *$6 << " [" << *$8 << " ]\n";
+    delete $1; delete $2; delete $3; delete $5; delete $6; delete $8;
+    $$ = 0;
+  }
+  | SWITCH IntType ValueRef ',' LABEL ValueRef '[' ']' {
+    *O << "    " << *$1 << " " << *$2 << " " << *$3 << ", " << *$5 << " " 
+       << *$6 << "[]\n";
+    delete $1; delete $2; delete $3; delete $5; delete $6;
+    $$ = 0;
+  }
+  | INVOKE OptCallingConv TypesV ValueRef '(' ValueRefListE ')'
+    TO LABEL ValueRef UNWIND LABEL ValueRef {
+    *O << "    " << *$1 << " " << *$2 << " " << *$3 << " " << *$4 << " ("
+       << *$6 << ") " << *$8 << " " << *$9 << " " << *$10 << " " << *$11 << " "
+       << *$12 << " " << *$13 << "\n";
+    delete $1; delete $2; delete $3; delete $4; delete $6; delete $8; delete $9;
+    delete $10; delete $11; delete $12; delete $13; 
+    $$ = 0;
+  }
+  | UNWIND {
+    *O << "    " << *$1 << "\n";
+    delete $1;
+    $$ = 0;
+  }
+  | UNREACHABLE {
+    *O << "    " << *$1 << "\n";
+    delete $1;
+    $$ = 0;
+  };
+
+JumpTable : JumpTable IntType ConstValueRef ',' LABEL ValueRef {
+    *$1 += *$2 + " " + *$3 + ", " + *$5 + " " + *$6;
+    delete $2; delete $3; delete $5; delete $6;
+    $$ = $1;
+  }
+  | IntType ConstValueRef ',' LABEL ValueRef {
+    *$1 += *$2 + ", " + *$4 + " " + *$5;
+    delete $2; delete $4; delete $5;
+    $$ = $1;
+  };
+
+Inst 
+  : OptAssign InstVal {
+    *$1 += *$2;
+    delete $2;
+    $$ = $1; 
+  };
+
+PHIList 
+  : Types '[' ValueRef ',' ValueRef ']' {    // Used for PHI nodes
+    *$1 += " [" + *$3 + "," + *$5 + "]";
+    delete $3; delete $5;
+    $$ = $1;
+  }
+  | PHIList ',' '[' ValueRef ',' ValueRef ']' {
+    *$1 += ", [" + *$4 + "," + *$6 + "]";
+    delete $4; delete $6;
+    $$ = $1;
+  };
+
+
+ValueRefList 
+  : ResolvedVal 
+  | ValueRefList ',' ResolvedVal {
+    *$1 += ", " + *$3;
+    delete $3;
+    $$ = $1;
+  };
+
+// ValueRefListE - Just like ValueRefList, except that it may also be empty!
+ValueRefListE 
+  : ValueRefList 
+  | /*empty*/ { $$ = new std::string(); }
+  ;
+
+OptTailCall 
+  : TAIL CALL {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | CALL 
+  ;
+
+InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
+    *$1 += " " + *$2 + " " + *$3 + ", " + *$5;
+    delete $2; delete $3; delete $5;
+    $$ = $1;
+  }
+  | LogicalOps Types ValueRef ',' ValueRef {
+    *$1 += " " + *$2 + " " + *$3 + ", " + *$5;
+    delete $2; delete $3; delete $5;
+    $$ = $1;
+  }
+  | SetCondOps Types ValueRef ',' ValueRef {
+    *$1 += " " + *$2 + " " + *$3 + ", " + *$5;
+    delete $2; delete $3; delete $5;
+    $$ = $1;
+  }
+  | NOT ResolvedVal {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | ShiftOps ResolvedVal ',' ResolvedVal {
+    *$1 += " " + *$2 + ", " + *$4;
+    delete $2; delete $4;
+    $$ = $1;
+  }
+  | CastOps ResolvedVal TO Types {
+    *$1 += " " + *$2 + " " + *$3 + ", " + *$4;
+    delete $2; delete $3; delete $4;
+    $$ = $1;
+  }
+  | SELECT ResolvedVal ',' ResolvedVal ',' ResolvedVal {
+    *$1 += " " + *$2 + ", " + *$4 + ", " + *$6;
+    delete $2; delete $4; delete $6;
+    $$ = $1;
+  }
+  | VAARG ResolvedVal ',' Types {
+    *$1 += " " + *$2 + ", " + *$4;
+    delete $2; delete $4;
+    $$ = $1;
+  }
+  | EXTRACTELEMENT ResolvedVal ',' ResolvedVal {
+    *$1 += " " + *$2 + ", " + *$4;
+    delete $2; delete $4;
+    $$ = $1;
+  }
+  | INSERTELEMENT ResolvedVal ',' ResolvedVal ',' ResolvedVal {
+    *$1 += " " + *$2 + ", " + *$4 + ", " + *$6;
+    delete $2; delete $4; delete $6;
+    $$ = $1;
+  }
+  | SHUFFLEVECTOR ResolvedVal ',' ResolvedVal ',' ResolvedVal {
+    *$1 += " " + *$2 + ", " + *$4 + ", " + *$6;
+    delete $2; delete $4; delete $6;
+    $$ = $1;
+  }
+  | PHI_TOK PHIList {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | OptTailCall OptCallingConv TypesV ValueRef '(' ValueRefListE ')'  {
+    if (!$2->empty())
+      *$1 += " " + *$2;
+    if (!$1->empty())
+      *$1 += " ";
+    *$1 += *$3 += " " + *$4 + "(" + *$5 + ")";
+    delete $2; delete $3; delete $4; delete $6;
+    $$ = $1;
+  }
+  | MemoryInst ;
+
+
+// IndexList - List of indices for GEP based instructions...
+IndexList 
+  : ',' ValueRefList { 
+    $2->insert(0, ", ");
+    $$ = $2;
+  } 
+  | /* empty */ {  $$ = new std::string(); }
+  ;
+
+OptVolatile 
+  : VOLATILE 
+  | /* empty */ { $$ = new std::string(); }
+  ;
+
+MemoryInst : MALLOC Types OptCAlign {
+    *$1 += " " + *$2;
+    if (!$3->empty())
+      *$1 += " " + *$3;
+    delete $2; delete $3;
+    $$ = $1;
+  }
+  | MALLOC Types ',' UINT ValueRef OptCAlign {
+    *$1 += " " + *$2 + ", " + *$4 + " " + *$5;
+    if (!$6->empty())
+      *$1 += " " + *$6;
+    delete $2; delete $4; delete $5; delete $6;
+    $$ = $1;
+  }
+  | ALLOCA Types OptCAlign {
+    *$1 += " " + *$2;
+    if (!$3->empty())
+      *$1 += " " + *$3;
+    delete $2; delete $3;
+    $$ = $1;
+  }
+  | ALLOCA Types ',' UINT ValueRef OptCAlign {
+    *$1 += " " + *$2 + ", " + *$4 + " " + *$5;
+    if (!$6->empty())
+      *$1 += " " + *$6;
+    delete $2; delete $4; delete $5; delete $6;
+    $$ = $1;
+  }
+  | FREE ResolvedVal {
+    *$1 += " " + *$2;
+    delete $2;
+    $$ = $1;
+  }
+  | OptVolatile LOAD Types ValueRef {
+    if (!$1->empty())
+      *$1 += " ";
+    *$1 += *$2 + " " + *$3 + " " + *$4;
+    delete $2; delete $3; delete $4;
+    $$ = $1;
+  }
+  | OptVolatile STORE ResolvedVal ',' Types ValueRef {
+    if (!$1->empty())
+      *$1 += " ";
+    *$1 += *$2 + " " + *$3 + ", " + *$5 + " " + *$6;
+    delete $2; delete $3; delete $5; delete $6;
+    $$ = $1;
+  }
+  | GETELEMENTPTR Types ValueRef IndexList {
+    *$1 += *$2 + " " + *$3 + " " + *$4;
+    delete $2; delete $3; delete $4;
+    $$ = $1;
+  };
+
+%%
+
+int yyerror(const char *ErrorMsg) {
+  std::string where 
+    = std::string((CurFilename == "-") ? std::string("<stdin>") : CurFilename)
+                  + ":" + llvm::utostr((unsigned) Upgradelineno) + ": ";
+  std::string errMsg = std::string(ErrorMsg) + "\n" + where + " while reading ";
+  if (yychar == YYEMPTY || yychar == 0)
+    errMsg += "end-of-file.";
+  else
+    errMsg += "token: '" + std::string(Upgradetext, Upgradeleng) + "'";
+  std::cerr << errMsg << '\n';
+  exit(1);
+}
diff --git a/tools/llvm-upgrade/llvm-upgrade.cpp b/tools/llvm-upgrade/llvm-upgrade.cpp
new file mode 100644 (file)
index 0000000..9db8ee5
--- /dev/null
@@ -0,0 +1,114 @@
+//===--- llvm-upgrade.cpp - The LLVM Assembly Upgrader --------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by Reid Spencer and is distributed under the 
+// University of Illinois Open Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+//  This utility will upgrade LLVM 1.9 Assembly to 2.0 format. It may be 
+//  invoked as a filter, like this:
+//    llvm-1.9/bin/llvm-dis < 1.9.bc | llvm-upgrade | llvm-as > 2.0.bc
+//  
+//  or, you can directly upgrade, like this:
+//    llvm-upgrade -o 2.0.ll < 1.9.ll
+//  
+//  llvm-upgrade won't overwrite files by default. Use -f to force it to
+//  overwrite the output file.
+//
+//===----------------------------------------------------------------------===//
+
+#include "ParserInternals.h"
+#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/Streams.h"
+#include "llvm/Support/SystemUtils.h"
+#include "llvm/System/Signals.h"
+#include <fstream>
+#include <iostream>
+#include <memory>
+using namespace llvm;
+
+static cl::opt<std::string>
+InputFilename(cl::Positional, cl::desc("<input .llvm file>"), cl::init("-"));
+
+static cl::opt<std::string>
+OutputFilename("o", cl::desc("Override output filename"),
+               cl::value_desc("filename"));
+
+static cl::opt<bool>
+Force("f", cl::desc("Overwrite output files"));
+
+int main(int argc, char **argv) {
+  cl::ParseCommandLineOptions(argc, argv, " llvm .ll -> .bc assembler\n");
+  sys::PrintStackTraceOnErrorSignal();
+
+  int exitCode = 0;
+  std::ostream *Out = 0;
+  try {
+    if (OutputFilename != "") {   // Specified an output filename?
+      if (OutputFilename != "-") {  // Not stdout?
+        if (!Force && std::ifstream(OutputFilename.c_str())) {
+          // If force is not specified, make sure not to overwrite a file!
+          llvm_cerr << argv[0] << ": error opening '" << OutputFilename
+                    << "': file exists!\n"
+                    << "Use -f command line argument to force output\n";
+          return 1;
+        }
+        Out = new std::ofstream(OutputFilename.c_str(), std::ios::out |
+                                std::ios::trunc);
+      } else {                      // Specified stdout
+        Out = &std::cout;
+      }
+    } else {
+      if (InputFilename == "-") {
+        OutputFilename = "-";
+        Out = &std::cout;
+      } else {
+        std::string IFN = InputFilename;
+        int Len = IFN.length();
+        if (IFN[Len-3] == '.' && IFN[Len-2] == 'l' && IFN[Len-1] == 'l') {
+          // Source ends in .ll
+          OutputFilename = std::string(IFN.begin(), IFN.end()-3);
+        } else {
+          OutputFilename = IFN;   // Append to it
+        }
+        OutputFilename += ".llu";
+
+        if (!Force && std::ifstream(OutputFilename.c_str())) {
+          // If force is not specified, make sure not to overwrite a file!
+          llvm_cerr << argv[0] << ": error opening '" << OutputFilename
+                    << "': file exists!\n"
+                    << "Use -f command line argument to force output\n";
+          return 1;
+        }
+
+        Out = new std::ofstream(OutputFilename.c_str(), std::ios::out |
+                                std::ios::trunc | std::ios::binary);
+        // Make sure that the Out file gets unlinked from the disk if we get a
+        // SIGINT
+        sys::RemoveFileOnSignal(sys::Path(OutputFilename));
+      }
+    }
+
+    if (!Out->good()) {
+      llvm_cerr << argv[0] << ": error opening " << OutputFilename << "!\n";
+      return 1;
+    }
+
+    UpgradeAssembly(InputFilename, *Out);
+
+    /*
+  } catch (const std::string& caught_message) {
+    llvm_cerr << argv[0] << ": " << caught_message << "\n";
+    exitCode = 1;
+    */
+  } catch (...) {
+    llvm_cerr << argv[0] << ": Unexpected unknown exception occurred.\n";
+    exitCode = 1;
+  }
+
+  if (Out != &std::cout) delete Out;
+  return exitCode;
+}
+