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

Reid Spencer reid at x10sys.com
Wed Nov 29 22:36:59 PST 2006



Changes in directory llvm/tools/llvm-upgrade:

Makefile added (r1.1)
ParserInternals.h added (r1.1)
UpgradeLexer.cpp added (r1.1)
UpgradeLexer.cpp.cvs added (r1.1)
UpgradeLexer.l added (r1.1)
UpgradeLexer.l.cvs added (r1.1)
UpgradeParser.cpp added (r1.1)
UpgradeParser.cpp.cvs added (r1.1)
UpgradeParser.h added (r1.1)
UpgradeParser.h.cvs added (r1.1)
UpgradeParser.y added (r1.1)
UpgradeParser.y.cvs added (r1.1)
llvm-upgrade.cpp added (r1.1)
---
Log message:

Initial, non-functional, version of llvm-upgrade. This version just echos
its input. Committed for safekeeping purposes. Don't use this yet.


---
Diffs of the changes:  (+15223 -0)

 Makefile              |   22 
 ParserInternals.h     |   37 
 UpgradeLexer.cpp      | 2613 +++++++++++++++++++++++++++++++++++++
 UpgradeLexer.cpp.cvs  | 2613 +++++++++++++++++++++++++++++++++++++
 UpgradeLexer.l        |  229 +++
 UpgradeLexer.l.cvs    |  229 +++
 UpgradeParser.cpp     | 3489 ++++++++++++++++++++++++++++++++++++++++++++++++++
 UpgradeParser.cpp.cvs | 3489 ++++++++++++++++++++++++++++++++++++++++++++++++++
 UpgradeParser.h       |  291 ++++
 UpgradeParser.h.cvs   |  291 ++++
 UpgradeParser.y       |  903 ++++++++++++
 UpgradeParser.y.cvs   |  903 ++++++++++++
 llvm-upgrade.cpp      |  114 +
 13 files changed, 15223 insertions(+)


Index: llvm/tools/llvm-upgrade/Makefile
diff -c /dev/null llvm/tools/llvm-upgrade/Makefile:1.1
*** /dev/null	Thu Nov 30 00:36:54 2006
--- llvm/tools/llvm-upgrade/Makefile	Thu Nov 30 00:36:44 2006
***************
*** 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


Index: llvm/tools/llvm-upgrade/ParserInternals.h
diff -c /dev/null llvm/tools/llvm-upgrade/ParserInternals.h:1.1
*** /dev/null	Thu Nov 30 00:36:59 2006
--- llvm/tools/llvm-upgrade/ParserInternals.h	Thu Nov 30 00:36:44 2006
***************
*** 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


Index: llvm/tools/llvm-upgrade/UpgradeLexer.cpp
diff -c /dev/null llvm/tools/llvm-upgrade/UpgradeLexer.cpp:1.1
*** /dev/null	Thu Nov 30 00:36:59 2006
--- llvm/tools/llvm-upgrade/UpgradeLexer.cpp	Thu Nov 30 00:36:44 2006
***************
*** 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: /var/cvs/llvm/llvm/tools/llvm-upgrade/UpgradeLexer.cpp,v 1.1 2006/11/30 06:36:44 reid Exp $
+  */
+ 
+ #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"
+ 


Index: llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs
diff -c /dev/null llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs:1.1
*** /dev/null	Thu Nov 30 00:36:59 2006
--- llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs	Thu Nov 30 00:36:44 2006
***************
*** 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: /var/cvs/llvm/llvm/tools/llvm-upgrade/UpgradeLexer.cpp.cvs,v 1.1 2006/11/30 06:36:44 reid Exp $
+  */
+ 
+ #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"
+ 


Index: llvm/tools/llvm-upgrade/UpgradeLexer.l
diff -c /dev/null llvm/tools/llvm-upgrade/UpgradeLexer.l:1.1
*** /dev/null	Thu Nov 30 00:36:59 2006
--- llvm/tools/llvm-upgrade/UpgradeLexer.l	Thu Nov 30 00:36:44 2006
***************
*** 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]; }
+ 
+ %%


Index: llvm/tools/llvm-upgrade/UpgradeLexer.l.cvs
diff -c /dev/null llvm/tools/llvm-upgrade/UpgradeLexer.l.cvs:1.1
*** /dev/null	Thu Nov 30 00:36:59 2006
--- llvm/tools/llvm-upgrade/UpgradeLexer.l.cvs	Thu Nov 30 00:36:44 2006
***************
*** 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]; }
+ 
+ %%


Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp
diff -c /dev/null llvm/tools/llvm-upgrade/UpgradeParser.cpp:1.1
*** /dev/null	Thu Nov 30 00:36:59 2006
--- llvm/tools/llvm-upgrade/UpgradeParser.cpp	Thu Nov 30 00:36:44 2006
***************
*** 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
+ 
+ 
+ 
+ #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 */
+ 
+ 
+ 
+ #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;
+     }
+ }
+ 
+ 
+ /* 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"
+ 
+   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);
+ }
+ 


Index: llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs
diff -c /dev/null llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs:1.1
*** /dev/null	Thu Nov 30 00:36:59 2006
--- llvm/tools/llvm-upgrade/UpgradeParser.cpp.cvs	Thu Nov 30 00:36:44 2006
***************
*** 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
+ 
+ 
+ 
+ #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 */
+ 
+ 
+ 
+ #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;
+     }
+ }
+ 
+ 
+ /* 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"
+ 
+   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);
+ }
+ 


Index: llvm/tools/llvm-upgrade/UpgradeParser.h
diff -c /dev/null llvm/tools/llvm-upgrade/UpgradeParser.h:1.1
*** /dev/null	Thu Nov 30 00:36:59 2006
--- llvm/tools/llvm-upgrade/UpgradeParser.h	Thu Nov 30 00:36:44 2006
***************
*** 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;
+ 
+ 
+ 


Index: llvm/tools/llvm-upgrade/UpgradeParser.h.cvs
diff -c /dev/null llvm/tools/llvm-upgrade/UpgradeParser.h.cvs:1.1
*** /dev/null	Thu Nov 30 00:36:59 2006
--- llvm/tools/llvm-upgrade/UpgradeParser.h.cvs	Thu Nov 30 00:36:44 2006
***************
*** 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;
+ 
+ 
+ 


Index: llvm/tools/llvm-upgrade/UpgradeParser.y
diff -c /dev/null llvm/tools/llvm-upgrade/UpgradeParser.y:1.1
*** /dev/null	Thu Nov 30 00:36:59 2006
--- llvm/tools/llvm-upgrade/UpgradeParser.y	Thu Nov 30 00:36:44 2006
***************
*** 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);
+ }


Index: llvm/tools/llvm-upgrade/UpgradeParser.y.cvs
diff -c /dev/null llvm/tools/llvm-upgrade/UpgradeParser.y.cvs:1.1
*** /dev/null	Thu Nov 30 00:36:59 2006
--- llvm/tools/llvm-upgrade/UpgradeParser.y.cvs	Thu Nov 30 00:36:44 2006
***************
*** 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);
+ }


Index: llvm/tools/llvm-upgrade/llvm-upgrade.cpp
diff -c /dev/null llvm/tools/llvm-upgrade/llvm-upgrade.cpp:1.1
*** /dev/null	Thu Nov 30 00:36:59 2006
--- llvm/tools/llvm-upgrade/llvm-upgrade.cpp	Thu Nov 30 00:36:44 2006
***************
*** 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;
+ }
+ 






More information about the llvm-commits mailing list