diff --git a/lib/AsmParser/Lexer.cpp.cvs b/lib/AsmParser/Lexer.cpp.cvs
index 6eedd2b..51f989e 100644
--- a/lib/AsmParser/Lexer.cpp.cvs
+++ b/lib/AsmParser/Lexer.cpp.cvs
@@ -1,94 +1,51 @@
-#line 2 "Lexer.cpp"
+#define yy_create_buffer llvmAsm_create_buffer
+#define yy_delete_buffer llvmAsm_delete_buffer
+#define yy_scan_buffer llvmAsm_scan_buffer
+#define yy_scan_string llvmAsm_scan_string
+#define yy_scan_bytes llvmAsm_scan_bytes
+#define yy_flex_debug llvmAsm_flex_debug
+#define yy_init_buffer llvmAsm_init_buffer
+#define yy_flush_buffer llvmAsm_flush_buffer
+#define yy_load_buffer_state llvmAsm_load_buffer_state
+#define yy_switch_to_buffer llvmAsm_switch_to_buffer
+#define yyin llvmAsmin
+#define yyleng llvmAsmleng
+#define yylex llvmAsmlex
+#define yyout llvmAsmout
+#define yyrestart llvmAsmrestart
+#define yytext llvmAsmtext
+#define yylineno llvmAsmlineno
 
-#line 4 "Lexer.cpp"
+#line 20 "Lexer.cpp"
+/* A lexical scanner generated by flex*/
 
-#define  YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
+/* Scanner skeleton version:
+ * $Header$
+ */
 
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 33
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
 
-/* First, we deal with  platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
 #include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
+#include <unistd.h>
 
-/* end standard C headers. */
 
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types. 
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
 #endif
 
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t; 
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN               (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN              (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN              (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX               (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX              (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX              (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX              (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX             (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX             (4294967295U)
-#endif
-
-#endif /* ! FLEXINT_H */
 
 #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
 
@@ -96,17 +53,34 @@
 
 #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
 
@@ -121,88 +95,80 @@
  * but we do it the disgusting crufty way forced on us by the ()-less
  * definition of BEGIN.
  */
-#define BEGIN (yy_start) = 1 + 2 *
+#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 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 llvmAsmrestart(llvmAsmin  )
+#define YY_NEW_FILE yyrestart( yyin )
 
 #define YY_END_OF_BUFFER_CHAR 0
 
 /* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
 #define YY_BUF_SIZE (16384*64)
-#endif
 
-/* The state buf must be large enough to hold one state per character in the main buffer.
- */
-#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
 
-extern int llvmAsmleng;
-
-extern FILE *llvmAsmin, *llvmAsmout;
+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
 
-    /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
-     *       access to the local variable yy_act. Since yyless() is a macro, it would break
-     *       existing scanners that call yyless() from OUTSIDE llvmAsmlex. 
-     *       One obvious solution it to make yy_act a global. I tried that, and saw
-     *       a 5% performance hit in a non-llvmAsmlineno scanner, because yy_act is
-     *       normally declared as a register variable-- so it is not worth it.
-     */
-    #define  YY_LESS_LINENO(n) \
-            do { \
-                int yyl;\
-                for ( yyl = n; yyl < llvmAsmleng; ++yyl )\
-                    if ( llvmAsmtext[yyl] == '\n' )\
-                        --llvmAsmlineno;\
-            }while(0)
-    
-/* Return all but the first "n" matched characters back to the input stream. */
+/* 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 llvmAsmtext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-		*yy_cp = (yy_hold_char); \
+		/* Undo effects of setting up yytext. */ \
+		*yy_cp = yy_hold_char; \
 		YY_RESTORE_YY_MORE_OFFSET \
-		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-		YY_DO_BEFORE_ACTION; /* set up llvmAsmtext again */ \
+		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)  )
+#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).
  */
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
 typedef unsigned int yy_size_t;
-#endif
 
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
+
 struct yy_buffer_state
 	{
 	FILE *yy_input_file;
@@ -239,16 +205,12 @@
 	 */
 	int yy_at_bol;
 
-    int yy_bs_lineno; /**< The line count. */
-    int yy_bs_column; /**< The column count. */
-    
 	/* 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
@@ -258,203 +220,199 @@
 	 * possible backing-up.
 	 *
 	 * When we actually see the EOF, we change the status to "new"
-	 * (via llvmAsmrestart()), so that the user can continue scanning by
-	 * just pointing llvmAsmin at a new input file.
+	 * (via yyrestart()), so that the user can continue scanning by
+	 * just pointing yyin at a new input file.
 	 */
 #define YY_BUFFER_EOF_PENDING 2
-
 	};
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
 
-/* Stack of input buffers. */
-static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
-static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+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".
- *
- * Returns the top of the stack, or NULL.
  */
-#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
-                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
-                          : NULL)
+#define YY_CURRENT_BUFFER yy_current_buffer
 
-/* Same as previous macro, but useful when we know that the buffer stack is not
- * NULL or when we need an lvalue. For internal use only.
- */
-#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
 
-/* yy_hold_char holds the character lost when llvmAsmtext is formed. */
+/* 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 llvmAsmleng;
+
+
+int yyleng;
 
 /* Points to current character in buffer. */
 static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 0;		/* whether we need to initialize */
+static int yy_init = 1;		/* whether we need to initialize */
 static int yy_start = 0;	/* start state number */
 
-/* Flag which is used to allow llvmAsmwrap()'s to do buffer switches
- * instead of setting up a fresh llvmAsmin.  A bit of a hack ...
+/* 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 llvmAsmrestart (FILE *input_file  );
-void llvmAsm_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE llvmAsm_create_buffer (FILE *file,int size  );
-void llvmAsm_delete_buffer (YY_BUFFER_STATE b  );
-void llvmAsm_flush_buffer (YY_BUFFER_STATE b  );
-void llvmAsmpush_buffer_state (YY_BUFFER_STATE new_buffer  );
-void llvmAsmpop_buffer_state (void );
+void yyrestart YY_PROTO(( FILE *input_file ));
 
-static void llvmAsmensure_buffer_stack (void );
-static void llvmAsm_load_buffer_state (void );
-static void llvmAsm_init_buffer (YY_BUFFER_STATE b,FILE *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 )
 
-#define YY_FLUSH_BUFFER llvmAsm_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 ));
 
-YY_BUFFER_STATE llvmAsm_scan_buffer (char *base,yy_size_t size  );
-YY_BUFFER_STATE llvmAsm_scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE llvmAsm_scan_bytes (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 * ));
 
-void *llvmAsmalloc (yy_size_t  );
-void *llvmAsmrealloc (void *,yy_size_t  );
-void llvmAsmfree (void *  );
-
-#define yy_new_buffer llvmAsm_create_buffer
+#define yy_new_buffer yy_create_buffer
 
 #define yy_set_interactive(is_interactive) \
 	{ \
-	if ( ! YY_CURRENT_BUFFER ){ \
-        llvmAsmensure_buffer_stack (); \
-		YY_CURRENT_BUFFER_LVALUE =    \
-            llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE ); \
-	} \
-	YY_CURRENT_BUFFER_LVALUE->yy_is_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 ){\
-        llvmAsmensure_buffer_stack (); \
-		YY_CURRENT_BUFFER_LVALUE =    \
-            llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE ); \
-	} \
-	YY_CURRENT_BUFFER_LVALUE->yy_at_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_LVALUE->yy_at_bol)
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
 
-/* Begin user sect3 */
 
-#define llvmAsmwrap(n) 1
+#define YY_USES_REJECT
+
+#define yywrap() 1
 #define YY_SKIP_YYWRAP
-
 typedef unsigned char YY_CHAR;
-
-FILE *llvmAsmin = (FILE *) 0, *llvmAsmout = (FILE *) 0;
-
+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
 
-extern int llvmAsmlineno;
-
-int llvmAsmlineno = 1;
-
-extern char *llvmAsmtext;
-#define yytext_ptr llvmAsmtext
-
-static yy_state_type yy_get_previous_state (void );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
-static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[]  );
+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 llvmAsmtext.
+ * corresponding action - sets up yytext.
  */
 #define YY_DO_BEFORE_ACTION \
-	(yytext_ptr) = yy_bp; \
-	llvmAsmleng = (size_t) (yy_cp - yy_bp); \
-	(yy_hold_char) = *yy_cp; \
+	yytext_ptr = yy_bp; \
+	yyleng = (int) (yy_cp - yy_bp); \
+	yy_hold_char = *yy_cp; \
 	*yy_cp = '\0'; \
-	(yy_c_buf_p) = yy_cp;
+	yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 136
-#define YY_END_OF_BUFFER 137
-/* This struct is not used in this scanner,
-   but its presence is necessary. */
-struct yy_trans_info
-	{
-	flex_int32_t yy_verify;
-	flex_int32_t yy_nxt;
-	};
-static yyconst flex_int16_t yy_accept[557] =
+#define YY_NUM_RULES 135
+#define YY_END_OF_BUFFER 136
+static yyconst short int yy_acclist[215] =
     {   0,
-        0,    0,  137,  135,  134,  134,  135,  135,  135,  135,
-      135,  135,  127,  127,    1,  135,  135,  135,  135,  135,
-      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
-      135,  135,  135,  135,  135,  135,  135,    0,  126,    0,
-      124,  123,  123,  130,    0,  128,    0,  132,  127,    0,
-        1,    0,    0,    0,    0,    0,    0,    0,    0,  109,
-        0,   40,    0,    0,    0,    0,    0,    0,    0,   69,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       54,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   70,    0,    0,    0,    0,    0,    0,   65,    0,
+      136,  134,  135,  133,  134,  135,  133,  135,  134,  135,
+      134,  135,  134,  135,  134,  135,  134,  135,  134,  135,
+      126,  134,  135,  126,  134,  135,    1,  134,  135,  134,
+      135,  134,  135,  134,  135,  134,  135,  134,  135,  134,
+      135,  134,  135,  134,  135,  134,  135,  134,  135,  134,
+      135,  134,  135,  134,  135,  134,  135,  134,  135,  134,
+      135,  134,  135,  134,  135,  134,  135,  134,  135,  134,
+      135,  134,  135,  125,  123,  122,  122,  129,  127,  131,
+      126,    1,  108,   40,   68,   53,   69,   64,   24,  125,
+      122,  122,  130,  131,   21,  131,  132,   54,   63,   38,
 
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   24,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  126,  123,  123,  132,   21,  132,    0,  133,   55,
-        0,    0,   64,    0,    0,   38,    0,   33,    0,    0,
-        0,   41,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    3,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   57,    0,   79,   84,
-       82,   83,   81,   80,    0,   85,   89,    0,    0,  108,
+       33,   41,    3,   56,   78,   83,   81,   82,   80,   79,
+       84,   88,  107,   73,   71,  103,   72,   70,   55,   86,
+       77,   75,   76,   74,   87,   85,   65,  124,  131,  131,
+      105,   89,   67,   59,  115,   62,   66,  116,  104,   23,
+      128,   58,   92,   61,   25,    4,   51,   57,   60,   47,
+       12,   91,  131,   35,    2,    5,   48,   94,   50,  117,
+       90,   22,  114,   44,    7,   49,   29,   43,   98,   97,
+        8,   16,  110,   32,  113,   37,   52,  102,   96,  109,
+       26,   27,   95,  111,  106,  101,   42,    6,   28,   93,
+       36,    9,   18,   10,   99,   11,  100,   34,   13,   15,
 
-        0,    0,    0,    0,    0,   74,   72,  104,    0,    0,
-        0,   73,   71,    0,    0,   56,    0,    0,    0,    0,
-        0,    0,    0,   87,   78,   76,    0,   77,   75,    0,
-       88,   86,    0,    0,    0,    0,    0,    0,    0,    0,
-       66,    0,    0,  125,  132,    0,    0,    0,  132,    0,
-        0,    0,  106,    0,    0,   48,   90,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   68,   60,    0,    0,    0,    0,  116,   63,
-        0,    0,    0,   67,    0,    0,    0,    0,    0,    0,
-        0,    0,  117,  105,    0,    0,   23,    0,    0,    0,
-
-      129,   59,    0,    0,   93,    0,    0,    0,   62,    0,
-        0,   25,    0,    0,    4,    0,   52,   58,    0,    0,
-        0,    0,   61,    0,   47,    0,   12,    0,    0,   92,
-      132,   35,    0,    0,    2,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    5,
-        0,   49,   95,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   51,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  118,    0,    0,
-        0,   91,    0,   22,    0,    0,    0,    0,    0,    0,
-        0,  115,    0,    0,   44,    0,    0,    0,    0,    7,
-
-        0,    0,    0,   50,   29,    0,    0,   43,   99,   98,
-        0,    0,    8,   16,    0,    0,    0,    0,  111,    0,
-       32,  114,   37,   53,    0,    0,    0,  103,    0,    0,
-       97,  110,   26,   27,   96,    0,  112,  107,    0,    0,
-        0,    0,    0,  102,    0,   42,    0,    6,   28,    0,
-        0,    0,    0,    0,   94,    0,    0,    0,    0,    0,
-        0,    0,    0,   36,    0,    0,    0,    0,    0,    0,
-        0,    0,    9,    0,    0,    0,    0,   18,    0,    0,
-        0,    0,   10,  100,   11,    0,  101,    0,    0,    0,
-       34,    0,    0,    0,   13,    0,   15,   14,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       31,    0,    0,    0,    0,    0,    0,    0,   39,    0,
-        0,    0,    0,   17,    0,    0,    0,    0,   30,    0,
-      113,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  119,    0,  121,  122,    0,   45,    0,
-      120,   19,   46,    0,   20,    0
+       14,   31,   39,   17,   30,  112,  118,  120,  121,   45,
+      119,   19,   46,   20
     } ;
 
-static yyconst flex_int32_t yy_ec[256] =
+static yyconst short int yy_accept[555] =
+    {   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,   74,   74,   75,
+       75,   76,   77,   78,   79,   79,   80,   80,   81,   82,
+       82,   83,   83,   83,   83,   83,   83,   83,   83,   84,
+       84,   85,   85,   85,   85,   85,   85,   85,   85,   86,
+       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   88,   88,   88,   88,   88,   88,   88,   89,   89,
+
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   90,   90,   90,   90,   90,
+       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
+       90,   91,   92,   94,   95,   96,   97,   97,   98,   99,
+       99,   99,  100,  100,  100,  101,  101,  102,  102,  102,
+      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  105,  105,  106,  107,  108,
+      109,  110,  111,  111,  112,  113,  113,  113,  114,  114,
+
+      114,  114,  114,  114,  115,  116,  117,  117,  117,  117,
+      118,  119,  119,  119,  120,  120,  120,  120,  120,  120,
+      120,  120,  121,  122,  123,  123,  124,  125,  125,  126,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  128,
+      128,  128,  129,  130,  130,  130,  130,  131,  131,  131,
+      131,  132,  132,  132,  133,  133,  133,  133,  133,  133,
+      133,  133,  133,  133,  133,  133,  133,  133,  133,  133,
+      134,  135,  135,  135,  135,  135,  136,  137,  137,  137,
+      137,  138,  138,  138,  138,  138,  138,  138,  138,  138,
+      139,  140,  140,  140,  141,  141,  141,  141,  142,  143,
+
+      143,  143,  144,  144,  144,  144,  145,  145,  145,  146,
+      146,  146,  147,  147,  148,  149,  149,  149,  149,  149,
+      150,  150,  151,  151,  152,  152,  152,  153,  154,  155,
+      155,  155,  156,  156,  156,  156,  156,  156,  156,  156,
+      156,  156,  156,  156,  156,  156,  156,  157,  157,  158,
+      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+      159,  159,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  161,  161,  161,  161,  162,
+      162,  163,  163,  163,  163,  163,  163,  163,  163,  164,
+      164,  164,  165,  165,  165,  165,  165,  166,  166,  166,
+
+      166,  167,  168,  168,  168,  169,  170,  171,  171,  171,
+      172,  173,  173,  173,  173,  173,  174,  174,  175,  176,
+      177,  178,  178,  178,  178,  179,  179,  179,  180,  181,
+      182,  183,  184,  184,  185,  186,  186,  186,  186,  186,
+      186,  187,  187,  188,  188,  189,  190,  190,  190,  190,
+      190,  190,  191,  191,  191,  191,  191,  191,  191,  191,
+      191,  192,  192,  192,  192,  192,  192,  192,  192,  192,
+      193,  193,  193,  193,  193,  194,  194,  194,  194,  194,
+      195,  196,  197,  197,  198,  198,  198,  198,  199,  199,
+      199,  199,  200,  200,  201,  202,  202,  202,  202,  202,
+
+      202,  202,  202,  202,  202,  202,  202,  202,  203,  203,
+      203,  203,  203,  203,  203,  203,  204,  204,  204,  204,
+      204,  205,  205,  205,  205,  205,  206,  206,  207,  207,
+      207,  207,  207,  207,  207,  207,  207,  207,  207,  207,
+      207,  208,  208,  209,  210,  210,  211,  211,  212,  213,
+      214,  214,  215,  215
+    } ;
+
+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,
@@ -486,7 +444,7 @@
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[44] =
+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,
@@ -495,262 +453,260 @@
         3,    3,    3
     } ;
 
-static yyconst flex_int16_t yy_base[562] =
+static yyconst short int yy_base[559] =
     {   0,
-        0,    0, 1206, 1207, 1207, 1207, 1201, 1190,   36,   40,
+        0,    0, 1200, 1201, 1201, 1201, 1195, 1184,   36,   40,
        44,   50,   56,   62,    0,   63,   66,   81,   89,   47,
       108,   91,   77,  134,   92,  119,   93,  152,  126,  109,
-      178,  154,  209,  135,  111,  146,  112, 1199, 1207, 1188,
-     1207,    0,  159,  198,  215,  236,   70,  241,  256,  261,
-        0,   68,  147,  128,  165,  176,  166,  262,   31, 1187,
-      168,  200,  206,   48,   72,  265,  170,  101,  208, 1186,
-       73,  227,  203,  215,  180,  274,  139,  225,  229,  278,
-      272,  276,  277,  280,  281,  290,  293,  282,  291,  300,
-      295, 1185,  299,  122,  309,  311,  312,  317,  315,  316,
+      178,  154,  209,  135,  111,  146,  112, 1193, 1201, 1182,
+     1201,    0,  159,  198,  215,  236,   70,  241,  256,  261,
+        0,   68,  147,  128,  165,  176,   73,  262, 1181,   31,
+      170,  166,   48,   49,  265,  185,  101,  198, 1180,  180,
+      227,  207,  208,  225,  274,  139,  276,  228,  278,  272,
+      229,  277,  280,  281,  290,  293,  282,  291,  292,  295,
+     1179,  301,  122,  308,  309,  311,  314,  304,  315,  321,
 
-      324,  304,  319,  301,  326,  331,  327,  330,  333,  340,
-      335,  343,  347,  351,  352, 1184,  355,  348,  357,  360,
-      362,  359,  366,  369,  372,  384,  383,  386,  181,  376,
-      392, 1183,    0,  403,  407, 1182,  424,  441,    0, 1181,
-      407,  393, 1180,  408,  394, 1179,  412, 1178,  429,  428,
-      430, 1177,  442,  409,  444,  446,  432,  448,  449,  454,
-      452,  455,  456,  457,  459,  462,  460,  466,  469,  470,
-      474,  475,  472,  486,  473,  480,  489,  493,  487,  497,
-      499,  500,  501,  503,  504,  507, 1176,  510, 1175, 1174,
-     1173, 1172, 1171, 1170,  508, 1169, 1168,  512,  511, 1167,
+      322,  323,  324,  325,  326,  327,  330,  329,  335,  339,
+      342,  349,  356,  357, 1178,  359,  347,  361,  362,  364,
+      340,  367,  371,  368,  215,  381,  386,  395,  384,  385,
+     1177,    0,  402,  411, 1176,  425,  442,    0, 1175,  168,
+      411, 1174,  404,  416, 1173,  375, 1172,  419,  402, 1171,
+      443,  427,  444,  445,  403,  433,  415,  447,  448,  452,
+      455,  457,  458,  459,  461,  462,  463,  466,  473,  468,
+      469,  472,  474,  470,  483,  488,  491,  494,  496,  495,
+      498,  499,  500,  501, 1170,  502, 1169, 1168, 1167, 1166,
+     1165, 1164,  504, 1163, 1162,  505,  507, 1161,  535,  514,
 
-      539,  514,  517,  518,  520, 1166, 1165, 1164,  522,  521,
-      515, 1163, 1162,  550,  551, 1161,  552,  553,  554,  555,
-      560,  558,  556, 1160, 1159, 1158,  561, 1157, 1156,  562,
-     1155, 1154,  564,  557,  576,  578,  580,  582,  584,  559,
-     1153,  585,  586, 1207,  597,  614,  618,  622,  627,  628,
-      590,  629, 1152,  630,  599, 1151, 1150,  631,  632,  633,
-      634,  635,  636,  589,  637,  641,  639,  643,  642,  660,
-      650,  644, 1149, 1148,  652,  658,  661,  662, 1147, 1146,
-      667,  666,  668, 1145,  669,  670,  672,  674,  591,  673,
-      676,  680, 1144, 1143,  679,  684, 1142,  687,  689,  690,
+      512,  519,  513, 1160, 1159, 1158,  516,  546,  529, 1157,
+     1156,  548,  549, 1155,  527,  508,  551,  552,  556,  554,
+      553, 1154, 1153, 1152,  557, 1151, 1150,  558, 1149, 1148,
+      559,  561,  560,  572,  579,  580,  569,  582, 1147,  566,
+      581, 1201,  592,  600,  609,  613,  618,  602,  620,  621,
+     1146,  622,  623, 1145,  624,  603,  625,  629,  630,  632,
+      633,  634,  636,  640,  637,  641,  645,  647,  651, 1144,
+     1143,  643,  653,  657,  654, 1142, 1141,  659,  660,  663,
+     1140,  664,  667,  668,  669,  670,  671,  675,  677, 1139,
+     1138,  680,  682, 1137,  683,  685,  691,    0, 1136,  690,
 
-        0, 1141,  696,  698, 1140,  700,  704,  706, 1139,  714,
-      715, 1138,  717,  703, 1137,  720, 1136, 1135,  719,  721,
-      702,  724, 1134,  725, 1133,  728, 1132,  730,  732, 1131,
-      737, 1130,  737,  739, 1129,  738,  743,  744,  748,  753,
-      754,  756,  757,  759,  761,  762,  764,  766,  767, 1128,
-      769, 1127, 1126,  772,  773,  770,  768,  779,  782,  784,
-      788,  789,  790,  792, 1125,  791,  793,  796,  795,  798,
-      805,  797,  812,  813,  816,  815,  818, 1124,  414,  817,
-      819, 1123,  820, 1122,  822,  824,  823,  833,  821,  827,
-      835, 1121,  838,  841, 1120,  842,  847,  843,  844, 1119,
+      694, 1135,  695,  702,  696, 1134,  704,  710, 1133,  712,
+      699, 1132,  715, 1131, 1130,  716,  718,  719,  720, 1129,
+      723, 1128,  725, 1127,  729,  727, 1126,  734, 1125,  736,
+      592, 1124,  734,  735,  738,  745,  749,  746,  750,  747,
+      755,  757,  760,  758,  761,  763, 1123,  764, 1122, 1121,
+      766,  768,  765,  777,  772,  773,  780,  762,  783,  784,
+      788, 1120,  789,  792,  791,  793,  795,  799,  794,  805,
+      809,  810,  811,  812, 1119,  814,  813,  815, 1118,  816,
+     1117,  820,  822,  817,  829,  833,  818,  834, 1116,  837,
+      839, 1115,  840,  845,  819,  844, 1114,  843,  846,  848,
 
-      845,  848,  855, 1118, 1117,  856,  849, 1116, 1115, 1114,
-      858,  862, 1113, 1112,  868,  870,  869,  857, 1111,  875,
-     1110, 1109, 1108, 1107,  863,  876,  881, 1106,  883,  885,
-     1105, 1104, 1103, 1102, 1101,  887, 1100, 1099,  886,  888,
-      889,  890,  891, 1098,  894, 1097,  896, 1096, 1095,  900,
-      902,  904,  905,  906, 1094,  907,  909,  912,  913,  911,
-      922,  918,  919, 1093,  924,  925,  933,  935,  929,  936,
-      937,  939, 1092,  941,  945,  946,  947, 1091,  948,  953,
-      951,  955, 1090, 1089, 1088,  954, 1085,  957,  971,  973,
-     1076,  975,  972,  976, 1073,  958, 1072, 1071,  980,  983,
+     1113, 1112,  854,  849, 1111, 1110, 1109,  856,  855, 1108,
+     1107,  860,  861,  868,  867, 1106,  874, 1105, 1104, 1103,
+     1102,  875,  876,  877, 1101,  878,  879, 1100, 1099, 1098,
+     1097, 1096,  880, 1095, 1094,  882,  883,  891,  885,  884,
+     1093,  886, 1092,  888, 1091, 1090,  895,  900,  902,  903,
+      904, 1089,  908,  907,  910,  911,  912,  914,  915,  919,
+     1086,  920,  922,  927,  929,  930,  934,  935,  936, 1077,
+      939,  943,  944,  940, 1076,  946,  948,  950,  951, 1075,
+     1073, 1071,  955, 1070,  962,  952,  964, 1069,  969,  972,
+      974, 1068,  956, 1067, 1064,  975,  981,  978,  983,  982,
 
-      961,  986,  987,  959,  990,  993,  994,  995,  996,  999,
-     1068,  998, 1001, 1002, 1005, 1006, 1010, 1007, 1067, 1013,
-     1008, 1014, 1018, 1064, 1025, 1020, 1024, 1027, 1063, 1031,
-     1060, 1026, 1032, 1035, 1036, 1038, 1040, 1042, 1045, 1047,
-     1050, 1046, 1051,  962, 1052,  701,  601, 1055,  526, 1061,
-      476,  374,  246, 1056,  245, 1207, 1091, 1093,  254, 1097,
-       57
+      957,  984,  985,  989,  992,  994,  995, 1063,  993,  996,
+      999, 1002, 1005, 1006, 1003, 1062, 1010, 1013, 1016, 1017,
+     1058, 1011, 1021, 1022, 1023,  954, 1024,  700, 1030, 1027,
+     1033, 1036, 1029, 1037, 1038, 1039, 1041, 1047, 1043, 1051,
+      521, 1049,  471,  432, 1052,  431, 1056,  365,  248,  247,
+     1057,  216, 1201, 1092, 1094,  107, 1098,  106
     } ;
 
-static yyconst flex_int16_t yy_def[562] =
+static yyconst short int yy_def[559] =
     {   0,
-      556,    1,  556,  556,  556,  556,  557,  558,  559,  556,
-      558,  558,  558,  558,  560,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  557,  556,  558,
-      556,  561,  561,  556,  556,  558,  558,  558,  558,  558,
-      560,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-       24,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      553,    1,  553,  553,  553,  553,  554,  555,  556,  553,
+      555,  555,  555,  555,  557,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  554,  553,  555,
+      553,  558,  558,  553,  553,  555,  555,  555,  555,  555,
+      557,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,   24,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
 
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  556,  561,  561,  556,  558,  558,  558,   50,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      553,  558,  558,  553,  555,  555,  555,   50,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,   50,  555,
 
-       50,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  556,  556,  556,  556,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  553,  553,  553,  553,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  199,  555,  555,
 
-      201,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      556,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  553,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
 
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
 
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
-      558,  558,  558,  558,  558,    0,  556,  556,  556,  556,
-      556
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,    0,  553,  553,  553,  553,  553
     } ;
 
-static yyconst flex_int16_t yy_nxt[1251] =
+static yyconst short int yy_nxt[1245] =
     {   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,   23,   24,    8,   25,   26,
        27,   28,   29,    8,   30,   31,   32,   33,   34,   35,
        36,    8,   37,   43,   41,   44,   44,   44,   44,   45,
-       45,   45,   45,   46,   46,   46,   46,   41,   47,  133,
-       41,   41,  150,   41,   48,   49,   49,   49,   49,   41,
-       48,   49,   49,   49,   49,   41,   41,   69,  136,   41,
-       70,   41,  155,   41,   52,   41,   41,   71,   57,  140,
-       41,   53,   58,   54,   41,   55,   50,   59,   56,   61,
+       45,   45,   45,   46,   46,   46,   46,   41,   47,  149,
+       41,   41,   41,   41,   48,   49,   49,   49,   49,   41,
+       48,   49,   49,   49,   49,   41,   41,   68,  135,   41,
+       69,   41,  153,   41,   52,  154,   41,   70,   57,  139,
+       41,   53,   58,   54,   41,   55,   50,  146,   56,   60,
 
-       60,   62,   41,   80,   41,   41,   41,   65,  156,  163,
-       85,   66,   63,   78,   41,   92,   64,   67,   86,   79,
-       68,   41,   41,   87,   41,   41,   72,   88,   73,   74,
-       93,  103,   41,  128,  131,   41,   75,   89,  161,   41,
-       76,   41,   77,   81,   81,   81,   81,   41,   41,  143,
-       90,  100,   41,  126,   82,  189,   91,  101,  129,   41,
-       41,  171,  102,   83,   84,   41,  127,   41,  134,  134,
-      134,  134,  115,  141,   94,  142,   95,  130,   41,   41,
-       96,   41,   97,   41,   98,  116,   99,  104,  117,   41,
-      147,   41,  240,   41,   41,  118,  151,  144,  160,  105,
+       59,   61,   41,   79,   41,   41,   41,   64,  132,   42,
+       84,   65,   62,   77,   41,   91,   63,   66,   85,   78,
+       67,   41,   41,   86,   41,   41,   71,   87,   72,   73,
+       92,  102,   41,  127,  130,   41,   74,   88,  159,   41,
+       75,   41,   76,   80,   80,   80,   80,   41,   41,  142,
+       89,   99,   41,  125,   81,  187,   90,  100,  128,   41,
+       41,  169,  101,   82,   83,   41,  126,   41,  133,  133,
+      133,  133,  114,  140,   93,  141,   94,  129,   41,   41,
+       95,   41,   96,   41,   97,  115,   98,  103,  116,   41,
+      150,   41,  248,   41,  151,  117,  152,  143,   41,  104,
 
-      106,  145,  107,  108,  109,  146,  110,   44,   44,   44,
-       44,  168,  111,   41,  112,  113,   41,  114,  104,   41,
-      152,   41,   41,  135,   45,   45,   45,   45,   41,  162,
-      119,  120,  166,  121,  153,  122,  154,  123,   41,  124,
-       41,  167,   41,  125,   48,   46,   46,   46,   46,   41,
-      137,  137,  137,  137,   41,  164,   42,  138,   41,   41,
-      173,  172,  165,  138,   48,   49,   49,   49,   49,   41,
-      139,  139,  139,  139,   41,   41,  139,  139,   41,  139,
-      139,  139,  139,  139,  139,  157,  148,   41,  158,   41,
-       41,   41,   40,   41,   41,   41,  169,  159,  149,  174,
+      105,  144,  106,  107,  108,  145,  109,   44,   44,   44,
+       44,   41,  110,  158,  111,  112,  161,  113,  103,  160,
+       41,   41,   41,  134,   45,   45,   45,   45,   41,   41,
+      118,  119,  234,  120,  165,  121,  164,  122,   41,  123,
+       41,   41,   41,  124,   48,   46,   46,   46,   46,   41,
+      136,  136,  136,  136,   41,  162,  166,  137,  173,  171,
+       41,   41,  163,  137,   48,   49,   49,   49,   49,   41,
+      138,  138,  138,  138,   41,   41,  138,  138,   41,  138,
+      138,  138,  138,  138,  138,  155,  147,   41,  156,   41,
+       41,   41,   40,   41,   41,   41,  167,  157,  148,  172,
 
-      180,   40,   40,   41,   41,  175,   41,  184,   41,  176,
-      170,  183,   41,   41,   41,  177,  178,   41,  179,  185,
-      181,  186,   41,  187,   41,   41,  182,  188,   41,   41,
-       41,  190,   41,  192,  194,  195,  196,   41,  199,   41,
-       41,  201,  197,   41,   41,  191,   41,  193,   41,  206,
-      198,  203,  202,   41,  210,  200,   41,  214,  208,  204,
-       41,   41,  212,  207,   41,   41,  216,  209,   41,  211,
-       41,  205,   41,   41,  215,   41,  213,  217,  218,   41,
-      222,  220,   41,  223,  225,   41,  219,   41,  228,   41,
-      230,  231,  221,  224,  235,  227,   41,   41,  226,   41,
+      178,   40,   40,   41,   41,   41,   41,  182,   41,  174,
+      168,  181,  170,  184,   41,  175,  176,   41,  177,  183,
+      179,   41,   41,  185,   41,  194,  180,   41,   41,  186,
+      188,  190,  193,  192,   41,   41,   41,   41,   41,   41,
+       41,  195,   41,   41,  189,  191,  201,  196,   41,  204,
+      208,  200,   41,   41,  202,   41,  197,  210,  206,  198,
+       41,  212,   41,  205,  199,  209,  203,  207,  214,   41,
+       41,  211,   41,  213,   41,   41,  225,   41,   41,  220,
+       41,   41,  215,  216,   41,  218,  223,  221,   41,  226,
+      233,  217,  228,  229,   41,  222,  219,   41,   41,   41,
 
-      232,  236,  229,  233,  239,   41,   41,   41,  234,  237,
-      241,  238,  134,  134,  134,  134,  245,  245,  245,  245,
-       41,   41,   41,  246,  251,   41,  242,   41,  253,  246,
-      252,  250,  243,  137,  137,  137,  137,   41,  254,  432,
-      138,   41,   41,   41,  259,   41,  138,  247,  248,  255,
-      249,  249,  249,  249,   41,   41,  256,   41,  257,   41,
-      262,   41,   41,  258,  261,   41,  260,   41,   41,   41,
-       41,  267,   41,   41,  263,   41,  265,  264,  269,   41,
-      266,  268,   41,   41,  275,   41,   41,   41,   41,   41,
-      270,  282,  271,   41,  273,  272,  279,  281,  274,   41,
+      224,  252,  230,  227,  237,  231,  238,  235,   41,  236,
+      232,  133,  133,  133,  133,   41,   41,   41,  239,  240,
+      243,  243,  243,  243,   41,  241,  250,  244,   41,   41,
+      254,  259,   41,  244,  136,  136,  136,  136,   41,  253,
+       41,  137,  249,  261,   41,   41,   41,  137,  245,  246,
+      251,  247,  247,  247,  247,   41,   41,   41,   41,  260,
+       41,   41,  256,  258,  255,   41,  257,  264,   41,  262,
+       41,   41,   41,  263,   41,   41,   41,  266,  265,   41,
+      272,   41,   41,   41,   41,   41,   41,   41,  279,  267,
+      278,  270,  268,  280,  269,  276,   41,  274,  282,  271,
 
-       41,  277,   41,  280,  278,  284,   41,  283,  285,  276,
-       41,  286,   41,   41,   41,  287,   41,   41,  289,  290,
-       41,   41,  293,   41,   41,   41,  291,   41,   41,  288,
-       41,   41,  295,   41,   41,   41,  292,  294,  297,   41,
-      304,  298,  299,  307,  296,  306,  308,  300,  301,  301,
-      301,  301,  302,  303,  301,  301,  305,  301,  301,  301,
-      301,  301,  301,   41,   41,   41,   41,   41,   41,   41,
-       41,   41,   41,   41,   41,   41,  328,   41,  313,  309,
-      317,  312,  315,  322,  320,  310,  321,  314,  311,   41,
-      316,   41,  319,   41,  318,   41,  324,   41,   41,   41,
+      275,   41,  277,  273,   41,  283,  281,   41,   41,   41,
+      284,   41,   41,   41,   41,   41,  287,   41,   41,  290,
+       41,   41,  286,  288,  285,   41,   41,   41,  292,   41,
+      294,  289,   41,  291,   41,  296,  309,  295,  293,  303,
+       41,  301,   41,  297,  298,  298,  298,  298,  300,  302,
+      298,  298,  299,  298,  298,  298,  298,  298,  298,   41,
+      305,   41,   41,  308,   41,   41,   41,   41,  304,   41,
+       41,   41,   41,   41,   41,  310,  314,  306,  312,   41,
+      317,  318,   41,  307,  311,   41,  313,  319,  316,  320,
+      321,  315,   41,   41,   41,   41,  324,  326,  323,  325,
 
-      326,  325,   41,   41,   41,  323,  245,  245,  245,  245,
-      333,  327,   41,  246,   41,  343,  329,  336,  364,  246,
-      247,  247,  330,  331,  331,  331,  331,  331,  331,  331,
-      331,  249,  249,  249,  249,   41,  249,  249,  249,  249,
-       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
-       41,  337,   41,  341,   41,   41,   41,   41,  332,  334,
-      335,  347,  340,   41,  351,   41,  342,  346,  338,  339,
-      345,   41,  350,   41,   41,   41,  348,  344,  349,   41,
-       41,   41,   41,   41,  358,   41,   41,   41,  352,   41,
-      359,  360,   41,   41,  353,  357,  354,   41,  355,  356,
+      322,  243,  243,  243,  243,   41,  245,  245,  244,  328,
+      328,  328,  328,  390,  244,   41,   41,  327,  328,  328,
+      328,  328,  247,  247,  247,  247,   41,  247,  247,  247,
+      247,   41,  329,   41,   41,   41,   41,   41,   41,  335,
+      330,  333,   41,   41,  334,   41,   41,   41,  338,   41,
+       41,  331,  332,   41,   41,  344,   41,  337,   41,  340,
+       41,  336,  339,  346,   41,  342,   41,   41,  343,  347,
+       41,  348,   41,   41,  341,  345,   41,   41,  355,  349,
+       41,   41,   41,   41,   41,  356,  357,  354,   41,  350,
+       41,  353,  351,   41,  352,   41,   41,  361,   41,  362,
 
-       41,  365,   41,   41,  361,  363,  362,  366,  367,   41,
-      368,   41,  369,   41,   41,   41,   41,   41,  374,   41,
-      385,  372,  373,  375,  370,  371,  376,   41,   41,  377,
-       41,  381,   41,   41,   41,  379,  378,   41,   41,  380,
-      382,   41,  383,   41,  384,   41,  331,  331,  331,  331,
-       41,   41,   41,  389,  386,  392,   41,   41,  391,  387,
-      393,   41,  396,  395,  388,  390,   41,   41,  397,   41,
-       41,  398,   41,  394,   41,   41,  401,   41,  400,   41,
-       41,   41,   41,   41,  404,   41,   41,  407,  399,  408,
-      412,  402,   41,  403,  405,   41,  406,   41,  409,  410,
+      360,  358,  359,   41,   41,  364,  363,   41,   41,   41,
+      366,  365,   41,   41,  371,   41,  370,   41,  372,  374,
+      367,  368,  369,   41,  373,   41,  375,  378,   41,   41,
+      376,   41,   41,   41,  377,  379,   41,  382,   41,  380,
+       41,  381,   41,  328,  328,  328,  328,   41,   41,   41,
+      383,   41,  386,  388,  389,  392,  393,  384,   41,   41,
+       41,  385,   41,   41,  387,  394,  398,  395,   41,  391,
+       41,   41,  397,   41,   41,   41,   41,   41,   41,   41,
+      396,   41,  401,  404,  405,   41,   41,  399,  402,  400,
+       41,  403,  406,   41,  407,  408,   41,   41,  413,  409,
 
-      411,   41,   41,   41,   41,   41,   41,  413,   41,   41,
-       41,   41,  414,  415,  419,  421,  422,  423,   41,  417,
-      424,  420,  418,  426,  416,   41,   41,  425,   41,   41,
-       41,   41,   41,   41,   41,   41,   41,   41,  430,  440,
-       41,  434,  436,  427,  429,  437,   41,  438,   41,  428,
-      431,   41,  435,  433,   41,   41,   41,   41,   41,  439,
-       41,   41,   41,  441,  443,  442,  448,  446,   41,   41,
-       41,   41,  445,  452,  453,   41,   41,  444,  455,  450,
-      449,   41,   41,   41,  447,  454,  451,  459,   41,   41,
-      457,  456,  458,  460,   41,  461,   41,  462,   41,   41,
+      410,   41,   41,  411,   41,   41,   41,   41,   41,  412,
+      416,  419,   41,  414,  418,  420,  415,  421,   41,  417,
+      423,  422,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,  427,   41,  424,  431,  426,  429,
+      433,  435,   41,  434,  428,  425,   41,   41,  432,  430,
+       41,  437,   41,   41,  438,  436,   41,   41,   41,   41,
+      444,   41,   41,  440,  439,  443,  445,   41,   41,   41,
+      442,  449,  450,   41,   41,  441,  452,  447,  446,  448,
+       41,   41,  454,  455,  453,  451,  456,   41,   41,   41,
+       41,   41,   41,   41,  458,   41,   41,   41,   41,   41,
 
-       41,   41,   41,   41,   41,  465,  463,   41,  466,   41,
-      470,  464,  467,   41,  468,   41,  471,   41,   41,   41,
-       41,  472,   41,  469,   41,   41,   41,  474,  479,  480,
-      473,   41,   41,  478,  475,   41,  476,   41,   41,  481,
-      482,  483,   41,  477,  485,  484,   41,  489,   41,   41,
-       41,  490,   41,  486,   41,  487,  493,  491,   41,   41,
-       41,   41,  488,  495,   41,  492,   41,   41,   41,  499,
-       41,   41,   41,  494,   41,   41,  500,  503,  496,  505,
-      504,  497,  498,  501,   41,   41,   41,  502,   41,   41,
-      509,  506,  507,   41,  511,  508,   41,  514,  512,   41,
+      462,   41,  463,  457,   41,  464,  460,  461,   41,  459,
+      465,  468,  467,   41,  469,   41,   41,   41,  466,  471,
+       41,   41,  470,   41,   41,   41,  476,   41,   41,  472,
+      477,  475,   41,   41,  473,   41,  482,  478,  479,  480,
+       41,  474,   41,   41,  486,  487,  481,   41,   41,   41,
+      483,  488,   41,   41,  490,  484,   41,   41,  485,   41,
+      492,   41,  496,   41,   41,   41,  489,   41,   41,   41,
+       41,  491,  503,  500,  497,   41,  493,   41,  498,  494,
+      495,  501,   41,  504,  502,   41,  499,   41,   41,  505,
+      506,   41,  508,  509,   41,   41,   41,   41,   41,  514,
 
-       41,  517,  510,   41,  515,  513,   41,   41,   41,   41,
-      518,   41,   41,  521,   41,   41,  516,  523,   41,   41,
-       41,   41,  520,   41,  522,  524,   41,   41,  528,  519,
-      525,   41,  529,   41,  526,  531,  532,   41,   41,   41,
-       41,  527,  533,  530,   41,   41,  534,  535,   41,   41,
-      537,   41,  541,   41,  540,   41,  536,  538,   41,   41,
-       41,  542,  539,   41,   41,   41,  543,  548,   41,   41,
-      549,  545,  544,   41,   41,  553,   41,   41,  546,  547,
-       41,   41,  552,  554,   41,   41,   41,  551,  550,   41,
-      555,   38,   38,   38,   38,   40,   40,   51,   41,   51,
+      507,  512,   41,  510,  515,   41,   41,   41,   41,   41,
+      518,  513,   41,  520,  511,   41,   41,  517,   41,   41,
+      521,  516,  519,   41,   41,  522,   41,  525,  526,   41,
+       41,  523,  528,  532,   41,   41,   41,   41,  524,  527,
+       41,  529,   41,   41,  530,  531,   41,  538,  534,   41,
+       41,   41,   41,  535,   41,  536,   41,  533,  537,  539,
+       41,  545,   41,  541,   41,   41,  540,  546,  542,   41,
+       41,   41,  550,  544,  543,   41,   41,   41,  551,  549,
+       41,   41,   41,   41,   41,  547,   41,  548,   41,   41,
+       41,  552,   38,   38,   38,   38,   40,   40,   51,   41,
 
-       51,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       51,   51,   41,   41,   41,   41,   41,   41,   41,   41,
        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
@@ -759,182 +715,172 @@
        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
-       41,   41,   41,   41,   41,   41,  244,   41,   41,   41,
+      242,   41,   41,   41,   41,   41,  131,   41,   39,  553,
 
-       41,   41,  132,   41,   39,  556,    3,  556,  556,  556,
-      556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
-      556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
-      556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
-      556,  556,  556,  556,  556,  556,  556,  556,  556,  556
+        3,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553
     } ;
 
-static yyconst flex_int16_t yy_chk[1251] =
+static yyconst short int yy_chk[1245] =
     {   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,   59,    9,    9,    9,    9,   10,
-       10,   10,   10,   11,   11,   11,   11,   11,   12,  561,
-       20,   64,   59,   12,   13,   13,   13,   13,   13,   13,
+        1,    1,    1,    9,   60,    9,    9,    9,    9,   10,
+       10,   10,   10,   11,   11,   11,   11,   11,   12,   60,
+       20,   63,   64,   12,   13,   13,   13,   13,   13,   13,
        14,   14,   14,   14,   14,   14,   16,   20,   47,   17,
-       20,   52,   64,   47,   16,   65,   71,   20,   17,   52,
-       23,   16,   17,   16,   18,   16,   13,   17,   16,   18,
+       20,   52,   63,   47,   16,   64,   57,   20,   17,   52,
+       23,   16,   17,   16,   18,   16,   13,   57,   16,   18,
 
-       17,   18,   19,   23,   22,   25,   27,   19,   65,   71,
-       25,   19,   18,   22,   68,   27,   18,   19,   25,   22,
+       17,   18,   19,   23,   22,   25,   27,   19,  558,  556,
+       25,   19,   18,   22,   67,   27,   18,   19,   25,   22,
        19,   21,   30,   25,   35,   37,   21,   25,   21,   21,
-       27,   30,   26,   35,   37,   94,   21,   26,   68,   29,
+       27,   30,   26,   35,   37,   93,   21,   26,   67,   29,
        21,   54,   21,   24,   24,   24,   24,   24,   34,   54,
-       26,   29,   77,   34,   24,   94,   26,   29,   36,   36,
-       53,   77,   29,   24,   24,   28,   34,   32,   43,   43,
-       43,   43,   32,   53,   28,   53,   28,   36,   55,   57,
-       28,   61,   28,   67,   28,   32,   28,   31,   32,   56,
-       57,   31,  129,   75,  129,   32,   61,   55,   67,   31,
+       26,   29,   76,   34,   24,   93,   26,   29,   36,   36,
+       53,   76,   29,   24,   24,   28,   34,   32,   43,   43,
+       43,   43,   32,   53,   28,   53,   28,   36,   55,   62,
+       28,  140,   28,   61,   28,   32,   28,   31,   32,   56,
+       61,   31,  140,   70,   62,   32,   62,   55,   66,   31,
 
        31,   56,   31,   31,   31,   56,   31,   44,   44,   44,
-       44,   75,   31,   62,   31,   31,   73,   31,   33,   63,
-       62,   69,   33,   45,   45,   45,   45,   45,   74,   69,
-       33,   33,   73,   33,   63,   33,   63,   33,   78,   33,
-       72,   74,   79,   33,   46,   46,   46,   46,   46,   46,
-       48,   48,   48,   48,   48,   72,  559,   48,  555,  553,
-       79,   78,   72,   48,   49,   49,   49,   49,   49,   49,
-       50,   50,   50,   50,   50,   58,   50,   50,   66,   50,
-       50,   50,   50,   50,   50,   66,   58,   76,   66,   82,
-       83,   80,   81,   84,   85,   88,   76,   66,   58,   80,
+       44,   68,   31,   66,   31,   31,   70,   31,   33,   68,
+       72,   73,   33,   45,   45,   45,   45,   45,  125,  552,
+       33,   33,  125,   33,   73,   33,   72,   33,   74,   33,
+       71,   78,   81,   33,   46,   46,   46,   46,   46,   46,
+       48,   48,   48,   48,   48,   71,   74,   48,   81,   78,
+      550,  549,   71,   48,   49,   49,   49,   49,   49,   49,
+       50,   50,   50,   50,   50,   58,   50,   50,   65,   50,
+       50,   50,   50,   50,   50,   65,   58,   75,   65,   77,
+       82,   79,   80,   83,   84,   87,   75,   65,   58,   79,
 
-       85,   81,   81,   86,   89,   82,   87,   88,   91,   83,
-       76,   87,   93,   90,  104,   84,   84,  102,   84,   89,
-       86,   90,   95,   91,   96,   97,   86,   93,   99,  100,
-       98,   95,  103,   96,   97,   98,   99,  101,  102,  105,
-      107,  104,  100,  108,  106,   95,  109,   96,  111,  107,
-      101,  106,  105,  110,  109,  103,  112,  111,  108,  106,
-      113,  118,  110,  107,  114,  115,  113,  108,  117,  109,
-      119,  106,  122,  120,  112,  121,  110,  114,  115,  123,
-      118,  117,  124,  119,  121,  125,  115,  552,  123,  130,
-      124,  124,  117,  120,  125,  122,  127,  126,  121,  128,
+       84,   80,   80,   85,   88,   89,   86,   87,   90,   82,
+       75,   86,   77,   89,   92,   83,   83,   98,   83,   88,
+       85,   94,   95,   90,   96,   98,   85,   97,   99,   92,
+       94,   95,   97,   96,  100,  101,  102,  103,  104,  105,
+      106,   99,  108,  107,   94,   95,  105,  100,  109,  106,
+      108,  104,  110,  121,  105,  111,  101,  109,  107,  102,
+      117,  110,  112,  106,  103,  108,  105,  107,  112,  113,
+      114,  109,  116,  111,  118,  119,  121,  120,  548,  117,
+      122,  124,  113,  114,  123,  116,  120,  118,  146,  122,
+      124,  114,  123,  123,  126,  119,  116,  129,  130,  127,
 
-      124,  126,  123,  124,  128,  131,  142,  145,  124,  127,
-      130,  127,  134,  134,  134,  134,  135,  135,  135,  135,
-      141,  144,  154,  135,  142,  147,  131,  379,  145,  135,
-      144,  141,  131,  137,  137,  137,  137,  137,  147,  379,
-      137,  150,  149,  151,  154,  157,  137,  138,  138,  149,
-      138,  138,  138,  138,  138,  153,  150,  155,  151,  156,
-      157,  158,  159,  153,  156,  161,  155,  160,  162,  163,
-      164,  161,  165,  167,  158,  166,  160,  159,  163,  168,
-      160,  162,  169,  170,  168,  173,  175,  171,  172,  551,
-      163,  173,  164,  176,  166,  165,  171,  172,  167,  174,
+      120,  146,  123,  122,  127,  123,  128,  126,  128,  126,
+      123,  133,  133,  133,  133,  149,  155,  143,  129,  130,
+      134,  134,  134,  134,  141,  130,  143,  134,  157,  144,
+      149,  155,  148,  134,  136,  136,  136,  136,  136,  148,
+      152,  136,  141,  157,  546,  544,  156,  136,  137,  137,
+      144,  137,  137,  137,  137,  137,  151,  153,  154,  156,
+      158,  159,  152,  154,  151,  160,  153,  159,  161,  158,
+      162,  163,  164,  158,  165,  166,  167,  161,  160,  168,
+      166,  170,  171,  174,  543,  172,  169,  173,  171,  161,
+      170,  164,  162,  172,  163,  169,  175,  168,  174,  165,
 
-      179,  170,  177,  171,  170,  175,  178,  174,  176,  169,
-      180,  177,  181,  182,  183,  178,  184,  185,  179,  180,
-      186,  195,  183,  188,  199,  198,  181,  202,  211,  178,
-      203,  204,  185,  205,  210,  209,  182,  184,  188,  549,
-      204,  195,  198,  210,  186,  209,  211,  199,  201,  201,
-      201,  201,  202,  203,  201,  201,  205,  201,  201,  201,
-      201,  201,  201,  214,  215,  217,  218,  219,  220,  223,
-      234,  222,  240,  221,  227,  230,  240,  233,  219,  214,
-      222,  218,  221,  234,  230,  215,  233,  220,  217,  235,
-      221,  236,  227,  237,  223,  238,  236,  239,  242,  243,
+      168,  176,  169,  167,  177,  175,  173,  178,  180,  179,
+      176,  181,  182,  183,  184,  186,  178,  193,  196,  181,
+      197,  216,  177,  179,  176,  201,  203,  200,  183,  207,
+      186,  180,  202,  182,  541,  196,  216,  193,  184,  207,
+      215,  202,  209,  197,  199,  199,  199,  199,  201,  203,
+      199,  199,  200,  199,  199,  199,  199,  199,  199,  208,
+      209,  212,  213,  215,  217,  218,  221,  220,  208,  219,
+      225,  228,  231,  233,  232,  217,  220,  212,  219,  240,
+      228,  231,  237,  213,  218,  234,  219,  232,  225,  233,
+      234,  221,  235,  236,  241,  238,  237,  240,  236,  238,
 
-      238,  237,  264,  251,  289,  235,  245,  245,  245,  245,
-      251,  239,  255,  245,  547,  264,  242,  255,  289,  245,
-      246,  246,  243,  246,  246,  246,  246,  247,  247,  247,
-      247,  248,  248,  248,  248,  248,  249,  249,  249,  249,
-      249,  250,  252,  254,  258,  259,  260,  261,  262,  263,
-      265,  258,  267,  262,  266,  269,  268,  272,  250,  252,
-      254,  268,  261,  271,  272,  275,  263,  267,  259,  260,
-      266,  276,  271,  270,  277,  278,  269,  265,  270,  282,
-      281,  283,  285,  286,  282,  287,  290,  288,  275,  291,
-      283,  285,  295,  292,  276,  281,  277,  296,  277,  278,
+      235,  243,  243,  243,  243,  331,  244,  244,  243,  244,
+      244,  244,  244,  331,  243,  248,  256,  241,  245,  245,
+      245,  245,  246,  246,  246,  246,  246,  247,  247,  247,
+      247,  247,  248,  249,  250,  252,  253,  255,  257,  256,
+      249,  253,  258,  259,  255,  260,  261,  262,  259,  263,
+      265,  250,  252,  264,  266,  265,  272,  258,  267,  261,
+      268,  257,  260,  267,  269,  263,  273,  275,  264,  268,
+      274,  269,  278,  279,  262,  266,  280,  282,  279,  272,
+      283,  284,  285,  286,  287,  280,  282,  278,  288,  273,
+      289,  275,  274,  292,  274,  293,  295,  286,  296,  287,
 
-      298,  290,  299,  300,  286,  288,  287,  291,  292,  303,
-      295,  304,  296,  306,  546,  321,  314,  307,  304,  308,
-      321,  300,  303,  306,  298,  299,  307,  310,  311,  308,
-      313,  314,  319,  316,  320,  311,  310,  322,  324,  313,
-      316,  326,  319,  328,  320,  329,  331,  331,  331,  331,
-      333,  336,  334,  328,  322,  333,  337,  338,  329,  324,
-      334,  339,  338,  337,  326,  328,  340,  341,  339,  342,
-      343,  340,  344,  336,  345,  346,  343,  347,  342,  348,
-      349,  357,  351,  356,  346,  354,  355,  349,  341,  351,
-      357,  344,  358,  345,  347,  359,  348,  360,  354,  355,
+      285,  283,  284,  300,  297,  289,  288,  301,  303,  305,
+      293,  292,  311,  528,  301,  304,  300,  307,  303,  305,
+      295,  296,  297,  308,  304,  310,  307,  311,  313,  316,
+      308,  317,  318,  319,  310,  313,  321,  318,  323,  316,
+      326,  317,  325,  328,  328,  328,  328,  333,  334,  330,
+      319,  335,  325,  326,  330,  334,  335,  321,  336,  338,
+      340,  323,  337,  339,  325,  336,  340,  337,  341,  333,
+      342,  344,  339,  343,  345,  358,  346,  348,  353,  351,
+      338,  352,  343,  346,  348,  355,  356,  341,  344,  342,
+      354,  345,  351,  357,  352,  353,  359,  360,  358,  354,
 
-      356,  361,  362,  363,  366,  364,  367,  358,  369,  368,
-      372,  370,  359,  360,  364,  367,  368,  369,  371,  362,
-      370,  366,  363,  372,  361,  373,  374,  371,  376,  375,
-      380,  377,  381,  383,  389,  385,  387,  386,  376,  389,
-      390,  381,  385,  373,  375,  386,  388,  387,  391,  374,
-      377,  393,  383,  380,  394,  396,  398,  399,  401,  388,
-      397,  402,  407,  390,  393,  391,  399,  397,  403,  406,
-      418,  411,  396,  406,  406,  412,  425,  394,  411,  402,
-      401,  415,  417,  416,  398,  407,  403,  417,  420,  426,
-      415,  412,  416,  418,  427,  420,  429,  425,  430,  439,
+      355,  361,  363,  356,  365,  364,  366,  369,  367,  357,
+      361,  365,  368,  359,  364,  366,  360,  367,  370,  363,
+      369,  368,  371,  372,  373,  374,  377,  376,  378,  380,
+      384,  387,  395,  382,  373,  383,  370,  378,  372,  376,
+      382,  384,  385,  383,  374,  371,  386,  388,  380,  377,
+      390,  386,  391,  393,  387,  385,  398,  396,  394,  399,
+      395,  400,  404,  390,  388,  394,  396,  403,  409,  408,
+      393,  403,  403,  412,  413,  391,  408,  399,  398,  400,
+      415,  414,  412,  413,  409,  404,  414,  417,  422,  423,
+      424,  426,  427,  433,  417,  436,  437,  440,  439,  442,
 
-      436,  440,  441,  442,  443,  429,  426,  445,  430,  447,
-      441,  427,  436,  450,  439,  451,  442,  452,  453,  454,
-      456,  443,  457,  440,  460,  458,  459,  447,  454,  456,
-      445,  462,  463,  453,  450,  461,  451,  465,  466,  457,
-      458,  459,  469,  452,  461,  460,  467,  466,  468,  470,
-      471,  467,  472,  462,  474,  463,  470,  468,  475,  476,
-      477,  479,  465,  472,  481,  469,  480,  486,  482,  477,
-      488,  496,  504,  471,  501,  544,  479,  482,  474,  488,
-      486,  475,  476,  480,  489,  493,  490,  481,  492,  494,
-      493,  489,  490,  499,  496,  492,  500,  501,  499,  502,
+      426,  444,  427,  415,  438,  433,  423,  424,  447,  422,
+      436,  439,  438,  448,  440,  449,  450,  451,  437,  444,
+      454,  453,  442,  455,  456,  457,  451,  458,  459,  447,
+      453,  450,  460,  462,  448,  463,  458,  454,  455,  456,
+      464,  449,  465,  466,  463,  464,  457,  467,  468,  469,
+      459,  465,  471,  474,  467,  460,  472,  473,  462,  476,
+      469,  477,  474,  478,  479,  486,  466,  526,  483,  493,
+      501,  468,  486,  479,  476,  485,  471,  487,  477,  472,
+      473,  483,  489,  487,  485,  490,  478,  491,  496,  489,
+      490,  498,  493,  496,  497,  500,  499,  502,  503,  501,
 
-      503,  504,  494,  505,  502,  500,  506,  507,  508,  509,
-      505,  512,  510,  508,  513,  514,  503,  510,  515,  516,
-      518,  521,  507,  517,  509,  512,  520,  522,  516,  506,
-      513,  523,  517,  526,  514,  520,  521,  527,  525,  532,
-      528,  515,  522,  518,  530,  533,  523,  525,  534,  535,
-      527,  536,  533,  537,  532,  538,  526,  528,  539,  542,
-      540,  534,  530,  541,  543,  545,  535,  540,  548,  554,
-      541,  537,  536,  531,  550,  548,  529,  524,  538,  539,
-      519,  511,  545,  550,  498,  497,  495,  543,  542,  491,
-      554,  557,  557,  557,  557,  558,  558,  560,  487,  560,
+      491,  499,  504,  497,  502,  505,  509,  506,  507,  510,
+      505,  500,  511,  507,  498,  512,  515,  504,  513,  514,
+      509,  503,  506,  517,  522,  510,  518,  513,  514,  519,
+      520,  511,  517,  522,  523,  524,  525,  527,  512,  515,
+      530,  518,  533,  529,  519,  520,  531,  530,  524,  532,
+      534,  535,  536,  525,  537,  527,  539,  523,  529,  531,
+      538,  537,  542,  533,  540,  545,  532,  538,  534,  547,
+      551,  521,  545,  536,  535,  516,  508,  495,  547,  542,
+      494,  492,  488,  484,  482,  539,  481,  540,  480,  475,
+      470,  551,  554,  554,  554,  554,  555,  555,  557,  461,
 
-      560,  485,  484,  483,  478,  473,  464,  455,  449,  448,
-      446,  444,  438,  437,  435,  434,  433,  432,  431,  428,
-      424,  423,  422,  421,  419,  414,  413,  410,  409,  408,
-      405,  404,  400,  395,  392,  384,  382,  378,  365,  353,
-      352,  350,  335,  332,  330,  327,  325,  323,  318,  317,
-      315,  312,  309,  305,  302,  297,  294,  293,  284,  280,
-      279,  274,  273,  257,  256,  253,  241,  232,  231,  229,
-      228,  226,  225,  224,  216,  213,  212,  208,  207,  206,
-      200,  197,  196,  194,  193,  192,  191,  190,  189,  187,
-      152,  148,  146,  143,  140,  136,  132,  116,   92,   70,
+      557,  557,  452,  446,  445,  443,  441,  435,  434,  432,
+      431,  430,  429,  428,  425,  421,  420,  419,  418,  416,
+      411,  410,  407,  406,  405,  402,  401,  397,  392,  389,
+      381,  379,  375,  362,  350,  349,  347,  332,  329,  327,
+      324,  322,  320,  315,  314,  312,  309,  306,  302,  299,
+      294,  291,  290,  281,  277,  276,  271,  270,  254,  251,
+      239,  230,  229,  227,  226,  224,  223,  222,  214,  211,
+      210,  206,  205,  204,  198,  195,  194,  192,  191,  190,
+      189,  188,  187,  185,  150,  147,  145,  142,  139,  135,
+      131,  115,   91,   69,   59,   40,   38,    8,    7,    3,
 
-       60,   40,   38,    8,    7,    3,  556,  556,  556,  556,
-      556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
-      556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
-      556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
-      556,  556,  556,  556,  556,  556,  556,  556,  556,  556
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553
     } ;
 
-/* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[137] =
-    {   0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,     };
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-extern int llvmAsm_flex_debug;
-int llvmAsm_flex_debug = 0;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
+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 *llvmAsmtext;
-#line 1 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+char *yytext;
+#line 1 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#define INITIAL 0
 /*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===//
 //
 //                     The LLVM Compiler Infrastructure
@@ -947,7 +893,8 @@
 //  This file implements the flex scanner for LLVM assembly languages files.
 //
 //===----------------------------------------------------------------------===*/
-#line 28 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#define YY_NEVER_INTERACTIVE 1
+#line 28 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 #include "ParserInternals.h"
 #include "llvm/Module.h"
 #include <list>
@@ -956,10 +903,10 @@
 #include <cstdlib>
 
 void set_scan_file(FILE * F){
-  llvmAsm_switch_to_buffer(llvmAsm_create_buffer(F,YY_BUF_SIZE ) );
+  yy_switch_to_buffer(yy_create_buffer( F, YY_BUF_SIZE ) );
 }
 void set_scan_string (const char * str) {
-  llvmAsm_scan_string (str);
+  yy_scan_string (str);
 }
 
 // Construct a token value for a non-obsolete token
@@ -1080,23 +1027,7 @@
 /* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing
  * it to deal with 64 bit numbers.
  */
-#line 1084 "Lexer.cpp"
-
-#define INITIAL 0
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#include <unistd.h>
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-static int yy_init_globals (void );
+#line 1031 "Lexer.cpp"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1104,30 +1035,65 @@
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int llvmAsmwrap (void );
+extern "C" int yywrap YY_PROTO(( void ));
 #else
-extern int llvmAsmwrap (void );
+extern int yywrap YY_PROTO(( void ));
 #endif
 #endif
 
-    static inline void yyunput (int c,char *buf_ptr  );
-    
+#ifndef YY_NO_UNPUT
+static inline void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int );
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * );
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
 #endif
 
 #ifndef YY_NO_INPUT
-
 #ifdef __cplusplus
-static int yyinput (void );
+static int yyinput YY_PROTO(( void ));
 #else
-static int input (void );
+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. */
@@ -1136,11 +1102,12 @@
 #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( llvmAsmtext, llvmAsmleng, 1, llvmAsmout )
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -1148,35 +1115,21 @@
  */
 #ifndef YY_INPUT
 #define YY_INPUT(buf,result,max_size) \
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+	if ( yy_current_buffer->yy_is_interactive ) \
 		{ \
-		int c = '*'; \
-		size_t n; \
+		int c = '*', n; \
 		for ( n = 0; n < max_size && \
-			     (c = getc( llvmAsmin )) != EOF && c != '\n'; ++n ) \
+			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \
 		if ( c == '\n' ) \
 			buf[n++] = (char) c; \
-		if ( c == EOF && ferror( llvmAsmin ) ) \
+		if ( c == EOF && ferror( yyin ) ) \
 			YY_FATAL_ERROR( "input in flex scanner failed" ); \
 		result = n; \
 		} \
-	else \
-		{ \
-		errno=0; \
-		while ( (result = fread(buf, 1, max_size, llvmAsmin))==0 && ferror(llvmAsmin)) \
-			{ \
-			if( errno != EINTR) \
-				{ \
-				YY_FATAL_ERROR( "input in flex scanner failed" ); \
-				break; \
-				} \
-			errno=0; \
-			clearerr(llvmAsmin); \
-			} \
-		}\
-\
-
+	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();" -
@@ -1197,20 +1150,14 @@
 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
 #endif
 
-/* end tables serialization structures and prototypes */
-
 /* Default declaration of generated scanner - a define so the user can
  * easily add parameters.
  */
 #ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
+#define YY_DECL int yylex YY_PROTO(( void ))
+#endif
 
-extern int llvmAsmlex (void);
-
-#define YY_DECL int llvmAsmlex (void)
-#endif /* !YY_DECL */
-
-/* Code executed at the beginning of each rule, after llvmAsmtext and llvmAsmleng
+/* Code executed at the beginning of each rule, after yytext and yyleng
  * have been set up.
  */
 #ifndef YY_USER_ACTION
@@ -1225,375 +1172,370 @@
 #define YY_RULE_SETUP \
 	YY_USER_ACTION
 
-/** The main scanner function which does all the work.
- */
 YY_DECL
-{
+	{
 	register yy_state_type yy_current_state;
-	register char *yy_cp, *yy_bp;
+	register char *yy_cp = NULL, *yy_bp = NULL;
 	register int yy_act;
-    
-#line 188 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+
+#line 188 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 
 
-#line 1240 "Lexer.cpp"
+#line 1185 "Lexer.cpp"
 
-	if ( !(yy_init) )
+	if ( yy_init )
 		{
-		(yy_init) = 1;
+		yy_init = 0;
 
 #ifdef YY_USER_INIT
 		YY_USER_INIT;
 #endif
 
-		if ( ! (yy_start) )
-			(yy_start) = 1;	/* first start state */
+		if ( ! yy_start )
+			yy_start = 1;	/* first start state */
 
-		if ( ! llvmAsmin )
-			llvmAsmin = stdin;
+		if ( ! yyin )
+			yyin = stdin;
 
-		if ( ! llvmAsmout )
-			llvmAsmout = stdout;
+		if ( ! yyout )
+			yyout = stdout;
 
-		if ( ! YY_CURRENT_BUFFER ) {
-			llvmAsmensure_buffer_stack ();
-			YY_CURRENT_BUFFER_LVALUE =
-				llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE );
-		}
+		if ( ! yy_current_buffer )
+			yy_current_buffer =
+				yy_create_buffer( yyin, YY_BUF_SIZE );
 
-		llvmAsm_load_buffer_state( );
+		yy_load_buffer_state();
 		}
 
 	while ( 1 )		/* loops until end-of-file is reached */
 		{
-		yy_cp = (yy_c_buf_p);
+		yy_cp = yy_c_buf_p;
 
-		/* Support of llvmAsmtext. */
-		*yy_cp = (yy_hold_char);
+		/* 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_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)];
-			if ( yy_accept[yy_current_state] )
-				{
-				(yy_last_accepting_state) = yy_current_state;
-				(yy_last_accepting_cpos) = 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 >= 557 )
+				if ( yy_current_state >= 554 )
 					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 != 556 );
-		yy_cp = (yy_last_accepting_cpos);
-		yy_current_state = (yy_last_accepting_state);
+		while ( yy_current_state != 553 );
 
 yy_find_action:
-		yy_act = yy_accept[yy_current_state];
+		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 && yy_rule_can_match_eol[yy_act] )
+		if ( yy_act != YY_END_OF_BUFFER )
 			{
 			int yyl;
-			for ( yyl = 0; yyl < llvmAsmleng; ++yyl )
-				if ( llvmAsmtext[yyl] == '\n' )
-					   
-    llvmAsmlineno++;
-;
+			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 0: /* must back up */
-			/* undo the effects of YY_DO_BEFORE_ACTION */
-			*yy_cp = (yy_hold_char);
-			yy_cp = (yy_last_accepting_cpos);
-			yy_current_state = (yy_last_accepting_state);
-			goto yy_find_action;
-
 case 1:
 YY_RULE_SETUP
-#line 190 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 190 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { /* Ignore comments for now */ }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 192 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 192 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return BEGINTOK; }
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 193 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 193 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return ENDTOK; }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 194 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 194 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return TRUETOK;  }
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 195 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 195 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return FALSETOK; }
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 196 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 196 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return DECLARE; }
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 197 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 197 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return DEFINE; }
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 198 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 198 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return GLOBAL; }
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 199 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 199 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return CONSTANT; }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 200 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 200 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return INTERNAL; }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 201 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 201 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return LINKONCE; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 202 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 202 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return WEAK; }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 203 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 203 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return APPENDING; }
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 204 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 204 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return DLLIMPORT; }
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 205 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 205 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return DLLEXPORT; }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 206 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 206 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return HIDDEN; }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 207 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 207 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return EXTERN_WEAK; }
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 208 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 208 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return EXTERNAL; }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 209 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 209 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return IMPLEMENTATION; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 210 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 210 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return ZEROINITIALIZER; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 211 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 211 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return DOTDOTDOT; }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 212 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 212 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return UNDEF; }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 213 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 213 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return NULL_TOK; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 214 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 214 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return TO; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 215 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 215 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return TAIL; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 216 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 216 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return TARGET; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 217 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 217 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return TRIPLE; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 218 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 218 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return DEPLIBS; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 219 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 219 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return ENDIAN; }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 220 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 220 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return POINTERSIZE; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 221 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 221 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return DATALAYOUT; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 222 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 222 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return LITTLE; }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 223 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 223 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return BIG; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 224 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 224 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return VOLATILE; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 225 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 225 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return ALIGN;  }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 226 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 226 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return SECTION; }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 227 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 227 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return MODULE; }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 228 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 228 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return ASM_TOK; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 229 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 229 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return SIDEEFFECT; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 231 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 231 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return CC_TOK; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 232 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 232 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return CCC_TOK; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 233 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 233 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return CSRETCC_TOK; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 234 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 234 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return FASTCC_TOK; }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 235 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 235 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return COLDCC_TOK; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 236 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 236 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return X86_STDCALLCC_TOK; }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 237 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 237 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { return X86_FASTCALLCC_TOK; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 239 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 239 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { RET_TY(Type::VoidTy,  VOID);  }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 240 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::Int1Ty,  BOOL);  }
+#line 240 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::FloatTy, FLOAT); }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 241 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::FloatTy, FLOAT); }
+#line 241 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::DoubleTy,DOUBLE);}
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 242 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::DoubleTy,DOUBLE);}
+#line 242 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::LabelTy, LABEL); }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 243 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::LabelTy, LABEL); }
+#line 243 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return TYPE;   }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 244 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return TYPE;   }
+#line 244 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return OPAQUE; }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 245 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return OPAQUE; }
-	YY_BREAK
-case 54:
-YY_RULE_SETUP
-#line 246 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ uint64_t NumBits = atoull(llvmAsmtext+1);
+#line 245 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ uint64_t NumBits = atoull(yytext+1);
                   if (NumBits < IntegerType::MIN_INT_BITS || 
                       NumBits > IntegerType::MAX_INT_BITS)
                     GenerateError("Bitwidth for integer type out of range!");
@@ -1601,400 +1543,398 @@
                   RET_TY(Ty, INTTYPE);
                 }
 	YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 253 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Add, ADD); }
+	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 254 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Add, ADD); }
+#line 254 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Sub, SUB); }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 255 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Sub, SUB); }
+#line 255 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Mul, MUL); }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 256 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Mul, MUL); }
+#line 256 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, UDiv, UDIV); }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 257 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, UDiv, UDIV); }
+#line 257 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, SDiv, SDIV); }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 258 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, SDiv, SDIV); }
+#line 258 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, FDiv, FDIV); }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 259 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, FDiv, FDIV); }
+#line 259 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, URem, UREM); }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 260 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, URem, UREM); }
+#line 260 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, SRem, SREM); }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 261 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, SRem, SREM); }
+#line 261 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, FRem, FREM); }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 262 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, FRem, FREM); }
+#line 262 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, And, AND); }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 263 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, And, AND); }
+#line 263 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Or , OR ); }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 264 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Or , OR ); }
+#line 264 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Xor, XOR); }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 265 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Xor, XOR); }
+#line 265 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal,  ICmp,  ICMP); }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 266 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal,  ICmp,  ICMP); }
+#line 266 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal,  FCmp,  FCMP); }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 267 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal,  FCmp,  FCMP); }
+#line 267 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return EQ;  }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 268 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return EQ;  }
+#line 268 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return NE;  }
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 269 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return NE;  }
+#line 269 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return SLT; }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 270 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return SLT; }
+#line 270 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return SGT; }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 271 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return SGT; }
+#line 271 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return SLE; }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 272 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return SLE; }
+#line 272 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return SGE; }
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 273 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return SGE; }
+#line 273 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return ULT; }
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 274 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return ULT; }
+#line 274 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return UGT; }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 275 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return UGT; }
+#line 275 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return ULE; }
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 276 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return ULE; }
+#line 276 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return UGE; }
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 277 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return UGE; }
+#line 277 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return OEQ; }
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 278 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return OEQ; }
+#line 278 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return ONE; }
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 279 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return ONE; }
+#line 279 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return OLT; }
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 280 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return OLT; }
+#line 280 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return OGT; }
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 281 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return OGT; }
+#line 281 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return OLE; }
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 282 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return OLE; }
+#line 282 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return OGE; }
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 283 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return OGE; }
+#line 283 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return ORD; }
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 284 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return ORD; }
+#line 284 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return UNO; }
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 285 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return UNO; }
+#line 285 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return UEQ; }
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 286 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return UEQ; }
+#line 286 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return UNE; }
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 287 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return UNE; }
+#line 288 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, PHI, PHI_TOK); }
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 289 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, PHI, PHI_TOK); }
+#line 289 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Call, CALL); }
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 290 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Call, CALL); }
+#line 290 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, Trunc, TRUNC); }
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 291 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, Trunc, TRUNC); }
+#line 291 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, ZExt, ZEXT); }
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 292 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, ZExt, ZEXT); }
+#line 292 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, SExt, SEXT); }
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 293 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, SExt, SEXT); }
+#line 293 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPTrunc, FPTRUNC); }
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 294 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPTrunc, FPTRUNC); }
+#line 294 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPExt, FPEXT); }
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 295 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPExt, FPEXT); }
+#line 295 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, UIToFP, UITOFP); }
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 296 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, UIToFP, UITOFP); }
+#line 296 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, SIToFP, SITOFP); }
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 297 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, SIToFP, SITOFP); }
+#line 297 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPToUI, FPTOUI); }
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 298 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPToUI, FPTOUI); }
+#line 298 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPToSI, FPTOSI); }
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 299 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPToSI, FPTOSI); }
+#line 299 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, IntToPtr, INTTOPTR); }
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 300 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, IntToPtr, INTTOPTR); }
+#line 300 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, PtrToInt, PTRTOINT); }
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 301 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, PtrToInt, PTRTOINT); }
+#line 301 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, BitCast, BITCAST); }
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 302 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, BitCast, BITCAST); }
+#line 302 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Select, SELECT); }
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 303 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Select, SELECT); }
+#line 303 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Shl, SHL); }
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 304 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Shl, SHL); }
+#line 304 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, LShr, LSHR); }
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 305 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, LShr, LSHR); }
+#line 305 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, AShr, ASHR); }
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 306 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, AShr, ASHR); }
+#line 306 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, VAArg , VAARG); }
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 307 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, VAArg , VAARG); }
+#line 307 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Ret, RET); }
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 308 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Ret, RET); }
+#line 308 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Br, BR); }
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 309 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Br, BR); }
+#line 309 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Switch, SWITCH); }
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 310 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Switch, SWITCH); }
+#line 310 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Invoke, INVOKE); }
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 311 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Invoke, INVOKE); }
+#line 311 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Unwind, UNWIND); }
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 312 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Unwind, UNWIND); }
+#line 312 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Unreachable, UNREACHABLE); }
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 313 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Unreachable, UNREACHABLE); }
+#line 314 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Malloc, MALLOC); }
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 315 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Malloc, MALLOC); }
+#line 315 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Alloca, ALLOCA); }
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 316 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Alloca, ALLOCA); }
+#line 316 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Free, FREE); }
 	YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 317 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Free, FREE); }
+#line 317 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Load, LOAD); }
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 318 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Load, LOAD); }
+#line 318 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Store, STORE); }
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 319 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Store, STORE); }
+#line 319 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); }
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 320 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); }
+#line 321 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); }
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 322 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); }
+#line 322 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); }
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 323 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); }
+#line 323 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); }
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 324 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); }
+#line 326 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{
+                  UnEscapeLexed(yytext+1);
+                  llvmAsmlval.StrVal = strdup(yytext+1);             // Skip %
+                  return VAR_ID;
+                }
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 327 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 331 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
-                  UnEscapeLexed(llvmAsmtext+1);
-                  llvmAsmlval.StrVal = strdup(llvmAsmtext+1);             // Skip %
-                  return VAR_ID;
+                  yytext[strlen(yytext)-1] = 0;  // nuke colon
+                  UnEscapeLexed(yytext);
+                  llvmAsmlval.StrVal = strdup(yytext);
+                  return LABELSTR;
                 }
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 332 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 337 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
-                  llvmAsmtext[strlen(llvmAsmtext)-1] = 0;  // nuke colon
-                  UnEscapeLexed(llvmAsmtext);
-                  llvmAsmlval.StrVal = strdup(llvmAsmtext);
+                  yytext[strlen(yytext)-2] = 0;  // nuke colon, end quote
+                  UnEscapeLexed(yytext+1);
+                  llvmAsmlval.StrVal = strdup(yytext+1);
                   return LABELSTR;
                 }
 	YY_BREAK
 case 125:
-/* rule 125 can match eol */
 YY_RULE_SETUP
-#line 338 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{
-                  llvmAsmtext[strlen(llvmAsmtext)-2] = 0;  // nuke colon, end quote
-                  UnEscapeLexed(llvmAsmtext+1);
-                  llvmAsmlval.StrVal = strdup(llvmAsmtext+1);
-                  return LABELSTR;
-                }
-	YY_BREAK
-case 126:
-/* rule 126 can match eol */
-YY_RULE_SETUP
-#line 345 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 344 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { // Note that we cannot unescape a string constant here!  The
                    // string constant might contain a \00 which would not be
                    // understood by the string stuff.  It is valid to make a
                    // [sbyte] c"Hello World\00" constant, for example.
                    //
-                   llvmAsmtext[strlen(llvmAsmtext)-1] = 0;           // nuke end quote
-                   llvmAsmlval.StrVal = strdup(llvmAsmtext+1);  // Nuke start quote
+                   yytext[strlen(yytext)-1] = 0;           // nuke end quote
+                   llvmAsmlval.StrVal = strdup(yytext+1);  // Nuke start quote
                    return STRINGCONSTANT;
                  }
 	YY_BREAK
+case 126:
+YY_RULE_SETUP
+#line 355 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ llvmAsmlval.UInt64Val = atoull(yytext); return EUINT64VAL; }
+	YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 356 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ llvmAsmlval.UInt64Val = atoull(llvmAsmtext); return EUINT64VAL; }
-	YY_BREAK
-case 128:
-YY_RULE_SETUP
-#line 357 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 356 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
-                  uint64_t Val = atoull(llvmAsmtext+1);
+                  uint64_t Val = atoull(yytext+1);
                   // +1:  we have bigger negative range
                   if (Val > (uint64_t)INT64_MAX+1)
                     GenerateError("Constant too large for signed 64 bits!");
@@ -2002,30 +1942,30 @@
                   return ESINT64VAL;
                 }
 	YY_BREAK
-case 129:
+case 128:
 YY_RULE_SETUP
-#line 365 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 364 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
-                   llvmAsmlval.UInt64Val = HexIntToVal(llvmAsmtext+3);
-                   return llvmAsmtext[0] == 's' ? ESINT64VAL : EUINT64VAL;
+                   llvmAsmlval.UInt64Val = HexIntToVal(yytext+3);
+                   return yytext[0] == 's' ? ESINT64VAL : EUINT64VAL;
                  }
 	YY_BREAK
-case 130:
+case 129:
 YY_RULE_SETUP
-#line 370 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 369 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
-                  uint64_t Val = atoull(llvmAsmtext+1);
+                  uint64_t Val = atoull(yytext+1);
                   if ((unsigned)Val != Val)
                     GenerateError("Invalid value number (too large)!");
                   llvmAsmlval.UIntVal = unsigned(Val);
                   return UINTVAL;
                 }
 	YY_BREAK
-case 131:
+case 130:
 YY_RULE_SETUP
-#line 377 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 376 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
-                  uint64_t Val = atoull(llvmAsmtext+2);
+                  uint64_t Val = atoull(yytext+2);
                   // +1:  we have bigger negative range
                   if (Val > (uint64_t)INT32_MAX+1)
                     GenerateError("Constant too large for signed 32 bits!");
@@ -2033,67 +1973,66 @@
                   return SINTVAL;
                 }
 	YY_BREAK
+case 131:
+YY_RULE_SETUP
+#line 385 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ llvmAsmlval.FPVal = atof(yytext); return FPVAL; }
+	YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 386 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ llvmAsmlval.FPVal = atof(llvmAsmtext); return FPVAL; }
-	YY_BREAK
-case 133:
-YY_RULE_SETUP
-#line 387 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ llvmAsmlval.FPVal = HexToFP(llvmAsmtext); return FPVAL; }
+#line 386 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ llvmAsmlval.FPVal = HexToFP(yytext); return FPVAL; }
 	YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 389 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 388 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 {
                   /* Make sure to free the internal buffers for flex when we are
                    * done reading our input!
                    */
-                  llvmAsm_delete_buffer(YY_CURRENT_BUFFER);
+                  yy_delete_buffer(YY_CURRENT_BUFFER);
                   return EOF;
                 }
 	YY_BREAK
-case 134:
-/* rule 134 can match eol */
+case 133:
 YY_RULE_SETUP
-#line 397 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 396 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 { /* Ignore whitespace */ }
 	YY_BREAK
+case 134:
+YY_RULE_SETUP
+#line 397 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+{ return yytext[0]; }
+	YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 398 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-{ return llvmAsmtext[0]; }
-	YY_BREAK
-case 136:
-YY_RULE_SETUP
-#line 400 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+#line 399 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 2073 "Lexer.cpp"
+#line 2012 "Lexer.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;
+		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_cp = yy_hold_char;
 		YY_RESTORE_YY_MORE_OFFSET
 
-		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+		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 llvmAsmin at a new source and called
-			 * llvmAsmlex().  If so, then we have to assure
-			 * consistency between YY_CURRENT_BUFFER and our
+			 * 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_LVALUE->yy_n_chars;
-			YY_CURRENT_BUFFER_LVALUE->yy_input_file = llvmAsmin;
-			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+			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
@@ -2103,13 +2042,13 @@
 		 * end-of-buffer state).  Contrast this with the test
 		 * in input().
 		 */
-		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+		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_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
 
-			yy_current_state = yy_get_previous_state(  );
+			yy_current_state = yy_get_previous_state();
 
 			/* Okay, we're now positioned to make the NUL
 			 * transition.  We couldn't have
@@ -2122,42 +2061,41 @@
 
 			yy_next_state = yy_try_NUL_trans( yy_current_state );
 
-			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+			yy_bp = yytext_ptr + YY_MORE_ADJ;
 
 			if ( yy_next_state )
 				{
 				/* Consume the NUL. */
-				yy_cp = ++(yy_c_buf_p);
+				yy_cp = ++yy_c_buf_p;
 				yy_current_state = yy_next_state;
 				goto yy_match;
 				}
 
 			else
 				{
-				yy_cp = (yy_last_accepting_cpos);
-				yy_current_state = (yy_last_accepting_state);
+				yy_cp = yy_c_buf_p;
 				goto yy_find_action;
 				}
 			}
 
-		else switch ( yy_get_next_buffer(  ) )
+		else switch ( yy_get_next_buffer() )
 			{
 			case EOB_ACT_END_OF_FILE:
 				{
-				(yy_did_buffer_switch_on_eof) = 0;
+				yy_did_buffer_switch_on_eof = 0;
 
-				if ( llvmAsmwrap( ) )
+				if ( yywrap() )
 					{
 					/* Note: because we've taken care in
 					 * yy_get_next_buffer() to have set up
-					 * llvmAsmtext, we can now 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_c_buf_p = yytext_ptr + YY_MORE_ADJ;
 
 					yy_act = YY_STATE_EOF(YY_START);
 					goto do_action;
@@ -2165,30 +2103,30 @@
 
 				else
 					{
-					if ( ! (yy_did_buffer_switch_on_eof) )
+					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_c_buf_p =
+					yytext_ptr + yy_amount_of_matched_text;
 
-				yy_current_state = yy_get_previous_state(  );
+				yy_current_state = yy_get_previous_state();
 
-				yy_cp = (yy_c_buf_p);
-				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				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_LVALUE->yy_ch_buf[(yy_n_chars)];
+				yy_c_buf_p =
+				&yy_current_buffer->yy_ch_buf[yy_n_chars];
 
-				yy_current_state = yy_get_previous_state(  );
+				yy_current_state = yy_get_previous_state();
 
-				yy_cp = (yy_c_buf_p);
-				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
 				goto yy_find_action;
 			}
 		break;
@@ -2199,7 +2137,8 @@
 			"fatal flex scanner internal error--no action found" );
 	} /* end of action switch */
 		} /* end of scanning one token */
-} /* end of llvmAsmlex */
+	} /* end of yylex */
+
 
 /* yy_get_next_buffer - try to read in a new buffer
  *
@@ -2208,20 +2147,21 @@
  *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
  *	EOB_ACT_END_OF_FILE - end of file
  */
-static int yy_get_next_buffer (void)
-{
-    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-	register char *source = (yytext_ptr);
+
+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_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+	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_LVALUE->yy_fill_buffer == 0 )
+	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 )
+		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.
@@ -2241,30 +2181,34 @@
 	/* Try to read more data. */
 
 	/* First move last chars to start of buffer. */
-	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+	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_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+	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_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+		yy_current_buffer->yy_n_chars = yy_n_chars = 0;
 
 	else
 		{
-			int num_to_read =
-			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+		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;
+			YY_BUFFER_STATE b = yy_current_buffer;
 
 			int yy_c_buf_p_offset =
-				(int) ((yy_c_buf_p) - b->yy_ch_buf);
+				(int) (yy_c_buf_p - b->yy_ch_buf);
 
 			if ( b->yy_is_our_buffer )
 				{
@@ -2277,7 +2221,8 @@
 
 				b->yy_ch_buf = (char *)
 					/* Include room in for 2 EOB chars. */
-					llvmAsmrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
+					yy_flex_realloc( (void *) b->yy_ch_buf,
+							 b->yy_buf_size + 2 );
 				}
 			else
 				/* Can't grow it, we don't own it. */
@@ -2287,35 +2232,35 @@
 				YY_FATAL_ERROR(
 				"fatal error - scanner input buffer overflow" );
 
-			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
 
-			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+			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_LVALUE->yy_ch_buf[number_to_move]),
-			(yy_n_chars), num_to_read );
+		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+			yy_n_chars, num_to_read );
 
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		yy_current_buffer->yy_n_chars = yy_n_chars;
 		}
 
-	if ( (yy_n_chars) == 0 )
+	if ( yy_n_chars == 0 )
 		{
 		if ( number_to_move == YY_MORE_ADJ )
 			{
 			ret_val = EOB_ACT_END_OF_FILE;
-			llvmAsmrestart(llvmAsmin  );
+			yyrestart( yyin );
 			}
 
 		else
 			{
 			ret_val = EOB_ACT_LAST_MATCH;
-			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+			yy_current_buffer->yy_buffer_status =
 				YY_BUFFER_EOF_PENDING;
 			}
 		}
@@ -2323,141 +2268,149 @@
 	else
 		ret_val = EOB_ACT_CONTINUE_SCAN;
 
-	(yy_n_chars) += number_to_move;
-	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
-	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+	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_LVALUE->yy_ch_buf[0];
+	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 (void)
-{
+static yy_state_type yy_get_previous_state()
+	{
 	register yy_state_type yy_current_state;
 	register char *yy_cp;
-    
-	yy_current_state = (yy_start);
 
-	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++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);
-		if ( yy_accept[yy_current_state] )
-			{
-			(yy_last_accepting_state) = yy_current_state;
-			(yy_last_accepting_cpos) = 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 >= 557 )
+			if ( yy_current_state >= 554 )
 				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 );
  */
-    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_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 char *yy_cp = (yy_c_buf_p);
 
 	register YY_CHAR yy_c = 1;
-	if ( yy_accept[yy_current_state] )
-		{
-		(yy_last_accepting_state) = yy_current_state;
-		(yy_last_accepting_cpos) = 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 >= 557 )
+		if ( yy_current_state >= 554 )
 			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 == 556);
+	yy_is_jam = (yy_current_state == 553);
+	if ( ! yy_is_jam )
+		*yy_state_ptr++ = yy_current_state;
 
 	return yy_is_jam ? 0 : yy_current_state;
-}
+	}
 
-    static inline void yyunput (int c, register char * yy_bp )
-{
-	register char *yy_cp;
-    
-    yy_cp = (yy_c_buf_p);
 
-	/* undo effects of setting up llvmAsmtext */
-	*yy_cp = (yy_hold_char);
+#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;
 
-	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+	/* 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_LVALUE->yy_ch_buf[
-					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+		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_LVALUE->yy_ch_buf[number_to_move];
+				&yy_current_buffer->yy_ch_buf[number_to_move];
 
-		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+		while ( source > yy_current_buffer->yy_ch_buf )
 			*--dest = *--source;
 
 		yy_cp += (int) (dest - source);
 		yy_bp += (int) (dest - source);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
-			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+		yy_current_buffer->yy_n_chars =
+			yy_n_chars = yy_current_buffer->yy_buf_size;
 
-		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+		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' ){
-        --llvmAsmlineno;
-    }
+	if ( c == '\n' )
+		--yylineno;
 
-	(yytext_ptr) = yy_bp;
-	(yy_hold_char) = *yy_cp;
-	(yy_c_buf_p) = yy_cp;
-}
+	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 (void)
+static int yyinput()
 #else
-    static int input  (void)
+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 = 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_LVALUE->yy_ch_buf[(yy_n_chars)] )
+		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
 			/* This was really a NUL. */
-			*(yy_c_buf_p) = '\0';
+			*yy_c_buf_p = '\0';
 
 		else
 			{ /* need more input */
-			int offset = (yy_c_buf_p) - (yytext_ptr);
-			++(yy_c_buf_p);
+			int offset = yy_c_buf_p - yytext_ptr;
+			++yy_c_buf_p;
 
-			switch ( yy_get_next_buffer(  ) )
+			switch ( yy_get_next_buffer() )
 				{
 				case EOB_ACT_LAST_MATCH:
 					/* This happens because yy_g_n_b()
@@ -2471,16 +2424,16 @@
 					 */
 
 					/* Reset buffer status. */
-					llvmAsmrestart(llvmAsmin );
+					yyrestart( yyin );
 
-					/*FALLTHROUGH*/
+					/* fall through */
 
 				case EOB_ACT_END_OF_FILE:
 					{
-					if ( llvmAsmwrap( ) )
+					if ( yywrap() )
 						return EOF;
 
-					if ( ! (yy_did_buffer_switch_on_eof) )
+					if ( ! yy_did_buffer_switch_on_eof )
 						YY_NEW_FILE;
 #ifdef __cplusplus
 					return yyinput();
@@ -2490,170 +2443,169 @@
 					}
 
 				case EOB_ACT_CONTINUE_SCAN:
-					(yy_c_buf_p) = (yytext_ptr) + offset;
+					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 llvmAsmtext */
-	(yy_hold_char) = *++(yy_c_buf_p);
+	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' )
-		   
-    llvmAsmlineno++;
-;
+		++yylineno;
 
 	return c;
-}
-#endif	/* ifndef YY_NO_INPUT */
+	}
+#endif /* YY_NO_INPUT */
 
-/** Immediately switch to a different input stream.
- * @param input_file A readable stream.
- * 
- * @note This function does not reset the start condition to @c INITIAL .
- */
-    void llvmAsmrestart  (FILE * input_file )
-{
-    
-	if ( ! YY_CURRENT_BUFFER ){
-        llvmAsmensure_buffer_stack ();
-		YY_CURRENT_BUFFER_LVALUE =
-            llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE );
+#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();
 	}
 
-	llvmAsm_init_buffer(YY_CURRENT_BUFFER,input_file );
-	llvmAsm_load_buffer_state( );
-}
 
-/** Switch to a different input buffer.
- * @param new_buffer The new input buffer.
- * 
- */
-    void llvmAsm_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
-{
-    
-	/* TODO. We should be able to replace this entire function body
-	 * with
-	 *		llvmAsmpop_buffer_state();
-	 *		llvmAsmpush_buffer_state(new_buffer);
-     */
-	llvmAsmensure_buffer_stack ();
-	if ( YY_CURRENT_BUFFER == new_buffer )
+#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 )
+	if ( yy_current_buffer )
 		{
 		/* Flush out information for old buffer. */
-		*(yy_c_buf_p) = (yy_hold_char);
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		*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_LVALUE = new_buffer;
-	llvmAsm_load_buffer_state( );
+	yy_current_buffer = new_buffer;
+	yy_load_buffer_state();
 
 	/* We don't actually know whether we did this switch during
-	 * EOF (llvmAsmwrap()) processing, but the only time this flag
-	 * is looked at is after llvmAsmwrap() is called, so it's safe
+	 * 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;
-}
+	yy_did_buffer_switch_on_eof = 1;
+	}
 
-static void llvmAsm_load_buffer_state  (void)
-{
-    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-	llvmAsmin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
-	(yy_hold_char) = *(yy_c_buf_p);
-}
 
-/** Allocate and initialize an input buffer state.
- * @param file A readable stream.
- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- * 
- * @return the allocated buffer state.
- */
-    YY_BUFFER_STATE llvmAsm_create_buffer  (FILE * file, int  size )
-{
+#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) llvmAsmalloc(sizeof( struct yy_buffer_state )  );
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
 	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_create_buffer()" );
+		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 *) llvmAsmalloc(b->yy_buf_size + 2  );
+	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 llvmAsm_create_buffer()" );
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
 	b->yy_is_our_buffer = 1;
 
-	llvmAsm_init_buffer(b,file );
+	yy_init_buffer( b, file );
 
 	return b;
-}
+	}
 
-/** Destroy the buffer.
- * @param b a buffer created with llvmAsm_create_buffer()
- * 
- */
-    void llvmAsm_delete_buffer (YY_BUFFER_STATE  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 ) /* Not sure if we should pop here. */
-		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+	if ( b == yy_current_buffer )
+		yy_current_buffer = (YY_BUFFER_STATE) 0;
 
 	if ( b->yy_is_our_buffer )
-		llvmAsmfree((void *) b->yy_ch_buf  );
+		yy_flex_free( (void *) b->yy_ch_buf );
 
-	llvmAsmfree((void *) b  );
-}
+	yy_flex_free( (void *) b );
+	}
 
-/* Initializes or reinitializes a buffer.
- * This function is sometimes called more than once on the same buffer,
- * such as during a llvmAsmrestart() or at EOF.
- */
-    static void llvmAsm_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
 
-{
-	int oerrno = errno;
-    
-	llvmAsm_flush_buffer(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 b is the current buffer, then llvmAsm_init_buffer was _probably_
-     * called from llvmAsmrestart() or through yy_get_next_buffer.
-     * In that case, we don't want to reset the lineno or column.
-     */
-    if (b != YY_CURRENT_BUFFER){
-        b->yy_bs_lineno = 1;
-        b->yy_bs_column = 0;
-    }
+#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
+	}
 
-        b->yy_is_interactive = 0;
-    
-	errno = oerrno;
-}
 
-/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- * 
- */
-    void llvmAsm_flush_buffer (YY_BUFFER_STATE  b )
-{
-    	if ( ! b )
+#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;
@@ -2670,123 +2622,31 @@
 	b->yy_at_bol = 1;
 	b->yy_buffer_status = YY_BUFFER_NEW;
 
-	if ( b == YY_CURRENT_BUFFER )
-		llvmAsm_load_buffer_state( );
-}
-
-/** Pushes the new state onto the stack. The new state becomes
- *  the current state. This function will allocate the stack
- *  if necessary.
- *  @param new_buffer The new state.
- *  
- */
-void llvmAsmpush_buffer_state (YY_BUFFER_STATE new_buffer )
-{
-    	if (new_buffer == NULL)
-		return;
-
-	llvmAsmensure_buffer_stack();
-
-	/* This block is copied from llvmAsm_switch_to_buffer. */
-	if ( YY_CURRENT_BUFFER )
-		{
-		/* Flush out information for old buffer. */
-		*(yy_c_buf_p) = (yy_hold_char);
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	/* Only push if top exists. Otherwise, replace top. */
-	if (YY_CURRENT_BUFFER)
-		(yy_buffer_stack_top)++;
-	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
-	/* copied from llvmAsm_switch_to_buffer. */
-	llvmAsm_load_buffer_state( );
-	(yy_did_buffer_switch_on_eof) = 1;
-}
-
-/** Removes and deletes the top of the stack, if present.
- *  The next element becomes the new top.
- *  
- */
-void llvmAsmpop_buffer_state (void)
-{
-    	if (!YY_CURRENT_BUFFER)
-		return;
-
-	llvmAsm_delete_buffer(YY_CURRENT_BUFFER );
-	YY_CURRENT_BUFFER_LVALUE = NULL;
-	if ((yy_buffer_stack_top) > 0)
-		--(yy_buffer_stack_top);
-
-	if (YY_CURRENT_BUFFER) {
-		llvmAsm_load_buffer_state( );
-		(yy_did_buffer_switch_on_eof) = 1;
-	}
-}
-
-/* Allocates the stack if it does not exist.
- *  Guarantees space for at least one push.
- */
-static void llvmAsmensure_buffer_stack (void)
-{
-	int num_to_alloc;
-    
-	if (!(yy_buffer_stack)) {
-
-		/* First allocation is just for 2 elements, since we don't know if this
-		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
-		 * immediate realloc on the next call.
-         */
-		num_to_alloc = 1;
-		(yy_buffer_stack) = (struct yy_buffer_state**)llvmAsmalloc
-								(num_to_alloc * sizeof(struct yy_buffer_state*)
-								);
-		
-		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-				
-		(yy_buffer_stack_max) = num_to_alloc;
-		(yy_buffer_stack_top) = 0;
-		return;
+	if ( b == yy_current_buffer )
+		yy_load_buffer_state();
 	}
 
-	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
 
-		/* Increase the buffer to prepare for a possible push. */
-		int grow_size = 8 /* arbitrary grow size */;
-
-		num_to_alloc = (yy_buffer_stack_max) + grow_size;
-		(yy_buffer_stack) = (struct yy_buffer_state**)llvmAsmrealloc
-								((yy_buffer_stack),
-								num_to_alloc * sizeof(struct yy_buffer_state*)
-								);
-
-		/* zero only the new slots.*/
-		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
-		(yy_buffer_stack_max) = num_to_alloc;
-	}
-}
-
-/** Setup the input buffer state to scan directly from a user-specified character buffer.
- * @param base the character buffer
- * @param size the size in bytes of the character buffer
- * 
- * @return the newly allocated buffer state object. 
- */
-YY_BUFFER_STATE llvmAsm_scan_buffer  (char * base, yy_size_t  size )
-{
+#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) llvmAsmalloc(sizeof( struct yy_buffer_state )  );
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
 	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_scan_buffer()" );
+		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;
@@ -2798,53 +2658,58 @@
 	b->yy_fill_buffer = 0;
 	b->yy_buffer_status = YY_BUFFER_NEW;
 
-	llvmAsm_switch_to_buffer(b  );
+	yy_switch_to_buffer( b );
 
 	return b;
-}
+	}
+#endif
 
-/** Setup the input buffer state to scan a string. The next call to llvmAsmlex() will
- * scan from a @e copy of @a str.
- * @param str a NUL-terminated string to scan
- * 
- * @return the newly allocated buffer state object.
- * @note If you want to scan bytes that may contain NUL values, then use
- *       llvmAsm_scan_bytes() instead.
- */
-YY_BUFFER_STATE llvmAsm_scan_string (yyconst char * yystr )
-{
-    
-	return llvmAsm_scan_bytes(yystr,strlen(yystr) );
-}
 
-/** Setup the input buffer state to scan the given bytes. The next call to llvmAsmlex() will
- * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
- * 
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE llvmAsm_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
-{
+#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 = _yybytes_len + 2;
-	buf = (char *) llvmAsmalloc(n  );
+	n = len + 2;
+	buf = (char *) yy_flex_alloc( n );
 	if ( ! buf )
-		YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_scan_bytes()" );
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
 
-	for ( i = 0; i < _yybytes_len; ++i )
-		buf[i] = yybytes[i];
+	for ( i = 0; i < len; ++i )
+		buf[i] = bytes[i];
 
-	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
 
-	b = llvmAsm_scan_buffer(buf,n );
+	b = yy_scan_buffer( buf, n );
 	if ( ! b )
-		YY_FATAL_ERROR( "bad buffer in llvmAsm_scan_bytes()" );
+		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.
@@ -2852,17 +2717,78 @@
 	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
 
-static void yy_fatal_error (yyconst char* msg )
-{
-    	(void) fprintf( stderr, "%s\n", msg );
+#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. */
 
@@ -2870,181 +2796,69 @@
 #define yyless(n) \
 	do \
 		{ \
-		/* Undo effects of setting up llvmAsmtext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-		llvmAsmtext[llvmAsmleng] = (yy_hold_char); \
-		(yy_c_buf_p) = llvmAsmtext + yyless_macro_arg; \
-		(yy_hold_char) = *(yy_c_buf_p); \
-		*(yy_c_buf_p) = '\0'; \
-		llvmAsmleng = yyless_macro_arg; \
+		/* 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 )
 
-/* Accessor  methods (get/set functions) to struct members. */
 
-/** Get the current line number.
- * 
- */
-int llvmAsmget_lineno  (void)
-{
-        
-    return llvmAsmlineno;
-}
-
-/** Get the input stream.
- * 
- */
-FILE *llvmAsmget_in  (void)
-{
-        return llvmAsmin;
-}
-
-/** Get the output stream.
- * 
- */
-FILE *llvmAsmget_out  (void)
-{
-        return llvmAsmout;
-}
-
-/** Get the length of the current token.
- * 
- */
-int llvmAsmget_leng  (void)
-{
-        return llvmAsmleng;
-}
-
-/** Get the current token.
- * 
- */
-
-char *llvmAsmget_text  (void)
-{
-        return llvmAsmtext;
-}
-
-/** Set the current line number.
- * @param line_number
- * 
- */
-void llvmAsmset_lineno (int  line_number )
-{
-    
-    llvmAsmlineno = line_number;
-}
-
-/** Set the input stream. This does not discard the current
- * input buffer.
- * @param in_str A readable stream.
- * 
- * @see llvmAsm_switch_to_buffer
- */
-void llvmAsmset_in (FILE *  in_str )
-{
-        llvmAsmin = in_str ;
-}
-
-void llvmAsmset_out (FILE *  out_str )
-{
-        llvmAsmout = out_str ;
-}
-
-int llvmAsmget_debug  (void)
-{
-        return llvmAsm_flex_debug;
-}
-
-void llvmAsmset_debug (int  bdebug )
-{
-        llvmAsm_flex_debug = bdebug ;
-}
-
-static int yy_init_globals (void)
-{
-        /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from llvmAsmlex_destroy(), so don't allocate here.
-     */
-
-    /* We do not touch llvmAsmlineno unless the option is enabled. */
-    llvmAsmlineno =  1;
-    
-    (yy_buffer_stack) = 0;
-    (yy_buffer_stack_top) = 0;
-    (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = (char *) 0;
-    (yy_init) = 0;
-    (yy_start) = 0;
-
-/* Defined in main.c */
-#ifdef YY_STDINIT
-    llvmAsmin = stdin;
-    llvmAsmout = stdout;
-#else
-    llvmAsmin = (FILE *) 0;
-    llvmAsmout = (FILE *) 0;
-#endif
-
-    /* For future reference: Set errno on error, since we are called by
-     * llvmAsmlex_init()
-     */
-    return 0;
-}
-
-/* llvmAsmlex_destroy is for both reentrant and non-reentrant scanners. */
-int llvmAsmlex_destroy  (void)
-{
-    
-    /* Pop the buffer stack, destroying each element. */
-	while(YY_CURRENT_BUFFER){
-		llvmAsm_delete_buffer(YY_CURRENT_BUFFER  );
-		YY_CURRENT_BUFFER_LVALUE = NULL;
-		llvmAsmpop_buffer_state();
-	}
-
-	/* Destroy the stack itself. */
-	llvmAsmfree((yy_buffer_stack) );
-	(yy_buffer_stack) = NULL;
-
-    /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * llvmAsmlex() is called, initialization will occur. */
-    yy_init_globals( );
-
-    return 0;
-}
-
-/*
- * Internal utility routines.
- */
+/* Internal utility routines. */
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
-{
+#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
-static int yy_flex_strlen (yyconst char * s )
-{
+#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
 
-void *llvmAsmalloc (yy_size_t  size )
-{
-	return (void *) malloc( size );
-}
 
-void *llvmAsmrealloc  (void * ptr, yy_size_t  size )
-{
+#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
@@ -3053,16 +2867,24 @@
 	 * as though doing an assignment.
 	 */
 	return (void *) realloc( (char *) ptr, size );
-}
+	}
 
-void llvmAsmfree (void * ptr )
-{
-	free( (char *) ptr );	/* see llvmAsmrealloc() for (char *) cast */
-}
+#ifdef YY_USE_PROTOS
+static void yy_flex_free( void *ptr )
+#else
+static void yy_flex_free( ptr )
+void *ptr;
+#endif
+	{
+	free( ptr );
+	}
 
-#define YYTABLES_NAME "yytables"
-
-#line 400 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
-
-
+#if YY_MAIN
+int main()
+	{
+	yylex();
+	return 0;
+	}
+#endif
+#line 399 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
 
diff --git a/lib/AsmParser/Lexer.l.cvs b/lib/AsmParser/Lexer.l.cvs
index 22fe64b..970a214 100644
--- a/lib/AsmParser/Lexer.l.cvs
+++ b/lib/AsmParser/Lexer.l.cvs
@@ -237,7 +237,6 @@
 x86_fastcallcc  { return X86_FASTCALLCC_TOK; }
 
 void            { RET_TY(Type::VoidTy,  VOID);  }
-bool            { RET_TY(Type::Int1Ty,  BOOL);  }
 float           { RET_TY(Type::FloatTy, FLOAT); }
 double          { RET_TY(Type::DoubleTy,DOUBLE);}
 label           { RET_TY(Type::LabelTy, LABEL); }
diff --git a/lib/AsmParser/llvmAsmParser.cpp.cvs b/lib/AsmParser/llvmAsmParser.cpp.cvs
index 3905920..66598af 100644
--- a/lib/AsmParser/llvmAsmParser.cpp.cvs
+++ b/lib/AsmParser/llvmAsmParser.cpp.cvs
@@ -1,9 +1,7 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
+/* A Bison parser, made by GNU Bison 2.1.  */
 
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+/* 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
@@ -20,21 +18,13 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.  */
 
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
 
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
-
-/* C LALR(1) parser skeleton written by Richard Stallman, by
-   simplifying the original so-called "semantic" parser.  */
+/* 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
@@ -47,7 +37,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.3"
+#define YYBISON_VERSION "2.1"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -80,131 +70,130 @@
      UINTVAL = 261,
      FPVAL = 262,
      VOID = 263,
-     BOOL = 264,
-     INTTYPE = 265,
-     FLOAT = 266,
-     DOUBLE = 267,
-     LABEL = 268,
-     TYPE = 269,
-     VAR_ID = 270,
-     LABELSTR = 271,
-     STRINGCONSTANT = 272,
-     IMPLEMENTATION = 273,
-     ZEROINITIALIZER = 274,
-     TRUETOK = 275,
-     FALSETOK = 276,
-     BEGINTOK = 277,
-     ENDTOK = 278,
-     DECLARE = 279,
-     DEFINE = 280,
-     GLOBAL = 281,
-     CONSTANT = 282,
-     SECTION = 283,
-     VOLATILE = 284,
-     TO = 285,
-     DOTDOTDOT = 286,
-     NULL_TOK = 287,
-     UNDEF = 288,
-     INTERNAL = 289,
-     LINKONCE = 290,
-     WEAK = 291,
-     APPENDING = 292,
-     DLLIMPORT = 293,
-     DLLEXPORT = 294,
-     EXTERN_WEAK = 295,
-     OPAQUE = 296,
-     EXTERNAL = 297,
-     TARGET = 298,
-     TRIPLE = 299,
-     ENDIAN = 300,
-     POINTERSIZE = 301,
-     LITTLE = 302,
-     BIG = 303,
-     ALIGN = 304,
-     DEPLIBS = 305,
-     CALL = 306,
-     TAIL = 307,
-     ASM_TOK = 308,
-     MODULE = 309,
-     SIDEEFFECT = 310,
-     CC_TOK = 311,
-     CCC_TOK = 312,
-     CSRETCC_TOK = 313,
-     FASTCC_TOK = 314,
-     COLDCC_TOK = 315,
-     X86_STDCALLCC_TOK = 316,
-     X86_FASTCALLCC_TOK = 317,
-     DATALAYOUT = 318,
-     RET = 319,
-     BR = 320,
-     SWITCH = 321,
-     INVOKE = 322,
-     UNWIND = 323,
-     UNREACHABLE = 324,
-     ADD = 325,
-     SUB = 326,
-     MUL = 327,
-     UDIV = 328,
-     SDIV = 329,
-     FDIV = 330,
-     UREM = 331,
-     SREM = 332,
-     FREM = 333,
-     AND = 334,
-     OR = 335,
-     XOR = 336,
-     ICMP = 337,
-     FCMP = 338,
-     EQ = 339,
-     NE = 340,
-     SLT = 341,
-     SGT = 342,
-     SLE = 343,
-     SGE = 344,
-     ULT = 345,
-     UGT = 346,
-     ULE = 347,
-     UGE = 348,
-     OEQ = 349,
-     ONE = 350,
-     OLT = 351,
-     OGT = 352,
-     OLE = 353,
-     OGE = 354,
-     ORD = 355,
-     UNO = 356,
-     UEQ = 357,
-     UNE = 358,
-     MALLOC = 359,
-     ALLOCA = 360,
-     FREE = 361,
-     LOAD = 362,
-     STORE = 363,
-     GETELEMENTPTR = 364,
-     TRUNC = 365,
-     ZEXT = 366,
-     SEXT = 367,
-     FPTRUNC = 368,
-     FPEXT = 369,
-     BITCAST = 370,
-     UITOFP = 371,
-     SITOFP = 372,
-     FPTOUI = 373,
-     FPTOSI = 374,
-     INTTOPTR = 375,
-     PTRTOINT = 376,
-     PHI_TOK = 377,
-     SELECT = 378,
-     SHL = 379,
-     LSHR = 380,
-     ASHR = 381,
-     VAARG = 382,
-     EXTRACTELEMENT = 383,
-     INSERTELEMENT = 384,
-     SHUFFLEVECTOR = 385,
-     NORETURN = 386,
-     DEFAULT = 387,
-     HIDDEN = 388
+     INTTYPE = 264,
+     FLOAT = 265,
+     DOUBLE = 266,
+     LABEL = 267,
+     TYPE = 268,
+     VAR_ID = 269,
+     LABELSTR = 270,
+     STRINGCONSTANT = 271,
+     IMPLEMENTATION = 272,
+     ZEROINITIALIZER = 273,
+     TRUETOK = 274,
+     FALSETOK = 275,
+     BEGINTOK = 276,
+     ENDTOK = 277,
+     DECLARE = 278,
+     DEFINE = 279,
+     GLOBAL = 280,
+     CONSTANT = 281,
+     SECTION = 282,
+     VOLATILE = 283,
+     TO = 284,
+     DOTDOTDOT = 285,
+     NULL_TOK = 286,
+     UNDEF = 287,
+     INTERNAL = 288,
+     LINKONCE = 289,
+     WEAK = 290,
+     APPENDING = 291,
+     DLLIMPORT = 292,
+     DLLEXPORT = 293,
+     EXTERN_WEAK = 294,
+     OPAQUE = 295,
+     EXTERNAL = 296,
+     TARGET = 297,
+     TRIPLE = 298,
+     ENDIAN = 299,
+     POINTERSIZE = 300,
+     LITTLE = 301,
+     BIG = 302,
+     ALIGN = 303,
+     DEPLIBS = 304,
+     CALL = 305,
+     TAIL = 306,
+     ASM_TOK = 307,
+     MODULE = 308,
+     SIDEEFFECT = 309,
+     CC_TOK = 310,
+     CCC_TOK = 311,
+     CSRETCC_TOK = 312,
+     FASTCC_TOK = 313,
+     COLDCC_TOK = 314,
+     X86_STDCALLCC_TOK = 315,
+     X86_FASTCALLCC_TOK = 316,
+     DATALAYOUT = 317,
+     RET = 318,
+     BR = 319,
+     SWITCH = 320,
+     INVOKE = 321,
+     UNWIND = 322,
+     UNREACHABLE = 323,
+     ADD = 324,
+     SUB = 325,
+     MUL = 326,
+     UDIV = 327,
+     SDIV = 328,
+     FDIV = 329,
+     UREM = 330,
+     SREM = 331,
+     FREM = 332,
+     AND = 333,
+     OR = 334,
+     XOR = 335,
+     ICMP = 336,
+     FCMP = 337,
+     EQ = 338,
+     NE = 339,
+     SLT = 340,
+     SGT = 341,
+     SLE = 342,
+     SGE = 343,
+     ULT = 344,
+     UGT = 345,
+     ULE = 346,
+     UGE = 347,
+     OEQ = 348,
+     ONE = 349,
+     OLT = 350,
+     OGT = 351,
+     OLE = 352,
+     OGE = 353,
+     ORD = 354,
+     UNO = 355,
+     UEQ = 356,
+     UNE = 357,
+     MALLOC = 358,
+     ALLOCA = 359,
+     FREE = 360,
+     LOAD = 361,
+     STORE = 362,
+     GETELEMENTPTR = 363,
+     TRUNC = 364,
+     ZEXT = 365,
+     SEXT = 366,
+     FPTRUNC = 367,
+     FPEXT = 368,
+     BITCAST = 369,
+     UITOFP = 370,
+     SITOFP = 371,
+     FPTOUI = 372,
+     FPTOSI = 373,
+     INTTOPTR = 374,
+     PTRTOINT = 375,
+     PHI_TOK = 376,
+     SELECT = 377,
+     SHL = 378,
+     LSHR = 379,
+     ASHR = 380,
+     VAARG = 381,
+     EXTRACTELEMENT = 382,
+     INSERTELEMENT = 383,
+     SHUFFLEVECTOR = 384,
+     NORETURN = 385,
+     DEFAULT = 386,
+     HIDDEN = 387
    };
 #endif
 /* Tokens.  */
@@ -214,137 +203,136 @@
 #define UINTVAL 261
 #define FPVAL 262
 #define VOID 263
-#define BOOL 264
-#define INTTYPE 265
-#define FLOAT 266
-#define DOUBLE 267
-#define LABEL 268
-#define TYPE 269
-#define VAR_ID 270
-#define LABELSTR 271
-#define STRINGCONSTANT 272
-#define IMPLEMENTATION 273
-#define ZEROINITIALIZER 274
-#define TRUETOK 275
-#define FALSETOK 276
-#define BEGINTOK 277
-#define ENDTOK 278
-#define DECLARE 279
-#define DEFINE 280
-#define GLOBAL 281
-#define CONSTANT 282
-#define SECTION 283
-#define VOLATILE 284
-#define TO 285
-#define DOTDOTDOT 286
-#define NULL_TOK 287
-#define UNDEF 288
-#define INTERNAL 289
-#define LINKONCE 290
-#define WEAK 291
-#define APPENDING 292
-#define DLLIMPORT 293
-#define DLLEXPORT 294
-#define EXTERN_WEAK 295
-#define OPAQUE 296
-#define EXTERNAL 297
-#define TARGET 298
-#define TRIPLE 299
-#define ENDIAN 300
-#define POINTERSIZE 301
-#define LITTLE 302
-#define BIG 303
-#define ALIGN 304
-#define DEPLIBS 305
-#define CALL 306
-#define TAIL 307
-#define ASM_TOK 308
-#define MODULE 309
-#define SIDEEFFECT 310
-#define CC_TOK 311
-#define CCC_TOK 312
-#define CSRETCC_TOK 313
-#define FASTCC_TOK 314
-#define COLDCC_TOK 315
-#define X86_STDCALLCC_TOK 316
-#define X86_FASTCALLCC_TOK 317
-#define DATALAYOUT 318
-#define RET 319
-#define BR 320
-#define SWITCH 321
-#define INVOKE 322
-#define UNWIND 323
-#define UNREACHABLE 324
-#define ADD 325
-#define SUB 326
-#define MUL 327
-#define UDIV 328
-#define SDIV 329
-#define FDIV 330
-#define UREM 331
-#define SREM 332
-#define FREM 333
-#define AND 334
-#define OR 335
-#define XOR 336
-#define ICMP 337
-#define FCMP 338
-#define EQ 339
-#define NE 340
-#define SLT 341
-#define SGT 342
-#define SLE 343
-#define SGE 344
-#define ULT 345
-#define UGT 346
-#define ULE 347
-#define UGE 348
-#define OEQ 349
-#define ONE 350
-#define OLT 351
-#define OGT 352
-#define OLE 353
-#define OGE 354
-#define ORD 355
-#define UNO 356
-#define UEQ 357
-#define UNE 358
-#define MALLOC 359
-#define ALLOCA 360
-#define FREE 361
-#define LOAD 362
-#define STORE 363
-#define GETELEMENTPTR 364
-#define TRUNC 365
-#define ZEXT 366
-#define SEXT 367
-#define FPTRUNC 368
-#define FPEXT 369
-#define BITCAST 370
-#define UITOFP 371
-#define SITOFP 372
-#define FPTOUI 373
-#define FPTOSI 374
-#define INTTOPTR 375
-#define PTRTOINT 376
-#define PHI_TOK 377
-#define SELECT 378
-#define SHL 379
-#define LSHR 380
-#define ASHR 381
-#define VAARG 382
-#define EXTRACTELEMENT 383
-#define INSERTELEMENT 384
-#define SHUFFLEVECTOR 385
-#define NORETURN 386
-#define DEFAULT 387
-#define HIDDEN 388
+#define INTTYPE 264
+#define FLOAT 265
+#define DOUBLE 266
+#define LABEL 267
+#define TYPE 268
+#define VAR_ID 269
+#define LABELSTR 270
+#define STRINGCONSTANT 271
+#define IMPLEMENTATION 272
+#define ZEROINITIALIZER 273
+#define TRUETOK 274
+#define FALSETOK 275
+#define BEGINTOK 276
+#define ENDTOK 277
+#define DECLARE 278
+#define DEFINE 279
+#define GLOBAL 280
+#define CONSTANT 281
+#define SECTION 282
+#define VOLATILE 283
+#define TO 284
+#define DOTDOTDOT 285
+#define NULL_TOK 286
+#define UNDEF 287
+#define INTERNAL 288
+#define LINKONCE 289
+#define WEAK 290
+#define APPENDING 291
+#define DLLIMPORT 292
+#define DLLEXPORT 293
+#define EXTERN_WEAK 294
+#define OPAQUE 295
+#define EXTERNAL 296
+#define TARGET 297
+#define TRIPLE 298
+#define ENDIAN 299
+#define POINTERSIZE 300
+#define LITTLE 301
+#define BIG 302
+#define ALIGN 303
+#define DEPLIBS 304
+#define CALL 305
+#define TAIL 306
+#define ASM_TOK 307
+#define MODULE 308
+#define SIDEEFFECT 309
+#define CC_TOK 310
+#define CCC_TOK 311
+#define CSRETCC_TOK 312
+#define FASTCC_TOK 313
+#define COLDCC_TOK 314
+#define X86_STDCALLCC_TOK 315
+#define X86_FASTCALLCC_TOK 316
+#define DATALAYOUT 317
+#define RET 318
+#define BR 319
+#define SWITCH 320
+#define INVOKE 321
+#define UNWIND 322
+#define UNREACHABLE 323
+#define ADD 324
+#define SUB 325
+#define MUL 326
+#define UDIV 327
+#define SDIV 328
+#define FDIV 329
+#define UREM 330
+#define SREM 331
+#define FREM 332
+#define AND 333
+#define OR 334
+#define XOR 335
+#define ICMP 336
+#define FCMP 337
+#define EQ 338
+#define NE 339
+#define SLT 340
+#define SGT 341
+#define SLE 342
+#define SGE 343
+#define ULT 344
+#define UGT 345
+#define ULE 346
+#define UGE 347
+#define OEQ 348
+#define ONE 349
+#define OLT 350
+#define OGT 351
+#define OLE 352
+#define OGE 353
+#define ORD 354
+#define UNO 355
+#define UEQ 356
+#define UNE 357
+#define MALLOC 358
+#define ALLOCA 359
+#define FREE 360
+#define LOAD 361
+#define STORE 362
+#define GETELEMENTPTR 363
+#define TRUNC 364
+#define ZEXT 365
+#define SEXT 366
+#define FPTRUNC 367
+#define FPEXT 368
+#define BITCAST 369
+#define UITOFP 370
+#define SITOFP 371
+#define FPTOUI 372
+#define FPTOSI 373
+#define INTTOPTR 374
+#define PTRTOINT 375
+#define PHI_TOK 376
+#define SELECT 377
+#define SHL 378
+#define LSHR 379
+#define ASHR 380
+#define VAARG 381
+#define EXTRACTELEMENT 382
+#define INSERTELEMENT 383
+#define SHUFFLEVECTOR 384
+#define NORETURN 385
+#define DEFAULT 386
+#define HIDDEN 387
 
 
 
 
 /* Copy the first part of user declarations.  */
-#line 14 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 14 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
 
 #include "ParserInternals.h"
 #include "llvm/CallingConv.h"
@@ -1232,10 +1220,9 @@
 # define YYTOKEN_TABLE 0
 #endif
 
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
-#line 883 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-{
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 883 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+typedef union YYSTYPE {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
   llvm::BasicBlock                       *BasicBlockVal;
@@ -1280,10 +1267,9 @@
   llvm::Module::Endianness          Endianness;
   llvm::ICmpInst::Predicate         IPredicate;
   llvm::FCmpInst::Predicate         FPredicate;
-}
-/* Line 187 of yacc.c.  */
-#line 1286 "llvmAsmParser.tab.c"
-	YYSTYPE;
+} YYSTYPE;
+/* Line 196 of yacc.c.  */
+#line 1273 "llvmAsmParser.tab.c"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
@@ -1294,56 +1280,23 @@
 /* Copy the second part of user declarations.  */
 
 
-/* Line 216 of yacc.c.  */
-#line 1299 "llvmAsmParser.tab.c"
+/* Line 219 of yacc.c.  */
+#line 1285 "llvmAsmParser.tab.c"
 
-#ifdef short
-# undef short
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
 #endif
-
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
 #endif
-
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
-#else
-typedef short int yytype_int8;
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
 #endif
-
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
 #endif
 
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
-#else
-typedef short int yytype_int16;
-#endif
-
-#ifndef YYSIZE_T
-# ifdef __SIZE_TYPE__
-#  define YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-#  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYSIZE_T size_t
-# else
-#  define YYSIZE_T unsigned int
-# endif
-#endif
-
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-
 #ifndef YY_
 # if YYENABLE_NLS
 #  if ENABLE_NLS
@@ -1356,32 +1309,7 @@
 # endif
 #endif
 
-/* Suppress unused-variable warnings by "using" E.  */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
-#else
-# define YYUSE(e) /* empty */
-#endif
-
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int i)
-#else
-static int
-YYID (i)
-    int i;
-#endif
-{
-  return i;
-}
-#endif
-
-#if ! defined yyoverflow || YYERROR_VERBOSE
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
 
 /* The parser invokes alloca or malloc; define the necessary symbols.  */
 
@@ -1389,76 +1317,64 @@
 #  if YYSTACK_USE_ALLOCA
 #   ifdef __GNUC__
 #    define YYSTACK_ALLOC __builtin_alloca
-#   elif defined __BUILTIN_VA_ARG_INCR
-#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-#   elif defined _AIX
-#    define YYSTACK_ALLOC __alloca
-#   elif defined _MSC_VER
-#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-#    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#    if defined (__STDC__) || defined (__cplusplus)
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
-#     endif
+#     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 (YYID (0))
+   /* 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 2006 */
+#   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_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
 #  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
-       && ! ((defined YYMALLOC || defined malloc) \
-	     && (defined YYFREE || defined free)))
-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
-#   endif
+#  ifdef __cplusplus
+extern "C" {
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
-#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   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 _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   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 */
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
 
 
-#if (! defined yyoverflow \
-     && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss;
+  short int yyss;
   YYSTYPE yyvs;
   };
 
@@ -1468,13 +1384,13 @@
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((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__
+#  if defined (__GNUC__) && 1 < __GNUC__
 #   define YYCOPY(To, From, Count) \
       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
 #  else
@@ -1485,7 +1401,7 @@
 	  for (yyi = 0; yyi < (Count); yyi++)	\
 	    (To)[yyi] = (From)[yyi];		\
 	}					\
-      while (YYID (0))
+      while (0)
 #  endif
 # endif
 
@@ -1503,47 +1419,53 @@
 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
 	yyptr += yynewbytes / sizeof (*yyptr);				\
       }									\
-    while (YYID (0))
+    while (0)
 
 #endif
 
-/* YYFINAL -- State number of the termination state.  */
+#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  36
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1365
+#define YYLAST   1357
 
-/* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  148
-/* YYNNTS -- Number of nonterminals.  */
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  147
+/* YYNNTS -- Number of nonterminals. */
 #define YYNNTS  79
-/* YYNRULES -- Number of rules.  */
-#define YYNRULES  286
-/* YYNRULES -- Number of states.  */
-#define YYNSTATES  571
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  285
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  569
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   388
+#define YYMAXUTOK   387
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint8 yytranslate[] =
+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,
-     138,   139,   136,     2,   135,     2,     2,     2,     2,     2,
+     137,   138,   135,     2,   134,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     143,   134,   144,     2,     2,     2,     2,     2,     2,     2,
+     142,   133,   143,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   140,   137,   142,     2,     2,     2,     2,     2,   147,
+       2,   139,   136,   141,     2,     2,     2,     2,     2,   146,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     141,     2,     2,   145,     2,   146,     2,     2,     2,     2,
+     140,     2,     2,   144,     2,   145,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1569,13 +1491,13 @@
       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133
+     125,   126,   127,   128,   129,   130,   131,   132
 };
 
 #if YYDEBUG
 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
    YYRHS.  */
-static const yytype_uint16 yyprhs[] =
+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,
@@ -1588,125 +1510,125 @@
      156,   157,   159,   161,   163,   165,   167,   169,   172,   174,
      176,   177,   180,   182,   184,   185,   188,   189,   192,   193,
      197,   200,   201,   203,   204,   208,   210,   213,   215,   217,
-     219,   221,   223,   225,   227,   230,   232,   235,   241,   247,
-     253,   259,   263,   266,   272,   277,   280,   282,   284,   286,
-     290,   292,   296,   298,   299,   301,   305,   310,   314,   318,
-     323,   328,   332,   339,   345,   348,   351,   354,   357,   360,
-     363,   366,   369,   372,   375,   382,   388,   397,   404,   411,
-     419,   427,   434,   441,   450,   459,   463,   465,   467,   469,
-     471,   472,   474,   477,   478,   482,   483,   487,   491,   493,
-     497,   501,   502,   509,   510,   518,   519,   527,   530,   534,
-     536,   538,   540,   544,   548,   552,   556,   560,   564,   566,
-     567,   569,   571,   573,   574,   580,   584,   586,   590,   592,
-     593,   603,   605,   607,   612,   614,   616,   619,   623,   624,
-     626,   628,   630,   632,   634,   636,   638,   640,   642,   646,
-     648,   654,   656,   658,   660,   662,   665,   668,   671,   675,
-     678,   679,   681,   684,   687,   691,   701,   711,   720,   735,
-     737,   739,   746,   752,   755,   762,   770,   774,   780,   781,
-     782,   786,   789,   791,   797,   803,   810,   817,   822,   827,
-     834,   839,   844,   851,   858,   861,   870,   872,   874,   875,
-     879,   886,   890,   897,   900,   905,   912
+     219,   221,   223,   225,   228,   230,   233,   239,   245,   251,
+     257,   261,   264,   270,   275,   278,   280,   282,   284,   288,
+     290,   294,   296,   297,   299,   303,   308,   312,   316,   321,
+     326,   330,   337,   343,   346,   349,   352,   355,   358,   361,
+     364,   367,   370,   373,   380,   386,   395,   402,   409,   417,
+     425,   432,   439,   448,   457,   461,   463,   465,   467,   469,
+     470,   472,   475,   476,   480,   481,   485,   489,   491,   495,
+     499,   500,   507,   508,   516,   517,   525,   528,   532,   534,
+     536,   538,   542,   546,   550,   554,   558,   562,   564,   565,
+     567,   569,   571,   572,   578,   582,   584,   588,   590,   591,
+     601,   603,   605,   610,   612,   614,   617,   621,   622,   624,
+     626,   628,   630,   632,   634,   636,   638,   640,   644,   646,
+     652,   654,   656,   658,   660,   663,   666,   669,   673,   676,
+     677,   679,   682,   685,   689,   699,   709,   718,   733,   735,
+     737,   744,   750,   753,   760,   768,   772,   778,   779,   780,
+     784,   787,   789,   795,   801,   808,   815,   820,   825,   832,
+     837,   842,   849,   856,   859,   868,   870,   872,   873,   877,
+     884,   888,   895,   898,   903,   910
 };
 
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int16 yyrhs[] =
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short int yyrhs[] =
 {
-     186,     0,    -1,     5,    -1,     6,    -1,    70,    -1,    71,
-      -1,    72,    -1,    73,    -1,    74,    -1,    75,    -1,    76,
-      -1,    77,    -1,    78,    -1,    79,    -1,    80,    -1,    81,
-      -1,   110,    -1,   111,    -1,   112,    -1,   113,    -1,   114,
-      -1,   115,    -1,   116,    -1,   117,    -1,   118,    -1,   119,
-      -1,   120,    -1,   121,    -1,   124,    -1,   125,    -1,   126,
-      -1,    84,    -1,    85,    -1,    86,    -1,    87,    -1,    88,
-      -1,    89,    -1,    90,    -1,    91,    -1,    92,    -1,    93,
-      -1,    94,    -1,    95,    -1,    96,    -1,    97,    -1,    98,
-      -1,    99,    -1,   100,    -1,   101,    -1,   102,    -1,   103,
-      -1,    90,    -1,    91,    -1,    92,    -1,    93,    -1,    20,
-      -1,    21,    -1,    10,    -1,    11,    -1,    12,    -1,   199,
-     134,    -1,    -1,    34,    -1,    36,    -1,    35,    -1,    37,
-      -1,    39,    -1,    38,    -1,    40,    -1,    42,    -1,    -1,
-     133,    -1,    -1,    38,    -1,    40,    -1,    -1,    34,    -1,
-      35,    -1,    36,    -1,    39,    -1,    -1,    57,    -1,    58,
-      -1,    59,    -1,    60,    -1,    61,    -1,    62,    -1,    56,
-       4,    -1,   111,    -1,   112,    -1,    -1,   166,   165,    -1,
-     131,    -1,   165,    -1,    -1,   168,   167,    -1,    -1,    49,
-       4,    -1,    -1,   135,    49,     4,    -1,    28,    17,    -1,
-      -1,   171,    -1,    -1,   135,   174,   173,    -1,   171,    -1,
-      49,     4,    -1,     9,    -1,    10,    -1,    11,    -1,    12,
-      -1,    13,    -1,    41,    -1,   175,    -1,   176,   136,    -1,
-     211,    -1,   137,     4,    -1,   176,   138,   180,   139,   168,
-      -1,     8,   138,   180,   139,   168,    -1,   140,     4,   141,
-     176,   142,    -1,   143,     4,   141,   176,   144,    -1,   145,
-     181,   146,    -1,   145,   146,    -1,   143,   145,   181,   146,
-     144,    -1,   143,   145,   146,   144,    -1,   176,   166,    -1,
-     176,    -1,     8,    -1,   177,    -1,   179,   135,   177,    -1,
-     179,    -1,   179,   135,    31,    -1,    31,    -1,    -1,   176,
-      -1,   181,   135,   176,    -1,   176,   140,   184,   142,    -1,
-     176,   140,   142,    -1,   176,   147,    17,    -1,   176,   143,
-     184,   144,    -1,   176,   145,   184,   146,    -1,   176,   145,
-     146,    -1,   176,   143,   145,   184,   146,   144,    -1,   176,
-     143,   145,   146,   144,    -1,   176,    32,    -1,   176,    33,
-      -1,   176,   211,    -1,   176,   183,    -1,   176,    19,    -1,
-     156,     3,    -1,   156,     4,    -1,     9,    20,    -1,     9,
-      21,    -1,   157,     7,    -1,   152,   138,   182,    30,   176,
-     139,    -1,   109,   138,   182,   222,   139,    -1,   123,   138,
-     182,   135,   182,   135,   182,   139,    -1,   150,   138,   182,
-     135,   182,   139,    -1,   151,   138,   182,   135,   182,   139,
-      -1,    82,   154,   138,   182,   135,   182,   139,    -1,    83,
-     155,   138,   182,   135,   182,   139,    -1,   153,   138,   182,
-     135,   182,   139,    -1,   128,   138,   182,   135,   182,   139,
-      -1,   129,   138,   182,   135,   182,   135,   182,   139,    -1,
-     130,   138,   182,   135,   182,   135,   182,   139,    -1,   184,
-     135,   182,    -1,   182,    -1,    26,    -1,    27,    -1,   187,
-      -1,    -1,   188,    -1,   187,   188,    -1,    -1,    25,   189,
-     207,    -1,    -1,    24,   190,   208,    -1,    54,    53,   194,
-      -1,    18,    -1,   158,    14,   176,    -1,   158,    14,     8,
-      -1,    -1,   158,   161,   185,   182,   191,   173,    -1,    -1,
-     158,   159,   161,   185,   182,   192,   173,    -1,    -1,   158,
-     160,   161,   185,   176,   193,   173,    -1,    43,   196,    -1,
-      50,   134,   197,    -1,    17,    -1,    48,    -1,    47,    -1,
-      45,   134,   195,    -1,    46,   134,     4,    -1,    44,   134,
-      17,    -1,    63,   134,    17,    -1,   140,   198,   142,    -1,
-     198,   135,    17,    -1,    17,    -1,    -1,    15,    -1,    17,
-      -1,   199,    -1,    -1,   201,   135,   176,   166,   200,    -1,
-     176,   166,   200,    -1,   201,    -1,   201,   135,    31,    -1,
-      31,    -1,    -1,   164,   178,   199,   138,   202,   139,   168,
-     172,   169,    -1,    22,    -1,   145,    -1,   163,   161,   203,
-     204,    -1,    23,    -1,   146,    -1,   214,   206,    -1,   162,
-     161,   203,    -1,    -1,    55,    -1,     3,    -1,     4,    -1,
-       7,    -1,    20,    -1,    21,    -1,    32,    -1,    33,    -1,
-      19,    -1,   143,   184,   144,    -1,   183,    -1,    53,   209,
-      17,   135,    17,    -1,   149,    -1,   199,    -1,   211,    -1,
-     210,    -1,   176,   212,    -1,   214,   215,    -1,   205,   215,
-      -1,   216,   158,   217,    -1,   216,   219,    -1,    -1,    16,
-      -1,    64,   213,    -1,    64,     8,    -1,    65,    13,   212,
-      -1,    65,     9,   212,   135,    13,   212,   135,    13,   212,
-      -1,    66,   156,   212,   135,    13,   212,   140,   218,   142,
-      -1,    66,   156,   212,   135,    13,   212,   140,   142,    -1,
-      67,   164,   178,   212,   138,   221,   139,   168,    30,    13,
-     212,    68,    13,   212,    -1,    68,    -1,    69,    -1,   218,
-     156,   210,   135,    13,   212,    -1,   156,   210,   135,    13,
-     212,    -1,   158,   224,    -1,   176,   140,   212,   135,   212,
-     142,    -1,   220,   135,   140,   212,   135,   212,   142,    -1,
-     176,   212,   166,    -1,   221,   135,   176,   212,   166,    -1,
-      -1,    -1,   222,   135,   213,    -1,    52,    51,    -1,    51,
-      -1,   150,   176,   212,   135,   212,    -1,   151,   176,   212,
-     135,   212,    -1,    82,   154,   176,   212,   135,   212,    -1,
-      83,   155,   176,   212,   135,   212,    -1,   153,   213,   135,
-     213,    -1,   152,   213,    30,   176,    -1,   123,   213,   135,
-     213,   135,   213,    -1,   127,   213,   135,   176,    -1,   128,
-     213,   135,   213,    -1,   129,   213,   135,   213,   135,   213,
-      -1,   130,   213,   135,   213,   135,   213,    -1,   122,   220,
-      -1,   223,   164,   178,   212,   138,   221,   139,   168,    -1,
-     226,    -1,    29,    -1,    -1,   104,   176,   170,    -1,   104,
-     176,   135,    10,   212,   170,    -1,   105,   176,   170,    -1,
-     105,   176,   135,    10,   212,   170,    -1,   106,   213,    -1,
-     225,   107,   176,   212,    -1,   225,   108,   213,   135,   176,
-     212,    -1,   109,   176,   212,   222,    -1
+     185,     0,    -1,     5,    -1,     6,    -1,    69,    -1,    70,
+      -1,    71,    -1,    72,    -1,    73,    -1,    74,    -1,    75,
+      -1,    76,    -1,    77,    -1,    78,    -1,    79,    -1,    80,
+      -1,   109,    -1,   110,    -1,   111,    -1,   112,    -1,   113,
+      -1,   114,    -1,   115,    -1,   116,    -1,   117,    -1,   118,
+      -1,   119,    -1,   120,    -1,   123,    -1,   124,    -1,   125,
+      -1,    83,    -1,    84,    -1,    85,    -1,    86,    -1,    87,
+      -1,    88,    -1,    89,    -1,    90,    -1,    91,    -1,    92,
+      -1,    93,    -1,    94,    -1,    95,    -1,    96,    -1,    97,
+      -1,    98,    -1,    99,    -1,   100,    -1,   101,    -1,   102,
+      -1,    89,    -1,    90,    -1,    91,    -1,    92,    -1,    19,
+      -1,    20,    -1,     9,    -1,    10,    -1,    11,    -1,   198,
+     133,    -1,    -1,    33,    -1,    35,    -1,    34,    -1,    36,
+      -1,    38,    -1,    37,    -1,    39,    -1,    41,    -1,    -1,
+     132,    -1,    -1,    37,    -1,    39,    -1,    -1,    33,    -1,
+      34,    -1,    35,    -1,    38,    -1,    -1,    56,    -1,    57,
+      -1,    58,    -1,    59,    -1,    60,    -1,    61,    -1,    55,
+       4,    -1,   110,    -1,   111,    -1,    -1,   165,   164,    -1,
+     130,    -1,   164,    -1,    -1,   167,   166,    -1,    -1,    48,
+       4,    -1,    -1,   134,    48,     4,    -1,    27,    16,    -1,
+      -1,   170,    -1,    -1,   134,   173,   172,    -1,   170,    -1,
+      48,     4,    -1,     9,    -1,    10,    -1,    11,    -1,    12,
+      -1,    40,    -1,   174,    -1,   175,   135,    -1,   210,    -1,
+     136,     4,    -1,   175,   137,   179,   138,   167,    -1,     8,
+     137,   179,   138,   167,    -1,   139,     4,   140,   175,   141,
+      -1,   142,     4,   140,   175,   143,    -1,   144,   180,   145,
+      -1,   144,   145,    -1,   142,   144,   180,   145,   143,    -1,
+     142,   144,   145,   143,    -1,   175,   165,    -1,   175,    -1,
+       8,    -1,   176,    -1,   178,   134,   176,    -1,   178,    -1,
+     178,   134,    30,    -1,    30,    -1,    -1,   175,    -1,   180,
+     134,   175,    -1,   175,   139,   183,   141,    -1,   175,   139,
+     141,    -1,   175,   146,    16,    -1,   175,   142,   183,   143,
+      -1,   175,   144,   183,   145,    -1,   175,   144,   145,    -1,
+     175,   142,   144,   183,   145,   143,    -1,   175,   142,   144,
+     145,   143,    -1,   175,    31,    -1,   175,    32,    -1,   175,
+     210,    -1,   175,   182,    -1,   175,    18,    -1,   155,     3,
+      -1,   155,     4,    -1,     9,    19,    -1,     9,    20,    -1,
+     156,     7,    -1,   151,   137,   181,    29,   175,   138,    -1,
+     108,   137,   181,   221,   138,    -1,   122,   137,   181,   134,
+     181,   134,   181,   138,    -1,   149,   137,   181,   134,   181,
+     138,    -1,   150,   137,   181,   134,   181,   138,    -1,    81,
+     153,   137,   181,   134,   181,   138,    -1,    82,   154,   137,
+     181,   134,   181,   138,    -1,   152,   137,   181,   134,   181,
+     138,    -1,   127,   137,   181,   134,   181,   138,    -1,   128,
+     137,   181,   134,   181,   134,   181,   138,    -1,   129,   137,
+     181,   134,   181,   134,   181,   138,    -1,   183,   134,   181,
+      -1,   181,    -1,    25,    -1,    26,    -1,   186,    -1,    -1,
+     187,    -1,   186,   187,    -1,    -1,    24,   188,   206,    -1,
+      -1,    23,   189,   207,    -1,    53,    52,   193,    -1,    17,
+      -1,   157,    13,   175,    -1,   157,    13,     8,    -1,    -1,
+     157,   160,   184,   181,   190,   172,    -1,    -1,   157,   158,
+     160,   184,   181,   191,   172,    -1,    -1,   157,   159,   160,
+     184,   175,   192,   172,    -1,    42,   195,    -1,    49,   133,
+     196,    -1,    16,    -1,    47,    -1,    46,    -1,    44,   133,
+     194,    -1,    45,   133,     4,    -1,    43,   133,    16,    -1,
+      62,   133,    16,    -1,   139,   197,   141,    -1,   197,   134,
+      16,    -1,    16,    -1,    -1,    14,    -1,    16,    -1,   198,
+      -1,    -1,   200,   134,   175,   165,   199,    -1,   175,   165,
+     199,    -1,   200,    -1,   200,   134,    30,    -1,    30,    -1,
+      -1,   163,   177,   198,   137,   201,   138,   167,   171,   168,
+      -1,    21,    -1,   144,    -1,   162,   160,   202,   203,    -1,
+      22,    -1,   145,    -1,   213,   205,    -1,   161,   160,   202,
+      -1,    -1,    54,    -1,     3,    -1,     4,    -1,     7,    -1,
+      19,    -1,    20,    -1,    31,    -1,    32,    -1,    18,    -1,
+     142,   183,   143,    -1,   182,    -1,    52,   208,    16,   134,
+      16,    -1,   148,    -1,   198,    -1,   210,    -1,   209,    -1,
+     175,   211,    -1,   213,   214,    -1,   204,   214,    -1,   215,
+     157,   216,    -1,   215,   218,    -1,    -1,    15,    -1,    63,
+     212,    -1,    63,     8,    -1,    64,    12,   211,    -1,    64,
+       9,   211,   134,    12,   211,   134,    12,   211,    -1,    65,
+     155,   211,   134,    12,   211,   139,   217,   141,    -1,    65,
+     155,   211,   134,    12,   211,   139,   141,    -1,    66,   163,
+     177,   211,   137,   220,   138,   167,    29,    12,   211,    67,
+      12,   211,    -1,    67,    -1,    68,    -1,   217,   155,   209,
+     134,    12,   211,    -1,   155,   209,   134,    12,   211,    -1,
+     157,   223,    -1,   175,   139,   211,   134,   211,   141,    -1,
+     219,   134,   139,   211,   134,   211,   141,    -1,   175,   211,
+     165,    -1,   220,   134,   175,   211,   165,    -1,    -1,    -1,
+     221,   134,   212,    -1,    51,    50,    -1,    50,    -1,   149,
+     175,   211,   134,   211,    -1,   150,   175,   211,   134,   211,
+      -1,    81,   153,   175,   211,   134,   211,    -1,    82,   154,
+     175,   211,   134,   211,    -1,   152,   212,   134,   212,    -1,
+     151,   212,    29,   175,    -1,   122,   212,   134,   212,   134,
+     212,    -1,   126,   212,   134,   175,    -1,   127,   212,   134,
+     212,    -1,   128,   212,   134,   212,   134,   212,    -1,   129,
+     212,   134,   212,   134,   212,    -1,   121,   219,    -1,   222,
+     163,   177,   211,   137,   220,   138,   167,    -1,   225,    -1,
+      28,    -1,    -1,   103,   175,   169,    -1,   103,   175,   134,
+       9,   211,   169,    -1,   104,   175,   169,    -1,   104,   175,
+     134,     9,   211,   169,    -1,   105,   212,    -1,   224,   106,
+     175,   211,    -1,   224,   107,   212,   134,   175,   211,    -1,
+     108,   175,   211,   221,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+static const unsigned short int yyrline[] =
 {
        0,  1031,  1031,  1032,  1042,  1042,  1042,  1042,  1042,  1042,
     1042,  1042,  1042,  1043,  1043,  1043,  1044,  1044,  1044,  1044,
@@ -1719,51 +1641,51 @@
     1115,  1116,  1117,  1118,  1119,  1120,  1121,  1122,  1129,  1130,
     1133,  1134,  1139,  1140,  1143,  1144,  1151,  1152,  1158,  1159,
     1167,  1175,  1176,  1181,  1182,  1183,  1188,  1201,  1201,  1201,
-    1201,  1201,  1204,  1208,  1212,  1219,  1224,  1232,  1250,  1268,
-    1273,  1285,  1295,  1299,  1309,  1316,  1323,  1330,  1335,  1340,
-    1347,  1348,  1355,  1362,  1370,  1375,  1386,  1414,  1430,  1459,
-    1487,  1512,  1531,  1556,  1575,  1587,  1594,  1657,  1667,  1677,
-    1683,  1689,  1693,  1697,  1705,  1719,  1740,  1748,  1754,  1765,
-    1770,  1775,  1784,  1790,  1796,  1805,  1809,  1817,  1817,  1828,
-    1833,  1841,  1842,  1846,  1846,  1850,  1850,  1853,  1856,  1868,
-    1892,  1903,  1903,  1912,  1912,  1920,  1920,  1930,  1933,  1939,
-    1952,  1953,  1955,  1959,  1968,  1972,  1977,  1979,  1984,  1989,
-    1998,  1998,  1999,  1999,  2001,  2011,  2022,  2026,  2035,  2044,
-    2049,  2155,  2155,  2157,  2166,  2166,  2168,  2173,  2185,  2189,
-    2194,  2198,  2202,  2206,  2210,  2214,  2218,  2222,  2226,  2251,
-    2255,  2269,  2273,  2279,  2279,  2285,  2294,  2298,  2307,  2318,
-    2327,  2339,  2352,  2356,  2360,  2365,  2374,  2393,  2402,  2469,
-    2473,  2480,  2491,  2504,  2513,  2524,  2534,  2542,  2550,  2553,
-    2554,  2561,  2565,  2570,  2591,  2608,  2621,  2634,  2643,  2656,
-    2664,  2671,  2677,  2683,  2689,  2704,  2767,  2772,  2776,  2783,
-    2790,  2798,  2805,  2813,  2821,  2835,  2852
+    1201,  1204,  1208,  1212,  1219,  1224,  1232,  1250,  1268,  1273,
+    1285,  1295,  1299,  1309,  1316,  1323,  1330,  1335,  1340,  1347,
+    1348,  1355,  1362,  1370,  1375,  1386,  1414,  1430,  1459,  1487,
+    1512,  1531,  1556,  1575,  1587,  1594,  1657,  1667,  1677,  1683,
+    1689,  1694,  1699,  1707,  1721,  1742,  1750,  1756,  1767,  1772,
+    1777,  1786,  1792,  1798,  1807,  1811,  1819,  1819,  1830,  1835,
+    1843,  1844,  1848,  1848,  1852,  1852,  1855,  1858,  1870,  1894,
+    1905,  1905,  1914,  1914,  1922,  1922,  1932,  1935,  1941,  1954,
+    1955,  1957,  1961,  1970,  1974,  1979,  1981,  1986,  1991,  2000,
+    2000,  2001,  2001,  2003,  2013,  2024,  2028,  2037,  2046,  2051,
+    2157,  2157,  2159,  2168,  2168,  2170,  2175,  2187,  2191,  2196,
+    2200,  2204,  2208,  2212,  2216,  2220,  2224,  2228,  2253,  2257,
+    2271,  2275,  2281,  2281,  2287,  2296,  2300,  2309,  2320,  2329,
+    2341,  2354,  2358,  2362,  2367,  2377,  2396,  2405,  2472,  2476,
+    2483,  2494,  2507,  2516,  2527,  2537,  2545,  2553,  2556,  2557,
+    2564,  2568,  2573,  2594,  2611,  2624,  2637,  2646,  2659,  2667,
+    2674,  2680,  2686,  2692,  2707,  2770,  2775,  2779,  2786,  2793,
+    2801,  2808,  2816,  2824,  2838,  2855
 };
 #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.  */
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
 static const char *const yytname[] =
 {
   "$end", "error", "$undefined", "ESINT64VAL", "EUINT64VAL", "SINTVAL",
-  "UINTVAL", "FPVAL", "VOID", "BOOL", "INTTYPE", "FLOAT", "DOUBLE",
-  "LABEL", "TYPE", "VAR_ID", "LABELSTR", "STRINGCONSTANT",
-  "IMPLEMENTATION", "ZEROINITIALIZER", "TRUETOK", "FALSETOK", "BEGINTOK",
-  "ENDTOK", "DECLARE", "DEFINE", "GLOBAL", "CONSTANT", "SECTION",
-  "VOLATILE", "TO", "DOTDOTDOT", "NULL_TOK", "UNDEF", "INTERNAL",
-  "LINKONCE", "WEAK", "APPENDING", "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK",
-  "OPAQUE", "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", "ICMP", "FCMP", "EQ", "NE", "SLT", "SGT", "SLE", "SGE", "ULT",
-  "UGT", "ULE", "UGE", "OEQ", "ONE", "OLT", "OGT", "OLE", "OGE", "ORD",
-  "UNO", "UEQ", "UNE", "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",
+  "UINTVAL", "FPVAL", "VOID", "INTTYPE", "FLOAT", "DOUBLE", "LABEL",
+  "TYPE", "VAR_ID", "LABELSTR", "STRINGCONSTANT", "IMPLEMENTATION",
+  "ZEROINITIALIZER", "TRUETOK", "FALSETOK", "BEGINTOK", "ENDTOK",
+  "DECLARE", "DEFINE", "GLOBAL", "CONSTANT", "SECTION", "VOLATILE", "TO",
+  "DOTDOTDOT", "NULL_TOK", "UNDEF", "INTERNAL", "LINKONCE", "WEAK",
+  "APPENDING", "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK", "OPAQUE",
+  "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", "ICMP",
+  "FCMP", "EQ", "NE", "SLT", "SGT", "SLE", "SGE", "ULT", "UGT", "ULE",
+  "UGE", "OEQ", "ONE", "OLT", "OGT", "OLE", "OGE", "ORD", "UNO", "UEQ",
+  "UNE", "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", "NORETURN", "DEFAULT", "HIDDEN", "'='",
   "','", "'*'", "'\\\\'", "'('", "')'", "'['", "'x'", "']'", "'<'", "'>'",
   "'{'", "'}'", "'c'", "$accept", "INTVAL", "ArithmeticOps", "LogicalOps",
@@ -1789,7 +1711,7 @@
 # ifdef YYPRINT
 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
    token YYLEX-NUM.  */
-static const yytype_uint16 yytoknum[] =
+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,
@@ -1804,47 +1726,47 @@
      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
-     385,   386,   387,   388,    61,    44,    42,    92,    40,    41,
-      91,   120,    93,    60,    62,   123,   125,    99
+     385,   386,   387,    61,    44,    42,    92,    40,    41,    91,
+     120,    93,    60,    62,   123,   125,    99
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
+static const unsigned char yyr1[] =
 {
-       0,   148,   149,   149,   150,   150,   150,   150,   150,   150,
-     150,   150,   150,   151,   151,   151,   152,   152,   152,   152,
-     152,   152,   152,   152,   152,   152,   152,   152,   153,   153,
+       0,   147,   148,   148,   149,   149,   149,   149,   149,   149,
+     149,   149,   149,   150,   150,   150,   151,   151,   151,   151,
+     151,   151,   151,   151,   151,   151,   151,   151,   152,   152,
+     152,   153,   153,   153,   153,   153,   153,   153,   153,   153,
      153,   154,   154,   154,   154,   154,   154,   154,   154,   154,
-     154,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   156,   157,   157,
-     158,   158,   159,   159,   159,   159,   159,   160,   160,   160,
-     161,   161,   162,   162,   162,   163,   163,   163,   163,   163,
-     164,   164,   164,   164,   164,   164,   164,   164,   165,   165,
-     166,   166,   167,   167,   168,   168,   169,   169,   170,   170,
-     171,   172,   172,   173,   173,   174,   174,   175,   175,   175,
-     175,   175,   176,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   177,   178,   178,   179,   179,
-     180,   180,   180,   180,   181,   181,   182,   182,   182,   182,
-     182,   182,   182,   182,   182,   182,   182,   182,   182,   182,
-     182,   182,   182,   182,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   183,   184,   184,   185,   185,   186,
-     186,   187,   187,   189,   188,   190,   188,   188,   188,   188,
-     188,   191,   188,   192,   188,   193,   188,   188,   188,   194,
-     195,   195,   196,   196,   196,   196,   197,   198,   198,   198,
-     199,   199,   200,   200,   201,   201,   202,   202,   202,   202,
-     203,   204,   204,   205,   206,   206,   207,   208,   209,   209,
-     210,   210,   210,   210,   210,   210,   210,   210,   210,   210,
-     210,   211,   211,   212,   212,   213,   214,   214,   215,   216,
-     216,   216,   217,   217,   217,   217,   217,   217,   217,   217,
-     217,   218,   218,   219,   220,   220,   221,   221,   221,   222,
-     222,   223,   223,   224,   224,   224,   224,   224,   224,   224,
-     224,   224,   224,   224,   224,   224,   224,   225,   225,   226,
-     226,   226,   226,   226,   226,   226,   226
+     154,   154,   154,   154,   154,   154,   154,   155,   156,   156,
+     157,   157,   158,   158,   158,   158,   158,   159,   159,   159,
+     160,   160,   161,   161,   161,   162,   162,   162,   162,   162,
+     163,   163,   163,   163,   163,   163,   163,   163,   164,   164,
+     165,   165,   166,   166,   167,   167,   168,   168,   169,   169,
+     170,   171,   171,   172,   172,   173,   173,   174,   174,   174,
+     174,   175,   175,   175,   175,   175,   175,   175,   175,   175,
+     175,   175,   175,   175,   176,   177,   177,   178,   178,   179,
+     179,   179,   179,   180,   180,   181,   181,   181,   181,   181,
+     181,   181,   181,   181,   181,   181,   181,   181,   181,   181,
+     181,   181,   181,   182,   182,   182,   182,   182,   182,   182,
+     182,   182,   182,   182,   183,   183,   184,   184,   185,   185,
+     186,   186,   188,   187,   189,   187,   187,   187,   187,   187,
+     190,   187,   191,   187,   192,   187,   187,   187,   193,   194,
+     194,   195,   195,   195,   195,   196,   197,   197,   197,   198,
+     198,   199,   199,   200,   200,   201,   201,   201,   201,   202,
+     203,   203,   204,   205,   205,   206,   207,   208,   208,   209,
+     209,   209,   209,   209,   209,   209,   209,   209,   209,   209,
+     210,   210,   211,   211,   212,   213,   213,   214,   215,   215,
+     215,   216,   216,   216,   216,   216,   216,   216,   216,   216,
+     217,   217,   218,   219,   219,   220,   220,   220,   221,   221,
+     222,   222,   223,   223,   223,   223,   223,   223,   223,   223,
+     223,   223,   223,   223,   223,   223,   224,   224,   225,   225,
+     225,   225,   225,   225,   225,   225
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+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,
@@ -1857,531 +1779,526 @@
        0,     1,     1,     1,     1,     1,     1,     2,     1,     1,
        0,     2,     1,     1,     0,     2,     0,     2,     0,     3,
        2,     0,     1,     0,     3,     1,     2,     1,     1,     1,
-       1,     1,     1,     1,     2,     1,     2,     5,     5,     5,
-       5,     3,     2,     5,     4,     2,     1,     1,     1,     3,
-       1,     3,     1,     0,     1,     3,     4,     3,     3,     4,
-       4,     3,     6,     5,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     6,     5,     8,     6,     6,     7,
-       7,     6,     6,     8,     8,     3,     1,     1,     1,     1,
-       0,     1,     2,     0,     3,     0,     3,     3,     1,     3,
-       3,     0,     6,     0,     7,     0,     7,     2,     3,     1,
-       1,     1,     3,     3,     3,     3,     3,     3,     1,     0,
-       1,     1,     1,     0,     5,     3,     1,     3,     1,     0,
-       9,     1,     1,     4,     1,     1,     2,     3,     0,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
-       5,     1,     1,     1,     1,     2,     2,     2,     3,     2,
-       0,     1,     2,     2,     3,     9,     9,     8,    14,     1,
-       1,     6,     5,     2,     6,     7,     3,     5,     0,     0,
-       3,     2,     1,     5,     5,     6,     6,     4,     4,     6,
-       4,     4,     6,     6,     2,     8,     1,     1,     0,     3,
-       6,     3,     6,     2,     4,     6,     4
+       1,     1,     1,     2,     1,     2,     5,     5,     5,     5,
+       3,     2,     5,     4,     2,     1,     1,     1,     3,     1,
+       3,     1,     0,     1,     3,     4,     3,     3,     4,     4,
+       3,     6,     5,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     6,     5,     8,     6,     6,     7,     7,
+       6,     6,     8,     8,     3,     1,     1,     1,     1,     0,
+       1,     2,     0,     3,     0,     3,     3,     1,     3,     3,
+       0,     6,     0,     7,     0,     7,     2,     3,     1,     1,
+       1,     3,     3,     3,     3,     3,     3,     1,     0,     1,
+       1,     1,     0,     5,     3,     1,     3,     1,     0,     9,
+       1,     1,     4,     1,     1,     2,     3,     0,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     3,     1,     5,
+       1,     1,     1,     1,     2,     2,     2,     3,     2,     0,
+       1,     2,     2,     3,     9,     9,     8,    14,     1,     1,
+       6,     5,     2,     6,     7,     3,     5,     0,     0,     3,
+       2,     1,     5,     5,     6,     6,     4,     4,     6,     4,
+       4,     6,     6,     2,     8,     1,     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 yytype_uint16 yydefact[] =
+static const unsigned short int yydefact[] =
 {
-      61,   200,   201,   178,   175,   173,     0,     0,     0,    70,
-       0,    61,   171,     0,    72,    75,     0,     0,     0,     0,
-     187,     0,     0,     0,    62,    64,    63,    65,    67,    66,
-      68,    69,    71,    70,    70,     0,     1,   172,    60,    73,
-      74,    70,   176,    76,    77,    78,    79,    70,   240,   174,
-     240,     0,     0,     0,     0,   199,   188,   189,   177,     2,
-       3,   180,   107,   108,   109,   110,   111,   112,     0,     0,
-       0,     0,   231,   113,   179,   232,   115,     0,     0,   167,
-     168,     0,    80,    80,   241,   237,    61,   214,   215,   216,
-     236,   194,   191,   190,   192,   193,   195,   198,     0,   133,
-     116,     0,     0,     0,     0,   122,   134,     0,   114,   133,
-       0,     0,   107,   108,   109,   110,     0,     0,     0,   181,
-       0,    81,    82,    83,    84,    85,    86,     0,   217,     0,
-     278,   239,     0,   196,   132,    90,   128,   130,     0,     0,
-       0,     0,     0,     0,   121,     0,   183,   185,   151,   152,
-     149,   150,   153,   148,   144,   145,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,     0,     0,
-       0,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,     0,    28,    29,    30,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   147,   146,
-     103,    87,   127,   126,     0,   211,   212,   213,   277,   262,
-       0,     0,     0,     0,    80,   249,   250,     0,     0,     0,
+      61,   199,   200,   177,   174,   172,     0,     0,     0,    70,
+       0,    61,   170,     0,    72,    75,     0,     0,     0,     0,
+     186,     0,     0,     0,    62,    64,    63,    65,    67,    66,
+      68,    69,    71,    70,    70,     0,     1,   171,    60,    73,
+      74,    70,   175,    76,    77,    78,    79,    70,   239,   173,
+     239,     0,     0,     0,     0,   198,   187,   188,   176,     2,
+       3,   179,   107,   108,   109,   110,   111,     0,     0,     0,
+       0,   230,   112,   178,   231,   114,     0,     0,   166,   167,
+       0,    80,    80,   240,   236,    61,   213,   214,   215,   235,
+     193,   190,   189,   191,   192,   194,   197,     0,   132,   115,
+       0,     0,     0,     0,   121,   133,     0,   113,   132,     0,
+       0,   107,   108,   109,     0,     0,     0,   180,     0,    81,
+      82,    83,    84,    85,    86,     0,   216,     0,   277,   238,
+       0,   195,   131,    90,   127,   129,     0,     0,     0,     0,
+       0,     0,   120,     0,   182,   184,   150,   151,   148,   149,
+     152,   147,   143,   144,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,     0,     0,     0,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,     0,    28,    29,    30,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   146,   145,   103,    87,
+     126,   125,     0,   210,   211,   212,   276,   261,     0,     0,
+       0,     0,    80,   248,   249,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   238,    80,   253,     0,   276,   197,   125,
-       0,    94,     0,     0,   124,     0,   135,    94,   103,   103,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-       0,    55,    56,    51,    52,    53,    54,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,     0,     0,     0,
-       0,     0,     0,   137,   166,     0,     0,     0,   141,     0,
-     138,     0,     0,     0,     0,     0,   182,     0,   261,   243,
-       0,   242,     0,     0,    57,     0,     0,     0,     0,    98,
-      98,   283,     0,     0,   274,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    88,    89,    91,
-     131,   129,   118,   119,   120,   123,   117,   184,   186,     0,
-       0,   259,     0,     0,     0,     0,     0,   136,   122,   134,
-       0,   139,   140,     0,     0,     0,     0,     0,     0,   105,
-     103,   209,   220,   221,   222,   227,   223,   224,   225,   226,
-     218,     0,   229,   234,   233,   235,     0,   244,     0,     0,
-       0,     0,     0,   279,     0,   281,   259,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    92,    93,    95,     0,     0,     0,     0,     0,     0,
-       0,   165,   143,     0,     0,     0,     0,     0,   100,   106,
-     104,   208,    90,   206,     0,   219,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   286,     0,     0,     0,
-     270,   271,     0,     0,     0,     0,   268,   267,     0,   284,
-       0,     0,     0,     0,   155,     0,     0,     0,     0,   142,
-       0,     0,     0,     0,   203,     0,    94,     0,   228,     0,
-       0,   258,     0,     0,    98,    99,    98,     0,     0,     0,
-       0,     0,   263,   264,   258,     0,     0,     0,   260,     0,
-     162,     0,     0,   157,   158,   154,   161,   202,   205,   207,
-      90,   101,     0,     0,     0,     0,     0,   265,   266,     0,
-     280,   282,     0,     0,   269,   272,   273,     0,   285,   159,
-     160,     0,     0,     0,   203,   102,    96,   230,     0,     0,
-      90,     0,    94,   254,     0,    94,   156,   163,   164,   204,
-       0,   210,     0,   247,     0,     0,   256,     0,     0,   255,
-     275,    97,   245,     0,   246,     0,    90,     0,     0,     0,
-     257,     0,     0,     0,     0,   252,     0,     0,   251,     0,
-     248
+       0,   237,    80,   252,     0,   275,   196,   124,     0,    94,
+       0,     0,   123,     0,   134,    94,   103,   103,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,     0,    55,
+      56,    51,    52,    53,    54,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,     0,     0,     0,     0,     0,
+       0,   136,   165,     0,     0,     0,   140,     0,   137,     0,
+       0,     0,     0,     0,   181,     0,   260,   242,     0,   241,
+       0,     0,    57,     0,     0,     0,     0,    98,    98,   282,
+       0,     0,   273,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    88,    89,    91,   130,   128,
+     117,   118,   119,   122,   116,   183,   185,     0,     0,   258,
+       0,     0,     0,     0,     0,   135,   121,   133,     0,   138,
+     139,     0,     0,     0,     0,     0,     0,   105,   103,   208,
+     219,   220,   221,   226,   222,   223,   224,   225,   217,     0,
+     228,   233,   232,   234,     0,   243,     0,     0,     0,     0,
+       0,   278,     0,   280,   258,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    92,
+      93,    95,     0,     0,     0,     0,     0,     0,     0,   164,
+     142,     0,     0,     0,     0,     0,   100,   106,   104,   207,
+      90,   205,     0,   218,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   285,     0,     0,     0,   269,   270,
+       0,     0,     0,     0,   267,   266,     0,   283,     0,     0,
+       0,     0,   154,     0,     0,     0,     0,   141,     0,     0,
+       0,     0,   202,     0,    94,     0,   227,     0,     0,   257,
+       0,     0,    98,    99,    98,     0,     0,     0,     0,     0,
+     262,   263,   257,     0,     0,     0,   259,     0,   161,     0,
+       0,   156,   157,   153,   160,   201,   204,   206,    90,   101,
+       0,     0,     0,     0,     0,   264,   265,     0,   279,   281,
+       0,     0,   268,   271,   272,     0,   284,   158,   159,     0,
+       0,     0,   202,   102,    96,   229,     0,     0,    90,     0,
+      94,   253,     0,    94,   155,   162,   163,   203,     0,   209,
+       0,   246,     0,     0,   255,     0,     0,   254,   274,    97,
+     244,     0,   245,     0,    90,     0,     0,     0,   256,     0,
+       0,     0,     0,   251,     0,     0,   250,     0,   247
 };
 
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short int yydefgoto[] =
 {
-      -1,    72,   194,   195,   196,   197,   260,   277,   116,   117,
-       9,    33,    34,    35,    41,    47,   127,   329,   239,   403,
-     332,   541,   383,   359,   526,   296,   360,    73,   118,   136,
-     204,   137,   138,   107,   284,   372,   285,    81,    10,    11,
-      12,    15,    14,   200,   248,   249,    58,    94,    20,    56,
-      98,    75,   498,   423,   424,   128,   207,    48,    89,    49,
-      42,   426,   373,    76,   375,   301,    50,    85,    86,   233,
-     545,   131,   314,   506,   406,   234,   235,   236,   237
+      -1,    71,   192,   193,   194,   195,   258,   275,   114,   115,
+       9,    33,    34,    35,    41,    47,   125,   327,   237,   401,
+     330,   539,   381,   357,   524,   294,   358,    72,   116,   134,
+     202,   135,   136,   106,   282,   370,   283,    80,    10,    11,
+      12,    15,    14,   198,   246,   247,    58,    93,    20,    56,
+      97,    74,   496,   421,   422,   126,   205,    48,    88,    49,
+      42,   424,   371,    75,   373,   299,    50,    84,    85,   231,
+     543,   129,   312,   504,   404,   232,   233,   234,   235
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -425
-static const yytype_int16 yypact[] =
+#define YYPACT_NINF -413
+static const short int yypact[] =
 {
-     320,  -425,  -425,  -425,  -425,  -425,    19,  -109,   -23,    37,
-      53,   392,  -425,   -78,   163,   228,   -47,   -44,   -41,   -38,
-    -425,   -72,    97,   879,  -425,  -425,  -425,  -425,  -425,  -425,
-    -425,  -425,  -425,     2,     2,   137,  -425,  -425,  -425,  -425,
-    -425,     2,  -425,  -425,  -425,  -425,  -425,     2,   159,  -425,
-      16,   102,   218,   198,   208,   211,  -425,  -425,  -425,  -425,
-    -425,   113,  -425,  -425,  -425,  -425,  -425,  -425,   275,   279,
-      15,   244,  -425,  -425,   122,  -425,  -425,   137,   137,  -425,
-    -425,  1099,   419,   419,  -425,  -425,   274,  -425,  -425,  -425,
-    -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,   -51,   586,
-    -425,   149,   162,   498,   113,  -425,   122,  -104,  -425,   586,
-    1099,  1113,   164,   192,   297,   298,   270,   302,    29,  -425,
-     309,  -425,  -425,  -425,  -425,  -425,  -425,  1126,  -425,   -15,
-    1235,  -425,   299,  -425,  -425,   122,  -425,   180,   179,  1113,
-    1113,   175,   -80,  1113,  -425,   182,  -425,   122,  -425,  -425,
-    -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,
-    -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,   478,   905,
-     184,  -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,
-    -425,  -425,  -425,   185,  -425,  -425,  -425,   186,   189,   190,
-     734,  1140,   517,   312,   193,   194,   196,   201,  -425,  -425,
-     195,  -425,   113,   122,   274,  -425,  -425,  -425,  -425,  -425,
-     285,  1153,   119,   330,   419,  -425,  -425,   478,   905,  1113,
-    1113,  1113,  1113,  1113,  1113,  1113,  1113,  1113,  1113,  1113,
-    1113,  1113,  1113,  -425,   419,  -425,   188,  -425,  -425,   187,
-     779,  -425,    51,    35,  -425,   197,   122,  -425,   195,   195,
-    -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,
-     204,  -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,
-    -425,  -425,  -425,  -425,  -425,  -425,  -425,   205,  1099,  1099,
-    1099,  1099,  1099,  -425,  -425,    -8,   544,   -66,  -425,   -76,
-    -425,  1099,  1099,  1099,  1099,     9,  -425,   210,  -425,   113,
-     688,  -425,   829,   829,  -425,   829,  1126,  1113,  1113,   108,
-     142,  -425,   688,    52,   219,   220,   223,   226,   229,   231,
-     688,   688,   316,   232,  1126,  1113,  1113,  -425,  -425,  -425,
-    -425,  -425,   -71,  -425,  -425,  -425,   -71,  -425,  -425,  1099,
-    1099,  -425,   233,   234,   238,   245,  1099,  -425,   209,    29,
-     -13,  -425,  -425,   250,   251,   358,   256,   378,   394,  -425,
-     195,  1048,  -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,
-     346,  1099,  -425,  -425,  -425,  -425,   268,  -425,   276,   829,
-     688,   688,    -2,  -425,    18,  -425,  -425,   829,   273,  1113,
-    1113,  1113,  1113,  1113,   283,   284,  1113,  1113,   829,   688,
-     286,  -425,  -425,  -425,   287,   290,    59,  1099,  1099,  1099,
-    1099,  -425,  -425,   282,  1099,  1099,  1113,  1099,  -425,  -425,
-    -425,  -425,   122,   292,   281,  -425,   397,   -52,   415,   416,
-     300,   295,   306,   829,   433,   829,   308,   310,   829,   313,
-     122,  -425,   314,   315,   829,   829,   122,  -425,   317,  -425,
-    1113,  1099,  1099,  1113,  -425,   318,   305,   319,   321,  -425,
-     322,   323,   148,   324,    12,  1086,  -425,   325,  -425,   829,
-     829,  1113,   829,   829,   333,  -425,   333,   829,   336,  1113,
-    1113,  1113,  -425,  -425,  1113,   688,   334,   347,  -425,  1099,
-    -425,  1099,  1099,  -425,  -425,  -425,  -425,  -425,  -425,  -425,
-     122,     5,   430,   337,   345,   688,   106,  -425,  -425,   403,
-    -425,  -425,   349,   829,  -425,  -425,  -425,   136,  -425,  -425,
-    -425,   348,   353,   355,    12,  -425,   409,  -425,   446,    -5,
-    -425,  1113,  -425,  -425,   356,  -425,  -425,  -425,  -425,  -425,
-     491,  -425,   829,  -425,   957,    14,   187,   688,    88,  -425,
-     -71,  -425,  -425,   362,  -425,   957,  -425,   486,   487,   370,
-     187,   829,   829,   499,   448,  -425,   829,   501,  -425,   829,
-    -425
+     401,  -413,  -413,  -413,  -413,  -413,   110,  -107,    30,    67,
+      77,   527,  -413,   -43,     2,   238,   -16,     8,    47,    84,
+    -413,    -4,   132,   791,  -413,  -413,  -413,  -413,  -413,  -413,
+    -413,  -413,  -413,    91,    91,   149,  -413,  -413,  -413,  -413,
+    -413,    91,  -413,  -413,  -413,  -413,  -413,    91,   147,  -413,
+      20,   210,   208,   280,   226,   273,  -413,  -413,  -413,  -413,
+    -413,   160,  -413,  -413,  -413,  -413,  -413,   295,   299,     3,
+       7,  -413,  -413,   140,  -413,  -413,   149,   149,  -413,  -413,
+     954,   192,   192,  -413,  -413,   184,  -413,  -413,  -413,  -413,
+    -413,  -413,  -413,  -413,  -413,  -413,  -413,   -65,   549,  -413,
+     167,   171,    22,   160,  -413,   140,   -81,  -413,   549,   954,
+    1045,    95,   311,   312,   284,   313,   602,  -413,   317,  -413,
+    -413,  -413,  -413,  -413,  -413,  1125,  -413,    -7,  1228,  -413,
+     306,  -413,  -413,   140,  -413,   191,   193,  1045,  1045,   186,
+     -64,  1045,  -413,   194,  -413,   140,  -413,  -413,  -413,  -413,
+    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
+    -413,  -413,  -413,  -413,  -413,  -413,   251,   501,   207,  -413,
+    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
+    -413,   209,  -413,  -413,  -413,   214,   215,   216,    49,  1138,
+     120,   314,   219,   222,   224,   225,  -413,  -413,   230,  -413,
+     160,   140,   184,  -413,  -413,  -413,  -413,  -413,   315,  1185,
+     175,   357,   192,  -413,  -413,   251,   501,  1045,  1045,  1045,
+    1045,  1045,  1045,  1045,  1045,  1045,  1045,  1045,  1045,  1045,
+    1045,  -413,   192,  -413,   195,  -413,  -413,   203,   693,  -413,
+     126,    46,  -413,   228,   140,  -413,   230,   230,  -413,  -413,
+    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,   231,  -413,
+    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
+    -413,  -413,  -413,  -413,  -413,   235,   954,   954,   954,   954,
+     954,  -413,  -413,    29,   500,   -24,  -413,   -27,  -413,   954,
+     954,   954,   954,    39,  -413,   241,  -413,   160,   746,  -413,
+     873,   873,  -413,   873,  1125,  1045,  1045,   123,   159,  -413,
+     746,   146,   233,   245,   248,   249,   250,   252,   746,   746,
+     356,   253,  1125,  1045,  1045,  -413,  -413,  -413,  -413,  -413,
+     -18,  -413,  -413,  -413,   -18,  -413,  -413,   954,   954,  -413,
+     254,   255,   256,   259,   954,  -413,   262,   602,   -12,  -413,
+    -413,   265,   274,   367,   275,   391,   407,  -413,   230,   774,
+    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,   358,   954,
+    -413,  -413,  -413,  -413,   282,  -413,   285,   873,   746,   746,
+      35,  -413,    43,  -413,  -413,   873,   281,  1045,  1045,  1045,
+    1045,  1045,   289,   292,  1045,  1045,   873,   746,   293,  -413,
+    -413,  -413,   294,   301,   -25,   954,   954,   954,   954,  -413,
+    -413,   271,   954,   954,  1045,   954,  -413,  -413,  -413,  -413,
+     140,   302,   303,  -413,   417,    25,   427,   428,   305,   310,
+     318,   873,   441,   873,   319,   322,   873,   323,   140,  -413,
+     324,   325,   873,   873,   140,  -413,   309,  -413,  1045,   954,
+     954,  1045,  -413,   326,   328,   327,   335,  -413,   332,   333,
+     131,   336,    34,  1028,  -413,   339,  -413,   873,   873,  1045,
+     873,   873,   341,  -413,   341,   873,   342,  1045,  1045,  1045,
+    -413,  -413,  1045,   746,   340,   345,  -413,   954,  -413,   954,
+     954,  -413,  -413,  -413,  -413,  -413,  -413,  -413,   140,    10,
+     431,   343,   346,   746,    63,  -413,  -413,   400,  -413,  -413,
+     338,   873,  -413,  -413,  -413,   144,  -413,  -413,  -413,   351,
+     352,   354,    34,  -413,   403,  -413,   472,    -3,  -413,  1045,
+    -413,  -413,   355,  -413,  -413,  -413,  -413,  -413,   489,  -413,
+     873,  -413,  1000,    15,   203,   746,    66,  -413,   -18,  -413,
+    -413,   361,  -413,  1000,  -413,   485,   486,   368,   203,   873,
+     873,   491,   434,  -413,   873,   492,  -413,   873,  -413
 };
 
 /* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
+static const short int yypgoto[] =
 {
-    -425,  -425,   388,   389,   390,   391,   326,   327,  -212,  -425,
-     445,  -425,  -425,    47,  -425,  -425,  -196,  -310,  -379,  -425,
-    -235,  -425,  -308,    32,  -425,  -199,  -425,  -425,   -14,   304,
-    -270,  -425,   426,   434,   -58,  -112,  -188,   224,  -425,  -425,
-     529,  -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,  -425,
-    -425,     0,    22,  -425,  -425,   459,  -425,  -425,  -425,  -425,
-    -425,  -425,  -424,   -73,   103,  -211,  -425,   510,  -425,  -425,
-    -425,  -425,  -425,    67,   191,  -425,  -425,  -425,  -425
+    -413,  -413,   379,   385,   389,   390,   304,   307,  -210,  -413,
+     439,  -413,  -413,   145,  -413,  -413,  -192,  -305,  -412,  -413,
+    -235,  -413,  -303,    26,  -413,  -201,  -413,  -413,   -14,   288,
+    -255,  -413,   420,   429,   -58,  -112,  -187,   239,  -413,  -413,
+     518,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
+    -413,     0,    11,  -413,  -413,   448,  -413,  -413,  -413,  -413,
+    -413,  -413,  -403,   -73,   103,  -151,  -413,   482,  -413,  -413,
+    -413,  -413,  -413,    53,   153,  -413,  -413,  -413,  -413
 };
 
 /* 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 -171
-static const yytype_int16 yytable[] =
+#define YYTABLE_NINF -170
+static const short int yytable[] =
 {
-      13,   305,   385,   287,   289,   304,   198,   205,   433,    74,
-     311,    13,   336,   315,   316,   317,   318,   319,   306,   102,
-     322,   323,   402,   119,   304,    21,   402,     1,   435,     2,
-      22,   143,    84,   357,    59,    60,   379,   357,   324,    87,
-     327,   328,   144,   464,     1,   199,     2,   434,   153,   337,
-     338,    23,   146,    36,   398,   143,    38,   106,   358,   346,
-     401,   154,   155,    16,    17,    18,   245,   434,    55,   346,
-     352,    24,    25,    26,    27,    28,    29,    30,   351,    31,
-      77,    78,    19,   346,   132,   135,    13,    51,    82,   106,
-      52,   133,   468,    53,    83,   135,    54,   147,   350,   156,
-     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-     167,   168,   169,   203,    57,   400,   327,   328,   557,    91,
-     553,   524,   346,   327,   328,   242,   243,   346,   302,   246,
-     206,   559,   303,   413,   347,    32,   401,   543,   170,   171,
-     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-     182,   546,   183,   184,   185,   186,   554,   187,   188,   189,
-     103,   420,    88,    79,    80,   108,   510,   109,   511,   190,
-      32,   108,   191,   109,   192,    84,   193,   560,   439,   334,
-     441,   442,   443,   427,   148,   149,   447,   108,   108,   109,
-     109,   402,   387,   333,   453,   -57,   -57,   300,   454,   327,
-     328,    39,    95,    40,   297,   309,   310,   300,   312,   313,
-     300,   300,   300,   300,   300,   320,   321,   300,   300,   401,
-     341,   342,   343,   344,   345,    96,   135,   374,    97,   374,
-     374,   501,   374,   353,   354,   355,   356,   198,   402,   374,
-     402,   531,   488,   382,   108,   532,   109,   374,   374,    59,
-      60,    99,   104,    62,    63,    64,    65,    66,   108,     1,
-     109,     2,    43,    44,    45,    92,    93,    46,   514,   515,
-     516,   531,   349,   150,   151,   535,   199,   384,   108,   100,
-     109,   404,   405,   101,   108,    67,   109,   495,   411,     1,
-     139,     2,   203,   380,   381,   325,   326,   548,   327,   328,
-     550,   110,   111,   140,   -58,   -59,   374,   374,   374,   152,
-     203,   399,   300,   201,   374,   240,   238,   544,   241,   244,
-    -170,   247,   278,   279,   280,   374,   374,   281,   282,   290,
-     295,   291,   292,   555,   293,     1,   298,     2,     3,   294,
-     304,   335,   339,   340,     4,     5,   396,   422,   361,   455,
-     456,   457,   458,   412,   388,   389,   460,   461,   390,   463,
-     374,   391,   374,     6,   392,   374,   393,   397,   407,   408,
-       7,   374,   374,   409,     8,   300,   440,   300,   300,   300,
-     410,    68,   446,   300,    69,   414,   415,    70,   416,    71,
-     105,   417,  -169,   486,   487,   418,   374,   374,   419,   374,
-     374,   425,   462,   428,   374,   376,   377,     1,   378,     2,
-       3,   429,   374,   438,   467,   386,     4,     5,   444,   445,
-     466,   450,   451,   394,   395,   452,   459,   465,   469,   470,
-     472,   521,   374,   522,   523,     6,   485,   475,   471,   300,
-     374,   473,     7,   453,   490,   477,     8,   527,   479,   480,
-     481,   500,   434,   489,   491,   484,   492,   505,   540,   542,
-     502,   493,   494,   496,   497,   300,   300,   300,   509,   374,
-     505,   513,   528,   519,   374,   120,   121,   122,   123,   124,
-     125,   126,   430,   431,   432,   529,   520,   536,   374,   374,
-     437,   533,   537,   374,   538,   551,   374,   558,   549,   561,
-     562,   448,   449,    59,    60,   563,   104,    62,    63,    64,
-      65,    66,   566,     1,   569,     2,   567,   547,   229,   230,
-     231,   232,    59,    60,   497,   104,   112,   113,   114,   115,
-      66,   130,     1,   525,     2,   145,   474,   142,   476,    67,
-      37,   478,   129,   307,   331,   308,   539,   482,   483,    59,
-      60,   517,   104,   112,   113,   114,   115,    66,    67,     1,
-      90,     2,   250,   251,   252,   253,   254,   255,   256,   257,
-     258,   259,   503,   504,     0,   507,   508,   436,     0,     0,
-     512,     0,     0,     0,     0,    67,     0,     0,   518,     0,
-       0,    59,    60,     0,   104,    62,    63,    64,    65,    66,
-       0,     1,     0,     2,     0,     0,     0,     0,   530,     0,
-       0,     0,     0,     0,     0,     0,   534,   134,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    67,     0,     0,
-       0,     0,     0,     0,     0,    68,     0,     0,    69,     0,
-       0,    70,     0,    71,   141,   552,     0,     0,     0,     0,
-     556,     0,     0,     0,    68,     0,     0,    69,     0,     0,
-      70,     0,    71,   288,   564,   565,     0,     0,     0,   568,
-       0,     0,   570,     0,     0,     0,     0,     0,     0,     0,
-       0,    68,     0,     0,    69,     0,     0,    70,     0,    71,
-     348,   362,   363,    59,    60,   364,     0,     0,     0,     0,
-       0,     0,     0,     1,     0,     2,     0,   365,   366,   367,
+      13,   303,   285,   287,   196,   383,   302,   101,   462,    73,
+     334,    13,    59,    60,   203,   103,    62,    63,    64,    65,
+     304,     1,   117,     2,   302,   400,    21,    59,    60,   400,
+     103,    62,    63,    64,    65,    83,     1,   355,     2,    39,
+     322,    40,    86,   197,   431,   335,   336,    66,     1,   377,
+       2,   144,   433,   141,    59,    60,   105,   103,   111,   112,
+     113,    65,    66,     1,   142,     2,   355,   396,   309,   130,
+     141,   313,   314,   315,   316,   317,   131,    36,   320,   321,
+      23,   243,    22,   432,   133,    13,   522,   356,   105,    66,
+      38,   432,   325,   326,   133,   555,   145,   348,   -57,   -57,
+      24,    25,    26,    27,    28,    29,    30,   344,    31,   451,
+     344,   201,   399,   452,   146,   147,   544,    51,   350,   349,
+     325,   326,   344,   240,   241,    59,    60,   244,   103,   111,
+     112,   113,    65,   411,     1,    55,     2,   204,   541,   551,
+     399,    52,   558,    67,   325,   326,    68,   102,    57,    69,
+     557,    70,   104,    16,    17,    18,   552,   418,    67,   344,
+      66,    68,    83,   344,    69,    87,    70,   139,   466,   508,
+     345,   509,    19,   398,    78,    79,   325,   326,    76,    77,
+      53,   107,   425,   108,   300,    67,    81,   301,    68,   332,
+     281,    69,    82,    70,   400,   298,   399,   529,     1,    32,
+       2,   530,   295,   307,   308,   298,   310,   311,   298,   298,
+     298,   298,   298,   318,   319,   298,   298,    54,   339,   340,
+     341,   342,   343,    32,   133,   372,    90,   372,   372,   499,
+     372,   351,   352,   353,   354,   196,   437,   372,   439,   440,
+     441,   400,    95,   400,   445,   372,   372,   118,   119,   120,
+     121,   122,   123,   124,    91,    92,    67,   380,   107,    68,
+     108,   107,    69,   108,    70,   286,   107,   331,   108,   493,
+     347,    43,    44,    45,   197,   107,    46,   108,   529,   402,
+     403,   107,   533,   108,    94,   385,   409,   148,   149,    96,
+     201,   378,   379,   382,   107,   546,   108,    98,   548,    99,
+     486,   323,   324,   100,   372,   372,   372,   137,   201,   397,
+     298,   138,   372,   325,   326,   109,   110,   542,   -58,   -59,
+     150,   199,   236,   372,   372,   238,   512,   513,   514,   242,
+     288,   239,   245,   553,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   276,   420,   277,   453,   454,   455,
+     456,   278,   279,   280,   458,   459,   289,   461,   372,   290,
+     372,   291,   292,   372,   293,   296,   302,   386,   337,   372,
+     372,   333,   338,   298,   438,   298,   298,   298,   359,   387,
+     444,   298,   388,   389,   390,   394,   391,   395,   405,   406,
+     407,   484,   485,   408,   372,   372,   414,   372,   372,   412,
+     460,  -169,   372,   374,   375,   410,   376,   416,   413,   415,
+     372,   417,   423,   384,   457,     1,   426,     2,     3,   427,
+     436,   392,   393,   442,     4,     5,   443,   448,   449,   519,
+     372,   520,   521,   465,   483,   450,   463,   298,   372,   467,
+     468,   464,   469,     6,   470,   473,   482,   525,   432,   498,
+       7,   538,   471,   451,     8,   503,   475,   477,   478,   479,
+     487,   489,   495,   298,   298,   298,   488,   372,   503,   490,
+     491,   492,   372,   500,   494,   507,   511,   526,   517,   531,
+     428,   429,   430,   518,   540,   527,   372,   372,   435,   534,
+     535,   372,   536,   549,   372,   556,   547,   559,   560,   446,
+     447,   565,   561,   564,   567,    59,    60,   227,   103,   111,
+     112,   113,    65,   228,     1,   545,     2,   229,   230,   305,
+     259,   260,   495,   306,   128,   523,   329,  -168,   143,    37,
+     127,   140,    89,   537,   472,   515,   474,   434,     0,   476,
+      66,     1,     0,     2,     3,   480,   481,     0,     0,     0,
+       4,     5,     0,     0,    59,    60,     0,   103,    62,    63,
+      64,    65,     0,     1,     0,     2,     0,     0,     0,     6,
+     501,   502,     0,   505,   506,     0,     7,     0,   510,   132,
+       8,     0,     0,     0,     0,     0,   516,     0,     0,    66,
+     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
+     271,   272,   273,   274,     0,     0,   528,    59,    60,     0,
+       0,     0,     0,     0,   532,     0,     1,     0,     2,     0,
+     151,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   152,   153,     0,    67,     0,     0,    68,
+       0,     0,    69,   550,    70,   346,     0,     0,   554,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     368,   369,     0,    68,     0,     0,    69,     0,     0,    70,
-       0,    71,     0,     0,     0,     0,     0,     0,     0,    59,
-      60,   370,   104,   112,   113,   114,   115,    66,     0,     1,
-       0,     2,     0,     0,     0,     0,     0,     0,   156,   157,
-     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-     168,   169,     0,     0,     0,    67,     0,     0,     0,     0,
-       0,     0,     0,     0,    59,    60,     0,   104,    62,    63,
-      64,    65,    66,     0,     1,     0,     2,   170,   171,   172,
-     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
-     330,   183,   184,   185,   186,     0,   187,   188,   189,     0,
-      67,     0,     0,     0,   108,     0,   109,     0,     0,     0,
-       0,   371,   362,   363,    59,    60,   364,     0,     0,     0,
-       0,     0,     0,     0,     1,     0,     2,     0,   365,   366,
-     367,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   368,   369,     0,     0,     0,     0,     0,     0,     0,
-       0,    68,     0,     0,    69,     0,   283,    70,     0,    71,
-       0,     0,   370,     0,    59,    60,     0,    61,    62,    63,
-      64,    65,    66,     0,     1,     0,     2,     0,     0,   156,
-     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-     167,   168,   169,     0,     0,     0,    68,     0,     0,    69,
-      67,     0,    70,     0,    71,   261,   262,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   170,   171,
-     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-     182,     0,   183,   184,   185,   186,     0,   187,   188,   189,
-     362,   363,     0,     0,   364,     0,     0,     0,     0,     0,
-       0,     0,   371,     0,     0,     0,   365,   366,   367,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   368,
-     369,     0,     0,     0,     0,   263,   264,   265,   266,   267,
-     268,   269,   270,   271,   272,   273,   274,   275,   276,     0,
-     370,     0,     0,     0,     0,     0,    68,     0,     0,    69,
-       0,     0,    70,     0,    71,     0,     0,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    59,    60,     0,   104,    62,    63,    64,
-      65,    66,     0,     1,     0,     2,   170,   171,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   421,
-     183,   184,   185,   186,     0,   187,   188,   189,     0,    67,
-       0,    59,    60,     0,   104,    62,    63,    64,    65,    66,
-     371,     1,     0,     2,    59,    60,     0,   104,   112,   113,
-     114,   115,    66,     0,     1,     0,     2,   499,    59,    60,
-       0,   104,    62,    63,    64,    65,    66,    67,     1,     0,
-       2,    59,    60,     0,   202,    62,    63,    64,    65,    66,
-      67,     1,     0,     2,     0,    59,    60,     0,   104,   112,
-     113,   114,   115,    66,    67,     1,     0,     2,    59,    60,
-       0,   299,    62,    63,    64,    65,    66,    67,     1,     0,
+       0,     0,   562,   563,     0,     0,     0,   566,     0,     0,
+     568,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,    67,     0,     0,    68,     0,
+       0,    69,     0,    70,     0,     0,     0,     0,    59,    60,
+       0,   103,    62,    63,    64,    65,     0,     1,     0,     2,
+     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
+     178,   179,   180,   328,   181,   182,   183,   184,     0,   185,
+     186,   187,     0,    66,     0,     0,     0,   107,     0,   108,
+       0,   188,     0,     0,   189,     0,   190,     0,   191,   360,
+     361,    59,    60,   362,     0,     0,     0,     0,     0,     0,
+       1,     0,     2,     0,   363,   364,   365,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   366,   367,    59,
+      60,     0,   103,    62,    63,    64,    65,     0,     1,     0,
+       2,     0,     0,     0,     0,     0,    59,    60,   368,    61,
+      62,    63,    64,    65,   419,     1,     0,     2,     0,     0,
+       0,     0,     0,     0,    66,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,    67,
+       0,    66,    68,     0,     0,    69,     0,    70,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   168,   169,   170,   171,   172,   173,
+     174,   175,   176,   177,   178,   179,   180,     0,   181,   182,
+     183,   184,     0,   185,   186,   187,   360,   361,    59,    60,
+     362,   107,     0,   108,     0,     0,     0,     1,   369,     2,
+       0,   363,   364,   365,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   366,   367,     0,     0,     0,     0,
+      67,     0,     0,    68,     0,     0,    69,     0,    70,     0,
+       0,     0,     0,     0,     0,   368,     0,    67,     0,     0,
+      68,     0,     0,    69,     0,    70,     0,     0,     0,     0,
+       0,     0,   154,   155,   156,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,     0,     0,     0,    59,
+      60,     0,   103,   111,   112,   113,    65,     0,     1,     0,
        2,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    67,     0,     0,     0,    68,     0,     0,    69,     0,
-       0,    70,     0,    71,    67,     0,     0,     0,     0,     0,
+       0,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,    66,   181,   182,   183,   184,     0,
+     185,   186,   187,   360,   361,     0,     0,   362,     0,     0,
+       0,     0,     0,     0,     0,   369,     0,     0,   363,   364,
+     365,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   366,   367,    59,    60,     0,   103,    62,    63,    64,
+      65,     0,     1,     0,     2,     0,     0,     0,     0,     0,
+      59,    60,   368,   103,    62,    63,    64,    65,   497,     1,
+       0,     2,     0,     0,     0,     0,     0,     0,    66,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,     0,     0,    66,     0,     0,     0,     0,
+      67,     0,     0,    68,     0,     0,    69,     0,    70,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,     0,   181,   182,   183,   184,     0,   185,   186,   187,
+      59,    60,     0,   200,    62,    63,    64,    65,     0,     1,
+       0,     2,   369,    59,    60,     0,   103,   111,   112,   113,
+      65,     0,     1,     0,     2,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    67,    66,     0,    68,     0,     0,
+      69,     0,    70,     0,     0,     0,     0,     0,    66,     0,
+       0,    67,     0,     0,    68,     0,     0,    69,     0,    70,
+      59,    60,     0,   297,    62,    63,    64,    65,     0,     1,
+       0,     2,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    66,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    68,     0,     0,    69,     0,     0,    70,
-       0,    71,     0,     0,     0,     0,    68,     0,     0,    69,
-       0,     0,    70,     0,    71,     0,     0,     0,     0,     0,
-      68,     0,     0,    69,     0,     0,    70,     0,    71,     0,
-       0,     0,     0,    68,   208,     0,    69,     0,     0,    70,
-       0,    71,     0,     0,     0,     0,     0,    68,     0,     0,
-      69,     0,     0,    70,     0,   286,   209,   210,     0,     0,
-      68,     0,     0,    69,     0,     0,    70,     0,    71,   211,
-     212,   213,   214,   215,   216,   156,   157,   158,   159,   160,
-     161,   162,   163,   164,   165,   166,   167,   217,   218,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   219,
-     220,   221,     0,     0,   222,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   223,   224,   184,
-     185,   186,   225,   226,   227,   228
+       0,     0,     0,     0,     0,     0,   206,     0,     0,     0,
+       0,    67,     0,     0,    68,     0,     0,    69,     0,    70,
+       0,     0,     0,     0,    67,     0,     0,    68,   207,   208,
+      69,     0,   284,     0,     0,     0,     0,     0,     0,     0,
+       0,   209,   210,   211,   212,   213,   214,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   215,
+     216,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    67,     0,     0,    68,     0,     0,    69,     0,    70,
+       0,   217,   218,   219,     0,     0,   220,   169,   170,   171,
+     172,   173,   174,   175,   176,   177,   178,   179,   180,   221,
+     222,   182,   183,   184,   223,   224,   225,   226
 };
 
-static const yytype_int16 yycheck[] =
+static const short int yycheck[] =
 {
-       0,   213,   310,   191,   192,    10,   118,    22,    10,    23,
-     221,    11,   247,   224,   225,   226,   227,   228,   214,     4,
-     231,   232,   332,    81,    10,   134,   336,    15,    10,    17,
-      53,   135,    16,    28,     5,     6,   306,    28,   234,    23,
-     111,   112,   146,   422,    15,   118,    17,    49,    19,   248,
-     249,    14,   110,     0,   324,   135,   134,    71,    49,   135,
-     131,    32,    33,    44,    45,    46,   146,    49,   140,   135,
-     146,    34,    35,    36,    37,    38,    39,    40,   144,    42,
-      33,    34,    63,   135,   135,    99,    86,   134,    41,   103,
-     134,   142,   144,   134,    47,   109,   134,   111,   286,    70,
-      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    82,    83,   127,    17,   326,   111,   112,    30,    17,
-     544,   500,   135,   111,   112,   139,   140,   135,     9,   143,
-     145,   555,    13,   146,   142,   133,   131,   142,   109,   110,
-     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-     121,   530,   123,   124,   125,   126,   142,   128,   129,   130,
-     145,   360,   146,    26,    27,   136,   474,   138,   476,   140,
-     133,   136,   143,   138,   145,    16,   147,   556,   389,   144,
-     391,   392,   393,   371,    20,    21,   397,   136,   136,   138,
-     138,   501,   140,   142,   135,     3,     4,   211,   139,   111,
-     112,    38,     4,    40,   204,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   131,
-     278,   279,   280,   281,   282,    17,   240,   300,    17,   302,
-     303,   466,   305,   291,   292,   293,   294,   349,   548,   312,
-     550,   135,   453,   135,   136,   139,   138,   320,   321,     5,
-       6,   138,     8,     9,    10,    11,    12,    13,   136,    15,
-     138,    17,    34,    35,    36,    47,    48,    39,   479,   480,
-     481,   135,   286,     3,     4,   139,   349,   135,   136,     4,
-     138,   339,   340,     4,   136,    41,   138,   139,   346,    15,
-     141,    17,   306,   307,   308,   107,   108,   532,   111,   112,
-     535,    77,    78,   141,     7,     7,   379,   380,   381,     7,
-     324,   325,   326,     4,   387,   135,    17,   529,   139,   144,
-       0,   139,   138,   138,   138,   398,   399,   138,   138,    17,
-     135,   138,   138,   545,   138,    15,    51,    17,    18,   138,
-      10,   144,   138,   138,    24,    25,    30,   361,   138,   407,
-     408,   409,   410,   144,   135,   135,   414,   415,   135,   417,
-     433,   135,   435,    43,   135,   438,   135,   135,   135,   135,
-      50,   444,   445,   135,    54,   389,   390,   391,   392,   393,
-     135,   137,   396,   397,   140,   135,   135,   143,    30,   145,
-     146,   135,     0,   451,   452,    17,   469,   470,     4,   472,
-     473,    55,   416,   135,   477,   302,   303,    15,   305,    17,
-      18,   135,   485,   140,    17,   312,    24,    25,   135,   135,
-     139,   135,   135,   320,   321,   135,   144,   135,    13,    13,
-     135,   489,   505,   491,   492,    43,   450,     4,   138,   453,
-     513,   135,    50,   135,   139,   135,    54,    17,   135,   135,
-     135,   465,    49,   135,   135,   138,   135,   471,    49,    13,
-     135,   139,   139,   139,   464,   479,   480,   481,   135,   542,
-     484,   135,   135,   139,   547,    56,    57,    58,    59,    60,
-      61,    62,   379,   380,   381,   140,   139,   139,   561,   562,
-     387,   142,   139,   566,   139,     4,   569,   135,   142,    13,
-      13,   398,   399,     5,     6,   135,     8,     9,    10,    11,
-      12,    13,    13,    15,    13,    17,    68,   531,   130,   130,
-     130,   130,     5,     6,   524,     8,     9,    10,    11,    12,
-      13,    86,    15,   501,    17,   109,   433,   103,   435,    41,
-      11,   438,    83,   217,   240,   218,   524,   444,   445,     5,
-       6,   484,     8,     9,    10,    11,    12,    13,    41,    15,
-      50,    17,    84,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,   469,   470,    -1,   472,   473,   386,    -1,    -1,
-     477,    -1,    -1,    -1,    -1,    41,    -1,    -1,   485,    -1,
-      -1,     5,     6,    -1,     8,     9,    10,    11,    12,    13,
-      -1,    15,    -1,    17,    -1,    -1,    -1,    -1,   505,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   513,    31,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   137,    -1,    -1,   140,    -1,
-      -1,   143,    -1,   145,   146,   542,    -1,    -1,    -1,    -1,
-     547,    -1,    -1,    -1,   137,    -1,    -1,   140,    -1,    -1,
-     143,    -1,   145,   146,   561,   562,    -1,    -1,    -1,   566,
-      -1,    -1,   569,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   137,    -1,    -1,   140,    -1,    -1,   143,    -1,   145,
-     146,     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    15,    -1,    17,    -1,    19,    20,    21,
+       0,   211,   189,   190,   116,   308,     9,     4,   420,    23,
+     245,    11,     5,     6,    21,     8,     9,    10,    11,    12,
+     212,    14,    80,    16,     9,   330,   133,     5,     6,   334,
+       8,     9,    10,    11,    12,    15,    14,    27,    16,    37,
+     232,    39,    22,   116,     9,   246,   247,    40,    14,   304,
+      16,   109,     9,   134,     5,     6,    70,     8,     9,    10,
+      11,    12,    40,    14,   145,    16,    27,   322,   219,   134,
+     134,   222,   223,   224,   225,   226,   141,     0,   229,   230,
+      13,   145,    52,    48,    98,    85,   498,    48,   102,    40,
+     133,    48,   110,   111,   108,    29,   110,   284,     3,     4,
+      33,    34,    35,    36,    37,    38,    39,   134,    41,   134,
+     134,   125,   130,   138,    19,    20,   528,   133,   145,   143,
+     110,   111,   134,   137,   138,     5,     6,   141,     8,     9,
+      10,    11,    12,   145,    14,   139,    16,   144,   141,   542,
+     130,   133,   554,   136,   110,   111,   139,   144,    16,   142,
+     553,   144,   145,    43,    44,    45,   141,   358,   136,   134,
+      40,   139,    15,   134,   142,   145,   144,   145,   143,   472,
+     141,   474,    62,   324,    25,    26,   110,   111,    33,    34,
+     133,   135,   369,   137,     9,   136,    41,    12,   139,   143,
+     141,   142,    47,   144,   499,   209,   130,   134,    14,   132,
+      16,   138,   202,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   229,   230,   133,   276,   277,
+     278,   279,   280,   132,   238,   298,    16,   300,   301,   464,
+     303,   289,   290,   291,   292,   347,   387,   310,   389,   390,
+     391,   546,    16,   548,   395,   318,   319,    55,    56,    57,
+      58,    59,    60,    61,    46,    47,   136,   134,   135,   139,
+     137,   135,   142,   137,   144,   145,   135,   141,   137,   138,
+     284,    33,    34,    35,   347,   135,    38,   137,   134,   337,
+     338,   135,   138,   137,     4,   139,   344,     3,     4,    16,
+     304,   305,   306,   134,   135,   530,   137,   137,   533,     4,
+     451,   106,   107,     4,   377,   378,   379,   140,   322,   323,
+     324,   140,   385,   110,   111,    76,    77,   527,     7,     7,
+       7,     4,    16,   396,   397,   134,   477,   478,   479,   143,
+      16,   138,   138,   543,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,   137,   359,   137,   405,   406,   407,
+     408,   137,   137,   137,   412,   413,   137,   415,   431,   137,
+     433,   137,   137,   436,   134,    50,     9,   134,   137,   442,
+     443,   143,   137,   387,   388,   389,   390,   391,   137,   134,
+     394,   395,   134,   134,   134,    29,   134,   134,   134,   134,
+     134,   449,   450,   134,   467,   468,    29,   470,   471,   134,
+     414,     0,   475,   300,   301,   143,   303,    16,   134,   134,
+     483,     4,    54,   310,   143,    14,   134,    16,    17,   134,
+     139,   318,   319,   134,    23,    24,   134,   134,   134,   487,
+     503,   489,   490,    16,   448,   134,   134,   451,   511,    12,
+      12,   138,   137,    42,   134,     4,   137,    16,    48,   463,
+      49,    48,   134,   134,    53,   469,   134,   134,   134,   134,
+     134,   134,   462,   477,   478,   479,   138,   540,   482,   134,
+     138,   138,   545,   134,   138,   134,   134,   134,   138,   141,
+     377,   378,   379,   138,    12,   139,   559,   560,   385,   138,
+     138,   564,   138,     4,   567,   134,   141,    12,    12,   396,
+     397,    67,   134,    12,    12,     5,     6,   128,     8,     9,
+      10,    11,    12,   128,    14,   529,    16,   128,   128,   215,
+      19,    20,   522,   216,    85,   499,   238,     0,   108,    11,
+      82,   102,    50,   522,   431,   482,   433,   384,    -1,   436,
+      40,    14,    -1,    16,    17,   442,   443,    -1,    -1,    -1,
+      23,    24,    -1,    -1,     5,     6,    -1,     8,     9,    10,
+      11,    12,    -1,    14,    -1,    16,    -1,    -1,    -1,    42,
+     467,   468,    -1,   470,   471,    -1,    49,    -1,   475,    30,
+      53,    -1,    -1,    -1,    -1,    -1,   483,    -1,    -1,    40,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,    -1,    -1,   503,     5,     6,    -1,
+      -1,    -1,    -1,    -1,   511,    -1,    14,    -1,    16,    -1,
+      18,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    31,    32,    -1,   136,    -1,    -1,   139,
+      -1,    -1,   142,   540,   144,   145,    -1,    -1,   545,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      32,    33,    -1,   137,    -1,    -1,   140,    -1,    -1,   143,
-      -1,   145,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,
-       6,    53,     8,     9,    10,    11,    12,    13,    -1,    15,
-      -1,    17,    -1,    -1,    -1,    -1,    -1,    -1,    70,    71,
+      -1,    -1,   559,   560,    -1,    -1,    -1,   564,    -1,    -1,
+     567,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,   136,    -1,    -1,   139,    -1,
+      -1,   142,    -1,   144,    -1,    -1,    -1,    -1,     5,     6,
+      -1,     8,     9,    10,    11,    12,    -1,    14,    -1,    16,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,    30,   122,   123,   124,   125,    -1,   127,
+     128,   129,    -1,    40,    -1,    -1,    -1,   135,    -1,   137,
+      -1,   139,    -1,    -1,   142,    -1,   144,    -1,   146,     3,
+       4,     5,     6,     7,    -1,    -1,    -1,    -1,    -1,    -1,
+      14,    -1,    16,    -1,    18,    19,    20,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    31,    32,     5,
+       6,    -1,     8,     9,    10,    11,    12,    -1,    14,    -1,
+      16,    -1,    -1,    -1,    -1,    -1,     5,     6,    52,     8,
+       9,    10,    11,    12,    30,    14,    -1,    16,    -1,    -1,
+      -1,    -1,    -1,    -1,    40,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,   136,
+      -1,    40,   139,    -1,    -1,   142,    -1,   144,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   108,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   118,   119,   120,    -1,   122,   123,
+     124,   125,    -1,   127,   128,   129,     3,     4,     5,     6,
+       7,   135,    -1,   137,    -1,    -1,    -1,    14,   142,    16,
+      -1,    18,    19,    20,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    31,    32,    -1,    -1,    -1,    -1,
+     136,    -1,    -1,   139,    -1,    -1,   142,    -1,   144,    -1,
+      -1,    -1,    -1,    -1,    -1,    52,    -1,   136,    -1,    -1,
+     139,    -1,    -1,   142,    -1,   144,    -1,    -1,    -1,    -1,
+      -1,    -1,    69,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    -1,    -1,    -1,     5,
+       6,    -1,     8,     9,    10,    11,    12,    -1,    14,    -1,
+      16,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   108,   109,   110,   111,   112,   113,   114,   115,   116,
+     117,   118,   119,   120,    40,   122,   123,   124,   125,    -1,
+     127,   128,   129,     3,     4,    -1,    -1,     7,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   142,    -1,    -1,    18,    19,
+      20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    31,    32,     5,     6,    -1,     8,     9,    10,    11,
+      12,    -1,    14,    -1,    16,    -1,    -1,    -1,    -1,    -1,
+       5,     6,    52,     8,     9,    10,    11,    12,    30,    14,
+      -1,    16,    -1,    -1,    -1,    -1,    -1,    -1,    40,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    -1,    -1,    40,    -1,    -1,    -1,    -1,
+     136,    -1,    -1,   139,    -1,    -1,   142,    -1,   144,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,    -1,   122,   123,   124,   125,    -1,   127,   128,   129,
+       5,     6,    -1,     8,     9,    10,    11,    12,    -1,    14,
+      -1,    16,   142,     5,     6,    -1,     8,     9,    10,    11,
+      12,    -1,    14,    -1,    16,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   136,    40,    -1,   139,    -1,    -1,
+     142,    -1,   144,    -1,    -1,    -1,    -1,    -1,    40,    -1,
+      -1,   136,    -1,    -1,   139,    -1,    -1,   142,    -1,   144,
+       5,     6,    -1,     8,     9,    10,    11,    12,    -1,    14,
+      -1,    16,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    -1,    -1,
+      -1,   136,    -1,    -1,   139,    -1,    -1,   142,    -1,   144,
+      -1,    -1,    -1,    -1,   136,    -1,    -1,   139,    50,    51,
+     142,    -1,   144,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    63,    64,    65,    66,    67,    68,    69,    70,    71,
       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,     5,     6,    -1,     8,     9,    10,
-      11,    12,    13,    -1,    15,    -1,    17,   109,   110,   111,
+      82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   136,    -1,    -1,   139,    -1,    -1,   142,    -1,   144,
+      -1,   103,   104,   105,    -1,    -1,   108,   109,   110,   111,
      112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-      31,   123,   124,   125,   126,    -1,   128,   129,   130,    -1,
-      41,    -1,    -1,    -1,   136,    -1,   138,    -1,    -1,    -1,
-      -1,   143,     3,     4,     5,     6,     7,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    15,    -1,    17,    -1,    19,    20,
-      21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    32,    33,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   137,    -1,    -1,   140,    -1,   142,   143,    -1,   145,
-      -1,    -1,    53,    -1,     5,     6,    -1,     8,     9,    10,
-      11,    12,    13,    -1,    15,    -1,    17,    -1,    -1,    70,
-      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    82,    83,    -1,    -1,    -1,   137,    -1,    -1,   140,
-      41,    -1,   143,    -1,   145,    20,    21,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,
-     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-     121,    -1,   123,   124,   125,   126,    -1,   128,   129,   130,
-       3,     4,    -1,    -1,     7,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   143,    -1,    -1,    -1,    19,    20,    21,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    32,
-      33,    -1,    -1,    -1,    -1,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,    -1,
-      53,    -1,    -1,    -1,    -1,    -1,   137,    -1,    -1,   140,
-      -1,    -1,   143,    -1,   145,    -1,    -1,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,     5,     6,    -1,     8,     9,    10,    11,
-      12,    13,    -1,    15,    -1,    17,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   118,   119,   120,   121,    31,
-     123,   124,   125,   126,    -1,   128,   129,   130,    -1,    41,
-      -1,     5,     6,    -1,     8,     9,    10,    11,    12,    13,
-     143,    15,    -1,    17,     5,     6,    -1,     8,     9,    10,
-      11,    12,    13,    -1,    15,    -1,    17,    31,     5,     6,
-      -1,     8,     9,    10,    11,    12,    13,    41,    15,    -1,
-      17,     5,     6,    -1,     8,     9,    10,    11,    12,    13,
-      41,    15,    -1,    17,    -1,     5,     6,    -1,     8,     9,
-      10,    11,    12,    13,    41,    15,    -1,    17,     5,     6,
-      -1,     8,     9,    10,    11,    12,    13,    41,    15,    -1,
-      17,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    41,    -1,    -1,    -1,   137,    -1,    -1,   140,    -1,
-      -1,   143,    -1,   145,    41,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   137,    -1,    -1,   140,    -1,    -1,   143,
-      -1,   145,    -1,    -1,    -1,    -1,   137,    -1,    -1,   140,
-      -1,    -1,   143,    -1,   145,    -1,    -1,    -1,    -1,    -1,
-     137,    -1,    -1,   140,    -1,    -1,   143,    -1,   145,    -1,
-      -1,    -1,    -1,   137,    29,    -1,   140,    -1,    -1,   143,
-      -1,   145,    -1,    -1,    -1,    -1,    -1,   137,    -1,    -1,
-     140,    -1,    -1,   143,    -1,   145,    51,    52,    -1,    -1,
-     137,    -1,    -1,   140,    -1,    -1,   143,    -1,   145,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,
-     105,   106,    -1,    -1,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130
+     122,   123,   124,   125,   126,   127,   128,   129
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+static const unsigned char yystos[] =
 {
-       0,    15,    17,    18,    24,    25,    43,    50,    54,   158,
-     186,   187,   188,   199,   190,   189,    44,    45,    46,    63,
-     196,   134,    53,    14,    34,    35,    36,    37,    38,    39,
-      40,    42,   133,   159,   160,   161,     0,   188,   134,    38,
-      40,   162,   208,    34,    35,    36,    39,   163,   205,   207,
-     214,   134,   134,   134,   134,   140,   197,    17,   194,     5,
-       6,     8,     9,    10,    11,    12,    13,    41,   137,   140,
-     143,   145,   149,   175,   176,   199,   211,   161,   161,    26,
-      27,   185,   161,   161,    16,   215,   216,    23,   146,   206,
-     215,    17,    47,    48,   195,     4,    17,    17,   198,   138,
-       4,     4,     4,   145,     8,   146,   176,   181,   136,   138,
-     185,   185,     9,    10,    11,    12,   156,   157,   176,   182,
-      56,    57,    58,    59,    60,    61,    62,   164,   203,   203,
-     158,   219,   135,   142,    31,   176,   177,   179,   180,   141,
-     141,   146,   181,   135,   146,   180,   182,   176,    20,    21,
-       3,     4,     7,    19,    32,    33,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,   120,   121,   123,   124,   125,   126,   128,   129,   130,
-     140,   143,   145,   147,   150,   151,   152,   153,   183,   211,
-     191,     4,     8,   176,   178,    22,   145,   204,    29,    51,
-      52,    64,    65,    66,    67,    68,    69,    82,    83,   104,
-     105,   106,   109,   122,   123,   127,   128,   129,   130,   150,
-     151,   152,   153,   217,   223,   224,   225,   226,    17,   166,
-     135,   139,   176,   176,   144,   146,   176,   139,   192,   193,
-      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-     154,    20,    21,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,    99,   100,   101,   102,   103,   155,   138,   138,
-     138,   138,   138,   142,   182,   184,   145,   184,   146,   184,
-      17,   138,   138,   138,   138,   135,   173,   199,    51,     8,
-     176,   213,     9,    13,    10,   156,   164,   154,   155,   176,
-     176,   213,   176,   176,   220,   213,   213,   213,   213,   213,
-     176,   176,   213,   213,   164,   107,   108,   111,   112,   165,
-      31,   177,   168,   142,   144,   144,   168,   173,   173,   138,
-     138,   182,   182,   182,   182,   182,   135,   142,   146,   176,
-     184,   144,   146,   182,   182,   182,   182,    28,    49,   171,
-     174,   138,     3,     4,     7,    19,    20,    21,    32,    33,
-      53,   143,   183,   210,   211,   212,   212,   212,   212,   178,
-     176,   176,   135,   170,   135,   170,   212,   140,   135,   135,
-     135,   135,   135,   135,   212,   212,    30,   135,   178,   176,
-     213,   131,   165,   167,   182,   182,   222,   135,   135,   135,
-     135,   182,   144,   146,   135,   135,    30,   135,    17,     4,
-     173,    31,   176,   201,   202,    55,   209,   184,   135,   135,
-     212,   212,   212,    10,    49,    10,   222,   212,   140,   213,
-     176,   213,   213,   213,   135,   135,   176,   213,   212,   212,
-     135,   135,   135,   135,   139,   182,   182,   182,   182,   144,
-     182,   182,   176,   182,   166,   135,   139,    17,   144,    13,
-      13,   138,   135,   135,   212,     4,   212,   135,   212,   135,
-     135,   135,   212,   212,   138,   176,   182,   182,   213,   135,
-     139,   135,   135,   139,   139,   139,   139,   199,   200,    31,
-     176,   168,   135,   212,   212,   176,   221,   212,   212,   135,
-     170,   170,   212,   135,   213,   213,   213,   221,   212,   139,
-     139,   182,   182,   182,   166,   171,   172,    17,   135,   140,
-     212,   135,   139,   142,   212,   139,   139,   139,   139,   200,
-      49,   169,    13,   142,   156,   218,   166,   176,   168,   142,
-     168,     4,   212,   210,   142,   156,   212,    30,   135,   210,
-     166,    13,    13,   135,   212,   212,    13,    68,   212,    13,
-     212
+       0,    14,    16,    17,    23,    24,    42,    49,    53,   157,
+     185,   186,   187,   198,   189,   188,    43,    44,    45,    62,
+     195,   133,    52,    13,    33,    34,    35,    36,    37,    38,
+      39,    41,   132,   158,   159,   160,     0,   187,   133,    37,
+      39,   161,   207,    33,    34,    35,    38,   162,   204,   206,
+     213,   133,   133,   133,   133,   139,   196,    16,   193,     5,
+       6,     8,     9,    10,    11,    12,    40,   136,   139,   142,
+     144,   148,   174,   175,   198,   210,   160,   160,    25,    26,
+     184,   160,   160,    15,   214,   215,    22,   145,   205,   214,
+      16,    46,    47,   194,     4,    16,    16,   197,   137,     4,
+       4,     4,   144,     8,   145,   175,   180,   135,   137,   184,
+     184,     9,    10,    11,   155,   156,   175,   181,    55,    56,
+      57,    58,    59,    60,    61,   163,   202,   202,   157,   218,
+     134,   141,    30,   175,   176,   178,   179,   140,   140,   145,
+     180,   134,   145,   179,   181,   175,    19,    20,     3,     4,
+       7,    18,    31,    32,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   122,   123,   124,   125,   127,   128,   129,   139,   142,
+     144,   146,   149,   150,   151,   152,   182,   210,   190,     4,
+       8,   175,   177,    21,   144,   203,    28,    50,    51,    63,
+      64,    65,    66,    67,    68,    81,    82,   103,   104,   105,
+     108,   121,   122,   126,   127,   128,   129,   149,   150,   151,
+     152,   216,   222,   223,   224,   225,    16,   165,   134,   138,
+     175,   175,   143,   145,   175,   138,   191,   192,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,   153,    19,
+      20,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,   154,   137,   137,   137,   137,
+     137,   141,   181,   183,   144,   183,   145,   183,    16,   137,
+     137,   137,   137,   134,   172,   198,    50,     8,   175,   212,
+       9,    12,     9,   155,   163,   153,   154,   175,   175,   212,
+     175,   175,   219,   212,   212,   212,   212,   212,   175,   175,
+     212,   212,   163,   106,   107,   110,   111,   164,    30,   176,
+     167,   141,   143,   143,   167,   172,   172,   137,   137,   181,
+     181,   181,   181,   181,   134,   141,   145,   175,   183,   143,
+     145,   181,   181,   181,   181,    27,    48,   170,   173,   137,
+       3,     4,     7,    18,    19,    20,    31,    32,    52,   142,
+     182,   209,   210,   211,   211,   211,   211,   177,   175,   175,
+     134,   169,   134,   169,   211,   139,   134,   134,   134,   134,
+     134,   134,   211,   211,    29,   134,   177,   175,   212,   130,
+     164,   166,   181,   181,   221,   134,   134,   134,   134,   181,
+     143,   145,   134,   134,    29,   134,    16,     4,   172,    30,
+     175,   200,   201,    54,   208,   183,   134,   134,   211,   211,
+     211,     9,    48,     9,   221,   211,   139,   212,   175,   212,
+     212,   212,   134,   134,   175,   212,   211,   211,   134,   134,
+     134,   134,   138,   181,   181,   181,   181,   143,   181,   181,
+     175,   181,   165,   134,   138,    16,   143,    12,    12,   137,
+     134,   134,   211,     4,   211,   134,   211,   134,   134,   134,
+     211,   211,   137,   175,   181,   181,   212,   134,   138,   134,
+     134,   138,   138,   138,   138,   198,   199,    30,   175,   167,
+     134,   211,   211,   175,   220,   211,   211,   134,   169,   169,
+     211,   134,   212,   212,   212,   220,   211,   138,   138,   181,
+     181,   181,   165,   170,   171,    16,   134,   139,   211,   134,
+     138,   141,   211,   138,   138,   138,   138,   199,    48,   168,
+      12,   141,   155,   217,   165,   175,   167,   141,   167,     4,
+     211,   209,   141,   155,   211,    29,   134,   209,   165,    12,
+      12,   134,   211,   211,    12,    67,   211,    12,   211
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2409,7 +2326,7 @@
       yychar = (Token);						\
       yylval = (Value);						\
       yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
+      YYPOPSTACK;						\
       goto yybackup;						\
     }								\
   else								\
@@ -2417,7 +2334,7 @@
       yyerror (YY_("syntax error: cannot back up")); \
       YYERROR;							\
     }								\
-while (YYID (0))
+while (0)
 
 
 #define YYTERROR	1
@@ -2432,7 +2349,7 @@
 #ifndef YYLLOC_DEFAULT
 # define YYLLOC_DEFAULT(Current, Rhs, N)				\
     do									\
-      if (YYID (N))                                                    \
+      if (N)								\
 	{								\
 	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
 	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
@@ -2446,7 +2363,7 @@
 	  (Current).first_column = (Current).last_column =		\
 	    YYRHSLOC (Rhs, 0).last_column;				\
 	}								\
-    while (YYID (0))
+    while (0)
 #endif
 
 
@@ -2458,8 +2375,8 @@
 # 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)
+              (Loc).first_line, (Loc).first_column,	\
+              (Loc).last_line,  (Loc).last_column)
 # else
 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
 # endif
@@ -2486,96 +2403,36 @@
 do {						\
   if (yydebug)					\
     YYFPRINTF Args;				\
-} while (YYID (0))
+} while (0)
 
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-do {									  \
-  if (yydebug)								  \
-    {									  \
-      YYFPRINTF (stderr, "%s ", Title);					  \
-      yy_symbol_print (stderr,						  \
-		  Type, Value); \
-      YYFPRINTF (stderr, "\n");						  \
-    }									  \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
-{
-  if (!yyvaluep)
-    return;
-# ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
-# endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
-}
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
-{
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
-}
+# 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 __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#if defined (__STDC__) || defined (__cplusplus)
 static void
-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+yy_stack_print (short int *bottom, short int *top)
 #else
 static void
 yy_stack_print (bottom, top)
-    yytype_int16 *bottom;
-    yytype_int16 *top;
+    short int *bottom;
+    short int *top;
 #endif
 {
   YYFPRINTF (stderr, "Stack now");
-  for (; bottom <= top; ++bottom)
+  for (/* Nothing. */; bottom <= top; ++bottom)
     YYFPRINTF (stderr, " %d", *bottom);
   YYFPRINTF (stderr, "\n");
 }
@@ -2584,45 +2441,37 @@
 do {								\
   if (yydebug)							\
     yy_stack_print ((Bottom), (Top));				\
-} while (YYID (0))
+} while (0)
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#if defined (__STDC__) || defined (__cplusplus)
 static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+yy_reduce_print (int yyrule)
 #else
 static void
-yy_reduce_print (yyvsp, yyrule)
-    YYSTYPE *yyvsp;
+yy_reduce_print (yyrule)
     int yyrule;
 #endif
 {
-  int yynrhs = yyr2[yyrule];
   int yyi;
   unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-	     yyrule - 1, yylno);
-  /* The symbols being reduced.  */
-  for (yyi = 0; yyi < yynrhs; yyi++)
-    {
-      fprintf (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-		       &(yyvsp[(yyi + 1) - (yynrhs)])
-		       		       );
-      fprintf (stderr, "\n");
-    }
+  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 (yyvsp, Rule); \
-} while (YYID (0))
+    yy_reduce_print (Rule);		\
+} while (0)
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
@@ -2656,44 +2505,42 @@
 #if YYERROR_VERBOSE
 
 # ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
+#  if defined (__GLIBC__) && defined (_STRING_H)
 #   define yystrlen strlen
 #  else
 /* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
 yystrlen (const char *yystr)
-#else
-static YYSIZE_T
+#   else
 yystrlen (yystr)
-    const char *yystr;
-#endif
+     const char *yystr;
+#   endif
 {
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
+  const char *yys = yystr;
+
+  while (*yys++ != '\0')
     continue;
-  return yylen;
+
+  return yys - yystr - 1;
 }
 #  endif
 # endif
 
 # ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+#  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.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static char *
+#   if defined (__STDC__) || defined (__cplusplus)
 yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
+#   else
 yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
+     char *yydest;
+     const char *yysrc;
+#   endif
 {
   char *yyd = yydest;
   const char *yys = yysrc;
@@ -2719,7 +2566,7 @@
 {
   if (*yystr == '"')
     {
-      YYSIZE_T yyn = 0;
+      size_t yyn = 0;
       char const *yyp = yystr;
 
       for (;;)
@@ -2754,123 +2601,53 @@
 }
 # endif
 
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
-
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
-    {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { 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 + 1;
-      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)
-	return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-	{
-	  /* 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 = yyresult;
-	  int yyi = 0;
-	  while ((*yyp = *yyf) != '\0')
-	    {
-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		{
-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-		  yyf += 2;
-		}
-	      else
-		{
-		  yyp++;
-		  yyf++;
-		}
-	    }
-	}
-      return yysize;
-    }
-}
 #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.  |
 `-----------------------------------------------*/
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#if defined (__STDC__) || defined (__cplusplus)
 static void
 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
 #else
@@ -2881,7 +2658,8 @@
     YYSTYPE *yyvaluep;
 #endif
 {
-  YYUSE (yyvaluep);
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
 
   if (!yymsg)
     yymsg = "Deleting";
@@ -2891,7 +2669,7 @@
     {
 
       default:
-	break;
+        break;
     }
 }
 
@@ -2899,13 +2677,13 @@
 /* Prevent warnings from -Wmissing-prototypes.  */
 
 #ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
+# if defined (__STDC__) || defined (__cplusplus)
 int yyparse (void *YYPARSE_PARAM);
-#else
+# else
 int yyparse ();
-#endif
+# endif
 #else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
+#if defined (__STDC__) || defined (__cplusplus)
 int yyparse (void);
 #else
 int yyparse ();
@@ -2930,18 +2708,14 @@
 `----------*/
 
 #ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
+# 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 __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#if defined (__STDC__) || defined (__cplusplus)
 int
 yyparse (void)
 #else
@@ -2959,12 +2733,6 @@
   int yyerrstatus;
   /* Look-ahead token as an internal (translated) token number.  */
   int yytoken = 0;
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
 
   /* Three stacks and their tools:
      `yyss': related to states,
@@ -2975,9 +2743,9 @@
      to reallocate them elsewhere.  */
 
   /* The state stack.  */
-  yytype_int16 yyssa[YYINITDEPTH];
-  yytype_int16 *yyss = yyssa;
-  yytype_int16 *yyssp;
+  short int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  short int *yyssp;
 
   /* The semantic value stack.  */
   YYSTYPE yyvsa[YYINITDEPTH];
@@ -2986,7 +2754,7 @@
 
 
 
-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+#define YYPOPSTACK   (yyvsp--, yyssp--)
 
   YYSIZE_T yystacksize = YYINITDEPTH;
 
@@ -2995,9 +2763,9 @@
   YYSTYPE yyval;
 
 
-  /* The number of symbols on the RHS of the reduced rule.
-     Keep to zero when no symbol should be popped.  */
-  int yylen = 0;
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
 
   YYDPRINTF ((stderr, "Starting parse\n"));
 
@@ -3021,7 +2789,8 @@
 `------------------------------------------------------------*/
  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.  */
+     have just been pushed. so pushing a state here evens the stacks.
+     */
   yyssp++;
 
  yysetstate:
@@ -3034,11 +2803,11 @@
 
 #ifdef yyoverflow
       {
-	/* Give user a chance to reallocate the stack.  Use copies of
+	/* 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;
-	yytype_int16 *yyss1 = yyss;
+	short int *yyss1 = yyss;
 
 
 	/* Each stack pointer address is followed by the size of the
@@ -3066,7 +2835,7 @@
 	yystacksize = YYMAXDEPTH;
 
       {
-	yytype_int16 *yyss1 = yyss;
+	short int *yyss1 = yyss;
 	union yyalloc *yyptr =
 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
 	if (! yyptr)
@@ -3101,10 +2870,12 @@
 `-----------*/
 yybackup:
 
-  /* Do appropriate processing given the current state.  Read a
-     look-ahead token if we need one and don't already have one.  */
+/* 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;
@@ -3146,21 +2917,22 @@
   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--;
 
-  /* Shift the look-ahead token.  */
-  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
-
   yystate = yyn;
-  *++yyvsp = yylval;
-
   goto yynewstate;
 
 
@@ -3196,155 +2968,155 @@
   switch (yyn)
     {
         case 3:
-#line 1032 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1032 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-  if ((yyvsp[(1) - (1)].UIntVal) > (uint32_t)INT32_MAX)     // Outside of my range!
+  if ((yyvsp[0].UIntVal) > (uint32_t)INT32_MAX)     // Outside of my range!
     GEN_ERROR("Value too large for type!");
-  (yyval.SIntVal) = (int32_t)(yyvsp[(1) - (1)].UIntVal);
+  (yyval.SIntVal) = (int32_t)(yyvsp[0].UIntVal);
   CHECK_FOR_ERROR
 ;}
     break;
 
   case 31:
-#line 1048 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1048 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;}
     break;
 
   case 32:
-#line 1048 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1048 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;}
     break;
 
   case 33:
-#line 1049 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1049 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;}
     break;
 
   case 34:
-#line 1049 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1049 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;}
     break;
 
   case 35:
-#line 1050 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1050 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;}
     break;
 
   case 36:
-#line 1050 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1050 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;}
     break;
 
   case 37:
-#line 1051 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1051 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;}
     break;
 
   case 38:
-#line 1051 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1051 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;}
     break;
 
   case 39:
-#line 1052 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1052 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;}
     break;
 
   case 40:
-#line 1052 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1052 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;}
     break;
 
   case 41:
-#line 1056 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1056 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;}
     break;
 
   case 42:
-#line 1056 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1056 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;}
     break;
 
   case 43:
-#line 1057 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1057 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;}
     break;
 
   case 44:
-#line 1057 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1057 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;}
     break;
 
   case 45:
-#line 1058 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1058 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;}
     break;
 
   case 46:
-#line 1058 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1058 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;}
     break;
 
   case 47:
-#line 1059 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1059 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;}
     break;
 
   case 48:
-#line 1059 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1059 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;}
     break;
 
   case 49:
-#line 1060 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1060 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;}
     break;
 
   case 50:
-#line 1060 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1060 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;}
     break;
 
   case 51:
-#line 1061 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1061 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;}
     break;
 
   case 52:
-#line 1061 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1061 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;}
     break;
 
   case 53:
-#line 1062 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1062 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;}
     break;
 
   case 54:
-#line 1062 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1062 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;}
     break;
 
   case 55:
-#line 1063 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1063 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;}
     break;
 
   case 56:
-#line 1064 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1064 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;}
     break;
 
   case 60:
-#line 1073 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1073 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal);
+    (yyval.StrVal) = (yyvsp[-1].StrVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 61:
-#line 1077 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1077 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = 0;
     CHECK_FOR_ERROR
@@ -3352,188 +3124,188 @@
     break;
 
   case 62:
-#line 1083 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1083 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 63:
-#line 1084 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1084 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 64:
-#line 1085 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1085 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
     break;
 
   case 65:
-#line 1086 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1086 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;}
     break;
 
   case 66:
-#line 1087 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1087 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
     break;
 
   case 67:
-#line 1091 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1091 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
     break;
 
   case 68:
-#line 1092 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1092 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
     break;
 
   case 69:
-#line 1093 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1093 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 70:
-#line 1097 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1097 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::DefaultVisibility; ;}
     break;
 
   case 71:
-#line 1098 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1098 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::HiddenVisibility;  ;}
     break;
 
   case 72:
-#line 1102 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1102 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 73:
-#line 1103 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1103 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
     break;
 
   case 74:
-#line 1104 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1104 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
     break;
 
   case 75:
-#line 1108 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1108 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 76:
-#line 1109 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1109 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 77:
-#line 1110 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1110 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
     break;
 
   case 78:
-#line 1111 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1111 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 79:
-#line 1112 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1112 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
     break;
 
   case 80:
-#line 1115 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1115 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::C; ;}
     break;
 
   case 81:
-#line 1116 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1116 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::C; ;}
     break;
 
   case 82:
-#line 1117 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1117 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::CSRet; ;}
     break;
 
   case 83:
-#line 1118 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1118 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::Fast; ;}
     break;
 
   case 84:
-#line 1119 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1119 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::Cold; ;}
     break;
 
   case 85:
-#line 1120 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1120 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::X86_StdCall; ;}
     break;
 
   case 86:
-#line 1121 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1121 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::X86_FastCall; ;}
     break;
 
   case 87:
-#line 1122 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1122 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-                   if ((unsigned)(yyvsp[(2) - (2)].UInt64Val) != (yyvsp[(2) - (2)].UInt64Val))
+                   if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val))
                      GEN_ERROR("Calling conv too large!");
-                   (yyval.UIntVal) = (yyvsp[(2) - (2)].UInt64Val);
+                   (yyval.UIntVal) = (yyvsp[0].UInt64Val);
                   CHECK_FOR_ERROR
                  ;}
     break;
 
   case 88:
-#line 1129 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1129 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = FunctionType::ZExtAttribute; ;}
     break;
 
   case 89:
-#line 1130 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1130 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = FunctionType::SExtAttribute; ;}
     break;
 
   case 90:
-#line 1133 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1133 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = FunctionType::NoAttributeSet; ;}
     break;
 
   case 91:
-#line 1134 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1134 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-                (yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[(1) - (2)].ParamAttrs) | (yyvsp[(2) - (2)].ParamAttrs));
+                (yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[-1].ParamAttrs) | (yyvsp[0].ParamAttrs));
               ;}
     break;
 
   case 92:
-#line 1139 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1139 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = FunctionType::NoReturnAttribute; ;}
     break;
 
   case 94:
-#line 1143 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1143 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamAttrs) = FunctionType::NoAttributeSet; ;}
     break;
 
   case 95:
-#line 1144 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1144 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-                (yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[(1) - (2)].ParamAttrs) | (yyvsp[(2) - (2)].ParamAttrs));
+                (yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[-1].ParamAttrs) | (yyvsp[0].ParamAttrs));
               ;}
     break;
 
   case 96:
-#line 1151 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1151 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = 0; ;}
     break;
 
   case 97:
-#line 1152 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1152 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-  (yyval.UIntVal) = (yyvsp[(2) - (2)].UInt64Val);
+  (yyval.UIntVal) = (yyvsp[0].UInt64Val);
   if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
     GEN_ERROR("Alignment must be a power of two!");
   CHECK_FOR_ERROR
@@ -3541,14 +3313,14 @@
     break;
 
   case 98:
-#line 1158 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1158 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = 0; ;}
     break;
 
   case 99:
-#line 1159 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1159 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-  (yyval.UIntVal) = (yyvsp[(3) - (3)].UInt64Val);
+  (yyval.UIntVal) = (yyvsp[0].UInt64Val);
   if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
     GEN_ERROR("Alignment must be a power of two!");
   CHECK_FOR_ERROR
@@ -3556,110 +3328,110 @@
     break;
 
   case 100:
-#line 1167 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1167 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-  for (unsigned i = 0, e = strlen((yyvsp[(2) - (2)].StrVal)); i != e; ++i)
-    if ((yyvsp[(2) - (2)].StrVal)[i] == '"' || (yyvsp[(2) - (2)].StrVal)[i] == '\\')
+  for (unsigned i = 0, e = strlen((yyvsp[0].StrVal)); i != e; ++i)
+    if ((yyvsp[0].StrVal)[i] == '"' || (yyvsp[0].StrVal)[i] == '\\')
       GEN_ERROR("Invalid character in section name!");
-  (yyval.StrVal) = (yyvsp[(2) - (2)].StrVal);
+  (yyval.StrVal) = (yyvsp[0].StrVal);
   CHECK_FOR_ERROR
 ;}
     break;
 
   case 101:
-#line 1175 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1175 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = 0; ;}
     break;
 
   case 102:
-#line 1176 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    { (yyval.StrVal) = (yyvsp[(1) - (1)].StrVal); ;}
+#line 1176 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.StrVal) = (yyvsp[0].StrVal); ;}
     break;
 
   case 103:
-#line 1181 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1181 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {;}
     break;
 
   case 104:
-#line 1182 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1182 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {;}
     break;
 
   case 105:
-#line 1183 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1183 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    CurGV->setSection((yyvsp[(1) - (1)].StrVal));
-    free((yyvsp[(1) - (1)].StrVal));
+    CurGV->setSection((yyvsp[0].StrVal));
+    free((yyvsp[0].StrVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 106:
-#line 1188 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1188 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if ((yyvsp[(2) - (2)].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[(2) - (2)].UInt64Val)))
+    if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val)))
       GEN_ERROR("Alignment must be a power of two!");
-    CurGV->setAlignment((yyvsp[(2) - (2)].UInt64Val));
+    CurGV->setAlignment((yyvsp[0].UInt64Val));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 112:
-#line 1204 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 111:
+#line 1204 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeVal) = new PATypeHolder(OpaqueType::get());
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 113:
-#line 1208 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 112:
+#line 1208 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    (yyval.TypeVal) = new PATypeHolder((yyvsp[(1) - (1)].PrimType));
+    (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType));
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 113:
+#line 1212 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {                             // Pointer type?
+    if (*(yyvsp[-1].TypeVal) == Type::LabelTy)
+      GEN_ERROR("Cannot form a pointer to a basic block");
+    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PointerType::get(*(yyvsp[-1].TypeVal))));
+    delete (yyvsp[-1].TypeVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 114:
-#line 1212 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {                             // Pointer type?
-    if (*(yyvsp[(1) - (2)].TypeVal) == Type::LabelTy)
-      GEN_ERROR("Cannot form a pointer to a basic block");
-    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PointerType::get(*(yyvsp[(1) - (2)].TypeVal))));
-    delete (yyvsp[(1) - (2)].TypeVal);
-    CHECK_FOR_ERROR
-  ;}
-    break;
-
-  case 115:
-#line 1219 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1219 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {            // Named types are also simple types...
-    const Type* tmp = getTypeVal((yyvsp[(1) - (1)].ValIDVal));
+    const Type* tmp = getTypeVal((yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
     (yyval.TypeVal) = new PATypeHolder(tmp);
   ;}
     break;
 
-  case 116:
-#line 1224 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 115:
+#line 1224 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                   // Type UpReference
-    if ((yyvsp[(2) - (2)].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range!");
+    if ((yyvsp[0].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range!");
     OpaqueType *OT = OpaqueType::get();        // Use temporary placeholder
-    UpRefs.push_back(UpRefRecord((unsigned)(yyvsp[(2) - (2)].UInt64Val), OT));  // Add to vector...
+    UpRefs.push_back(UpRefRecord((unsigned)(yyvsp[0].UInt64Val), OT));  // Add to vector...
     (yyval.TypeVal) = new PATypeHolder(OT);
     UR_OUT("New Upreference!\n");
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 117:
-#line 1232 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 116:
+#line 1232 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     std::vector<const Type*> Params;
     std::vector<FunctionType::ParameterAttributes> Attrs;
-    Attrs.push_back((yyvsp[(5) - (5)].ParamAttrs));
-    for (TypeWithAttrsList::iterator I=(yyvsp[(3) - (5)].TypeWithAttrsList)->begin(), E=(yyvsp[(3) - (5)].TypeWithAttrsList)->end(); I != E; ++I) {
+    Attrs.push_back((yyvsp[0].ParamAttrs));
+    for (TypeWithAttrsList::iterator I=(yyvsp[-2].TypeWithAttrsList)->begin(), E=(yyvsp[-2].TypeWithAttrsList)->end(); I != E; ++I) {
       Params.push_back(I->Ty->get());
       if (I->Ty->get() != Type::VoidTy)
         Attrs.push_back(I->Attrs);
@@ -3667,151 +3439,151 @@
     bool isVarArg = Params.size() && Params.back() == Type::VoidTy;
     if (isVarArg) Params.pop_back();
 
-    FunctionType *FT = FunctionType::get(*(yyvsp[(1) - (5)].TypeVal), Params, isVarArg, Attrs);
-    delete (yyvsp[(3) - (5)].TypeWithAttrsList);   // Delete the argument list
-    delete (yyvsp[(1) - (5)].TypeVal);   // Delete the return type handle
+    FunctionType *FT = FunctionType::get(*(yyvsp[-4].TypeVal), Params, isVarArg, Attrs);
+    delete (yyvsp[-2].TypeWithAttrsList);   // Delete the argument list
+    delete (yyvsp[-4].TypeVal);   // Delete the return type handle
+    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT)); 
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 117:
+#line 1250 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    std::vector<const Type*> Params;
+    std::vector<FunctionType::ParameterAttributes> Attrs;
+    Attrs.push_back((yyvsp[0].ParamAttrs));
+    for (TypeWithAttrsList::iterator I=(yyvsp[-2].TypeWithAttrsList)->begin(), E=(yyvsp[-2].TypeWithAttrsList)->end(); I != E; ++I) {
+      Params.push_back(I->Ty->get());
+      if (I->Ty->get() != Type::VoidTy)
+        Attrs.push_back(I->Attrs);
+    }
+    bool isVarArg = Params.size() && Params.back() == Type::VoidTy;
+    if (isVarArg) Params.pop_back();
+
+    FunctionType *FT = FunctionType::get((yyvsp[-4].PrimType), Params, isVarArg, Attrs);
+    delete (yyvsp[-2].TypeWithAttrsList);      // Delete the argument list
     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT)); 
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 118:
-#line 1250 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    std::vector<const Type*> Params;
-    std::vector<FunctionType::ParameterAttributes> Attrs;
-    Attrs.push_back((yyvsp[(5) - (5)].ParamAttrs));
-    for (TypeWithAttrsList::iterator I=(yyvsp[(3) - (5)].TypeWithAttrsList)->begin(), E=(yyvsp[(3) - (5)].TypeWithAttrsList)->end(); I != E; ++I) {
-      Params.push_back(I->Ty->get());
-      if (I->Ty->get() != Type::VoidTy)
-        Attrs.push_back(I->Attrs);
-    }
-    bool isVarArg = Params.size() && Params.back() == Type::VoidTy;
-    if (isVarArg) Params.pop_back();
-
-    FunctionType *FT = FunctionType::get((yyvsp[(1) - (5)].PrimType), Params, isVarArg, Attrs);
-    delete (yyvsp[(3) - (5)].TypeWithAttrsList);      // Delete the argument list
-    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT)); 
+#line 1268 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {          // Sized array type?
+    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(ArrayType::get(*(yyvsp[-1].TypeVal), (unsigned)(yyvsp[-3].UInt64Val))));
+    delete (yyvsp[-1].TypeVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 119:
-#line 1268 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {          // Sized array type?
-    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(ArrayType::get(*(yyvsp[(4) - (5)].TypeVal), (unsigned)(yyvsp[(2) - (5)].UInt64Val))));
-    delete (yyvsp[(4) - (5)].TypeVal);
-    CHECK_FOR_ERROR
-  ;}
-    break;
-
-  case 120:
-#line 1273 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1273 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {          // Packed array type?
-     const llvm::Type* ElemTy = (yyvsp[(4) - (5)].TypeVal)->get();
-     if ((unsigned)(yyvsp[(2) - (5)].UInt64Val) != (yyvsp[(2) - (5)].UInt64Val))
+     const llvm::Type* ElemTy = (yyvsp[-1].TypeVal)->get();
+     if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val))
         GEN_ERROR("Unsigned result not equal to signed result");
      if (!ElemTy->isFloatingPoint() && !ElemTy->isInteger())
         GEN_ERROR("Element type of a PackedType must be primitive");
-     if (!isPowerOf2_32((yyvsp[(2) - (5)].UInt64Val)))
+     if (!isPowerOf2_32((yyvsp[-3].UInt64Val)))
        GEN_ERROR("Vector length should be a power of 2!");
-     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PackedType::get(*(yyvsp[(4) - (5)].TypeVal), (unsigned)(yyvsp[(2) - (5)].UInt64Val))));
-     delete (yyvsp[(4) - (5)].TypeVal);
+     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PackedType::get(*(yyvsp[-1].TypeVal), (unsigned)(yyvsp[-3].UInt64Val))));
+     delete (yyvsp[-1].TypeVal);
      CHECK_FOR_ERROR
   ;}
     break;
 
-  case 121:
-#line 1285 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 120:
+#line 1285 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                        // Structure type?
     std::vector<const Type*> Elements;
-    for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[(2) - (3)].TypeList)->begin(),
-           E = (yyvsp[(2) - (3)].TypeList)->end(); I != E; ++I)
+    for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-1].TypeList)->begin(),
+           E = (yyvsp[-1].TypeList)->end(); I != E; ++I)
       Elements.push_back(*I);
 
     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(StructType::get(Elements)));
-    delete (yyvsp[(2) - (3)].TypeList);
+    delete (yyvsp[-1].TypeList);
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 122:
-#line 1295 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 121:
+#line 1295 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                                  // Empty structure type?
     (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>()));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 123:
-#line 1299 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 122:
+#line 1299 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     std::vector<const Type*> Elements;
-    for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[(3) - (5)].TypeList)->begin(),
-           E = (yyvsp[(3) - (5)].TypeList)->end(); I != E; ++I)
+    for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-2].TypeList)->begin(),
+           E = (yyvsp[-2].TypeList)->end(); I != E; ++I)
       Elements.push_back(*I);
 
     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(StructType::get(Elements, true)));
-    delete (yyvsp[(3) - (5)].TypeList);
+    delete (yyvsp[-2].TypeList);
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 124:
-#line 1309 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 123:
+#line 1309 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                         // Empty structure type?
     (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>(), true));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 125:
-#line 1316 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 124:
+#line 1316 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { 
-    (yyval.TypeWithAttrs).Ty = (yyvsp[(1) - (2)].TypeVal); 
-    (yyval.TypeWithAttrs).Attrs = (yyvsp[(2) - (2)].ParamAttrs); 
+    (yyval.TypeWithAttrs).Ty = (yyvsp[-1].TypeVal); 
+    (yyval.TypeWithAttrs).Attrs = (yyvsp[0].ParamAttrs); 
+  ;}
+    break;
+
+  case 125:
+#line 1323 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
+    if (!(*(yyvsp[0].TypeVal))->isFirstClassType())
+      GEN_ERROR("LLVM functions cannot return aggregate types!");
+    (yyval.TypeVal) = (yyvsp[0].TypeVal);
   ;}
     break;
 
   case 126:
-#line 1323 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (1)].TypeVal))->getDescription());
-    if (!(*(yyvsp[(1) - (1)].TypeVal))->isFirstClassType())
-      GEN_ERROR("LLVM functions cannot return aggregate types!");
-    (yyval.TypeVal) = (yyvsp[(1) - (1)].TypeVal);
-  ;}
-    break;
-
-  case 127:
-#line 1330 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1330 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeVal) = new PATypeHolder(Type::VoidTy);
   ;}
     break;
 
-  case 128:
-#line 1335 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 127:
+#line 1335 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
-    (yyval.TypeWithAttrsList)->push_back((yyvsp[(1) - (1)].TypeWithAttrs));
+    (yyval.TypeWithAttrsList)->push_back((yyvsp[0].TypeWithAttrs));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 129:
-#line 1340 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 128:
+#line 1340 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    ((yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList))->push_back((yyvsp[(3) - (3)].TypeWithAttrs));
+    ((yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList))->push_back((yyvsp[0].TypeWithAttrs));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 131:
-#line 1348 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 130:
+#line 1348 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    (yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList);
+    (yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList);
     TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet;
     TWA.Ty = new PATypeHolder(Type::VoidTy);
     (yyval.TypeWithAttrsList)->push_back(TWA);
@@ -3819,8 +3591,8 @@
   ;}
     break;
 
-  case 132:
-#line 1355 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 131:
+#line 1355 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList;
     TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet;
@@ -3830,214 +3602,214 @@
   ;}
     break;
 
-  case 133:
-#line 1362 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 132:
+#line 1362 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 134:
-#line 1370 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 133:
+#line 1370 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeList) = new std::list<PATypeHolder>();
-    (yyval.TypeList)->push_back(*(yyvsp[(1) - (1)].TypeVal)); delete (yyvsp[(1) - (1)].TypeVal);
+    (yyval.TypeList)->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 134:
+#line 1375 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 135:
-#line 1375 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    ((yyval.TypeList)=(yyvsp[(1) - (3)].TypeList))->push_back(*(yyvsp[(3) - (3)].TypeVal)); delete (yyvsp[(3) - (3)].TypeVal);
+#line 1386 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    { // Nonempty unsized arr
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+    const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-3].TypeVal)->get());
+    if (ATy == 0)
+      GEN_ERROR("Cannot make array constant with type: '" + 
+                     (*(yyvsp[-3].TypeVal))->getDescription() + "'!");
+    const Type *ETy = ATy->getElementType();
+    int NumElements = ATy->getNumElements();
+
+    // Verify that we have the correct size...
+    if (NumElements != -1 && NumElements != (int)(yyvsp[-1].ConstVector)->size())
+      GEN_ERROR("Type mismatch: constant sized array initialized with " +
+                     utostr((yyvsp[-1].ConstVector)->size()) +  " arguments, but has size of " + 
+                     itostr(NumElements) + "!");
+
+    // Verify all elements are correct type!
+    for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) {
+      if (ETy != (*(yyvsp[-1].ConstVector))[i]->getType())
+        GEN_ERROR("Element #" + utostr(i) + " is not of type '" + 
+                       ETy->getDescription() +"' as required!\nIt is of type '"+
+                       (*(yyvsp[-1].ConstVector))[i]->getType()->getDescription() + "'.");
+    }
+
+    (yyval.ConstVal) = ConstantArray::get(ATy, *(yyvsp[-1].ConstVector));
+    delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 136:
-#line 1386 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    { // Nonempty unsized arr
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription());
-    const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[(1) - (4)].TypeVal)->get());
-    if (ATy == 0)
-      GEN_ERROR("Cannot make array constant with type: '" + 
-                     (*(yyvsp[(1) - (4)].TypeVal))->getDescription() + "'!");
-    const Type *ETy = ATy->getElementType();
-    int NumElements = ATy->getNumElements();
-
-    // Verify that we have the correct size...
-    if (NumElements != -1 && NumElements != (int)(yyvsp[(3) - (4)].ConstVector)->size())
-      GEN_ERROR("Type mismatch: constant sized array initialized with " +
-                     utostr((yyvsp[(3) - (4)].ConstVector)->size()) +  " arguments, but has size of " + 
-                     itostr(NumElements) + "!");
-
-    // Verify all elements are correct type!
-    for (unsigned i = 0; i < (yyvsp[(3) - (4)].ConstVector)->size(); i++) {
-      if (ETy != (*(yyvsp[(3) - (4)].ConstVector))[i]->getType())
-        GEN_ERROR("Element #" + utostr(i) + " is not of type '" + 
-                       ETy->getDescription() +"' as required!\nIt is of type '"+
-                       (*(yyvsp[(3) - (4)].ConstVector))[i]->getType()->getDescription() + "'.");
-    }
-
-    (yyval.ConstVal) = ConstantArray::get(ATy, *(yyvsp[(3) - (4)].ConstVector));
-    delete (yyvsp[(1) - (4)].TypeVal); delete (yyvsp[(3) - (4)].ConstVector);
-    CHECK_FOR_ERROR
-  ;}
-    break;
-
-  case 137:
-#line 1414 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1414 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
-    const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[(1) - (3)].TypeVal)->get());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+    const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal)->get());
     if (ATy == 0)
       GEN_ERROR("Cannot make array constant with type: '" + 
-                     (*(yyvsp[(1) - (3)].TypeVal))->getDescription() + "'!");
+                     (*(yyvsp[-2].TypeVal))->getDescription() + "'!");
 
     int NumElements = ATy->getNumElements();
     if (NumElements != -1 && NumElements != 0) 
       GEN_ERROR("Type mismatch: constant sized array initialized with 0"
                      " arguments, but has size of " + itostr(NumElements) +"!");
     (yyval.ConstVal) = ConstantArray::get(ATy, std::vector<Constant*>());
-    delete (yyvsp[(1) - (3)].TypeVal);
+    delete (yyvsp[-2].TypeVal);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 137:
+#line 1430 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+    const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal)->get());
+    if (ATy == 0)
+      GEN_ERROR("Cannot make array constant with type: '" + 
+                     (*(yyvsp[-2].TypeVal))->getDescription() + "'!");
+
+    int NumElements = ATy->getNumElements();
+    const Type *ETy = ATy->getElementType();
+    char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true);
+    if (NumElements != -1 && NumElements != (EndStr-(yyvsp[0].StrVal)))
+      GEN_ERROR("Can't build string constant of size " + 
+                     itostr((int)(EndStr-(yyvsp[0].StrVal))) +
+                     " when array has size " + itostr(NumElements) + "!");
+    std::vector<Constant*> Vals;
+    if (ETy == Type::Int8Ty) {
+      for (unsigned char *C = (unsigned char *)(yyvsp[0].StrVal); 
+        C != (unsigned char*)EndStr; ++C)
+      Vals.push_back(ConstantInt::get(ETy, *C));
+    } else {
+      free((yyvsp[0].StrVal));
+      GEN_ERROR("Cannot build string arrays of non byte sized elements!");
+    }
+    free((yyvsp[0].StrVal));
+    (yyval.ConstVal) = ConstantArray::get(ATy, Vals);
+    delete (yyvsp[-2].TypeVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 138:
-#line 1430 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
+#line 1459 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    { // Nonempty unsized arr
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
-    const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[(1) - (3)].TypeVal)->get());
-    if (ATy == 0)
-      GEN_ERROR("Cannot make array constant with type: '" + 
-                     (*(yyvsp[(1) - (3)].TypeVal))->getDescription() + "'!");
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+    const PackedType *PTy = dyn_cast<PackedType>((yyvsp[-3].TypeVal)->get());
+    if (PTy == 0)
+      GEN_ERROR("Cannot make packed constant with type: '" + 
+                     (*(yyvsp[-3].TypeVal))->getDescription() + "'!");
+    const Type *ETy = PTy->getElementType();
+    int NumElements = PTy->getNumElements();
 
-    int NumElements = ATy->getNumElements();
-    const Type *ETy = ATy->getElementType();
-    char *EndStr = UnEscapeLexed((yyvsp[(3) - (3)].StrVal), true);
-    if (NumElements != -1 && NumElements != (EndStr-(yyvsp[(3) - (3)].StrVal)))
-      GEN_ERROR("Can't build string constant of size " + 
-                     itostr((int)(EndStr-(yyvsp[(3) - (3)].StrVal))) +
-                     " when array has size " + itostr(NumElements) + "!");
-    std::vector<Constant*> Vals;
-    if (ETy == Type::Int8Ty) {
-      for (unsigned char *C = (unsigned char *)(yyvsp[(3) - (3)].StrVal); 
-        C != (unsigned char*)EndStr; ++C)
-      Vals.push_back(ConstantInt::get(ETy, *C));
-    } else {
-      free((yyvsp[(3) - (3)].StrVal));
-      GEN_ERROR("Cannot build string arrays of non byte sized elements!");
+    // Verify that we have the correct size...
+    if (NumElements != -1 && NumElements != (int)(yyvsp[-1].ConstVector)->size())
+      GEN_ERROR("Type mismatch: constant sized packed initialized with " +
+                     utostr((yyvsp[-1].ConstVector)->size()) +  " arguments, but has size of " + 
+                     itostr(NumElements) + "!");
+
+    // Verify all elements are correct type!
+    for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) {
+      if (ETy != (*(yyvsp[-1].ConstVector))[i]->getType())
+        GEN_ERROR("Element #" + utostr(i) + " is not of type '" + 
+           ETy->getDescription() +"' as required!\nIt is of type '"+
+           (*(yyvsp[-1].ConstVector))[i]->getType()->getDescription() + "'.");
     }
-    free((yyvsp[(3) - (3)].StrVal));
-    (yyval.ConstVal) = ConstantArray::get(ATy, Vals);
-    delete (yyvsp[(1) - (3)].TypeVal);
+
+    (yyval.ConstVal) = ConstantPacked::get(PTy, *(yyvsp[-1].ConstVector));
+    delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 139:
-#line 1459 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    { // Nonempty unsized arr
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription());
-    const PackedType *PTy = dyn_cast<PackedType>((yyvsp[(1) - (4)].TypeVal)->get());
-    if (PTy == 0)
-      GEN_ERROR("Cannot make packed constant with type: '" + 
-                     (*(yyvsp[(1) - (4)].TypeVal))->getDescription() + "'!");
-    const Type *ETy = PTy->getElementType();
-    int NumElements = PTy->getNumElements();
+#line 1487 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    const StructType *STy = dyn_cast<StructType>((yyvsp[-3].TypeVal)->get());
+    if (STy == 0)
+      GEN_ERROR("Cannot make struct constant with type: '" + 
+                     (*(yyvsp[-3].TypeVal))->getDescription() + "'!");
 
-    // Verify that we have the correct size...
-    if (NumElements != -1 && NumElements != (int)(yyvsp[(3) - (4)].ConstVector)->size())
-      GEN_ERROR("Type mismatch: constant sized packed initialized with " +
-                     utostr((yyvsp[(3) - (4)].ConstVector)->size()) +  " arguments, but has size of " + 
-                     itostr(NumElements) + "!");
+    if ((yyvsp[-1].ConstVector)->size() != STy->getNumContainedTypes())
+      GEN_ERROR("Illegal number of initializers for structure type!");
 
-    // Verify all elements are correct type!
-    for (unsigned i = 0; i < (yyvsp[(3) - (4)].ConstVector)->size(); i++) {
-      if (ETy != (*(yyvsp[(3) - (4)].ConstVector))[i]->getType())
-        GEN_ERROR("Element #" + utostr(i) + " is not of type '" + 
-           ETy->getDescription() +"' as required!\nIt is of type '"+
-           (*(yyvsp[(3) - (4)].ConstVector))[i]->getType()->getDescription() + "'.");
-    }
+    // Check to ensure that constants are compatible with the type initializer!
+    for (unsigned i = 0, e = (yyvsp[-1].ConstVector)->size(); i != e; ++i)
+      if ((*(yyvsp[-1].ConstVector))[i]->getType() != STy->getElementType(i))
+        GEN_ERROR("Expected type '" +
+                       STy->getElementType(i)->getDescription() +
+                       "' for element #" + utostr(i) +
+                       " of structure initializer!");
 
-    (yyval.ConstVal) = ConstantPacked::get(PTy, *(yyvsp[(3) - (4)].ConstVector));
-    delete (yyvsp[(1) - (4)].TypeVal); delete (yyvsp[(3) - (4)].ConstVector);
+    // Check to ensure that Type is not packed
+    if (STy->isPacked())
+      GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'");
+
+    (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[-1].ConstVector));
+    delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 140:
-#line 1487 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1512 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (4)].TypeVal)->get());
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+    const StructType *STy = dyn_cast<StructType>((yyvsp[-2].TypeVal)->get());
     if (STy == 0)
       GEN_ERROR("Cannot make struct constant with type: '" + 
-                     (*(yyvsp[(1) - (4)].TypeVal))->getDescription() + "'!");
+                     (*(yyvsp[-2].TypeVal))->getDescription() + "'!");
 
-    if ((yyvsp[(3) - (4)].ConstVector)->size() != STy->getNumContainedTypes())
+    if (STy->getNumContainedTypes() != 0)
       GEN_ERROR("Illegal number of initializers for structure type!");
 
-    // Check to ensure that constants are compatible with the type initializer!
-    for (unsigned i = 0, e = (yyvsp[(3) - (4)].ConstVector)->size(); i != e; ++i)
-      if ((*(yyvsp[(3) - (4)].ConstVector))[i]->getType() != STy->getElementType(i))
-        GEN_ERROR("Expected type '" +
-                       STy->getElementType(i)->getDescription() +
-                       "' for element #" + utostr(i) +
-                       " of structure initializer!");
-
     // Check to ensure that Type is not packed
     if (STy->isPacked())
       GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'");
 
-    (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[(3) - (4)].ConstVector));
-    delete (yyvsp[(1) - (4)].TypeVal); delete (yyvsp[(3) - (4)].ConstVector);
+    (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>());
+    delete (yyvsp[-2].TypeVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 141:
-#line 1512 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1531 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
-    const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (3)].TypeVal)->get());
+    const StructType *STy = dyn_cast<StructType>((yyvsp[-5].TypeVal)->get());
     if (STy == 0)
       GEN_ERROR("Cannot make struct constant with type: '" + 
-                     (*(yyvsp[(1) - (3)].TypeVal))->getDescription() + "'!");
+                     (*(yyvsp[-5].TypeVal))->getDescription() + "'!");
 
-    if (STy->getNumContainedTypes() != 0)
-      GEN_ERROR("Illegal number of initializers for structure type!");
-
-    // Check to ensure that Type is not packed
-    if (STy->isPacked())
-      GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'");
-
-    (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>());
-    delete (yyvsp[(1) - (3)].TypeVal);
-    CHECK_FOR_ERROR
-  ;}
-    break;
-
-  case 142:
-#line 1531 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (6)].TypeVal)->get());
-    if (STy == 0)
-      GEN_ERROR("Cannot make struct constant with type: '" + 
-                     (*(yyvsp[(1) - (6)].TypeVal))->getDescription() + "'!");
-
-    if ((yyvsp[(4) - (6)].ConstVector)->size() != STy->getNumContainedTypes())
+    if ((yyvsp[-2].ConstVector)->size() != STy->getNumContainedTypes())
       GEN_ERROR("Illegal number of initializers for structure type!");
 
     // Check to ensure that constants are compatible with the type initializer!
-    for (unsigned i = 0, e = (yyvsp[(4) - (6)].ConstVector)->size(); i != e; ++i)
-      if ((*(yyvsp[(4) - (6)].ConstVector))[i]->getType() != STy->getElementType(i))
+    for (unsigned i = 0, e = (yyvsp[-2].ConstVector)->size(); i != e; ++i)
+      if ((*(yyvsp[-2].ConstVector))[i]->getType() != STy->getElementType(i))
         GEN_ERROR("Expected type '" +
                        STy->getElementType(i)->getDescription() +
                        "' for element #" + utostr(i) +
@@ -4047,21 +3819,21 @@
     if (!STy->isPacked())
       GEN_ERROR("Packed Initializer to unpacked type '" + STy->getDescription() + "'");
 
-    (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[(4) - (6)].ConstVector));
-    delete (yyvsp[(1) - (6)].TypeVal); delete (yyvsp[(4) - (6)].ConstVector);
+    (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[-2].ConstVector));
+    delete (yyvsp[-5].TypeVal); delete (yyvsp[-2].ConstVector);
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 143:
-#line 1556 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 142:
+#line 1556 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (5)].TypeVal))->getDescription());
-    const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (5)].TypeVal)->get());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription());
+    const StructType *STy = dyn_cast<StructType>((yyvsp[-4].TypeVal)->get());
     if (STy == 0)
       GEN_ERROR("Cannot make struct constant with type: '" + 
-                     (*(yyvsp[(1) - (5)].TypeVal))->getDescription() + "'!");
+                     (*(yyvsp[-4].TypeVal))->getDescription() + "'!");
 
     if (STy->getNumContainedTypes() != 0)
       GEN_ERROR("Illegal number of initializers for structure type!");
@@ -4071,44 +3843,44 @@
       GEN_ERROR("Packed Initializer to unpacked type '" + STy->getDescription() + "'");
 
     (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>());
-    delete (yyvsp[(1) - (5)].TypeVal);
+    delete (yyvsp[-4].TypeVal);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 143:
+#line 1575 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    const PointerType *PTy = dyn_cast<PointerType>((yyvsp[-1].TypeVal)->get());
+    if (PTy == 0)
+      GEN_ERROR("Cannot make null pointer constant with type: '" + 
+                     (*(yyvsp[-1].TypeVal))->getDescription() + "'!");
+
+    (yyval.ConstVal) = ConstantPointerNull::get(PTy);
+    delete (yyvsp[-1].TypeVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 144:
-#line 1575 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1587 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
-    const PointerType *PTy = dyn_cast<PointerType>((yyvsp[(1) - (2)].TypeVal)->get());
-    if (PTy == 0)
-      GEN_ERROR("Cannot make null pointer constant with type: '" + 
-                     (*(yyvsp[(1) - (2)].TypeVal))->getDescription() + "'!");
-
-    (yyval.ConstVal) = ConstantPointerNull::get(PTy);
-    delete (yyvsp[(1) - (2)].TypeVal);
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    (yyval.ConstVal) = UndefValue::get((yyvsp[-1].TypeVal)->get());
+    delete (yyvsp[-1].TypeVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 145:
-#line 1587 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1594 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
-    (yyval.ConstVal) = UndefValue::get((yyvsp[(1) - (2)].TypeVal)->get());
-    delete (yyvsp[(1) - (2)].TypeVal);
-    CHECK_FOR_ERROR
-  ;}
-    break;
-
-  case 146:
-#line 1594 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
-    const PointerType *Ty = dyn_cast<PointerType>((yyvsp[(1) - (2)].TypeVal)->get());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    const PointerType *Ty = dyn_cast<PointerType>((yyvsp[-1].TypeVal)->get());
     if (Ty == 0)
       GEN_ERROR("Global const reference must be a pointer type!");
 
@@ -4122,7 +3894,7 @@
     Function *SavedCurFn = CurFun.CurrentFunction;
     CurFun.CurrentFunction = 0;
 
-    Value *V = getValNonImprovising(Ty, (yyvsp[(2) - (2)].ValIDVal));
+    Value *V = getValNonImprovising(Ty, (yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
 
     CurFun.CurrentFunction = SavedCurFn;
@@ -4137,14 +3909,14 @@
 
       // First check to see if the forward references value is already created!
       PerModuleInfo::GlobalRefsType::iterator I =
-        CurModule.GlobalRefs.find(std::make_pair(PT, (yyvsp[(2) - (2)].ValIDVal)));
+        CurModule.GlobalRefs.find(std::make_pair(PT, (yyvsp[0].ValIDVal)));
     
       if (I != CurModule.GlobalRefs.end()) {
         V = I->second;             // Placeholder already exists, use it...
-        (yyvsp[(2) - (2)].ValIDVal).destroy();
+        (yyvsp[0].ValIDVal).destroy();
       } else {
         std::string Name;
-        if ((yyvsp[(2) - (2)].ValIDVal).Type == ValID::NameVal) Name = (yyvsp[(2) - (2)].ValIDVal).Name;
+        if ((yyvsp[0].ValIDVal).Type == ValID::NameVal) Name = (yyvsp[0].ValIDVal).Name;
 
         // Create the forward referenced global.
         GlobalValue *GV;
@@ -4159,261 +3931,272 @@
         }
 
         // Keep track of the fact that we have a forward ref to recycle it
-        CurModule.GlobalRefs.insert(std::make_pair(std::make_pair(PT, (yyvsp[(2) - (2)].ValIDVal)), GV));
+        CurModule.GlobalRefs.insert(std::make_pair(std::make_pair(PT, (yyvsp[0].ValIDVal)), GV));
         V = GV;
       }
     }
 
     (yyval.ConstVal) = cast<GlobalValue>(V);
-    delete (yyvsp[(1) - (2)].TypeVal);            // Free the type handle
+    delete (yyvsp[-1].TypeVal);            // Free the type handle
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 146:
+#line 1657 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    if ((yyvsp[-1].TypeVal)->get() != (yyvsp[0].ConstVal)->getType())
+      GEN_ERROR("Mismatched types for constant expression: " + 
+        (*(yyvsp[-1].TypeVal))->getDescription() + " and " + (yyvsp[0].ConstVal)->getType()->getDescription());
+    (yyval.ConstVal) = (yyvsp[0].ConstVal);
+    delete (yyvsp[-1].TypeVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 147:
-#line 1657 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1667 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
-    if ((yyvsp[(1) - (2)].TypeVal)->get() != (yyvsp[(2) - (2)].ConstVal)->getType())
-      GEN_ERROR("Mismatched types for constant expression: " + 
-        (*(yyvsp[(1) - (2)].TypeVal))->getDescription() + " and " + (yyvsp[(2) - (2)].ConstVal)->getType()->getDescription());
-    (yyval.ConstVal) = (yyvsp[(2) - (2)].ConstVal);
-    delete (yyvsp[(1) - (2)].TypeVal);
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    const Type *Ty = (yyvsp[-1].TypeVal)->get();
+    if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty))
+      GEN_ERROR("Cannot create a null initialized value of this type!");
+    (yyval.ConstVal) = Constant::getNullValue(Ty);
+    delete (yyvsp[-1].TypeVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 148:
-#line 1667 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
-    const Type *Ty = (yyvsp[(1) - (2)].TypeVal)->get();
-    if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty))
-      GEN_ERROR("Cannot create a null initialized value of this type!");
-    (yyval.ConstVal) = Constant::getNullValue(Ty);
-    delete (yyvsp[(1) - (2)].TypeVal);
+#line 1677 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {      // integral constants
+    if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val)))
+      GEN_ERROR("Constant value doesn't fit in type!");
+    (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 149:
-#line 1677 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1683 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {      // integral constants
-    if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].SInt64Val)))
+    if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val)))
       GEN_ERROR("Constant value doesn't fit in type!");
-    (yyval.ConstVal) = ConstantInt::get((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].SInt64Val));
+    (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 150:
-#line 1683 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {      // integral constants
-    if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].UInt64Val)))
-      GEN_ERROR("Constant value doesn't fit in type!");
-    (yyval.ConstVal) = ConstantInt::get((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].UInt64Val));
-    CHECK_FOR_ERROR
-  ;}
-    break;
-
-  case 151:
-#line 1689 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1689 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                      // Boolean constants
+    assert(cast<IntegerType>((yyvsp[-1].PrimType))->getBitWidth() == 1 && "Not Bool?");
     (yyval.ConstVal) = ConstantInt::getTrue();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 152:
-#line 1693 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 151:
+#line 1694 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                     // Boolean constants
+    assert(cast<IntegerType>((yyvsp[-1].PrimType))->getBitWidth() == 1 && "Not Bool?");
     (yyval.ConstVal) = ConstantInt::getFalse();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 153:
-#line 1697 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 152:
+#line 1699 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                   // Float & Double constants
-    if (!ConstantFP::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].FPVal)))
+    if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].FPVal)))
       GEN_ERROR("Floating point constant invalid for type!!");
-    (yyval.ConstVal) = ConstantFP::get((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].FPVal));
+    (yyval.ConstVal) = ConstantFP::get((yyvsp[-1].PrimType), (yyvsp[0].FPVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 154:
-#line 1705 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 153:
+#line 1707 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (6)].TypeVal))->getDescription());
-    Constant *Val = (yyvsp[(3) - (6)].ConstVal);
-    const Type *Ty = (yyvsp[(5) - (6)].TypeVal)->get();
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    Constant *Val = (yyvsp[-3].ConstVal);
+    const Type *Ty = (yyvsp[-1].TypeVal)->get();
     if (!Val->getType()->isFirstClassType())
       GEN_ERROR("cast constant expression from a non-primitive type: '" +
                      Val->getType()->getDescription() + "'!");
     if (!Ty->isFirstClassType())
       GEN_ERROR("cast constant expression to a non-primitive type: '" +
                 Ty->getDescription() + "'!");
-    (yyval.ConstVal) = ConstantExpr::getCast((yyvsp[(1) - (6)].CastOpVal), (yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].TypeVal)->get());
-    delete (yyvsp[(5) - (6)].TypeVal);
+    (yyval.ConstVal) = ConstantExpr::getCast((yyvsp[-5].CastOpVal), (yyvsp[-3].ConstVal), (yyvsp[-1].TypeVal)->get());
+    delete (yyvsp[-1].TypeVal);
   ;}
     break;
 
-  case 155:
-#line 1719 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 154:
+#line 1721 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!isa<PointerType>((yyvsp[(3) - (5)].ConstVal)->getType()))
+    if (!isa<PointerType>((yyvsp[-2].ConstVal)->getType()))
       GEN_ERROR("GetElementPtr requires a pointer operand!");
 
     const Type *IdxTy =
-      GetElementPtrInst::getIndexedType((yyvsp[(3) - (5)].ConstVal)->getType(), *(yyvsp[(4) - (5)].ValueList), true);
+      GetElementPtrInst::getIndexedType((yyvsp[-2].ConstVal)->getType(), *(yyvsp[-1].ValueList), true);
     if (!IdxTy)
       GEN_ERROR("Index list invalid for constant getelementptr!");
 
     std::vector<Constant*> IdxVec;
-    for (unsigned i = 0, e = (yyvsp[(4) - (5)].ValueList)->size(); i != e; ++i)
-      if (Constant *C = dyn_cast<Constant>((*(yyvsp[(4) - (5)].ValueList))[i]))
+    for (unsigned i = 0, e = (yyvsp[-1].ValueList)->size(); i != e; ++i)
+      if (Constant *C = dyn_cast<Constant>((*(yyvsp[-1].ValueList))[i]))
         IdxVec.push_back(C);
       else
         GEN_ERROR("Indices to constant getelementptr must be constants!");
 
-    delete (yyvsp[(4) - (5)].ValueList);
+    delete (yyvsp[-1].ValueList);
 
-    (yyval.ConstVal) = ConstantExpr::getGetElementPtr((yyvsp[(3) - (5)].ConstVal), IdxVec);
+    (yyval.ConstVal) = ConstantExpr::getGetElementPtr((yyvsp[-2].ConstVal), IdxVec);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 155:
+#line 1742 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    if ((yyvsp[-5].ConstVal)->getType() != Type::Int1Ty)
+      GEN_ERROR("Select condition must be of boolean type!");
+    if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
+      GEN_ERROR("Select operand types must match!");
+    (yyval.ConstVal) = ConstantExpr::getSelect((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 156:
-#line 1740 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1750 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if ((yyvsp[(3) - (8)].ConstVal)->getType() != Type::Int1Ty)
-      GEN_ERROR("Select condition must be of boolean type!");
-    if ((yyvsp[(5) - (8)].ConstVal)->getType() != (yyvsp[(7) - (8)].ConstVal)->getType())
-      GEN_ERROR("Select operand types must match!");
-    (yyval.ConstVal) = ConstantExpr::getSelect((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal));
-    CHECK_FOR_ERROR
+    if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
+      GEN_ERROR("Binary operator types must match!");
+    CHECK_FOR_ERROR;
+    (yyval.ConstVal) = ConstantExpr::get((yyvsp[-5].BinaryOpVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
   ;}
     break;
 
   case 157:
-#line 1748 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1756 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType())
-      GEN_ERROR("Binary operator types must match!");
-    CHECK_FOR_ERROR;
-    (yyval.ConstVal) = ConstantExpr::get((yyvsp[(1) - (6)].BinaryOpVal), (yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal));
-  ;}
-    break;
-
-  case 158:
-#line 1754 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType())
+    if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
       GEN_ERROR("Logical operator types must match!");
-    if (!(yyvsp[(3) - (6)].ConstVal)->getType()->isIntegral()) {
-      if (!isa<PackedType>((yyvsp[(3) - (6)].ConstVal)->getType()) || 
-          !cast<PackedType>((yyvsp[(3) - (6)].ConstVal)->getType())->getElementType()->isIntegral())
+    if (!(yyvsp[-3].ConstVal)->getType()->isIntegral()) {
+      if (!isa<PackedType>((yyvsp[-3].ConstVal)->getType()) || 
+          !cast<PackedType>((yyvsp[-3].ConstVal)->getType())->getElementType()->isIntegral())
         GEN_ERROR("Logical operator requires integral operands!");
     }
-    (yyval.ConstVal) = ConstantExpr::get((yyvsp[(1) - (6)].BinaryOpVal), (yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal));
+    (yyval.ConstVal) = ConstantExpr::get((yyvsp[-5].BinaryOpVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 159:
-#line 1765 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 158:
+#line 1767 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
+    if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
       GEN_ERROR("icmp operand types must match!");
-    (yyval.ConstVal) = ConstantExpr::getICmp((yyvsp[(2) - (7)].IPredicate), (yyvsp[(4) - (7)].ConstVal), (yyvsp[(6) - (7)].ConstVal));
+    (yyval.ConstVal) = ConstantExpr::getICmp((yyvsp[-5].IPredicate), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
+  ;}
+    break;
+
+  case 159:
+#line 1772 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
+      GEN_ERROR("fcmp operand types must match!");
+    (yyval.ConstVal) = ConstantExpr::getFCmp((yyvsp[-5].FPredicate), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
   ;}
     break;
 
   case 160:
-#line 1770 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1777 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
-      GEN_ERROR("fcmp operand types must match!");
-    (yyval.ConstVal) = ConstantExpr::getFCmp((yyvsp[(2) - (7)].FPredicate), (yyvsp[(4) - (7)].ConstVal), (yyvsp[(6) - (7)].ConstVal));
+    if ((yyvsp[-1].ConstVal)->getType() != Type::Int8Ty)
+      GEN_ERROR("Shift count for shift constant must be i8 type!");
+    if (!(yyvsp[-3].ConstVal)->getType()->isInteger())
+      GEN_ERROR("Shift constant expression requires integer operand!");
+    CHECK_FOR_ERROR;
+    (yyval.ConstVal) = ConstantExpr::get((yyvsp[-5].OtherOpVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
+    CHECK_FOR_ERROR
   ;}
     break;
 
   case 161:
-#line 1775 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1786 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if ((yyvsp[(5) - (6)].ConstVal)->getType() != Type::Int8Ty)
-      GEN_ERROR("Shift count for shift constant must be i8 type!");
-    if (!(yyvsp[(3) - (6)].ConstVal)->getType()->isInteger())
-      GEN_ERROR("Shift constant expression requires integer operand!");
-    CHECK_FOR_ERROR;
-    (yyval.ConstVal) = ConstantExpr::get((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal));
+    if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
+      GEN_ERROR("Invalid extractelement operands!");
+    (yyval.ConstVal) = ConstantExpr::getExtractElement((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 162:
-#line 1784 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1792 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!ExtractElementInst::isValidOperands((yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal)))
-      GEN_ERROR("Invalid extractelement operands!");
-    (yyval.ConstVal) = ConstantExpr::getExtractElement((yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal));
+    if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
+      GEN_ERROR("Invalid insertelement operands!");
+    (yyval.ConstVal) = ConstantExpr::getInsertElement((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 163:
-#line 1790 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1798 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!InsertElementInst::isValidOperands((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal)))
-      GEN_ERROR("Invalid insertelement operands!");
-    (yyval.ConstVal) = ConstantExpr::getInsertElement((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal));
+    if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
+      GEN_ERROR("Invalid shufflevector operands!");
+    (yyval.ConstVal) = ConstantExpr::getShuffleVector((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 164:
-#line 1796 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1807 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!ShuffleVectorInst::isValidOperands((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal)))
-      GEN_ERROR("Invalid shufflevector operands!");
-    (yyval.ConstVal) = ConstantExpr::getShuffleVector((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal));
+    ((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 165:
-#line 1805 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1811 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    ((yyval.ConstVector) = (yyvsp[(1) - (3)].ConstVector))->push_back((yyvsp[(3) - (3)].ConstVal));
+    (yyval.ConstVector) = new std::vector<Constant*>();
+    (yyval.ConstVector)->push_back((yyvsp[0].ConstVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 166:
-#line 1809 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    (yyval.ConstVector) = new std::vector<Constant*>();
-    (yyval.ConstVector)->push_back((yyvsp[(1) - (1)].ConstVal));
-    CHECK_FOR_ERROR
-  ;}
-    break;
-
-  case 167:
-#line 1817 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1819 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = false; ;}
     break;
 
-  case 168:
-#line 1817 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 167:
+#line 1819 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = true; ;}
     break;
 
+  case 168:
+#line 1830 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
+    CurModule.ModuleDone();
+    CHECK_FOR_ERROR;
+  ;}
+    break;
+
   case 169:
-#line 1828 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1835 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
     CurModule.ModuleDone();
@@ -4421,49 +4204,40 @@
   ;}
     break;
 
-  case 170:
-#line 1833 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
-    CurModule.ModuleDone();
-    CHECK_FOR_ERROR;
-  ;}
-    break;
-
-  case 173:
-#line 1846 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 172:
+#line 1848 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { CurFun.isDeclare = false ;}
     break;
 
-  case 174:
-#line 1846 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 173:
+#line 1848 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     CurFun.FunctionDone();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 175:
-#line 1850 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 174:
+#line 1852 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { CurFun.isDeclare = true; ;}
     break;
 
+  case 175:
+#line 1852 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
   case 176:
-#line 1850 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1855 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 177:
-#line 1853 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    CHECK_FOR_ERROR
-  ;}
-    break;
-
-  case 178:
-#line 1856 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1858 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     // Emit an error if there are any unresolved types left.
     if (!CurModule.LateResolveTypes.empty()) {
@@ -4478,11 +4252,11 @@
   ;}
     break;
 
-  case 179:
-#line 1868 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 178:
+#line 1870 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (3)].TypeVal))->getDescription());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
     // Eagerly resolve types.  This is not an optimization, this is a
     // requirement that is due to the fact that we could have this:
     //
@@ -4492,110 +4266,110 @@
     // If types are not resolved eagerly, then the two types will not be
     // determined to be the same type!
     //
-    ResolveTypeTo((yyvsp[(1) - (3)].StrVal), *(yyvsp[(3) - (3)].TypeVal));
+    ResolveTypeTo((yyvsp[-2].StrVal), *(yyvsp[0].TypeVal));
 
-    if (!setTypeName(*(yyvsp[(3) - (3)].TypeVal), (yyvsp[(1) - (3)].StrVal)) && !(yyvsp[(1) - (3)].StrVal)) {
+    if (!setTypeName(*(yyvsp[0].TypeVal), (yyvsp[-2].StrVal)) && !(yyvsp[-2].StrVal)) {
       CHECK_FOR_ERROR
       // If this is a named type that is not a redefinition, add it to the slot
       // table.
-      CurModule.Types.push_back(*(yyvsp[(3) - (3)].TypeVal));
+      CurModule.Types.push_back(*(yyvsp[0].TypeVal));
     }
 
-    delete (yyvsp[(3) - (3)].TypeVal);
+    delete (yyvsp[0].TypeVal);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 179:
+#line 1894 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    ResolveTypeTo((yyvsp[-2].StrVal), (yyvsp[0].PrimType));
+
+    if (!setTypeName((yyvsp[0].PrimType), (yyvsp[-2].StrVal)) && !(yyvsp[-2].StrVal)) {
+      CHECK_FOR_ERROR
+      // If this is a named type that is not a redefinition, add it to the slot
+      // table.
+      CurModule.Types.push_back((yyvsp[0].PrimType));
+    }
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 180:
-#line 1892 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    ResolveTypeTo((yyvsp[(1) - (3)].StrVal), (yyvsp[(3) - (3)].PrimType));
-
-    if (!setTypeName((yyvsp[(3) - (3)].PrimType), (yyvsp[(1) - (3)].StrVal)) && !(yyvsp[(1) - (3)].StrVal)) {
-      CHECK_FOR_ERROR
-      // If this is a named type that is not a redefinition, add it to the slot
-      // table.
-      CurModule.Types.push_back((yyvsp[(3) - (3)].PrimType));
-    }
+#line 1905 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    { /* "Externally Visible" Linkage */
+    if ((yyvsp[0].ConstVal) == 0) 
+      GEN_ERROR("Global value initializer is not a constant!");
+    CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::ExternalLinkage,
+                                (yyvsp[-2].Visibility), (yyvsp[-1].BoolVal), (yyvsp[0].ConstVal)->getType(), (yyvsp[0].ConstVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 181:
-#line 1903 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    { /* "Externally Visible" Linkage */
-    if ((yyvsp[(4) - (4)].ConstVal) == 0) 
-      GEN_ERROR("Global value initializer is not a constant!");
-    CurGV = ParseGlobalVariable((yyvsp[(1) - (4)].StrVal), GlobalValue::ExternalLinkage,
-                                (yyvsp[(2) - (4)].Visibility), (yyvsp[(3) - (4)].BoolVal), (yyvsp[(4) - (4)].ConstVal)->getType(), (yyvsp[(4) - (4)].ConstVal));
-    CHECK_FOR_ERROR
+#line 1911 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    CurGV = 0;
   ;}
     break;
 
   case 182:
-#line 1909 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1914 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    CurGV = 0;
+    if ((yyvsp[0].ConstVal) == 0) 
+      GEN_ERROR("Global value initializer is not a constant!");
+    CurGV = ParseGlobalVariable((yyvsp[-4].StrVal), (yyvsp[-3].Linkage), (yyvsp[-2].Visibility), (yyvsp[-1].BoolVal), (yyvsp[0].ConstVal)->getType(), (yyvsp[0].ConstVal));
+    CHECK_FOR_ERROR
   ;}
     break;
 
   case 183:
-#line 1912 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1919 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if ((yyvsp[(5) - (5)].ConstVal) == 0) 
-      GEN_ERROR("Global value initializer is not a constant!");
-    CurGV = ParseGlobalVariable((yyvsp[(1) - (5)].StrVal), (yyvsp[(2) - (5)].Linkage), (yyvsp[(3) - (5)].Visibility), (yyvsp[(4) - (5)].BoolVal), (yyvsp[(5) - (5)].ConstVal)->getType(), (yyvsp[(5) - (5)].ConstVal));
-    CHECK_FOR_ERROR
+    CurGV = 0;
   ;}
     break;
 
   case 184:
-#line 1917 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1922 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    CurGV = 0;
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
+    CurGV = ParseGlobalVariable((yyvsp[-4].StrVal), (yyvsp[-3].Linkage), (yyvsp[-2].Visibility), (yyvsp[-1].BoolVal), *(yyvsp[0].TypeVal), 0);
+    CHECK_FOR_ERROR
+    delete (yyvsp[0].TypeVal);
   ;}
     break;
 
   case 185:
-#line 1920 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (5)].TypeVal))->getDescription());
-    CurGV = ParseGlobalVariable((yyvsp[(1) - (5)].StrVal), (yyvsp[(2) - (5)].Linkage), (yyvsp[(3) - (5)].Visibility), (yyvsp[(4) - (5)].BoolVal), *(yyvsp[(5) - (5)].TypeVal), 0);
-    CHECK_FOR_ERROR
-    delete (yyvsp[(5) - (5)].TypeVal);
-  ;}
-    break;
-
-  case 186:
-#line 1926 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1928 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV = 0;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 187:
-#line 1930 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 186:
+#line 1932 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { 
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 188:
-#line 1933 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 187:
+#line 1935 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 189:
-#line 1939 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 188:
+#line 1941 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
   const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm();
-  char *EndStr = UnEscapeLexed((yyvsp[(1) - (1)].StrVal), true);
-  std::string NewAsm((yyvsp[(1) - (1)].StrVal), EndStr);
-  free((yyvsp[(1) - (1)].StrVal));
+  char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true);
+  std::string NewAsm((yyvsp[0].StrVal), EndStr);
+  free((yyvsp[0].StrVal));
 
   if (AsmSoFar.empty())
     CurModule.CurrentModule->setModuleInlineAsm(NewAsm);
@@ -4605,123 +4379,136 @@
 ;}
     break;
 
-  case 190:
-#line 1952 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 189:
+#line 1954 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Endianness) = Module::BigEndian; ;}
     break;
 
-  case 191:
-#line 1953 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 190:
+#line 1955 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Endianness) = Module::LittleEndian; ;}
     break;
 
-  case 192:
-#line 1955 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 191:
+#line 1957 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    CurModule.CurrentModule->setEndianness((yyvsp[(3) - (3)].Endianness));
+    CurModule.CurrentModule->setEndianness((yyvsp[0].Endianness));
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 192:
+#line 1961 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    if ((yyvsp[0].UInt64Val) == 32)
+      CurModule.CurrentModule->setPointerSize(Module::Pointer32);
+    else if ((yyvsp[0].UInt64Val) == 64)
+      CurModule.CurrentModule->setPointerSize(Module::Pointer64);
+    else
+      GEN_ERROR("Invalid pointer size: '" + utostr((yyvsp[0].UInt64Val)) + "'!");
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 193:
-#line 1959 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1970 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if ((yyvsp[(3) - (3)].UInt64Val) == 32)
-      CurModule.CurrentModule->setPointerSize(Module::Pointer32);
-    else if ((yyvsp[(3) - (3)].UInt64Val) == 64)
-      CurModule.CurrentModule->setPointerSize(Module::Pointer64);
-    else
-      GEN_ERROR("Invalid pointer size: '" + utostr((yyvsp[(3) - (3)].UInt64Val)) + "'!");
-    CHECK_FOR_ERROR
+    CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal));
+    free((yyvsp[0].StrVal));
   ;}
     break;
 
   case 194:
-#line 1968 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1974 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    CurModule.CurrentModule->setTargetTriple((yyvsp[(3) - (3)].StrVal));
-    free((yyvsp[(3) - (3)].StrVal));
+    CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal));
+    free((yyvsp[0].StrVal));
   ;}
     break;
 
-  case 195:
-#line 1972 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 196:
+#line 1981 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    CurModule.CurrentModule->setDataLayout((yyvsp[(3) - (3)].StrVal));
-    free((yyvsp[(3) - (3)].StrVal));
-  ;}
+          CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal));
+          free((yyvsp[0].StrVal));
+          CHECK_FOR_ERROR
+        ;}
     break;
 
   case 197:
-#line 1979 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1986 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-          CurModule.CurrentModule->addLibrary((yyvsp[(3) - (3)].StrVal));
-          free((yyvsp[(3) - (3)].StrVal));
+          CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal));
+          free((yyvsp[0].StrVal));
           CHECK_FOR_ERROR
         ;}
     break;
 
   case 198:
-#line 1984 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-          CurModule.CurrentModule->addLibrary((yyvsp[(1) - (1)].StrVal));
-          free((yyvsp[(1) - (1)].StrVal));
-          CHECK_FOR_ERROR
-        ;}
-    break;
-
-  case 199:
-#line 1989 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 1991 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
           CHECK_FOR_ERROR
         ;}
     break;
 
-  case 203:
-#line 1999 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 202:
+#line 2001 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = 0; ;}
     break;
 
-  case 204:
-#line 2001 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 203:
+#line 2003 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
-    if (*(yyvsp[(3) - (5)].TypeVal) == Type::VoidTy)
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+    if (*(yyvsp[-2].TypeVal) == Type::VoidTy)
       GEN_ERROR("void typed arguments are invalid!");
-    ArgListEntry E; E.Attrs = (yyvsp[(4) - (5)].ParamAttrs); E.Ty = (yyvsp[(3) - (5)].TypeVal); E.Name = (yyvsp[(5) - (5)].StrVal);
-    (yyval.ArgList) = (yyvsp[(1) - (5)].ArgList);
-    (yyvsp[(1) - (5)].ArgList)->push_back(E);
+    ArgListEntry E; E.Attrs = (yyvsp[-1].ParamAttrs); E.Ty = (yyvsp[-2].TypeVal); E.Name = (yyvsp[0].StrVal);
+    (yyval.ArgList) = (yyvsp[-4].ArgList);
+    (yyvsp[-4].ArgList)->push_back(E);
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 205:
-#line 2011 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 204:
+#line 2013 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
-    if (*(yyvsp[(1) - (3)].TypeVal) == Type::VoidTy)
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+    if (*(yyvsp[-2].TypeVal) == Type::VoidTy)
       GEN_ERROR("void typed arguments are invalid!");
-    ArgListEntry E; E.Attrs = (yyvsp[(2) - (3)].ParamAttrs); E.Ty = (yyvsp[(1) - (3)].TypeVal); E.Name = (yyvsp[(3) - (3)].StrVal);
+    ArgListEntry E; E.Attrs = (yyvsp[-1].ParamAttrs); E.Ty = (yyvsp[-2].TypeVal); E.Name = (yyvsp[0].StrVal);
     (yyval.ArgList) = new ArgListType;
     (yyval.ArgList)->push_back(E);
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 206:
-#line 2022 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 205:
+#line 2024 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    (yyval.ArgList) = (yyvsp[(1) - (1)].ArgList);
+    (yyval.ArgList) = (yyvsp[0].ArgList);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 206:
+#line 2028 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ArgList) = (yyvsp[-2].ArgList);
+    struct ArgListEntry E;
+    E.Ty = new PATypeHolder(Type::VoidTy);
+    E.Name = 0;
+    E.Attrs = FunctionType::NoAttributeSet;
+    (yyval.ArgList)->push_back(E);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 207:
-#line 2026 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2037 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    (yyval.ArgList) = (yyvsp[(1) - (3)].ArgList);
+    (yyval.ArgList) = new ArgListType;
     struct ArgListEntry E;
     E.Ty = new PATypeHolder(Type::VoidTy);
     E.Name = 0;
@@ -4732,43 +4519,30 @@
     break;
 
   case 208:
-#line 2035 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    (yyval.ArgList) = new ArgListType;
-    struct ArgListEntry E;
-    E.Ty = new PATypeHolder(Type::VoidTy);
-    E.Name = 0;
-    E.Attrs = FunctionType::NoAttributeSet;
-    (yyval.ArgList)->push_back(E);
-    CHECK_FOR_ERROR
-  ;}
-    break;
-
-  case 209:
-#line 2044 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2046 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = 0;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 210:
-#line 2050 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 209:
+#line 2052 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-  UnEscapeLexed((yyvsp[(3) - (9)].StrVal));
-  std::string FunctionName((yyvsp[(3) - (9)].StrVal));
-  free((yyvsp[(3) - (9)].StrVal));  // Free strdup'd memory!
+  UnEscapeLexed((yyvsp[-6].StrVal));
+  std::string FunctionName((yyvsp[-6].StrVal));
+  free((yyvsp[-6].StrVal));  // Free strdup'd memory!
   
   // Check the function result for abstractness if this is a define. We should
   // have no abstract types at this point
-  if (!CurFun.isDeclare && CurModule.TypeIsUnresolved((yyvsp[(2) - (9)].TypeVal)))
-    GEN_ERROR("Reference to abstract result: "+ (yyvsp[(2) - (9)].TypeVal)->get()->getDescription());
+  if (!CurFun.isDeclare && CurModule.TypeIsUnresolved((yyvsp[-7].TypeVal)))
+    GEN_ERROR("Reference to abstract result: "+ (yyvsp[-7].TypeVal)->get()->getDescription());
 
   std::vector<const Type*> ParamTypeList;
   std::vector<FunctionType::ParameterAttributes> ParamAttrs;
-  ParamAttrs.push_back((yyvsp[(7) - (9)].ParamAttrs));
-  if ((yyvsp[(5) - (9)].ArgList)) {   // If there are arguments...
-    for (ArgListType::iterator I = (yyvsp[(5) - (9)].ArgList)->begin(); I != (yyvsp[(5) - (9)].ArgList)->end(); ++I) {
+  ParamAttrs.push_back((yyvsp[-2].ParamAttrs));
+  if ((yyvsp[-4].ArgList)) {   // If there are arguments...
+    for (ArgListType::iterator I = (yyvsp[-4].ArgList)->begin(); I != (yyvsp[-4].ArgList)->end(); ++I) {
       const Type* Ty = I->Ty->get();
       if (!CurFun.isDeclare && CurModule.TypeIsUnresolved(I->Ty))
         GEN_ERROR("Reference to abstract argument: " + Ty->getDescription());
@@ -4781,10 +4555,10 @@
   bool isVarArg = ParamTypeList.size() && ParamTypeList.back() == Type::VoidTy;
   if (isVarArg) ParamTypeList.pop_back();
 
-  FunctionType *FT = FunctionType::get(*(yyvsp[(2) - (9)].TypeVal), ParamTypeList, isVarArg,
+  FunctionType *FT = FunctionType::get(*(yyvsp[-7].TypeVal), ParamTypeList, isVarArg,
                                        ParamAttrs);
   const PointerType *PFT = PointerType::get(FT);
-  delete (yyvsp[(2) - (9)].TypeVal);
+  delete (yyvsp[-7].TypeVal);
 
   ValID ID;
   if (!FunctionName.empty()) {
@@ -4829,24 +4603,24 @@
     Fn->setLinkage(CurFun.Linkage);
     Fn->setVisibility(CurFun.Visibility);
   }
-  Fn->setCallingConv((yyvsp[(1) - (9)].UIntVal));
-  Fn->setAlignment((yyvsp[(9) - (9)].UIntVal));
-  if ((yyvsp[(8) - (9)].StrVal)) {
-    Fn->setSection((yyvsp[(8) - (9)].StrVal));
-    free((yyvsp[(8) - (9)].StrVal));
+  Fn->setCallingConv((yyvsp[-8].UIntVal));
+  Fn->setAlignment((yyvsp[0].UIntVal));
+  if ((yyvsp[-1].StrVal)) {
+    Fn->setSection((yyvsp[-1].StrVal));
+    free((yyvsp[-1].StrVal));
   }
 
   // Add all of the arguments we parsed to the function...
-  if ((yyvsp[(5) - (9)].ArgList)) {                     // Is null if empty...
+  if ((yyvsp[-4].ArgList)) {                     // Is null if empty...
     if (isVarArg) {  // Nuke the last entry
-      assert((yyvsp[(5) - (9)].ArgList)->back().Ty->get() == Type::VoidTy && (yyvsp[(5) - (9)].ArgList)->back().Name == 0&&
+      assert((yyvsp[-4].ArgList)->back().Ty->get() == Type::VoidTy && (yyvsp[-4].ArgList)->back().Name == 0&&
              "Not a varargs marker!");
-      delete (yyvsp[(5) - (9)].ArgList)->back().Ty;
-      (yyvsp[(5) - (9)].ArgList)->pop_back();  // Delete the last entry
+      delete (yyvsp[-4].ArgList)->back().Ty;
+      (yyvsp[-4].ArgList)->pop_back();  // Delete the last entry
     }
     Function::arg_iterator ArgIt = Fn->arg_begin();
     unsigned Idx = 1;
-    for (ArgListType::iterator I = (yyvsp[(5) - (9)].ArgList)->begin(); I != (yyvsp[(5) - (9)].ArgList)->end(); ++I, ++ArgIt) {
+    for (ArgListType::iterator I = (yyvsp[-4].ArgList)->begin(); I != (yyvsp[-4].ArgList)->end(); ++I, ++ArgIt) {
       delete I->Ty;                          // Delete the typeholder...
       setValueName(ArgIt, I->Name);           // Insert arg into symtab...
       CHECK_FOR_ERROR
@@ -4854,128 +4628,128 @@
       Idx++;
     }
 
-    delete (yyvsp[(5) - (9)].ArgList);                     // We're now done with the argument list
+    delete (yyvsp[-4].ArgList);                     // We're now done with the argument list
   }
   CHECK_FOR_ERROR
 ;}
     break;
 
-  case 213:
-#line 2157 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 212:
+#line 2159 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.FunctionVal) = CurFun.CurrentFunction;
 
   // Make sure that we keep track of the linkage type even if there was a
   // previous "declare".
-  (yyval.FunctionVal)->setLinkage((yyvsp[(1) - (4)].Linkage));
-  (yyval.FunctionVal)->setVisibility((yyvsp[(2) - (4)].Visibility));
+  (yyval.FunctionVal)->setLinkage((yyvsp[-3].Linkage));
+  (yyval.FunctionVal)->setVisibility((yyvsp[-2].Visibility));
 ;}
     break;
 
-  case 216:
-#line 2168 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 215:
+#line 2170 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-  (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
+  (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
   CHECK_FOR_ERROR
 ;}
     break;
 
-  case 217:
-#line 2173 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 216:
+#line 2175 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    CurFun.CurrentFunction->setLinkage((yyvsp[(1) - (3)].Linkage));
-    CurFun.CurrentFunction->setVisibility((yyvsp[(2) - (3)].Visibility));
+    CurFun.CurrentFunction->setLinkage((yyvsp[-2].Linkage));
+    CurFun.CurrentFunction->setVisibility((yyvsp[-1].Visibility));
     (yyval.FunctionVal) = CurFun.CurrentFunction;
     CurFun.FunctionDone();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 218:
-#line 2185 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 217:
+#line 2187 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 219:
-#line 2189 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 218:
+#line 2191 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 220:
-#line 2194 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 219:
+#line 2196 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {    // A reference to a direct constant
-    (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].SInt64Val));
+    (yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val));
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 220:
+#line 2200 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 221:
-#line 2198 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].UInt64Val));
+#line 2204 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {                     // Perhaps it's an FP constant?
+    (yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 222:
-#line 2202 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {                     // Perhaps it's an FP constant?
-    (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].FPVal));
-    CHECK_FOR_ERROR
-  ;}
-    break;
-
-  case 223:
-#line 2206 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2208 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create(ConstantInt::getTrue());
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 224:
-#line 2210 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 223:
+#line 2212 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create(ConstantInt::getFalse());
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 225:
-#line 2214 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 224:
+#line 2216 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createNull();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 226:
-#line 2218 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 225:
+#line 2220 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createUndef();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 227:
-#line 2222 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 226:
+#line 2224 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {     // A vector zero constant.
     (yyval.ValIDVal) = ValID::createZeroInit();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 228:
-#line 2226 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 227:
+#line 2228 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized packed vector
-    const Type *ETy = (*(yyvsp[(2) - (3)].ConstVector))[0]->getType();
-    int NumElements = (yyvsp[(2) - (3)].ConstVector)->size(); 
+    const Type *ETy = (*(yyvsp[-1].ConstVector))[0]->getType();
+    int NumElements = (yyvsp[-1].ConstVector)->size(); 
     
     PackedType* pt = PackedType::get(ETy, NumElements);
     PATypeHolder* PTy = new PATypeHolder(
@@ -4987,113 +4761,113 @@
                                          );
     
     // Verify all elements are correct type!
-    for (unsigned i = 0; i < (yyvsp[(2) - (3)].ConstVector)->size(); i++) {
-      if (ETy != (*(yyvsp[(2) - (3)].ConstVector))[i]->getType())
+    for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) {
+      if (ETy != (*(yyvsp[-1].ConstVector))[i]->getType())
         GEN_ERROR("Element #" + utostr(i) + " is not of type '" + 
                      ETy->getDescription() +"' as required!\nIt is of type '" +
-                     (*(yyvsp[(2) - (3)].ConstVector))[i]->getType()->getDescription() + "'.");
+                     (*(yyvsp[-1].ConstVector))[i]->getType()->getDescription() + "'.");
     }
 
-    (yyval.ValIDVal) = ValID::create(ConstantPacked::get(pt, *(yyvsp[(2) - (3)].ConstVector)));
-    delete PTy; delete (yyvsp[(2) - (3)].ConstVector);
+    (yyval.ValIDVal) = ValID::create(ConstantPacked::get(pt, *(yyvsp[-1].ConstVector)));
+    delete PTy; delete (yyvsp[-1].ConstVector);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 228:
+#line 2253 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 229:
-#line 2251 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2257 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].ConstVal));
+    char *End = UnEscapeLexed((yyvsp[-2].StrVal), true);
+    std::string AsmStr = std::string((yyvsp[-2].StrVal), End);
+    End = UnEscapeLexed((yyvsp[0].StrVal), true);
+    std::string Constraints = std::string((yyvsp[0].StrVal), End);
+    (yyval.ValIDVal) = ValID::createInlineAsm(AsmStr, Constraints, (yyvsp[-3].BoolVal));
+    free((yyvsp[-2].StrVal));
+    free((yyvsp[0].StrVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 230:
-#line 2255 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    char *End = UnEscapeLexed((yyvsp[(3) - (5)].StrVal), true);
-    std::string AsmStr = std::string((yyvsp[(3) - (5)].StrVal), End);
-    End = UnEscapeLexed((yyvsp[(5) - (5)].StrVal), true);
-    std::string Constraints = std::string((yyvsp[(5) - (5)].StrVal), End);
-    (yyval.ValIDVal) = ValID::createInlineAsm(AsmStr, Constraints, (yyvsp[(2) - (5)].BoolVal));
-    free((yyvsp[(3) - (5)].StrVal));
-    free((yyvsp[(5) - (5)].StrVal));
+#line 2271 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {  // Is it an integer reference...?
+    (yyval.ValIDVal) = ValID::create((yyvsp[0].SIntVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 231:
-#line 2269 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {  // Is it an integer reference...?
-    (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].SIntVal));
+#line 2275 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {                   // Is it a named reference...?
+    (yyval.ValIDVal) = ValID::create((yyvsp[0].StrVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 232:
-#line 2273 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {                   // Is it a named reference...?
-    (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].StrVal));
+  case 234:
+#line 2287 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    (yyval.ValueVal) = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal)); 
+    delete (yyvsp[-1].TypeVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 235:
-#line 2285 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2296 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
-    (yyval.ValueVal) = getVal(*(yyvsp[(1) - (2)].TypeVal), (yyvsp[(2) - (2)].ValIDVal)); 
-    delete (yyvsp[(1) - (2)].TypeVal);
+    (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 236:
-#line 2294 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
+#line 2300 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    { // Do not allow functions with 0 basic blocks   
+    (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 237:
-#line 2298 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    { // Do not allow functions with 0 basic blocks   
-    (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
+#line 2309 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal));
+    CHECK_FOR_ERROR
+    InsertValue((yyvsp[0].TermInstVal));
+
+    (yyvsp[-2].BasicBlockVal)->getInstList().push_back((yyvsp[0].TermInstVal));
+    InsertValue((yyvsp[-2].BasicBlockVal));
+    (yyval.BasicBlockVal) = (yyvsp[-2].BasicBlockVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 238:
-#line 2307 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2320 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    setValueName((yyvsp[(3) - (3)].TermInstVal), (yyvsp[(2) - (3)].StrVal));
-    CHECK_FOR_ERROR
-    InsertValue((yyvsp[(3) - (3)].TermInstVal));
-
-    (yyvsp[(1) - (3)].BasicBlockVal)->getInstList().push_back((yyvsp[(3) - (3)].TermInstVal));
-    InsertValue((yyvsp[(1) - (3)].BasicBlockVal));
-    (yyval.BasicBlockVal) = (yyvsp[(1) - (3)].BasicBlockVal);
+    if (CastInst *CI1 = dyn_cast<CastInst>((yyvsp[0].InstVal)))
+      if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0)))
+        if (CI2->getParent() == 0)
+          (yyvsp[-1].BasicBlockVal)->getInstList().push_back(CI2);
+    (yyvsp[-1].BasicBlockVal)->getInstList().push_back((yyvsp[0].InstVal));
+    (yyval.BasicBlockVal) = (yyvsp[-1].BasicBlockVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 239:
-#line 2318 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (CastInst *CI1 = dyn_cast<CastInst>((yyvsp[(2) - (2)].InstVal)))
-      if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0)))
-        if (CI2->getParent() == 0)
-          (yyvsp[(1) - (2)].BasicBlockVal)->getInstList().push_back(CI2);
-    (yyvsp[(1) - (2)].BasicBlockVal)->getInstList().push_back((yyvsp[(2) - (2)].InstVal));
-    (yyval.BasicBlockVal) = (yyvsp[(1) - (2)].BasicBlockVal);
-    CHECK_FOR_ERROR
-  ;}
-    break;
-
-  case 240:
-#line 2327 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2329 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BasicBlockVal) = getBBVal(ValID::create((int)CurFun.NextBBNum++), true);
     CHECK_FOR_ERROR
@@ -5108,10 +4882,10 @@
   ;}
     break;
 
-  case 241:
-#line 2339 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 240:
+#line 2341 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    (yyval.BasicBlockVal) = getBBVal(ValID::create((yyvsp[(1) - (1)].StrVal)), true);
+    (yyval.BasicBlockVal) = getBBVal(ValID::create((yyvsp[0].StrVal)), true);
     CHECK_FOR_ERROR
 
     // Make sure to move the basic block to the correct location in the
@@ -5124,73 +4898,74 @@
   ;}
     break;
 
-  case 242:
-#line 2352 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 241:
+#line 2354 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {              // Return with a result...
-    (yyval.TermInstVal) = new ReturnInst((yyvsp[(2) - (2)].ValueVal));
+    (yyval.TermInstVal) = new ReturnInst((yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 243:
-#line 2356 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 242:
+#line 2358 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                                       // Return with no result...
     (yyval.TermInstVal) = new ReturnInst();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 244:
-#line 2360 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 243:
+#line 2362 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {                         // Unconditional Branch...
-    BasicBlock* tmpBB = getBBVal((yyvsp[(3) - (3)].ValIDVal));
+    BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
     (yyval.TermInstVal) = new BranchInst(tmpBB);
   ;}
     break;
 
-  case 245:
-#line 2365 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 244:
+#line 2367 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {  
-    BasicBlock* tmpBBA = getBBVal((yyvsp[(6) - (9)].ValIDVal));
+    assert(cast<IntegerType>((yyvsp[-7].PrimType))->getBitWidth() == 1 && "Not Bool?");
+    BasicBlock* tmpBBA = getBBVal((yyvsp[-3].ValIDVal));
     CHECK_FOR_ERROR
-    BasicBlock* tmpBBB = getBBVal((yyvsp[(9) - (9)].ValIDVal));
+    BasicBlock* tmpBBB = getBBVal((yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
-    Value* tmpVal = getVal(Type::Int1Ty, (yyvsp[(3) - (9)].ValIDVal));
+    Value* tmpVal = getVal(Type::Int1Ty, (yyvsp[-6].ValIDVal));
     CHECK_FOR_ERROR
     (yyval.TermInstVal) = new BranchInst(tmpBBA, tmpBBB, tmpVal);
   ;}
     break;
 
-  case 246:
-#line 2374 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 245:
+#line 2377 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    Value* tmpVal = getVal((yyvsp[(2) - (9)].PrimType), (yyvsp[(3) - (9)].ValIDVal));
+    Value* tmpVal = getVal((yyvsp[-7].PrimType), (yyvsp[-6].ValIDVal));
     CHECK_FOR_ERROR
-    BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (9)].ValIDVal));
+    BasicBlock* tmpBB = getBBVal((yyvsp[-3].ValIDVal));
     CHECK_FOR_ERROR
-    SwitchInst *S = new SwitchInst(tmpVal, tmpBB, (yyvsp[(8) - (9)].JumpTable)->size());
+    SwitchInst *S = new SwitchInst(tmpVal, tmpBB, (yyvsp[-1].JumpTable)->size());
     (yyval.TermInstVal) = S;
 
-    std::vector<std::pair<Constant*,BasicBlock*> >::iterator I = (yyvsp[(8) - (9)].JumpTable)->begin(),
-      E = (yyvsp[(8) - (9)].JumpTable)->end();
+    std::vector<std::pair<Constant*,BasicBlock*> >::iterator I = (yyvsp[-1].JumpTable)->begin(),
+      E = (yyvsp[-1].JumpTable)->end();
     for (; I != E; ++I) {
       if (ConstantInt *CI = dyn_cast<ConstantInt>(I->first))
           S->addCase(CI, I->second);
       else
         GEN_ERROR("Switch case is constant, but not a simple integer!");
     }
-    delete (yyvsp[(8) - (9)].JumpTable);
+    delete (yyvsp[-1].JumpTable);
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 247:
-#line 2393 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 246:
+#line 2396 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    Value* tmpVal = getVal((yyvsp[(2) - (8)].PrimType), (yyvsp[(3) - (8)].ValIDVal));
+    Value* tmpVal = getVal((yyvsp[-6].PrimType), (yyvsp[-5].ValIDVal));
     CHECK_FOR_ERROR
-    BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (8)].ValIDVal));
+    BasicBlock* tmpBB = getBBVal((yyvsp[-2].ValIDVal));
     CHECK_FOR_ERROR
     SwitchInst *S = new SwitchInst(tmpVal, tmpBB, 0);
     (yyval.TermInstVal) = S;
@@ -5198,20 +4973,20 @@
   ;}
     break;
 
-  case 248:
-#line 2403 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 247:
+#line 2406 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
 
     // Handle the short syntax
     const PointerType *PFTy = 0;
     const FunctionType *Ty = 0;
-    if (!(PFTy = dyn_cast<PointerType>((yyvsp[(3) - (14)].TypeVal)->get())) ||
+    if (!(PFTy = dyn_cast<PointerType>((yyvsp[-11].TypeVal)->get())) ||
         !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) {
       // Pull out the types of all of the arguments...
       std::vector<const Type*> ParamTypes;
       FunctionType::ParamAttrsList ParamAttrs;
-      ParamAttrs.push_back((yyvsp[(8) - (14)].ParamAttrs));
-      for (ValueRefList::iterator I = (yyvsp[(6) - (14)].ValueRefList)->begin(), E = (yyvsp[(6) - (14)].ValueRefList)->end(); I != E; ++I) {
+      ParamAttrs.push_back((yyvsp[-6].ParamAttrs));
+      for (ValueRefList::iterator I = (yyvsp[-8].ValueRefList)->begin(), E = (yyvsp[-8].ValueRefList)->end(); I != E; ++I) {
         const Type *Ty = I->Val->getType();
         if (Ty == Type::VoidTy)
           GEN_ERROR("Short call syntax cannot be used with varargs");
@@ -5219,20 +4994,20 @@
         ParamAttrs.push_back(I->Attrs);
       }
 
-      Ty = FunctionType::get((yyvsp[(3) - (14)].TypeVal)->get(), ParamTypes, false, ParamAttrs);
+      Ty = FunctionType::get((yyvsp[-11].TypeVal)->get(), ParamTypes, false, ParamAttrs);
       PFTy = PointerType::get(Ty);
     }
 
-    Value *V = getVal(PFTy, (yyvsp[(4) - (14)].ValIDVal));   // Get the function we're calling...
+    Value *V = getVal(PFTy, (yyvsp[-10].ValIDVal));   // Get the function we're calling...
     CHECK_FOR_ERROR
-    BasicBlock *Normal = getBBVal((yyvsp[(11) - (14)].ValIDVal));
+    BasicBlock *Normal = getBBVal((yyvsp[-3].ValIDVal));
     CHECK_FOR_ERROR
-    BasicBlock *Except = getBBVal((yyvsp[(14) - (14)].ValIDVal));
+    BasicBlock *Except = getBBVal((yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
 
     // Check the arguments
     ValueList Args;
-    if ((yyvsp[(6) - (14)].ValueRefList)->empty()) {                                   // Has no arguments?
+    if ((yyvsp[-8].ValueRefList)->empty()) {                                   // Has no arguments?
       // Make sure no arguments is a good thing!
       if (Ty->getNumParams() != 0)
         GEN_ERROR("No arguments passed to a function that "
@@ -5242,7 +5017,7 @@
       // correctly!
       FunctionType::param_iterator I = Ty->param_begin();
       FunctionType::param_iterator E = Ty->param_end();
-      ValueRefList::iterator ArgI = (yyvsp[(6) - (14)].ValueRefList)->begin(), ArgE = (yyvsp[(6) - (14)].ValueRefList)->end();
+      ValueRefList::iterator ArgI = (yyvsp[-8].ValueRefList)->begin(), ArgE = (yyvsp[-8].ValueRefList)->end();
 
       for (; ArgI != ArgE && I != E; ++ArgI, ++I) {
         if (ArgI->Val->getType() != *I)
@@ -5261,354 +5036,354 @@
 
     // Create the InvokeInst
     InvokeInst *II = new InvokeInst(V, Normal, Except, Args);
-    II->setCallingConv((yyvsp[(2) - (14)].UIntVal));
+    II->setCallingConv((yyvsp[-12].UIntVal));
     (yyval.TermInstVal) = II;
-    delete (yyvsp[(6) - (14)].ValueRefList);
+    delete (yyvsp[-8].ValueRefList);
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 249:
-#line 2469 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 248:
+#line 2472 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TermInstVal) = new UnwindInst();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 250:
-#line 2473 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 249:
+#line 2476 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TermInstVal) = new UnreachableInst();
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 251:
-#line 2480 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 250:
+#line 2483 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    (yyval.JumpTable) = (yyvsp[(1) - (6)].JumpTable);
-    Constant *V = cast<Constant>(getValNonImprovising((yyvsp[(2) - (6)].PrimType), (yyvsp[(3) - (6)].ValIDVal)));
+    (yyval.JumpTable) = (yyvsp[-5].JumpTable);
+    Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal)));
     CHECK_FOR_ERROR
     if (V == 0)
       GEN_ERROR("May only switch on a constant pool value!");
 
-    BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (6)].ValIDVal));
+    BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
     (yyval.JumpTable)->push_back(std::make_pair(V, tmpBB));
   ;}
     break;
 
-  case 252:
-#line 2491 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 251:
+#line 2494 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >();
-    Constant *V = cast<Constant>(getValNonImprovising((yyvsp[(1) - (5)].PrimType), (yyvsp[(2) - (5)].ValIDVal)));
+    Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal)));
     CHECK_FOR_ERROR
 
     if (V == 0)
       GEN_ERROR("May only switch on a constant pool value!");
 
-    BasicBlock* tmpBB = getBBVal((yyvsp[(5) - (5)].ValIDVal));
+    BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
     (yyval.JumpTable)->push_back(std::make_pair(V, tmpBB)); 
   ;}
     break;
 
-  case 253:
-#line 2504 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 252:
+#line 2507 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
   // Is this definition named?? if so, assign the name...
-  setValueName((yyvsp[(2) - (2)].InstVal), (yyvsp[(1) - (2)].StrVal));
+  setValueName((yyvsp[0].InstVal), (yyvsp[-1].StrVal));
   CHECK_FOR_ERROR
-  InsertValue((yyvsp[(2) - (2)].InstVal));
-  (yyval.InstVal) = (yyvsp[(2) - (2)].InstVal);
+  InsertValue((yyvsp[0].InstVal));
+  (yyval.InstVal) = (yyvsp[0].InstVal);
   CHECK_FOR_ERROR
 ;}
     break;
 
-  case 254:
-#line 2513 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 253:
+#line 2516 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {    // Used for PHI nodes
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (6)].TypeVal))->getDescription());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-5].TypeVal))->getDescription());
     (yyval.PHIList) = new std::list<std::pair<Value*, BasicBlock*> >();
-    Value* tmpVal = getVal(*(yyvsp[(1) - (6)].TypeVal), (yyvsp[(3) - (6)].ValIDVal));
+    Value* tmpVal = getVal(*(yyvsp[-5].TypeVal), (yyvsp[-3].ValIDVal));
     CHECK_FOR_ERROR
-    BasicBlock* tmpBB = getBBVal((yyvsp[(5) - (6)].ValIDVal));
+    BasicBlock* tmpBB = getBBVal((yyvsp[-1].ValIDVal));
     CHECK_FOR_ERROR
     (yyval.PHIList)->push_back(std::make_pair(tmpVal, tmpBB));
-    delete (yyvsp[(1) - (6)].TypeVal);
+    delete (yyvsp[-5].TypeVal);
+  ;}
+    break;
+
+  case 254:
+#line 2527 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.PHIList) = (yyvsp[-6].PHIList);
+    Value* tmpVal = getVal((yyvsp[-6].PHIList)->front().first->getType(), (yyvsp[-3].ValIDVal));
+    CHECK_FOR_ERROR
+    BasicBlock* tmpBB = getBBVal((yyvsp[-1].ValIDVal));
+    CHECK_FOR_ERROR
+    (yyvsp[-6].PHIList)->push_back(std::make_pair(tmpVal, tmpBB));
   ;}
     break;
 
   case 255:
-#line 2524 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    (yyval.PHIList) = (yyvsp[(1) - (7)].PHIList);
-    Value* tmpVal = getVal((yyvsp[(1) - (7)].PHIList)->front().first->getType(), (yyvsp[(4) - (7)].ValIDVal));
-    CHECK_FOR_ERROR
-    BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (7)].ValIDVal));
-    CHECK_FOR_ERROR
-    (yyvsp[(1) - (7)].PHIList)->push_back(std::make_pair(tmpVal, tmpBB));
+#line 2537 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {    
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+    // Used for call and invoke instructions
+    (yyval.ValueRefList) = new ValueRefList();
+    ValueRefListEntry E; E.Attrs = (yyvsp[0].ParamAttrs); E.Val = getVal((yyvsp[-2].TypeVal)->get(), (yyvsp[-1].ValIDVal));
+    (yyval.ValueRefList)->push_back(E);
   ;}
     break;
 
   case 256:
-#line 2534 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {    
+#line 2545 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
-    // Used for call and invoke instructions
-    (yyval.ValueRefList) = new ValueRefList();
-    ValueRefListEntry E; E.Attrs = (yyvsp[(3) - (3)].ParamAttrs); E.Val = getVal((yyvsp[(1) - (3)].TypeVal)->get(), (yyvsp[(2) - (3)].ValIDVal));
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+    (yyval.ValueRefList) = (yyvsp[-4].ValueRefList);
+    ValueRefListEntry E; E.Attrs = (yyvsp[0].ParamAttrs); E.Val = getVal((yyvsp[-2].TypeVal)->get(), (yyvsp[-1].ValIDVal));
     (yyval.ValueRefList)->push_back(E);
+    CHECK_FOR_ERROR
   ;}
     break;
 
   case 257:
-#line 2542 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
-    (yyval.ValueRefList) = (yyvsp[(1) - (5)].ValueRefList);
-    ValueRefListEntry E; E.Attrs = (yyvsp[(5) - (5)].ParamAttrs); E.Val = getVal((yyvsp[(3) - (5)].TypeVal)->get(), (yyvsp[(4) - (5)].ValIDVal));
-    (yyval.ValueRefList)->push_back(E);
-    CHECK_FOR_ERROR
-  ;}
-    break;
-
-  case 258:
-#line 2550 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2553 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ValueRefList) = new ValueRefList(); ;}
     break;
 
-  case 259:
-#line 2553 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 258:
+#line 2556 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ValueList) = new std::vector<Value*>(); ;}
     break;
 
-  case 260:
-#line 2554 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 259:
+#line 2557 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    (yyval.ValueList) = (yyvsp[(1) - (3)].ValueList);
-    (yyval.ValueList)->push_back((yyvsp[(3) - (3)].ValueVal));
+    (yyval.ValueList) = (yyvsp[-2].ValueList);
+    (yyval.ValueList)->push_back((yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 261:
-#line 2561 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 260:
+#line 2564 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 262:
-#line 2565 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 261:
+#line 2568 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 263:
-#line 2570 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 262:
+#line 2573 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription());
-    if (!(*(yyvsp[(2) - (5)].TypeVal))->isInteger() && !(*(yyvsp[(2) - (5)].TypeVal))->isFloatingPoint() && 
-        !isa<PackedType>((*(yyvsp[(2) - (5)].TypeVal)).get()))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+    if (!(*(yyvsp[-3].TypeVal))->isInteger() && !(*(yyvsp[-3].TypeVal))->isFloatingPoint() && 
+        !isa<PackedType>((*(yyvsp[-3].TypeVal)).get()))
       GEN_ERROR(
         "Arithmetic operator requires integer, FP, or packed operands!");
-    if (isa<PackedType>((*(yyvsp[(2) - (5)].TypeVal)).get()) && 
-        ((yyvsp[(1) - (5)].BinaryOpVal) == Instruction::URem || 
-         (yyvsp[(1) - (5)].BinaryOpVal) == Instruction::SRem ||
-         (yyvsp[(1) - (5)].BinaryOpVal) == Instruction::FRem))
+    if (isa<PackedType>((*(yyvsp[-3].TypeVal)).get()) && 
+        ((yyvsp[-4].BinaryOpVal) == Instruction::URem || 
+         (yyvsp[-4].BinaryOpVal) == Instruction::SRem ||
+         (yyvsp[-4].BinaryOpVal) == Instruction::FRem))
       GEN_ERROR("U/S/FRem not supported on packed types!");
-    Value* val1 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(3) - (5)].ValIDVal)); 
+    Value* val1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); 
     CHECK_FOR_ERROR
-    Value* val2 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(5) - (5)].ValIDVal));
+    Value* val2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = BinaryOperator::create((yyvsp[(1) - (5)].BinaryOpVal), val1, val2);
+    (yyval.InstVal) = BinaryOperator::create((yyvsp[-4].BinaryOpVal), val1, val2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("binary operator returned null!");
-    delete (yyvsp[(2) - (5)].TypeVal);
+    delete (yyvsp[-3].TypeVal);
+  ;}
+    break;
+
+  case 263:
+#line 2594 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+    if (!(*(yyvsp[-3].TypeVal))->isIntegral()) {
+      if (!isa<PackedType>((yyvsp[-3].TypeVal)->get()) ||
+          !cast<PackedType>((yyvsp[-3].TypeVal)->get())->getElementType()->isIntegral())
+        GEN_ERROR("Logical operator requires integral operands!");
+    }
+    Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal));
+    CHECK_FOR_ERROR
+    Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal));
+    CHECK_FOR_ERROR
+    (yyval.InstVal) = BinaryOperator::create((yyvsp[-4].BinaryOpVal), tmpVal1, tmpVal2);
+    if ((yyval.InstVal) == 0)
+      GEN_ERROR("binary operator returned null!");
+    delete (yyvsp[-3].TypeVal);
   ;}
     break;
 
   case 264:
-#line 2591 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2611 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription());
-    if (!(*(yyvsp[(2) - (5)].TypeVal))->isIntegral()) {
-      if (!isa<PackedType>((yyvsp[(2) - (5)].TypeVal)->get()) ||
-          !cast<PackedType>((yyvsp[(2) - (5)].TypeVal)->get())->getElementType()->isIntegral())
-        GEN_ERROR("Logical operator requires integral operands!");
-    }
-    Value* tmpVal1 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(3) - (5)].ValIDVal));
-    CHECK_FOR_ERROR
-    Value* tmpVal2 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(5) - (5)].ValIDVal));
-    CHECK_FOR_ERROR
-    (yyval.InstVal) = BinaryOperator::create((yyvsp[(1) - (5)].BinaryOpVal), tmpVal1, tmpVal2);
-    if ((yyval.InstVal) == 0)
-      GEN_ERROR("binary operator returned null!");
-    delete (yyvsp[(2) - (5)].TypeVal);
-  ;}
-    break;
-
-  case 265:
-#line 2608 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
-    if (isa<PackedType>((*(yyvsp[(3) - (6)].TypeVal)).get()))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+    if (isa<PackedType>((*(yyvsp[-3].TypeVal)).get()))
       GEN_ERROR("Packed types not supported by icmp instruction");
-    Value* tmpVal1 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(4) - (6)].ValIDVal));
+    Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal));
     CHECK_FOR_ERROR
-    Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal));
+    Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].IPredicate), tmpVal1, tmpVal2);
+    (yyval.InstVal) = CmpInst::create((yyvsp[-5].OtherOpVal), (yyvsp[-4].IPredicate), tmpVal1, tmpVal2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("icmp operator returned null!");
   ;}
     break;
 
-  case 266:
-#line 2621 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 265:
+#line 2624 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
-    if (isa<PackedType>((*(yyvsp[(3) - (6)].TypeVal)).get()))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+    if (isa<PackedType>((*(yyvsp[-3].TypeVal)).get()))
       GEN_ERROR("Packed types not supported by fcmp instruction");
-    Value* tmpVal1 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(4) - (6)].ValIDVal));
+    Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal));
     CHECK_FOR_ERROR
-    Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal));
+    Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].FPredicate), tmpVal1, tmpVal2);
+    (yyval.InstVal) = CmpInst::create((yyvsp[-5].OtherOpVal), (yyvsp[-4].FPredicate), tmpVal1, tmpVal2);
     if ((yyval.InstVal) == 0)
       GEN_ERROR("fcmp operator returned null!");
   ;}
     break;
 
-  case 267:
-#line 2634 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 266:
+#line 2637 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if ((yyvsp[(4) - (4)].ValueVal)->getType() != Type::Int8Ty)
+    if ((yyvsp[0].ValueVal)->getType() != Type::Int8Ty)
       GEN_ERROR("Shift amount must be i8 type!");
-    if (!(yyvsp[(2) - (4)].ValueVal)->getType()->isInteger())
+    if (!(yyvsp[-2].ValueVal)->getType()->isInteger())
       GEN_ERROR("Shift constant expression requires integer operand!");
     CHECK_FOR_ERROR;
-    (yyval.InstVal) = new ShiftInst((yyvsp[(1) - (4)].OtherOpVal), (yyvsp[(2) - (4)].ValueVal), (yyvsp[(4) - (4)].ValueVal));
+    (yyval.InstVal) = new ShiftInst((yyvsp[-3].OtherOpVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 268:
-#line 2643 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 267:
+#line 2646 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription());
-    Value* Val = (yyvsp[(2) - (4)].ValueVal);
-    const Type* Ty = (yyvsp[(4) - (4)].TypeVal)->get();
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
+    Value* Val = (yyvsp[-2].ValueVal);
+    const Type* Ty = (yyvsp[0].TypeVal)->get();
     if (!Val->getType()->isFirstClassType())
       GEN_ERROR("cast from a non-primitive type: '" +
                 Val->getType()->getDescription() + "'!");
     if (!Ty->isFirstClassType())
       GEN_ERROR("cast to a non-primitive type: '" + Ty->getDescription() +"'!");
-    (yyval.InstVal) = CastInst::create((yyvsp[(1) - (4)].CastOpVal), Val, (yyvsp[(4) - (4)].TypeVal)->get());
-    delete (yyvsp[(4) - (4)].TypeVal);
+    (yyval.InstVal) = CastInst::create((yyvsp[-3].CastOpVal), Val, (yyvsp[0].TypeVal)->get());
+    delete (yyvsp[0].TypeVal);
+  ;}
+    break;
+
+  case 268:
+#line 2659 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    if ((yyvsp[-4].ValueVal)->getType() != Type::Int1Ty)
+      GEN_ERROR("select condition must be boolean!");
+    if ((yyvsp[-2].ValueVal)->getType() != (yyvsp[0].ValueVal)->getType())
+      GEN_ERROR("select value types should match!");
+    (yyval.InstVal) = new SelectInst((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal));
+    CHECK_FOR_ERROR
   ;}
     break;
 
   case 269:
-#line 2656 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2667 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if ((yyvsp[(2) - (6)].ValueVal)->getType() != Type::Int1Ty)
-      GEN_ERROR("select condition must be boolean!");
-    if ((yyvsp[(4) - (6)].ValueVal)->getType() != (yyvsp[(6) - (6)].ValueVal)->getType())
-      GEN_ERROR("select value types should match!");
-    (yyval.InstVal) = new SelectInst((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal));
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
+    (yyval.InstVal) = new VAArgInst((yyvsp[-2].ValueVal), *(yyvsp[0].TypeVal));
+    delete (yyvsp[0].TypeVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 270:
-#line 2664 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2674 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription());
-    (yyval.InstVal) = new VAArgInst((yyvsp[(2) - (4)].ValueVal), *(yyvsp[(4) - (4)].TypeVal));
-    delete (yyvsp[(4) - (4)].TypeVal);
+    if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
+      GEN_ERROR("Invalid extractelement operands!");
+    (yyval.InstVal) = new ExtractElementInst((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 271:
-#line 2671 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2680 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!ExtractElementInst::isValidOperands((yyvsp[(2) - (4)].ValueVal), (yyvsp[(4) - (4)].ValueVal)))
-      GEN_ERROR("Invalid extractelement operands!");
-    (yyval.InstVal) = new ExtractElementInst((yyvsp[(2) - (4)].ValueVal), (yyvsp[(4) - (4)].ValueVal));
+    if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
+      GEN_ERROR("Invalid insertelement operands!");
+    (yyval.InstVal) = new InsertElementInst((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 272:
-#line 2677 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2686 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!InsertElementInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)))
-      GEN_ERROR("Invalid insertelement operands!");
-    (yyval.InstVal) = new InsertElementInst((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal));
+    if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
+      GEN_ERROR("Invalid shufflevector operands!");
+    (yyval.InstVal) = new ShuffleVectorInst((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 273:
-#line 2683 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2692 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!ShuffleVectorInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)))
-      GEN_ERROR("Invalid shufflevector operands!");
-    (yyval.InstVal) = new ShuffleVectorInst((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal));
+    const Type *Ty = (yyvsp[0].PHIList)->front().first->getType();
+    if (!Ty->isFirstClassType())
+      GEN_ERROR("PHI node operands must be of first class type!");
+    (yyval.InstVal) = new PHINode(Ty);
+    ((PHINode*)(yyval.InstVal))->reserveOperandSpace((yyvsp[0].PHIList)->size());
+    while ((yyvsp[0].PHIList)->begin() != (yyvsp[0].PHIList)->end()) {
+      if ((yyvsp[0].PHIList)->front().first->getType() != Ty) 
+        GEN_ERROR("All elements of a PHI node must be of the same type!");
+      cast<PHINode>((yyval.InstVal))->addIncoming((yyvsp[0].PHIList)->front().first, (yyvsp[0].PHIList)->front().second);
+      (yyvsp[0].PHIList)->pop_front();
+    }
+    delete (yyvsp[0].PHIList);  // Free the list...
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 274:
-#line 2689 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    const Type *Ty = (yyvsp[(2) - (2)].PHIList)->front().first->getType();
-    if (!Ty->isFirstClassType())
-      GEN_ERROR("PHI node operands must be of first class type!");
-    (yyval.InstVal) = new PHINode(Ty);
-    ((PHINode*)(yyval.InstVal))->reserveOperandSpace((yyvsp[(2) - (2)].PHIList)->size());
-    while ((yyvsp[(2) - (2)].PHIList)->begin() != (yyvsp[(2) - (2)].PHIList)->end()) {
-      if ((yyvsp[(2) - (2)].PHIList)->front().first->getType() != Ty) 
-        GEN_ERROR("All elements of a PHI node must be of the same type!");
-      cast<PHINode>((yyval.InstVal))->addIncoming((yyvsp[(2) - (2)].PHIList)->front().first, (yyvsp[(2) - (2)].PHIList)->front().second);
-      (yyvsp[(2) - (2)].PHIList)->pop_front();
-    }
-    delete (yyvsp[(2) - (2)].PHIList);  // Free the list...
-    CHECK_FOR_ERROR
-  ;}
-    break;
-
-  case 275:
-#line 2705 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2708 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
 
     // Handle the short syntax
     const PointerType *PFTy = 0;
     const FunctionType *Ty = 0;
-    if (!(PFTy = dyn_cast<PointerType>((yyvsp[(3) - (8)].TypeVal)->get())) ||
+    if (!(PFTy = dyn_cast<PointerType>((yyvsp[-5].TypeVal)->get())) ||
         !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) {
       // Pull out the types of all of the arguments...
       std::vector<const Type*> ParamTypes;
       FunctionType::ParamAttrsList ParamAttrs;
-      ParamAttrs.push_back((yyvsp[(8) - (8)].ParamAttrs));
-      for (ValueRefList::iterator I = (yyvsp[(6) - (8)].ValueRefList)->begin(), E = (yyvsp[(6) - (8)].ValueRefList)->end(); I != E; ++I) {
+      ParamAttrs.push_back((yyvsp[0].ParamAttrs));
+      for (ValueRefList::iterator I = (yyvsp[-2].ValueRefList)->begin(), E = (yyvsp[-2].ValueRefList)->end(); I != E; ++I) {
         const Type *Ty = I->Val->getType();
         if (Ty == Type::VoidTy)
           GEN_ERROR("Short call syntax cannot be used with varargs");
@@ -5616,16 +5391,16 @@
         ParamAttrs.push_back(I->Attrs);
       }
 
-      Ty = FunctionType::get((yyvsp[(3) - (8)].TypeVal)->get(), ParamTypes, false, ParamAttrs);
+      Ty = FunctionType::get((yyvsp[-5].TypeVal)->get(), ParamTypes, false, ParamAttrs);
       PFTy = PointerType::get(Ty);
     }
 
-    Value *V = getVal(PFTy, (yyvsp[(4) - (8)].ValIDVal));   // Get the function we're calling...
+    Value *V = getVal(PFTy, (yyvsp[-4].ValIDVal));   // Get the function we're calling...
     CHECK_FOR_ERROR
 
     // Check the arguments 
     ValueList Args;
-    if ((yyvsp[(6) - (8)].ValueRefList)->empty()) {                                   // Has no arguments?
+    if ((yyvsp[-2].ValueRefList)->empty()) {                                   // Has no arguments?
       // Make sure no arguments is a good thing!
       if (Ty->getNumParams() != 0)
         GEN_ERROR("No arguments passed to a function that "
@@ -5636,7 +5411,7 @@
       //
       FunctionType::param_iterator I = Ty->param_begin();
       FunctionType::param_iterator E = Ty->param_end();
-      ValueRefList::iterator ArgI = (yyvsp[(6) - (8)].ValueRefList)->begin(), ArgE = (yyvsp[(6) - (8)].ValueRefList)->end();
+      ValueRefList::iterator ArgI = (yyvsp[-2].ValueRefList)->begin(), ArgE = (yyvsp[-2].ValueRefList)->end();
 
       for (; ArgI != ArgE && I != E; ++ArgI, ++I) {
         if (ArgI->Val->getType() != *I)
@@ -5653,162 +5428,164 @@
     }
     // Create the call node
     CallInst *CI = new CallInst(V, Args);
-    CI->setTailCall((yyvsp[(1) - (8)].BoolVal));
-    CI->setCallingConv((yyvsp[(2) - (8)].UIntVal));
+    CI->setTailCall((yyvsp[-7].BoolVal));
+    CI->setCallingConv((yyvsp[-6].UIntVal));
     (yyval.InstVal) = CI;
-    delete (yyvsp[(6) - (8)].ValueRefList);
+    delete (yyvsp[-2].ValueRefList);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 275:
+#line 2770 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.InstVal) = (yyvsp[0].InstVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 276:
-#line 2767 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    (yyval.InstVal) = (yyvsp[(1) - (1)].InstVal);
-    CHECK_FOR_ERROR
-  ;}
-    break;
-
-  case 277:
-#line 2772 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2775 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 278:
-#line 2776 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 277:
+#line 2779 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
   ;}
     break;
 
-  case 279:
-#line 2783 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+  case 278:
+#line 2786 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (3)].TypeVal))->getDescription());
-    (yyval.InstVal) = new MallocInst(*(yyvsp[(2) - (3)].TypeVal), 0, (yyvsp[(3) - (3)].UIntVal));
-    delete (yyvsp[(2) - (3)].TypeVal);
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    (yyval.InstVal) = new MallocInst(*(yyvsp[-1].TypeVal), 0, (yyvsp[0].UIntVal));
+    delete (yyvsp[-1].TypeVal);
     CHECK_FOR_ERROR
   ;}
     break;
 
+  case 279:
+#line 2793 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription());
+    Value* tmpVal = getVal((yyvsp[-2].PrimType), (yyvsp[-1].ValIDVal));
+    CHECK_FOR_ERROR
+    (yyval.InstVal) = new MallocInst(*(yyvsp[-4].TypeVal), tmpVal, (yyvsp[0].UIntVal));
+    delete (yyvsp[-4].TypeVal);
+  ;}
+    break;
+
   case 280:
-#line 2790 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2801 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription());
-    Value* tmpVal = getVal((yyvsp[(4) - (6)].PrimType), (yyvsp[(5) - (6)].ValIDVal));
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    (yyval.InstVal) = new AllocaInst(*(yyvsp[-1].TypeVal), 0, (yyvsp[0].UIntVal));
+    delete (yyvsp[-1].TypeVal);
     CHECK_FOR_ERROR
-    (yyval.InstVal) = new MallocInst(*(yyvsp[(2) - (6)].TypeVal), tmpVal, (yyvsp[(6) - (6)].UIntVal));
-    delete (yyvsp[(2) - (6)].TypeVal);
   ;}
     break;
 
   case 281:
-#line 2798 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2808 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (3)].TypeVal))->getDescription());
-    (yyval.InstVal) = new AllocaInst(*(yyvsp[(2) - (3)].TypeVal), 0, (yyvsp[(3) - (3)].UIntVal));
-    delete (yyvsp[(2) - (3)].TypeVal);
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-4].TypeVal))->getDescription());
+    Value* tmpVal = getVal((yyvsp[-2].PrimType), (yyvsp[-1].ValIDVal));
     CHECK_FOR_ERROR
+    (yyval.InstVal) = new AllocaInst(*(yyvsp[-4].TypeVal), tmpVal, (yyvsp[0].UIntVal));
+    delete (yyvsp[-4].TypeVal);
   ;}
     break;
 
   case 282:
-#line 2805 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2816 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription());
-    Value* tmpVal = getVal((yyvsp[(4) - (6)].PrimType), (yyvsp[(5) - (6)].ValIDVal));
+    if (!isa<PointerType>((yyvsp[0].ValueVal)->getType()))
+      GEN_ERROR("Trying to free nonpointer type " + 
+                     (yyvsp[0].ValueVal)->getType()->getDescription() + "!");
+    (yyval.InstVal) = new FreeInst((yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = new AllocaInst(*(yyvsp[(2) - (6)].TypeVal), tmpVal, (yyvsp[(6) - (6)].UIntVal));
-    delete (yyvsp[(2) - (6)].TypeVal);
   ;}
     break;
 
   case 283:
-#line 2813 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2824 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!isa<PointerType>((yyvsp[(2) - (2)].ValueVal)->getType()))
-      GEN_ERROR("Trying to free nonpointer type " + 
-                     (yyvsp[(2) - (2)].ValueVal)->getType()->getDescription() + "!");
-    (yyval.InstVal) = new FreeInst((yyvsp[(2) - (2)].ValueVal));
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    if (!isa<PointerType>((yyvsp[-1].TypeVal)->get()))
+      GEN_ERROR("Can't load from nonpointer type: " +
+                     (*(yyvsp[-1].TypeVal))->getDescription());
+    if (!cast<PointerType>((yyvsp[-1].TypeVal)->get())->getElementType()->isFirstClassType())
+      GEN_ERROR("Can't load from pointer of non-first-class type: " +
+                     (*(yyvsp[-1].TypeVal))->getDescription());
+    Value* tmpVal = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
+    (yyval.InstVal) = new LoadInst(tmpVal, "", (yyvsp[-3].BoolVal));
+    delete (yyvsp[-1].TypeVal);
   ;}
     break;
 
   case 284:
-#line 2821 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2838 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (4)].TypeVal))->getDescription());
-    if (!isa<PointerType>((yyvsp[(3) - (4)].TypeVal)->get()))
-      GEN_ERROR("Can't load from nonpointer type: " +
-                     (*(yyvsp[(3) - (4)].TypeVal))->getDescription());
-    if (!cast<PointerType>((yyvsp[(3) - (4)].TypeVal)->get())->getElementType()->isFirstClassType())
-      GEN_ERROR("Can't load from pointer of non-first-class type: " +
-                     (*(yyvsp[(3) - (4)].TypeVal))->getDescription());
-    Value* tmpVal = getVal(*(yyvsp[(3) - (4)].TypeVal), (yyvsp[(4) - (4)].ValIDVal));
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    const PointerType *PT = dyn_cast<PointerType>((yyvsp[-1].TypeVal)->get());
+    if (!PT)
+      GEN_ERROR("Can't store to a nonpointer type: " +
+                     (*(yyvsp[-1].TypeVal))->getDescription());
+    const Type *ElTy = PT->getElementType();
+    if (ElTy != (yyvsp[-3].ValueVal)->getType())
+      GEN_ERROR("Can't store '" + (yyvsp[-3].ValueVal)->getType()->getDescription() +
+                     "' into space of type '" + ElTy->getDescription() + "'!");
+
+    Value* tmpVal = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = new LoadInst(tmpVal, "", (yyvsp[(1) - (4)].BoolVal));
-    delete (yyvsp[(3) - (4)].TypeVal);
+    (yyval.InstVal) = new StoreInst((yyvsp[-3].ValueVal), tmpVal, (yyvsp[-5].BoolVal));
+    delete (yyvsp[-1].TypeVal);
   ;}
     break;
 
   case 285:
-#line 2835 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2855 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (6)].TypeVal))->getDescription());
-    const PointerType *PT = dyn_cast<PointerType>((yyvsp[(5) - (6)].TypeVal)->get());
-    if (!PT)
-      GEN_ERROR("Can't store to a nonpointer type: " +
-                     (*(yyvsp[(5) - (6)].TypeVal))->getDescription());
-    const Type *ElTy = PT->getElementType();
-    if (ElTy != (yyvsp[(3) - (6)].ValueVal)->getType())
-      GEN_ERROR("Can't store '" + (yyvsp[(3) - (6)].ValueVal)->getType()->getDescription() +
-                     "' into space of type '" + ElTy->getDescription() + "'!");
-
-    Value* tmpVal = getVal(*(yyvsp[(5) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal));
-    CHECK_FOR_ERROR
-    (yyval.InstVal) = new StoreInst((yyvsp[(3) - (6)].ValueVal), tmpVal, (yyvsp[(1) - (6)].BoolVal));
-    delete (yyvsp[(5) - (6)].TypeVal);
-  ;}
-    break;
-
-  case 286:
-#line 2852 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (4)].TypeVal))->getDescription());
-    if (!isa<PointerType>((yyvsp[(2) - (4)].TypeVal)->get()))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+    if (!isa<PointerType>((yyvsp[-2].TypeVal)->get()))
       GEN_ERROR("getelementptr insn requires pointer operand!");
 
-    if (!GetElementPtrInst::getIndexedType(*(yyvsp[(2) - (4)].TypeVal), *(yyvsp[(4) - (4)].ValueList), true))
+    if (!GetElementPtrInst::getIndexedType(*(yyvsp[-2].TypeVal), *(yyvsp[0].ValueList), true))
       GEN_ERROR("Invalid getelementptr indices for type '" +
-                     (*(yyvsp[(2) - (4)].TypeVal))->getDescription()+ "'!");
-    Value* tmpVal = getVal(*(yyvsp[(2) - (4)].TypeVal), (yyvsp[(3) - (4)].ValIDVal));
+                     (*(yyvsp[-2].TypeVal))->getDescription()+ "'!");
+    Value* tmpVal = getVal(*(yyvsp[-2].TypeVal), (yyvsp[-1].ValIDVal));
     CHECK_FOR_ERROR
-    (yyval.InstVal) = new GetElementPtrInst(tmpVal, *(yyvsp[(4) - (4)].ValueList));
-    delete (yyvsp[(2) - (4)].TypeVal); 
-    delete (yyvsp[(4) - (4)].ValueList);
+    (yyval.InstVal) = new GetElementPtrInst(tmpVal, *(yyvsp[0].ValueList));
+    delete (yyvsp[-2].TypeVal); 
+    delete (yyvsp[0].ValueList);
   ;}
     break;
 
 
-/* Line 1267 of yacc.c.  */
-#line 5806 "llvmAsmParser.tab.c"
       default: break;
     }
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
 
-  YYPOPSTACK (yylen);
-  yylen = 0;
+/* Line 1126 of yacc.c.  */
+#line 5584 "llvmAsmParser.tab.c"
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
   YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
@@ -5837,41 +5614,110 @@
   if (!yyerrstatus)
     {
       ++yynerrs;
-#if ! YYERROR_VERBOSE
-      yyerror (YY_("syntax error"));
-#else
-      {
-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T yyalloc = 2 * yysize;
-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (yymsg != yymsgbuf)
-	      YYSTACK_FREE (yymsg);
-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-	    if (yymsg)
-	      yymsg_alloc = yyalloc;
-	    else
-	      {
-		yymsg = yymsgbuf;
-		yymsg_alloc = sizeof yymsgbuf;
-	      }
-	  }
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
 
-	if (0 < yysize && yysize <= yymsg_alloc)
-	  {
-	    (void) yysyntax_error (yymsg, yystate, yychar);
-	    yyerror (yymsg);
-	  }
-	else
-	  {
-	    yyerror (YY_("syntax error"));
-	    if (yysize != 0)
-	      goto yyexhaustedlab;
-	  }
-      }
+      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"));
     }
 
 
@@ -5882,15 +5728,14 @@
 	 error, discard it.  */
 
       if (yychar <= YYEOF)
-	{
+        {
 	  /* Return failure if at end of input.  */
 	  if (yychar == YYEOF)
 	    YYABORT;
-	}
+        }
       else
 	{
-	  yydestruct ("Error: discarding",
-		      yytoken, &yylval);
+	  yydestruct ("Error: discarding", yytoken, &yylval);
 	  yychar = YYEMPTY;
 	}
     }
@@ -5908,14 +5753,11 @@
   /* Pacify compilers like GCC when the user code never invokes
      YYERROR and the label yyerrorlab therefore never appears in user
      code.  */
-  if (/*CONSTCOND*/ 0)
+  if (0)
      goto yyerrorlab;
 
-  /* Do not reclaim the symbols of the rule which action triggered
-     this YYERROR.  */
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
+yyvsp -= yylen;
+  yyssp -= yylen;
   yystate = *yyssp;
   goto yyerrlab1;
 
@@ -5945,9 +5787,8 @@
 	YYABORT;
 
 
-      yydestruct ("Error: popping",
-		  yystos[yystate], yyvsp);
-      YYPOPSTACK (1);
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
     }
@@ -5958,7 +5799,7 @@
   *++yyvsp = yylval;
 
 
-  /* Shift the error token.  */
+  /* Shift the error token. */
   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
 
   yystate = yyn;
@@ -5993,30 +5834,21 @@
   if (yychar != YYEOF && yychar != YYEMPTY)
      yydestruct ("Cleanup: discarding lookahead",
 		 yytoken, &yylval);
-  /* Do not reclaim the symbols of the rule which action triggered
-     this YYABORT or YYACCEPT.  */
-  YYPOPSTACK (yylen);
-  YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
 		  yystos[*yyssp], yyvsp);
-      YYPOPSTACK (1);
+      YYPOPSTACK;
     }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
+  return yyresult;
 }
 
 
-#line 2869 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+#line 2872 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
 
 
 // common code from the two 'RunVMAsmParser' functions
diff --git a/lib/AsmParser/llvmAsmParser.h.cvs b/lib/AsmParser/llvmAsmParser.h.cvs
index d460fef..e2aee7e 100644
--- a/lib/AsmParser/llvmAsmParser.h.cvs
+++ b/lib/AsmParser/llvmAsmParser.h.cvs
@@ -1,9 +1,7 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
+/* A Bison parser, made by GNU Bison 2.1.  */
 
-/* Skeleton interface for Bison's Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+/* 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
@@ -20,18 +18,10 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.  */
 
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
-
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
+/* 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
@@ -45,131 +35,130 @@
      UINTVAL = 261,
      FPVAL = 262,
      VOID = 263,
-     BOOL = 264,
-     INTTYPE = 265,
-     FLOAT = 266,
-     DOUBLE = 267,
-     LABEL = 268,
-     TYPE = 269,
-     VAR_ID = 270,
-     LABELSTR = 271,
-     STRINGCONSTANT = 272,
-     IMPLEMENTATION = 273,
-     ZEROINITIALIZER = 274,
-     TRUETOK = 275,
-     FALSETOK = 276,
-     BEGINTOK = 277,
-     ENDTOK = 278,
-     DECLARE = 279,
-     DEFINE = 280,
-     GLOBAL = 281,
-     CONSTANT = 282,
-     SECTION = 283,
-     VOLATILE = 284,
-     TO = 285,
-     DOTDOTDOT = 286,
-     NULL_TOK = 287,
-     UNDEF = 288,
-     INTERNAL = 289,
-     LINKONCE = 290,
-     WEAK = 291,
-     APPENDING = 292,
-     DLLIMPORT = 293,
-     DLLEXPORT = 294,
-     EXTERN_WEAK = 295,
-     OPAQUE = 296,
-     EXTERNAL = 297,
-     TARGET = 298,
-     TRIPLE = 299,
-     ENDIAN = 300,
-     POINTERSIZE = 301,
-     LITTLE = 302,
-     BIG = 303,
-     ALIGN = 304,
-     DEPLIBS = 305,
-     CALL = 306,
-     TAIL = 307,
-     ASM_TOK = 308,
-     MODULE = 309,
-     SIDEEFFECT = 310,
-     CC_TOK = 311,
-     CCC_TOK = 312,
-     CSRETCC_TOK = 313,
-     FASTCC_TOK = 314,
-     COLDCC_TOK = 315,
-     X86_STDCALLCC_TOK = 316,
-     X86_FASTCALLCC_TOK = 317,
-     DATALAYOUT = 318,
-     RET = 319,
-     BR = 320,
-     SWITCH = 321,
-     INVOKE = 322,
-     UNWIND = 323,
-     UNREACHABLE = 324,
-     ADD = 325,
-     SUB = 326,
-     MUL = 327,
-     UDIV = 328,
-     SDIV = 329,
-     FDIV = 330,
-     UREM = 331,
-     SREM = 332,
-     FREM = 333,
-     AND = 334,
-     OR = 335,
-     XOR = 336,
-     ICMP = 337,
-     FCMP = 338,
-     EQ = 339,
-     NE = 340,
-     SLT = 341,
-     SGT = 342,
-     SLE = 343,
-     SGE = 344,
-     ULT = 345,
-     UGT = 346,
-     ULE = 347,
-     UGE = 348,
-     OEQ = 349,
-     ONE = 350,
-     OLT = 351,
-     OGT = 352,
-     OLE = 353,
-     OGE = 354,
-     ORD = 355,
-     UNO = 356,
-     UEQ = 357,
-     UNE = 358,
-     MALLOC = 359,
-     ALLOCA = 360,
-     FREE = 361,
-     LOAD = 362,
-     STORE = 363,
-     GETELEMENTPTR = 364,
-     TRUNC = 365,
-     ZEXT = 366,
-     SEXT = 367,
-     FPTRUNC = 368,
-     FPEXT = 369,
-     BITCAST = 370,
-     UITOFP = 371,
-     SITOFP = 372,
-     FPTOUI = 373,
-     FPTOSI = 374,
-     INTTOPTR = 375,
-     PTRTOINT = 376,
-     PHI_TOK = 377,
-     SELECT = 378,
-     SHL = 379,
-     LSHR = 380,
-     ASHR = 381,
-     VAARG = 382,
-     EXTRACTELEMENT = 383,
-     INSERTELEMENT = 384,
-     SHUFFLEVECTOR = 385,
-     NORETURN = 386,
-     DEFAULT = 387,
-     HIDDEN = 388
+     INTTYPE = 264,
+     FLOAT = 265,
+     DOUBLE = 266,
+     LABEL = 267,
+     TYPE = 268,
+     VAR_ID = 269,
+     LABELSTR = 270,
+     STRINGCONSTANT = 271,
+     IMPLEMENTATION = 272,
+     ZEROINITIALIZER = 273,
+     TRUETOK = 274,
+     FALSETOK = 275,
+     BEGINTOK = 276,
+     ENDTOK = 277,
+     DECLARE = 278,
+     DEFINE = 279,
+     GLOBAL = 280,
+     CONSTANT = 281,
+     SECTION = 282,
+     VOLATILE = 283,
+     TO = 284,
+     DOTDOTDOT = 285,
+     NULL_TOK = 286,
+     UNDEF = 287,
+     INTERNAL = 288,
+     LINKONCE = 289,
+     WEAK = 290,
+     APPENDING = 291,
+     DLLIMPORT = 292,
+     DLLEXPORT = 293,
+     EXTERN_WEAK = 294,
+     OPAQUE = 295,
+     EXTERNAL = 296,
+     TARGET = 297,
+     TRIPLE = 298,
+     ENDIAN = 299,
+     POINTERSIZE = 300,
+     LITTLE = 301,
+     BIG = 302,
+     ALIGN = 303,
+     DEPLIBS = 304,
+     CALL = 305,
+     TAIL = 306,
+     ASM_TOK = 307,
+     MODULE = 308,
+     SIDEEFFECT = 309,
+     CC_TOK = 310,
+     CCC_TOK = 311,
+     CSRETCC_TOK = 312,
+     FASTCC_TOK = 313,
+     COLDCC_TOK = 314,
+     X86_STDCALLCC_TOK = 315,
+     X86_FASTCALLCC_TOK = 316,
+     DATALAYOUT = 317,
+     RET = 318,
+     BR = 319,
+     SWITCH = 320,
+     INVOKE = 321,
+     UNWIND = 322,
+     UNREACHABLE = 323,
+     ADD = 324,
+     SUB = 325,
+     MUL = 326,
+     UDIV = 327,
+     SDIV = 328,
+     FDIV = 329,
+     UREM = 330,
+     SREM = 331,
+     FREM = 332,
+     AND = 333,
+     OR = 334,
+     XOR = 335,
+     ICMP = 336,
+     FCMP = 337,
+     EQ = 338,
+     NE = 339,
+     SLT = 340,
+     SGT = 341,
+     SLE = 342,
+     SGE = 343,
+     ULT = 344,
+     UGT = 345,
+     ULE = 346,
+     UGE = 347,
+     OEQ = 348,
+     ONE = 349,
+     OLT = 350,
+     OGT = 351,
+     OLE = 352,
+     OGE = 353,
+     ORD = 354,
+     UNO = 355,
+     UEQ = 356,
+     UNE = 357,
+     MALLOC = 358,
+     ALLOCA = 359,
+     FREE = 360,
+     LOAD = 361,
+     STORE = 362,
+     GETELEMENTPTR = 363,
+     TRUNC = 364,
+     ZEXT = 365,
+     SEXT = 366,
+     FPTRUNC = 367,
+     FPEXT = 368,
+     BITCAST = 369,
+     UITOFP = 370,
+     SITOFP = 371,
+     FPTOUI = 372,
+     FPTOSI = 373,
+     INTTOPTR = 374,
+     PTRTOINT = 375,
+     PHI_TOK = 376,
+     SELECT = 377,
+     SHL = 378,
+     LSHR = 379,
+     ASHR = 380,
+     VAARG = 381,
+     EXTRACTELEMENT = 382,
+     INSERTELEMENT = 383,
+     SHUFFLEVECTOR = 384,
+     NORETURN = 385,
+     DEFAULT = 386,
+     HIDDEN = 387
    };
 #endif
 /* Tokens.  */
@@ -179,139 +168,137 @@
 #define UINTVAL 261
 #define FPVAL 262
 #define VOID 263
-#define BOOL 264
-#define INTTYPE 265
-#define FLOAT 266
-#define DOUBLE 267
-#define LABEL 268
-#define TYPE 269
-#define VAR_ID 270
-#define LABELSTR 271
-#define STRINGCONSTANT 272
-#define IMPLEMENTATION 273
-#define ZEROINITIALIZER 274
-#define TRUETOK 275
-#define FALSETOK 276
-#define BEGINTOK 277
-#define ENDTOK 278
-#define DECLARE 279
-#define DEFINE 280
-#define GLOBAL 281
-#define CONSTANT 282
-#define SECTION 283
-#define VOLATILE 284
-#define TO 285
-#define DOTDOTDOT 286
-#define NULL_TOK 287
-#define UNDEF 288
-#define INTERNAL 289
-#define LINKONCE 290
-#define WEAK 291
-#define APPENDING 292
-#define DLLIMPORT 293
-#define DLLEXPORT 294
-#define EXTERN_WEAK 295
-#define OPAQUE 296
-#define EXTERNAL 297
-#define TARGET 298
-#define TRIPLE 299
-#define ENDIAN 300
-#define POINTERSIZE 301
-#define LITTLE 302
-#define BIG 303
-#define ALIGN 304
-#define DEPLIBS 305
-#define CALL 306
-#define TAIL 307
-#define ASM_TOK 308
-#define MODULE 309
-#define SIDEEFFECT 310
-#define CC_TOK 311
-#define CCC_TOK 312
-#define CSRETCC_TOK 313
-#define FASTCC_TOK 314
-#define COLDCC_TOK 315
-#define X86_STDCALLCC_TOK 316
-#define X86_FASTCALLCC_TOK 317
-#define DATALAYOUT 318
-#define RET 319
-#define BR 320
-#define SWITCH 321
-#define INVOKE 322
-#define UNWIND 323
-#define UNREACHABLE 324
-#define ADD 325
-#define SUB 326
-#define MUL 327
-#define UDIV 328
-#define SDIV 329
-#define FDIV 330
-#define UREM 331
-#define SREM 332
-#define FREM 333
-#define AND 334
-#define OR 335
-#define XOR 336
-#define ICMP 337
-#define FCMP 338
-#define EQ 339
-#define NE 340
-#define SLT 341
-#define SGT 342
-#define SLE 343
-#define SGE 344
-#define ULT 345
-#define UGT 346
-#define ULE 347
-#define UGE 348
-#define OEQ 349
-#define ONE 350
-#define OLT 351
-#define OGT 352
-#define OLE 353
-#define OGE 354
-#define ORD 355
-#define UNO 356
-#define UEQ 357
-#define UNE 358
-#define MALLOC 359
-#define ALLOCA 360
-#define FREE 361
-#define LOAD 362
-#define STORE 363
-#define GETELEMENTPTR 364
-#define TRUNC 365
-#define ZEXT 366
-#define SEXT 367
-#define FPTRUNC 368
-#define FPEXT 369
-#define BITCAST 370
-#define UITOFP 371
-#define SITOFP 372
-#define FPTOUI 373
-#define FPTOSI 374
-#define INTTOPTR 375
-#define PTRTOINT 376
-#define PHI_TOK 377
-#define SELECT 378
-#define SHL 379
-#define LSHR 380
-#define ASHR 381
-#define VAARG 382
-#define EXTRACTELEMENT 383
-#define INSERTELEMENT 384
-#define SHUFFLEVECTOR 385
-#define NORETURN 386
-#define DEFAULT 387
-#define HIDDEN 388
+#define INTTYPE 264
+#define FLOAT 265
+#define DOUBLE 266
+#define LABEL 267
+#define TYPE 268
+#define VAR_ID 269
+#define LABELSTR 270
+#define STRINGCONSTANT 271
+#define IMPLEMENTATION 272
+#define ZEROINITIALIZER 273
+#define TRUETOK 274
+#define FALSETOK 275
+#define BEGINTOK 276
+#define ENDTOK 277
+#define DECLARE 278
+#define DEFINE 279
+#define GLOBAL 280
+#define CONSTANT 281
+#define SECTION 282
+#define VOLATILE 283
+#define TO 284
+#define DOTDOTDOT 285
+#define NULL_TOK 286
+#define UNDEF 287
+#define INTERNAL 288
+#define LINKONCE 289
+#define WEAK 290
+#define APPENDING 291
+#define DLLIMPORT 292
+#define DLLEXPORT 293
+#define EXTERN_WEAK 294
+#define OPAQUE 295
+#define EXTERNAL 296
+#define TARGET 297
+#define TRIPLE 298
+#define ENDIAN 299
+#define POINTERSIZE 300
+#define LITTLE 301
+#define BIG 302
+#define ALIGN 303
+#define DEPLIBS 304
+#define CALL 305
+#define TAIL 306
+#define ASM_TOK 307
+#define MODULE 308
+#define SIDEEFFECT 309
+#define CC_TOK 310
+#define CCC_TOK 311
+#define CSRETCC_TOK 312
+#define FASTCC_TOK 313
+#define COLDCC_TOK 314
+#define X86_STDCALLCC_TOK 315
+#define X86_FASTCALLCC_TOK 316
+#define DATALAYOUT 317
+#define RET 318
+#define BR 319
+#define SWITCH 320
+#define INVOKE 321
+#define UNWIND 322
+#define UNREACHABLE 323
+#define ADD 324
+#define SUB 325
+#define MUL 326
+#define UDIV 327
+#define SDIV 328
+#define FDIV 329
+#define UREM 330
+#define SREM 331
+#define FREM 332
+#define AND 333
+#define OR 334
+#define XOR 335
+#define ICMP 336
+#define FCMP 337
+#define EQ 338
+#define NE 339
+#define SLT 340
+#define SGT 341
+#define SLE 342
+#define SGE 343
+#define ULT 344
+#define UGT 345
+#define ULE 346
+#define UGE 347
+#define OEQ 348
+#define ONE 349
+#define OLT 350
+#define OGT 351
+#define OLE 352
+#define OGE 353
+#define ORD 354
+#define UNO 355
+#define UEQ 356
+#define UNE 357
+#define MALLOC 358
+#define ALLOCA 359
+#define FREE 360
+#define LOAD 361
+#define STORE 362
+#define GETELEMENTPTR 363
+#define TRUNC 364
+#define ZEXT 365
+#define SEXT 366
+#define FPTRUNC 367
+#define FPEXT 368
+#define BITCAST 369
+#define UITOFP 370
+#define SITOFP 371
+#define FPTOUI 372
+#define FPTOSI 373
+#define INTTOPTR 374
+#define PTRTOINT 375
+#define PHI_TOK 376
+#define SELECT 377
+#define SHL 378
+#define LSHR 379
+#define ASHR 380
+#define VAARG 381
+#define EXTRACTELEMENT 382
+#define INSERTELEMENT 383
+#define SHUFFLEVECTOR 384
+#define NORETURN 385
+#define DEFAULT 386
+#define HIDDEN 387
 
 
 
 
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
-#line 883 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
-{
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 883 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
+typedef union YYSTYPE {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
   llvm::BasicBlock                       *BasicBlockVal;
@@ -356,10 +343,9 @@
   llvm::Module::Endianness          Endianness;
   llvm::ICmpInst::Predicate         IPredicate;
   llvm::FCmpInst::Predicate         FPredicate;
-}
-/* Line 1489 of yacc.c.  */
-#line 362 "llvmAsmParser.tab.h"
-	YYSTYPE;
+} YYSTYPE;
+/* Line 1447 of yacc.c.  */
+#line 349 "llvmAsmParser.tab.h"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
@@ -367,3 +353,5 @@
 
 extern YYSTYPE llvmAsmlval;
 
+
+
diff --git a/lib/AsmParser/llvmAsmParser.y.cvs b/lib/AsmParser/llvmAsmParser.y.cvs
index 52d8847..06d4666 100644
--- a/lib/AsmParser/llvmAsmParser.y.cvs
+++ b/lib/AsmParser/llvmAsmParser.y.cvs
@@ -970,7 +970,7 @@
 // Built in types...
 %type  <TypeVal> Types ResultTypes
 %type  <PrimType> IntType FPType PrimType           // Classifications
-%token <PrimType> VOID BOOL INTTYPE 
+%token <PrimType> VOID INTTYPE 
 %token <PrimType> FLOAT DOUBLE LABEL
 %token TYPE
 
@@ -1198,7 +1198,7 @@
 
 // Derived types are added later...
 //
-PrimType : BOOL | INTTYPE | FLOAT | DOUBLE | LABEL ;
+PrimType : INTTYPE | FLOAT | DOUBLE | LABEL ;
 
 Types 
   : OPAQUE {
@@ -1686,11 +1686,13 @@
     $$ = ConstantInt::get($1, $2);
     CHECK_FOR_ERROR
   }
-  | BOOL TRUETOK {                      // Boolean constants
+  | INTTYPE TRUETOK {                      // Boolean constants
+    assert(cast<IntegerType>($1)->getBitWidth() == 1 && "Not Bool?");
     $$ = ConstantInt::getTrue();
     CHECK_FOR_ERROR
   }
-  | BOOL FALSETOK {                     // Boolean constants
+  | INTTYPE FALSETOK {                     // Boolean constants
+    assert(cast<IntegerType>($1)->getBitWidth() == 1 && "Not Bool?");
     $$ = ConstantInt::getFalse();
     CHECK_FOR_ERROR
   }
@@ -2362,7 +2364,8 @@
     CHECK_FOR_ERROR
     $$ = new BranchInst(tmpBB);
   }                                                  // Conditional Branch...
-  | BR BOOL ValueRef ',' LABEL ValueRef ',' LABEL ValueRef {  
+  | BR INTTYPE ValueRef ',' LABEL ValueRef ',' LABEL ValueRef {  
+    assert(cast<IntegerType>($2)->getBitWidth() == 1 && "Not Bool?");
     BasicBlock* tmpBBA = getBBVal($6);
     CHECK_FOR_ERROR
     BasicBlock* tmpBBB = getBBVal($9);
