diff --git a/lib/AsmParser/Lexer.cpp.cvs b/lib/AsmParser/Lexer.cpp.cvs
index 536d569..4522aa8 100644
--- a/lib/AsmParser/Lexer.cpp.cvs
+++ b/lib/AsmParser/Lexer.cpp.cvs
@@ -1,51 +1,94 @@
-#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 2 "Lexer.cpp"
 
-#line 20 "Lexer.cpp"
+#line 4 "Lexer.cpp"
+
+#define  YY_INT_ALIGNED short int
+
 /* A lexical scanner generated by flex */
 
-/* Scanner skeleton version:
- * $Header: /cvs/root/flex/flex/skel.c,v 1.2 2004/05/07 00:28:17 jkh Exp $
- */
-
 #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>
 
+/* end standard C headers. */
 
-/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
-#ifdef c_plusplus
-#ifndef __cplusplus
-#define __cplusplus
-#endif
+/* 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
 #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>
-#include <unistd.h>
-
-/* Use prototypes in function declarations. */
-#define YY_USE_PROTOS
-
 /* The "const" storage-class-modifier is valid. */
 #define YY_USE_CONST
 
@@ -53,34 +96,17 @@
 
 #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
 
@@ -95,71 +121,88 @@
  * 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 yyrestart( yyin )
+#define YY_NEW_FILE llvmAsmrestart(llvmAsmin  )
 
 #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 yyleng;
-extern FILE *yyin, *yyout;
+extern int llvmAsmleng;
+
+extern FILE *llvmAsmin, *llvmAsmout;
 
 #define EOB_ACT_CONTINUE_SCAN 0
 #define EOB_ACT_END_OF_FILE 1
 #define EOB_ACT_LAST_MATCH 2
 
-/* The funky do-while in the following #define is used to turn the definition
- * int a single C statement (which needs a semi-colon terminator).  This
- * avoids problems with code like:
- *
- * 	if ( condition_holds )
- *		yyless( 5 );
- *	else
- *		do_something_else();
- *
- * Prior to using the do-while the compiler would get upset at the
- * "else" because it interpreted the "if" statement as being all
- * done when it reached the ';' after the yyless() call.
- */
-
-/* Return all but the first 'n' matched characters back to the input stream. */
-
+    /* 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. */
 #define yyless(n) \
 	do \
 		{ \
-		/* Undo effects of setting up yytext. */ \
-		*yy_cp = yy_hold_char; \
+		/* Undo effects of setting up llvmAsmtext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		*yy_cp = (yy_hold_char); \
 		YY_RESTORE_YY_MORE_OFFSET \
-		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
-		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up llvmAsmtext again */ \
 		} \
 	while ( 0 )
 
-#define unput(c) yyunput( c, yytext_ptr )
+#define unput(c) yyunput( c, (yytext_ptr)  )
 
 /* 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;
@@ -196,12 +239,16 @@
 	 */
 	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
@@ -211,207 +258,209 @@
 	 * possible backing-up.
 	 *
 	 * When we actually see the EOF, we change the status to "new"
-	 * (via yyrestart()), so that the user can continue scanning by
-	 * just pointing yyin at a new input file.
+	 * (via llvmAsmrestart()), so that the user can continue scanning by
+	 * just pointing llvmAsmin at a new input file.
 	 */
 #define YY_BUFFER_EOF_PENDING 2
-	};
 
-static YY_BUFFER_STATE yy_current_buffer = 0;
+	};
+#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. */
 
 /* 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_current_buffer
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+                          : NULL)
 
+/* 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 yytext is formed. */
+/* yy_hold_char holds the character lost when llvmAsmtext is formed. */
 static char yy_hold_char;
-
 static int yy_n_chars;		/* number of characters read into yy_ch_buf */
-
-
-int yyleng;
+int llvmAsmleng;
 
 /* Points to current character in buffer. */
 static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 1;		/* whether we need to initialize */
+static int yy_init = 0;		/* whether we need to initialize */
 static int yy_start = 0;	/* start state number */
 
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin.  A bit of a hack ...
+/* Flag which is used to allow llvmAsmwrap()'s to do buffer switches
+ * instead of setting up a fresh llvmAsmin.  A bit of a hack ...
  */
 static int yy_did_buffer_switch_on_eof;
 
-void yyrestart YY_PROTO(( FILE *input_file ));
+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 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 )
+static void llvmAsmensure_buffer_stack (void );
+static void llvmAsm_load_buffer_state (void );
+static void llvmAsm_init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
-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 ));
+#define YY_FLUSH_BUFFER llvmAsm_flush_buffer(YY_CURRENT_BUFFER )
 
-static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
-static void yy_flex_free YY_PROTO(( void * ));
+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  );
 
-#define yy_new_buffer yy_create_buffer
+void *llvmAsmalloc (yy_size_t  );
+void *llvmAsmrealloc (void *,yy_size_t  );
+void llvmAsmfree (void *  );
+
+#define yy_new_buffer llvmAsm_create_buffer
 
 #define yy_set_interactive(is_interactive) \
 	{ \
-	if ( ! yy_current_buffer ) \
-		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-	yy_current_buffer->yy_is_interactive = is_interactive; \
+	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; \
 	}
 
 #define yy_set_bol(at_bol) \
 	{ \
-	if ( ! yy_current_buffer ) \
-		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-	yy_current_buffer->yy_at_bol = at_bol; \
+	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; \
 	}
 
-#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 
+/* Begin user sect3 */
 
-#define YY_USES_REJECT
-
-#define yywrap() 1
+#define llvmAsmwrap(n) 1
 #define YY_SKIP_YYWRAP
-typedef unsigned char YY_CHAR;
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
-typedef int yy_state_type;
-extern int yylineno;
-int yylineno = 1;
-extern char *yytext;
-#define yytext_ptr yytext
 
-static yy_state_type yy_get_previous_state YY_PROTO(( void ));
-static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
-static int yy_get_next_buffer YY_PROTO(( void ));
-static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
+typedef unsigned char YY_CHAR;
+
+FILE *llvmAsmin = (FILE *) 0, *llvmAsmout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+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[]  );
 
 /* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
+ * corresponding action - sets up llvmAsmtext.
  */
 #define YY_DO_BEFORE_ACTION \
-	yytext_ptr = yy_bp; \
-	yyleng = (int) (yy_cp - yy_bp); \
-	yy_hold_char = *yy_cp; \
+	(yytext_ptr) = yy_bp; \
+	llvmAsmleng = (size_t) (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 152
-#define YY_END_OF_BUFFER 153
-static yyconst short int yy_acclist[233] =
+#define YY_NUM_RULES 154
+#define YY_END_OF_BUFFER 155
+/* 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[609] =
     {   0,
-      153,  151,  152,  150,  151,  152,  150,  152,  151,  152,
-      151,  152,  151,  152,  151,  152,  151,  152,  151,  152,
-      140,  151,  152,  140,  151,  152,    1,  151,  152,  151,
-      152,  151,  152,  151,  152,  151,  152,  151,  152,  151,
-      152,  151,  152,  151,  152,  151,  152,  151,  152,  151,
-      152,  151,  152,  151,  152,  151,  152,  151,  152,  151,
-      152,  151,  152,  151,  152,  151,  152,  151,  152,  151,
-      152,  151,  152,  151,  152,  137,  135,  133,  143,  141,
-      145,  140,    1,  134,  144,  119,   38,   82,   64,   83,
-       78,   25,  137,  139,  133,  145,   22,  145,  146,  138,
+        0,    0,  155,  153,  152,  152,  153,  153,  153,  153,
+      153,  153,  142,  142,    1,  153,  153,  153,  153,  153,
+      153,  153,  153,  153,  153,  153,  153,  153,  153,  153,
+      153,  153,  153,  153,  153,  153,  153,  153,    0,  139,
+        0,  137,    0,  135,  145,    0,  143,    0,  147,  142,
+        0,    1,    0,  136,  146,    0,    0,    0,    0,    0,
+        0,    0,  121,    0,    0,   38,    0,    0,    0,    0,
+        0,    0,   84,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   66,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   85,    0,    0,    0,    0,    0,    0,
 
-      134,   65,   77,   36,   39,    3,   67,   92,   97,   95,
-       96,   94,   93,   98,  102,  118,   87,   85,   74,   86,
-       84,   66,  100,   91,   89,   90,   88,  101,   99,   79,
-      136,  145,  145,  147,  148,  149,   76,  103,   81,   70,
-      126,   73,   80,  127,   75,   52,   24,  142,   69,  106,
-       72,   47,   26,    4,   62,   68,   71,   55,   12,  105,
-      145,   34,   32,    2,   51,    5,   56,   59,  108,   46,
-       61,   53,  128,  104,   23,   54,  125,   41,    7,   57,
-       40,  112,  111,    8,   16,  121,  124,   35,   63,  116,
-      110,  120,   27,   28,  109,  122,  117,  115,    6,   29,
+        0,   80,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   25,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  139,    0,  141,
+      135,  147,   22,  147,    0,  148,    0,    0,    0,    0,
+      140,  136,   67,    0,    0,   79,    0,    0,   36,    0,
+        0,    0,    0,   39,    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,   69,    0,    0,
 
-      107,   50,   33,   44,   45,    9,   19,   10,  113,   11,
-       49,   48,  114,   31,   58,   13,   15,   14,   60,   17,
-       30,   37,   18,  123,   20,  129,  131,  132,   42,  130,
-       43,   21
+        0,    0,    0,   94,   99,   97,   98,   96,   95,    0,
+      100,  104,    0,    0,    0,    0,  120,    0,    0,    0,
+        0,    0,   89,   87,   76,    0,    0,    0,    0,   88,
+       86,    0,    0,   68,    0,    0,    0,    0,    0,    0,
+        0,    0,  102,   93,   91,    0,   92,   90,    0,  103,
+      101,    0,    0,    0,    0,    0,    0,    0,    0,   81,
+        0,    0,  138,  147,    0,    0,    0,  147,  149,  150,
+      151,    0,    0,    0,    0,   78,    0,    0,    0,  105,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   83,   72,    0,    0,    0,    0,    0,
+
+      128,   75,    0,    0,    0,   82,    0,    0,    0,    0,
+        0,    0,    0,  129,   77,    0,    0,   52,    0,    0,
+        0,   24,    0,    0,    0,    0,   53,  144,   71,    0,
+        0,  108,    0,    0,    0,    0,   74,   47,    0,    0,
+       26,    0,    0,    0,    4,    0,   64,   70,    0,    0,
+        0,    0,   73,    0,   57,    0,   12,    0,    0,  107,
+      147,   34,   32,    0,    0,    2,    0,   51,    0,   54,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    5,
+        0,   58,   61,  110,    0,    0,    0,    0,    0,    0,
+       46,    0,    0,    0,    0,   63,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   55,
+        0,    0,    0,    0,  130,    0,    0,    0,    0,  106,
+        0,   23,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   56,  127,    0,    0,   41,    0,    0,    0,    7,
+        0,    0,    0,   59,    0,    0,   40,  114,  113,    0,
+        0,    8,   16,    0,    0,    0,  123,    0,  126,   35,
+        0,    0,    0,   65,    0,    0,    0,    0,  118,    0,
+        0,    0,  112,  122,   27,    0,   28,  111,    0,  124,
+      119,    0,    0,    0,    0,    0,    0,    0,  117,    0,
+        0,    6,   29,    0,    0,    0,    0,    0,  109,    0,
+
+        0,    0,    0,    0,   50,    0,    0,    0,    0,    0,
+       33,    0,    0,   44,    0,    0,    0,    0,    0,    0,
+       45,    0,    0,    9,    0,    0,    0,    0,   19,    0,
+        0,    0,   10,  115,   11,   49,   48,    0,    0,  116,
+        0,    0,    0,    0,   31,    0,   60,    0,    0,   13,
+        0,   15,   14,    0,    0,    0,    0,   62,   17,    0,
+        0,    0,    0,    0,    0,    0,   30,    0,    0,    0,
+        0,    0,   37,    0,    0,    0,    0,    0,   18,    0,
+        0,    0,    0,    0,  125,    0,    0,    0,    0,    0,
+        0,    0,   20,    0,    0,    0,    0,  131,  133,  134,
+
+        0,   42,    0,  132,   43,    0,   21,    0
     } ;
 
-static yyconst short int yy_accept[607] =
-    {   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,   76,   76,
-       77,   77,   78,   78,   79,   80,   80,   81,   81,   82,
-       83,   83,   84,   84,   85,   86,   86,   86,   86,   86,
-       86,   86,   86,   87,   87,   87,   88,   88,   88,   88,
-       88,   88,   88,   89,   89,   89,   89,   89,   89,   89,
-       89,   89,   89,   89,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   91,   91,   91,   91,   91,   91,
-
-       91,   91,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   94,   94,   95,
-       96,   97,   98,   99,   99,  100,  100,  100,  100,  100,
-      101,  102,  103,  103,  103,  104,  104,  104,  105,  105,
-      105,  105,  105,  106,  106,  106,  106,  106,  106,  106,
-      106,  106,  107,  107,  107,  107,  107,  107,  107,  107,
-      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
-      107,  107,  107,  107,  107,  107,  107,  108,  108,  108,
-
-      108,  108,  108,  109,  110,  111,  112,  113,  114,  114,
-      115,  116,  116,  116,  116,  117,  117,  117,  117,  117,
-      117,  118,  119,  120,  120,  120,  120,  120,  121,  122,
-      122,  122,  123,  123,  123,  123,  123,  123,  123,  123,
-      123,  124,  125,  126,  126,  127,  128,  128,  129,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  131,  131,
-      131,  132,  133,  133,  133,  133,  134,  135,  136,  137,
-      137,  137,  137,  137,  138,  138,  138,  138,  139,  139,
-      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,  140,  141,  141,  141,  141,  141,  141,  142,
-
-      143,  143,  143,  143,  144,  144,  144,  144,  144,  144,
-      144,  144,  145,  146,  146,  146,  147,  147,  147,  147,
-      148,  148,  148,  148,  148,  149,  150,  150,  150,  151,
-      151,  151,  151,  151,  152,  153,  153,  153,  154,  154,
-      154,  154,  155,  155,  156,  157,  157,  157,  157,  157,
-      158,  158,  159,  159,  160,  160,  160,  161,  162,  163,
-      164,  164,  164,  165,  165,  166,  166,  166,  166,  166,
-      166,  166,  166,  166,  166,  166,  166,  167,  167,  168,
-      169,  170,  170,  170,  170,  170,  170,  170,  171,  171,
-      171,  171,  171,  172,  172,  172,  172,  172,  172,  172,
-
-      172,  172,  172,  172,  172,  172,  172,  173,  173,  173,
-      173,  173,  174,  174,  174,  174,  174,  175,  175,  176,
-      176,  176,  176,  176,  176,  176,  176,  176,  176,  177,
-      178,  178,  178,  179,  179,  179,  179,  180,  180,  180,
-      180,  181,  181,  181,  182,  183,  184,  184,  184,  185,
-      186,  186,  186,  186,  187,  187,  188,  189,  189,  189,
-      189,  190,  190,  190,  190,  190,  191,  191,  191,  191,
-      192,  193,  194,  194,  195,  196,  196,  197,  198,  198,
-      198,  198,  198,  198,  198,  198,  199,  199,  199,  200,
-      201,  201,  201,  201,  201,  201,  202,  202,  202,  202,
-
-      202,  202,  203,  203,  203,  203,  203,  203,  204,  204,
-      204,  205,  205,  205,  205,  205,  205,  205,  206,  206,
-      206,  207,  207,  207,  207,  207,  208,  208,  208,  208,
-      209,  210,  211,  212,  213,  213,  213,  214,  214,  214,
-      214,  214,  215,  215,  216,  216,  216,  217,  217,  218,
-      219,  219,  219,  219,  219,  220,  221,  221,  221,  221,
-      221,  221,  221,  221,  222,  222,  222,  222,  222,  222,
-      223,  223,  223,  223,  223,  223,  224,  224,  224,  224,
-      224,  224,  225,  225,  225,  225,  225,  225,  225,  225,
-      226,  226,  226,  226,  226,  227,  228,  229,  229,  230,
-
-      230,  231,  232,  232,  233,  233
-    } ;
-
-static yyconst int yy_ec[256] =
+static yyconst flex_int32_t yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
@@ -443,7 +492,7 @@
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[50] =
+static yyconst flex_int32_t yy_meta[50] =
     {   0,
         1,    1,    2,    3,    4,    1,    5,    6,    4,    7,
         7,    7,    7,    7,    7,    8,    1,    1,    4,    9,
@@ -452,294 +501,294 @@
         4,    4,    4,    4,    4,    4,    4,    4,    4
     } ;
 
-static yyconst short int yy_base[617] =
+static yyconst flex_int16_t yy_base[620] =
     {   0,
-        0,    0, 1381, 1382, 1382, 1382, 1376, 1363,   46,   52,
-       58,   66,   74, 1331,    0,   87,   76,   79,   78,   94,
+        0,    0, 1387, 1388, 1388, 1388, 1382, 1369,   46,   52,
+       58,   66,   74, 1337,    0,   87,   76,   79,   78,   94,
        77,  106,  109,   63,  138,  130,  141,  140,  151,  155,
-      110,  189,  175,  226,  145,  114,   38,  144, 1373, 1382,
-     1360, 1382, 1371,    0,  233,  259,  265,  119,  303, 1327,
-      323,    0, 1369,    0,  271,  146,  160,  161,   39,  165,
-      188,   64, 1356,   36,  124,  187,  190,   93,  199,  193,
-      195,  221, 1355,  121,  218,  215,  225,  224,  277,  236,
-      248,  271,  273,  175,  274,  283,  240,  284,  278,  126,
-      276,  279,  292,   35,  314,  306,  289,  331,  338,  340,
+      110,  190,  179,  227,  145,  114,   38,  144, 1379, 1388,
+     1366, 1388, 1377,    0,  234,  260,  266,  119,  304, 1333,
+      324,    0, 1375,    0,  272,  146,  175,  148,   39,  161,
+      185,   64, 1362,   36,  124,  186,  189,   93,  212,  219,
+      165,  187, 1361,  198,  224,  196,  234,  191,  278,  236,
+      214,  272,  274,  226,  275,  284,  277,  121,  276,  280,
+      288,  281,  306,   35,  315,  326,  290,  339,  341,  279,
 
-      315,  343,  345,  341,  346,  347,  348,  349,  350,  359,
-      356,  354,  364,  361,  371,  363,  377,  381,  386,  389,
-     1354,  392,  393,  395,  394,  397,  396,  400,  417,  402,
-      280,  419,  357,  194,  401,  406, 1353, 1364, 1382,    0,
-      395, 1351,    0,  457,  427,  464,  485,  506, 1362, 1382,
-        0, 1349,  435,  421, 1348,  428,  440, 1347,  405,  511,
-      512,  445, 1346,  513,  446,  514,  466,  469,  471,  524,
-      526, 1345,  527,  506,  507,  470,  528,  529,  286,  508,
-      531,  530,  533,  535,  542,  544,  547,  548,  549,  551,
-      555,  407,  558,  559,  563,  564, 1344,  566,  569,  565,
+      342,  332,  346,  347,  348,  349,  350,  289,  353,  355,
+      360,  356,  357,  365,  373,  381,  367,  378,  382,  387,
+      390, 1360,  393,  222,  396,  395,  398,  397,  401,  405,
+      403,  423,  420,  429,  361,  407,  409, 1359, 1370, 1388,
+        0,  429, 1357,    0,  452,  448,  462,  483,  504, 1368,
+     1388,    0, 1355,  510,  441, 1354,  470,  464, 1353,  445,
+      509,  512,  469, 1352,  511,  504,  522,  505,  467,  526,
+      527,  426, 1351,  528,  506,  529,  468,  283,  533,  406,
+      534,  535,  538,  536,  537,  543,  539,  546,  548,  550,
+      552,  554,  564,  566,  568,  569,  570, 1350,  572,  571,
 
-      574,  571, 1343, 1342, 1341, 1340, 1339, 1338,  572, 1337,
-     1336,  575,  577,  579, 1335,  613,  585,  586,  581,  591,
-     1334, 1333, 1332,  587,  589,  598,  599, 1331, 1330,  615,
-      580, 1329,  603,  620,  628,  631,  629,  632,  633,  634,
-     1328, 1327, 1326,  636, 1325, 1324,  637, 1323, 1322,  638,
-      640,  641,  647,  648,  655,  649,  654, 1321,  659,  665,
-     1382,  662,  500,  674,  685,  687,    0,    0,    0,  674,
-      680,  682,  683, 1320,  684,  685,  687, 1319,  686,  688,
-      689,  690,  691,  696,  695,  698,  702,  703,  707,  709,
-      714, 1318, 1317,  710,  720,  711,  717,  723, 1316, 1315,
+      573,  575,  576, 1349, 1348, 1347, 1346, 1345, 1344,  579,
+     1343, 1342,  581,  580,  583,  584, 1341,  617,  594,  591,
+      587,  592, 1340, 1339, 1338,  408,  604,  585,  602, 1337,
+     1336,  605,  608, 1335,  609,  622,  634,  635,  637,  638,
+      639,  640, 1334, 1333, 1332,  642, 1331, 1330,  643, 1329,
+     1328,  644,  645,  646,  654,  653,  658,  650,  647, 1327,
+      661,  670, 1388,  667,  681,  680,  690,  693,    0,    0,
+        0,  686,  687,  688,  689, 1326,  690,  691,  694, 1325,
+      692,  693,  695,  696,  698,  701,  702,  704,  706,  707,
+      717,  709,  716, 1324, 1323,  715,  729,  721,  723,  730,
 
-      727,  724,  729, 1314,  732,  730,  731,  735,  734,  739,
-      740, 1313, 1312,  741,  748, 1311,  736,  744,  749, 1310,
-      750,  754,  759,  760,    0, 1309,  764,  765,  783,  761,
-      773,  774,  766, 1308, 1307,  777,  784, 1306,  785,  788,
-      789, 1305,  791, 1304, 1303,  792,  793,  794,  796, 1302,
-      799, 1301,  800, 1300,  804,  809,  825,  837, 1299, 1298,
-      801,  816, 1297,  813, 1296,  829,  805,  837,  819,  838,
-      842,  820,  841,  845,  847,  848, 1295,  849, 1294, 1293,
-     1292,  850,  853,  854,  856,  855,  857, 1291,  861,  862,
-      863,  866, 1290,  871,  865,  872,  873,  877,  880,  881,
+     1322, 1321,  731,  734,  739, 1320,  738,  735,  736,  737,
+      744,  745,  741, 1319, 1318,  746,  747, 1317,  740,  754,
+      755, 1316,  756,  765,  767,  769, 1315,    0, 1314,  770,
+      771,  786,  774,  776,  777,  778, 1313, 1312,  783,  793,
+     1311,  794,  797,  795, 1310,  798, 1309, 1308,  799,  801,
+      802,  800, 1307,  803, 1306,  805, 1305,  808,  810,  830,
+      841, 1304, 1303,  820,  812, 1302,  818, 1301,  831,  841,
+      843,  826,  833,  845,  825,  847,  849,  853,  854, 1300,
+      856, 1299, 1298, 1297,  858,  859,  857,  860,  861,  863,
+     1296,  864,  866,  869,  868, 1295,  872,  871,  877,  879,
 
-      884,  887,  889,  890,  891,  909, 1382,  900,  899,  893,
-      902, 1289,  901,  903,  904,  908, 1288,  909, 1287,  911,
-      914,  920,  910,  928,  915,  923,  929,  947, 1382, 1286,
-      931,  936, 1285,  938,  939,  940, 1284,  941,  943,  944,
-     1283,  947,  945, 1282, 1281, 1280,  946,  949, 1279, 1278,
-      960,  952,  958, 1277,  964, 1276, 1275,  962,  968,  970,
-     1274,  979,  976,  977,  978, 1273,  981,  982,  980, 1272,
-     1271, 1270,  815, 1269, 1268,  984, 1263, 1260,  983,  986,
-      990,  992,  987, 1001,  995, 1257,  997, 1005, 1245, 1242,
-     1006, 1008, 1009, 1010, 1013, 1230, 1015, 1011, 1017, 1019,
+      883,  885,  886,  889,  894,  896,  895,  897,  914, 1388,
+      903,  904,  898,  907, 1294,  909,  906,  908,  910, 1293,
+      914, 1292,  915,  916,  919,  921,  927,  931,  932,  935,
+      953, 1388, 1291,  942,  941, 1290,  943,  944,  947, 1289,
+      945,  948,  951, 1288,  946,  952, 1287, 1286, 1285,  961,
+      949, 1284, 1283,  953,  965,  957, 1282,  967, 1281, 1280,
+      962,  975,  977, 1279,  490,  980,  981,  982, 1278,  983,
+      985,  986, 1273, 1270, 1267,  987, 1255, 1252,  989, 1240,
+     1237,  990,  991,  993,  994,  997, 1001, 1004, 1227, 1008,
+     1010, 1224, 1221, 1011, 1012, 1014, 1015, 1016, 1214, 1020,
 
-     1021, 1227, 1020, 1023, 1042, 1032, 1022, 1217, 1025, 1037,
-     1214, 1040, 1043, 1047, 1046, 1057, 1053, 1211, 1048, 1055,
-     1204, 1056, 1058, 1061, 1063, 1192, 1062, 1065, 1066, 1191,
-     1190, 1189, 1188, 1187, 1068, 1071, 1186, 1069, 1078, 1072,
-     1077, 1184, 1080, 1182, 1090, 1092, 1181, 1074, 1180, 1179,
-     1093, 1095, 1096, 1097, 1177, 1174, 1100, 1098, 1103, 1105,
-     1104, 1107, 1106, 1173, 1110, 1112, 1116, 1118, 1119, 1170,
-     1120, 1121, 1122, 1130, 1133, 1169, 1127, 1135, 1136, 1137,
-     1142,  821, 1144, 1143, 1138, 1145, 1147, 1148, 1151,  600,
-     1153, 1156, 1150, 1158,  597,  487,  404, 1160,  360, 1165,
+     1019, 1021, 1022, 1026, 1202, 1027, 1030, 1045, 1043, 1023,
+     1201, 1028, 1046, 1200, 1049, 1051, 1052, 1031, 1061, 1053,
+     1199, 1054, 1062, 1198, 1063, 1066, 1067, 1069, 1197, 1070,
+     1071, 1072, 1196, 1195, 1194, 1193, 1192, 1074, 1075, 1190,
+     1083, 1079, 1076, 1078, 1189, 1084, 1187, 1097, 1086, 1185,
+     1080, 1184, 1183, 1099, 1100, 1101, 1102, 1181, 1180, 1104,
+     1105, 1109, 1110, 1112, 1111, 1114, 1179, 1116, 1117, 1118,
+     1125, 1119, 1163, 1124, 1126, 1131, 1135, 1136, 1161, 1127,
+     1142, 1143, 1144, 1148,  819, 1149, 1145, 1153, 1151, 1152,
+     1147, 1157,  775, 1160, 1162, 1158, 1159,  601,  364,  362,
 
-      281,  234, 1168,   90, 1382, 1209, 1215, 1222, 1231, 1238,
-     1247, 1253, 1262, 1268, 1271, 1276
+     1165,  282, 1175,  173,  126, 1178,   90, 1388, 1219, 1225,
+     1232, 1241, 1248, 1257, 1263, 1272, 1278, 1281, 1286
     } ;
 
-static yyconst short int yy_def[617] =
+static yyconst flex_int16_t yy_def[620] =
     {   0,
-      605,    1,  605,  605,  605,  605,  606,  607,  608,  605,
-      607,  607,  607,   13,  609,  610,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  606,  605,
-      607,  605,  611,  612,  605,  605,   13,  607,  607,   13,
-       49,  609,  613,  614,  605,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,   25,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
+      608,    1,  608,  608,  608,  608,  609,  610,  611,  608,
+      610,  610,  610,   13,  612,  613,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  609,  608,
+      610,  608,  614,  615,  608,  608,   13,  610,  610,   13,
+       49,  612,  616,  617,  608,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,   25,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
 
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  605,  611,  605,  612,
-      615,  607,   49,  607,   51,   49,   49,   49,  613,  605,
-      614,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  608,  614,  608,
+      615,  618,  610,   49,  610,   51,   49,   49,   49,  616,
+      608,  617,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
 
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,   49,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      605,  615,  616,  605,  144,  144,  146,  147,  148,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,   49,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  608,  618,  619,  608,  145,  145,  147,  148,
+      149,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
 
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  216,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  605,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  218,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      608,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
 
-      607,  607,  607,  607,  607,  605,  605,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  605,  605,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
+      610,  610,  610,  610,  610,  610,  610,  610,  608,  608,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      608,  608,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
 
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
-      607,  607,  607,  607,  607,  607,  607,  607,  607,  607,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
 
-      607,  607,  607,  607,    0,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605
+      610,  610,  610,  610,  610,  610,  610,    0,  608,  608,
+      608,  608,  608,  608,  608,  608,  608,  608,  608
     } ;
 
-static yyconst short int yy_nxt[1432] =
+static yyconst flex_int16_t yy_nxt[1438] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
        14,   14,   14,   14,   14,    4,   15,   16,    8,    8,
         8,    8,    8,    8,   17,   18,   19,   20,   21,   22,
        23,   24,   25,    8,   26,   27,   28,   29,   30,    8,
        31,   32,   33,   34,   35,   36,   37,    8,   38,   43,
-       42,   42,  134,   42,   42,   45,   45,   45,   45,   45,
+       42,   42,  135,   42,   42,   45,   45,   45,   45,   45,
        45,   46,   46,   46,   46,   46,   46,   47,   47,   47,
-       47,   47,   47,   42,   48,  135,  198,  156,   42,   42,
-      161,   42,   49,   50,   50,   50,   50,   50,   50,   42,
+       47,   47,   47,   42,   48,  136,  199,  157,   42,   42,
+      162,   42,   49,   50,   50,   50,   50,   50,   50,   42,
        53,   42,   42,   42,   42,   83,   55,   55,   55,   55,
 
-       55,   55,   65,   56,   66,   42,  160,   61,   42,   42,
+       55,   55,   65,   56,   66,   42,  161,   61,   42,   42,
        57,   62,   58,   72,   59,   67,   73,   60,   68,   63,
-       51,   42,   69,   74,   42,   42,   64,  142,   70,   42,
-       75,   71,   76,   77,   42,  166,   42,   81,  107,   42,
-       78,   42,  133,   82,   79,   42,   80,   84,   84,   84,
-       84,   84,   84,   42,   87,   42,   42,  194,  162,   42,
-       42,   42,   88,  173,   85,   91,   42,   89,   94,  131,
-       42,   90,  136,  152,   86,   42,   42,   95,   92,   97,
-       42,   98,  132,   96,   93,   99,  103,  100,  155,  101,
-       42,  102,  153,  104,  154,  105,  157,  106,  108,  119,
+       51,   42,   69,   74,   42,   42,   64,  143,   70,   42,
+       75,   71,   76,   77,   42,  167,   42,   81,  108,   42,
+       78,   42,  134,   82,   79,   42,   80,   84,   84,   84,
+       84,   84,   84,   42,   87,   42,   42,  193,  163,   42,
+       42,   42,   88,   42,   85,   91,   42,   89,   94,  132,
+       42,   90,  137,  153,   86,  156,   42,   95,   92,   97,
+       42,   98,  133,   96,   93,   99,  103,  100,   42,  101,
+       42,  102,  158,  104,   42,  105,  159,  106,  107,  109,
 
-      158,   41,   42,   42,   42,   42,  120,  257,   42,   42,
-       42,   41,  121,  163,   42,  122,  109,  110,  159,  111,
-      112,  113,  123,  114,  164,  167,  165,  170,  168,  115,
-       42,  116,  117,   42,  118,  108,   42,  169,  171,   42,
-       42,   42,   45,   45,   45,   45,   45,   45,  172,   42,
-      176,   42,  174,  124,  125,   42,  126,  177,  127,  175,
-      128,  178,  129,   42,  182,  191,  130,  141,   46,   46,
-       46,   46,   46,   46,   47,   47,   47,   47,   47,   47,
-       55,   55,   55,   55,   55,   55,   42,  179,   42,   42,
-      183,   42,   42,   42,   42,   42,   42,  295,   42,   42,
+       42,   42,   42,  120,   42,   42,   42,  154,  172,  155,
+      121,   42,  164,   42,  173,  160,  122,  110,  111,  123,
+      112,  113,  114,  165,  115,  166,  124,   42,  179,   42,
+      116,  177,  117,  118,   42,  119,  109,   42,  168,   42,
+      174,  169,   42,   45,   45,   45,   45,   45,   45,   42,
+      170,   42,   41,  171,  125,  126,  184,  127,  175,  128,
+      241,  129,   41,  130,  183,  176,  178,  131,  142,   46,
+       46,   46,   46,   46,   46,   47,   47,   47,   47,   47,
+       47,   55,   55,   55,   55,   55,   55,   42,  180,   42,
+       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
 
-      185,   42,  193,  253,   42,  180,  196,   42,  184,  186,
-      195,   41,  143,  143,  143,  143,  143,  143,   42,  181,
-      192,   42,  144,  187,  188,  189,  197,  190,  203,   42,
-       42,  144,  145,  145,  145,  145,  145,  145,  199,  209,
-      202,  145,  145,  146,  147,  148,   42,  145,  145,  145,
-      145,  145,  145,   42,  200,   42,   42,  201,   42,  204,
-       42,   42,   42,   42,   42,   42,  206,  212,  208,   42,
-      210,   42,   42,  205,   42,   42,   42,  211,   42,   42,
-      207,  256,  217,  213,  221,  218,   42,  214,  223,  228,
-      215,  225,   42,  219,  226,  216,   42,  224,  222,  230,
+      194,  186,  192,   42,   42,   42,  181,  209,  197,  185,
+      187,  195,   41,  144,  144,  144,  144,  144,  144,   42,
+      182,   42,  196,  145,  188,  189,  190,  295,  191,  204,
+       42,  217,  145,  146,  146,  146,  146,  146,  146,  200,
+      198,   42,  146,  146,  147,  148,  149,   42,  146,  146,
+      146,  146,  146,  146,   42,  201,   42,   42,  202,  211,
+      203,   42,   42,   42,   42,   42,  210,  205,   42,  207,
+       42,   42,   42,  213,  259,   42,   42,   42,  212,   42,
+       42,  206,   42,  208,  223,  214,  220,  219,   42,  215,
+      216,  225,  227,   42,  221,  228,   42,   42,  224,  218,
 
-      231,   42,  232,  229,   42,  220,  227,   42,   42,   42,
-       42,   42,   42,  233,  263,   42,   42,   42,  234,   42,
-       42,   42,   42,  263,  237,  242,  235,  240,  245,  236,
-      252,  239,   42,  241,   42,  238,   42,  275,  244,  243,
-      311,  258,  246,   42,  247,  248,  259,   41,   41,   41,
-       42,  254,  260,  255,  249,   42,  273,  250,  272,  270,
-       42,   42,  251,  264,  265,  271,  266,  266,  266,  266,
-      266,  266,   42,  267,  267,  267,  267,  267,  267,  278,
-      274,   42,  267,  267,   42,   42,   42,  280,  267,  267,
-      267,  267,  267,  267,  268,  268,  268,  268,  268,  268,
+      226,  230,   42,  234,  233,   42,  222,  229,   42,  232,
+       42,   42,   42,   42,  235,  231,   42,  297,   42,  236,
+       42,   42,   42,   42,   42,  239,  244,  237,  242,  247,
+      238,  254,  249,  250,  243,   42,  240,  333,   42,  246,
+      245,   42,  251,  248,   42,  252,  255,  260,  265,  261,
+      253,  289,  256,  258,  257,  262,   42,  265,  266,  267,
+       42,  268,  268,  268,  268,  268,  268,   42,   41,   41,
+       41,  269,  269,  269,  269,  269,  269,  277,  274,   42,
+      269,  269,   42,   42,   42,   42,  269,  269,  269,  269,
+      269,  269,  270,  270,  270,  270,  270,  270,  275,  285,
 
-      282,  283,   42,  268,  268,  284,  264,  264,  292,  268,
-      268,  268,  268,  268,  268,  269,  269,  269,  269,  269,
-      269,   42,   42,   42,  269,  269,   42,   42,   42,   42,
-      269,  269,  269,  269,  269,  269,  277,  276,  281,   42,
-      279,   42,   42,   42,   42,   42,   42,  290,   42,  291,
-       42,  287,  285,  294,  296,  288,  286,   42,  299,   42,
-      302,  301,   42,   42,   42,  300,   42,  289,  297,  303,
-       42,  298,  293,   42,   42,  305,  306,  307,   42,   42,
-       42,   42,  304,  310,   42,  312,   42,   42,  309,   42,
-       42,  308,   42,  318,   42,   42,   42,  314,  322,  313,
+      508,  270,  270,  280,  276,   42,  294,  270,  270,  270,
+      270,  270,  270,  271,  271,  271,  271,  271,  271,   42,
+       42,   42,  271,  271,   42,   42,   42,   42,  271,  271,
+      271,  271,  271,  271,  272,  278,  279,   42,  281,  284,
+      273,   42,   42,   42,   42,  282,  283,  292,   42,   42,
+       42,   42,   42,   42,   42,  287,  290,  296,   42,  288,
+      286,   42,  304,   42,  303,   42,  301,   42,  291,   42,
+      305,  293,  299,  302,  307,  300,  308,  306,  309,   42,
+      298,   42,  312,   42,   42,   42,   42,   42,   42,  311,
+       42,   42,  310,  314,   42,   42,   42,  313,   42,   42,
 
-       42,   42,   42,  317,   42,  320,   42,  315,  316,  328,
-      319,  321,   42,   42,   42,   42,  330,  331,   42,  323,
-      336,  324,  325,  325,  325,  325,  325,  325,  327,  326,
-       42,  325,  325,  329,  332,   42,  333,  325,  325,  325,
-      325,  325,  325,   42,   42,  337,   42,   42,   42,   42,
-      334,   42,   42,   42,  338,   42,   42,  335,  339,  340,
-      342,  344,   42,   42,   42,  347,  348,  341,  343,   42,
-       42,  351,  349,  346,   42,  352,  350,  355,  345,  353,
-       42,  263,  354,  358,  358,  358,  358,  358,  358,   42,
-      263,  605,   41,  605,   41,   42,  356,   42,   42,   42,
+       42,  320,   42,  316,  324,  319,   42,   42,  315,   42,
+      322,  321,  327,  317,  318,  331,   42,   42,  323,   42,
+       42,  335,  325,   42,   42,  326,  328,  328,  328,  328,
+      328,  328,  334,  330,  332,  328,  328,   42,  329,  336,
+      337,  328,  328,  328,  328,  328,  328,  338,  339,   42,
+       42,  340,   42,   42,   42,   42,  341,   42,   42,   42,
+       42,   42,   42,  343,  342,   42,  345,  347,   42,   42,
+      358,  350,  351,   42,  346,  344,   42,  352,  354,  349,
+      355,  353,  356,  357,  348,   42,  265,  266,  266,  361,
+      361,  361,  361,  361,  361,  265,  608,   41,  359,  608,
 
-       42,   42,   42,   42,   42,   42,   42,  357,  361,  364,
-       42,   42,  366,   42,  369,  359,  360,   42,   42,  362,
-      363,  365,   42,  368,   42,   42,   42,  370,  371,   42,
-      367,  376,   42,  373,  380,   42,  374,  377,   42,   42,
-      378,  372,   42,  375,   42,   42,   42,   42,  386,   42,
-       42,   42,  379,  381,   42,   42,   42,  387,  382,   42,
-      383,  385,  388,   42,   42,   42,  384,  392,  397,   42,
-      389,  390,  391,  393,   42,   42,   42,  394,  395,   42,
-       42,   42,  396,  401,  406,  407,  398,  402,   42,   42,
-      408,  405,   42,  400,  399,  411,  404,  403,   42,   42,
+       41,   42,   42,   42,   42,   42,   42,   42,   42,   42,
+       42,   42,  360,   42,  364,  367,   42,   42,  369,   42,
+      372,   42,   42,  363,   42,  365,  366,  362,  368,  371,
+       42,   42,   42,  374,  373,  370,   42,  380,   42,  376,
+      377,  379,  381,  383,   42,   42,   42,  378,  375,   42,
+       42,   42,   42,   42,   42,   42,   42,  382,  389,   42,
+       42,   42,   42,  384,  385,  388,  386,  390,  391,   42,
+       42,   42,  400,  387,  394,  392,  393,  395,  397,  396,
+       42,  399,   42,  398,   42,   42,   42,  409,  410,   42,
+       42,   42,   42,   42,  404,  405,  401,  408,   42,  403,
 
-       42,  409,  410,   42,   42,  412,   42,   42,   42,   42,
-      413,   42,  415,  414,   42,   42,   42,  417,  420,   42,
-       42,  418,  419,  416,   42,  430,  428,  429,   42,  434,
-       42,   42,  421,  424,   42,   42,   42,  426,  512,  422,
-       42,  427,  423,  431,   42,  425,  358,  358,  358,  358,
-      358,  358,   42,   42,  432,  433,   42,   42,  439,  436,
-       42,  435,   42,   42,   42,   42,  437,  438,   42,   42,
-       42,   42,   42,  441,  443,  444,   42,   42,   42,  440,
-       42,   42,  445,  442,  448,  446,   42,   42,   42,  449,
-      447,  456,   42,  450,  454,   42,   42,  458,  452,   42,
+      402,   42,  407,  411,  412,  413,  406,  414,   42,   42,
+       42,  415,   42,   42,   42,   42,   42,   42,   42,  416,
+       42,  418,  417,   42,  420,   42,  423,   42,  421,  419,
+      422,  431,  432,   42,   42,   42,  424,  427,  429,  434,
+       42,   42,  430,  425,  433,   42,   42,  426,   42,  428,
+      361,  361,  361,  361,  361,  361,   42,  436,   42,  435,
+       42,  440,   42,  442,   42,  437,  439,  438,   42,   42,
+      441,   42,   42,   42,   42,   42,   42,  444,   42,   42,
+      446,   42,  447,   42,   42,  443,   42,   42,  451,  445,
+      448,  449,   42,  450,   42,  452,  457,  459,   42,  453,
 
-      457,  453,   42,  451,   42,   42,   42,  455,   42,  461,
-      406,  407,  460,  463,   42,   42,   42,   42,   42,   42,
-      459,  464,  462,   42,   42,   42,   42,  465,  468,   42,
-       42,  473,  471,  466,  467,   42,  474,  476,   42,  469,
-      470,  477,  479,   42,   42,  472,   42,  475,  428,  429,
-      478,   42,  480,   42,   42,   42,   42,  482,   42,   42,
-       42,   42,   42,  485,   42,  484,  481,   42,  489,  483,
-      493,  494,  496,   42,  487,   42,  499,   42,  486,   42,
-      491,  492,  490,   42,  497,   42,  488,  495,  498,  505,
-      501,   42,   42,   42,   42,   42,   42,   42,   42,   42,
+       42,   42,  455,  461,   42,  460,  454,  456,  458,   42,
+       42,   42,   42,   42,  464,  409,  410,  463,   42,   42,
+      466,   42,   42,   42,   42,   42,  462,  465,  467,   42,
+       42,   42,  468,  471,   42,  476,   42,  470,  477,  469,
+      474,  479,   42,  480,  472,  473,   42,   42,  475,  481,
+       42,  483,  478,  482,  431,  432,   42,   42,   42,   42,
+       42,   42,   42,   42,   42,  484,   42,   42,   42,  496,
+      497,  487,   42,  485,  488,  492,   42,   42,  486,  490,
+       42,  501,   42,  489,  500,  494,  493,  499,  495,  502,
+       42,  491,   42,  504,  498,   42,   42,   42,   42,  503,
 
-      500,   42,   42,  502,  516,   42,  504,   42,  503,  509,
-       42,  510,   42,  507,  508,  513,   42,  514,  506,  517,
-       42,   42,  511,   42,   42,   42,   42,  515,   42,  518,
-       42,  520,   42,  519,   42,   42,   42,   42,   42,  521,
-       42,  527,  522,  528,  526,  529,  523,   42,  524,  532,
-      534,  530,   42,  535,  525,   42,  533,   42,   42,  531,
-      536,   42,   42,   42,  537,  539,  544,  541,   42,  538,
-       42,   42,   42,   42,  540,  542,   42,   42,   42,  545,
-       42,   42,  555,   42,   42,  547,   42,   42,  543,   42,
-      546,  551,   42,   42,  554,   42,  552,  557,  556,  548,
+       42,   42,   42,  505,   42,   42,   42,  519,   42,   42,
+      515,  512,   42,  507,  513,  506,   42,  510,  511,   42,
+      516,  520,  509,   42,  517,   42,   42,   42,  514,   42,
+       42,   42,  518,  522,   42,   42,   42,   42,   42,  521,
+      523,   42,   42,   42,  530,   42,   42,  525,  531,  529,
+      524,  526,  527,  532,  535,  533,  538,  537,   42,  528,
+       42,   42,  534,  536,   42,  540,   42,   42,   42,   42,
+      547,  539,  541,  546,  542,  544,   42,   42,   42,  548,
+      545,   42,   42,  543,   42,   42,   42,   42,  558,   42,
+       42,   42,  550,   42,   42,   42,  549,  554,   42,   42,
 
-      549,  553,  560,  550,  558,   42,  561,   42,   42,  559,
-       42,   42,   42,   42,  562,   42,  564,  565,   42,   42,
-       42,   42,   42,  566,  563,   42,  569,   42,  573,  571,
-      575,   42,  568,   42,   42,   42,   42,   42,  567,  572,
-      570,  574,   42,  576,  581,   42,  579,  577,   42,  582,
-       42,   42,   42,   42,  578,  586,  583,   42,   42,   42,
-       42,  580,   42,   42,  584,   42,   42,  585,   42,  592,
-      593,   42,  588,   42,  589,   42,  590,  587,  591,  598,
-       42,  594,  599,   42,   42,   42,  602,  595,   42,   42,
-      596,  597,   42,  603,   42,   42,   42,   42,  600,   42,
+      557,   42,  559,  563,  555,  561,  551,  556,  552,  553,
+      564,  560,   42,  562,   42,   42,   42,   42,  566,   42,
+       42,  565,  567,  568,   42,   42,   42,   42,  569,   42,
+      572,   42,   42,   42,   42,  574,  576,  571,  578,   42,
+       42,   42,   42,  570,  575,  577,   42,  573,  584,  579,
+       42,   42,  580,  582,  585,  589,  581,   42,   42,   42,
+       42,  583,   42,   42,   42,  586,   42,   42,   42,  587,
+      588,  595,   42,   42,   42,   42,   42,   42,   42,  591,
+       42,  592,  593,  594,  590,  596,  601,  597,  602,  599,
+       42,  605,  598,   42,   42,   42,   42,  600,   42,   42,
 
-      601,   42,   42,   42,   42,   42,   42,   42,  604,   39,
+       42,  604,   42,  606,   42,   42,  603,   42,   42,   42,
+       42,   42,   42,   42,   42,   42,   42,   42,  607,   39,
        39,   39,   39,   39,   39,   39,   39,   39,   41,   42,
        41,   41,   41,   41,   44,   44,   42,   44,   44,   42,
        44,   52,   42,   52,   52,   52,   52,   52,   52,   52,
-       54,   54,   42,   54,   54,   42,   54,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  140,   42,  140,  140,
-       42,  140,  149,  149,  149,  149,  149,  149,  149,  149,
-      149,  151,   42,  151,  151,   42,  151,  262,   42,  262,
-      358,  358,  358,   42,   42,   42,   42,   42,   42,   42,
-       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
+       54,   54,   42,   54,   54,   42,   54,  139,  139,  139,
+      139,  139,  139,  139,  139,  139,  141,   42,  141,  141,
+       42,  141,  150,  150,  150,  150,  150,  150,  150,  150,
+      150,  152,   42,  152,  152,   42,  152,  264,   42,  264,
+      361,  361,  361,   42,   42,   42,   42,   42,   42,   42,
 
        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
@@ -747,18 +796,18 @@
        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
-       42,   42,   42,   42,   42,  150,   42,  139,  261,   42,
-       42,   42,  150,   41,  139,   42,  137,   41,   42,   40,
-      605,    3,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
+       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
+       42,  151,   42,  140,  263,   42,   42,   42,  151,   41,
+      140,   42,  138,   41,   42,   40,  608,    3,  608,  608,
+      608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
 
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605
+      608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
+      608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
+      608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
+      608,  608,  608,  608,  608,  608,  608
     } ;
 
-static yyconst short int yy_chk[1432] =
+static yyconst flex_int16_t yy_chk[1438] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -771,171 +820,182 @@
        64,   12,   13,   13,   13,   13,   13,   13,   13,   13,
        16,   17,   21,   19,   18,   24,   16,   16,   16,   16,
 
-       16,   16,   19,   17,   19,  604,   62,   18,   68,   20,
+       16,   16,   19,   17,   19,  607,   62,   18,   68,   20,
        17,   18,   17,   21,   17,   19,   21,   17,   20,   18,
        13,   22,   20,   21,   23,   31,   18,   48,   20,   36,
-       22,   20,   22,   22,   48,   68,   74,   23,   31,   65,
-       22,   90,   36,   23,   22,   26,   22,   25,   25,   25,
-       25,   25,   25,   25,   26,   28,   27,   90,   65,   38,
-       35,   56,   26,   74,   25,   27,   29,   26,   28,   35,
-       30,   26,   38,   56,   25,   57,   58,   28,   27,   29,
-       60,   29,   35,   28,   27,   29,   30,   29,   58,   29,
-       33,   29,   57,   30,   57,   30,   60,   30,   32,   33,
+       22,   20,   22,   22,   48,   68,   88,   23,   31,   65,
+       22,  605,   36,   23,   22,   26,   22,   25,   25,   25,
+       25,   25,   25,   25,   26,   28,   27,   88,   65,   38,
+       35,   56,   26,   58,   25,   27,   29,   26,   28,   35,
+       30,   26,   38,   56,   25,   58,   60,   28,   27,   29,
+       71,   29,   35,   28,   27,   29,   30,   29,  604,   29,
+       57,   29,   60,   30,   33,   30,   60,   30,   30,   32,
 
-       60,   84,   66,   61,   32,   67,   33,  134,   70,  134,
-       71,   84,   33,   66,   69,   33,   32,   32,   61,   32,
-       32,   32,   33,   32,   67,   69,   67,   70,   69,   32,
-       76,   32,   32,   75,   32,   34,   72,   69,   71,   78,
-       77,   34,   45,   45,   45,   45,   45,   45,   72,  602,
-       76,   80,   75,   34,   34,   87,   34,   77,   34,   75,
-       34,   78,   34,   81,   80,   87,   34,   46,   46,   46,
-       46,   46,   46,   46,   47,   47,   47,   47,   47,   47,
-       55,   55,   55,   55,   55,   55,   82,   79,   83,   85,
-       81,   91,   79,   89,   92,  131,  601,  179,   86,   88,
+       61,   66,   72,   33,   67,   32,   78,   57,   71,   57,
+       33,   76,   66,   74,   72,   61,   33,   32,   32,   33,
+       32,   32,   32,   67,   32,   67,   33,   69,   78,   81,
+       32,   76,   32,   32,   70,   32,   34,  124,   69,   75,
+       74,   69,   34,   45,   45,   45,   45,   45,   45,   77,
+       69,   80,   84,   70,   34,   34,   81,   34,   75,   34,
+      124,   34,   84,   34,   80,   75,   77,   34,   46,   46,
+       46,   46,   46,   46,   46,   47,   47,   47,   47,   47,
+       47,   55,   55,   55,   55,   55,   55,   82,   79,   83,
+       85,   89,   87,   79,  100,   90,   92,  602,  178,   86,
 
-       83,  179,   89,  131,   97,   79,   92,   93,   82,   85,
-       91,   47,   49,   49,   49,   49,   49,   49,   49,   79,
-       88,   96,   49,   86,   86,   86,   93,   86,   97,   95,
-      101,   49,   51,   51,   51,   51,   51,   51,   95,  101,
-       96,   51,   51,   51,   51,   51,   98,   51,   51,   51,
-       51,   51,   51,   99,   95,  100,  104,   95,  102,   98,
-      103,  105,  106,  107,  108,  109,   99,  104,  100,  112,
-      102,  111,  133,   98,  110,  599,  114,  103,  116,  113,
-       99,  133,  109,  105,  111,  110,  115,  106,  112,  114,
-      107,  113,  117,  110,  113,  108,  118,  112,  111,  115,
+       89,   83,   87,   91,  108,   97,   79,  100,   92,   82,
+       85,   90,   47,   49,   49,   49,   49,   49,   49,   49,
+       79,   93,   91,   49,   86,   86,   86,  178,   86,   97,
+       95,  108,   49,   51,   51,   51,   51,   51,   51,   95,
+       93,   96,   51,   51,   51,   51,   51,  102,   51,   51,
+       51,   51,   51,   51,   98,   95,   99,  101,   95,  102,
+       96,  103,  104,  105,  106,  107,  101,   98,  109,   99,
+      110,  112,  113,  104,  135,  111,  135,  600,  103,  599,
+      114,   98,  117,   99,  112,  105,  111,  110,  115,  106,
+      107,  113,  114,  118,  111,  114,  116,  119,  112,  109,
 
-      116,  119,  117,  114,  120,  110,  113,  122,  123,  125,
-      124,  127,  126,  118,  141,  128,  135,  130,  119,  597,
-      159,  136,  192,  141,  122,  126,  119,  124,  128,  120,
-      130,  123,  129,  125,  132,  122,  154,  159,  127,  126,
-      192,  135,  128,  156,  129,  129,  136,  145,  145,  145,
-      153,  132,  136,  132,  129,  157,  156,  129,  154,  153,
-      162,  165,  129,  144,  144,  153,  144,  144,  144,  144,
-      144,  144,  144,  146,  146,  146,  146,  146,  146,  162,
-      157,  167,  146,  146,  168,  176,  169,  165,  146,  146,
-      146,  146,  146,  146,  147,  147,  147,  147,  147,  147,
+      113,  115,  120,  118,  117,  121,  111,  114,  123,  116,
+      126,  125,  128,  127,  119,  115,  129,  180,  131,  120,
+      130,  180,  136,  226,  137,  123,  127,  120,  125,  129,
+      121,  131,  130,  130,  126,  133,  123,  226,  132,  128,
+      127,  172,  130,  129,  134,  130,  132,  136,  142,  137,
+      130,  172,  133,  134,  133,  137,  155,  142,  145,  145,
+      160,  145,  145,  145,  145,  145,  145,  145,  146,  146,
+      146,  147,  147,  147,  147,  147,  147,  160,  155,  158,
+      147,  147,  169,  177,  163,  157,  147,  147,  147,  147,
+      147,  147,  148,  148,  148,  148,  148,  148,  157,  169,
 
-      167,  168,  596,  147,  147,  169,  263,  263,  176,  147,
-      147,  147,  147,  147,  147,  148,  148,  148,  148,  148,
-      148,  174,  175,  180,  148,  148,  160,  161,  164,  166,
-      148,  148,  148,  148,  148,  148,  161,  160,  166,  170,
-      164,  171,  173,  177,  178,  182,  181,  174,  183,  175,
-      184,  171,  170,  178,  180,  173,  170,  185,  182,  186,
-      184,  183,  187,  188,  189,  182,  190,  173,  181,  185,
-      191,  181,  177,  193,  194,  187,  188,  189,  195,  196,
-      200,  198,  186,  191,  199,  193,  202,  209,  190,  201,
-      212,  189,  213,  200,  214,  231,  219,  195,  212,  194,
+      465,  148,  148,  163,  158,  465,  177,  148,  148,  148,
+      148,  148,  148,  149,  149,  149,  149,  149,  149,  166,
+      168,  175,  149,  149,  161,  154,  165,  162,  149,  149,
+      149,  149,  149,  149,  154,  161,  162,  167,  165,  168,
+      154,  170,  171,  174,  176,  166,  167,  175,  179,  181,
+      182,  184,  185,  183,  187,  171,  174,  179,  186,  171,
+      170,  188,  185,  189,  184,  190,  183,  191,  174,  192,
+      186,  176,  182,  183,  188,  182,  189,  187,  190,  193,
+      181,  194,  192,  195,  196,  197,  200,  199,  201,  191,
+      202,  203,  190,  194,  210,  214,  213,  193,  215,  216,
 
-      217,  218,  224,  199,  225,  202,  220,  196,  198,  219,
-      201,  209,  595,  226,  227,  590,  224,  225,  233,  213,
-      231,  214,  216,  216,  216,  216,  216,  216,  218,  217,
-      230,  216,  216,  220,  226,  234,  227,  216,  216,  216,
-      216,  216,  216,  235,  237,  233,  236,  238,  239,  240,
-      230,  244,  247,  250,  234,  251,  252,  230,  235,  236,
-      238,  239,  253,  254,  256,  247,  250,  237,  238,  257,
-      255,  253,  251,  244,  259,  254,  252,  257,  240,  255,
-      260,  262,  256,  264,  264,  264,  264,  264,  264,  270,
-      262,  265,  265,  266,  266,  271,  259,  272,  273,  275,
+      228,  201,  221,  196,  213,  200,  220,  222,  195,  219,
+      203,  202,  216,  197,  199,  221,  598,  229,  210,  227,
+      232,  228,  214,  233,  235,  215,  218,  218,  218,  218,
+      218,  218,  227,  220,  222,  218,  218,  236,  219,  229,
+      232,  218,  218,  218,  218,  218,  218,  232,  233,  237,
+      238,  235,  239,  240,  241,  242,  236,  246,  249,  252,
+      253,  254,  259,  238,  237,  258,  240,  241,  256,  255,
+      259,  249,  252,  257,  240,  239,  261,  253,  255,  246,
+      256,  254,  257,  258,  242,  262,  264,  265,  265,  266,
+      266,  266,  266,  266,  266,  264,  267,  267,  261,  268,
 
-      276,  279,  277,  280,  281,  282,  283,  260,  272,  276,
-      285,  284,  279,  286,  282,  270,  271,  287,  288,  273,
-      275,  277,  289,  281,  290,  294,  296,  283,  284,  291,
-      280,  289,  297,  286,  295,  295,  287,  290,  298,  302,
-      291,  285,  301,  288,  303,  306,  307,  305,  302,  309,
-      308,  317,  294,  296,  310,  311,  314,  303,  297,  318,
-      297,  301,  305,  315,  319,  321,  298,  309,  317,  322,
-      306,  307,  308,  310,  323,  324,  330,  311,  314,  327,
-      328,  333,  315,  322,  329,  329,  318,  323,  331,  332,
-      330,  328,  336,  321,  319,  333,  327,  324,  329,  337,
+      268,  272,  273,  274,  275,  277,  278,  281,  282,  279,
+      283,  284,  262,  285,  274,  278,  286,  287,  281,  288,
+      284,  289,  290,  273,  292,  275,  277,  272,  279,  283,
+      296,  293,  291,  286,  285,  282,  298,  292,  299,  288,
+      289,  291,  293,  297,  297,  300,  303,  290,  287,  304,
+      308,  309,  310,  307,  305,  319,  313,  296,  304,  311,
+      312,  316,  317,  298,  299,  303,  299,  305,  307,  320,
+      321,  323,  319,  300,  310,  308,  309,  311,  313,  312,
+      324,  317,  325,  316,  326,  330,  331,  332,  332,  333,
+      593,  334,  335,  336,  324,  325,  320,  331,  339,  323,
 
-      339,  331,  332,  340,  341,  336,  343,  346,  347,  348,
-      337,  349,  340,  339,  351,  353,  361,  343,  348,  355,
-      367,  346,  347,  341,  356,  361,  357,  357,  364,  367,
-      473,  362,  349,  355,  369,  372,  582,  356,  473,  351,
-      357,  356,  353,  362,  366,  355,  358,  358,  358,  358,
-      358,  358,  368,  370,  364,  366,  373,  371,  372,  369,
-      374,  368,  375,  376,  378,  382,  370,  371,  383,  384,
-      386,  385,  387,  374,  376,  378,  389,  390,  391,  373,
-      395,  392,  382,  375,  385,  383,  394,  396,  397,  386,
-      384,  395,  398,  387,  392,  399,  400,  397,  390,  401,
+      321,  332,  330,  333,  334,  335,  326,  336,  340,  342,
+      344,  339,  343,  346,  349,  352,  350,  351,  354,  340,
+      356,  343,  342,  358,  346,  359,  351,  365,  349,  344,
+      350,  360,  360,  367,  585,  364,  352,  358,  359,  365,
+      375,  372,  359,  354,  364,  360,  369,  356,  373,  358,
+      361,  361,  361,  361,  361,  361,  370,  369,  371,  367,
+      374,  373,  376,  375,  377,  370,  372,  371,  378,  379,
+      374,  381,  387,  385,  386,  388,  389,  377,  390,  392,
+      379,  393,  381,  395,  394,  376,  398,  397,  388,  378,
+      385,  386,  399,  387,  400,  389,  395,  398,  401,  390,
 
-      396,  391,  402,  389,  403,  404,  405,  394,  410,  400,
-      406,  406,  399,  402,  409,  408,  413,  411,  414,  415,
-      398,  403,  401,  416,  418,  423,  420,  404,  409,  421,
-      425,  415,  413,  405,  408,  422,  416,  420,  426,  410,
-      411,  421,  423,  424,  427,  414,  431,  418,  428,  428,
-      422,  432,  424,  434,  435,  436,  438,  425,  439,  440,
-      443,  447,  442,  431,  448,  427,  424,  452,  436,  426,
-      442,  442,  447,  453,  434,  451,  452,  458,  432,  455,
-      439,  440,  438,  459,  448,  460,  435,  443,  451,  462,
-      455,  463,  464,  465,  462,  469,  467,  468,  479,  476,
+      402,  403,  393,  400,  404,  399,  392,  394,  397,  405,
+      407,  406,  408,  413,  403,  409,  409,  402,  411,  412,
+      405,  417,  414,  418,  416,  419,  401,  404,  406,  421,
+      423,  424,  407,  412,  425,  418,  426,  411,  419,  408,
+      416,  423,  427,  424,  413,  414,  428,  429,  417,  425,
+      430,  427,  421,  426,  431,  431,  435,  434,  437,  438,
+      441,  445,  439,  442,  451,  427,  443,  446,  454,  445,
+      445,  430,  456,  428,  434,  439,  450,  461,  429,  437,
+      455,  454,  458,  435,  451,  442,  441,  450,  443,  455,
+      462,  438,  463,  458,  446,  466,  467,  468,  470,  456,
 
-      453,  480,  483,  458,  481,  481,  460,  482,  459,  467,
-      485,  468,  487,  464,  465,  476,  484,  479,  463,  482,
-      488,  491,  469,  492,  493,  494,  498,  480,  495,  483,
-      497,  485,  499,  484,  500,  503,  501,  507,  504,  487,
-      509,  495,  488,  497,  494,  498,  491,  506,  492,  501,
-      504,  499,  510,  505,  493,  512,  503,  505,  513,  500,
-      506,  515,  514,  519,  507,  510,  516,  513,  517,  509,
-      520,  522,  516,  523,  512,  514,  524,  527,  525,  517,
-      528,  529,  535,  535,  538,  520,  536,  540,  515,  548,
-      519,  525,  541,  539,  529,  543,  527,  538,  536,  522,
+      471,  472,  476,  461,  479,  482,  483,  484,  484,  485,
+      476,  470,  486,  463,  471,  462,  487,  467,  468,  488,
+      479,  485,  466,  490,  482,  491,  494,  495,  472,  496,
+      497,  498,  483,  487,  501,  500,  502,  503,  510,  486,
+      488,  504,  506,  512,  498,  507,  518,  491,  500,  497,
+      490,  494,  495,  501,  504,  502,  508,  507,  509,  496,
+      508,  513,  503,  506,  515,  510,  516,  517,  520,  522,
+      519,  509,  512,  518,  513,  516,  519,  523,  525,  520,
+      517,  526,  527,  515,  528,  530,  531,  532,  538,  538,
+      539,  543,  523,  544,  542,  551,  522,  528,  541,  546,
 
-      523,  528,  541,  524,  539,  545,  543,  546,  551,  540,
-      552,  553,  554,  558,  545,  557,  548,  551,  559,  561,
-      560,  563,  562,  552,  546,  565,  557,  566,  561,  559,
-      563,  567,  554,  568,  569,  571,  572,  573,  553,  560,
-      558,  562,  577,  565,  571,  574,  568,  566,  575,  572,
-      578,  579,  580,  585,  567,  577,  573,  581,  584,  583,
-      586,  569,  587,  588,  574,  593,  589,  575,  591,  584,
-      585,  592,  579,  594,  580,  598,  581,  578,  583,  591,
-      600,  586,  592,  603,  576,  570,  598,  587,  564,  556,
-      588,  589,  555,  600,  550,  549,  547,  544,  593,  542,
+      532,  549,  539,  544,  530,  542,  525,  531,  526,  527,
+      546,  541,  548,  543,  554,  555,  556,  557,  549,  560,
+      561,  548,  551,  554,  562,  563,  565,  564,  555,  566,
+      560,  568,  569,  570,  572,  562,  564,  557,  566,  574,
+      571,  575,  580,  556,  563,  565,  576,  561,  574,  568,
+      577,  578,  569,  571,  575,  580,  570,  581,  582,  583,
+      587,  572,  591,  584,  586,  576,  589,  590,  588,  577,
+      578,  587,  592,  596,  597,  594,  579,  595,  573,  582,
+      601,  583,  584,  586,  581,  588,  594,  589,  595,  591,
+      603,  601,  590,  606,  567,  559,  558,  592,  553,  552,
 
-      594,  537,  534,  533,  532,  531,  530,  526,  603,  606,
-      606,  606,  606,  606,  606,  606,  606,  606,  607,  521,
-      607,  607,  607,  607,  608,  608,  518,  608,  608,  511,
-      608,  609,  508,  609,  609,  609,  609,  609,  609,  609,
-      610,  610,  502,  610,  610,  496,  610,  611,  611,  611,
-      611,  611,  611,  611,  611,  611,  612,  490,  612,  612,
-      489,  612,  613,  613,  613,  613,  613,  613,  613,  613,
-      613,  614,  486,  614,  614,  478,  614,  615,  477,  615,
-      616,  616,  616,  475,  474,  472,  471,  470,  466,  461,
-      457,  456,  454,  450,  449,  446,  445,  444,  441,  437,
+      550,  597,  547,  603,  545,  540,  596,  537,  536,  535,
+      534,  533,  529,  524,  521,  514,  511,  505,  606,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  610,  499,
+      610,  610,  610,  610,  611,  611,  493,  611,  611,  492,
+      611,  612,  489,  612,  612,  612,  612,  612,  612,  612,
+      613,  613,  481,  613,  613,  480,  613,  614,  614,  614,
+      614,  614,  614,  614,  614,  614,  615,  478,  615,  615,
+      477,  615,  616,  616,  616,  616,  616,  616,  616,  616,
+      616,  617,  475,  617,  617,  474,  617,  618,  473,  618,
+      619,  619,  619,  469,  464,  460,  459,  457,  453,  452,
 
-      433,  430,  419,  417,  412,  393,  388,  381,  380,  379,
-      377,  365,  363,  360,  359,  354,  352,  350,  345,  344,
-      342,  338,  335,  334,  326,  320,  316,  313,  312,  304,
-      300,  299,  293,  292,  278,  274,  258,  249,  248,  246,
-      245,  243,  242,  241,  232,  229,  228,  223,  222,  221,
-      215,  211,  210,  208,  207,  206,  205,  204,  203,  197,
-      172,  163,  158,  155,  152,  149,  142,  138,  137,  121,
-       73,   63,   53,   50,   43,   41,   39,   14,    8,    7,
-        3,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
+      449,  448,  447,  444,  440,  436,  433,  422,  420,  415,
+      396,  391,  384,  383,  382,  380,  368,  366,  363,  362,
+      357,  355,  353,  348,  347,  345,  341,  338,  337,  329,
+      327,  322,  318,  315,  314,  306,  302,  301,  295,  294,
+      280,  276,  260,  251,  250,  248,  247,  245,  244,  243,
+      234,  231,  230,  225,  224,  223,  217,  212,  211,  209,
+      208,  207,  206,  205,  204,  198,  173,  164,  159,  156,
+      153,  150,  143,  139,  138,  122,   73,   63,   53,   50,
+       43,   41,   39,   14,    8,    7,    3,  608,  608,  608,
+      608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
 
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605
+      608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
+      608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
+      608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
+      608,  608,  608,  608,  608,  608,  608
     } ;
 
-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; \
-}
+/* Table of booleans, true if rule could match eol. */
+static yyconst flex_int32_t yy_rule_can_match_eol[155] =
+    {   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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 
+    1, 1, 0, 0, 0, 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
 #define yymore() yymore_used_but_not_detected
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
-#line 1 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-#define INITIAL 0
+char *llvmAsmtext;
+#line 1 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 /*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===//
 //
 //                     The LLVM Compiler Infrastructure
@@ -948,8 +1008,7 @@
 //  This file implements the flex scanner for LLVM assembly languages files.
 //
 //===----------------------------------------------------------------------===*/
-#define YY_NEVER_INTERACTIVE 1
-#line 28 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 28 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 #include "ParserInternals.h"
 #include "llvm/Module.h"
 #include "llvm/Support/MathExtras.h"
@@ -959,10 +1018,10 @@
 #include <cstdlib>
 
 void set_scan_file(FILE * F){
-  yy_switch_to_buffer(yy_create_buffer( F, YY_BUF_SIZE ) );
+  llvmAsm_switch_to_buffer(llvmAsm_create_buffer(F,YY_BUF_SIZE ) );
 }
 void set_scan_string (const char * str) {
-  yy_scan_string (str);
+  llvmAsm_scan_string (str);
 }
 
 // Construct a token value for a non-obsolete token
@@ -1105,7 +1164,23 @@
  * it to deal with 64 bit numbers.
  */
 /* WSNL - shorthand for whitespace followed by newline */
-#line 1109 "Lexer.cpp"
+#line 1168 "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 );
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1113,65 +1188,30 @@
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int yywrap YY_PROTO(( void ));
+extern "C" int llvmAsmwrap (void );
 #else
-extern int yywrap YY_PROTO(( void ));
+extern int llvmAsmwrap (void );
 #endif
 #endif
 
-#ifndef YY_NO_UNPUT
-static inline void yyunput YY_PROTO(( int c, char *buf_ptr ));
-#endif
-
+    static inline void yyunput (int c,char *buf_ptr  );
+    
 #ifndef yytext_ptr
-static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+static void yy_flex_strncpy (char *,yyconst char *,int );
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+static int yy_flex_strlen (yyconst char * );
 #endif
 
 #ifndef YY_NO_INPUT
+
 #ifdef __cplusplus
-static int yyinput YY_PROTO(( void ));
+static int yyinput (void );
 #else
-static int input YY_PROTO(( void ));
-#endif
+static int input (void );
 #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. */
@@ -1180,12 +1220,11 @@
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
-
 #ifndef ECHO
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#define ECHO (void) fwrite( llvmAsmtext, llvmAsmleng, 1, llvmAsmout )
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -1193,21 +1232,35 @@
  */
 #ifndef YY_INPUT
 #define YY_INPUT(buf,result,max_size) \
-	if ( yy_current_buffer->yy_is_interactive ) \
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 		{ \
-		int c = '*', n; \
+		int c = '*'; \
+		size_t n; \
 		for ( n = 0; n < max_size && \
-			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+			     (c = getc( llvmAsmin )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \
 		if ( c == '\n' ) \
 			buf[n++] = (char) c; \
-		if ( c == EOF && ferror( yyin ) ) \
+		if ( c == EOF && ferror( llvmAsmin ) ) \
 			YY_FATAL_ERROR( "input in flex scanner failed" ); \
 		result = n; \
 		} \
-	else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
-		  && ferror( yyin ) ) \
-		YY_FATAL_ERROR( "input in flex scanner failed" );
+	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); \
+			} \
+		}\
+\
+
 #endif
 
 /* No semi-colon after return; correct usage is to write "yyterminate();" -
@@ -1228,14 +1281,20 @@
 #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 int yylex YY_PROTO(( void ))
-#endif
+#define YY_DECL_IS_OURS 1
 
-/* Code executed at the beginning of each rule, after yytext and yyleng
+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
  * have been set up.
  */
 #ifndef YY_USER_ACTION
@@ -1250,433 +1309,443 @@
 #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 int yy_act;
-
-#line 221 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+    
+#line 221 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 
 
-#line 1263 "Lexer.cpp"
+#line 1324 "Lexer.cpp"
 
-	if ( yy_init )
+	if ( !(yy_init) )
 		{
-		yy_init = 0;
+		(yy_init) = 1;
 
 #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 ( ! yyin )
-			yyin = stdin;
+		if ( ! llvmAsmin )
+			llvmAsmin = stdin;
 
-		if ( ! yyout )
-			yyout = stdout;
+		if ( ! llvmAsmout )
+			llvmAsmout = stdout;
 
-		if ( ! yy_current_buffer )
-			yy_current_buffer =
-				yy_create_buffer( yyin, YY_BUF_SIZE );
+		if ( ! YY_CURRENT_BUFFER ) {
+			llvmAsmensure_buffer_stack ();
+			YY_CURRENT_BUFFER_LVALUE =
+				llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE );
+		}
 
-		yy_load_buffer_state();
+		llvmAsm_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 yytext. */
-		*yy_cp = yy_hold_char;
+		/* Support of llvmAsmtext. */
+		*yy_cp = (yy_hold_char);
 
 		/* yy_bp points to the position in yy_ch_buf of the start of
 		 * the current run.
 		 */
 		yy_bp = yy_cp;
 
-		yy_current_state = yy_start;
-		yy_state_ptr = yy_state_buf;
-		*yy_state_ptr++ = yy_current_state;
+		yy_current_state = (yy_start);
 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 >= 606 )
+				if ( yy_current_state >= 609 )
 					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 != 605 );
+		while ( yy_current_state != 608 );
+		yy_cp = (yy_last_accepting_cpos);
+		yy_current_state = (yy_last_accepting_state);
 
 yy_find_action:
-		yy_current_state = *--yy_state_ptr;
-		yy_lp = yy_accept[yy_current_state];
-find_rule: /* we branch to this label when backing up */
-		for ( ; ; ) /* until we find what rule we matched */
-			{
-			if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
-				{
-				yy_act = yy_acclist[yy_lp];
-					{
-					yy_full_match = yy_cp;
-					break;
-					}
-				}
-			--yy_cp;
-			yy_current_state = *--yy_state_ptr;
-			yy_lp = yy_accept[yy_current_state];
-			}
+		yy_act = yy_accept[yy_current_state];
 
 		YY_DO_BEFORE_ACTION;
 
-		if ( yy_act != YY_END_OF_BUFFER )
+		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
 			{
 			int yyl;
-			for ( yyl = 0; yyl < yyleng; ++yyl )
-				if ( yytext[yyl] == '\n' )
-					++yylineno;
+			for ( yyl = 0; yyl < llvmAsmleng; ++yyl )
+				if ( llvmAsmtext[yyl] == '\n' )
+					   
+    llvmAsmlineno++;
+;
 			}
 
 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 223 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 223 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { /* Ignore comments for now */ }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 225 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 225 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return BEGINTOK; }
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 226 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 226 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return ENDTOK; }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 227 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 227 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return TRUETOK;  }
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 228 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 228 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return FALSETOK; }
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 229 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 229 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return DECLARE; }
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 230 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 230 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return DEFINE; }
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 231 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 231 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return GLOBAL; }
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 232 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 232 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return CONSTANT; }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 233 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 233 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return INTERNAL; }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 234 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 234 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return LINKONCE; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 235 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 235 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return WEAK; }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 236 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 236 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return APPENDING; }
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 237 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 237 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return DLLIMPORT; }
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 238 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 238 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return DLLEXPORT; }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 239 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 239 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return HIDDEN; }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 240 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 240 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return PROTECTED; }
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 241 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 241 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return EXTERN_WEAK; }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 242 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 242 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return EXTERNAL; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 243 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 243 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return THREAD_LOCAL; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 244 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 244 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return ZEROINITIALIZER; }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 245 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 245 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return DOTDOTDOT; }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 246 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 246 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return UNDEF; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 247 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 247 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return NULL_TOK; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 248 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 248 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return TO; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 249 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 249 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return TAIL; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 250 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 250 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return TARGET; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 251 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 251 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return TRIPLE; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 252 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 252 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return DEPLIBS; }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 253 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 253 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return DATALAYOUT; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 254 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 254 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return VOLATILE; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 255 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 255 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return ALIGN;  }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 256 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 256 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return SECTION; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 257 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 257 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return ALIAS; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 258 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 258 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return MODULE; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 259 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 259 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return ASM_TOK; }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 260 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 260 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return SIDEEFFECT; }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 262 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 262 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return CC_TOK; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 263 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 263 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return CCC_TOK; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 264 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 264 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return FASTCC_TOK; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 265 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 265 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return COLDCC_TOK; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 266 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 266 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return X86_STDCALLCC_TOK; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 267 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 267 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return X86_FASTCALLCC_TOK; }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 269 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 269 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return SIGNEXT; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 270 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 270 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return ZEROEXT; }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 271 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 271 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return INREG; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 272 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 272 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return SRET;  }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 273 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 273 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return NOUNWIND; }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 274 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 274 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return NORETURN; }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 275 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 275 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return NOALIAS; }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 276 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 276 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return BYVAL; }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 277 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 277 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { return NEST; }
 	YY_BREAK
 case 53:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 278 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 278 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return PURE; }
+	YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 279 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return CONST; }
+	YY_BREAK
+case 55:
+*yy_cp = (yy_hold_char); /* undo effects of setting up llvmAsmtext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up llvmAsmtext again */
+YY_RULE_SETUP
+#line 280 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { // For auto-upgrade only, drop in LLVM 3.0 
                   return SIGNEXT; } 
 	YY_BREAK
-case 54:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
+case 56:
+*yy_cp = (yy_hold_char); /* undo effects of setting up llvmAsmtext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up llvmAsmtext again */
 YY_RULE_SETUP
-#line 280 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 282 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { // For auto-upgrade only, drop in LLVM 3.0
                   return ZEROEXT; } 
 	YY_BREAK
-case 55:
-YY_RULE_SETUP
-#line 283 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::VoidTy,  VOID);  }
-	YY_BREAK
-case 56:
-YY_RULE_SETUP
-#line 284 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::FloatTy, FLOAT); }
-	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 285 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::DoubleTy,DOUBLE);}
+#line 285 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::VoidTy,  VOID);  }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 286 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::X86_FP80Ty, X86_FP80);}
+#line 286 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::FloatTy, FLOAT); }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 287 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::FP128Ty, FP128);}
+#line 287 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::DoubleTy,DOUBLE);}
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 288 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::PPC_FP128Ty, PPC_FP128);}
+#line 288 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::X86_FP80Ty, X86_FP80);}
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 289 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::LabelTy, LABEL); }
+#line 289 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::FP128Ty, FP128);}
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 290 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return TYPE;   }
+#line 290 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::PPC_FP128Ty, PPC_FP128);}
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 291 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return OPAQUE; }
+#line 291 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::LabelTy, LABEL); }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 292 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ uint64_t NumBits = atoull(yytext+1);
+#line 292 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return TYPE;   }
+	YY_BREAK
+case 65:
+YY_RULE_SETUP
+#line 293 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return OPAQUE; }
+	YY_BREAK
+case 66:
+YY_RULE_SETUP
+#line 294 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ uint64_t NumBits = atoull(llvmAsmtext+1);
                   if (NumBits < IntegerType::MIN_INT_BITS || 
                       NumBits > IntegerType::MAX_INT_BITS)
                     GenerateError("Bitwidth for integer type out of range!");
@@ -1684,422 +1753,426 @@
                   RET_TY(Ty, INTTYPE);
                 }
 	YY_BREAK
-case 65:
-YY_RULE_SETUP
-#line 300 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Add, ADD); }
-	YY_BREAK
-case 66:
-YY_RULE_SETUP
-#line 301 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Sub, SUB); }
-	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 302 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Mul, MUL); }
+#line 302 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Add, ADD); }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 303 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, UDiv, UDIV); }
+#line 303 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Sub, SUB); }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 304 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, SDiv, SDIV); }
+#line 304 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Mul, MUL); }
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 305 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, FDiv, FDIV); }
+#line 305 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, UDiv, UDIV); }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 306 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, URem, UREM); }
+#line 306 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, SDiv, SDIV); }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 307 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, SRem, SREM); }
+#line 307 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, FDiv, FDIV); }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 308 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, FRem, FREM); }
+#line 308 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, URem, UREM); }
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 309 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Shl, SHL); }
+#line 309 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, SRem, SREM); }
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 310 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, LShr, LSHR); }
+#line 310 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, FRem, FREM); }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 311 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, AShr, ASHR); }
+#line 311 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Shl, SHL); }
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 312 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, And, AND); }
+#line 312 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, LShr, LSHR); }
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 313 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Or , OR ); }
+#line 313 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, AShr, ASHR); }
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 314 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Xor, XOR); }
+#line 314 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, And, AND); }
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 315 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal,  ICmp,  ICMP); }
+#line 315 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Or , OR ); }
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 316 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal,  FCmp,  FCMP); }
+#line 316 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Xor, XOR); }
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 318 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return EQ;  }
+#line 317 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal,  ICmp,  ICMP); }
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 319 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return NE;  }
+#line 318 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal,  FCmp,  FCMP); }
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 320 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return SLT; }
+#line 320 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return EQ;  }
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 321 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return SGT; }
+#line 321 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return NE;  }
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 322 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return SLE; }
+#line 322 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return SLT; }
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 323 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return SGE; }
+#line 323 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return SGT; }
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 324 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return ULT; }
+#line 324 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return SLE; }
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 325 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return UGT; }
+#line 325 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return SGE; }
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 326 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return ULE; }
+#line 326 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return ULT; }
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 327 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return UGE; }
+#line 327 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return UGT; }
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 328 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return OEQ; }
+#line 328 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return ULE; }
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 329 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return ONE; }
+#line 329 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return UGE; }
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 330 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return OLT; }
+#line 330 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return OEQ; }
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 331 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return OGT; }
+#line 331 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return ONE; }
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 332 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return OLE; }
+#line 332 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return OLT; }
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 333 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return OGE; }
+#line 333 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return OGT; }
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 334 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return ORD; }
+#line 334 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return OLE; }
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 335 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return UNO; }
+#line 335 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return OGE; }
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 336 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return UEQ; }
+#line 336 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return ORD; }
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 337 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return UNE; }
+#line 337 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return UNO; }
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 339 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, PHI, PHI_TOK); }
+#line 338 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return UEQ; }
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 340 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Call, CALL); }
+#line 339 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return UNE; }
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 341 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, Trunc, TRUNC); }
+#line 341 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, PHI, PHI_TOK); }
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 342 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, ZExt, ZEXT); }
+#line 342 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Call, CALL); }
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 343 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, SExt, SEXT); }
+#line 343 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, Trunc, TRUNC); }
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 344 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPTrunc, FPTRUNC); }
+#line 344 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, ZExt, ZEXT); }
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 345 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPExt, FPEXT); }
+#line 345 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, SExt, SEXT); }
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 346 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, UIToFP, UITOFP); }
+#line 346 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPTrunc, FPTRUNC); }
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 347 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, SIToFP, SITOFP); }
+#line 347 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPExt, FPEXT); }
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 348 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPToUI, FPTOUI); }
+#line 348 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, UIToFP, UITOFP); }
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 349 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPToSI, FPTOSI); }
+#line 349 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, SIToFP, SITOFP); }
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 350 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, IntToPtr, INTTOPTR); }
+#line 350 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPToUI, FPTOUI); }
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 351 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, PtrToInt, PTRTOINT); }
+#line 351 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPToSI, FPTOSI); }
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 352 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, BitCast, BITCAST); }
+#line 352 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, IntToPtr, INTTOPTR); }
 	YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 353 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Select, SELECT); }
+#line 353 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, PtrToInt, PTRTOINT); }
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 354 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, VAArg , VAARG); }
+#line 354 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, BitCast, BITCAST); }
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 355 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Ret, RET); }
+#line 355 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Select, SELECT); }
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 356 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Br, BR); }
+#line 356 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, VAArg , VAARG); }
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 357 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Switch, SWITCH); }
+#line 357 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Ret, RET); }
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 358 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Invoke, INVOKE); }
+#line 358 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Br, BR); }
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 359 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Unwind, UNWIND); }
+#line 359 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Switch, SWITCH); }
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 360 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Unreachable, UNREACHABLE); }
+#line 360 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Invoke, INVOKE); }
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 362 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Malloc, MALLOC); }
+#line 361 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Unwind, UNWIND); }
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 363 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Alloca, ALLOCA); }
+#line 362 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Unreachable, UNREACHABLE); }
 	YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 364 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Free, FREE); }
+#line 364 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Malloc, MALLOC); }
 	YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 365 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Load, LOAD); }
+#line 365 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Alloca, ALLOCA); }
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 366 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Store, STORE); }
+#line 366 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Free, FREE); }
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 367 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); }
+#line 367 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Load, LOAD); }
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 369 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); }
+#line 368 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Store, STORE); }
 	YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 370 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); }
+#line 369 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); }
 	YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 371 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); }
+#line 371 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); }
 	YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 374 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{
-                  llvmAsmlval.StrVal = new std::string(yytext+1);   // Skip %
-                  return LOCALVAR;
-                }
+#line 372 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); }
 	YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 378 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{
-                  llvmAsmlval.StrVal = new std::string(yytext+1);   // Skip @
-                  return GLOBALVAR;
-                }
+#line 373 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); }
 	YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 382 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 376 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 {
-                  yytext[yyleng-1] = 0;            // nuke colon
-                  llvmAsmlval.StrVal = new std::string(yytext);
-                  return LABELSTR;
+                  llvmAsmlval.StrVal = new std::string(llvmAsmtext+1);   // Skip %
+                  return LOCALVAR;
                 }
 	YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 387 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 380 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 {
-                  yytext[yyleng-2] = 0;  // nuke colon, end quote
-                  const char* EndChar = UnEscapeLexed(yytext+1, yytext+yyleng);
-                  llvmAsmlval.StrVal = 
-                    new std::string(yytext+1, EndChar - yytext - 1);
-                  return LABELSTR;
+                  llvmAsmlval.StrVal = new std::string(llvmAsmtext+1);   // Skip @
+                  return GLOBALVAR;
                 }
 	YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 395 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ yytext[yyleng-1] = 0;           // nuke end quote
-                   const char* EndChar = UnEscapeLexed(yytext+1, yytext+yyleng);
+#line 384 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{
+                  llvmAsmtext[llvmAsmleng-1] = 0;            // nuke colon
+                  llvmAsmlval.StrVal = new std::string(llvmAsmtext);
+                  return LABELSTR;
+                }
+	YY_BREAK
+case 138:
+/* rule 138 can match eol */
+YY_RULE_SETUP
+#line 389 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{
+                  llvmAsmtext[llvmAsmleng-2] = 0;  // nuke colon, end quote
+                  const char* EndChar = UnEscapeLexed(llvmAsmtext+1, llvmAsmtext+llvmAsmleng);
+                  llvmAsmlval.StrVal = 
+                    new std::string(llvmAsmtext+1, EndChar - llvmAsmtext - 1);
+                  return LABELSTR;
+                }
+	YY_BREAK
+case 139:
+/* rule 139 can match eol */
+YY_RULE_SETUP
+#line 397 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ llvmAsmtext[llvmAsmleng-1] = 0;           // nuke end quote
+                   const char* EndChar = UnEscapeLexed(llvmAsmtext+1, llvmAsmtext+llvmAsmleng);
                    llvmAsmlval.StrVal = 
-                     new std::string(yytext+1, EndChar - yytext - 1);
+                     new std::string(llvmAsmtext+1, EndChar - llvmAsmtext - 1);
                    return STRINGCONSTANT;
                  }
 	YY_BREAK
-case 138:
+case 140:
+/* rule 140 can match eol */
 YY_RULE_SETUP
-#line 401 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 403 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 {
-                     yytext[yyleng-1] = 0;         // nuke end quote
+                     llvmAsmtext[llvmAsmleng-1] = 0;         // nuke end quote
                      const char* EndChar = 
-                       UnEscapeLexed(yytext+2, yytext+yyleng);
+                       UnEscapeLexed(llvmAsmtext+2, llvmAsmtext+llvmAsmleng);
                      llvmAsmlval.StrVal = 
-                       new std::string(yytext+2, EndChar - yytext - 2);
+                       new std::string(llvmAsmtext+2, EndChar - llvmAsmtext - 2);
                      return ATSTRINGCONSTANT;
                    }
 	YY_BREAK
-case 139:
+case 141:
+/* rule 141 can match eol */
 YY_RULE_SETUP
-#line 409 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 411 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 {
-                     yytext[yyleng-1] = 0;           // nuke end quote
+                     llvmAsmtext[llvmAsmleng-1] = 0;           // nuke end quote
                      const char* EndChar = 
-                       UnEscapeLexed(yytext+2, yytext+yyleng);
+                       UnEscapeLexed(llvmAsmtext+2, llvmAsmtext+llvmAsmleng);
                      llvmAsmlval.StrVal = 
-                       new std::string(yytext+2, EndChar - yytext - 2);
+                       new std::string(llvmAsmtext+2, EndChar - llvmAsmtext - 2);
                      return PCTSTRINGCONSTANT;
                    }
 	YY_BREAK
-case 140:
+case 142:
 YY_RULE_SETUP
-#line 417 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 419 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { 
-                  uint32_t numBits = ((yyleng * 64) / 19) + 1;
-                  APInt Tmp(numBits, yytext, yyleng, 10);
+                  uint32_t numBits = ((llvmAsmleng * 64) / 19) + 1;
+                  APInt Tmp(numBits, llvmAsmtext, llvmAsmleng, 10);
                   uint32_t activeBits = Tmp.getActiveBits();
                   if (activeBits > 0 && activeBits < numBits)
                     Tmp.trunc(activeBits);
@@ -2112,12 +2185,12 @@
                   }
                 }
 	YY_BREAK
-case 141:
+case 143:
 YY_RULE_SETUP
-#line 431 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 433 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 {
-                  uint32_t numBits = (((yyleng-1) * 64) / 19) + 2;
-                  APInt Tmp(numBits, yytext, yyleng, 10);
+                  uint32_t numBits = (((llvmAsmleng-1) * 64) / 19) + 2;
+                  APInt Tmp(numBits, llvmAsmtext, llvmAsmleng, 10);
                   uint32_t minBits = Tmp.getMinSignedBits();
                   if (minBits > 0 && minBits < numBits)
                     Tmp.trunc(minBits);
@@ -2130,19 +2203,19 @@
                   }
                 }
 	YY_BREAK
-case 142:
+case 144:
 YY_RULE_SETUP
-#line 446 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ int len = yyleng - 3;
+#line 448 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ int len = llvmAsmleng - 3;
                    uint32_t bits = len * 4;
-                   APInt Tmp(bits, yytext+3, len, 16);
+                   APInt Tmp(bits, llvmAsmtext+3, len, 16);
                    uint32_t activeBits = Tmp.getActiveBits();
                    if (activeBits > 0 && activeBits < bits)
                      Tmp.trunc(activeBits);
                    if (Tmp.getBitWidth() > 64) {
                      llvmAsmlval.APIntVal = new APInt(Tmp);
-                     return yytext[0] == 's' ? ESAPINTVAL : EUAPINTVAL;
-                   } else if (yytext[0] == 's') {
+                     return llvmAsmtext[0] == 's' ? ESAPINTVAL : EUAPINTVAL;
+                   } else if (llvmAsmtext[0] == 's') {
                      llvmAsmlval.SInt64Val = Tmp.getSExtValue();
                      return ESINT64VAL;
                    } else {
@@ -2151,117 +2224,118 @@
                    }
                  }
 	YY_BREAK
-case 143:
+case 145:
 YY_RULE_SETUP
-#line 464 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 466 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 {
-                  uint64_t Val = atoull(yytext+1);
+                  uint64_t Val = atoull(llvmAsmtext+1);
                   if ((unsigned)Val != Val)
                     GenerateError("Invalid value number (too large)!");
                   llvmAsmlval.UIntVal = unsigned(Val);
                   return LOCALVAL_ID;
                 }
 	YY_BREAK
-case 144:
+case 146:
 YY_RULE_SETUP
-#line 471 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 473 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 {
-                  uint64_t Val = atoull(yytext+1);
+                  uint64_t Val = atoull(llvmAsmtext+1);
                   if ((unsigned)Val != Val)
                     GenerateError("Invalid value number (too large)!");
                   llvmAsmlval.UIntVal = unsigned(Val);
                   return GLOBALVAL_ID;
                 }
 	YY_BREAK
-case 145:
-YY_RULE_SETUP
-#line 479 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ llvmAsmlval.FPVal = new APFloat(atof(yytext)); return FPVAL; }
-	YY_BREAK
-case 146:
-YY_RULE_SETUP
-#line 480 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ llvmAsmlval.FPVal = new APFloat(HexToFP(yytext+2)); 
-                  return FPVAL; 
-                }
-	YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 483 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ uint64_t Pair[2];
-                    HexToIntPair(yytext+3, Pair);
-                    llvmAsmlval.FPVal = new APFloat(APInt(80, 2, Pair));
-                    return FPVAL;
-                }
+#line 481 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ llvmAsmlval.FPVal = new APFloat(atof(llvmAsmtext)); return FPVAL; }
 	YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 488 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ uint64_t Pair[2];
-                    HexToIntPair(yytext+3, Pair);
-                    llvmAsmlval.FPVal = new APFloat(APInt(128, 2, Pair), true);
-                    return FPVAL;
+#line 482 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ llvmAsmlval.FPVal = new APFloat(HexToFP(llvmAsmtext+2)); 
+                  return FPVAL; 
                 }
 	YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 493 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 485 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { uint64_t Pair[2];
-                    HexToIntPair(yytext+3, Pair);
+                    HexToIntPair(llvmAsmtext+3, Pair);
+                    llvmAsmlval.FPVal = new APFloat(APInt(80, 2, Pair));
+                    return FPVAL;
+                }
+	YY_BREAK
+case 150:
+YY_RULE_SETUP
+#line 490 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ uint64_t Pair[2];
+                    HexToIntPair(llvmAsmtext+3, Pair);
+                    llvmAsmlval.FPVal = new APFloat(APInt(128, 2, Pair), true);
+                    return FPVAL;
+                }
+	YY_BREAK
+case 151:
+YY_RULE_SETUP
+#line 495 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ uint64_t Pair[2];
+                    HexToIntPair(llvmAsmtext+3, Pair);
                     llvmAsmlval.FPVal = new APFloat(APInt(128, 2, Pair));
                     return FPVAL;
                 }
 	YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 499 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 501 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 {
                   /* Make sure to free the internal buffers for flex when we are
                    * done reading our input!
                    */
-                  yy_delete_buffer(YY_CURRENT_BUFFER);
+                  llvmAsm_delete_buffer(YY_CURRENT_BUFFER);
                   return EOF;
                 }
 	YY_BREAK
-case 150:
+case 152:
+/* rule 152 can match eol */
 YY_RULE_SETUP
-#line 507 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 509 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 { /* Ignore whitespace */ }
 	YY_BREAK
-case 151:
+case 153:
 YY_RULE_SETUP
-#line 508 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
-{ return yytext[0]; }
+#line 510 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+{ return llvmAsmtext[0]; }
 	YY_BREAK
-case 152:
+case 154:
 YY_RULE_SETUP
-#line 510 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#line 512 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 2241 "Lexer.cpp"
+#line 2315 "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->yy_buffer_status == YY_BUFFER_NEW )
+		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
 			{
 			/* We're scanning a new file or input source.  It's
 			 * possible that this happened because the user
-			 * just pointed yyin at a new source and called
-			 * yylex().  If so, then we have to assure
-			 * consistency between yy_current_buffer and our
+			 * just pointed llvmAsmin at a new source and called
+			 * llvmAsmlex().  If so, then we have to assure
+			 * consistency between YY_CURRENT_BUFFER and our
 			 * globals.  Here is the right place to do so, because
 			 * this is the first action (other than possibly a
 			 * back-up) that will match for the new input source.
 			 */
-			yy_n_chars = yy_current_buffer->yy_n_chars;
-			yy_current_buffer->yy_input_file = yyin;
-			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+			(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;
 			}
 
 		/* Note that here we test for yy_c_buf_p "<=" to the position
@@ -2271,13 +2345,13 @@
 		 * end-of-buffer state).  Contrast this with the test
 		 * in input().
 		 */
-		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->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
@@ -2290,41 +2364,42 @@
 
 			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_c_buf_p;
+				yy_cp = (yy_last_accepting_cpos);
+				yy_current_state = (yy_last_accepting_state);
 				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 ( yywrap() )
+				if ( llvmAsmwrap( ) )
 					{
 					/* Note: because we've taken care in
 					 * yy_get_next_buffer() to have set up
-					 * yytext, we can now set up
+					 * llvmAsmtext, 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;
@@ -2332,30 +2407,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->yy_ch_buf[yy_n_chars];
+				(yy_c_buf_p) =
+				&YY_CURRENT_BUFFER_LVALUE->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;
@@ -2366,8 +2441,7 @@
 			"fatal flex scanner internal error--no action found" );
 	} /* end of action switch */
 		} /* end of scanning one token */
-	} /* end of yylex */
-
+} /* end of llvmAsmlex */
 
 /* yy_get_next_buffer - try to read in a new buffer
  *
@@ -2376,21 +2450,20 @@
  *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
  *	EOB_ACT_END_OF_FILE - end of file
  */
-
-static int yy_get_next_buffer()
-	{
-	register char *dest = yy_current_buffer->yy_ch_buf;
-	register char *source = yytext_ptr;
+static int yy_get_next_buffer (void)
+{
+    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+	register char *source = (yytext_ptr);
 	register int number_to_move, i;
 	int ret_val;
 
-	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
 		YY_FATAL_ERROR(
 		"fatal flex scanner internal error--end of buffer missed" );
 
-	if ( yy_current_buffer->yy_fill_buffer == 0 )
+	if ( YY_CURRENT_BUFFER_LVALUE->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.
@@ -2410,34 +2483,30 @@
 	/* 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->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
 		/* don't do the read, it's not guaranteed to return an EOF,
 		 * just force an EOF
 		 */
-		yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
 
 	else
 		{
-		int num_to_read =
-			yy_current_buffer->yy_buf_size - number_to_move - 1;
+			int num_to_read =
+			YY_CURRENT_BUFFER_LVALUE->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 )
 				{
@@ -2450,8 +2519,7 @@
 
 				b->yy_ch_buf = (char *)
 					/* Include room in for 2 EOB chars. */
-					yy_flex_realloc( (void *) b->yy_ch_buf,
-							 b->yy_buf_size + 2 );
+					llvmAsmrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
 				}
 			else
 				/* Can't grow it, we don't own it. */
@@ -2461,35 +2529,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->yy_buf_size -
+			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
 						number_to_move - 1;
-#endif
+
 			}
 
 		if ( num_to_read > YY_READ_BUF_SIZE )
 			num_to_read = YY_READ_BUF_SIZE;
 
 		/* Read in more data. */
-		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
-			yy_n_chars, num_to_read );
+		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+			(yy_n_chars), num_to_read );
 
-		yy_current_buffer->yy_n_chars = yy_n_chars;
+		YY_CURRENT_BUFFER_LVALUE->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;
-			yyrestart( yyin );
+			llvmAsmrestart(llvmAsmin  );
 			}
 
 		else
 			{
 			ret_val = EOB_ACT_LAST_MATCH;
-			yy_current_buffer->yy_buffer_status =
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
 				YY_BUFFER_EOF_PENDING;
 			}
 		}
@@ -2497,148 +2565,141 @@
 	else
 		ret_val = EOB_ACT_CONTINUE_SCAN;
 
-	yy_n_chars += number_to_move;
-	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
-	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+	(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;
 
-	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->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()
-	{
+    static yy_state_type yy_get_previous_state (void)
+{
 	register yy_state_type yy_current_state;
 	register char *yy_cp;
+    
+	yy_current_state = (yy_start);
 
-	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 )
+	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 >= 606 )
+			if ( yy_current_state >= 609 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-		*yy_state_ptr++ = yy_current_state;
 		}
 
 	return yy_current_state;
-	}
-
+}
 
 /* yy_try_NUL_trans - try to make a transition on the NUL character
  *
  * synopsis
  *	next_state = yy_try_NUL_trans( current_state );
  */
-
-#ifdef YY_USE_PROTOS
-static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
-#else
-static yy_state_type yy_try_NUL_trans( yy_current_state )
-yy_state_type yy_current_state;
-#endif
-	{
+    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
+{
 	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 >= 606 )
+		if ( yy_current_state >= 609 )
 			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 == 605);
-	if ( ! yy_is_jam )
-		*yy_state_ptr++ = yy_current_state;
+	yy_is_jam = (yy_current_state == 608);
 
 	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);
 
-#ifndef YY_NO_UNPUT
-#ifdef YY_USE_PROTOS
-static inline void yyunput( int c, register char *yy_bp )
-#else
-static inline void yyunput( c, yy_bp )
-int c;
-register char *yy_bp;
-#endif
-	{
-	register char *yy_cp = yy_c_buf_p;
+	/* undo effects of setting up llvmAsmtext */
+	*yy_cp = (yy_hold_char);
 
-	/* undo effects of setting up yytext */
-	*yy_cp = yy_hold_char;
-
-	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
 		{ /* need to shift things up to make room */
 		/* +2 for EOB chars. */
-		register int number_to_move = yy_n_chars + 2;
-		register char *dest = &yy_current_buffer->yy_ch_buf[
-					yy_current_buffer->yy_buf_size + 2];
+		register 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 char *source =
-				&yy_current_buffer->yy_ch_buf[number_to_move];
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
 
-		while ( source > yy_current_buffer->yy_ch_buf )
+		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
 			*--dest = *--source;
 
 		yy_cp += (int) (dest - source);
 		yy_bp += (int) (dest - source);
-		yy_current_buffer->yy_n_chars =
-			yy_n_chars = yy_current_buffer->yy_buf_size;
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
 
-		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
 			YY_FATAL_ERROR( "flex scanner push-back overflow" );
 		}
 
 	*--yy_cp = (char) c;
 
-	if ( c == '\n' )
-		--yylineno;
+    if ( c == '\n' ){
+        --llvmAsmlineno;
+    }
 
-	yytext_ptr = yy_bp;
-	yy_hold_char = *yy_cp;
-	yy_c_buf_p = yy_cp;
-	}
-#endif	/* ifndef YY_NO_UNPUT */
+	(yytext_ptr) = yy_bp;
+	(yy_hold_char) = *yy_cp;
+	(yy_c_buf_p) = yy_cp;
+}
 
-
+#ifndef YY_NO_INPUT
 #ifdef __cplusplus
-static int yyinput()
+    static int yyinput (void)
 #else
-static int input()
+    static int input  (void)
 #endif
-	{
+
+{
 	int c;
+    
+	*(yy_c_buf_p) = (yy_hold_char);
 
-	*yy_c_buf_p = yy_hold_char;
-
-	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
 		{
 		/* yy_c_buf_p now points to the character we want to return.
 		 * If this occurs *before* the EOB characters, then it's a
 		 * valid NUL; if not, then we've hit the end of the buffer.
 		 */
-		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->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()
@@ -2652,16 +2713,16 @@
 					 */
 
 					/* Reset buffer status. */
-					yyrestart( yyin );
+					llvmAsmrestart(llvmAsmin );
 
-					/* fall through */
+					/*FALLTHROUGH*/
 
 				case EOB_ACT_END_OF_FILE:
 					{
-					if ( yywrap() )
+					if ( llvmAsmwrap( ) )
 						return EOF;
 
-					if ( ! yy_did_buffer_switch_on_eof )
+					if ( ! (yy_did_buffer_switch_on_eof) )
 						YY_NEW_FILE;
 #ifdef __cplusplus
 					return yyinput();
@@ -2671,174 +2732,170 @@
 					}
 
 				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 yytext */
-	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 llvmAsmtext */
+	(yy_hold_char) = *++(yy_c_buf_p);
 
 	if ( c == '\n' )
-		++yylineno;
+		   
+    llvmAsmlineno++;
+;
 
 	return c;
+}
+#endif	/* ifndef 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 );
 	}
 
+	llvmAsm_init_buffer(YY_CURRENT_BUFFER,input_file );
+	llvmAsm_load_buffer_state( );
+}
 
-#ifdef YY_USE_PROTOS
-void yyrestart( FILE *input_file )
-#else
-void yyrestart( input_file )
-FILE *input_file;
-#endif
-	{
-	if ( ! yy_current_buffer )
-		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
-
-	yy_init_buffer( yy_current_buffer, input_file );
-	yy_load_buffer_state();
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
-#else
-void yy_switch_to_buffer( new_buffer )
-YY_BUFFER_STATE new_buffer;
-#endif
-	{
-	if ( yy_current_buffer == new_buffer )
+/** 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 )
 		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->yy_buf_pos = yy_c_buf_p;
-		yy_current_buffer->yy_n_chars = yy_n_chars;
+		*(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_current_buffer = new_buffer;
-	yy_load_buffer_state();
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+	llvmAsm_load_buffer_state( );
 
 	/* We don't actually know whether we did this switch during
-	 * EOF (yywrap()) processing, but the only time this flag
-	 * is looked at is after yywrap() is called, so it's safe
+	 * EOF (llvmAsmwrap()) processing, but the only time this flag
+	 * is looked at is after llvmAsmwrap() 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);
+}
 
-#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
-	{
+/** 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 )
+{
 	YY_BUFFER_STATE b;
-
-	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+    
+	b = (YY_BUFFER_STATE) llvmAsmalloc(sizeof( struct yy_buffer_state )  );
 	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+		YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_create_buffer()" );
 
 	b->yy_buf_size = size;
 
 	/* yy_ch_buf has to be 2 characters longer than the size given because
 	 * we need to put in 2 end-of-buffer characters.
 	 */
-	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+	b->yy_ch_buf = (char *) llvmAsmalloc(b->yy_buf_size + 2  );
 	if ( ! b->yy_ch_buf )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+		YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_create_buffer()" );
 
 	b->yy_is_our_buffer = 1;
 
-	yy_init_buffer( b, file );
+	llvmAsm_init_buffer(b,file );
 
 	return b;
-	}
+}
 
-
-#ifdef YY_USE_PROTOS
-void yy_delete_buffer( YY_BUFFER_STATE b )
-#else
-void yy_delete_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-	{
+/** Destroy the buffer.
+ * @param b a buffer created with llvmAsm_create_buffer()
+ * 
+ */
+    void llvmAsm_delete_buffer (YY_BUFFER_STATE  b )
+{
+    
 	if ( ! b )
 		return;
 
-	if ( b == yy_current_buffer )
-		yy_current_buffer = (YY_BUFFER_STATE) 0;
+	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
 
 	if ( b->yy_is_our_buffer )
-		yy_flex_free( (void *) b->yy_ch_buf );
+		llvmAsmfree((void *) b->yy_ch_buf  );
 
-	yy_flex_free( (void *) b );
-	}
+	llvmAsmfree((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 )
 
-#ifndef YY_ALWAYS_INTERACTIVE
-#ifndef YY_NEVER_INTERACTIVE
-extern int isatty YY_PROTO(( int ));
-#endif
-#endif
-
-#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 );
+{
+	int oerrno = errno;
+    
+	llvmAsm_flush_buffer(b );
 
 	b->yy_input_file = file;
 	b->yy_fill_buffer = 1;
 
-#if YY_ALWAYS_INTERACTIVE
-	b->yy_is_interactive = 1;
-#else
-#if YY_NEVER_INTERACTIVE
-	b->yy_is_interactive = 0;
-#else
-	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-#endif
-#endif
-	}
+    /* 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;
+    }
 
+        b->yy_is_interactive = 0;
+    
+	errno = oerrno;
+}
 
-#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 )
+/** 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 )
 		return;
 
 	b->yy_n_chars = 0;
@@ -2855,31 +2912,123 @@
 	b->yy_at_bol = 1;
 	b->yy_buffer_status = YY_BUFFER_NEW;
 
-	if ( b == yy_current_buffer )
-		yy_load_buffer_state();
+	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 ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
 
-#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
-	{
+		/* 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 )
+{
 	YY_BUFFER_STATE b;
-
+    
 	if ( size < 2 ||
 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
 		/* They forgot to leave room for the EOB's. */
 		return 0;
 
-	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	b = (YY_BUFFER_STATE) llvmAsmalloc(sizeof( struct yy_buffer_state )  );
 	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+		YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_scan_buffer()" );
 
 	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
 	b->yy_buf_pos = b->yy_ch_buf = base;
@@ -2891,58 +3040,53 @@
 	b->yy_fill_buffer = 0;
 	b->yy_buffer_status = YY_BUFFER_NEW;
 
-	yy_switch_to_buffer( b );
+	llvmAsm_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) );
+}
 
-#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
-	{
+/** 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 )
+{
 	YY_BUFFER_STATE b;
 	char *buf;
 	yy_size_t n;
 	int i;
-
+    
 	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = len + 2;
-	buf = (char *) yy_flex_alloc( n );
+	n = _yybytes_len + 2;
+	buf = (char *) llvmAsmalloc(n  );
 	if ( ! buf )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+		YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_scan_bytes()" );
 
-	for ( i = 0; i < len; ++i )
-		buf[i] = bytes[i];
+	for ( i = 0; i < _yybytes_len; ++i )
+		buf[i] = yybytes[i];
 
-	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
 
-	b = yy_scan_buffer( buf, n );
+	b = llvmAsm_scan_buffer(buf,n );
 	if ( ! b )
-		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+		YY_FATAL_ERROR( "bad buffer in llvmAsm_scan_bytes()" );
 
 	/* It's okay to grow etc. this buffer, and we should throw it
 	 * away when we're done.
@@ -2950,78 +3094,17 @@
 	b->yy_is_our_buffer = 1;
 
 	return b;
-	}
-#endif
-
-
-#ifndef YY_NO_PUSH_STATE
-#ifdef YY_USE_PROTOS
-static void yy_push_state( int new_state )
-#else
-static void yy_push_state( new_state )
-int new_state;
-#endif
-	{
-	if ( yy_start_stack_ptr >= yy_start_stack_depth )
-		{
-		yy_size_t new_size;
-
-		yy_start_stack_depth += YY_START_STACK_INCR;
-		new_size = yy_start_stack_depth * sizeof( int );
-
-		if ( ! yy_start_stack )
-			yy_start_stack = (int *) yy_flex_alloc( new_size );
-
-		else
-			yy_start_stack = (int *) yy_flex_realloc(
-					(void *) yy_start_stack, new_size );
-
-		if ( ! yy_start_stack )
-			YY_FATAL_ERROR(
-			"out of memory expanding start-condition stack" );
-		}
-
-	yy_start_stack[yy_start_stack_ptr++] = YY_START;
-
-	BEGIN(new_state);
-	}
-#endif
-
-
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state()
-	{
-	if ( --yy_start_stack_ptr < 0 )
-		YY_FATAL_ERROR( "start-condition stack underflow" );
-
-	BEGIN(yy_start_stack[yy_start_stack_ptr]);
-	}
-#endif
-
-
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state()
-	{
-	return yy_start_stack[yy_start_stack_ptr - 1];
-	}
-#endif
+}
 
 #ifndef YY_EXIT_FAILURE
 #define YY_EXIT_FAILURE 2
 #endif
 
-#ifdef YY_USE_PROTOS
-static void yy_fatal_error( yyconst char msg[] )
-#else
-static void yy_fatal_error( msg )
-char msg[];
-#endif
-	{
-	(void) fprintf( stderr, "%s\n", msg );
+static void yy_fatal_error (yyconst char* msg )
+{
+    	(void) fprintf( stderr, "%s\n", msg );
 	exit( YY_EXIT_FAILURE );
-	}
-
-
+}
 
 /* Redefine yyless() so it works in section 3 code. */
 
@@ -3029,69 +3112,181 @@
 #define yyless(n) \
 	do \
 		{ \
-		/* Undo effects of setting up yytext. */ \
-		yytext[yyleng] = yy_hold_char; \
-		yy_c_buf_p = yytext + n; \
-		yy_hold_char = *yy_c_buf_p; \
-		*yy_c_buf_p = '\0'; \
-		yyleng = n; \
+		/* 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; \
 		} \
 	while ( 0 )
 
+/* Accessor  methods (get/set functions) to struct members. */
 
-/* Internal utility routines. */
+/** 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.
+ */
 
 #ifndef yytext_ptr
-#ifdef YY_USE_PROTOS
-static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
-#else
-static void yy_flex_strncpy( s1, s2, n )
-char *s1;
-yyconst char *s2;
-int n;
-#endif
-	{
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
 	register int i;
 	for ( i = 0; i < n; ++i )
 		s1[i] = s2[i];
-	}
+}
 #endif
 
 #ifdef YY_NEED_STRLEN
-#ifdef YY_USE_PROTOS
-static int yy_flex_strlen( yyconst char *s )
-#else
-static int yy_flex_strlen( s )
-yyconst char *s;
-#endif
-	{
+static int yy_flex_strlen (yyconst char * s )
+{
 	register int n;
 	for ( n = 0; s[n]; ++n )
 		;
 
 	return n;
-	}
+}
 #endif
 
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_alloc( yy_size_t size )
-#else
-static void *yy_flex_alloc( size )
-yy_size_t size;
-#endif
-	{
+void *llvmAsmalloc (yy_size_t  size )
+{
 	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
-	{
+void *llvmAsmrealloc  (void * ptr, yy_size_t  size )
+{
 	/* 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
@@ -3100,24 +3295,16 @@
 	 * as though doing an assignment.
 	 */
 	return (void *) realloc( (char *) ptr, size );
-	}
+}
 
-#ifdef YY_USE_PROTOS
-static void yy_flex_free( void *ptr )
-#else
-static void yy_flex_free( ptr )
-void *ptr;
-#endif
-	{
-	free( ptr );
-	}
+void llvmAsmfree (void * ptr )
+{
+	free( (char *) ptr );	/* see llvmAsmrealloc() for (char *) cast */
+}
 
-#if YY_MAIN
-int main()
-	{
-	yylex();
-	return 0;
-	}
-#endif
-#line 510 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/Lexer.l"
+#define YYTABLES_NAME "yytables"
+
+#line 512 "/home/asl/proj/llvm/src/lib/AsmParser/Lexer.l"
+
+
 
diff --git a/lib/AsmParser/Lexer.l.cvs b/lib/AsmParser/Lexer.l.cvs
index 0591cd9..98a21ca 100644
--- a/lib/AsmParser/Lexer.l.cvs
+++ b/lib/AsmParser/Lexer.l.cvs
@@ -275,6 +275,8 @@
 noalias         { return NOALIAS; }
 byval           { return BYVAL; }
 nest            { return NEST; }
+pure            { return PURE; }
+const           { return CONST; }
 sext{WSNL}      { // For auto-upgrade only, drop in LLVM 3.0 
                   return SIGNEXT; } 
 zext{WSNL}      { // For auto-upgrade only, drop in LLVM 3.0
diff --git a/lib/AsmParser/llvmAsmParser.cpp.cvs b/lib/AsmParser/llvmAsmParser.cpp.cvs
index eec7105..a3e1235 100644
--- a/lib/AsmParser/llvmAsmParser.cpp.cvs
+++ b/lib/AsmParser/llvmAsmParser.cpp.cvs
@@ -1,161 +1,378 @@
+/* A Bison parser, made by GNU Bison 2.3.  */
 
-/*  A Bison parser, made from /Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y
-    by GNU Bison version 1.28  */
+/* Skeleton implementation for Bison's Yacc-like parsers in C
 
-#define YYBISON 1  /* Identify Bison output.  */
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
 
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, 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.  */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+   simplifying the original so-called "semantic" parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.3"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+/* Substitute the variable and function names.  */
 #define yyparse llvmAsmparse
-#define yylex llvmAsmlex
+#define yylex   llvmAsmlex
 #define yyerror llvmAsmerror
-#define yylval llvmAsmlval
-#define yychar llvmAsmchar
+#define yylval  llvmAsmlval
+#define yychar  llvmAsmchar
 #define yydebug llvmAsmdebug
 #define yynerrs llvmAsmnerrs
-#define	ESINT64VAL	257
-#define	EUINT64VAL	258
-#define	ESAPINTVAL	259
-#define	EUAPINTVAL	260
-#define	LOCALVAL_ID	261
-#define	GLOBALVAL_ID	262
-#define	FPVAL	263
-#define	VOID	264
-#define	INTTYPE	265
-#define	FLOAT	266
-#define	DOUBLE	267
-#define	X86_FP80	268
-#define	FP128	269
-#define	PPC_FP128	270
-#define	LABEL	271
-#define	TYPE	272
-#define	LOCALVAR	273
-#define	GLOBALVAR	274
-#define	LABELSTR	275
-#define	STRINGCONSTANT	276
-#define	ATSTRINGCONSTANT	277
-#define	PCTSTRINGCONSTANT	278
-#define	ZEROINITIALIZER	279
-#define	TRUETOK	280
-#define	FALSETOK	281
-#define	BEGINTOK	282
-#define	ENDTOK	283
-#define	DECLARE	284
-#define	DEFINE	285
-#define	GLOBAL	286
-#define	CONSTANT	287
-#define	SECTION	288
-#define	ALIAS	289
-#define	VOLATILE	290
-#define	THREAD_LOCAL	291
-#define	TO	292
-#define	DOTDOTDOT	293
-#define	NULL_TOK	294
-#define	UNDEF	295
-#define	INTERNAL	296
-#define	LINKONCE	297
-#define	WEAK	298
-#define	APPENDING	299
-#define	DLLIMPORT	300
-#define	DLLEXPORT	301
-#define	EXTERN_WEAK	302
-#define	OPAQUE	303
-#define	EXTERNAL	304
-#define	TARGET	305
-#define	TRIPLE	306
-#define	ALIGN	307
-#define	DEPLIBS	308
-#define	CALL	309
-#define	TAIL	310
-#define	ASM_TOK	311
-#define	MODULE	312
-#define	SIDEEFFECT	313
-#define	CC_TOK	314
-#define	CCC_TOK	315
-#define	FASTCC_TOK	316
-#define	COLDCC_TOK	317
-#define	X86_STDCALLCC_TOK	318
-#define	X86_FASTCALLCC_TOK	319
-#define	DATALAYOUT	320
-#define	RET	321
-#define	BR	322
-#define	SWITCH	323
-#define	INVOKE	324
-#define	UNWIND	325
-#define	UNREACHABLE	326
-#define	ADD	327
-#define	SUB	328
-#define	MUL	329
-#define	UDIV	330
-#define	SDIV	331
-#define	FDIV	332
-#define	UREM	333
-#define	SREM	334
-#define	FREM	335
-#define	AND	336
-#define	OR	337
-#define	XOR	338
-#define	SHL	339
-#define	LSHR	340
-#define	ASHR	341
-#define	ICMP	342
-#define	FCMP	343
-#define	EQ	344
-#define	NE	345
-#define	SLT	346
-#define	SGT	347
-#define	SLE	348
-#define	SGE	349
-#define	ULT	350
-#define	UGT	351
-#define	ULE	352
-#define	UGE	353
-#define	OEQ	354
-#define	ONE	355
-#define	OLT	356
-#define	OGT	357
-#define	OLE	358
-#define	OGE	359
-#define	ORD	360
-#define	UNO	361
-#define	UEQ	362
-#define	UNE	363
-#define	MALLOC	364
-#define	ALLOCA	365
-#define	FREE	366
-#define	LOAD	367
-#define	STORE	368
-#define	GETELEMENTPTR	369
-#define	TRUNC	370
-#define	ZEXT	371
-#define	SEXT	372
-#define	FPTRUNC	373
-#define	FPEXT	374
-#define	BITCAST	375
-#define	UITOFP	376
-#define	SITOFP	377
-#define	FPTOUI	378
-#define	FPTOSI	379
-#define	INTTOPTR	380
-#define	PTRTOINT	381
-#define	PHI_TOK	382
-#define	SELECT	383
-#define	VAARG	384
-#define	EXTRACTELEMENT	385
-#define	INSERTELEMENT	386
-#define	SHUFFLEVECTOR	387
-#define	SIGNEXT	388
-#define	ZEROEXT	389
-#define	NORETURN	390
-#define	INREG	391
-#define	SRET	392
-#define	NOUNWIND	393
-#define	NOALIAS	394
-#define	BYVAL	395
-#define	NEST	396
-#define	DEFAULT	397
-#define	HIDDEN	398
-#define	PROTECTED	399
 
-#line 14 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     ESINT64VAL = 258,
+     EUINT64VAL = 259,
+     ESAPINTVAL = 260,
+     EUAPINTVAL = 261,
+     LOCALVAL_ID = 262,
+     GLOBALVAL_ID = 263,
+     FPVAL = 264,
+     VOID = 265,
+     INTTYPE = 266,
+     FLOAT = 267,
+     DOUBLE = 268,
+     X86_FP80 = 269,
+     FP128 = 270,
+     PPC_FP128 = 271,
+     LABEL = 272,
+     TYPE = 273,
+     LOCALVAR = 274,
+     GLOBALVAR = 275,
+     LABELSTR = 276,
+     STRINGCONSTANT = 277,
+     ATSTRINGCONSTANT = 278,
+     PCTSTRINGCONSTANT = 279,
+     ZEROINITIALIZER = 280,
+     TRUETOK = 281,
+     FALSETOK = 282,
+     BEGINTOK = 283,
+     ENDTOK = 284,
+     DECLARE = 285,
+     DEFINE = 286,
+     GLOBAL = 287,
+     CONSTANT = 288,
+     SECTION = 289,
+     ALIAS = 290,
+     VOLATILE = 291,
+     THREAD_LOCAL = 292,
+     TO = 293,
+     DOTDOTDOT = 294,
+     NULL_TOK = 295,
+     UNDEF = 296,
+     INTERNAL = 297,
+     LINKONCE = 298,
+     WEAK = 299,
+     APPENDING = 300,
+     DLLIMPORT = 301,
+     DLLEXPORT = 302,
+     EXTERN_WEAK = 303,
+     OPAQUE = 304,
+     EXTERNAL = 305,
+     TARGET = 306,
+     TRIPLE = 307,
+     ALIGN = 308,
+     DEPLIBS = 309,
+     CALL = 310,
+     TAIL = 311,
+     ASM_TOK = 312,
+     MODULE = 313,
+     SIDEEFFECT = 314,
+     CC_TOK = 315,
+     CCC_TOK = 316,
+     FASTCC_TOK = 317,
+     COLDCC_TOK = 318,
+     X86_STDCALLCC_TOK = 319,
+     X86_FASTCALLCC_TOK = 320,
+     DATALAYOUT = 321,
+     RET = 322,
+     BR = 323,
+     SWITCH = 324,
+     INVOKE = 325,
+     UNWIND = 326,
+     UNREACHABLE = 327,
+     ADD = 328,
+     SUB = 329,
+     MUL = 330,
+     UDIV = 331,
+     SDIV = 332,
+     FDIV = 333,
+     UREM = 334,
+     SREM = 335,
+     FREM = 336,
+     AND = 337,
+     OR = 338,
+     XOR = 339,
+     SHL = 340,
+     LSHR = 341,
+     ASHR = 342,
+     ICMP = 343,
+     FCMP = 344,
+     EQ = 345,
+     NE = 346,
+     SLT = 347,
+     SGT = 348,
+     SLE = 349,
+     SGE = 350,
+     ULT = 351,
+     UGT = 352,
+     ULE = 353,
+     UGE = 354,
+     OEQ = 355,
+     ONE = 356,
+     OLT = 357,
+     OGT = 358,
+     OLE = 359,
+     OGE = 360,
+     ORD = 361,
+     UNO = 362,
+     UEQ = 363,
+     UNE = 364,
+     MALLOC = 365,
+     ALLOCA = 366,
+     FREE = 367,
+     LOAD = 368,
+     STORE = 369,
+     GETELEMENTPTR = 370,
+     TRUNC = 371,
+     ZEXT = 372,
+     SEXT = 373,
+     FPTRUNC = 374,
+     FPEXT = 375,
+     BITCAST = 376,
+     UITOFP = 377,
+     SITOFP = 378,
+     FPTOUI = 379,
+     FPTOSI = 380,
+     INTTOPTR = 381,
+     PTRTOINT = 382,
+     PHI_TOK = 383,
+     SELECT = 384,
+     VAARG = 385,
+     EXTRACTELEMENT = 386,
+     INSERTELEMENT = 387,
+     SHUFFLEVECTOR = 388,
+     SIGNEXT = 389,
+     ZEROEXT = 390,
+     NORETURN = 391,
+     INREG = 392,
+     SRET = 393,
+     NOUNWIND = 394,
+     NOALIAS = 395,
+     BYVAL = 396,
+     NEST = 397,
+     CONST = 398,
+     PURE = 399,
+     DEFAULT = 400,
+     HIDDEN = 401,
+     PROTECTED = 402
+   };
+#endif
+/* Tokens.  */
+#define ESINT64VAL 258
+#define EUINT64VAL 259
+#define ESAPINTVAL 260
+#define EUAPINTVAL 261
+#define LOCALVAL_ID 262
+#define GLOBALVAL_ID 263
+#define FPVAL 264
+#define VOID 265
+#define INTTYPE 266
+#define FLOAT 267
+#define DOUBLE 268
+#define X86_FP80 269
+#define FP128 270
+#define PPC_FP128 271
+#define LABEL 272
+#define TYPE 273
+#define LOCALVAR 274
+#define GLOBALVAR 275
+#define LABELSTR 276
+#define STRINGCONSTANT 277
+#define ATSTRINGCONSTANT 278
+#define PCTSTRINGCONSTANT 279
+#define ZEROINITIALIZER 280
+#define TRUETOK 281
+#define FALSETOK 282
+#define BEGINTOK 283
+#define ENDTOK 284
+#define DECLARE 285
+#define DEFINE 286
+#define GLOBAL 287
+#define CONSTANT 288
+#define SECTION 289
+#define ALIAS 290
+#define VOLATILE 291
+#define THREAD_LOCAL 292
+#define TO 293
+#define DOTDOTDOT 294
+#define NULL_TOK 295
+#define UNDEF 296
+#define INTERNAL 297
+#define LINKONCE 298
+#define WEAK 299
+#define APPENDING 300
+#define DLLIMPORT 301
+#define DLLEXPORT 302
+#define EXTERN_WEAK 303
+#define OPAQUE 304
+#define EXTERNAL 305
+#define TARGET 306
+#define TRIPLE 307
+#define ALIGN 308
+#define DEPLIBS 309
+#define CALL 310
+#define TAIL 311
+#define ASM_TOK 312
+#define MODULE 313
+#define SIDEEFFECT 314
+#define CC_TOK 315
+#define CCC_TOK 316
+#define FASTCC_TOK 317
+#define COLDCC_TOK 318
+#define X86_STDCALLCC_TOK 319
+#define X86_FASTCALLCC_TOK 320
+#define DATALAYOUT 321
+#define RET 322
+#define BR 323
+#define SWITCH 324
+#define INVOKE 325
+#define UNWIND 326
+#define UNREACHABLE 327
+#define ADD 328
+#define SUB 329
+#define MUL 330
+#define UDIV 331
+#define SDIV 332
+#define FDIV 333
+#define UREM 334
+#define SREM 335
+#define FREM 336
+#define AND 337
+#define OR 338
+#define XOR 339
+#define SHL 340
+#define LSHR 341
+#define ASHR 342
+#define ICMP 343
+#define FCMP 344
+#define EQ 345
+#define NE 346
+#define SLT 347
+#define SGT 348
+#define SLE 349
+#define SGE 350
+#define ULT 351
+#define UGT 352
+#define ULE 353
+#define UGE 354
+#define OEQ 355
+#define ONE 356
+#define OLT 357
+#define OGT 358
+#define OLE 359
+#define OGE 360
+#define ORD 361
+#define UNO 362
+#define UEQ 363
+#define UNE 364
+#define MALLOC 365
+#define ALLOCA 366
+#define FREE 367
+#define LOAD 368
+#define STORE 369
+#define GETELEMENTPTR 370
+#define TRUNC 371
+#define ZEXT 372
+#define SEXT 373
+#define FPTRUNC 374
+#define FPEXT 375
+#define BITCAST 376
+#define UITOFP 377
+#define SITOFP 378
+#define FPTOUI 379
+#define FPTOSI 380
+#define INTTOPTR 381
+#define PTRTOINT 382
+#define PHI_TOK 383
+#define SELECT 384
+#define VAARG 385
+#define EXTRACTELEMENT 386
+#define INSERTELEMENT 387
+#define SHUFFLEVECTOR 388
+#define SIGNEXT 389
+#define ZEROEXT 390
+#define NORETURN 391
+#define INREG 392
+#define SRET 393
+#define NOUNWIND 394
+#define NOALIAS 395
+#define BYVAL 396
+#define NEST 397
+#define CONST 398
+#define PURE 399
+#define DEFAULT 400
+#define HIDDEN 401
+#define PROTECTED 402
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 14 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
 
 #include "ParserInternals.h"
 #include "llvm/CallingConv.h"
@@ -1109,8 +1326,29 @@
 }
 
 
-#line 968 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-typedef union {
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+#line 968 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+{
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
   llvm::BasicBlock                       *BasicBlockVal;
@@ -1155,1162 +1393,1843 @@
   llvm::Instruction::OtherOps       OtherOpVal;
   llvm::ICmpInst::Predicate         IPredicate;
   llvm::FCmpInst::Predicate         FPredicate;
-} YYSTYPE;
-#include <stdio.h>
-
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
+}
+/* Line 187 of yacc.c.  */
+#line 1399 "llvmAsmParser.tab.c"
+	YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 
 
-#define	YYFINAL		600
-#define	YYFLAG		-32768
-#define	YYNTBASE	160
+/* Copy the second part of user declarations.  */
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 399 ? yytranslate[x] : 241)
 
-static const short yytranslate[] = {     0,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,   150,
-   151,   148,     2,   147,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,   155,
-   146,   156,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-   152,   149,   154,     2,     2,     2,     2,     2,   159,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,   153,
-     2,     2,   157,     2,   158,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
-     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-    97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-   137,   138,   139,   140,   141,   142,   143,   144,   145
-};
+/* Line 216 of yacc.c.  */
+#line 1412 "llvmAsmParser.tab.c"
 
-#if YYDEBUG != 0
-static const short yyprhs[] = {     0,
-     0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
-    20,    22,    24,    26,    28,    30,    32,    34,    36,    38,
-    40,    42,    44,    46,    48,    50,    52,    54,    56,    58,
-    60,    62,    64,    66,    68,    70,    72,    74,    76,    78,
-    80,    82,    84,    86,    88,    90,    92,    94,    96,    98,
-   100,   102,   104,   106,   108,   110,   112,   114,   116,   118,
-   120,   122,   124,   126,   127,   130,   131,   133,   135,   137,
-   138,   141,   143,   145,   147,   149,   151,   153,   155,   157,
-   158,   160,   162,   164,   165,   167,   169,   170,   172,   174,
-   176,   178,   179,   181,   183,   184,   186,   188,   190,   192,
-   194,   197,   199,   201,   203,   205,   207,   209,   211,   213,
-   215,   216,   219,   221,   223,   225,   227,   228,   231,   232,
-   235,   236,   240,   243,   244,   246,   247,   251,   253,   256,
-   258,   260,   262,   264,   266,   268,   270,   272,   274,   277,
-   279,   282,   288,   294,   300,   306,   310,   313,   319,   324,
-   327,   329,   331,   333,   337,   339,   343,   345,   346,   348,
-   352,   357,   361,   365,   370,   375,   379,   386,   392,   395,
-   398,   401,   404,   407,   410,   413,   416,   419,   422,   425,
-   428,   435,   441,   450,   457,   464,   472,   480,   487,   496,
-   505,   509,   511,   513,   515,   517,   518,   521,   528,   530,
-   531,   533,   536,   537,   541,   542,   546,   550,   554,   558,
-   559,   567,   568,   577,   578,   587,   593,   596,   600,   602,
-   606,   610,   614,   618,   620,   621,   627,   631,   633,   637,
-   639,   640,   650,   652,   654,   659,   661,   663,   666,   670,
-   671,   673,   675,   677,   679,   681,   683,   685,   687,   689,
-   693,   695,   701,   703,   705,   707,   709,   711,   713,   716,
-   719,   722,   726,   729,   730,   732,   735,   738,   742,   752,
-   762,   771,   786,   788,   790,   797,   803,   806,   813,   821,
-   825,   829,   835,   841,   842,   843,   847,   850,   852,   858,
-   864,   871,   878,   883,   890,   895,   900,   907,   914,   917,
-   926,   928,   930,   931,   935,   942,   946,   953,   956,   962,
-   970
-};
-
-static const short yyrhs[] = {    73,
-     0,    74,     0,    75,     0,    76,     0,    77,     0,    78,
-     0,    79,     0,    80,     0,    81,     0,    85,     0,    86,
-     0,    87,     0,    82,     0,    83,     0,    84,     0,   116,
-     0,   117,     0,   118,     0,   119,     0,   120,     0,   121,
-     0,   122,     0,   123,     0,   124,     0,   125,     0,   126,
-     0,   127,     0,    90,     0,    91,     0,    92,     0,    93,
-     0,    94,     0,    95,     0,    96,     0,    97,     0,    98,
-     0,    99,     0,   100,     0,   101,     0,   102,     0,   103,
-     0,   104,     0,   105,     0,   106,     0,   107,     0,   108,
-     0,   109,     0,    96,     0,    97,     0,    98,     0,    99,
-     0,    26,     0,    27,     0,    11,     0,    12,     0,    13,
-     0,    16,     0,    15,     0,    14,     0,    19,     0,    22,
-     0,    24,     0,   167,     0,     0,   167,   146,     0,     0,
-    20,     0,    23,     0,   172,     0,     0,   170,   146,     0,
-    42,     0,    44,     0,    43,     0,    45,     0,    47,     0,
-    46,     0,    48,     0,    50,     0,     0,   143,     0,   144,
-     0,   145,     0,     0,    46,     0,    48,     0,     0,    42,
-     0,    43,     0,    44,     0,    47,     0,     0,    44,     0,
-    42,     0,     0,    61,     0,    62,     0,    63,     0,    64,
-     0,    65,     0,    60,     4,     0,   135,     0,   117,     0,
-   134,     0,   118,     0,   137,     0,   138,     0,   140,     0,
-   141,     0,   142,     0,     0,   181,   180,     0,   136,     0,
-   139,     0,   135,     0,   134,     0,     0,   183,   182,     0,
-     0,    53,     4,     0,     0,   147,    53,     4,     0,    34,
-    22,     0,     0,   186,     0,     0,   147,   189,   188,     0,
-   186,     0,    53,     4,     0,    11,     0,    12,     0,    13,
-     0,    16,     0,    15,     0,    14,     0,    17,     0,    49,
-     0,   190,     0,   191,   148,     0,   225,     0,   149,     4,
-     0,   191,   150,   195,   151,   183,     0,    10,   150,   195,
-   151,   183,     0,   152,     4,   153,   191,   154,     0,   155,
-     4,   153,   191,   156,     0,   157,   196,   158,     0,   157,
-   158,     0,   155,   157,   196,   158,   156,     0,   155,   157,
-   158,   156,     0,   191,   181,     0,   191,     0,    10,     0,
-   192,     0,   194,   147,   192,     0,   194,     0,   194,   147,
-    39,     0,    39,     0,     0,   191,     0,   196,   147,   191,
-     0,   191,   152,   199,   154,     0,   191,   152,   154,     0,
-   191,   159,    22,     0,   191,   155,   199,   156,     0,   191,
-   157,   199,   158,     0,   191,   157,   158,     0,   191,   155,
-   157,   199,   158,   156,     0,   191,   155,   157,   158,   156,
-     0,   191,    40,     0,   191,    41,     0,   191,   225,     0,
-   191,   198,     0,   191,    25,     0,   165,     3,     0,   165,
-     5,     0,   165,     4,     0,   165,     6,     0,    11,    26,
-     0,    11,    27,     0,   166,     9,     0,   162,   150,   197,
-    38,   191,   151,     0,   115,   150,   197,   236,   151,     0,
-   129,   150,   197,   147,   197,   147,   197,   151,     0,   160,
-   150,   197,   147,   197,   151,     0,   161,   150,   197,   147,
-   197,   151,     0,    88,   163,   150,   197,   147,   197,   151,
-     0,    89,   164,   150,   197,   147,   197,   151,     0,   131,
-   150,   197,   147,   197,   151,     0,   132,   150,   197,   147,
-   197,   147,   197,   151,     0,   133,   150,   197,   147,   197,
-   147,   197,   151,     0,   199,   147,   197,     0,   197,     0,
-    32,     0,    33,     0,    37,     0,     0,   193,   225,     0,
-   121,   150,   202,    38,   191,   151,     0,   204,     0,     0,
-   205,     0,   204,   205,     0,     0,    31,   206,   221,     0,
-     0,    30,   207,   222,     0,    58,    57,   211,     0,   169,
-    18,   191,     0,   169,    18,    10,     0,     0,   171,   175,
-   201,   200,   197,   208,   188,     0,     0,   171,   173,   175,
-   201,   200,   197,   209,   188,     0,     0,   171,   174,   175,
-   201,   200,   191,   210,   188,     0,   171,   175,    35,   178,
-   202,     0,    51,   212,     0,    54,   146,   213,     0,    22,
-     0,    52,   146,    22,     0,    66,   146,    22,     0,   152,
-   214,   154,     0,   214,   147,    22,     0,    22,     0,     0,
-   215,   147,   191,   181,   168,     0,   191,   181,   168,     0,
-   215,     0,   215,   147,    39,     0,    39,     0,     0,   179,
-   193,   170,   150,   216,   151,   183,   187,   184,     0,    28,
-     0,   157,     0,   177,   175,   217,   218,     0,    29,     0,
-   158,     0,   228,   220,     0,   176,   175,   217,     0,     0,
-    59,     0,     3,     0,     4,     0,     9,     0,    26,     0,
-    27,     0,    40,     0,    41,     0,    25,     0,   155,   199,
-   156,     0,   198,     0,    57,   223,    22,   147,    22,     0,
-     7,     0,     8,     0,   167,     0,   170,     0,   225,     0,
-   224,     0,   191,   226,     0,   228,   229,     0,   219,   229,
-     0,   230,   169,   231,     0,   230,   233,     0,     0,    21,
-     0,    67,   227,     0,    67,    10,     0,    68,    17,   226,
-     0,    68,    11,   226,   147,    17,   226,   147,    17,   226,
-     0,    69,   165,   226,   147,    17,   226,   152,   232,   154,
-     0,    69,   165,   226,   147,    17,   226,   152,   154,     0,
-    70,   179,   193,   226,   150,   235,   151,   183,    38,    17,
-   226,    71,    17,   226,     0,    71,     0,    72,     0,   232,
-   165,   224,   147,    17,   226,     0,   165,   224,   147,    17,
-   226,     0,   169,   238,     0,   191,   152,   226,   147,   226,
-   154,     0,   234,   147,   152,   226,   147,   226,   154,     0,
-   191,   226,   181,     0,    17,   226,   181,     0,   235,   147,
-   191,   226,   181,     0,   235,   147,    17,   226,   181,     0,
-     0,     0,   236,   147,   227,     0,    56,    55,     0,    55,
-     0,   160,   191,   226,   147,   226,     0,   161,   191,   226,
-   147,   226,     0,    88,   163,   191,   226,   147,   226,     0,
-    89,   164,   191,   226,   147,   226,     0,   162,   227,    38,
-   191,     0,   129,   227,   147,   227,   147,   227,     0,   130,
-   227,   147,   191,     0,   131,   227,   147,   227,     0,   132,
-   227,   147,   227,   147,   227,     0,   133,   227,   147,   227,
-   147,   227,     0,   128,   234,     0,   237,   179,   193,   226,
-   150,   235,   151,   183,     0,   240,     0,    36,     0,     0,
-   110,   191,   185,     0,   110,   191,   147,    11,   226,   185,
-     0,   111,   191,   185,     0,   111,   191,   147,    11,   226,
-   185,     0,   112,   227,     0,   239,   113,   191,   226,   185,
-     0,   239,   114,   227,   147,   191,   226,   185,     0,   115,
-   191,   226,   236,     0
-};
-
+#ifdef short
+# undef short
 #endif
 
-#if YYDEBUG != 0
-static const short yyrline[] = { 0,
-  1127,  1127,  1127,  1127,  1127,  1127,  1127,  1127,  1127,  1128,
-  1128,  1128,  1128,  1128,  1128,  1129,  1129,  1129,  1129,  1129,
-  1129,  1129,  1130,  1130,  1130,  1130,  1130,  1133,  1133,  1134,
-  1134,  1135,  1135,  1136,  1136,  1137,  1137,  1141,  1141,  1142,
-  1142,  1143,  1143,  1144,  1144,  1145,  1145,  1146,  1146,  1147,
-  1147,  1148,  1149,  1154,  1155,  1155,  1155,  1155,  1155,  1157,
-  1157,  1157,  1158,  1158,  1162,  1166,  1171,  1171,  1173,  1174,
-  1179,  1185,  1186,  1187,  1188,  1189,  1193,  1194,  1195,  1199,
-  1200,  1201,  1202,  1206,  1207,  1208,  1212,  1213,  1214,  1215,
-  1216,  1220,  1221,  1222,  1225,  1225,  1226,  1227,  1228,  1229,
-  1230,  1238,  1239,  1240,  1241,  1242,  1243,  1244,  1245,  1246,
-  1249,  1250,  1255,  1256,  1257,  1258,  1261,  1262,  1269,  1269,
-  1276,  1276,  1285,  1293,  1293,  1299,  1299,  1301,  1306,  1319,
-  1319,  1319,  1319,  1319,  1319,  1319,  1322,  1326,  1330,  1337,
-  1342,  1350,  1380,  1411,  1416,  1428,  1438,  1442,  1452,  1459,
-  1466,  1473,  1478,  1483,  1490,  1491,  1498,  1505,  1513,  1519,
-  1531,  1559,  1575,  1602,  1630,  1656,  1676,  1702,  1722,  1734,
-  1741,  1807,  1817,  1827,  1833,  1843,  1849,  1859,  1864,  1869,
-  1882,  1894,  1916,  1924,  1930,  1941,  1946,  1951,  1957,  1963,
-  1972,  1976,  1984,  1984,  1987,  1987,  1990,  2002,  2023,  2028,
-  2036,  2037,  2041,  2041,  2045,  2045,  2048,  2051,  2075,  2086,
-  2093,  2096,  2102,  2105,  2112,  2116,  2156,  2159,  2165,  2175,
-  2179,  2184,  2186,  2191,  2196,  2205,  2215,  2226,  2230,  2239,
-  2248,  2253,  2374,  2374,  2376,  2385,  2385,  2387,  2392,  2404,
-  2408,  2413,  2417,  2421,  2425,  2429,  2433,  2437,  2441,  2445,
-  2470,  2474,  2484,  2488,  2492,  2497,  2504,  2504,  2510,  2519,
-  2523,  2532,  2541,  2550,  2554,  2561,  2565,  2569,  2574,  2584,
-  2603,  2612,  2692,  2696,  2703,  2714,  2727,  2737,  2748,  2758,
-  2767,  2773,  2782,  2788,  2791,  2792,  2799,  2803,  2808,  2829,
-  2846,  2860,  2874,  2886,  2894,  2901,  2907,  2913,  2919,  2934,
-  3019,  3024,  3028,  3035,  3042,  3050,  3057,  3065,  3073,  3087,
-  3104
-};
-#endif
-
-
-#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-
-static const char * const yytname[] = {   "$","error","$undefined.","ESINT64VAL",
-"EUINT64VAL","ESAPINTVAL","EUAPINTVAL","LOCALVAL_ID","GLOBALVAL_ID","FPVAL",
-"VOID","INTTYPE","FLOAT","DOUBLE","X86_FP80","FP128","PPC_FP128","LABEL","TYPE",
-"LOCALVAR","GLOBALVAR","LABELSTR","STRINGCONSTANT","ATSTRINGCONSTANT","PCTSTRINGCONSTANT",
-"ZEROINITIALIZER","TRUETOK","FALSETOK","BEGINTOK","ENDTOK","DECLARE","DEFINE",
-"GLOBAL","CONSTANT","SECTION","ALIAS","VOLATILE","THREAD_LOCAL","TO","DOTDOTDOT",
-"NULL_TOK","UNDEF","INTERNAL","LINKONCE","WEAK","APPENDING","DLLIMPORT","DLLEXPORT",
-"EXTERN_WEAK","OPAQUE","EXTERNAL","TARGET","TRIPLE","ALIGN","DEPLIBS","CALL",
-"TAIL","ASM_TOK","MODULE","SIDEEFFECT","CC_TOK","CCC_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","SHL","LSHR","ASHR","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","VAARG","EXTRACTELEMENT","INSERTELEMENT",
-"SHUFFLEVECTOR","SIGNEXT","ZEROEXT","NORETURN","INREG","SRET","NOUNWIND","NOALIAS",
-"BYVAL","NEST","DEFAULT","HIDDEN","PROTECTED","'='","','","'*'","'\\\\'","'('",
-"')'","'['","'x'","']'","'<'","'>'","'{'","'}'","'c'","ArithmeticOps","LogicalOps",
-"CastOps","IPredicates","FPredicates","IntType","FPType","LocalName","OptLocalName",
-"OptLocalAssign","GlobalName","OptGlobalAssign","GlobalAssign","GVInternalLinkage",
-"GVExternalLinkage","GVVisibilityStyle","FunctionDeclareLinkage","FunctionDefineLinkage",
-"AliasLinkage","OptCallingConv","ParamAttr","OptParamAttrs","FuncAttr","OptFuncAttrs",
-"OptAlign","OptCAlign","SectionString","OptSection","GlobalVarAttributes","GlobalVarAttribute",
-"PrimType","Types","ArgType","ResultTypes","ArgTypeList","ArgTypeListI","TypeListI",
-"ConstVal","ConstExpr","ConstVector","GlobalType","ThreadLocal","AliaseeRef",
-"Module","DefinitionList","Definition","@1","@2","@3","@4","@5","AsmBlock","TargetDefinition",
-"LibrariesDefinition","LibList","ArgListH","ArgList","FunctionHeaderH","BEGIN",
-"FunctionHeader","END","Function","FunctionProto","OptSideEffect","ConstValueRef",
-"SymbolicValueRef","ValueRef","ResolvedVal","BasicBlockList","BasicBlock","InstructionList",
-"BBTerminatorInst","JumpTable","Inst","PHIList","ParamList","IndexList","OptTailCall",
-"InstVal","OptVolatile","MemoryInst", NULL
-};
-#endif
-
-static const short yyr1[] = {     0,
-   160,   160,   160,   160,   160,   160,   160,   160,   160,   161,
-   161,   161,   161,   161,   161,   162,   162,   162,   162,   162,
-   162,   162,   162,   162,   162,   162,   162,   163,   163,   163,
-   163,   163,   163,   163,   163,   163,   163,   164,   164,   164,
-   164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-   164,   164,   164,   165,   166,   166,   166,   166,   166,   167,
-   167,   167,   168,   168,   169,   169,   170,   170,   171,   171,
-   172,   173,   173,   173,   173,   173,   174,   174,   174,   175,
-   175,   175,   175,   176,   176,   176,   177,   177,   177,   177,
-   177,   178,   178,   178,   179,   179,   179,   179,   179,   179,
-   179,   180,   180,   180,   180,   180,   180,   180,   180,   180,
-   181,   181,   182,   182,   182,   182,   183,   183,   184,   184,
-   185,   185,   186,   187,   187,   188,   188,   189,   189,   190,
-   190,   190,   190,   190,   190,   190,   191,   191,   191,   191,
-   191,   191,   191,   191,   191,   191,   191,   191,   191,   192,
-   193,   193,   194,   194,   195,   195,   195,   195,   196,   196,
-   197,   197,   197,   197,   197,   197,   197,   197,   197,   197,
-   197,   197,   197,   197,   197,   197,   197,   197,   197,   197,
-   198,   198,   198,   198,   198,   198,   198,   198,   198,   198,
-   199,   199,   200,   200,   201,   201,   202,   202,   203,   203,
-   204,   204,   206,   205,   207,   205,   205,   205,   205,   208,
-   205,   209,   205,   210,   205,   205,   205,   205,   211,   212,
-   212,   213,   214,   214,   214,   215,   215,   216,   216,   216,
-   216,   217,   218,   218,   219,   220,   220,   221,   222,   223,
-   223,   224,   224,   224,   224,   224,   224,   224,   224,   224,
-   224,   224,   225,   225,   225,   225,   226,   226,   227,   228,
-   228,   229,   230,   230,   230,   231,   231,   231,   231,   231,
-   231,   231,   231,   231,   232,   232,   233,   234,   234,   235,
-   235,   235,   235,   235,   236,   236,   237,   237,   238,   238,
-   238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
-   238,   239,   239,   240,   240,   240,   240,   240,   240,   240,
-   240
-};
-
-static const short yyr2[] = {     0,
-     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     0,     2,     0,     1,     1,     1,     0,
-     2,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-     1,     1,     1,     0,     1,     1,     0,     1,     1,     1,
-     1,     0,     1,     1,     0,     1,     1,     1,     1,     1,
-     2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     0,     2,     1,     1,     1,     1,     0,     2,     0,     2,
-     0,     3,     2,     0,     1,     0,     3,     1,     2,     1,
-     1,     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,     2,     2,
-     6,     5,     8,     6,     6,     7,     7,     6,     8,     8,
-     3,     1,     1,     1,     1,     0,     2,     6,     1,     0,
-     1,     2,     0,     3,     0,     3,     3,     3,     3,     0,
-     7,     0,     8,     0,     8,     5,     2,     3,     1,     3,
-     3,     3,     3,     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,     1,     1,     2,     2,
-     2,     3,     2,     0,     1,     2,     2,     3,     9,     9,
-     8,    14,     1,     1,     6,     5,     2,     6,     7,     3,
-     3,     5,     5,     0,     0,     3,     2,     1,     5,     5,
-     6,     6,     4,     6,     4,     4,     6,     6,     2,     8,
-     1,     1,     0,     3,     6,     3,     6,     2,     5,     7,
-     4
-};
-
-static const short yydefact[] = {    70,
-    60,    67,    61,    68,    62,   205,   203,     0,     0,     0,
-     0,     0,     0,    80,    69,    70,   201,    84,    87,     0,
-     0,   217,     0,     0,    65,     0,    71,    72,    74,    73,
-    75,    77,    76,    78,    79,    81,    82,    83,    80,    80,
-   196,   202,    85,    86,    80,   206,    88,    89,    90,    91,
-    80,   264,   204,   264,     0,     0,   225,   218,   219,   207,
-   253,   254,   209,   130,   131,   132,   135,   134,   133,   136,
-   137,     0,     0,     0,     0,   255,   256,   138,   208,   140,
-   196,   196,    92,   195,     0,    95,    95,   265,   261,    66,
-   236,   237,   238,   260,   220,   221,   224,     0,   158,   141,
-     0,     0,     0,     0,   147,   159,     0,   139,   158,     0,
-     0,    94,    93,     0,   193,   194,     0,     0,    96,    97,
-    98,    99,   100,     0,   239,     0,   303,   263,     0,   222,
-   157,   111,   153,   155,     0,     0,     0,     0,     0,     0,
-   146,     0,     0,     0,   152,     0,   151,     0,   216,   130,
-   131,   132,   135,   134,   133,     0,     0,     0,   210,   101,
-     0,   233,   234,   235,   302,   288,     0,     0,     0,     0,
-    95,   273,   274,     1,     2,     3,     4,     5,     6,     7,
-     8,     9,    13,    14,    15,    10,    11,    12,     0,     0,
-     0,     0,     0,     0,    16,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,    27,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   262,    95,   277,     0,   301,
-   223,   150,     0,   117,     0,     0,   149,     0,   160,   117,
-   212,   214,     0,   197,   178,   179,   174,   176,   175,   177,
-   180,   173,   169,   170,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   172,   171,
-   126,     0,   287,   267,     0,   266,     0,     0,    54,     0,
-     0,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,     0,    52,    53,    48,    49,    50,    51,    38,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,     0,   121,
-   121,   308,     0,     0,   299,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   103,   105,   104,   102,
-   106,   107,   108,   109,   110,   112,   156,   154,   143,   144,
-   145,   148,   142,   126,   126,     0,     0,     0,     0,     0,
-     0,     0,     0,   162,   192,     0,     0,     0,   166,     0,
-   163,     0,     0,     0,     0,   211,   231,   242,   243,   244,
-   249,   245,   246,   247,   248,   240,     0,   251,   258,   257,
-   259,     0,   268,     0,     0,     0,     0,     0,   304,     0,
-   306,   285,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   116,   115,   113,   114,   118,
-   213,   215,     0,     0,     0,   285,     0,     0,     0,     0,
-     0,   161,   147,   159,     0,   164,   165,     0,     0,     0,
-     0,     0,   128,   126,   230,   111,   228,     0,   241,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   311,
-     0,     0,     0,   295,   296,     0,     0,     0,     0,   293,
-     0,   121,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   191,   168,     0,     0,     0,     0,   123,   129,   127,
-    64,     0,   117,     0,   250,     0,     0,   284,     0,     0,
-   121,   122,   121,     0,     0,     0,     0,     0,     0,   289,
-   290,   284,     0,   309,     0,   198,     0,     0,   182,     0,
-     0,     0,     0,   167,     0,     0,     0,    63,   227,   229,
-   111,   124,     0,     0,     0,   136,     0,     0,   291,   292,
-   305,   307,   286,     0,     0,   294,   297,   298,     0,   121,
-     0,     0,     0,   188,     0,     0,   184,   185,   181,    64,
-   125,   119,   252,     0,     0,   111,   111,     0,   117,   278,
-     0,   117,   310,   186,   187,     0,     0,     0,   226,     0,
-   232,     0,   271,     0,     0,   281,   280,   136,     0,     0,
-   279,   300,   183,   189,   190,   120,   269,     0,   270,     0,
-   111,   111,     0,     0,     0,   283,   282,     0,     0,     0,
-     0,   276,     0,     0,   275,     0,   272,     0,     0,     0
-};
-
-static const short yydefgoto[] = {   256,
-   257,   258,   282,   299,   156,   157,    76,   509,    12,    77,
-    14,    15,    39,    40,    41,    45,    51,   114,   124,   326,
-   222,   400,   329,   561,   379,   423,   542,   356,   424,    78,
-   158,   133,   148,   134,   135,   107,   345,   368,   346,   117,
-    85,   149,   598,    16,    17,    19,    18,   261,   334,   335,
-    60,    22,    58,    98,   427,   428,   125,   164,    52,    93,
-    53,    46,   430,   369,    80,   371,   266,    54,    89,    90,
-   216,   565,   128,   305,   518,   440,   217,   218,   219,   220
-};
-
-static const short yypact[] = {    42,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,    -8,  -110,    13,
-   -39,   104,     5,   167,-32768,   321,-32768,    83,    74,    12,
-    17,-32768,    41,   148,-32768,  1305,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   117,   117,
-    11,-32768,-32768,-32768,   117,-32768,-32768,-32768,-32768,-32768,
-   117,   154,-32768,   -10,   181,   204,   212,-32768,-32768,-32768,
--32768,-32768,    98,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   254,   259,     3,   958,-32768,-32768,-32768,    49,-32768,
-   231,   231,   225,-32768,    65,   215,   215,-32768,-32768,   131,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,   -34,  1038,-32768,
-   120,   128,   976,    98,-32768,    49,  -123,-32768,  1038,    65,
-    65,-32768,-32768,  1056,-32768,-32768,  1327,   280,-32768,-32768,
--32768,-32768,-32768,  1345,-32768,   -16,  1663,-32768,   263,-32768,
--32768,    49,-32768,   139,   136,  1398,  1398,   132,   -95,  1398,
--32768,   143,  1327,  1398,    98,   145,    49,   213,-32768,    50,
-   287,   289,   298,   299,   300,   219,   304,   805,-32768,-32768,
-   233,-32768,-32768,-32768,-32768,-32768,   260,  1496,    70,   303,
-   215,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   396,   449,
-  1398,  1398,  1398,  1398,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,  1398,  1398,  1398,  1398,
-  1398,  1398,  1398,  1398,  1398,-32768,   215,-32768,   125,-32768,
--32768,   -32,  1078,-32768,    23,  -105,-32768,   160,    49,-32768,
--32768,    49,  1056,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   396,   449,   168,   169,   170,   173,
-   174,  1229,  1514,   998,   295,   175,   179,   183,-32768,-32768,
-   187,   185,-32768,    98,   646,-32768,   780,   780,-32768,   780,
-  1345,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,  1398,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1398,    97,
-   102,-32768,   646,    24,   195,   203,   208,   209,   210,   211,
-   646,   646,   332,  1345,  1398,  1398,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    10,-32768,
--32768,-32768,    10,   187,   187,   333,   186,   223,  1327,  1327,
-  1327,  1327,  1327,-32768,-32768,   -15,  1016,   -55,-32768,   -79,
--32768,  1327,  1327,  1327,    -4,-32768,  1247,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,   317,  1327,-32768,-32768,-32768,
--32768,   234,-32768,   235,   780,   646,   646,     4,-32768,    22,
--32768,-32768,   780,   207,  1398,  1398,  1398,  1398,  1398,   236,
-   240,  1398,   780,   646,   241,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,  1398,  1327,  1327,-32768,   244,   246,   247,   251,
-  1327,-32768,   224,   805,   -78,-32768,-32768,   252,   253,   363,
-   380,   399,-32768,   187,-32768,    49,   257,   256,-32768,   386,
-   -52,   392,   393,   261,   270,   275,   780,   422,   780,   282,
-   283,   780,   284,    49,-32768,   285,   288,   780,   780,    49,
-   277,   290,  1398,    30,   291,   292,   -80,  1327,  1327,  1327,
-  1327,-32768,-32768,   293,  1327,  1327,  1398,-32768,-32768,-32768,
-   278,  1287,-32768,   294,-32768,   780,   780,  1554,   780,   780,
-   290,-32768,   290,  1398,   780,   296,  1398,  1398,  1398,-32768,
--32768,  1554,   383,-32768,   646,-32768,  1327,  1327,-32768,   297,
-   301,   307,   308,-32768,   305,   309,    68,-32768,-32768,-32768,
-    49,   -11,   418,   314,   313,   780,   646,    -9,-32768,-32768,
--32768,-32768,-32768,   312,   780,-32768,-32768,-32768,    44,   290,
-   318,   319,  1327,-32768,  1327,  1327,-32768,-32768,-32768,   278,
--32768,   395,-32768,   428,    -7,-32768,-32768,  1572,-32768,-32768,
-   320,-32768,-32768,-32768,-32768,   322,   328,   329,-32768,   442,
--32768,   780,-32768,   503,    -2,   -32,   -32,   780,   646,     1,
--32768,    10,-32768,-32768,-32768,-32768,-32768,   325,-32768,   503,
--32768,-32768,   433,   451,   334,   -32,   -32,   780,   780,   466,
-   413,-32768,   780,   479,-32768,   780,-32768,   500,   501,-32768
-};
-
-static const short yypgoto[] = {   375,
-   376,   377,   264,   262,  -168,-32768,     0,   -30,   421,    18,
--32768,-32768,-32768,-32768,    43,-32768,-32768,-32768,  -158,-32768,
-  -420,-32768,  -222,-32768,  -287,     2,-32768,  -294,-32768,-32768,
-   -25,   302,  -107,-32768,   404,   414,  -112,  -155,  -233,   144,
-   189,   286,-32768,-32768,   502,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   434,-32768,-32768,-32768,
--32768,-32768,-32768,  -542,  -111,   122,  -183,-32768,   468,-32768,
--32768,-32768,-32768,-32768,    28,   118,-32768,-32768,-32768,-32768
-};
-
-
-#define	YYLAST		1796
-
-
-static const short yytable[] = {    11,
-    79,   270,   259,   269,   159,   471,   102,   333,   269,   302,
-    88,   162,   271,   381,   437,    11,   161,    13,    91,   348,
-   350,   578,   421,   140,   306,   307,   308,   309,   310,   421,
-   231,   313,   439,    13,   141,    23,   234,   585,   583,   401,
-   402,  -200,   108,    20,   109,    83,   260,    84,   422,   106,
-   331,   140,   -54,   -54,   -54,   -54,   438,    21,   314,   -66,
-     1,     2,   228,     3,     4,     5,   484,   411,   411,    24,
-   499,     6,     7,   132,   438,   235,   236,   106,   417,   464,
-   267,    81,    82,   132,   317,   318,   268,    86,   147,    11,
-   540,   411,     8,    87,   411,     9,   115,   116,   147,    10,
-   416,   319,   320,   475,   321,   322,    25,   323,   324,   325,
-   225,   226,   129,   415,   229,    47,    48,    49,   232,   130,
-    50,    26,   396,   397,   398,   566,   567,   399,    43,   470,
-    44,   411,   395,   431,   396,   397,   398,   548,   412,   399,
-   163,   549,   265,   396,   397,   398,   563,    92,   399,     1,
-    27,   579,     3,   370,     5,   370,   370,    55,   370,   103,
-   586,   587,    56,   375,   494,   300,   301,   265,   303,    59,
-   108,   108,   109,   109,    88,   383,   330,   108,   262,   109,
-   496,   304,   265,   265,   265,   265,   265,   311,   312,   265,
-   548,   370,    57,   521,   552,   522,   108,   132,   109,   370,
-   370,   443,    95,   445,   446,   447,   393,   147,    28,    29,
-    30,    31,    32,    33,    34,   108,    35,   109,   539,    61,
-    62,   237,   238,   239,   240,    96,   406,   407,   408,   409,
-   410,     1,     2,    97,     3,     4,     5,   315,   316,   418,
-   419,   420,   553,   378,   108,   147,   109,    99,   380,   108,
-   512,   109,     2,   143,   144,     4,   376,   100,   259,    36,
-    37,    38,   101,   370,   370,   370,   112,    84,   113,   110,
-   111,   370,   136,   377,   118,   119,   120,   121,   122,   123,
-   137,   370,   370,   160,   221,   223,   224,   227,   147,   394,
-   265,   455,   456,   230,   233,   -55,     1,   -56,   462,     3,
-   523,     5,   260,   526,   527,   528,   -59,   -58,   -57,    36,
-    37,    38,   241,   269,   263,   332,   351,   339,   340,   341,
-  -199,   414,   342,   343,   352,   370,   570,   370,   353,   572,
-   370,   426,   354,   355,   357,   404,   370,   370,   -66,     1,
-     2,   384,     3,     4,     5,   500,   501,   502,   503,   385,
-     6,     7,   505,   506,   386,   387,   388,   389,   442,   265,
-   444,   265,   265,   265,   370,   370,   450,   370,   370,   392,
-   403,     8,   405,   370,     9,   429,   564,   454,    10,   463,
-   432,   433,   448,   370,   531,   532,   449,   453,   372,   373,
-   458,   374,   459,   460,   317,   318,   580,   461,   465,   466,
-   467,   468,   469,   472,   370,   370,   473,   474,   476,   477,
-   478,   319,   320,   370,   321,   322,   479,   323,   324,   325,
-   556,   480,   557,   558,   382,   482,   492,   495,   484,   485,
-   487,   488,   390,   391,   489,   438,   493,   497,   498,   543,
-   513,   507,   525,   533,   562,   576,   511,   560,   504,   588,
-   370,   534,   517,   535,   536,   537,   370,   370,   265,   538,
-   544,   265,   265,   265,   545,   550,   517,   589,   554,   555,
-   508,   584,   573,   571,   283,   284,   370,   370,   574,   575,
-   590,   370,   593,   594,   370,   272,   273,   274,   275,   276,
-   277,   278,   279,   280,   281,   596,   434,   435,   436,   599,
-   600,   213,   214,   215,   441,   358,   359,   338,   337,   559,
-   127,   360,   142,   541,   451,   452,   139,    42,   336,   529,
-   126,    94,   569,   457,   328,     0,     0,   361,   362,   363,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   508,
-     0,     0,   364,   365,   285,   286,   287,   288,   289,   290,
-   291,   292,   293,   294,   295,   296,   297,   298,   481,   366,
-   483,     0,     0,   486,     0,     0,     0,     0,     0,   490,
-   491,     0,     0,     0,     0,   174,   175,   176,   177,   178,
-   179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-   245,   246,     0,     0,     0,     0,     0,   514,   515,     0,
-   519,   520,     0,     0,     0,     0,   524,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   530,   247,   195,   196,
-   197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
-     0,   248,     0,   249,   250,   251,     0,   546,   547,     0,
-     0,     0,     0,     0,     0,     0,   551,     0,   358,   359,
-     0,     0,    61,    62,   360,     0,     0,   367,     0,     0,
-     0,     0,     0,     0,     1,     2,     0,     3,     4,     5,
-   361,   362,   363,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   577,     0,   364,   365,     0,     0,   581,
-   582,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   366,     0,     0,     0,     0,     0,     0,   591,
-   592,     0,     0,     0,   595,     0,     0,   597,   174,   175,
-   176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-   186,   187,   188,   245,   246,     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,
-   247,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-   204,   205,   206,     0,   248,     0,   249,   250,   251,     0,
-     0,     0,   358,   359,     0,     0,    61,    62,   360,     0,
-     0,     0,     0,   108,     0,   109,     0,     0,     1,     2,
-   367,     3,     4,     5,   361,   362,   363,     0,     0,     0,
-     0,    61,    62,     0,     0,     0,     0,     0,     0,   364,
-   365,     0,     0,     1,     2,     0,     3,     4,     5,   242,
-     0,     0,     0,     0,     0,     0,   366,     0,     0,     0,
-     0,     0,     0,     0,   243,   244,     0,     0,     0,     0,
-     0,     0,   174,   175,   176,   177,   178,   179,   180,   181,
-   182,   183,   184,   185,   186,   187,   188,   245,   246,     0,
-     0,     0,     0,     0,     0,     0,     0,   174,   175,   176,
-   177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
-   187,   188,   245,   246,   247,   195,   196,   197,   198,   199,
-   200,   201,   202,   203,   204,   205,   206,     0,   248,     0,
-   249,   250,   251,     0,     0,     0,     0,     0,     0,   247,
-   195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-   205,   206,     0,   248,   367,   249,   250,   251,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   108,     0,   109,     0,   252,     0,     0,   253,
-     0,   254,     0,   255,    61,    62,     0,   104,    64,    65,
-    66,    67,    68,    69,    70,     0,     1,     2,     0,     3,
-     4,     5,    61,    62,     0,   104,    64,    65,    66,    67,
-    68,    69,    70,     0,     1,     2,     0,     3,     4,     5,
-     0,     0,     0,     0,    61,    62,    71,   104,   150,   151,
-   152,   153,   154,   155,    70,     0,     1,     2,     0,     3,
-     4,     5,    61,    62,    71,   104,   150,   151,   152,   153,
-   154,   155,    70,     0,     1,     2,     0,     3,     4,     5,
-     0,     0,     0,     0,    61,    62,    71,   104,    64,    65,
-    66,    67,    68,    69,    70,     0,     1,     2,     0,     3,
-     4,     5,    61,    62,    71,   145,    64,    65,    66,    67,
-    68,    69,    70,     0,     1,     2,   131,     3,     4,     5,
-     0,     0,     0,     0,    61,    62,    71,   104,    64,    65,
-    66,    67,    68,    69,    70,     0,     1,     2,     0,     3,
-     4,     5,     0,     0,    71,     0,    72,     0,     0,    73,
-     0,     0,    74,     0,    75,   105,   327,     0,     0,     0,
-     0,     0,     0,     0,    72,     0,    71,    73,     0,     0,
-    74,     0,    75,   138,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    72,     0,     0,    73,
-     0,     0,    74,     0,    75,   349,     0,     0,     0,     0,
-     0,     0,     0,     0,    72,     0,     0,    73,     0,     0,
-    74,     0,    75,   413,     0,     0,   146,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    72,     0,     0,    73,
-     0,     0,    74,     0,    75,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    72,     0,     0,    73,     0,     0,
-    74,     0,    75,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    72,     0,     0,    73,
-     0,     0,    74,     0,    75,    61,    62,     0,   104,   150,
-   151,   152,   153,   154,   155,    70,     0,     1,     2,     0,
-     3,     4,     5,    61,    62,     0,   104,    64,    65,    66,
-    67,    68,    69,    70,     0,     1,     2,     0,     3,     4,
-     5,     0,     0,     0,     0,     0,     0,    71,     0,     0,
-     0,     0,     0,     0,     0,   425,     0,     0,     0,     0,
-     0,     0,     0,    61,    62,    71,   104,    64,    65,    66,
-    67,    68,    69,    70,     0,     1,     2,     0,     3,     4,
-     5,    61,    62,     0,    63,    64,    65,    66,    67,    68,
-    69,    70,     0,     1,     2,   510,     3,     4,     5,     0,
-     0,     0,     0,    61,    62,    71,   104,   150,   151,   152,
-   153,   154,   155,    70,     0,     1,     2,     0,     3,     4,
-     5,    61,    62,    71,   145,    64,    65,    66,    67,    68,
-    69,    70,     0,     1,     2,     0,     3,     4,     5,     0,
-     0,     0,     0,     0,     0,    71,     0,    72,     0,     0,
-    73,     0,   344,    74,     0,    75,     0,     0,     0,     0,
-     0,     0,     0,    71,     0,    72,     0,     0,    73,     0,
-     0,    74,     0,    75,    61,    62,     0,   104,    64,    65,
-    66,    67,    68,    69,    70,     0,     1,     2,     0,     3,
-     4,     5,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    72,     0,     0,    73,     0,
-     0,    74,     0,    75,     0,     0,    71,     0,     0,     0,
-     0,     0,     0,    72,     0,     0,    73,     0,     0,    74,
-     0,    75,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    72,     0,     0,    73,     0,
-     0,    74,     0,    75,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    72,     0,     0,    73,     0,     0,    74,
-     0,    75,    61,    62,     0,   264,    64,    65,    66,    67,
-    68,    69,    70,     0,     1,     2,     0,     3,     4,     5,
-    61,    62,     0,   104,   150,   151,   152,   153,   154,   155,
-    70,     0,     1,     2,     0,     3,     4,     5,     0,     0,
-     0,     0,     0,     0,    71,     0,    72,     0,     0,    73,
-     0,     0,    74,     0,    75,     0,     0,     0,     0,     0,
-    61,    62,    71,   104,    64,    65,    66,    67,    68,    69,
-   516,     0,     1,     2,     0,     3,     4,     5,    61,    62,
-     0,   104,    64,    65,    66,    67,    68,    69,   568,     0,
-     1,     2,     0,     3,     4,     5,     0,     0,     0,     0,
-     0,     0,    71,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    71,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    72,     0,     0,    73,     0,     0,
-    74,     0,    75,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    72,     0,     0,    73,     0,     0,    74,     0,
-   347,     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,   165,     0,
-     0,     0,    72,     0,     0,    73,     0,     0,    74,     0,
-    75,     0,     0,     0,     0,     0,     0,   166,   167,     0,
-    72,     0,     0,    73,     0,     0,    74,     0,    75,   168,
-   169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-   179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-   189,   190,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   191,   192,   193,     0,     0,   194,   195,   196,
-   197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
-   207,   208,   209,   210,   211,   212
-};
-
-static const short yycheck[] = {     0,
-    26,   170,   158,    11,   117,   426,     4,   230,    11,   193,
-    21,    28,   171,   301,    11,    16,   124,     0,    29,   253,
-   254,   564,    34,   147,   208,   209,   210,   211,   212,    34,
-   143,   215,    11,    16,   158,   146,   148,   580,    38,   334,
-   335,     0,   148,    52,   150,    35,   158,    37,    53,    75,
-   156,   147,     3,     4,     5,     6,    53,    66,   217,    18,
-    19,    20,   158,    22,    23,    24,   147,   147,   147,    57,
-   151,    30,    31,    99,    53,    26,    27,   103,   158,   158,
-    11,    39,    40,   109,   117,   118,    17,    45,   114,    90,
-   511,   147,    51,    51,   147,    54,    32,    33,   124,    58,
-   156,   134,   135,   156,   137,   138,   146,   140,   141,   142,
-   136,   137,   147,   347,   140,    42,    43,    44,   144,   154,
-    47,    18,   134,   135,   136,   546,   547,   139,    46,   424,
-    48,   147,   316,   367,   134,   135,   136,   147,   154,   139,
-   157,   151,   168,   134,   135,   136,   154,   158,   139,    19,
-   146,   154,    22,   265,    24,   267,   268,   146,   270,   157,
-   581,   582,   146,   271,   452,   191,   192,   193,   194,    22,
-   148,   148,   150,   150,    21,   152,   154,   148,   161,   150,
-   151,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-   147,   303,   152,   481,   151,   483,   148,   223,   150,   311,
-   312,   385,    22,   387,   388,   389,   314,   233,    42,    43,
-    44,    45,    46,    47,    48,   148,    50,   150,   151,     7,
-     8,     3,     4,     5,     6,    22,   339,   340,   341,   342,
-   343,    19,    20,    22,    22,    23,    24,   113,   114,   352,
-   353,   354,   530,   147,   148,   271,   150,   150,   147,   148,
-   473,   150,    20,   110,   111,    23,   282,     4,   414,   143,
-   144,   145,     4,   375,   376,   377,    42,    37,    44,    81,
-    82,   383,   153,   299,    60,    61,    62,    63,    64,    65,
-   153,   393,   394,     4,    22,   147,   151,   156,   314,   315,
-   316,   404,   405,   151,   150,     9,    19,     9,   411,    22,
-   484,    24,   414,   487,   488,   489,     9,     9,     9,   143,
-   144,   145,     9,    11,    55,   156,    22,   150,   150,   150,
-     0,   347,   150,   150,   150,   437,   549,   439,   150,   552,
-   442,   357,   150,   147,   150,   150,   448,   449,    18,    19,
-    20,   147,    22,    23,    24,   458,   459,   460,   461,   147,
-    30,    31,   465,   466,   147,   147,   147,   147,   152,   385,
-   386,   387,   388,   389,   476,   477,   392,   479,   480,    38,
-    38,    51,   150,   485,    54,    59,   545,   403,    58,   156,
-   147,   147,   147,   495,   497,   498,   147,   147,   267,   268,
-   147,   270,   147,   147,   117,   118,   565,   147,   147,   147,
-    38,    22,     4,   147,   516,   517,   151,    22,    17,    17,
-   150,   134,   135,   525,   137,   138,   147,   140,   141,   142,
-   533,   147,   535,   536,   303,     4,   150,   453,   147,   147,
-   147,   147,   311,   312,   147,    53,   147,   147,   147,    22,
-   147,   467,   147,   147,    17,     4,   472,    53,   156,    17,
-   562,   151,   478,   147,   147,   151,   568,   569,   484,   151,
-   147,   487,   488,   489,   152,   154,   492,    17,   151,   151,
-   471,   147,   151,   154,    26,    27,   588,   589,   151,   151,
-   147,   593,    17,    71,   596,    90,    91,    92,    93,    94,
-    95,    96,    97,    98,    99,    17,   375,   376,   377,     0,
-     0,   127,   127,   127,   383,     3,     4,   246,   245,   540,
-    90,     9,   109,   512,   393,   394,   103,    16,   233,   492,
-    87,    54,   548,   406,   223,    -1,    -1,    25,    26,    27,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   540,
-    -1,    -1,    40,    41,    96,    97,    98,    99,   100,   101,
-   102,   103,   104,   105,   106,   107,   108,   109,   437,    57,
-   439,    -1,    -1,   442,    -1,    -1,    -1,    -1,    -1,   448,
-   449,    -1,    -1,    -1,    -1,    73,    74,    75,    76,    77,
-    78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
-    88,    89,    -1,    -1,    -1,    -1,    -1,   476,   477,    -1,
-   479,   480,    -1,    -1,    -1,    -1,   485,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   495,   115,   116,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
-    -1,   129,    -1,   131,   132,   133,    -1,   516,   517,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   525,    -1,     3,     4,
-    -1,    -1,     7,     8,     9,    -1,    -1,   155,    -1,    -1,
-    -1,    -1,    -1,    -1,    19,    20,    -1,    22,    23,    24,
-    25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   562,    -1,    40,    41,    -1,    -1,   568,
-   569,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,   588,
-   589,    -1,    -1,    -1,   593,    -1,    -1,   596,    73,    74,
-    75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-    85,    86,    87,    88,    89,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-   125,   126,   127,    -1,   129,    -1,   131,   132,   133,    -1,
-    -1,    -1,     3,     4,    -1,    -1,     7,     8,     9,    -1,
-    -1,    -1,    -1,   148,    -1,   150,    -1,    -1,    19,    20,
-   155,    22,    23,    24,    25,    26,    27,    -1,    -1,    -1,
-    -1,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,    40,
-    41,    -1,    -1,    19,    20,    -1,    22,    23,    24,    25,
-    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    40,    41,    -1,    -1,    -1,    -1,
-    -1,    -1,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
-    76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-    86,    87,    88,    89,   115,   116,   117,   118,   119,   120,
-   121,   122,   123,   124,   125,   126,   127,    -1,   129,    -1,
-   131,   132,   133,    -1,    -1,    -1,    -1,    -1,    -1,   115,
-   116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-   126,   127,    -1,   129,   155,   131,   132,   133,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   148,    -1,   150,    -1,   152,    -1,    -1,   155,
-    -1,   157,    -1,   159,     7,     8,    -1,    10,    11,    12,
-    13,    14,    15,    16,    17,    -1,    19,    20,    -1,    22,
-    23,    24,     7,     8,    -1,    10,    11,    12,    13,    14,
-    15,    16,    17,    -1,    19,    20,    -1,    22,    23,    24,
-    -1,    -1,    -1,    -1,     7,     8,    49,    10,    11,    12,
-    13,    14,    15,    16,    17,    -1,    19,    20,    -1,    22,
-    23,    24,     7,     8,    49,    10,    11,    12,    13,    14,
-    15,    16,    17,    -1,    19,    20,    -1,    22,    23,    24,
-    -1,    -1,    -1,    -1,     7,     8,    49,    10,    11,    12,
-    13,    14,    15,    16,    17,    -1,    19,    20,    -1,    22,
-    23,    24,     7,     8,    49,    10,    11,    12,    13,    14,
-    15,    16,    17,    -1,    19,    20,    39,    22,    23,    24,
-    -1,    -1,    -1,    -1,     7,     8,    49,    10,    11,    12,
-    13,    14,    15,    16,    17,    -1,    19,    20,    -1,    22,
-    23,    24,    -1,    -1,    49,    -1,   149,    -1,    -1,   152,
-    -1,    -1,   155,    -1,   157,   158,    39,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   149,    -1,    49,   152,    -1,    -1,
-   155,    -1,   157,   158,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   149,    -1,    -1,   152,
-    -1,    -1,   155,    -1,   157,   158,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   149,    -1,    -1,   152,    -1,    -1,
-   155,    -1,   157,   158,    -1,    -1,   121,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   149,    -1,    -1,   152,
-    -1,    -1,   155,    -1,   157,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   149,    -1,    -1,   152,    -1,    -1,
-   155,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   149,    -1,    -1,   152,
-    -1,    -1,   155,    -1,   157,     7,     8,    -1,    10,    11,
-    12,    13,    14,    15,    16,    17,    -1,    19,    20,    -1,
-    22,    23,    24,     7,     8,    -1,    10,    11,    12,    13,
-    14,    15,    16,    17,    -1,    19,    20,    -1,    22,    23,
-    24,    -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,     7,     8,    49,    10,    11,    12,    13,
-    14,    15,    16,    17,    -1,    19,    20,    -1,    22,    23,
-    24,     7,     8,    -1,    10,    11,    12,    13,    14,    15,
-    16,    17,    -1,    19,    20,    39,    22,    23,    24,    -1,
-    -1,    -1,    -1,     7,     8,    49,    10,    11,    12,    13,
-    14,    15,    16,    17,    -1,    19,    20,    -1,    22,    23,
-    24,     7,     8,    49,    10,    11,    12,    13,    14,    15,
-    16,    17,    -1,    19,    20,    -1,    22,    23,    24,    -1,
-    -1,    -1,    -1,    -1,    -1,    49,    -1,   149,    -1,    -1,
-   152,    -1,   154,   155,    -1,   157,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    49,    -1,   149,    -1,    -1,   152,    -1,
-    -1,   155,    -1,   157,     7,     8,    -1,    10,    11,    12,
-    13,    14,    15,    16,    17,    -1,    19,    20,    -1,    22,
-    23,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   149,    -1,    -1,   152,    -1,
-    -1,   155,    -1,   157,    -1,    -1,    49,    -1,    -1,    -1,
-    -1,    -1,    -1,   149,    -1,    -1,   152,    -1,    -1,   155,
-    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   149,    -1,    -1,   152,    -1,
-    -1,   155,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   149,    -1,    -1,   152,    -1,    -1,   155,
-    -1,   157,     7,     8,    -1,    10,    11,    12,    13,    14,
-    15,    16,    17,    -1,    19,    20,    -1,    22,    23,    24,
-     7,     8,    -1,    10,    11,    12,    13,    14,    15,    16,
-    17,    -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,
-    -1,    -1,    -1,    -1,    49,    -1,   149,    -1,    -1,   152,
-    -1,    -1,   155,    -1,   157,    -1,    -1,    -1,    -1,    -1,
-     7,     8,    49,    10,    11,    12,    13,    14,    15,    16,
-    17,    -1,    19,    20,    -1,    22,    23,    24,     7,     8,
-    -1,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
-    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1,    -1,
-    -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   149,    -1,    -1,   152,    -1,    -1,
-   155,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   149,    -1,    -1,   152,    -1,    -1,   155,    -1,
-   157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,
-    -1,    -1,   149,    -1,    -1,   152,    -1,    -1,   155,    -1,
-   157,    -1,    -1,    -1,    -1,    -1,    -1,    55,    56,    -1,
-   149,    -1,    -1,   152,    -1,    -1,   155,    -1,   157,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-    78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
-    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   110,   111,   112,    -1,    -1,   115,   116,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
-   128,   129,   130,   131,   132,   133
-};
-/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/usr/share/bison.simple"
-/* This file comes from bison-1.28.  */
-
-/* Skeleton output parser for bison,
-   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
-
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
-
-#ifndef YYSTACK_USE_ALLOCA
-#ifdef alloca
-#define YYSTACK_USE_ALLOCA
-#else /* alloca not defined */
-#ifdef __GNUC__
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
-#define YYSTACK_USE_ALLOCA
-#include <alloca.h>
-#else /* not sparc */
-/* We think this test detects Watcom and Microsoft C.  */
-/* This used to test MSDOS, but that is a bad idea
-   since that symbol is in the user namespace.  */
-#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
-#if 0 /* No need for malloc.h, which pollutes the namespace;
-	 instead, just don't use alloca.  */
-#include <malloc.h>
-#endif
-#else /* not MSDOS, or __TURBOC__ */
-#if defined(_AIX)
-/* I don't know what this was needed for, but it pollutes the namespace.
-   So I turned it off.   rms, 2 May 1997.  */
-/* #include <malloc.h>  */
- #pragma alloca
-#define YYSTACK_USE_ALLOCA
-#else /* not MSDOS, or __TURBOC__, or _AIX */
-#if 0
-#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
-		 and on HPUX 10.  Eventually we can turn this on.  */
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#endif /* __hpux */
-#endif
-#endif /* not _AIX */
-#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc */
-#endif /* not GNU C */
-#endif /* alloca not defined */
-#endif /* YYSTACK_USE_ALLOCA not defined */
-
-#ifdef YYSTACK_USE_ALLOCA
-#define YYSTACK_ALLOC alloca
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
 #else
-#define YYSTACK_ALLOC malloc
+typedef unsigned char yytype_uint8;
 #endif
 
-/* Note: there must be only one dollar sign in this file.
-   It is replaced by the list of actions, each action
-   as one case of the switch.  */
+#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;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#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
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+/* 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
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   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)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     ifndef _STDLIB_H
+#      define _STDLIB_H 1
+#     endif
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (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 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+#  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
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+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)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+     && (! defined __cplusplus \
+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  yytype_int16 yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (YYID (0))
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (YYID (0))
+
+#endif
+
+/* YYFINAL -- State number of the termination state.  */
+#define YYFINAL  43
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   1754
+
+/* YYNTOKENS -- Number of terminals.  */
+#define YYNTOKENS  162
+/* YYNNTS -- Number of nonterminals.  */
+#define YYNNTS  82
+/* YYNRULES -- Number of rules.  */
+#define YYNRULES  314
+/* YYNRULES -- Number of states.  */
+#define YYNSTATES  602
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   402
+
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const yytype_uint8 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,
+     152,   153,   150,     2,   149,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     157,   148,   158,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,   154,   151,   156,     2,     2,     2,     2,     2,   161,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     155,     2,     2,   159,     2,   160,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const yytype_uint16 yyprhs[] =
+{
+       0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
+      19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
+      39,    41,    43,    45,    47,    49,    51,    53,    55,    57,
+      59,    61,    63,    65,    67,    69,    71,    73,    75,    77,
+      79,    81,    83,    85,    87,    89,    91,    93,    95,    97,
+      99,   101,   103,   105,   107,   109,   111,   113,   115,   117,
+     119,   121,   123,   125,   127,   129,   130,   133,   134,   136,
+     138,   140,   141,   144,   146,   148,   150,   152,   154,   156,
+     158,   160,   161,   163,   165,   167,   168,   170,   172,   173,
+     175,   177,   179,   181,   182,   184,   186,   187,   189,   191,
+     193,   195,   197,   200,   202,   204,   206,   208,   210,   212,
+     214,   216,   218,   219,   222,   224,   226,   228,   230,   232,
+     234,   235,   238,   239,   242,   243,   247,   250,   251,   253,
+     254,   258,   260,   263,   265,   267,   269,   271,   273,   275,
+     277,   279,   281,   284,   286,   289,   295,   301,   307,   313,
+     317,   320,   326,   331,   334,   336,   338,   340,   344,   346,
+     350,   352,   353,   355,   359,   364,   368,   372,   377,   382,
+     386,   393,   399,   402,   405,   408,   411,   414,   417,   420,
+     423,   426,   429,   432,   435,   442,   448,   457,   464,   471,
+     479,   487,   494,   503,   512,   516,   518,   520,   522,   524,
+     525,   528,   535,   537,   538,   540,   543,   544,   548,   549,
+     553,   557,   561,   565,   566,   574,   575,   584,   585,   594,
+     600,   603,   607,   609,   613,   617,   621,   625,   627,   628,
+     634,   638,   640,   644,   646,   647,   657,   659,   661,   666,
+     668,   670,   673,   677,   678,   680,   682,   684,   686,   688,
+     690,   692,   694,   696,   700,   702,   708,   710,   712,   714,
+     716,   718,   720,   723,   726,   729,   733,   736,   737,   739,
+     742,   745,   749,   759,   769,   778,   793,   795,   797,   804,
+     810,   813,   820,   828,   832,   836,   842,   848,   849,   850,
+     854,   857,   859,   865,   871,   878,   885,   890,   897,   902,
+     907,   914,   921,   924,   933,   935,   937,   938,   942,   949,
+     953,   960,   963,   969,   977
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
+static const yytype_int16 yyrhs[] =
+{
+     206,     0,    -1,    73,    -1,    74,    -1,    75,    -1,    76,
+      -1,    77,    -1,    78,    -1,    79,    -1,    80,    -1,    81,
+      -1,    85,    -1,    86,    -1,    87,    -1,    82,    -1,    83,
+      -1,    84,    -1,   116,    -1,   117,    -1,   118,    -1,   119,
+      -1,   120,    -1,   121,    -1,   122,    -1,   123,    -1,   124,
+      -1,   125,    -1,   126,    -1,   127,    -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,   104,    -1,   105,    -1,   106,
+      -1,   107,    -1,   108,    -1,   109,    -1,    96,    -1,    97,
+      -1,    98,    -1,    99,    -1,    26,    -1,    27,    -1,    11,
+      -1,    12,    -1,    13,    -1,    16,    -1,    15,    -1,    14,
+      -1,    19,    -1,    22,    -1,    24,    -1,   170,    -1,    -1,
+     170,   148,    -1,    -1,    20,    -1,    23,    -1,   175,    -1,
+      -1,   173,   148,    -1,    42,    -1,    44,    -1,    43,    -1,
+      45,    -1,    47,    -1,    46,    -1,    48,    -1,    50,    -1,
+      -1,   145,    -1,   146,    -1,   147,    -1,    -1,    46,    -1,
+      48,    -1,    -1,    42,    -1,    43,    -1,    44,    -1,    47,
+      -1,    -1,    44,    -1,    42,    -1,    -1,    61,    -1,    62,
+      -1,    63,    -1,    64,    -1,    65,    -1,    60,     4,    -1,
+     135,    -1,   117,    -1,   134,    -1,   118,    -1,   137,    -1,
+     138,    -1,   140,    -1,   141,    -1,   142,    -1,    -1,   184,
+     183,    -1,   136,    -1,   139,    -1,   135,    -1,   134,    -1,
+     144,    -1,   143,    -1,    -1,   186,   185,    -1,    -1,    53,
+       4,    -1,    -1,   149,    53,     4,    -1,    34,    22,    -1,
+      -1,   189,    -1,    -1,   149,   192,   191,    -1,   189,    -1,
+      53,     4,    -1,    11,    -1,    12,    -1,    13,    -1,    16,
+      -1,    15,    -1,    14,    -1,    17,    -1,    49,    -1,   193,
+      -1,   194,   150,    -1,   228,    -1,   151,     4,    -1,   194,
+     152,   198,   153,   186,    -1,    10,   152,   198,   153,   186,
+      -1,   154,     4,   155,   194,   156,    -1,   157,     4,   155,
+     194,   158,    -1,   159,   199,   160,    -1,   159,   160,    -1,
+     157,   159,   199,   160,   158,    -1,   157,   159,   160,   158,
+      -1,   194,   184,    -1,   194,    -1,    10,    -1,   195,    -1,
+     197,   149,   195,    -1,   197,    -1,   197,   149,    39,    -1,
+      39,    -1,    -1,   194,    -1,   199,   149,   194,    -1,   194,
+     154,   202,   156,    -1,   194,   154,   156,    -1,   194,   161,
+      22,    -1,   194,   157,   202,   158,    -1,   194,   159,   202,
+     160,    -1,   194,   159,   160,    -1,   194,   157,   159,   202,
+     160,   158,    -1,   194,   157,   159,   160,   158,    -1,   194,
+      40,    -1,   194,    41,    -1,   194,   228,    -1,   194,   201,
+      -1,   194,    25,    -1,   168,     3,    -1,   168,     5,    -1,
+     168,     4,    -1,   168,     6,    -1,    11,    26,    -1,    11,
+      27,    -1,   169,     9,    -1,   165,   152,   200,    38,   194,
+     153,    -1,   115,   152,   200,   239,   153,    -1,   129,   152,
+     200,   149,   200,   149,   200,   153,    -1,   163,   152,   200,
+     149,   200,   153,    -1,   164,   152,   200,   149,   200,   153,
+      -1,    88,   166,   152,   200,   149,   200,   153,    -1,    89,
+     167,   152,   200,   149,   200,   153,    -1,   131,   152,   200,
+     149,   200,   153,    -1,   132,   152,   200,   149,   200,   149,
+     200,   153,    -1,   133,   152,   200,   149,   200,   149,   200,
+     153,    -1,   202,   149,   200,    -1,   200,    -1,    32,    -1,
+      33,    -1,    37,    -1,    -1,   196,   228,    -1,   121,   152,
+     205,    38,   194,   153,    -1,   207,    -1,    -1,   208,    -1,
+     207,   208,    -1,    -1,    31,   209,   224,    -1,    -1,    30,
+     210,   225,    -1,    58,    57,   214,    -1,   172,    18,   194,
+      -1,   172,    18,    10,    -1,    -1,   174,   178,   204,   203,
+     200,   211,   191,    -1,    -1,   174,   176,   178,   204,   203,
+     200,   212,   191,    -1,    -1,   174,   177,   178,   204,   203,
+     194,   213,   191,    -1,   174,   178,    35,   181,   205,    -1,
+      51,   215,    -1,    54,   148,   216,    -1,    22,    -1,    52,
+     148,    22,    -1,    66,   148,    22,    -1,   154,   217,   156,
+      -1,   217,   149,    22,    -1,    22,    -1,    -1,   218,   149,
+     194,   184,   171,    -1,   194,   184,   171,    -1,   218,    -1,
+     218,   149,    39,    -1,    39,    -1,    -1,   182,   196,   173,
+     152,   219,   153,   186,   190,   187,    -1,    28,    -1,   159,
+      -1,   180,   178,   220,   221,    -1,    29,    -1,   160,    -1,
+     231,   223,    -1,   179,   178,   220,    -1,    -1,    59,    -1,
+       3,    -1,     4,    -1,     9,    -1,    26,    -1,    27,    -1,
+      40,    -1,    41,    -1,    25,    -1,   157,   202,   158,    -1,
+     201,    -1,    57,   226,    22,   149,    22,    -1,     7,    -1,
+       8,    -1,   170,    -1,   173,    -1,   228,    -1,   227,    -1,
+     194,   229,    -1,   231,   232,    -1,   222,   232,    -1,   233,
+     172,   234,    -1,   233,   236,    -1,    -1,    21,    -1,    67,
+     230,    -1,    67,    10,    -1,    68,    17,   229,    -1,    68,
+      11,   229,   149,    17,   229,   149,    17,   229,    -1,    69,
+     168,   229,   149,    17,   229,   154,   235,   156,    -1,    69,
+     168,   229,   149,    17,   229,   154,   156,    -1,    70,   182,
+     196,   229,   152,   238,   153,   186,    38,    17,   229,    71,
+      17,   229,    -1,    71,    -1,    72,    -1,   235,   168,   227,
+     149,    17,   229,    -1,   168,   227,   149,    17,   229,    -1,
+     172,   241,    -1,   194,   154,   229,   149,   229,   156,    -1,
+     237,   149,   154,   229,   149,   229,   156,    -1,   194,   229,
+     184,    -1,    17,   229,   184,    -1,   238,   149,   194,   229,
+     184,    -1,   238,   149,    17,   229,   184,    -1,    -1,    -1,
+     239,   149,   230,    -1,    56,    55,    -1,    55,    -1,   163,
+     194,   229,   149,   229,    -1,   164,   194,   229,   149,   229,
+      -1,    88,   166,   194,   229,   149,   229,    -1,    89,   167,
+     194,   229,   149,   229,    -1,   165,   230,    38,   194,    -1,
+     129,   230,   149,   230,   149,   230,    -1,   130,   230,   149,
+     194,    -1,   131,   230,   149,   230,    -1,   132,   230,   149,
+     230,   149,   230,    -1,   133,   230,   149,   230,   149,   230,
+      -1,   128,   237,    -1,   240,   182,   196,   229,   152,   238,
+     153,   186,    -1,   243,    -1,    36,    -1,    -1,   110,   194,
+     188,    -1,   110,   194,   149,    11,   229,   188,    -1,   111,
+     194,   188,    -1,   111,   194,   149,    11,   229,   188,    -1,
+     112,   230,    -1,   242,   113,   194,   229,   188,    -1,   242,
+     114,   230,   149,   194,   229,   188,    -1,   115,   194,   229,
+     239,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const yytype_uint16 yyrline[] =
+{
+       0,  1128,  1128,  1128,  1128,  1128,  1128,  1128,  1128,  1128,
+    1128,  1129,  1129,  1129,  1129,  1129,  1129,  1130,  1130,  1130,
+    1130,  1130,  1130,  1131,  1131,  1131,  1131,  1131,  1131,  1134,
+    1134,  1135,  1135,  1136,  1136,  1137,  1137,  1138,  1138,  1142,
+    1142,  1143,  1143,  1144,  1144,  1145,  1145,  1146,  1146,  1147,
+    1147,  1148,  1148,  1149,  1150,  1155,  1156,  1156,  1156,  1156,
+    1156,  1158,  1158,  1158,  1159,  1159,  1163,  1167,  1172,  1172,
+    1174,  1175,  1180,  1186,  1187,  1188,  1189,  1190,  1194,  1195,
+    1196,  1200,  1201,  1202,  1203,  1207,  1208,  1209,  1213,  1214,
+    1215,  1216,  1217,  1221,  1222,  1223,  1226,  1227,  1228,  1229,
+    1230,  1231,  1232,  1239,  1240,  1241,  1242,  1243,  1244,  1245,
+    1246,  1247,  1250,  1251,  1256,  1257,  1258,  1259,  1260,  1261,
+    1264,  1265,  1272,  1273,  1279,  1280,  1288,  1296,  1297,  1302,
+    1303,  1304,  1309,  1322,  1322,  1322,  1322,  1322,  1322,  1322,
+    1325,  1329,  1333,  1340,  1345,  1353,  1383,  1414,  1419,  1431,
+    1441,  1445,  1455,  1462,  1469,  1476,  1481,  1486,  1493,  1494,
+    1501,  1508,  1516,  1522,  1534,  1562,  1578,  1605,  1633,  1659,
+    1679,  1705,  1725,  1737,  1744,  1810,  1820,  1830,  1836,  1846,
+    1852,  1862,  1867,  1872,  1885,  1897,  1919,  1927,  1933,  1944,
+    1949,  1954,  1960,  1966,  1975,  1979,  1987,  1987,  1990,  1990,
+    1993,  2005,  2026,  2031,  2039,  2040,  2044,  2044,  2048,  2048,
+    2051,  2054,  2078,  2089,  2089,  2100,  2099,  2109,  2108,  2119,
+    2159,  2162,  2168,  2178,  2182,  2187,  2189,  2194,  2199,  2208,
+    2218,  2229,  2233,  2242,  2251,  2256,  2377,  2377,  2379,  2388,
+    2388,  2390,  2395,  2407,  2411,  2416,  2420,  2424,  2428,  2432,
+    2436,  2440,  2444,  2448,  2473,  2477,  2487,  2491,  2495,  2500,
+    2507,  2507,  2513,  2522,  2526,  2535,  2544,  2553,  2557,  2564,
+    2568,  2572,  2577,  2587,  2606,  2615,  2695,  2699,  2706,  2717,
+    2730,  2740,  2751,  2761,  2770,  2776,  2785,  2791,  2794,  2795,
+    2802,  2806,  2811,  2827,  2844,  2858,  2872,  2884,  2892,  2899,
+    2905,  2911,  2917,  2932,  3017,  3022,  3026,  3033,  3040,  3048,
+    3055,  3063,  3071,  3085,  3102
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "ESINT64VAL", "EUINT64VAL", "ESAPINTVAL",
+  "EUAPINTVAL", "LOCALVAL_ID", "GLOBALVAL_ID", "FPVAL", "VOID", "INTTYPE",
+  "FLOAT", "DOUBLE", "X86_FP80", "FP128", "PPC_FP128", "LABEL", "TYPE",
+  "LOCALVAR", "GLOBALVAR", "LABELSTR", "STRINGCONSTANT",
+  "ATSTRINGCONSTANT", "PCTSTRINGCONSTANT", "ZEROINITIALIZER", "TRUETOK",
+  "FALSETOK", "BEGINTOK", "ENDTOK", "DECLARE", "DEFINE", "GLOBAL",
+  "CONSTANT", "SECTION", "ALIAS", "VOLATILE", "THREAD_LOCAL", "TO",
+  "DOTDOTDOT", "NULL_TOK", "UNDEF", "INTERNAL", "LINKONCE", "WEAK",
+  "APPENDING", "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK", "OPAQUE",
+  "EXTERNAL", "TARGET", "TRIPLE", "ALIGN", "DEPLIBS", "CALL", "TAIL",
+  "ASM_TOK", "MODULE", "SIDEEFFECT", "CC_TOK", "CCC_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", "SHL", "LSHR", "ASHR", "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", "VAARG", "EXTRACTELEMENT",
+  "INSERTELEMENT", "SHUFFLEVECTOR", "SIGNEXT", "ZEROEXT", "NORETURN",
+  "INREG", "SRET", "NOUNWIND", "NOALIAS", "BYVAL", "NEST", "CONST", "PURE",
+  "DEFAULT", "HIDDEN", "PROTECTED", "'='", "','", "'*'", "'\\\\'", "'('",
+  "')'", "'['", "'x'", "']'", "'<'", "'>'", "'{'", "'}'", "'c'", "$accept",
+  "ArithmeticOps", "LogicalOps", "CastOps", "IPredicates", "FPredicates",
+  "IntType", "FPType", "LocalName", "OptLocalName", "OptLocalAssign",
+  "GlobalName", "OptGlobalAssign", "GlobalAssign", "GVInternalLinkage",
+  "GVExternalLinkage", "GVVisibilityStyle", "FunctionDeclareLinkage",
+  "FunctionDefineLinkage", "AliasLinkage", "OptCallingConv", "ParamAttr",
+  "OptParamAttrs", "FuncAttr", "OptFuncAttrs", "OptAlign", "OptCAlign",
+  "SectionString", "OptSection", "GlobalVarAttributes",
+  "GlobalVarAttribute", "PrimType", "Types", "ArgType", "ResultTypes",
+  "ArgTypeList", "ArgTypeListI", "TypeListI", "ConstVal", "ConstExpr",
+  "ConstVector", "GlobalType", "ThreadLocal", "AliaseeRef", "Module",
+  "DefinitionList", "Definition", "@1", "@2", "@3", "@4", "@5", "AsmBlock",
+  "TargetDefinition", "LibrariesDefinition", "LibList", "ArgListH",
+  "ArgList", "FunctionHeaderH", "BEGIN", "FunctionHeader", "END",
+  "Function", "FunctionProto", "OptSideEffect", "ConstValueRef",
+  "SymbolicValueRef", "ValueRef", "ResolvedVal", "BasicBlockList",
+  "BasicBlock", "InstructionList", "BBTerminatorInst", "JumpTable", "Inst",
+  "PHIList", "ParamList", "IndexList", "OptTailCall", "InstVal",
+  "OptVolatile", "MemoryInst", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const yytype_uint16 yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
+     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
+     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
+     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
+     395,   396,   397,   398,   399,   400,   401,   402,    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[] =
+{
+       0,   162,   163,   163,   163,   163,   163,   163,   163,   163,
+     163,   164,   164,   164,   164,   164,   164,   165,   165,   165,
+     165,   165,   165,   165,   165,   165,   165,   165,   165,   166,
+     166,   166,   166,   166,   166,   166,   166,   166,   166,   167,
+     167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
+     167,   167,   167,   167,   167,   168,   169,   169,   169,   169,
+     169,   170,   170,   170,   171,   171,   172,   172,   173,   173,
+     174,   174,   175,   176,   176,   176,   176,   176,   177,   177,
+     177,   178,   178,   178,   178,   179,   179,   179,   180,   180,
+     180,   180,   180,   181,   181,   181,   182,   182,   182,   182,
+     182,   182,   182,   183,   183,   183,   183,   183,   183,   183,
+     183,   183,   184,   184,   185,   185,   185,   185,   185,   185,
+     186,   186,   187,   187,   188,   188,   189,   190,   190,   191,
+     191,   192,   192,   193,   193,   193,   193,   193,   193,   193,
+     194,   194,   194,   194,   194,   194,   194,   194,   194,   194,
+     194,   194,   194,   195,   196,   196,   197,   197,   198,   198,
+     198,   198,   199,   199,   200,   200,   200,   200,   200,   200,
+     200,   200,   200,   200,   200,   200,   200,   200,   200,   200,
+     200,   200,   200,   200,   201,   201,   201,   201,   201,   201,
+     201,   201,   201,   201,   202,   202,   203,   203,   204,   204,
+     205,   205,   206,   206,   207,   207,   209,   208,   210,   208,
+     208,   208,   208,   211,   208,   212,   208,   213,   208,   208,
+     208,   208,   214,   215,   215,   216,   217,   217,   217,   218,
+     218,   219,   219,   219,   219,   220,   221,   221,   222,   223,
+     223,   224,   225,   226,   226,   227,   227,   227,   227,   227,
+     227,   227,   227,   227,   227,   227,   228,   228,   228,   228,
+     229,   229,   230,   231,   231,   232,   233,   233,   233,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   235,   235,
+     236,   237,   237,   238,   238,   238,   238,   238,   239,   239,
+     240,   240,   241,   241,   241,   241,   241,   241,   241,   241,
+     241,   241,   241,   241,   241,   242,   242,   243,   243,   243,
+     243,   243,   243,   243,   243
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const yytype_uint8 yyr2[] =
+{
+       0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     0,     2,     0,     1,     1,
+       1,     0,     2,     1,     1,     1,     1,     1,     1,     1,
+       1,     0,     1,     1,     1,     0,     1,     1,     0,     1,
+       1,     1,     1,     0,     1,     1,     0,     1,     1,     1,
+       1,     1,     2,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     0,     2,     1,     1,     1,     1,     1,     1,
+       0,     2,     0,     2,     0,     3,     2,     0,     1,     0,
+       3,     1,     2,     1,     1,     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,     2,     2,     6,     5,     8,     6,     6,     7,
+       7,     6,     8,     8,     3,     1,     1,     1,     1,     0,
+       2,     6,     1,     0,     1,     2,     0,     3,     0,     3,
+       3,     3,     3,     0,     7,     0,     8,     0,     8,     5,
+       2,     3,     1,     3,     3,     3,     3,     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,
+       1,     1,     2,     2,     2,     3,     2,     0,     1,     2,
+       2,     3,     9,     9,     8,    14,     1,     1,     6,     5,
+       2,     6,     7,     3,     3,     5,     5,     0,     0,     3,
+       2,     1,     5,     5,     6,     6,     4,     6,     4,     4,
+       6,     6,     2,     8,     1,     1,     0,     3,     6,     3,
+       6,     2,     5,     7,     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[] =
+{
+      71,    61,    68,    62,    69,    63,   208,   206,     0,     0,
+       0,     0,     0,     0,    81,    70,     0,    71,   204,    85,
+      88,     0,     0,   220,     0,     0,    66,     0,    72,    73,
+      75,    74,    76,    78,    77,    79,    80,    82,    83,    84,
+      81,    81,   199,     1,   205,    86,    87,    81,   209,    89,
+      90,    91,    92,    81,   267,   207,   267,     0,     0,   228,
+     221,   222,   210,   256,   257,   212,   133,   134,   135,   138,
+     137,   136,   139,   140,     0,     0,     0,     0,   258,   259,
+     141,   211,   143,   199,   199,    93,   198,     0,    96,    96,
+     268,   264,    67,   239,   240,   241,   263,   223,   224,   227,
+       0,   161,   144,     0,     0,     0,     0,   150,   162,     0,
+     142,   161,     0,     0,    95,    94,     0,   196,   197,     0,
+       0,    97,    98,    99,   100,   101,     0,   242,     0,   306,
+     266,     0,   225,   160,   112,   156,   158,     0,     0,     0,
+       0,     0,     0,   149,     0,     0,     0,   155,     0,   154,
+       0,   219,   133,   134,   135,   138,   137,   136,     0,     0,
+       0,   213,   102,     0,   236,   237,   238,   305,   291,     0,
+       0,     0,     0,    96,   276,   277,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,    14,    15,    16,    11,    12,
+      13,     0,     0,     0,     0,     0,     0,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   265,    96,
+     280,     0,   304,   226,   153,     0,   120,     0,     0,   152,
+       0,   163,   120,   215,   217,     0,   200,   181,   182,   177,
+     179,   178,   180,   183,   176,   172,   173,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   175,   174,   129,     0,   290,   270,     0,   269,     0,
+       0,    55,     0,     0,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,     0,    53,    54,    49,    50,    51,
+      52,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,     0,   124,   124,   311,     0,     0,   302,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   104,
+     106,   105,   103,   107,   108,   109,   110,   111,   113,   159,
+     157,   146,   147,   148,   151,   145,   129,   129,     0,     0,
+       0,     0,     0,     0,     0,     0,   165,   195,     0,     0,
+       0,   169,     0,   166,     0,     0,     0,     0,   214,   234,
+     245,   246,   247,   252,   248,   249,   250,   251,   243,     0,
+     254,   261,   260,   262,     0,   271,     0,     0,     0,     0,
+       0,   307,     0,   309,   288,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   117,   116,
+     114,   115,   119,   118,   121,   216,   218,     0,     0,     0,
+     288,     0,     0,     0,     0,     0,   164,   150,   162,     0,
+     167,   168,     0,     0,     0,     0,     0,   131,   129,   233,
+     112,   231,     0,   244,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   314,     0,     0,     0,   298,   299,
+       0,     0,     0,     0,   296,     0,   124,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   194,   171,     0,     0,
+       0,     0,   126,   132,   130,    65,     0,   120,     0,   253,
+       0,     0,   287,     0,     0,   124,   125,   124,     0,     0,
+       0,     0,     0,     0,   292,   293,   287,     0,   312,     0,
+     201,     0,     0,   185,     0,     0,     0,     0,   170,     0,
+       0,     0,    64,   230,   232,   112,   127,     0,     0,     0,
+     139,     0,     0,   294,   295,   308,   310,   289,     0,     0,
+     297,   300,   301,     0,   124,     0,     0,     0,   191,     0,
+       0,   187,   188,   184,    65,   128,   122,   255,     0,     0,
+     112,   112,     0,   120,   281,     0,   120,   313,   189,   190,
+       0,     0,     0,   229,     0,   235,     0,   274,     0,     0,
+     284,   283,   139,     0,     0,   282,   303,   186,   192,   193,
+     123,   272,     0,   273,     0,   112,   112,     0,     0,     0,
+     286,   285,     0,     0,     0,     0,   279,     0,     0,   278,
+       0,   275
+};
+
+/* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
+{
+      -1,   258,   259,   260,   284,   301,   158,   159,    78,   513,
+      12,    79,    14,    15,    40,    41,    42,    47,    53,   116,
+     126,   328,   224,   404,   331,   565,   381,   427,   546,   358,
+     428,    80,   160,   135,   150,   136,   137,   109,   347,   370,
+     348,   119,    87,   151,    16,    17,    18,    20,    19,   263,
+     336,   337,    62,    23,    60,   100,   431,   432,   127,   166,
+      54,    95,    55,    48,   434,   371,    82,   373,   268,    56,
+      91,    92,   218,   569,   130,   307,   522,   444,   219,   220,
+     221,   222
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -549
+static const yytype_int16 yypact[] =
+{
+     322,  -549,  -549,  -549,  -549,  -549,  -549,  -549,   -18,  -120,
+       6,  -117,    62,   -60,   224,  -549,   111,   464,  -549,   103,
+     184,   -12,    -7,  -549,    21,   133,  -549,  1309,  -549,  -549,
+    -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,
+     140,   140,   211,  -549,  -549,  -549,  -549,   140,  -549,  -549,
+    -549,  -549,  -549,   140,   139,  -549,   -14,   157,   174,   182,
+    -549,  -549,  -549,  -549,  -549,    60,  -549,  -549,  -549,  -549,
+    -549,  -549,  -549,  -549,   215,   233,     2,   526,  -549,  -549,
+    -549,   150,  -549,   178,   178,   269,  -549,    14,   274,   274,
+    -549,  -549,   134,  -549,  -549,  -549,  -549,  -549,  -549,  -549,
+     -23,    54,  -549,    97,   105,   993,    60,  -549,   150,  -125,
+    -549,    54,    14,    14,  -549,  -549,  1093,  -549,  -549,  1340,
+     260,  -549,  -549,  -549,  -549,  -549,  1358,  -549,   -17,  1584,
+    -549,   251,  -549,  -549,   150,  -549,   128,   146,  1380,  1380,
+     145,  -106,  1380,  -549,   151,  1340,  1380,    60,   155,   150,
+     231,  -549,   101,   303,   305,   308,   312,   315,   229,   320,
+     808,  -549,  -549,   187,  -549,  -549,  -549,  -549,  -549,   275,
+    1423,    85,   321,   274,  -549,  -549,  -549,  -549,  -549,  -549,
+    -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,
+    -549,   461,   481,  1380,  1380,  1380,  1380,  -549,  -549,  -549,
+    -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,  1380,
+    1380,  1380,  1380,  1380,  1380,  1380,  1380,  1380,  -549,   274,
+    -549,   110,  -549,  -549,   -85,  1116,  -549,    -2,   -33,  -549,
+     173,   150,  -549,  -549,   150,  1093,  -549,  -549,  -549,  -549,
+    -549,  -549,  -549,  -549,  -549,  -549,  -549,   461,   481,   191,
+     198,   199,   203,   204,  1156,  1534,  1033,   335,   206,   207,
+     208,  -549,  -549,   217,   223,  -549,    60,   649,  -549,   785,
+     785,  -549,   785,  1358,  -549,  -549,  -549,  -549,  -549,  -549,
+    -549,  -549,  -549,  -549,  1380,  -549,  -549,  -549,  -549,  -549,
+    -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,
+    -549,  1380,   107,   113,  -549,   649,    26,   218,   236,   237,
+     238,   239,   240,   649,   649,   340,  1358,  1380,  1380,  -549,
+    -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,
+    -549,   162,  -549,  -549,  -549,   162,   217,   217,   344,   242,
+     243,  1340,  1340,  1340,  1340,  1340,  -549,  -549,    -9,  1073,
+     -50,  -549,   -63,  -549,  1340,  1340,  1340,   -11,  -549,  1187,
+    -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,   333,  1340,
+    -549,  -549,  -549,  -549,   247,  -549,   248,   785,   649,   649,
+       7,  -549,    34,  -549,  -549,   785,   244,  1380,  1380,  1380,
+    1380,  1380,   256,   257,  1380,   785,   649,   258,  -549,  -549,
+    -549,  -549,  -549,  -549,  -549,  -549,  -549,  1380,  1340,  1340,
+    -549,   261,   264,   267,   268,  1340,  -549,   263,   808,   -51,
+    -549,  -549,   270,   273,   362,   396,   419,  -549,   217,  -549,
+     150,   276,   271,  -549,   405,   -48,   411,   412,   280,   284,
+     287,   785,   433,   785,   289,   290,   785,   293,   150,  -549,
+     294,   295,   785,   785,   150,   296,   297,  1380,    90,   298,
+     300,    13,  1340,  1340,  1340,  1340,  -549,  -549,   299,  1340,
+    1340,  1380,  -549,  -549,  -549,    -3,  1269,  -549,   304,  -549,
+     785,   785,  1577,   785,   785,   297,  -549,   297,  1380,   785,
+     306,  1380,  1380,  1380,  -549,  -549,  1577,   401,  -549,   649,
+    -549,  1340,  1340,  -549,   309,   310,   319,   323,  -549,   316,
+     318,   126,  -549,  -549,  -549,   150,    38,   437,   324,   307,
+     785,   649,    44,  -549,  -549,  -549,  -549,  -549,   325,   785,
+    -549,  -549,  -549,    53,   297,   327,   332,  1340,  -549,  1340,
+    1340,  -549,  -549,  -549,    -3,  -549,   421,  -549,   460,     1,
+    -549,  -549,  1595,  -549,  -549,   334,  -549,  -549,  -549,  -549,
+     336,   338,   339,  -549,   489,  -549,   785,  -549,   945,     3,
+     -85,   -85,   785,   649,    86,  -549,   162,  -549,  -549,  -549,
+    -549,  -549,   347,  -549,   945,  -549,  -549,   484,   485,   356,
+     -85,   -85,   785,   785,   492,   439,  -549,   785,   494,  -549,
+     785,  -549
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
+{
+    -549,   383,   384,   385,   272,   277,  -170,  -549,     0,   -24,
+     429,     8,  -549,  -549,  -549,  -549,    42,  -549,  -549,  -549,
+    -160,  -549,  -421,  -549,  -228,  -549,  -293,    11,  -549,  -310,
+    -549,  -549,   -26,   341,  -121,  -549,   418,   425,   -61,  -157,
+    -226,     9,   205,   326,  -549,  -549,   515,  -549,  -549,  -549,
+    -549,  -549,  -549,  -549,  -549,  -549,  -549,  -549,   446,  -549,
+    -549,  -549,  -549,  -549,  -549,  -548,   -69,   121,  -173,  -549,
+     491,  -549,  -549,  -549,  -549,  -549,    67,   158,  -549,  -549,
+    -549,  -549
+};
+
+/* 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 -204
+static const yytype_int16 yytable[] =
+{
+      11,    81,   272,   261,   335,   163,   104,    90,    13,   475,
+     383,   164,   271,   273,   271,    93,     1,    11,   441,     3,
+     582,     5,   304,   425,   142,    13,   405,   406,    24,   350,
+     352,    26,   319,   320,    21,   143,   589,   308,   309,   310,
+     311,   312,   426,   142,   315,   443,   117,   118,    22,   321,
+     322,   108,   323,   324,   230,   325,   326,   327,   161,   316,
+     442,    63,    64,    25,   106,    66,    67,    68,    69,    70,
+      71,    72,   425,     1,     2,   134,     3,     4,     5,   108,
+      27,   236,    83,    84,   233,   134,   415,   442,    28,    88,
+     149,   262,    11,   133,   544,    89,   269,   421,   415,   415,
+     149,   415,   270,    73,   -55,   -55,   -55,   -55,   420,   468,
+     479,    43,   227,   228,   319,   320,   231,   110,   474,   111,
+     234,   145,   146,   419,   587,   333,   131,   237,   238,   570,
+     571,   321,   322,   132,   323,   324,    57,   325,   326,   327,
+     415,    58,   165,   435,   267,   397,    94,   416,   110,    45,
+     111,    46,   377,     1,   332,    61,     3,   567,     5,   583,
+      90,   105,   488,   498,   590,   591,   503,   302,   303,   267,
+     305,   264,   398,   399,   400,    59,   110,   401,   111,    97,
+     385,   402,   403,   306,   267,   267,   267,   267,   267,   313,
+     314,   267,   525,   552,   526,   395,    98,   553,   372,   134,
+     372,   372,   552,   372,    99,    74,   556,     2,    75,   149,
+       4,    76,   101,    77,   447,    86,   449,   450,   451,   102,
+     398,   399,   400,   317,   318,   401,    49,    50,    51,   402,
+     403,    52,   239,   240,   241,   242,   372,   103,    63,    64,
+     110,   557,   111,   500,   372,   372,    85,   149,    86,   516,
+       1,     2,   138,     3,     4,     5,   380,   110,   378,   111,
+     139,   261,   382,   110,   162,   111,    29,    30,    31,    32,
+      33,    34,    35,   223,    36,   379,   110,   225,   111,   543,
+     410,   411,   412,   413,   414,    37,    38,    39,   112,   113,
+     149,   396,   267,   422,   423,   424,   398,   399,   400,   226,
+     110,   401,   111,   229,   232,   402,   403,   235,   372,   372,
+     372,   114,   -56,   115,   -57,   527,   372,   -60,   530,   531,
+     532,   -59,  -203,   418,   -58,   574,   372,   372,   576,   243,
+     265,   334,   271,   430,   120,   121,   122,   123,   124,   125,
+     -67,     1,     2,   341,     3,     4,     5,   459,   460,   262,
+     342,   343,     6,     7,   466,   344,   345,   353,   354,   355,
+     356,   267,   448,   267,   267,   267,   357,   386,   454,    37,
+      38,    39,   372,     8,   372,   359,     9,   372,   394,   568,
+      10,   458,   407,   372,   372,   387,   388,   389,   390,   391,
+     374,   375,   433,   376,   408,   409,   436,   437,   446,   584,
+     471,   504,   505,   506,   507,   452,   453,   457,   509,   510,
+     462,   372,   372,   463,   372,   372,   464,   465,   472,   469,
+     372,   467,   470,   473,   477,   476,   384,   478,   480,   481,
+     372,   499,   482,   483,   392,   393,   484,   486,   488,   489,
+     535,   536,   491,   492,   493,   511,   497,   501,   496,   502,
+     515,   372,   372,   517,   442,   529,   521,   508,   537,   547,
+     372,   549,   267,   538,  -202,   267,   267,   267,   539,   541,
+     521,   542,   540,   548,   564,   512,   560,   566,   561,   562,
+     558,   554,   -67,     1,     2,   559,     3,     4,     5,   577,
+     575,   578,   579,   580,     6,     7,   588,   372,   438,   439,
+     440,   592,   593,   372,   372,   594,   445,   285,   286,   597,
+     598,   600,   215,   216,   217,     8,   455,   456,     9,   339,
+     563,   129,    10,   372,   372,   340,   573,   545,   372,   144,
+     141,   372,    44,    63,    64,   128,   106,    66,    67,    68,
+      69,    70,    71,    72,   512,     1,     2,    96,     3,     4,
+       5,   274,   275,   276,   277,   278,   279,   280,   281,   282,
+     283,   338,   485,   533,   487,     0,   330,   490,   461,     0,
+       0,     0,     0,   494,   495,    73,     0,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   518,   519,     0,   523,   524,     0,     0,     0,     0,
+     528,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     534,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   550,   551,     0,     0,     0,     0,     0,     0,     0,
+     555,     0,   360,   361,     0,     0,    63,    64,   362,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     1,     2,
+       0,     3,     4,     5,   363,   364,   365,    74,     0,     0,
+      75,     0,     0,    76,     0,    77,   107,   581,     0,   366,
+     367,     0,     0,   585,   586,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   368,     0,     0,     0,
+       0,     0,     0,   595,   596,     0,     0,     0,   599,     0,
+       0,   601,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   247,   248,     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,   249,   197,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   207,   208,     0,   250,     0,
+     251,   252,   253,     0,     0,     0,     0,     0,   360,   361,
+       0,     0,    63,    64,   362,     0,     0,     0,     0,   110,
+       0,   111,     0,     0,     1,     2,   369,     3,     4,     5,
+     363,   364,   365,     0,     0,    63,    64,     0,     0,     0,
+       0,     0,     0,     0,     0,   366,   367,     1,     2,     0,
+       3,     4,     5,   244,     0,     0,     0,     0,     0,     0,
+       0,     0,   368,     0,     0,     0,     0,     0,   245,   246,
+       0,     0,     0,     0,     0,     0,     0,     0,   176,   177,
+     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   247,   248,     0,     0,     0,     0,     0,
+       0,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   247,   248,     0,     0,
+     249,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,     0,   250,     0,   251,   252,   253,     0,
+       0,     0,     0,   249,   197,   198,   199,   200,   201,   202,
+     203,   204,   205,   206,   207,   208,     0,   250,     0,   251,
+     252,   253,   369,     0,     0,     0,     0,     0,   360,   361,
+       0,     0,     0,     0,   362,     0,     0,     0,   110,     0,
+     111,     0,   254,     0,     0,   255,     0,   256,     0,   257,
+     363,   364,   365,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   366,   367,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      63,    64,   368,   106,    66,    67,    68,    69,    70,    71,
+      72,     0,     1,     2,     0,     3,     4,     5,   176,   177,
+     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   247,   248,     0,     0,     0,     0,     0,
+      63,    64,    73,   106,   152,   153,   154,   155,   156,   157,
+      72,     0,     1,     2,     0,     3,     4,     5,     0,     0,
+     249,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,     0,   250,     0,   251,   252,   253,     0,
+      63,    64,    73,   106,   152,   153,   154,   155,   156,   157,
+      72,     0,     1,     2,     0,     3,     4,     5,     0,     0,
+      63,    64,   369,   147,    66,    67,    68,    69,    70,    71,
+      72,     0,     1,     2,     0,     3,     4,     5,     0,     0,
+       0,     0,    73,    63,    64,     0,   106,    66,    67,    68,
+      69,    70,    71,    72,     0,     1,     2,     0,     3,     4,
+       5,     0,    73,     0,    74,     0,     0,    75,     0,     0,
+      76,     0,    77,   140,     0,   329,     0,     0,     0,     0,
+       0,     0,     0,    63,    64,    73,   106,   152,   153,   154,
+     155,   156,   157,    72,     0,     1,     2,     0,     3,     4,
+       5,     0,     0,     0,    74,     0,     0,    75,     0,     0,
+      76,     0,    77,   351,    63,    64,     0,   106,    66,    67,
+      68,    69,    70,    71,    72,    73,     1,     2,     0,     3,
+       4,     5,     0,     0,   148,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    74,     0,   429,    75,     0,     0,
+      76,     0,    77,   417,     0,     0,    73,     0,     0,     0,
+       0,     0,     0,     0,    74,     0,     0,    75,     0,     0,
+      76,     0,    77,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    74,     0,     0,
+      75,     0,     0,    76,     0,    77,    63,    64,     0,   106,
+      66,    67,    68,    69,    70,    71,    72,     0,     1,     2,
+       0,     3,     4,     5,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    74,   514,     0,
+      75,     0,   346,    76,     0,    77,    63,    64,    73,    65,
+      66,    67,    68,    69,    70,    71,    72,     0,     1,     2,
+       0,     3,     4,     5,     0,     0,     0,     0,    74,     0,
+       0,    75,     0,     0,    76,     0,    77,    63,    64,     0,
+     106,   152,   153,   154,   155,   156,   157,    72,    73,     1,
+       2,     0,     3,     4,     5,    63,    64,     0,   147,    66,
+      67,    68,    69,    70,    71,    72,     0,     1,     2,     0,
+       3,     4,     5,     0,     0,     0,     0,    63,    64,    73,
+     106,    66,    67,    68,    69,    70,    71,    72,     0,     1,
+       2,     0,     3,     4,     5,     0,     0,    73,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      74,     0,     0,    75,     0,     0,    76,     0,    77,    73,
+      63,    64,     0,   266,    66,    67,    68,    69,    70,    71,
+      72,     0,     1,     2,     0,     3,     4,     5,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      74,     0,     0,    75,     0,     0,    76,     0,    77,     0,
+       0,     0,    73,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    74,     0,     0,    75,     0,     0,    76,     0,    77,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    74,
+       0,     0,    75,     0,     0,    76,     0,    77,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    74,     0,     0,    75,     0,     0,    76,     0,    77,
+       0,    63,    64,     0,   106,   152,   153,   154,   155,   156,
+     157,    72,     0,     1,     2,     0,     3,     4,     5,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    74,     0,     0,    75,     0,     0,
+      76,     0,    77,    73,    63,    64,     0,   106,    66,    67,
+      68,    69,    70,    71,   520,     0,     1,     2,     0,     3,
+       4,     5,    63,    64,     0,   106,    66,    67,    68,    69,
+      70,    71,   572,     0,     1,     2,     0,     3,     4,     5,
+     167,     0,     0,     0,     0,     0,    73,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   168,
+     169,     0,     0,     0,    73,     0,     0,     0,     0,     0,
+       0,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    74,     0,     0,    75,     0,
+       0,    76,     0,   349,   193,   194,   195,     0,     0,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    74,     0,
+       0,    75,     0,     0,    76,     0,    77,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    74,     0,     0,    75,
+       0,     0,    76,     0,    77
+};
+
+static const yytype_int16 yycheck[] =
+{
+       0,    27,   172,   160,   232,   126,     4,    21,     0,   430,
+     303,    28,    11,   173,    11,    29,    19,    17,    11,    22,
+     568,    24,   195,    34,   149,    17,   336,   337,   148,   255,
+     256,   148,   117,   118,    52,   160,   584,   210,   211,   212,
+     213,   214,    53,   149,   217,    11,    32,    33,    66,   134,
+     135,    77,   137,   138,   160,   140,   141,   142,   119,   219,
+      53,     7,     8,    57,    10,    11,    12,    13,    14,    15,
+      16,    17,    34,    19,    20,   101,    22,    23,    24,   105,
+      18,   150,    40,    41,   145,   111,   149,    53,   148,    47,
+     116,   160,    92,    39,   515,    53,    11,   160,   149,   149,
+     126,   149,    17,    49,     3,     4,     5,     6,   158,   160,
+     158,     0,   138,   139,   117,   118,   142,   150,   428,   152,
+     146,   112,   113,   349,    38,   158,   149,    26,    27,   550,
+     551,   134,   135,   156,   137,   138,   148,   140,   141,   142,
+     149,   148,   159,   369,   170,   318,   160,   156,   150,    46,
+     152,    48,   273,    19,   156,    22,    22,   156,    24,   156,
+      21,   159,   149,   456,   585,   586,   153,   193,   194,   195,
+     196,   163,   134,   135,   136,   154,   150,   139,   152,    22,
+     154,   143,   144,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   485,   149,   487,   316,    22,   153,   267,   225,
+     269,   270,   149,   272,    22,   151,   153,    20,   154,   235,
+      23,   157,   152,   159,   387,    37,   389,   390,   391,     4,
+     134,   135,   136,   113,   114,   139,    42,    43,    44,   143,
+     144,    47,     3,     4,     5,     6,   305,     4,     7,     8,
+     150,   534,   152,   153,   313,   314,    35,   273,    37,   477,
+      19,    20,   155,    22,    23,    24,   149,   150,   284,   152,
+     155,   418,   149,   150,     4,   152,    42,    43,    44,    45,
+      46,    47,    48,    22,    50,   301,   150,   149,   152,   153,
+     341,   342,   343,   344,   345,   145,   146,   147,    83,    84,
+     316,   317,   318,   354,   355,   356,   134,   135,   136,   153,
+     150,   139,   152,   158,   153,   143,   144,   152,   377,   378,
+     379,    42,     9,    44,     9,   488,   385,     9,   491,   492,
+     493,     9,     0,   349,     9,   553,   395,   396,   556,     9,
+      55,   158,    11,   359,    60,    61,    62,    63,    64,    65,
+      18,    19,    20,   152,    22,    23,    24,   408,   409,   418,
+     152,   152,    30,    31,   415,   152,   152,    22,   152,   152,
+     152,   387,   388,   389,   390,   391,   149,   149,   394,   145,
+     146,   147,   441,    51,   443,   152,    54,   446,    38,   549,
+      58,   407,    38,   452,   453,   149,   149,   149,   149,   149,
+     269,   270,    59,   272,   152,   152,   149,   149,   154,   569,
+      38,   462,   463,   464,   465,   149,   149,   149,   469,   470,
+     149,   480,   481,   149,   483,   484,   149,   149,    22,   149,
+     489,   158,   149,     4,   153,   149,   305,    22,    17,    17,
+     499,   457,   152,   149,   313,   314,   149,     4,   149,   149,
+     501,   502,   149,   149,   149,   471,   149,   149,   152,   149,
+     476,   520,   521,   149,    53,   149,   482,   158,   149,    22,
+     529,   154,   488,   153,     0,   491,   492,   493,   149,   153,
+     496,   153,   149,   149,    53,   475,   537,    17,   539,   540,
+     153,   156,    18,    19,    20,   153,    22,    23,    24,   153,
+     156,   153,   153,     4,    30,    31,   149,   566,   377,   378,
+     379,    17,    17,   572,   573,   149,   385,    26,    27,    17,
+      71,    17,   129,   129,   129,    51,   395,   396,    54,   247,
+     544,    92,    58,   592,   593,   248,   552,   516,   597,   111,
+     105,   600,    17,     7,     8,    89,    10,    11,    12,    13,
+      14,    15,    16,    17,   544,    19,    20,    56,    22,    23,
+      24,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   235,   441,   496,   443,    -1,   225,   446,   410,    -1,
+      -1,    -1,    -1,   452,   453,    49,    -1,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   480,   481,    -1,   483,   484,    -1,    -1,    -1,    -1,
+     489,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     499,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   520,   521,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     529,    -1,     3,     4,    -1,    -1,     7,     8,     9,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    19,    20,
+      -1,    22,    23,    24,    25,    26,    27,   151,    -1,    -1,
+     154,    -1,    -1,   157,    -1,   159,   160,   566,    -1,    40,
+      41,    -1,    -1,   572,   573,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    -1,
+      -1,    -1,    -1,   592,   593,    -1,    -1,    -1,   597,    -1,
+      -1,   600,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,    -1,   129,    -1,
+     131,   132,   133,    -1,    -1,    -1,    -1,    -1,     3,     4,
+      -1,    -1,     7,     8,     9,    -1,    -1,    -1,    -1,   150,
+      -1,   152,    -1,    -1,    19,    20,   157,    22,    23,    24,
+      25,    26,    27,    -1,    -1,     7,     8,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    40,    41,    19,    20,    -1,
+      22,    23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    57,    -1,    -1,    -1,    -1,    -1,    40,    41,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+      82,    83,    84,    85,    86,    87,    88,    89,    -1,    -1,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,   126,   127,    -1,   129,    -1,   131,   132,   133,    -1,
+      -1,    -1,    -1,   115,   116,   117,   118,   119,   120,   121,
+     122,   123,   124,   125,   126,   127,    -1,   129,    -1,   131,
+     132,   133,   157,    -1,    -1,    -1,    -1,    -1,     3,     4,
+      -1,    -1,    -1,    -1,     9,    -1,    -1,    -1,   150,    -1,
+     152,    -1,   154,    -1,    -1,   157,    -1,   159,    -1,   161,
+      25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    40,    41,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       7,     8,    57,    10,    11,    12,    13,    14,    15,    16,
+      17,    -1,    19,    20,    -1,    22,    23,    24,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    -1,    -1,    -1,    -1,    -1,
+       7,     8,    49,    10,    11,    12,    13,    14,    15,    16,
+      17,    -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,   126,   127,    -1,   129,    -1,   131,   132,   133,    -1,
+       7,     8,    49,    10,    11,    12,    13,    14,    15,    16,
+      17,    -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,
+       7,     8,   157,    10,    11,    12,    13,    14,    15,    16,
+      17,    -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,
+      -1,    -1,    49,     7,     8,    -1,    10,    11,    12,    13,
+      14,    15,    16,    17,    -1,    19,    20,    -1,    22,    23,
+      24,    -1,    49,    -1,   151,    -1,    -1,   154,    -1,    -1,
+     157,    -1,   159,   160,    -1,    39,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,     7,     8,    49,    10,    11,    12,    13,
+      14,    15,    16,    17,    -1,    19,    20,    -1,    22,    23,
+      24,    -1,    -1,    -1,   151,    -1,    -1,   154,    -1,    -1,
+     157,    -1,   159,   160,     7,     8,    -1,    10,    11,    12,
+      13,    14,    15,    16,    17,    49,    19,    20,    -1,    22,
+      23,    24,    -1,    -1,   121,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   151,    -1,    39,   154,    -1,    -1,
+     157,    -1,   159,   160,    -1,    -1,    49,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   151,    -1,    -1,   154,    -1,    -1,
+     157,    -1,   159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   151,    -1,    -1,
+     154,    -1,    -1,   157,    -1,   159,     7,     8,    -1,    10,
+      11,    12,    13,    14,    15,    16,    17,    -1,    19,    20,
+      -1,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   151,    39,    -1,
+     154,    -1,   156,   157,    -1,   159,     7,     8,    49,    10,
+      11,    12,    13,    14,    15,    16,    17,    -1,    19,    20,
+      -1,    22,    23,    24,    -1,    -1,    -1,    -1,   151,    -1,
+      -1,   154,    -1,    -1,   157,    -1,   159,     7,     8,    -1,
+      10,    11,    12,    13,    14,    15,    16,    17,    49,    19,
+      20,    -1,    22,    23,    24,     7,     8,    -1,    10,    11,
+      12,    13,    14,    15,    16,    17,    -1,    19,    20,    -1,
+      22,    23,    24,    -1,    -1,    -1,    -1,     7,     8,    49,
+      10,    11,    12,    13,    14,    15,    16,    17,    -1,    19,
+      20,    -1,    22,    23,    24,    -1,    -1,    49,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     151,    -1,    -1,   154,    -1,    -1,   157,    -1,   159,    49,
+       7,     8,    -1,    10,    11,    12,    13,    14,    15,    16,
+      17,    -1,    19,    20,    -1,    22,    23,    24,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     151,    -1,    -1,   154,    -1,    -1,   157,    -1,   159,    -1,
+      -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   151,    -1,    -1,   154,    -1,    -1,   157,    -1,   159,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   151,
+      -1,    -1,   154,    -1,    -1,   157,    -1,   159,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   151,    -1,    -1,   154,    -1,    -1,   157,    -1,   159,
+      -1,     7,     8,    -1,    10,    11,    12,    13,    14,    15,
+      16,    17,    -1,    19,    20,    -1,    22,    23,    24,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   151,    -1,    -1,   154,    -1,    -1,
+     157,    -1,   159,    49,     7,     8,    -1,    10,    11,    12,
+      13,    14,    15,    16,    17,    -1,    19,    20,    -1,    22,
+      23,    24,     7,     8,    -1,    10,    11,    12,    13,    14,
+      15,    16,    17,    -1,    19,    20,    -1,    22,    23,    24,
+      36,    -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,
+      56,    -1,    -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   151,    -1,    -1,   154,    -1,
+      -1,   157,    -1,   159,   110,   111,   112,    -1,    -1,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   151,    -1,
+      -1,   154,    -1,    -1,   157,    -1,   159,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   151,    -1,    -1,   154,
+      -1,    -1,   157,    -1,   159
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const yytype_uint8 yystos[] =
+{
+       0,    19,    20,    22,    23,    24,    30,    31,    51,    54,
+      58,   170,   172,   173,   174,   175,   206,   207,   208,   210,
+     209,    52,    66,   215,   148,    57,   148,    18,   148,    42,
+      43,    44,    45,    46,    47,    48,    50,   145,   146,   147,
+     176,   177,   178,     0,   208,    46,    48,   179,   225,    42,
+      43,    44,    47,   180,   222,   224,   231,   148,   148,   154,
+     216,    22,   214,     7,     8,    10,    11,    12,    13,    14,
+      15,    16,    17,    49,   151,   154,   157,   159,   170,   173,
+     193,   194,   228,   178,   178,    35,    37,   204,   178,   178,
+      21,   232,   233,    29,   160,   223,   232,    22,    22,    22,
+     217,   152,     4,     4,     4,   159,    10,   160,   194,   199,
+     150,   152,   204,   204,    42,    44,   181,    32,    33,   203,
+      60,    61,    62,    63,    64,    65,   182,   220,   220,   172,
+     236,   149,   156,    39,   194,   195,   197,   198,   155,   155,
+     160,   199,   149,   160,   198,   203,   203,    10,   121,   194,
+     196,   205,    11,    12,    13,    14,    15,    16,   168,   169,
+     194,   200,     4,   196,    28,   159,   221,    36,    55,    56,
+      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+      87,    88,    89,   110,   111,   112,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   163,   164,   165,   234,   240,
+     241,   242,   243,    22,   184,   149,   153,   194,   194,   158,
+     160,   194,   153,   200,   194,   152,   228,    26,    27,     3,
+       4,     5,     6,     9,    25,    40,    41,    88,    89,   115,
+     129,   131,   132,   133,   154,   157,   159,   161,   163,   164,
+     165,   201,   228,   211,   173,    55,    10,   194,   230,    11,
+      17,    11,   168,   182,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   166,    26,    27,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   167,   194,   194,   230,   194,   194,   237,   230,   230,
+     230,   230,   230,   194,   194,   230,   182,   113,   114,   117,
+     118,   134,   135,   137,   138,   140,   141,   142,   183,    39,
+     195,   186,   156,   158,   158,   186,   212,   213,   205,   166,
+     167,   152,   152,   152,   152,   152,   156,   200,   202,   159,
+     202,   160,   202,    22,   152,   152,   152,   149,   191,   152,
+       3,     4,     9,    25,    26,    27,    40,    41,    57,   157,
+     201,   227,   228,   229,   229,   229,   229,   196,   194,   194,
+     149,   188,   149,   188,   229,   154,   149,   149,   149,   149,
+     149,   149,   229,   229,    38,   196,   194,   230,   134,   135,
+     136,   139,   143,   144,   185,   191,   191,    38,   152,   152,
+     200,   200,   200,   200,   200,   149,   156,   160,   194,   202,
+     158,   160,   200,   200,   200,    34,    53,   189,   192,    39,
+     194,   218,   219,    59,   226,   202,   149,   149,   229,   229,
+     229,    11,    53,    11,   239,   229,   154,   230,   194,   230,
+     230,   230,   149,   149,   194,   229,   229,   149,   194,   200,
+     200,   239,   149,   149,   149,   149,   200,   158,   160,   149,
+     149,    38,    22,     4,   191,   184,   149,   153,    22,   158,
+      17,    17,   152,   149,   149,   229,     4,   229,   149,   149,
+     229,   149,   149,   149,   229,   229,   152,   149,   188,   194,
+     153,   149,   149,   153,   200,   200,   200,   200,   158,   200,
+     200,   194,   170,   171,    39,   194,   186,   149,   229,   229,
+      17,   194,   238,   229,   229,   188,   188,   230,   229,   149,
+     230,   230,   230,   238,   229,   200,   200,   149,   153,   149,
+     149,   153,   153,   153,   184,   189,   190,    22,   149,   154,
+     229,   229,   149,   153,   156,   229,   153,   188,   153,   153,
+     200,   200,   200,   171,    53,   187,    17,   156,   168,   235,
+     184,   184,    17,   194,   186,   156,   186,   153,   153,   153,
+       4,   229,   227,   156,   168,   229,   229,    38,   149,   227,
+     184,   184,    17,    17,   149,   229,   229,    17,    71,   229,
+      17,   229
+};
 
 #define yyerrok		(yyerrstatus = 0)
 #define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		-2
+#define YYEMPTY		(-2)
 #define YYEOF		0
+
 #define YYACCEPT	goto yyacceptlab
-#define YYABORT 	goto yyabortlab
-#define YYERROR		goto yyerrlab1
-/* Like YYERROR except do call yyerror.
-   This remains here temporarily to ease the
-   transition to the new meaning of YYERROR, for GCC.
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
    Once GCC version 2 has supplanted version 1, this can go.  */
+
 #define YYFAIL		goto yyerrlab
+
 #define YYRECOVERING()  (!!yyerrstatus)
-#define YYBACKUP(token, value) \
+
+#define YYBACKUP(Token, Value)					\
 do								\
   if (yychar == YYEMPTY && yylen == 1)				\
-    { yychar = (token), yylval = (value);			\
-      yychar1 = YYTRANSLATE (yychar);				\
-      YYPOPSTACK;						\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
+      YYPOPSTACK (1);						\
       goto yybackup;						\
     }								\
   else								\
-    { yyerror ("syntax error: cannot back up"); YYERROR; }	\
-while (0)
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;							\
+    }								\
+while (YYID (0))
+
 
 #define YYTERROR	1
 #define YYERRCODE	256
 
-#ifndef YYPURE
-#define YYLEX		yylex()
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (YYID (N))                                                    \
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (YYID (0))
 #endif
 
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+	      (Loc).first_line, (Loc).first_column,	\
+	      (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
 #ifdef YYLEX_PARAM
-#define YYLEX		yylex(&yylval, &yylloc, YYLEX_PARAM)
+# define YYLEX yylex (YYLEX_PARAM)
 #else
-#define YYLEX		yylex(&yylval, &yylloc)
+# define YYLEX yylex ()
 #endif
-#else /* not YYLSP_NEEDED */
-#ifdef YYLEX_PARAM
-#define YYLEX		yylex(&yylval, YYLEX_PARAM)
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (YYID (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
-#define YYLEX		yylex(&yylval)
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
 #endif
-#endif /* not YYLSP_NEEDED */
+{
+  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]);
 
-/* If nonreentrant, generate the variables here */
+  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+  YYFPRINTF (yyoutput, ")");
+}
 
-#ifndef YYPURE
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
 
-int	yychar;			/*  the lookahead symbol		*/
-YYSTYPE	yylval;			/*  the semantic value of the		*/
-				/*  lookahead symbol			*/
-
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc;			/*  location data for the lookahead	*/
-				/*  symbol				*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    yytype_int16 *bottom;
+    yytype_int16 *top;
 #endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
 
-int yynerrs;			/*  number of parse errors so far       */
-#endif  /* not YYPURE */
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (YYID (0))
 
-#if YYDEBUG != 0
-int yydebug;			/*  nonzero means print parse trace	*/
-/* Since this is uninitialized, it does not stop multiple parsers
-   from coexisting.  */
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+    YYSTYPE *yyvsp;
+    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");
+    }
+}
 
-/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (yyvsp, Rule); \
+} while (YYID (0))
 
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
 #ifndef	YYINITDEPTH
-#define YYINITDEPTH 200
+# define YYINITDEPTH 200
 #endif
 
-/*  YYMAXDEPTH is the maximum size the stacks can grow to
-    (effective only if the built-in stack extension method is used).  */
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
 
-#if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
-#endif
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
 
 #ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
+# define YYMAXDEPTH 10000
 #endif
+
 
-/* Define __yy_memcpy.  Note that the size argument
-   should be passed with type unsigned int, because that is what the non-GCC
-   definitions require.  With GCC, __builtin_memcpy takes an arg
-   of type size_t, but it can handle unsigned int.  */
 
-#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
-#define __yy_memcpy(TO,FROM,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
-#else				/* not GNU C or C++ */
-#ifndef __cplusplus
+#if YYERROR_VERBOSE
 
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (to, from, count)
-     char *to;
-     char *from;
-     unsigned int count;
-{
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#else /* __cplusplus */
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (char *to, char *from, unsigned int count)
-{
-  register char *t = to;
-  register char *f = from;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#endif
-#endif
-
-#line 217 "/usr/share/bison.simple"
-
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-   into yyparse.  The argument should have type void *.
-   It should actually point to an object.
-   Grammar actions can access the variable by casting it
-   to the proper pointer type.  */
-
-#ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
-
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-#ifdef YYPARSE_PARAM
-int yyparse (void *);
+# ifndef yystrlen
+#  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
+yystrlen (const char *yystr)
 #else
+static YYSIZE_T
+yystrlen (yystr)
+    const char *yystr;
+#endif
+{
+  YYSIZE_T yylen;
+  for (yylen = 0; yystr[yylen]; yylen++)
+    continue;
+  return yylen;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+    char *yydest;
+    const char *yysrc;
+#endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      YYSIZE_T yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* 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 */
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  YYUSE (yyvaluep);
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+	break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
 int yyparse (void);
-#endif
-#endif
-
-int
-yyparse(YYPARSE_PARAM_ARG)
-     YYPARSE_PARAM_DECL
-{
-  register int yystate;
-  register int yyn;
-  register short *yyssp;
-  register YYSTYPE *yyvsp;
-  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
-  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */
-
-  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
-  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/
-
-  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
-  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */
-
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
-  YYLTYPE *yyls = yylsa;
-  YYLTYPE *yylsp;
-
-#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
 #else
-#define YYPOPSTACK   (yyvsp--, yyssp--)
+int yyparse ();
 #endif
+#endif /* ! YYPARSE_PARAM */
 
-  int yystacksize = YYINITDEPTH;
-  int yyfree_stacks = 0;
 
-#ifdef YYPURE
-  int yychar;
-  YYSTYPE yylval;
-  int yynerrs;
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylloc;
+
+/* The look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+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)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
 #endif
 #endif
-
-  YYSTYPE yyval;		/*  the variable used to return		*/
-				/*  semantic values from the action	*/
-				/*  routines				*/
-
-  int yylen;
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Starting parse\n");
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+#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,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  yytype_int16 yyssa[YYINITDEPTH];
+  yytype_int16 *yyss = yyssa;
+  yytype_int16 *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  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;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
   yystate = 0;
   yyerrstatus = 0;
   yynerrs = 0;
@@ -2321,700 +3240,750 @@
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
 
-  yyssp = yyss - 1;
+  yyssp = yyss;
   yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
-  yylsp = yyls;
-#endif
 
-/* Push a new state, which is found in  yystate  .  */
-/* In all cases, when you get here, the value and location stacks
-   have just been pushed. so pushing a state here evens the stacks.  */
-yynewstate:
+  goto yysetstate;
 
-  *++yyssp = yystate;
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed.  So pushing a state here evens the stacks.  */
+  yyssp++;
 
-  if (yyssp >= yyss + yystacksize - 1)
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
     {
-      /* Give user a chance to reallocate the stack */
-      /* Use copies of these so that the &'s don't force the real ones into memory. */
-      YYSTYPE *yyvs1 = yyvs;
-      short *yyss1 = yyss;
-#ifdef YYLSP_NEEDED
-      YYLTYPE *yyls1 = yyls;
-#endif
-
       /* Get the current used size of the three stacks, in elements.  */
-      int size = yyssp - yyss + 1;
+      YYSIZE_T yysize = yyssp - yyss + 1;
 
 #ifdef yyoverflow
-      /* Each stack pointer address is followed by the size of
-	 the data in use in that stack, in bytes.  */
-#ifdef YYLSP_NEEDED
-      /* This used to be a conditional around just the two extra args,
-	 but that might be undefined if yyoverflow is a macro.  */
-      yyoverflow("parser stack overflow",
-		 &yyss1, size * sizeof (*yyssp),
-		 &yyvs1, size * sizeof (*yyvsp),
-		 &yyls1, size * sizeof (*yylsp),
-		 &yystacksize);
-#else
-      yyoverflow("parser stack overflow",
-		 &yyss1, size * sizeof (*yyssp),
-		 &yyvs1, size * sizeof (*yyvsp),
-		 &yystacksize);
-#endif
+      {
+	/* Give user a chance to reallocate the stack.  Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	yytype_int16 *yyss1 = yyss;
 
-      yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
-      yyls = yyls1;
-#endif
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
 #else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
       /* Extend the stack our own way.  */
-      if (yystacksize >= YYMAXDEPTH)
-	{
-	  yyerror("parser stack overflow");
-	  if (yyfree_stacks)
-	    {
-	      free (yyss);
-	      free (yyvs);
-#ifdef YYLSP_NEEDED
-	      free (yyls);
-#endif
-	    }
-	  return 2;
-	}
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
       yystacksize *= 2;
-      if (yystacksize > YYMAXDEPTH)
+      if (YYMAXDEPTH < yystacksize)
 	yystacksize = YYMAXDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
-      yyfree_stacks = 1;
-#endif
-      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1,
-		   size * (unsigned int) sizeof (*yyssp));
-      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
-		   size * (unsigned int) sizeof (*yyvsp));
-#ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1,
-		   size * (unsigned int) sizeof (*yylsp));
-#endif
+
+      {
+	yytype_int16 *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
 #endif /* no yyoverflow */
 
-      yyssp = yyss + size - 1;
-      yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
-      yylsp = yyls + size - 1;
-#endif
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
 
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
 
-      if (yyssp >= yyss + yystacksize - 1)
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
 	YYABORT;
     }
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Entering state %d\n", yystate);
-#endif
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
   goto yybackup;
- yybackup:
 
-/* Do appropriate processing given the current state.  */
-/* Read a lookahead token if we need one and don't already have one.  */
-/* yyresume: */
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
 
-  /* First try to decide what to do without reference to lookahead token.  */
+  /* Do appropriate processing given the current state.  Read a
+     look-ahead token if we need one and don't already have one.  */
 
+  /* First try to decide what to do without reference to look-ahead token.  */
   yyn = yypact[yystate];
-  if (yyn == YYFLAG)
+  if (yyn == YYPACT_NINF)
     goto yydefault;
 
-  /* Not known => get a lookahead token if don't already have one.  */
+  /* Not known => get a look-ahead token if don't already have one.  */
 
-  /* yychar is either YYEMPTY or YYEOF
-     or a valid token in external form.  */
-
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
   if (yychar == YYEMPTY)
     {
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Reading a token: ");
-#endif
+      YYDPRINTF ((stderr, "Reading a token: "));
       yychar = YYLEX;
     }
 
-  /* Convert token to internal form (in yychar1) for indexing tables with */
-
-  if (yychar <= 0)		/* This means end of input. */
+  if (yychar <= YYEOF)
     {
-      yychar1 = 0;
-      yychar = YYEOF;		/* Don't call YYLEX any more */
-
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Now at end of input.\n");
-#endif
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
   else
     {
-      yychar1 = YYTRANSLATE(yychar);
-
-#if YYDEBUG != 0
-      if (yydebug)
-	{
-	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-	  /* Give the individual parser a way to print the precise meaning
-	     of a token, for further debugging info.  */
-#ifdef YYPRINT
-	  YYPRINT (stderr, yychar, yylval);
-#endif
-	  fprintf (stderr, ")\n");
-	}
-#endif
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
     }
 
-  yyn += yychar1;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
     goto yydefault;
-
   yyn = yytable[yyn];
-
-  /* yyn is what to do for this token type in this state.
-     Negative => reduce, -yyn is rule number.
-     Positive => shift, yyn is new state.
-       New state is final state => don't bother to shift,
-       just return success.
-     0, or most negative number => error.  */
-
-  if (yyn < 0)
+  if (yyn <= 0)
     {
-      if (yyn == YYFLAG)
+      if (yyn == 0 || yyn == YYTABLE_NINF)
 	goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
-  else if (yyn == 0)
-    goto yyerrlab;
 
   if (yyn == YYFINAL)
     YYACCEPT;
 
-  /* Shift the lookahead token.  */
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 
-  /* Discard the token being shifted unless it is eof.  */
+  /* Discard the shifted token unless it is eof.  */
   if (yychar != YYEOF)
     yychar = YYEMPTY;
 
-  *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
-
-  /* count tokens shifted since error; after three, turn off error status.  */
-  if (yyerrstatus) yyerrstatus--;
-
   yystate = yyn;
+  *++yyvsp = yylval;
+
   goto yynewstate;
 
-/* Do the default action for the current state.  */
-yydefault:
 
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
   yyn = yydefact[yystate];
   if (yyn == 0)
     goto yyerrlab;
+  goto yyreduce;
 
-/* Do a reduction.  yyn is the number of a rule to reduce with.  */
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
 yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
-  if (yylen > 0)
-    yyval = yyvsp[1-yylen]; /* implement default value of the action */
 
-#if YYDEBUG != 0
-  if (yydebug)
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
     {
-      int i;
+        case 29:
+#line 1134 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;}
+    break;
 
-      fprintf (stderr, "Reducing via rule %d (line %d), ",
-	       yyn, yyrline[yyn]);
+  case 30:
+#line 1134 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;}
+    break;
 
-      /* Print the symbols being reduced, and their result.  */
-      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
-	fprintf (stderr, "%s ", yytname[yyrhs[i]]);
-      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-    }
-#endif
+  case 31:
+#line 1135 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;}
+    break;
 
+  case 32:
+#line 1135 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;}
+    break;
 
-  switch (yyn) {
+  case 33:
+#line 1136 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;}
+    break;
 
-case 28:
-#line 1133 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_EQ; ;
-    break;}
-case 29:
-#line 1133 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_NE; ;
-    break;}
-case 30:
-#line 1134 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_SLT; ;
-    break;}
-case 31:
-#line 1134 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_SGT; ;
-    break;}
-case 32:
-#line 1135 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_SLE; ;
-    break;}
-case 33:
-#line 1135 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_SGE; ;
-    break;}
-case 34:
-#line 1136 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_ULT; ;
-    break;}
-case 35:
-#line 1136 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_UGT; ;
-    break;}
-case 36:
-#line 1137 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_ULE; ;
-    break;}
-case 37:
-#line 1137 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.IPredicate = ICmpInst::ICMP_UGE; ;
-    break;}
-case 38:
-#line 1141 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_OEQ; ;
-    break;}
-case 39:
-#line 1141 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_ONE; ;
-    break;}
-case 40:
-#line 1142 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_OLT; ;
-    break;}
-case 41:
-#line 1142 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_OGT; ;
-    break;}
-case 42:
-#line 1143 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_OLE; ;
-    break;}
-case 43:
-#line 1143 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_OGE; ;
-    break;}
-case 44:
-#line 1144 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_ORD; ;
-    break;}
-case 45:
-#line 1144 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_UNO; ;
-    break;}
-case 46:
-#line 1145 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_UEQ; ;
-    break;}
-case 47:
-#line 1145 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_UNE; ;
-    break;}
-case 48:
-#line 1146 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_ULT; ;
-    break;}
-case 49:
-#line 1146 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_UGT; ;
-    break;}
-case 50:
-#line 1147 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_ULE; ;
-    break;}
-case 51:
-#line 1147 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_UGE; ;
-    break;}
-case 52:
-#line 1148 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_TRUE; ;
-    break;}
-case 53:
-#line 1149 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.FPredicate = FCmpInst::FCMP_FALSE; ;
-    break;}
-case 64:
-#line 1158 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.StrVal = 0; ;
-    break;}
-case 65:
-#line 1162 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.StrVal = yyvsp[-1].StrVal;
+  case 34:
+#line 1136 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;}
+    break;
+
+  case 35:
+#line 1137 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;}
+    break;
+
+  case 36:
+#line 1137 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;}
+    break;
+
+  case 37:
+#line 1138 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;}
+    break;
+
+  case 38:
+#line 1138 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;}
+    break;
+
+  case 39:
+#line 1142 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;}
+    break;
+
+  case 40:
+#line 1142 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;}
+    break;
+
+  case 41:
+#line 1143 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;}
+    break;
+
+  case 42:
+#line 1143 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;}
+    break;
+
+  case 43:
+#line 1144 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;}
+    break;
+
+  case 44:
+#line 1144 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;}
+    break;
+
+  case 45:
+#line 1145 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;}
+    break;
+
+  case 46:
+#line 1145 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;}
+    break;
+
+  case 47:
+#line 1146 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;}
+    break;
+
+  case 48:
+#line 1146 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;}
+    break;
+
+  case 49:
+#line 1147 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;}
+    break;
+
+  case 50:
+#line 1147 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;}
+    break;
+
+  case 51:
+#line 1148 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;}
+    break;
+
+  case 52:
+#line 1148 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;}
+    break;
+
+  case 53:
+#line 1149 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;}
+    break;
+
+  case 54:
+#line 1150 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;}
+    break;
+
+  case 65:
+#line 1159 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.StrVal) = 0; ;}
+    break;
+
+  case 66:
+#line 1163 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 66:
-#line 1166 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.StrVal = 0;
+  ;}
+    break;
+
+  case 67:
+#line 1167 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.StrVal) = 0;
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 70:
-#line 1174 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.StrVal = 0;
+  ;}
+    break;
+
+  case 71:
+#line 1175 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.StrVal) = 0;
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 71:
-#line 1179 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.StrVal = yyvsp[-1].StrVal;
+  ;}
+    break;
+
+  case 72:
+#line 1180 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 72:
-#line 1185 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::InternalLinkage; ;
-    break;}
-case 73:
-#line 1186 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::WeakLinkage; ;
-    break;}
-case 74:
-#line 1187 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::LinkOnceLinkage; ;
-    break;}
-case 75:
-#line 1188 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::AppendingLinkage; ;
-    break;}
-case 76:
-#line 1189 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::DLLExportLinkage; ;
-    break;}
-case 77:
-#line 1193 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::DLLImportLinkage; ;
-    break;}
-case 78:
-#line 1194 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::ExternalWeakLinkage; ;
-    break;}
-case 79:
-#line 1195 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::ExternalLinkage; ;
-    break;}
-case 80:
-#line 1199 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Visibility = GlobalValue::DefaultVisibility;   ;
-    break;}
-case 81:
-#line 1200 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Visibility = GlobalValue::DefaultVisibility;   ;
-    break;}
-case 82:
-#line 1201 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Visibility = GlobalValue::HiddenVisibility;    ;
-    break;}
-case 83:
-#line 1202 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Visibility = GlobalValue::ProtectedVisibility; ;
-    break;}
-case 84:
-#line 1206 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::ExternalLinkage; ;
-    break;}
-case 85:
-#line 1207 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::DLLImportLinkage; ;
-    break;}
-case 86:
-#line 1208 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::ExternalWeakLinkage; ;
-    break;}
-case 87:
-#line 1212 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::ExternalLinkage; ;
-    break;}
-case 88:
-#line 1213 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::InternalLinkage; ;
-    break;}
-case 89:
-#line 1214 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::LinkOnceLinkage; ;
-    break;}
-case 90:
-#line 1215 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::WeakLinkage; ;
-    break;}
-case 91:
-#line 1216 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::DLLExportLinkage; ;
-    break;}
-case 92:
-#line 1220 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::ExternalLinkage; ;
-    break;}
-case 93:
-#line 1221 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::WeakLinkage; ;
-    break;}
-case 94:
-#line 1222 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.Linkage = GlobalValue::InternalLinkage; ;
-    break;}
-case 95:
-#line 1225 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::C; ;
-    break;}
-case 96:
-#line 1226 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::C; ;
-    break;}
-case 97:
-#line 1227 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::Fast; ;
-    break;}
-case 98:
-#line 1228 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::Cold; ;
-    break;}
-case 99:
-#line 1229 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::X86_StdCall; ;
-    break;}
-case 100:
-#line 1230 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = CallingConv::X86_FastCall; ;
-    break;}
-case 101:
-#line 1231 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-                   if ((unsigned)yyvsp[0].UInt64Val != yyvsp[0].UInt64Val)
+  ;}
+    break;
+
+  case 73:
+#line 1186 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
+    break;
+
+  case 74:
+#line 1187 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
+    break;
+
+  case 75:
+#line 1188 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
+    break;
+
+  case 76:
+#line 1189 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;}
+    break;
+
+  case 77:
+#line 1190 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
+    break;
+
+  case 78:
+#line 1194 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
+    break;
+
+  case 79:
+#line 1195 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
+    break;
+
+  case 80:
+#line 1196 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
+    break;
+
+  case 81:
+#line 1200 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Visibility) = GlobalValue::DefaultVisibility;   ;}
+    break;
+
+  case 82:
+#line 1201 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Visibility) = GlobalValue::DefaultVisibility;   ;}
+    break;
+
+  case 83:
+#line 1202 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Visibility) = GlobalValue::HiddenVisibility;    ;}
+    break;
+
+  case 84:
+#line 1203 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Visibility) = GlobalValue::ProtectedVisibility; ;}
+    break;
+
+  case 85:
+#line 1207 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
+    break;
+
+  case 86:
+#line 1208 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
+    break;
+
+  case 87:
+#line 1209 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
+    break;
+
+  case 88:
+#line 1213 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
+    break;
+
+  case 89:
+#line 1214 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
+    break;
+
+  case 90:
+#line 1215 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
+    break;
+
+  case 91:
+#line 1216 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
+    break;
+
+  case 92:
+#line 1217 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
+    break;
+
+  case 93:
+#line 1221 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
+    break;
+
+  case 94:
+#line 1222 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
+    break;
+
+  case 95:
+#line 1223 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
+    break;
+
+  case 96:
+#line 1226 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = CallingConv::C; ;}
+    break;
+
+  case 97:
+#line 1227 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = CallingConv::C; ;}
+    break;
+
+  case 98:
+#line 1228 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = CallingConv::Fast; ;}
+    break;
+
+  case 99:
+#line 1229 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = CallingConv::Cold; ;}
+    break;
+
+  case 100:
+#line 1230 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = CallingConv::X86_StdCall; ;}
+    break;
+
+  case 101:
+#line 1231 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = CallingConv::X86_FastCall; ;}
+    break;
+
+  case 102:
+#line 1232 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+                   if ((unsigned)(yyvsp[(2) - (2)].UInt64Val) != (yyvsp[(2) - (2)].UInt64Val))
                      GEN_ERROR("Calling conv too large");
-                   yyval.UIntVal = yyvsp[0].UInt64Val;
+                   (yyval.UIntVal) = (yyvsp[(2) - (2)].UInt64Val);
                   CHECK_FOR_ERROR
-                 ;
-    break;}
-case 102:
-#line 1238 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::ZExt;      ;
-    break;}
-case 103:
-#line 1239 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::ZExt;      ;
-    break;}
-case 104:
-#line 1240 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::SExt;      ;
-    break;}
-case 105:
-#line 1241 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::SExt;      ;
-    break;}
-case 106:
-#line 1242 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::InReg;     ;
-    break;}
-case 107:
-#line 1243 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::StructRet; ;
-    break;}
-case 108:
-#line 1244 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::NoAlias;   ;
-    break;}
-case 109:
-#line 1245 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::ByVal;     ;
-    break;}
-case 110:
-#line 1246 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::Nest;      ;
-    break;}
-case 111:
-#line 1249 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::None; ;
-    break;}
-case 112:
-#line 1250 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-                yyval.ParamAttrs = yyvsp[-1].ParamAttrs | yyvsp[0].ParamAttrs;
-              ;
-    break;}
-case 113:
-#line 1255 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::NoReturn; ;
-    break;}
-case 114:
-#line 1256 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::NoUnwind; ;
-    break;}
-case 115:
-#line 1257 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::ZExt;     ;
-    break;}
-case 116:
-#line 1258 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::SExt;     ;
-    break;}
-case 117:
-#line 1261 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamAttrs = ParamAttr::None; ;
-    break;}
-case 118:
-#line 1262 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-                yyval.ParamAttrs = yyvsp[-1].ParamAttrs | yyvsp[0].ParamAttrs;
-              ;
-    break;}
-case 119:
-#line 1269 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = 0; ;
-    break;}
-case 120:
-#line 1270 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-  yyval.UIntVal = yyvsp[0].UInt64Val;
-  if (yyval.UIntVal != 0 && !isPowerOf2_32(yyval.UIntVal))
+                 ;}
+    break;
+
+  case 103:
+#line 1239 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::ZExt;      ;}
+    break;
+
+  case 104:
+#line 1240 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::ZExt;      ;}
+    break;
+
+  case 105:
+#line 1241 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::SExt;      ;}
+    break;
+
+  case 106:
+#line 1242 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::SExt;      ;}
+    break;
+
+  case 107:
+#line 1243 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::InReg;     ;}
+    break;
+
+  case 108:
+#line 1244 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::StructRet; ;}
+    break;
+
+  case 109:
+#line 1245 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::NoAlias;   ;}
+    break;
+
+  case 110:
+#line 1246 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::ByVal;     ;}
+    break;
+
+  case 111:
+#line 1247 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::Nest;      ;}
+    break;
+
+  case 112:
+#line 1250 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::None; ;}
+    break;
+
+  case 113:
+#line 1251 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+                (yyval.ParamAttrs) = (yyvsp[(1) - (2)].ParamAttrs) | (yyvsp[(2) - (2)].ParamAttrs);
+              ;}
+    break;
+
+  case 114:
+#line 1256 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::NoReturn; ;}
+    break;
+
+  case 115:
+#line 1257 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::NoUnwind; ;}
+    break;
+
+  case 116:
+#line 1258 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::ZExt;     ;}
+    break;
+
+  case 117:
+#line 1259 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::SExt;     ;}
+    break;
+
+  case 118:
+#line 1260 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::Pure;     ;}
+    break;
+
+  case 119:
+#line 1261 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::Const;    ;}
+    break;
+
+  case 120:
+#line 1264 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = ParamAttr::None; ;}
+    break;
+
+  case 121:
+#line 1265 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+                (yyval.ParamAttrs) = (yyvsp[(1) - (2)].ParamAttrs) | (yyvsp[(2) - (2)].ParamAttrs);
+              ;}
+    break;
+
+  case 122:
+#line 1272 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = 0; ;}
+    break;
+
+  case 123:
+#line 1273 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+  (yyval.UIntVal) = (yyvsp[(2) - (2)].UInt64Val);
+  if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
     GEN_ERROR("Alignment must be a power of two");
   CHECK_FOR_ERROR
-;
-    break;}
-case 121:
-#line 1276 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.UIntVal = 0; ;
-    break;}
-case 122:
-#line 1277 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-  yyval.UIntVal = yyvsp[0].UInt64Val;
-  if (yyval.UIntVal != 0 && !isPowerOf2_32(yyval.UIntVal))
+;}
+    break;
+
+  case 124:
+#line 1279 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = 0; ;}
+    break;
+
+  case 125:
+#line 1280 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+  (yyval.UIntVal) = (yyvsp[(3) - (3)].UInt64Val);
+  if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
     GEN_ERROR("Alignment must be a power of two");
   CHECK_FOR_ERROR
-;
-    break;}
-case 123:
-#line 1285 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-  for (unsigned i = 0, e = yyvsp[0].StrVal->length(); i != e; ++i)
-    if ((*yyvsp[0].StrVal)[i] == '"' || (*yyvsp[0].StrVal)[i] == '\\')
+;}
+    break;
+
+  case 126:
+#line 1288 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+  for (unsigned i = 0, e = (yyvsp[(2) - (2)].StrVal)->length(); i != e; ++i)
+    if ((*(yyvsp[(2) - (2)].StrVal))[i] == '"' || (*(yyvsp[(2) - (2)].StrVal))[i] == '\\')
       GEN_ERROR("Invalid character in section name");
-  yyval.StrVal = yyvsp[0].StrVal;
+  (yyval.StrVal) = (yyvsp[(2) - (2)].StrVal);
   CHECK_FOR_ERROR
-;
-    break;}
-case 124:
-#line 1293 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.StrVal = 0; ;
-    break;}
-case 125:
-#line 1294 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.StrVal = yyvsp[0].StrVal; ;
-    break;}
-case 126:
-#line 1299 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{;
-    break;}
-case 127:
-#line 1300 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{;
-    break;}
-case 128:
-#line 1301 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    CurGV->setSection(*yyvsp[0].StrVal);
-    delete yyvsp[0].StrVal;
+;}
+    break;
+
+  case 127:
+#line 1296 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.StrVal) = 0; ;}
+    break;
+
+  case 128:
+#line 1297 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.StrVal) = (yyvsp[(1) - (1)].StrVal); ;}
+    break;
+
+  case 129:
+#line 1302 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {;}
+    break;
+
+  case 130:
+#line 1303 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {;}
+    break;
+
+  case 131:
+#line 1304 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    CurGV->setSection(*(yyvsp[(1) - (1)].StrVal));
+    delete (yyvsp[(1) - (1)].StrVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 129:
-#line 1306 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (yyvsp[0].UInt64Val != 0 && !isPowerOf2_32(yyvsp[0].UInt64Val))
+  ;}
+    break;
+
+  case 132:
+#line 1309 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    if ((yyvsp[(2) - (2)].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[(2) - (2)].UInt64Val)))
       GEN_ERROR("Alignment must be a power of two");
-    CurGV->setAlignment(yyvsp[0].UInt64Val);
+    CurGV->setAlignment((yyvsp[(2) - (2)].UInt64Val));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 137:
-#line 1322 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.TypeVal = new PATypeHolder(OpaqueType::get());
+  ;}
+    break;
+
+  case 140:
+#line 1325 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TypeVal) = new PATypeHolder(OpaqueType::get());
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 138:
-#line 1326 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType);
+  ;}
+    break;
+
+  case 141:
+#line 1329 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TypeVal) = new PATypeHolder((yyvsp[(1) - (1)].PrimType));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 139:
-#line 1330 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{                             // Pointer type?
-    if (*yyvsp[-1].TypeVal == Type::LabelTy)
+  ;}
+    break;
+
+  case 142:
+#line 1333 "/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].TypeVal)));
-    delete yyvsp[-1].TypeVal;
+    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PointerType::get(*(yyvsp[(1) - (2)].TypeVal))));
+    delete (yyvsp[(1) - (2)].TypeVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 140:
-#line 1337 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{            // Named types are also simple types...
-    const Type* tmp = getTypeVal(yyvsp[0].ValIDVal);
+  ;}
+    break;
+
+  case 143:
+#line 1340 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {            // Named types are also simple types...
+    const Type* tmp = getTypeVal((yyvsp[(1) - (1)].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.TypeVal = new PATypeHolder(tmp);
-  ;
-    break;}
-case 141:
-#line 1342 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{                   // Type UpReference
-    if (yyvsp[0].UInt64Val > (uint64_t)~0U) GEN_ERROR("Value out of range");
+    (yyval.TypeVal) = new PATypeHolder(tmp);
+  ;}
+    break;
+
+  case 144:
+#line 1345 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {                   // Type UpReference
+    if ((yyvsp[(2) - (2)].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range");
     OpaqueType *OT = OpaqueType::get();        // Use temporary placeholder
-    UpRefs.push_back(UpRefRecord((unsigned)yyvsp[0].UInt64Val, OT));  // Add to vector...
-    yyval.TypeVal = new PATypeHolder(OT);
+    UpRefs.push_back(UpRefRecord((unsigned)(yyvsp[(2) - (2)].UInt64Val), OT));  // Add to vector...
+    (yyval.TypeVal) = new PATypeHolder(OT);
     UR_OUT("New Upreference!\n");
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 142:
-#line 1350 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 145:
+#line 1353 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     std::vector<const Type*> Params;
     ParamAttrsVector Attrs;
-    if (yyvsp[0].ParamAttrs != ParamAttr::None) {
-      ParamAttrsWithIndex X; X.index = 0; X.attrs = yyvsp[0].ParamAttrs;
+    if ((yyvsp[(5) - (5)].ParamAttrs) != ParamAttr::None) {
+      ParamAttrsWithIndex X; X.index = 0; X.attrs = (yyvsp[(5) - (5)].ParamAttrs);
       Attrs.push_back(X);
     }
     unsigned index = 1;
-    TypeWithAttrsList::iterator I = yyvsp[-2].TypeWithAttrsList->begin(), E = yyvsp[-2].TypeWithAttrsList->end();
+    TypeWithAttrsList::iterator I = (yyvsp[(3) - (5)].TypeWithAttrsList)->begin(), E = (yyvsp[(3) - (5)].TypeWithAttrsList)->end();
     for (; I != E; ++I, ++index) {
       const Type *Ty = I->Ty->get();
       Params.push_back(Ty);
@@ -3030,23 +3999,24 @@
     ParamAttrsList *ActualAttrs = 0;
     if (!Attrs.empty())
       ActualAttrs = ParamAttrsList::get(Attrs);
-    FunctionType *FT = FunctionType::get(*yyvsp[-4].TypeVal, Params, isVarArg, ActualAttrs);
-    delete yyvsp[-2].TypeWithAttrsList;   // Delete the argument list
-    delete yyvsp[-4].TypeVal;   // Delete the return type handle
-    yyval.TypeVal = new PATypeHolder(HandleUpRefs(FT)); 
+    FunctionType *FT = FunctionType::get(*(yyvsp[(1) - (5)].TypeVal), Params, isVarArg, ActualAttrs);
+    delete (yyvsp[(3) - (5)].TypeWithAttrsList);   // Delete the argument list
+    delete (yyvsp[(1) - (5)].TypeVal);   // Delete the return type handle
+    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT)); 
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 143:
-#line 1380 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 146:
+#line 1383 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     std::vector<const Type*> Params;
     ParamAttrsVector Attrs;
-    if (yyvsp[0].ParamAttrs != ParamAttr::None) {
-      ParamAttrsWithIndex X; X.index = 0; X.attrs = yyvsp[0].ParamAttrs;
+    if ((yyvsp[(5) - (5)].ParamAttrs) != ParamAttr::None) {
+      ParamAttrsWithIndex X; X.index = 0; X.attrs = (yyvsp[(5) - (5)].ParamAttrs);
       Attrs.push_back(X);
     }
-    TypeWithAttrsList::iterator I = yyvsp[-2].TypeWithAttrsList->begin(), E = yyvsp[-2].TypeWithAttrsList->end();
+    TypeWithAttrsList::iterator I = (yyvsp[(3) - (5)].TypeWithAttrsList)->begin(), E = (yyvsp[(3) - (5)].TypeWithAttrsList)->end();
     unsigned index = 1;
     for ( ; I != E; ++I, ++index) {
       const Type* Ty = I->Ty->get();
@@ -3064,282 +4034,303 @@
     if (!Attrs.empty())
       ActualAttrs = ParamAttrsList::get(Attrs);
 
-    FunctionType *FT = FunctionType::get(yyvsp[-4].PrimType, Params, isVarArg, ActualAttrs);
-    delete yyvsp[-2].TypeWithAttrsList;      // Delete the argument list
-    yyval.TypeVal = new PATypeHolder(HandleUpRefs(FT)); 
+    FunctionType *FT = FunctionType::get((yyvsp[(1) - (5)].PrimType), Params, isVarArg, ActualAttrs);
+    delete (yyvsp[(3) - (5)].TypeWithAttrsList);      // Delete the argument list
+    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT)); 
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 144:
-#line 1411 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{          // Sized array type?
-    yyval.TypeVal = new PATypeHolder(HandleUpRefs(ArrayType::get(*yyvsp[-1].TypeVal, (unsigned)yyvsp[-3].UInt64Val)));
-    delete yyvsp[-1].TypeVal;
+  ;}
+    break;
+
+  case 147:
+#line 1414 "/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 145:
-#line 1416 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{          // Vector type?
-     const llvm::Type* ElemTy = yyvsp[-1].TypeVal->get();
-     if ((unsigned)yyvsp[-3].UInt64Val != yyvsp[-3].UInt64Val)
+  ;}
+    break;
+
+  case 148:
+#line 1419 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {          // Vector type?
+     const llvm::Type* ElemTy = (yyvsp[(4) - (5)].TypeVal)->get();
+     if ((unsigned)(yyvsp[(2) - (5)].UInt64Val) != (yyvsp[(2) - (5)].UInt64Val))
         GEN_ERROR("Unsigned result not equal to signed result");
      if (!ElemTy->isFloatingPoint() && !ElemTy->isInteger())
         GEN_ERROR("Element type of a VectorType must be primitive");
-     if (!isPowerOf2_32(yyvsp[-3].UInt64Val))
+     if (!isPowerOf2_32((yyvsp[(2) - (5)].UInt64Val)))
        GEN_ERROR("Vector length should be a power of 2");
-     yyval.TypeVal = new PATypeHolder(HandleUpRefs(VectorType::get(*yyvsp[-1].TypeVal, (unsigned)yyvsp[-3].UInt64Val)));
-     delete yyvsp[-1].TypeVal;
+     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(VectorType::get(*(yyvsp[(4) - (5)].TypeVal), (unsigned)(yyvsp[(2) - (5)].UInt64Val))));
+     delete (yyvsp[(4) - (5)].TypeVal);
      CHECK_FOR_ERROR
-  ;
-    break;}
-case 146:
-#line 1428 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{                        // Structure type?
+  ;}
+    break;
+
+  case 149:
+#line 1431 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {                        // Structure type?
     std::vector<const Type*> Elements;
-    for (std::list<llvm::PATypeHolder>::iterator I = yyvsp[-1].TypeList->begin(),
-           E = yyvsp[-1].TypeList->end(); I != E; ++I)
+    for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[(2) - (3)].TypeList)->begin(),
+           E = (yyvsp[(2) - (3)].TypeList)->end(); I != E; ++I)
       Elements.push_back(*I);
 
-    yyval.TypeVal = new PATypeHolder(HandleUpRefs(StructType::get(Elements)));
-    delete yyvsp[-1].TypeList;
+    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(StructType::get(Elements)));
+    delete (yyvsp[(2) - (3)].TypeList);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 147:
-#line 1438 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{                                  // Empty structure type?
-    yyval.TypeVal = new PATypeHolder(StructType::get(std::vector<const Type*>()));
+  ;}
+    break;
+
+  case 150:
+#line 1441 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {                                  // Empty structure type?
+    (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>()));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 148:
-#line 1442 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 151:
+#line 1445 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     std::vector<const Type*> Elements;
-    for (std::list<llvm::PATypeHolder>::iterator I = yyvsp[-2].TypeList->begin(),
-           E = yyvsp[-2].TypeList->end(); I != E; ++I)
+    for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[(3) - (5)].TypeList)->begin(),
+           E = (yyvsp[(3) - (5)].TypeList)->end(); I != E; ++I)
       Elements.push_back(*I);
 
-    yyval.TypeVal = new PATypeHolder(HandleUpRefs(StructType::get(Elements, true)));
-    delete yyvsp[-2].TypeList;
+    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(StructType::get(Elements, true)));
+    delete (yyvsp[(3) - (5)].TypeList);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 149:
-#line 1452 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{                         // Empty structure type?
-    yyval.TypeVal = new PATypeHolder(StructType::get(std::vector<const Type*>(), true));
+  ;}
+    break;
+
+  case 152:
+#line 1455 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {                         // Empty structure type?
+    (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>(), true));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 150:
-#line 1459 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ 
-    yyval.TypeWithAttrs.Ty = yyvsp[-1].TypeVal; 
-    yyval.TypeWithAttrs.Attrs = yyvsp[0].ParamAttrs; 
-  ;
-    break;}
-case 151:
-#line 1466 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 153:
+#line 1462 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { 
+    (yyval.TypeWithAttrs).Ty = (yyvsp[(1) - (2)].TypeVal); 
+    (yyval.TypeWithAttrs).Attrs = (yyvsp[(2) - (2)].ParamAttrs); 
+  ;}
+    break;
+
+  case 154:
+#line 1469 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
-    if (!(*yyvsp[0].TypeVal)->isFirstClassType())
+      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[0].TypeVal;
-  ;
-    break;}
-case 152:
-#line 1473 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.TypeVal = new PATypeHolder(Type::VoidTy);
-  ;
-    break;}
-case 153:
-#line 1478 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.TypeWithAttrsList = new TypeWithAttrsList();
-    yyval.TypeWithAttrsList->push_back(yyvsp[0].TypeWithAttrs);
+    (yyval.TypeVal) = (yyvsp[(1) - (1)].TypeVal);
+  ;}
+    break;
+
+  case 155:
+#line 1476 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TypeVal) = new PATypeHolder(Type::VoidTy);
+  ;}
+    break;
+
+  case 156:
+#line 1481 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
+    (yyval.TypeWithAttrsList)->push_back((yyvsp[(1) - (1)].TypeWithAttrs));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 154:
-#line 1483 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    (yyval.TypeWithAttrsList=yyvsp[-2].TypeWithAttrsList)->push_back(yyvsp[0].TypeWithAttrs);
+  ;}
+    break;
+
+  case 157:
+#line 1486 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    ((yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList))->push_back((yyvsp[(3) - (3)].TypeWithAttrs));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 156:
-#line 1491 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.TypeWithAttrsList=yyvsp[-2].TypeWithAttrsList;
+  ;}
+    break;
+
+  case 159:
+#line 1494 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList);
     TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None;
     TWA.Ty = new PATypeHolder(Type::VoidTy);
-    yyval.TypeWithAttrsList->push_back(TWA);
+    (yyval.TypeWithAttrsList)->push_back(TWA);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 157:
-#line 1498 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.TypeWithAttrsList = new TypeWithAttrsList;
+  ;}
+    break;
+
+  case 160:
+#line 1501 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TypeWithAttrsList) = new TypeWithAttrsList;
     TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None;
     TWA.Ty = new PATypeHolder(Type::VoidTy);
-    yyval.TypeWithAttrsList->push_back(TWA);
+    (yyval.TypeWithAttrsList)->push_back(TWA);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 158:
-#line 1505 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.TypeWithAttrsList = new TypeWithAttrsList();
+  ;}
+    break;
+
+  case 161:
+#line 1508 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 159:
-#line 1513 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.TypeList = new std::list<PATypeHolder>();
-    yyval.TypeList->push_back(*yyvsp[0].TypeVal); 
-    delete yyvsp[0].TypeVal;
+  ;}
+    break;
+
+  case 162:
+#line 1516 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TypeList) = new std::list<PATypeHolder>();
+    (yyval.TypeList)->push_back(*(yyvsp[(1) - (1)].TypeVal)); 
+    delete (yyvsp[(1) - (1)].TypeVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 160:
-#line 1519 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    (yyval.TypeList=yyvsp[-2].TypeList)->push_back(*yyvsp[0].TypeVal); 
-    delete yyvsp[0].TypeVal;
+  ;}
+    break;
+
+  case 163:
+#line 1522 "/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);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 161:
-#line 1531 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Nonempty unsized arr
+  ;}
+    break;
+
+  case 164:
+#line 1534 "/home/asl/proj/llvm/src/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());
+      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[-3].TypeVal)->getDescription() + "'");
+                     (*(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[-1].ConstVector->size())
+    if (NumElements != -1 && NumElements != (int)(yyvsp[(3) - (4)].ConstVector)->size())
       GEN_ERROR("Type mismatch: constant sized array initialized with " +
-                     utostr(yyvsp[-1].ConstVector->size()) +  " arguments, but has size of " + 
+                     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[-1].ConstVector->size(); i++) {
-      if (ETy != (*yyvsp[-1].ConstVector)[i]->getType())
+    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[-1].ConstVector)[i]->getType()->getDescription() + "'.");
+                       (*(yyvsp[(3) - (4)].ConstVector))[i]->getType()->getDescription() + "'.");
     }
 
-    yyval.ConstVal = ConstantArray::get(ATy, *yyvsp[-1].ConstVector);
-    delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
+    (yyval.ConstVal) = ConstantArray::get(ATy, *(yyvsp[(3) - (4)].ConstVector));
+    delete (yyvsp[(1) - (4)].TypeVal); delete (yyvsp[(3) - (4)].ConstVector);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 162:
-#line 1559 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 165:
+#line 1562 "/home/asl/proj/llvm/src/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());
+      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[-2].TypeVal)->getDescription() + "'");
+                     (*(yyvsp[(1) - (3)].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[-2].TypeVal;
+    (yyval.ConstVal) = ConstantArray::get(ATy, std::vector<Constant*>());
+    delete (yyvsp[(1) - (3)].TypeVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 163:
-#line 1575 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 166:
+#line 1578 "/home/asl/proj/llvm/src/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());
+      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[-2].TypeVal)->getDescription() + "'");
+                     (*(yyvsp[(1) - (3)].TypeVal))->getDescription() + "'");
 
     int NumElements = ATy->getNumElements();
     const Type *ETy = ATy->getElementType();
-    if (NumElements != -1 && NumElements != int(yyvsp[0].StrVal->length()))
+    if (NumElements != -1 && NumElements != int((yyvsp[(3) - (3)].StrVal)->length()))
       GEN_ERROR("Can't build string constant of size " + 
-                     itostr((int)(yyvsp[0].StrVal->length())) +
+                     itostr((int)((yyvsp[(3) - (3)].StrVal)->length())) +
                      " when array has size " + itostr(NumElements) + "");
     std::vector<Constant*> Vals;
     if (ETy == Type::Int8Ty) {
-      for (unsigned i = 0; i < yyvsp[0].StrVal->length(); ++i)
-        Vals.push_back(ConstantInt::get(ETy, (*yyvsp[0].StrVal)[i]));
+      for (unsigned i = 0; i < (yyvsp[(3) - (3)].StrVal)->length(); ++i)
+        Vals.push_back(ConstantInt::get(ETy, (*(yyvsp[(3) - (3)].StrVal))[i]));
     } else {
-      delete yyvsp[0].StrVal;
+      delete (yyvsp[(3) - (3)].StrVal);
       GEN_ERROR("Cannot build string arrays of non byte sized elements");
     }
-    delete yyvsp[0].StrVal;
-    yyval.ConstVal = ConstantArray::get(ATy, Vals);
-    delete yyvsp[-2].TypeVal;
+    delete (yyvsp[(3) - (3)].StrVal);
+    (yyval.ConstVal) = ConstantArray::get(ATy, Vals);
+    delete (yyvsp[(1) - (3)].TypeVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 164:
-#line 1602 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Nonempty unsized arr
+  ;}
+    break;
+
+  case 167:
+#line 1605 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { // Nonempty unsized arr
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
-    const VectorType *PTy = dyn_cast<VectorType>(yyvsp[-3].TypeVal->get());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription());
+    const VectorType *PTy = dyn_cast<VectorType>((yyvsp[(1) - (4)].TypeVal)->get());
     if (PTy == 0)
       GEN_ERROR("Cannot make packed constant with type: '" + 
-                     (*yyvsp[-3].TypeVal)->getDescription() + "'");
+                     (*(yyvsp[(1) - (4)].TypeVal))->getDescription() + "'");
     const Type *ETy = PTy->getElementType();
     int NumElements = PTy->getNumElements();
 
     // Verify that we have the correct size...
-    if (NumElements != -1 && NumElements != (int)yyvsp[-1].ConstVector->size())
+    if (NumElements != -1 && NumElements != (int)(yyvsp[(3) - (4)].ConstVector)->size())
       GEN_ERROR("Type mismatch: constant sized packed initialized with " +
-                     utostr(yyvsp[-1].ConstVector->size()) +  " arguments, but has size of " + 
+                     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[-1].ConstVector->size(); i++) {
-      if (ETy != (*yyvsp[-1].ConstVector)[i]->getType())
+    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[-1].ConstVector)[i]->getType()->getDescription() + "'.");
+           (*(yyvsp[(3) - (4)].ConstVector))[i]->getType()->getDescription() + "'.");
     }
 
-    yyval.ConstVal = ConstantVector::get(PTy, *yyvsp[-1].ConstVector);
-    delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
+    (yyval.ConstVal) = ConstantVector::get(PTy, *(yyvsp[(3) - (4)].ConstVector));
+    delete (yyvsp[(1) - (4)].TypeVal); delete (yyvsp[(3) - (4)].ConstVector);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 165:
-#line 1630 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    const StructType *STy = dyn_cast<StructType>(yyvsp[-3].TypeVal->get());
+  ;}
+    break;
+
+  case 168:
+#line 1633 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (4)].TypeVal)->get());
     if (STy == 0)
       GEN_ERROR("Cannot make struct constant with type: '" + 
-                     (*yyvsp[-3].TypeVal)->getDescription() + "'");
+                     (*(yyvsp[(1) - (4)].TypeVal))->getDescription() + "'");
 
-    if (yyvsp[-1].ConstVector->size() != STy->getNumContainedTypes())
+    if ((yyvsp[(3) - (4)].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[-1].ConstVector->size(); i != e; ++i)
-      if ((*yyvsp[-1].ConstVector)[i]->getType() != STy->getElementType(i))
+    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) +
@@ -3350,20 +4341,21 @@
       GEN_ERROR("Unpacked Initializer to vector type '" +
                 STy->getDescription() + "'");
 
-    yyval.ConstVal = ConstantStruct::get(STy, *yyvsp[-1].ConstVector);
-    delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
+    (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[(3) - (4)].ConstVector));
+    delete (yyvsp[(1) - (4)].TypeVal); delete (yyvsp[(3) - (4)].ConstVector);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 166:
-#line 1656 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 169:
+#line 1659 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
-    const StructType *STy = dyn_cast<StructType>(yyvsp[-2].TypeVal->get());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
+    const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (3)].TypeVal)->get());
     if (STy == 0)
       GEN_ERROR("Cannot make struct constant with type: '" + 
-                     (*yyvsp[-2].TypeVal)->getDescription() + "'");
+                     (*(yyvsp[(1) - (3)].TypeVal))->getDescription() + "'");
 
     if (STy->getNumContainedTypes() != 0)
       GEN_ERROR("Illegal number of initializers for structure type");
@@ -3373,25 +4365,26 @@
       GEN_ERROR("Unpacked Initializer to vector type '" +
                 STy->getDescription() + "'");
 
-    yyval.ConstVal = ConstantStruct::get(STy, std::vector<Constant*>());
-    delete yyvsp[-2].TypeVal;
+    (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>());
+    delete (yyvsp[(1) - (3)].TypeVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 167:
-#line 1676 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    const StructType *STy = dyn_cast<StructType>(yyvsp[-5].TypeVal->get());
+  ;}
+    break;
+
+  case 170:
+#line 1679 "/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[-5].TypeVal)->getDescription() + "'");
+                     (*(yyvsp[(1) - (6)].TypeVal))->getDescription() + "'");
 
-    if (yyvsp[-2].ConstVector->size() != STy->getNumContainedTypes())
+    if ((yyvsp[(4) - (6)].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[-2].ConstVector->size(); i != e; ++i)
-      if ((*yyvsp[-2].ConstVector)[i]->getType() != STy->getElementType(i))
+    for (unsigned i = 0, e = (yyvsp[(4) - (6)].ConstVector)->size(); i != e; ++i)
+      if ((*(yyvsp[(4) - (6)].ConstVector))[i]->getType() != STy->getElementType(i))
         GEN_ERROR("Expected type '" +
                        STy->getElementType(i)->getDescription() +
                        "' for element #" + utostr(i) +
@@ -3402,20 +4395,21 @@
       GEN_ERROR("Vector initializer to non-vector type '" + 
                 STy->getDescription() + "'");
 
-    yyval.ConstVal = ConstantStruct::get(STy, *yyvsp[-2].ConstVector);
-    delete yyvsp[-5].TypeVal; delete yyvsp[-2].ConstVector;
+    (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[(4) - (6)].ConstVector));
+    delete (yyvsp[(1) - (6)].TypeVal); delete (yyvsp[(4) - (6)].ConstVector);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 168:
-#line 1702 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 171:
+#line 1705 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-4].TypeVal)->getDescription());
-    const StructType *STy = dyn_cast<StructType>(yyvsp[-4].TypeVal->get());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (5)].TypeVal))->getDescription());
+    const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (5)].TypeVal)->get());
     if (STy == 0)
       GEN_ERROR("Cannot make struct constant with type: '" + 
-                     (*yyvsp[-4].TypeVal)->getDescription() + "'");
+                     (*(yyvsp[(1) - (5)].TypeVal))->getDescription() + "'");
 
     if (STy->getNumContainedTypes() != 0)
       GEN_ERROR("Illegal number of initializers for structure type");
@@ -3425,42 +4419,45 @@
       GEN_ERROR("Vector initializer to non-vector type '" + 
                 STy->getDescription() + "'");
 
-    yyval.ConstVal = ConstantStruct::get(STy, std::vector<Constant*>());
-    delete yyvsp[-4].TypeVal;
+    (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>());
+    delete (yyvsp[(1) - (5)].TypeVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 169:
-#line 1722 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 172:
+#line 1725 "/home/asl/proj/llvm/src/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());
+      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].TypeVal)->getDescription() + "'");
+                     (*(yyvsp[(1) - (2)].TypeVal))->getDescription() + "'");
 
-    yyval.ConstVal = ConstantPointerNull::get(PTy);
-    delete yyvsp[-1].TypeVal;
+    (yyval.ConstVal) = ConstantPointerNull::get(PTy);
+    delete (yyvsp[(1) - (2)].TypeVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 170:
-#line 1734 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 173:
+#line 1737 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
-    yyval.ConstVal = UndefValue::get(yyvsp[-1].TypeVal->get());
-    delete yyvsp[-1].TypeVal;
+      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 171:
-#line 1741 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 174:
+#line 1744 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
-    const PointerType *Ty = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
+    const PointerType *Ty = dyn_cast<PointerType>((yyvsp[(1) - (2)].TypeVal)->get());
     if (Ty == 0)
       GEN_ERROR("Global const reference must be a pointer type");
 
@@ -3474,7 +4471,7 @@
     Function *SavedCurFn = CurFun.CurrentFunction;
     CurFun.CurrentFunction = 0;
 
-    Value *V = getExistingVal(Ty, yyvsp[0].ValIDVal);
+    Value *V = getExistingVal(Ty, (yyvsp[(2) - (2)].ValIDVal));
     CHECK_FOR_ERROR
 
     CurFun.CurrentFunction = SavedCurFn;
@@ -3489,16 +4486,16 @@
 
       // First check to see if the forward references value is already created!
       PerModuleInfo::GlobalRefsType::iterator I =
-        CurModule.GlobalRefs.find(std::make_pair(PT, yyvsp[0].ValIDVal));
+        CurModule.GlobalRefs.find(std::make_pair(PT, (yyvsp[(2) - (2)].ValIDVal)));
     
       if (I != CurModule.GlobalRefs.end()) {
         V = I->second;             // Placeholder already exists, use it...
-        yyvsp[0].ValIDVal.destroy();
+        (yyvsp[(2) - (2)].ValIDVal).destroy();
       } else {
         std::string Name;
-        if (yyvsp[0].ValIDVal.Type == ValID::GlobalName)
-          Name = yyvsp[0].ValIDVal.getName();
-        else if (yyvsp[0].ValIDVal.Type != ValID::GlobalID)
+        if ((yyvsp[(2) - (2)].ValIDVal).Type == ValID::GlobalName)
+          Name = (yyvsp[(2) - (2)].ValIDVal).getName();
+        else if ((yyvsp[(2) - (2)].ValIDVal).Type != ValID::GlobalID)
           GEN_ERROR("Invalid reference to global");
 
         // Create the forward referenced global.
@@ -3514,342 +4511,377 @@
         }
 
         // 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[0].ValIDVal), GV));
+        CurModule.GlobalRefs.insert(std::make_pair(std::make_pair(PT, (yyvsp[(2) - (2)].ValIDVal)), GV));
         V = GV;
       }
     }
 
-    yyval.ConstVal = cast<GlobalValue>(V);
-    delete yyvsp[-1].TypeVal;            // Free the type handle
+    (yyval.ConstVal) = cast<GlobalValue>(V);
+    delete (yyvsp[(1) - (2)].TypeVal);            // Free the type handle
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 172:
-#line 1807 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 175:
+#line 1810 "/home/asl/proj/llvm/src/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("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].TypeVal)->getDescription() + " and " + yyvsp[0].ConstVal->getType()->getDescription());
-    yyval.ConstVal = yyvsp[0].ConstVal;
-    delete yyvsp[-1].TypeVal;
+        (*(yyvsp[(1) - (2)].TypeVal))->getDescription() + " and " + (yyvsp[(2) - (2)].ConstVal)->getType()->getDescription());
+    (yyval.ConstVal) = (yyvsp[(2) - (2)].ConstVal);
+    delete (yyvsp[(1) - (2)].TypeVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 173:
-#line 1817 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 176:
+#line 1820 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
-    const Type *Ty = yyvsp[-1].TypeVal->get();
+      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].TypeVal;
+    (yyval.ConstVal) = Constant::getNullValue(Ty);
+    delete (yyvsp[(1) - (2)].TypeVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 174:
-#line 1827 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{      // integral constants
-    if (!ConstantInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].SInt64Val))
+  ;}
+    break;
+
+  case 177:
+#line 1830 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {      // integral constants
+    if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].SInt64Val)))
       GEN_ERROR("Constant value doesn't fit in type");
-    yyval.ConstVal = ConstantInt::get(yyvsp[-1].PrimType, yyvsp[0].SInt64Val, true);
+    (yyval.ConstVal) = ConstantInt::get((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].SInt64Val), true);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 175:
-#line 1833 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{      // arbitrary precision integer constants
-    uint32_t BitWidth = cast<IntegerType>(yyvsp[-1].PrimType)->getBitWidth();
-    if (yyvsp[0].APIntVal->getBitWidth() > BitWidth) {
+  ;}
+    break;
+
+  case 178:
+#line 1836 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {      // arbitrary precision integer constants
+    uint32_t BitWidth = cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth();
+    if ((yyvsp[(2) - (2)].APIntVal)->getBitWidth() > BitWidth) {
       GEN_ERROR("Constant value does not fit in type");
     }
-    yyvsp[0].APIntVal->sextOrTrunc(BitWidth);
-    yyval.ConstVal = ConstantInt::get(*yyvsp[0].APIntVal);
-    delete yyvsp[0].APIntVal;
+    (yyvsp[(2) - (2)].APIntVal)->sextOrTrunc(BitWidth);
+    (yyval.ConstVal) = ConstantInt::get(*(yyvsp[(2) - (2)].APIntVal));
+    delete (yyvsp[(2) - (2)].APIntVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 176:
-#line 1843 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{      // integral constants
-    if (!ConstantInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].UInt64Val))
+  ;}
+    break;
+
+  case 179:
+#line 1846 "/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].PrimType, yyvsp[0].UInt64Val, false);
+    (yyval.ConstVal) = ConstantInt::get((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].UInt64Val), false);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 177:
-#line 1849 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{      // arbitrary precision integer constants
-    uint32_t BitWidth = cast<IntegerType>(yyvsp[-1].PrimType)->getBitWidth();
-    if (yyvsp[0].APIntVal->getBitWidth() > BitWidth) {
+  ;}
+    break;
+
+  case 180:
+#line 1852 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {      // arbitrary precision integer constants
+    uint32_t BitWidth = cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth();
+    if ((yyvsp[(2) - (2)].APIntVal)->getBitWidth() > BitWidth) {
       GEN_ERROR("Constant value does not fit in type");
     } 
-    yyvsp[0].APIntVal->zextOrTrunc(BitWidth);
-    yyval.ConstVal = ConstantInt::get(*yyvsp[0].APIntVal);
-    delete yyvsp[0].APIntVal;
+    (yyvsp[(2) - (2)].APIntVal)->zextOrTrunc(BitWidth);
+    (yyval.ConstVal) = ConstantInt::get(*(yyvsp[(2) - (2)].APIntVal));
+    delete (yyvsp[(2) - (2)].APIntVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 178:
-#line 1859 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{                      // Boolean constants
-    assert(cast<IntegerType>(yyvsp[-1].PrimType)->getBitWidth() == 1 && "Not Bool?");
-    yyval.ConstVal = ConstantInt::getTrue();
+  ;}
+    break;
+
+  case 181:
+#line 1862 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {                      // Boolean constants
+    assert(cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth() == 1 && "Not Bool?");
+    (yyval.ConstVal) = ConstantInt::getTrue();
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 179:
-#line 1864 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{                     // Boolean constants
-    assert(cast<IntegerType>(yyvsp[-1].PrimType)->getBitWidth() == 1 && "Not Bool?");
-    yyval.ConstVal = ConstantInt::getFalse();
+  ;}
+    break;
+
+  case 182:
+#line 1867 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {                     // Boolean constants
+    assert(cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth() == 1 && "Not Bool?");
+    (yyval.ConstVal) = ConstantInt::getFalse();
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 180:
-#line 1869 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{                   // Floating point constants
-    if (!ConstantFP::isValueValidForType(yyvsp[-1].PrimType, *yyvsp[0].FPVal))
+  ;}
+    break;
+
+  case 183:
+#line 1872 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {                   // Floating point constants
+    if (!ConstantFP::isValueValidForType((yyvsp[(1) - (2)].PrimType), *(yyvsp[(2) - (2)].FPVal)))
       GEN_ERROR("Floating point constant invalid for type");
     // Lexer has no type info, so builds all float and double FP constants 
     // as double.  Fix this here.  Long double is done right.
-    if (&yyvsp[0].FPVal->getSemantics()==&APFloat::IEEEdouble && yyvsp[-1].PrimType==Type::FloatTy)
-      yyvsp[0].FPVal->convert(APFloat::IEEEsingle, APFloat::rmNearestTiesToEven);
-    yyval.ConstVal = ConstantFP::get(yyvsp[-1].PrimType, *yyvsp[0].FPVal);
-    delete yyvsp[0].FPVal;
+    if (&(yyvsp[(2) - (2)].FPVal)->getSemantics()==&APFloat::IEEEdouble && (yyvsp[(1) - (2)].PrimType)==Type::FloatTy)
+      (yyvsp[(2) - (2)].FPVal)->convert(APFloat::IEEEsingle, APFloat::rmNearestTiesToEven);
+    (yyval.ConstVal) = ConstantFP::get((yyvsp[(1) - (2)].PrimType), *(yyvsp[(2) - (2)].FPVal));
+    delete (yyvsp[(2) - (2)].FPVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 181:
-#line 1882 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 184:
+#line 1885 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
-    Constant *Val = yyvsp[-3].ConstVal;
-    const Type *DestTy = yyvsp[-1].TypeVal->get();
-    if (!CastInst::castIsValid(yyvsp[-5].CastOpVal, yyvsp[-3].ConstVal, DestTy))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (6)].TypeVal))->getDescription());
+    Constant *Val = (yyvsp[(3) - (6)].ConstVal);
+    const Type *DestTy = (yyvsp[(5) - (6)].TypeVal)->get();
+    if (!CastInst::castIsValid((yyvsp[(1) - (6)].CastOpVal), (yyvsp[(3) - (6)].ConstVal), DestTy))
       GEN_ERROR("invalid cast opcode for cast from '" +
                 Val->getType()->getDescription() + "' to '" +
                 DestTy->getDescription() + "'"); 
-    yyval.ConstVal = ConstantExpr::getCast(yyvsp[-5].CastOpVal, yyvsp[-3].ConstVal, DestTy);
-    delete yyvsp[-1].TypeVal;
-  ;
-    break;}
-case 182:
-#line 1894 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (!isa<PointerType>(yyvsp[-2].ConstVal->getType()))
+    (yyval.ConstVal) = ConstantExpr::getCast((yyvsp[(1) - (6)].CastOpVal), (yyvsp[(3) - (6)].ConstVal), DestTy);
+    delete (yyvsp[(5) - (6)].TypeVal);
+  ;}
+    break;
+
+  case 185:
+#line 1897 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!isa<PointerType>((yyvsp[(3) - (5)].ConstVal)->getType()))
       GEN_ERROR("GetElementPtr requires a pointer operand");
 
     const Type *IdxTy =
-      GetElementPtrInst::getIndexedType(yyvsp[-2].ConstVal->getType(), yyvsp[-1].ValueList->begin(), yyvsp[-1].ValueList->end(),
+      GetElementPtrInst::getIndexedType((yyvsp[(3) - (5)].ConstVal)->getType(), (yyvsp[(4) - (5)].ValueList)->begin(), (yyvsp[(4) - (5)].ValueList)->end(),
                                         true);
     if (!IdxTy)
       GEN_ERROR("Index list invalid for constant getelementptr");
 
     SmallVector<Constant*, 8> IdxVec;
-    for (unsigned i = 0, e = yyvsp[-1].ValueList->size(); i != e; ++i)
-      if (Constant *C = dyn_cast<Constant>((*yyvsp[-1].ValueList)[i]))
+    for (unsigned i = 0, e = (yyvsp[(4) - (5)].ValueList)->size(); i != e; ++i)
+      if (Constant *C = dyn_cast<Constant>((*(yyvsp[(4) - (5)].ValueList))[i]))
         IdxVec.push_back(C);
       else
         GEN_ERROR("Indices to constant getelementptr must be constants");
 
-    delete yyvsp[-1].ValueList;
+    delete (yyvsp[(4) - (5)].ValueList);
 
-    yyval.ConstVal = ConstantExpr::getGetElementPtr(yyvsp[-2].ConstVal, &IdxVec[0], IdxVec.size());
+    (yyval.ConstVal) = ConstantExpr::getGetElementPtr((yyvsp[(3) - (5)].ConstVal), &IdxVec[0], IdxVec.size());
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 183:
-#line 1916 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (yyvsp[-5].ConstVal->getType() != Type::Int1Ty)
+  ;}
+    break;
+
+  case 186:
+#line 1919 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    if ((yyvsp[(3) - (8)].ConstVal)->getType() != Type::Int1Ty)
       GEN_ERROR("Select condition must be of boolean type");
-    if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
+    if ((yyvsp[(5) - (8)].ConstVal)->getType() != (yyvsp[(7) - (8)].ConstVal)->getType())
       GEN_ERROR("Select operand types must match");
-    yyval.ConstVal = ConstantExpr::getSelect(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
+    (yyval.ConstVal) = ConstantExpr::getSelect((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 184:
-#line 1924 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
+  ;}
+    break;
+
+  case 187:
+#line 1927 "/home/asl/proj/llvm/src/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[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  ;
-    break;}
-case 185:
-#line 1930 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
+    (yyval.ConstVal) = ConstantExpr::get((yyvsp[(1) - (6)].BinaryOpVal), (yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal));
+  ;}
+    break;
+
+  case 188:
+#line 1933 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType())
       GEN_ERROR("Logical operator types must match");
-    if (!yyvsp[-3].ConstVal->getType()->isInteger()) {
-      if (Instruction::isShift(yyvsp[-5].BinaryOpVal) || !isa<VectorType>(yyvsp[-3].ConstVal->getType()) || 
-          !cast<VectorType>(yyvsp[-3].ConstVal->getType())->getElementType()->isInteger())
+    if (!(yyvsp[(3) - (6)].ConstVal)->getType()->isInteger()) {
+      if (Instruction::isShift((yyvsp[(1) - (6)].BinaryOpVal)) || !isa<VectorType>((yyvsp[(3) - (6)].ConstVal)->getType()) || 
+          !cast<VectorType>((yyvsp[(3) - (6)].ConstVal)->getType())->getElementType()->isInteger())
         GEN_ERROR("Logical operator requires integral operands");
     }
-    yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
+    (yyval.ConstVal) = ConstantExpr::get((yyvsp[(1) - (6)].BinaryOpVal), (yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 186:
-#line 1941 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
+  ;}
+    break;
+
+  case 189:
+#line 1944 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
       GEN_ERROR("icmp operand types must match");
-    yyval.ConstVal = ConstantExpr::getICmp(yyvsp[-5].IPredicate, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  ;
-    break;}
-case 187:
-#line 1946 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
+    (yyval.ConstVal) = ConstantExpr::getICmp((yyvsp[(2) - (7)].IPredicate), (yyvsp[(4) - (7)].ConstVal), (yyvsp[(6) - (7)].ConstVal));
+  ;}
+    break;
+
+  case 190:
+#line 1949 "/home/asl/proj/llvm/src/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[-5].FPredicate, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  ;
-    break;}
-case 188:
-#line 1951 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (!ExtractElementInst::isValidOperands(yyvsp[-3].ConstVal, yyvsp[-1].ConstVal))
+    (yyval.ConstVal) = ConstantExpr::getFCmp((yyvsp[(2) - (7)].FPredicate), (yyvsp[(4) - (7)].ConstVal), (yyvsp[(6) - (7)].ConstVal));
+  ;}
+    break;
+
+  case 191:
+#line 1954 "/home/asl/proj/llvm/src/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].ConstVal, yyvsp[-1].ConstVal);
+    (yyval.ConstVal) = ConstantExpr::getExtractElement((yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 189:
-#line 1957 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (!InsertElementInst::isValidOperands(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal))
+  ;}
+    break;
+
+  case 192:
+#line 1960 "/home/asl/proj/llvm/src/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[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
+    (yyval.ConstVal) = ConstantExpr::getInsertElement((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 190:
-#line 1963 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (!ShuffleVectorInst::isValidOperands(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal))
+  ;}
+    break;
+
+  case 193:
+#line 1966 "/home/asl/proj/llvm/src/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[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
+    (yyval.ConstVal) = ConstantExpr::getShuffleVector((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 191:
-#line 1972 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    (yyval.ConstVector = yyvsp[-2].ConstVector)->push_back(yyvsp[0].ConstVal);
+  ;}
+    break;
+
+  case 194:
+#line 1975 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    ((yyval.ConstVector) = (yyvsp[(1) - (3)].ConstVector))->push_back((yyvsp[(3) - (3)].ConstVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 192:
-#line 1976 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ConstVector = new std::vector<Constant*>();
-    yyval.ConstVector->push_back(yyvsp[0].ConstVal);
+  ;}
+    break;
+
+  case 195:
+#line 1979 "/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 193:
-#line 1984 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.BoolVal = false; ;
-    break;}
-case 194:
-#line 1984 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.BoolVal = true; ;
-    break;}
-case 195:
-#line 1987 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.BoolVal = true; ;
-    break;}
-case 196:
-#line 1987 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.BoolVal = false; ;
-    break;}
-case 197:
-#line 1990 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    const Type* VTy = yyvsp[-1].TypeVal->get();
-    Value *V = getVal(VTy, yyvsp[0].ValIDVal);
+  ;}
+    break;
+
+  case 196:
+#line 1987 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.BoolVal) = false; ;}
+    break;
+
+  case 197:
+#line 1987 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.BoolVal) = true; ;}
+    break;
+
+  case 198:
+#line 1990 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.BoolVal) = true; ;}
+    break;
+
+  case 199:
+#line 1990 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.BoolVal) = false; ;}
+    break;
+
+  case 200:
+#line 1993 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    const Type* VTy = (yyvsp[(1) - (2)].TypeVal)->get();
+    Value *V = getVal(VTy, (yyvsp[(2) - (2)].ValIDVal));
     CHECK_FOR_ERROR
     GlobalValue* Aliasee = dyn_cast<GlobalValue>(V);
     if (!Aliasee)
       GEN_ERROR("Aliases can be created only to global values");
 
-    yyval.ConstVal = Aliasee;
+    (yyval.ConstVal) = Aliasee;
     CHECK_FOR_ERROR
-    delete yyvsp[-1].TypeVal;
-   ;
-    break;}
-case 198:
-#line 2002 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    Constant *Val = yyvsp[-3].ConstVal;
-    const Type *DestTy = yyvsp[-1].TypeVal->get();
-    if (!CastInst::castIsValid(yyvsp[-5].CastOpVal, yyvsp[-3].ConstVal, DestTy))
+    delete (yyvsp[(1) - (2)].TypeVal);
+   ;}
+    break;
+
+  case 201:
+#line 2005 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    Constant *Val = (yyvsp[(3) - (6)].ConstVal);
+    const Type *DestTy = (yyvsp[(5) - (6)].TypeVal)->get();
+    if (!CastInst::castIsValid((yyvsp[(1) - (6)].CastOpVal), (yyvsp[(3) - (6)].ConstVal), DestTy))
       GEN_ERROR("invalid cast opcode for cast from '" +
                 Val->getType()->getDescription() + "' to '" +
                 DestTy->getDescription() + "'");
     
-    yyval.ConstVal = ConstantExpr::getCast(yyvsp[-5].CastOpVal, yyvsp[-3].ConstVal, DestTy);
+    (yyval.ConstVal) = ConstantExpr::getCast((yyvsp[(1) - (6)].CastOpVal), (yyvsp[(3) - (6)].ConstVal), DestTy);
     CHECK_FOR_ERROR
-    delete yyvsp[-1].TypeVal;
-   ;
-    break;}
-case 199:
-#line 2023 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ModuleVal = ParserResult = CurModule.CurrentModule;
+    delete (yyvsp[(5) - (6)].TypeVal);
+   ;}
+    break;
+
+  case 202:
+#line 2026 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
     CurModule.ModuleDone();
     CHECK_FOR_ERROR;
-  ;
-    break;}
-case 200:
-#line 2028 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ModuleVal = ParserResult = CurModule.CurrentModule;
+  ;}
+    break;
+
+  case 203:
+#line 2031 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
     CurModule.ModuleDone();
     CHECK_FOR_ERROR;
-  ;
-    break;}
-case 203:
-#line 2041 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ CurFun.isDeclare = false; ;
-    break;}
-case 204:
-#line 2041 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 206:
+#line 2044 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { CurFun.isDeclare = false; ;}
+    break;
+
+  case 207:
+#line 2044 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     CurFun.FunctionDone();
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 205:
-#line 2045 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ CurFun.isDeclare = true; ;
-    break;}
-case 206:
-#line 2045 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 208:
+#line 2048 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { CurFun.isDeclare = true; ;}
+    break;
+
+  case 209:
+#line 2048 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 207:
-#line 2048 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 210:
+#line 2051 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 208:
-#line 2051 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 211:
+#line 2054 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (3)].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:
     //
@@ -3859,100 +4891,108 @@
     // If types are not resolved eagerly, then the two types will not be
     // determined to be the same type!
     //
-    ResolveTypeTo(yyvsp[-2].StrVal, *yyvsp[0].TypeVal);
+    ResolveTypeTo((yyvsp[(1) - (3)].StrVal), *(yyvsp[(3) - (3)].TypeVal));
 
-    if (!setTypeName(*yyvsp[0].TypeVal, yyvsp[-2].StrVal) && !yyvsp[-2].StrVal) {
+    if (!setTypeName(*(yyvsp[(3) - (3)].TypeVal), (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[0].TypeVal);
+      CurModule.Types.push_back(*(yyvsp[(3) - (3)].TypeVal));
     }
 
-    delete yyvsp[0].TypeVal;
+    delete (yyvsp[(3) - (3)].TypeVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 209:
-#line 2075 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    ResolveTypeTo(yyvsp[-2].StrVal, yyvsp[0].PrimType);
+  ;}
+    break;
 
-    if (!setTypeName(yyvsp[0].PrimType, yyvsp[-2].StrVal) && !yyvsp[-2].StrVal) {
+  case 212:
+#line 2078 "/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[0].PrimType);
+      CurModule.Types.push_back((yyvsp[(3) - (3)].PrimType));
     }
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 210:
-#line 2086 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ 
+  ;}
+    break;
+
+  case 213:
+#line 2089 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { 
     /* "Externally Visible" Linkage */
-    if (yyvsp[0].ConstVal == 0) 
+    if ((yyvsp[(5) - (5)].ConstVal) == 0) 
       GEN_ERROR("Global value initializer is not a constant");
-    CurGV = ParseGlobalVariable(yyvsp[-4].StrVal, GlobalValue::ExternalLinkage,
-                                yyvsp[-3].Visibility, yyvsp[-1].BoolVal, yyvsp[0].ConstVal->getType(), yyvsp[0].ConstVal, yyvsp[-2].BoolVal);
+    CurGV = ParseGlobalVariable((yyvsp[(1) - (5)].StrVal), GlobalValue::ExternalLinkage,
+                                (yyvsp[(2) - (5)].Visibility), (yyvsp[(4) - (5)].BoolVal), (yyvsp[(5) - (5)].ConstVal)->getType(), (yyvsp[(5) - (5)].ConstVal), (yyvsp[(3) - (5)].BoolVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 211:
-#line 2093 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 214:
+#line 2096 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     CurGV = 0;
-  ;
-    break;}
-case 212:
-#line 2097 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (yyvsp[0].ConstVal == 0) 
+  ;}
+    break;
+
+  case 215:
+#line 2100 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    if ((yyvsp[(6) - (6)].ConstVal) == 0) 
       GEN_ERROR("Global value initializer is not a constant");
-    CurGV = ParseGlobalVariable(yyvsp[-5].StrVal, yyvsp[-4].Linkage, yyvsp[-3].Visibility, yyvsp[-1].BoolVal, yyvsp[0].ConstVal->getType(), yyvsp[0].ConstVal, yyvsp[-2].BoolVal);
+    CurGV = ParseGlobalVariable((yyvsp[(1) - (6)].StrVal), (yyvsp[(2) - (6)].Linkage), (yyvsp[(3) - (6)].Visibility), (yyvsp[(5) - (6)].BoolVal), (yyvsp[(6) - (6)].ConstVal)->getType(), (yyvsp[(6) - (6)].ConstVal), (yyvsp[(4) - (6)].BoolVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 213:
-#line 2102 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 216:
+#line 2105 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     CurGV = 0;
-  ;
-    break;}
-case 214:
-#line 2106 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 217:
+#line 2109 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
-    CurGV = ParseGlobalVariable(yyvsp[-5].StrVal, yyvsp[-4].Linkage, yyvsp[-3].Visibility, yyvsp[-1].BoolVal, *yyvsp[0].TypeVal, 0, yyvsp[-2].BoolVal);
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(6) - (6)].TypeVal))->getDescription());
+    CurGV = ParseGlobalVariable((yyvsp[(1) - (6)].StrVal), (yyvsp[(2) - (6)].Linkage), (yyvsp[(3) - (6)].Visibility), (yyvsp[(5) - (6)].BoolVal), *(yyvsp[(6) - (6)].TypeVal), 0, (yyvsp[(4) - (6)].BoolVal));
     CHECK_FOR_ERROR
-    delete yyvsp[0].TypeVal;
-  ;
-    break;}
-case 215:
-#line 2112 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+    delete (yyvsp[(6) - (6)].TypeVal);
+  ;}
+    break;
+
+  case 218:
+#line 2115 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     CurGV = 0;
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 216:
-#line 2116 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 219:
+#line 2119 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     std::string Name;
-    if (yyvsp[-4].StrVal) {
-      Name = *yyvsp[-4].StrVal;
-      delete yyvsp[-4].StrVal;
+    if ((yyvsp[(1) - (5)].StrVal)) {
+      Name = *(yyvsp[(1) - (5)].StrVal);
+      delete (yyvsp[(1) - (5)].StrVal);
     }
     if (Name.empty())
       GEN_ERROR("Alias name cannot be empty");
     
-    Constant* Aliasee = yyvsp[0].ConstVal;
+    Constant* Aliasee = (yyvsp[(5) - (5)].ConstVal);
     if (Aliasee == 0)
       GEN_ERROR(std::string("Invalid aliasee for alias: ") + Name);
 
-    GlobalAlias* GA = new GlobalAlias(Aliasee->getType(), yyvsp[-1].Linkage, Name, Aliasee,
+    GlobalAlias* GA = new GlobalAlias(Aliasee->getType(), (yyvsp[(4) - (5)].Linkage), Name, Aliasee,
                                       CurModule.CurrentModule);
-    GA->setVisibility(yyvsp[-3].Visibility);
+    GA->setVisibility((yyvsp[(2) - (5)].Visibility));
     InsertValue(GA, CurModule.Values);
     
     
@@ -3976,152 +5016,167 @@
     ID.destroy();
     
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 217:
-#line 2156 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ 
+  ;}
+    break;
+
+  case 220:
+#line 2159 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { 
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 218:
-#line 2159 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 221:
+#line 2162 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 219:
-#line 2165 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 222:
+#line 2168 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
   const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm();
   if (AsmSoFar.empty())
-    CurModule.CurrentModule->setModuleInlineAsm(*yyvsp[0].StrVal);
+    CurModule.CurrentModule->setModuleInlineAsm(*(yyvsp[(1) - (1)].StrVal));
   else
-    CurModule.CurrentModule->setModuleInlineAsm(AsmSoFar+"\n"+*yyvsp[0].StrVal);
-  delete yyvsp[0].StrVal;
+    CurModule.CurrentModule->setModuleInlineAsm(AsmSoFar+"\n"+*(yyvsp[(1) - (1)].StrVal));
+  delete (yyvsp[(1) - (1)].StrVal);
   CHECK_FOR_ERROR
-;
-    break;}
-case 220:
-#line 2175 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    CurModule.CurrentModule->setTargetTriple(*yyvsp[0].StrVal);
-    delete yyvsp[0].StrVal;
-  ;
-    break;}
-case 221:
-#line 2179 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    CurModule.CurrentModule->setDataLayout(*yyvsp[0].StrVal);
-    delete yyvsp[0].StrVal;
-  ;
-    break;}
-case 223:
-#line 2186 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-          CurModule.CurrentModule->addLibrary(*yyvsp[0].StrVal);
-          delete yyvsp[0].StrVal;
+;}
+    break;
+
+  case 223:
+#line 2178 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    CurModule.CurrentModule->setTargetTriple(*(yyvsp[(3) - (3)].StrVal));
+    delete (yyvsp[(3) - (3)].StrVal);
+  ;}
+    break;
+
+  case 224:
+#line 2182 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    CurModule.CurrentModule->setDataLayout(*(yyvsp[(3) - (3)].StrVal));
+    delete (yyvsp[(3) - (3)].StrVal);
+  ;}
+    break;
+
+  case 226:
+#line 2189 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+          CurModule.CurrentModule->addLibrary(*(yyvsp[(3) - (3)].StrVal));
+          delete (yyvsp[(3) - (3)].StrVal);
           CHECK_FOR_ERROR
-        ;
-    break;}
-case 224:
-#line 2191 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-          CurModule.CurrentModule->addLibrary(*yyvsp[0].StrVal);
-          delete yyvsp[0].StrVal;
+        ;}
+    break;
+
+  case 227:
+#line 2194 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+          CurModule.CurrentModule->addLibrary(*(yyvsp[(1) - (1)].StrVal));
+          delete (yyvsp[(1) - (1)].StrVal);
           CHECK_FOR_ERROR
-        ;
-    break;}
-case 225:
-#line 2196 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+        ;}
+    break;
+
+  case 228:
+#line 2199 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
           CHECK_FOR_ERROR
-        ;
-    break;}
-case 226:
-#line 2205 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+        ;}
+    break;
+
+  case 229:
+#line 2208 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
-    if (*yyvsp[-2].TypeVal == Type::VoidTy)
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
+    if (*(yyvsp[(3) - (5)].TypeVal) == Type::VoidTy)
       GEN_ERROR("void typed arguments are invalid");
-    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);
+    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);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 227:
-#line 2215 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 230:
+#line 2218 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
-    if (*yyvsp[-2].TypeVal == Type::VoidTy)
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
+    if (*(yyvsp[(1) - (3)].TypeVal) == Type::VoidTy)
       GEN_ERROR("void typed arguments are invalid");
-    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);
+    ArgListEntry E; E.Attrs = (yyvsp[(2) - (3)].ParamAttrs); E.Ty = (yyvsp[(1) - (3)].TypeVal); E.Name = (yyvsp[(3) - (3)].StrVal);
+    (yyval.ArgList) = new ArgListType;
+    (yyval.ArgList)->push_back(E);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 228:
-#line 2226 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ArgList = yyvsp[0].ArgList;
+  ;}
+    break;
+
+  case 231:
+#line 2229 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ArgList) = (yyvsp[(1) - (1)].ArgList);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 229:
-#line 2230 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ArgList = yyvsp[-2].ArgList;
+  ;}
+    break;
+
+  case 232:
+#line 2233 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ArgList) = (yyvsp[(1) - (3)].ArgList);
     struct ArgListEntry E;
     E.Ty = new PATypeHolder(Type::VoidTy);
     E.Name = 0;
     E.Attrs = ParamAttr::None;
-    yyval.ArgList->push_back(E);
+    (yyval.ArgList)->push_back(E);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 230:
-#line 2239 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ArgList = new ArgListType;
+  ;}
+    break;
+
+  case 233:
+#line 2242 "/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 = ParamAttr::None;
-    yyval.ArgList->push_back(E);
+    (yyval.ArgList)->push_back(E);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 231:
-#line 2248 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ArgList = 0;
+  ;}
+    break;
+
+  case 234:
+#line 2251 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ArgList) = 0;
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 232:
-#line 2254 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-  std::string FunctionName(*yyvsp[-6].StrVal);
-  delete yyvsp[-6].StrVal;  // Free strdup'd memory!
+  ;}
+    break;
+
+  case 235:
+#line 2257 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+  std::string FunctionName(*(yyvsp[(3) - (9)].StrVal));
+  delete (yyvsp[(3) - (9)].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[-7].TypeVal))
-    GEN_ERROR("Reference to abstract result: "+ yyvsp[-7].TypeVal->get()->getDescription());
+  if (!CurFun.isDeclare && CurModule.TypeIsUnresolved((yyvsp[(2) - (9)].TypeVal)))
+    GEN_ERROR("Reference to abstract result: "+ (yyvsp[(2) - (9)].TypeVal)->get()->getDescription());
 
   std::vector<const Type*> ParamTypeList;
   ParamAttrsVector Attrs;
-  if (yyvsp[-2].ParamAttrs != ParamAttr::None) {
-    ParamAttrsWithIndex PAWI; PAWI.index = 0; PAWI.attrs = yyvsp[-2].ParamAttrs;
+  if ((yyvsp[(7) - (9)].ParamAttrs) != ParamAttr::None) {
+    ParamAttrsWithIndex PAWI; PAWI.index = 0; PAWI.attrs = (yyvsp[(7) - (9)].ParamAttrs);
     Attrs.push_back(PAWI);
   }
-  if (yyvsp[-4].ArgList) {   // If there are arguments...
+  if ((yyvsp[(5) - (9)].ArgList)) {   // If there are arguments...
     unsigned index = 1;
-    for (ArgListType::iterator I = yyvsp[-4].ArgList->begin(); I != yyvsp[-4].ArgList->end(); ++I, ++index) {
+    for (ArgListType::iterator I = (yyvsp[(5) - (9)].ArgList)->begin(); I != (yyvsp[(5) - (9)].ArgList)->end(); ++I, ++index) {
       const Type* Ty = I->Ty->get();
       if (!CurFun.isDeclare && CurModule.TypeIsUnresolved(I->Ty))
         GEN_ERROR("Reference to abstract argument: " + Ty->getDescription());
@@ -4141,9 +5196,9 @@
   if (!Attrs.empty())
     PAL = ParamAttrsList::get(Attrs);
 
-  FunctionType *FT = FunctionType::get(*yyvsp[-7].TypeVal, ParamTypeList, isVarArg, PAL);
+  FunctionType *FT = FunctionType::get(*(yyvsp[(2) - (9)].TypeVal), ParamTypeList, isVarArg, PAL);
   const PointerType *PFT = PointerType::get(FT);
-  delete yyvsp[-7].TypeVal;
+  delete (yyvsp[(2) - (9)].TypeVal);
 
   ValID ID;
   if (!FunctionName.empty()) {
@@ -4192,26 +5247,26 @@
     Fn->setLinkage(CurFun.Linkage);
     Fn->setVisibility(CurFun.Visibility);
   }
-  Fn->setCallingConv(yyvsp[-8].UIntVal);
-  Fn->setAlignment(yyvsp[0].UIntVal);
-  if (yyvsp[-1].StrVal) {
-    Fn->setSection(*yyvsp[-1].StrVal);
-    delete yyvsp[-1].StrVal;
+  Fn->setCallingConv((yyvsp[(1) - (9)].UIntVal));
+  Fn->setAlignment((yyvsp[(9) - (9)].UIntVal));
+  if ((yyvsp[(8) - (9)].StrVal)) {
+    Fn->setSection(*(yyvsp[(8) - (9)].StrVal));
+    delete (yyvsp[(8) - (9)].StrVal);
   }
 
   // Add all of the arguments we parsed to the function...
-  if (yyvsp[-4].ArgList) {                     // Is null if empty...
+  if ((yyvsp[(5) - (9)].ArgList)) {                     // Is null if empty...
     if (isVarArg) {  // Nuke the last entry
-      assert(yyvsp[-4].ArgList->back().Ty->get() == Type::VoidTy && yyvsp[-4].ArgList->back().Name == 0 &&
+      assert((yyvsp[(5) - (9)].ArgList)->back().Ty->get() == Type::VoidTy && (yyvsp[(5) - (9)].ArgList)->back().Name == 0 &&
              "Not a varargs marker!");
-      delete yyvsp[-4].ArgList->back().Ty;
-      yyvsp[-4].ArgList->pop_back();  // Delete the last entry
+      delete (yyvsp[(5) - (9)].ArgList)->back().Ty;
+      (yyvsp[(5) - (9)].ArgList)->pop_back();  // Delete the last entry
     }
     Function::arg_iterator ArgIt = Fn->arg_begin();
     Function::arg_iterator ArgEnd = Fn->arg_end();
     unsigned Idx = 1;
-    for (ArgListType::iterator I = yyvsp[-4].ArgList->begin(); 
-         I != yyvsp[-4].ArgList->end() && ArgIt != ArgEnd; ++I, ++ArgIt) {
+    for (ArgListType::iterator I = (yyvsp[(5) - (9)].ArgList)->begin(); 
+         I != (yyvsp[(5) - (9)].ArgList)->end() && ArgIt != ArgEnd; ++I, ++ArgIt) {
       delete I->Ty;                          // Delete the typeholder...
       setValueName(ArgIt, I->Name);       // Insert arg into symtab...
       CHECK_FOR_ERROR
@@ -4219,114 +5274,128 @@
       Idx++;
     }
 
-    delete yyvsp[-4].ArgList;                     // We're now done with the argument list
+    delete (yyvsp[(5) - (9)].ArgList);                     // We're now done with the argument list
   }
   CHECK_FOR_ERROR
-;
-    break;}
-case 235:
-#line 2376 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-  yyval.FunctionVal = CurFun.CurrentFunction;
+;}
+    break;
+
+  case 238:
+#line 2379 "/home/asl/proj/llvm/src/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[-3].Linkage);
-  yyval.FunctionVal->setVisibility(yyvsp[-2].Visibility);
-;
-    break;}
-case 238:
-#line 2387 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-  yyval.FunctionVal = yyvsp[-1].FunctionVal;
+  (yyval.FunctionVal)->setLinkage((yyvsp[(1) - (4)].Linkage));
+  (yyval.FunctionVal)->setVisibility((yyvsp[(2) - (4)].Visibility));
+;}
+    break;
+
+  case 241:
+#line 2390 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+  (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
   CHECK_FOR_ERROR
-;
-    break;}
-case 239:
-#line 2392 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    CurFun.CurrentFunction->setLinkage(yyvsp[-2].Linkage);
-    CurFun.CurrentFunction->setVisibility(yyvsp[-1].Visibility);
-    yyval.FunctionVal = CurFun.CurrentFunction;
+;}
+    break;
+
+  case 242:
+#line 2395 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    CurFun.CurrentFunction->setLinkage((yyvsp[(1) - (3)].Linkage));
+    CurFun.CurrentFunction->setVisibility((yyvsp[(2) - (3)].Visibility));
+    (yyval.FunctionVal) = CurFun.CurrentFunction;
     CurFun.FunctionDone();
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 240:
-#line 2404 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.BoolVal = false;
+  ;}
+    break;
+
+  case 243:
+#line 2407 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 241:
-#line 2408 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.BoolVal = true;
+  ;}
+    break;
+
+  case 244:
+#line 2411 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 242:
-#line 2413 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{    // A reference to a direct constant
-    yyval.ValIDVal = ValID::create(yyvsp[0].SInt64Val);
+  ;}
+    break;
+
+  case 245:
+#line 2416 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {    // A reference to a direct constant
+    (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].SInt64Val));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 243:
-#line 2417 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ValIDVal = ValID::create(yyvsp[0].UInt64Val);
+  ;}
+    break;
+
+  case 246:
+#line 2420 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].UInt64Val));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 244:
-#line 2421 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{                     // Perhaps it's an FP constant?
-    yyval.ValIDVal = ValID::create(yyvsp[0].FPVal);
+  ;}
+    break;
+
+  case 247:
+#line 2424 "/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 245:
-#line 2425 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ValIDVal = ValID::create(ConstantInt::getTrue());
+  ;}
+    break;
+
+  case 248:
+#line 2428 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ValIDVal) = ValID::create(ConstantInt::getTrue());
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 246:
-#line 2429 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ValIDVal = ValID::create(ConstantInt::getFalse());
+  ;}
+    break;
+
+  case 249:
+#line 2432 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ValIDVal) = ValID::create(ConstantInt::getFalse());
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 247:
-#line 2433 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ValIDVal = ValID::createNull();
+  ;}
+    break;
+
+  case 250:
+#line 2436 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ValIDVal) = ValID::createNull();
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 248:
-#line 2437 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ValIDVal = ValID::createUndef();
+  ;}
+    break;
+
+  case 251:
+#line 2440 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ValIDVal) = ValID::createUndef();
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 249:
-#line 2441 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{     // A vector zero constant.
-    yyval.ValIDVal = ValID::createZeroInit();
+  ;}
+    break;
+
+  case 252:
+#line 2444 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {     // A vector zero constant.
+    (yyval.ValIDVal) = ValID::createZeroInit();
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 250:
-#line 2445 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Nonempty unsized packed vector
-    const Type *ETy = (*yyvsp[-1].ConstVector)[0]->getType();
-    int NumElements = yyvsp[-1].ConstVector->size(); 
+  ;}
+    break;
+
+  case 253:
+#line 2448 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { // Nonempty unsized packed vector
+    const Type *ETy = (*(yyvsp[(2) - (3)].ConstVector))[0]->getType();
+    int NumElements = (yyvsp[(2) - (3)].ConstVector)->size(); 
     
     VectorType* pt = VectorType::get(ETy, NumElements);
     PATypeHolder* PTy = new PATypeHolder(
@@ -4338,213 +5407,233 @@
                                          );
     
     // Verify all elements are correct type!
-    for (unsigned i = 0; i < yyvsp[-1].ConstVector->size(); i++) {
-      if (ETy != (*yyvsp[-1].ConstVector)[i]->getType())
+    for (unsigned i = 0; i < (yyvsp[(2) - (3)].ConstVector)->size(); i++) {
+      if (ETy != (*(yyvsp[(2) - (3)].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() + "'.");
+                     (*(yyvsp[(2) - (3)].ConstVector))[i]->getType()->getDescription() + "'.");
     }
 
-    yyval.ValIDVal = ValID::create(ConstantVector::get(pt, *yyvsp[-1].ConstVector));
-    delete PTy; delete yyvsp[-1].ConstVector;
+    (yyval.ValIDVal) = ValID::create(ConstantVector::get(pt, *(yyvsp[(2) - (3)].ConstVector)));
+    delete PTy; delete (yyvsp[(2) - (3)].ConstVector);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 251:
-#line 2470 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ValIDVal = ValID::create(yyvsp[0].ConstVal);
+  ;}
+    break;
+
+  case 254:
+#line 2473 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].ConstVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 252:
-#line 2474 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ValIDVal = ValID::createInlineAsm(*yyvsp[-2].StrVal, *yyvsp[0].StrVal, yyvsp[-3].BoolVal);
-    delete yyvsp[-2].StrVal;
-    delete yyvsp[0].StrVal;
+  ;}
+    break;
+
+  case 255:
+#line 2477 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ValIDVal) = ValID::createInlineAsm(*(yyvsp[(3) - (5)].StrVal), *(yyvsp[(5) - (5)].StrVal), (yyvsp[(2) - (5)].BoolVal));
+    delete (yyvsp[(3) - (5)].StrVal);
+    delete (yyvsp[(5) - (5)].StrVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 253:
-#line 2484 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{  // Is it an integer reference...?
-    yyval.ValIDVal = ValID::createLocalID(yyvsp[0].UIntVal);
+  ;}
+    break;
+
+  case 256:
+#line 2487 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {  // Is it an integer reference...?
+    (yyval.ValIDVal) = ValID::createLocalID((yyvsp[(1) - (1)].UIntVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 254:
-#line 2488 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ValIDVal = ValID::createGlobalID(yyvsp[0].UIntVal);
+  ;}
+    break;
+
+  case 257:
+#line 2491 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ValIDVal) = ValID::createGlobalID((yyvsp[(1) - (1)].UIntVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 255:
-#line 2492 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{                   // Is it a named reference...?
-    yyval.ValIDVal = ValID::createLocalName(*yyvsp[0].StrVal);
-    delete yyvsp[0].StrVal;
+  ;}
+    break;
+
+  case 258:
+#line 2495 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {                   // Is it a named reference...?
+    (yyval.ValIDVal) = ValID::createLocalName(*(yyvsp[(1) - (1)].StrVal));
+    delete (yyvsp[(1) - (1)].StrVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 256:
-#line 2497 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{                   // Is it a named reference...?
-    yyval.ValIDVal = ValID::createGlobalName(*yyvsp[0].StrVal);
-    delete yyvsp[0].StrVal;
+  ;}
+    break;
+
+  case 259:
+#line 2500 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {                   // Is it a named reference...?
+    (yyval.ValIDVal) = ValID::createGlobalName(*(yyvsp[(1) - (1)].StrVal));
+    delete (yyvsp[(1) - (1)].StrVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 259:
-#line 2510 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 262:
+#line 2513 "/home/asl/proj/llvm/src/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;
+      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);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 260:
-#line 2519 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.FunctionVal = yyvsp[-1].FunctionVal;
+  ;}
+    break;
+
+  case 263:
+#line 2522 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 261:
-#line 2523 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ // Do not allow functions with 0 basic blocks   
-    yyval.FunctionVal = yyvsp[-1].FunctionVal;
+  ;}
+    break;
+
+  case 264:
+#line 2526 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { // Do not allow functions with 0 basic blocks   
+    (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 262:
-#line 2532 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    setValueName(yyvsp[0].TermInstVal, yyvsp[-1].StrVal);
+  ;}
+    break;
+
+  case 265:
+#line 2535 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    setValueName((yyvsp[(3) - (3)].TermInstVal), (yyvsp[(2) - (3)].StrVal));
     CHECK_FOR_ERROR
-    InsertValue(yyvsp[0].TermInstVal);
-    yyvsp[-2].BasicBlockVal->getInstList().push_back(yyvsp[0].TermInstVal);
-    yyval.BasicBlockVal = yyvsp[-2].BasicBlockVal;
+    InsertValue((yyvsp[(3) - (3)].TermInstVal));
+    (yyvsp[(1) - (3)].BasicBlockVal)->getInstList().push_back((yyvsp[(3) - (3)].TermInstVal));
+    (yyval.BasicBlockVal) = (yyvsp[(1) - (3)].BasicBlockVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 263:
-#line 2541 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (CastInst *CI1 = dyn_cast<CastInst>(yyvsp[0].InstVal))
+  ;}
+    break;
+
+  case 266:
+#line 2544 "/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].BasicBlockVal->getInstList().push_back(CI2);
-    yyvsp[-1].BasicBlockVal->getInstList().push_back(yyvsp[0].InstVal);
-    yyval.BasicBlockVal = yyvsp[-1].BasicBlockVal;
+          (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 264:
-#line 2550 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{          // Empty space between instruction lists
-    yyval.BasicBlockVal = defineBBVal(ValID::createLocalID(CurFun.NextValNum));
+  ;}
+    break;
+
+  case 267:
+#line 2553 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {          // Empty space between instruction lists
+    (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalID(CurFun.NextValNum));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 265:
-#line 2554 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{             // Labelled (named) basic block
-    yyval.BasicBlockVal = defineBBVal(ValID::createLocalName(*yyvsp[0].StrVal));
-    delete yyvsp[0].StrVal;
+  ;}
+    break;
+
+  case 268:
+#line 2557 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {             // Labelled (named) basic block
+    (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalName(*(yyvsp[(1) - (1)].StrVal)));
+    delete (yyvsp[(1) - (1)].StrVal);
     CHECK_FOR_ERROR
 
-  ;
-    break;}
-case 266:
-#line 2561 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{              // Return with a result...
-    yyval.TermInstVal = new ReturnInst(yyvsp[0].ValueVal);
-    CHECK_FOR_ERROR
-  ;
-    break;}
-case 267:
-#line 2565 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{                                    // Return with no result...
-    yyval.TermInstVal = new ReturnInst();
-    CHECK_FOR_ERROR
-  ;
-    break;}
-case 268:
-#line 2569 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{                           // Unconditional Branch...
-    BasicBlock* tmpBB = getBBVal(yyvsp[0].ValIDVal);
-    CHECK_FOR_ERROR
-    yyval.TermInstVal = new BranchInst(tmpBB);
-  ;
-    break;}
-case 269:
-#line 2574 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{  
-    assert(cast<IntegerType>(yyvsp[-7].PrimType)->getBitWidth() == 1 && "Not Bool?");
-    BasicBlock* tmpBBA = getBBVal(yyvsp[-3].ValIDVal);
-    CHECK_FOR_ERROR
-    BasicBlock* tmpBBB = getBBVal(yyvsp[0].ValIDVal);
-    CHECK_FOR_ERROR
-    Value* tmpVal = getVal(Type::Int1Ty, yyvsp[-6].ValIDVal);
-    CHECK_FOR_ERROR
-    yyval.TermInstVal = new BranchInst(tmpBBA, tmpBBB, tmpVal);
-  ;
-    break;}
-case 270:
-#line 2584 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    Value* tmpVal = getVal(yyvsp[-7].PrimType, yyvsp[-6].ValIDVal);
-    CHECK_FOR_ERROR
-    BasicBlock* tmpBB = getBBVal(yyvsp[-3].ValIDVal);
-    CHECK_FOR_ERROR
-    SwitchInst *S = new SwitchInst(tmpVal, tmpBB, yyvsp[-1].JumpTable->size());
-    yyval.TermInstVal = S;
+  ;}
+    break;
 
-    std::vector<std::pair<Constant*,BasicBlock*> >::iterator I = yyvsp[-1].JumpTable->begin(),
-      E = yyvsp[-1].JumpTable->end();
+  case 269:
+#line 2564 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {              // Return with a result...
+    (yyval.TermInstVal) = new ReturnInst((yyvsp[(2) - (2)].ValueVal));
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 270:
+#line 2568 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {                                    // Return with no result...
+    (yyval.TermInstVal) = new ReturnInst();
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 271:
+#line 2572 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {                           // Unconditional Branch...
+    BasicBlock* tmpBB = getBBVal((yyvsp[(3) - (3)].ValIDVal));
+    CHECK_FOR_ERROR
+    (yyval.TermInstVal) = new BranchInst(tmpBB);
+  ;}
+    break;
+
+  case 272:
+#line 2577 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {  
+    assert(cast<IntegerType>((yyvsp[(2) - (9)].PrimType))->getBitWidth() == 1 && "Not Bool?");
+    BasicBlock* tmpBBA = getBBVal((yyvsp[(6) - (9)].ValIDVal));
+    CHECK_FOR_ERROR
+    BasicBlock* tmpBBB = getBBVal((yyvsp[(9) - (9)].ValIDVal));
+    CHECK_FOR_ERROR
+    Value* tmpVal = getVal(Type::Int1Ty, (yyvsp[(3) - (9)].ValIDVal));
+    CHECK_FOR_ERROR
+    (yyval.TermInstVal) = new BranchInst(tmpBBA, tmpBBB, tmpVal);
+  ;}
+    break;
+
+  case 273:
+#line 2587 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    Value* tmpVal = getVal((yyvsp[(2) - (9)].PrimType), (yyvsp[(3) - (9)].ValIDVal));
+    CHECK_FOR_ERROR
+    BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (9)].ValIDVal));
+    CHECK_FOR_ERROR
+    SwitchInst *S = new SwitchInst(tmpVal, tmpBB, (yyvsp[(8) - (9)].JumpTable)->size());
+    (yyval.TermInstVal) = S;
+
+    std::vector<std::pair<Constant*,BasicBlock*> >::iterator I = (yyvsp[(8) - (9)].JumpTable)->begin(),
+      E = (yyvsp[(8) - (9)].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[-1].JumpTable;
+    delete (yyvsp[(8) - (9)].JumpTable);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 271:
-#line 2603 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    Value* tmpVal = getVal(yyvsp[-6].PrimType, yyvsp[-5].ValIDVal);
+  ;}
+    break;
+
+  case 274:
+#line 2606 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    Value* tmpVal = getVal((yyvsp[(2) - (8)].PrimType), (yyvsp[(3) - (8)].ValIDVal));
     CHECK_FOR_ERROR
-    BasicBlock* tmpBB = getBBVal(yyvsp[-2].ValIDVal);
+    BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (8)].ValIDVal));
     CHECK_FOR_ERROR
     SwitchInst *S = new SwitchInst(tmpVal, tmpBB, 0);
-    yyval.TermInstVal = S;
+    (yyval.TermInstVal) = S;
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 272:
-#line 2613 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 275:
+#line 2616 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
 
     // Handle the short syntax
     const PointerType *PFTy = 0;
     const FunctionType *Ty = 0;
-    if (!(PFTy = dyn_cast<PointerType>(yyvsp[-11].TypeVal->get())) ||
+    if (!(PFTy = dyn_cast<PointerType>((yyvsp[(3) - (14)].TypeVal)->get())) ||
         !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) {
       // Pull out the types of all of the arguments...
       std::vector<const Type*> ParamTypes;
       ParamAttrsVector Attrs;
-      if (yyvsp[-6].ParamAttrs != ParamAttr::None) {
-        ParamAttrsWithIndex PAWI; PAWI.index = 0; PAWI.attrs = yyvsp[-6].ParamAttrs;
+      if ((yyvsp[(8) - (14)].ParamAttrs) != ParamAttr::None) {
+        ParamAttrsWithIndex PAWI; PAWI.index = 0; PAWI.attrs = (yyvsp[(8) - (14)].ParamAttrs);
         Attrs.push_back(PAWI);
       }
-      ParamList::iterator I = yyvsp[-8].ParamList->begin(), E = yyvsp[-8].ParamList->end();
+      ParamList::iterator I = (yyvsp[(6) - (14)].ParamList)->begin(), E = (yyvsp[(6) - (14)].ParamList)->end();
       unsigned index = 1;
       for (; I != E; ++I, ++index) {
         const Type *Ty = I->Val->getType();
@@ -4560,22 +5649,22 @@
       ParamAttrsList *PAL = 0;
       if (!Attrs.empty())
         PAL = ParamAttrsList::get(Attrs);
-      Ty = FunctionType::get(yyvsp[-11].TypeVal->get(), ParamTypes, false, PAL);
+      Ty = FunctionType::get((yyvsp[(3) - (14)].TypeVal)->get(), ParamTypes, false, PAL);
       PFTy = PointerType::get(Ty);
     }
 
-    delete yyvsp[-11].TypeVal;
+    delete (yyvsp[(3) - (14)].TypeVal);
 
-    Value *V = getVal(PFTy, yyvsp[-10].ValIDVal);   // Get the function we're calling...
+    Value *V = getVal(PFTy, (yyvsp[(4) - (14)].ValIDVal));   // Get the function we're calling...
     CHECK_FOR_ERROR
-    BasicBlock *Normal = getBBVal(yyvsp[-3].ValIDVal);
+    BasicBlock *Normal = getBBVal((yyvsp[(11) - (14)].ValIDVal));
     CHECK_FOR_ERROR
-    BasicBlock *Except = getBBVal(yyvsp[0].ValIDVal);
+    BasicBlock *Except = getBBVal((yyvsp[(14) - (14)].ValIDVal));
     CHECK_FOR_ERROR
 
     // Check the arguments
     ValueList Args;
-    if (yyvsp[-8].ParamList->empty()) {                                   // Has no arguments?
+    if ((yyvsp[(6) - (14)].ParamList)->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 "
@@ -4585,7 +5674,7 @@
       // correctly!
       FunctionType::param_iterator I = Ty->param_begin();
       FunctionType::param_iterator E = Ty->param_end();
-      ParamList::iterator ArgI = yyvsp[-8].ParamList->begin(), ArgE = yyvsp[-8].ParamList->end();
+      ParamList::iterator ArgI = (yyvsp[(6) - (14)].ParamList)->begin(), ArgE = (yyvsp[(6) - (14)].ParamList)->end();
 
       for (; ArgI != ArgE && I != E; ++ArgI, ++I) {
         if (ArgI->Val->getType() != *I)
@@ -4604,340 +5693,363 @@
 
     // Create the InvokeInst
     InvokeInst *II = new InvokeInst(V, Normal, Except, Args.begin(), Args.end());
-    II->setCallingConv(yyvsp[-12].UIntVal);
-    yyval.TermInstVal = II;
-    delete yyvsp[-8].ParamList;
+    II->setCallingConv((yyvsp[(2) - (14)].UIntVal));
+    (yyval.TermInstVal) = II;
+    delete (yyvsp[(6) - (14)].ParamList);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 273:
-#line 2692 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.TermInstVal = new UnwindInst();
+  ;}
+    break;
+
+  case 276:
+#line 2695 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TermInstVal) = new UnwindInst();
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 274:
-#line 2696 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.TermInstVal = new UnreachableInst();
+  ;}
+    break;
+
+  case 277:
+#line 2699 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TermInstVal) = new UnreachableInst();
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 275:
-#line 2703 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.JumpTable = yyvsp[-5].JumpTable;
-    Constant *V = cast<Constant>(getExistingVal(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal));
+  ;}
+    break;
+
+  case 278:
+#line 2706 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.JumpTable) = (yyvsp[(1) - (6)].JumpTable);
+    Constant *V = cast<Constant>(getExistingVal((yyvsp[(2) - (6)].PrimType), (yyvsp[(3) - (6)].ValIDVal)));
     CHECK_FOR_ERROR
     if (V == 0)
       GEN_ERROR("May only switch on a constant pool value");
 
-    BasicBlock* tmpBB = getBBVal(yyvsp[0].ValIDVal);
+    BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.JumpTable->push_back(std::make_pair(V, tmpBB));
-  ;
-    break;}
-case 276:
-#line 2714 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.JumpTable = new std::vector<std::pair<Constant*, BasicBlock*> >();
-    Constant *V = cast<Constant>(getExistingVal(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal));
+    (yyval.JumpTable)->push_back(std::make_pair(V, tmpBB));
+  ;}
+    break;
+
+  case 279:
+#line 2717 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >();
+    Constant *V = cast<Constant>(getExistingVal((yyvsp[(1) - (5)].PrimType), (yyvsp[(2) - (5)].ValIDVal)));
     CHECK_FOR_ERROR
 
     if (V == 0)
       GEN_ERROR("May only switch on a constant pool value");
 
-    BasicBlock* tmpBB = getBBVal(yyvsp[0].ValIDVal);
+    BasicBlock* tmpBB = getBBVal((yyvsp[(5) - (5)].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.JumpTable->push_back(std::make_pair(V, tmpBB)); 
-  ;
-    break;}
-case 277:
-#line 2727 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+    (yyval.JumpTable)->push_back(std::make_pair(V, tmpBB)); 
+  ;}
+    break;
+
+  case 280:
+#line 2730 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     // Is this definition named?? if so, assign the name...
-    setValueName(yyvsp[0].InstVal, yyvsp[-1].StrVal);
+    setValueName((yyvsp[(2) - (2)].InstVal), (yyvsp[(1) - (2)].StrVal));
     CHECK_FOR_ERROR
-    InsertValue(yyvsp[0].InstVal);
-    yyval.InstVal = yyvsp[0].InstVal;
+    InsertValue((yyvsp[(2) - (2)].InstVal));
+    (yyval.InstVal) = (yyvsp[(2) - (2)].InstVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 278:
-#line 2737 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{    // Used for PHI nodes
+  ;}
+    break;
+
+  case 281:
+#line 2740 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {    // Used for PHI nodes
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-5].TypeVal)->getDescription());
-    yyval.PHIList = new std::list<std::pair<Value*, BasicBlock*> >();
-    Value* tmpVal = getVal(*yyvsp[-5].TypeVal, yyvsp[-3].ValIDVal);
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (6)].TypeVal))->getDescription());
+    (yyval.PHIList) = new std::list<std::pair<Value*, BasicBlock*> >();
+    Value* tmpVal = getVal(*(yyvsp[(1) - (6)].TypeVal), (yyvsp[(3) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    BasicBlock* tmpBB = getBBVal(yyvsp[-1].ValIDVal);
+    BasicBlock* tmpBB = getBBVal((yyvsp[(5) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.PHIList->push_back(std::make_pair(tmpVal, tmpBB));
-    delete yyvsp[-5].TypeVal;
-  ;
-    break;}
-case 279:
-#line 2748 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.PHIList = yyvsp[-6].PHIList;
-    Value* tmpVal = getVal(yyvsp[-6].PHIList->front().first->getType(), yyvsp[-3].ValIDVal);
+    (yyval.PHIList)->push_back(std::make_pair(tmpVal, tmpBB));
+    delete (yyvsp[(1) - (6)].TypeVal);
+  ;}
+    break;
+
+  case 282:
+#line 2751 "/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[-1].ValIDVal);
+    BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (7)].ValIDVal));
     CHECK_FOR_ERROR
-    yyvsp[-6].PHIList->push_back(std::make_pair(tmpVal, tmpBB));
-  ;
-    break;}
-case 280:
-#line 2758 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{    
+    (yyvsp[(1) - (7)].PHIList)->push_back(std::make_pair(tmpVal, tmpBB));
+  ;}
+    break;
+
+  case 283:
+#line 2761 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {    
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
     // Used for call and invoke instructions
-    yyval.ParamList = new ParamList();
-    ParamListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getVal(yyvsp[-2].TypeVal->get(), yyvsp[-1].ValIDVal);
-    yyval.ParamList->push_back(E);
-    delete yyvsp[-2].TypeVal;
-  ;
-    break;}
-case 281:
-#line 2767 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+    (yyval.ParamList) = new ParamList();
+    ParamListEntry E; E.Attrs = (yyvsp[(3) - (3)].ParamAttrs); E.Val = getVal((yyvsp[(1) - (3)].TypeVal)->get(), (yyvsp[(2) - (3)].ValIDVal));
+    (yyval.ParamList)->push_back(E);
+    delete (yyvsp[(1) - (3)].TypeVal);
+  ;}
+    break;
+
+  case 284:
+#line 2770 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     // Labels are only valid in ASMs
-    yyval.ParamList = new ParamList();
-    ParamListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getBBVal(yyvsp[-1].ValIDVal);
-    yyval.ParamList->push_back(E);
-  ;
-    break;}
-case 282:
-#line 2773 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+    (yyval.ParamList) = new ParamList();
+    ParamListEntry E; E.Attrs = (yyvsp[(3) - (3)].ParamAttrs); E.Val = getBBVal((yyvsp[(2) - (3)].ValIDVal));
+    (yyval.ParamList)->push_back(E);
+  ;}
+    break;
+
+  case 285:
+#line 2776 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
-    yyval.ParamList = yyvsp[-4].ParamList;
-    ParamListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getVal(yyvsp[-2].TypeVal->get(), yyvsp[-1].ValIDVal);
-    yyval.ParamList->push_back(E);
-    delete yyvsp[-2].TypeVal;
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
+    (yyval.ParamList) = (yyvsp[(1) - (5)].ParamList);
+    ParamListEntry E; E.Attrs = (yyvsp[(5) - (5)].ParamAttrs); E.Val = getVal((yyvsp[(3) - (5)].TypeVal)->get(), (yyvsp[(4) - (5)].ValIDVal));
+    (yyval.ParamList)->push_back(E);
+    delete (yyvsp[(3) - (5)].TypeVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 283:
-#line 2782 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ParamList = yyvsp[-4].ParamList;
-    ParamListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getBBVal(yyvsp[-1].ValIDVal);
-    yyval.ParamList->push_back(E);
+  ;}
+    break;
+
+  case 286:
+#line 2785 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ParamList) = (yyvsp[(1) - (5)].ParamList);
+    ParamListEntry E; E.Attrs = (yyvsp[(5) - (5)].ParamAttrs); E.Val = getBBVal((yyvsp[(4) - (5)].ValIDVal));
+    (yyval.ParamList)->push_back(E);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 284:
-#line 2788 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ParamList = new ParamList(); ;
-    break;}
-case 285:
-#line 2791 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.ValueList = new std::vector<Value*>(); ;
-    break;}
-case 286:
-#line 2792 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.ValueList = yyvsp[-2].ValueList;
-    yyval.ValueList->push_back(yyvsp[0].ValueVal);
+  ;}
+    break;
+
+  case 287:
+#line 2791 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamList) = new ParamList(); ;}
+    break;
+
+  case 288:
+#line 2794 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ValueList) = new std::vector<Value*>(); ;}
+    break;
+
+  case 289:
+#line 2795 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ValueList) = (yyvsp[(1) - (3)].ValueList);
+    (yyval.ValueList)->push_back((yyvsp[(3) - (3)].ValueVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 287:
-#line 2799 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.BoolVal = true;
+  ;}
+    break;
+
+  case 290:
+#line 2802 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 288:
-#line 2803 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.BoolVal = false;
+  ;}
+    break;
+
+  case 291:
+#line 2806 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 289:
-#line 2808 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 292:
+#line 2811 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
-    if (!(*yyvsp[-3].TypeVal)->isInteger() && !(*yyvsp[-3].TypeVal)->isFloatingPoint() && 
-        !isa<VectorType>((*yyvsp[-3].TypeVal).get()))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription());
+    if (!(*(yyvsp[(2) - (5)].TypeVal))->isInteger() && !(*(yyvsp[(2) - (5)].TypeVal))->isFloatingPoint() && 
+        !isa<VectorType>((*(yyvsp[(2) - (5)].TypeVal)).get()))
       GEN_ERROR(
         "Arithmetic operator requires integer, FP, or packed operands");
-    if (isa<VectorType>((*yyvsp[-3].TypeVal).get()) && 
-        (yyvsp[-4].BinaryOpVal == Instruction::URem || 
-         yyvsp[-4].BinaryOpVal == Instruction::SRem ||
-         yyvsp[-4].BinaryOpVal == Instruction::FRem))
-      GEN_ERROR("Remainder not supported on vector types");
-    Value* val1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal); 
+    Value* val1 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(3) - (5)].ValIDVal)); 
     CHECK_FOR_ERROR
-    Value* val2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal);
+    Value* val2 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(5) - (5)].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = BinaryOperator::create(yyvsp[-4].BinaryOpVal, val1, val2);
-    if (yyval.InstVal == 0)
+    (yyval.InstVal) = BinaryOperator::create((yyvsp[(1) - (5)].BinaryOpVal), val1, val2);
+    if ((yyval.InstVal) == 0)
       GEN_ERROR("binary operator returned null");
-    delete yyvsp[-3].TypeVal;
-  ;
-    break;}
-case 290:
-#line 2829 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+    delete (yyvsp[(2) - (5)].TypeVal);
+  ;}
+    break;
+
+  case 293:
+#line 2827 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
-    if (!(*yyvsp[-3].TypeVal)->isInteger()) {
-      if (Instruction::isShift(yyvsp[-4].BinaryOpVal) || !isa<VectorType>(yyvsp[-3].TypeVal->get()) ||
-          !cast<VectorType>(yyvsp[-3].TypeVal->get())->getElementType()->isInteger())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription());
+    if (!(*(yyvsp[(2) - (5)].TypeVal))->isInteger()) {
+      if (Instruction::isShift((yyvsp[(1) - (5)].BinaryOpVal)) || !isa<VectorType>((yyvsp[(2) - (5)].TypeVal)->get()) ||
+          !cast<VectorType>((yyvsp[(2) - (5)].TypeVal)->get())->getElementType()->isInteger())
         GEN_ERROR("Logical operator requires integral operands");
     }
-    Value* tmpVal1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal);
+    Value* tmpVal1 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(3) - (5)].ValIDVal));
     CHECK_FOR_ERROR
-    Value* tmpVal2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal);
+    Value* tmpVal2 = getVal(*(yyvsp[(2) - (5)].TypeVal), (yyvsp[(5) - (5)].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = BinaryOperator::create(yyvsp[-4].BinaryOpVal, tmpVal1, tmpVal2);
-    if (yyval.InstVal == 0)
+    (yyval.InstVal) = BinaryOperator::create((yyvsp[(1) - (5)].BinaryOpVal), tmpVal1, tmpVal2);
+    if ((yyval.InstVal) == 0)
       GEN_ERROR("binary operator returned null");
-    delete yyvsp[-3].TypeVal;
-  ;
-    break;}
-case 291:
-#line 2846 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+    delete (yyvsp[(2) - (5)].TypeVal);
+  ;}
+    break;
+
+  case 294:
+#line 2844 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
-    if (isa<VectorType>((*yyvsp[-3].TypeVal).get()))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
+    if (isa<VectorType>((*(yyvsp[(3) - (6)].TypeVal)).get()))
       GEN_ERROR("Vector types not supported by icmp instruction");
-    Value* tmpVal1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal);
+    Value* tmpVal1 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(4) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    Value* tmpVal2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal);
+    Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = CmpInst::create(yyvsp[-5].OtherOpVal, yyvsp[-4].IPredicate, tmpVal1, tmpVal2);
-    if (yyval.InstVal == 0)
+    (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].IPredicate), tmpVal1, tmpVal2);
+    if ((yyval.InstVal) == 0)
       GEN_ERROR("icmp operator returned null");
-    delete yyvsp[-3].TypeVal;
-  ;
-    break;}
-case 292:
-#line 2860 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+    delete (yyvsp[(3) - (6)].TypeVal);
+  ;}
+    break;
+
+  case 295:
+#line 2858 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
-    if (isa<VectorType>((*yyvsp[-3].TypeVal).get()))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
+    if (isa<VectorType>((*(yyvsp[(3) - (6)].TypeVal)).get()))
       GEN_ERROR("Vector types not supported by fcmp instruction");
-    Value* tmpVal1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal);
+    Value* tmpVal1 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(4) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    Value* tmpVal2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal);
+    Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = CmpInst::create(yyvsp[-5].OtherOpVal, yyvsp[-4].FPredicate, tmpVal1, tmpVal2);
-    if (yyval.InstVal == 0)
+    (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].FPredicate), tmpVal1, tmpVal2);
+    if ((yyval.InstVal) == 0)
       GEN_ERROR("fcmp operator returned null");
-    delete yyvsp[-3].TypeVal;
-  ;
-    break;}
-case 293:
-#line 2874 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+    delete (yyvsp[(3) - (6)].TypeVal);
+  ;}
+    break;
+
+  case 296:
+#line 2872 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
-    Value* Val = yyvsp[-2].ValueVal;
-    const Type* DestTy = yyvsp[0].TypeVal->get();
-    if (!CastInst::castIsValid(yyvsp[-3].CastOpVal, Val, DestTy))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription());
+    Value* Val = (yyvsp[(2) - (4)].ValueVal);
+    const Type* DestTy = (yyvsp[(4) - (4)].TypeVal)->get();
+    if (!CastInst::castIsValid((yyvsp[(1) - (4)].CastOpVal), Val, DestTy))
       GEN_ERROR("invalid cast opcode for cast from '" +
                 Val->getType()->getDescription() + "' to '" +
                 DestTy->getDescription() + "'"); 
-    yyval.InstVal = CastInst::create(yyvsp[-3].CastOpVal, Val, DestTy);
-    delete yyvsp[0].TypeVal;
-  ;
-    break;}
-case 294:
-#line 2886 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (yyvsp[-4].ValueVal->getType() != Type::Int1Ty)
+    (yyval.InstVal) = CastInst::create((yyvsp[(1) - (4)].CastOpVal), Val, DestTy);
+    delete (yyvsp[(4) - (4)].TypeVal);
+  ;}
+    break;
+
+  case 297:
+#line 2884 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    if ((yyvsp[(2) - (6)].ValueVal)->getType() != Type::Int1Ty)
       GEN_ERROR("select condition must be boolean");
-    if (yyvsp[-2].ValueVal->getType() != yyvsp[0].ValueVal->getType())
+    if ((yyvsp[(4) - (6)].ValueVal)->getType() != (yyvsp[(6) - (6)].ValueVal)->getType())
       GEN_ERROR("select value types should match");
-    yyval.InstVal = new SelectInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
+    (yyval.InstVal) = new SelectInst((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 295:
-#line 2894 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 298:
+#line 2892 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     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;
+      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);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 296:
-#line 2901 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (!ExtractElementInst::isValidOperands(yyvsp[-2].ValueVal, yyvsp[0].ValueVal))
+  ;}
+    break;
+
+  case 299:
+#line 2899 "/home/asl/proj/llvm/src/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].ValueVal, yyvsp[0].ValueVal);
+    (yyval.InstVal) = new ExtractElementInst((yyvsp[(2) - (4)].ValueVal), (yyvsp[(4) - (4)].ValueVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 297:
-#line 2907 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (!InsertElementInst::isValidOperands(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal))
+  ;}
+    break;
+
+  case 300:
+#line 2905 "/home/asl/proj/llvm/src/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[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
+    (yyval.InstVal) = new InsertElementInst((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 298:
-#line 2913 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (!ShuffleVectorInst::isValidOperands(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal))
+  ;}
+    break;
+
+  case 301:
+#line 2911 "/home/asl/proj/llvm/src/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[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
+    (yyval.InstVal) = new ShuffleVectorInst((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 299:
-#line 2919 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    const Type *Ty = yyvsp[0].PHIList->front().first->getType();
+  ;}
+    break;
+
+  case 302:
+#line 2917 "/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[0].PHIList->size());
-    while (yyvsp[0].PHIList->begin() != yyvsp[0].PHIList->end()) {
-      if (yyvsp[0].PHIList->front().first->getType() != Ty) 
+    (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[0].PHIList->front().first, yyvsp[0].PHIList->front().second);
-      yyvsp[0].PHIList->pop_front();
+      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[0].PHIList;  // Free the list...
+    delete (yyvsp[(2) - (2)].PHIList);  // Free the list...
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 300:
-#line 2935 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 303:
+#line 2933 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
 
     // Handle the short syntax
     const PointerType *PFTy = 0;
     const FunctionType *Ty = 0;
-    if (!(PFTy = dyn_cast<PointerType>(yyvsp[-5].TypeVal->get())) ||
+    if (!(PFTy = dyn_cast<PointerType>((yyvsp[(3) - (8)].TypeVal)->get())) ||
         !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) {
       // Pull out the types of all of the arguments...
       std::vector<const Type*> ParamTypes;
       ParamAttrsVector Attrs;
-      if (yyvsp[0].ParamAttrs != ParamAttr::None) {
-        ParamAttrsWithIndex PAWI; PAWI.index = 0; PAWI.attrs = yyvsp[0].ParamAttrs;
+      if ((yyvsp[(8) - (8)].ParamAttrs) != ParamAttr::None) {
+        ParamAttrsWithIndex PAWI; PAWI.index = 0; PAWI.attrs = (yyvsp[(8) - (8)].ParamAttrs);
         Attrs.push_back(PAWI);
       }
       unsigned index = 1;
-      ParamList::iterator I = yyvsp[-2].ParamList->begin(), E = yyvsp[-2].ParamList->end();
+      ParamList::iterator I = (yyvsp[(6) - (8)].ParamList)->begin(), E = (yyvsp[(6) - (8)].ParamList)->end();
       for (; I != E; ++I, ++index) {
         const Type *Ty = I->Val->getType();
         if (Ty == Type::VoidTy)
@@ -4953,11 +6065,11 @@
       if (!Attrs.empty())
         PAL = ParamAttrsList::get(Attrs);
 
-      Ty = FunctionType::get(yyvsp[-5].TypeVal->get(), ParamTypes, false, PAL);
+      Ty = FunctionType::get((yyvsp[(3) - (8)].TypeVal)->get(), ParamTypes, false, PAL);
       PFTy = PointerType::get(Ty);
     }
 
-    Value *V = getVal(PFTy, yyvsp[-4].ValIDVal);   // Get the function we're calling...
+    Value *V = getVal(PFTy, (yyvsp[(4) - (8)].ValIDVal));   // Get the function we're calling...
     CHECK_FOR_ERROR
 
     // Check for call to invalid intrinsic to avoid crashing later.
@@ -4971,7 +6083,7 @@
 
     // Check the arguments 
     ValueList Args;
-    if (yyvsp[-2].ParamList->empty()) {                                   // Has no arguments?
+    if ((yyvsp[(6) - (8)].ParamList)->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 "
@@ -4982,7 +6094,7 @@
       //
       FunctionType::param_iterator I = Ty->param_begin();
       FunctionType::param_iterator E = Ty->param_end();
-      ParamList::iterator ArgI = yyvsp[-2].ParamList->begin(), ArgE = yyvsp[-2].ParamList->end();
+      ParamList::iterator ArgI = (yyvsp[(6) - (8)].ParamList)->begin(), ArgE = (yyvsp[(6) - (8)].ParamList)->end();
 
       for (; ArgI != ArgE && I != E; ++ArgI, ++I) {
         if (ArgI->Val->getType() != *I)
@@ -4999,365 +6111,371 @@
     }
     // Create the call node
     CallInst *CI = new CallInst(V, Args.begin(), Args.end());
-    CI->setTailCall(yyvsp[-7].BoolVal);
-    CI->setCallingConv(yyvsp[-6].UIntVal);
-    yyval.InstVal = CI;
-    delete yyvsp[-2].ParamList;
-    delete yyvsp[-5].TypeVal;
+    CI->setTailCall((yyvsp[(1) - (8)].BoolVal));
+    CI->setCallingConv((yyvsp[(2) - (8)].UIntVal));
+    (yyval.InstVal) = CI;
+    delete (yyvsp[(6) - (8)].ParamList);
+    delete (yyvsp[(3) - (8)].TypeVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 301:
-#line 3019 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.InstVal = yyvsp[0].InstVal;
+  ;}
+    break;
+
+  case 304:
+#line 3017 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.InstVal) = (yyvsp[(1) - (1)].InstVal);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 302:
-#line 3024 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.BoolVal = true;
+  ;}
+    break;
+
+  case 305:
+#line 3022 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 303:
-#line 3028 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    yyval.BoolVal = false;
+  ;}
+    break;
+
+  case 306:
+#line 3026 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 304:
-#line 3035 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 307:
+#line 3033 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      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;
+      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);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 305:
-#line 3042 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 308:
+#line 3040 "/home/asl/proj/llvm/src/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);
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription());
+    Value* tmpVal = getVal((yyvsp[(4) - (6)].PrimType), (yyvsp[(5) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = new MallocInst(*yyvsp[-4].TypeVal, tmpVal, yyvsp[0].UIntVal);
-    delete yyvsp[-4].TypeVal;
-  ;
-    break;}
-case 306:
-#line 3050 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+    (yyval.InstVal) = new MallocInst(*(yyvsp[(2) - (6)].TypeVal), tmpVal, (yyvsp[(6) - (6)].UIntVal));
+    delete (yyvsp[(2) - (6)].TypeVal);
+  ;}
+    break;
+
+  case 309:
+#line 3048 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      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;
+      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);
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 307:
-#line 3057 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 310:
+#line 3055 "/home/asl/proj/llvm/src/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);
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription());
+    Value* tmpVal = getVal((yyvsp[(4) - (6)].PrimType), (yyvsp[(5) - (6)].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = new AllocaInst(*yyvsp[-4].TypeVal, tmpVal, yyvsp[0].UIntVal);
-    delete yyvsp[-4].TypeVal;
-  ;
-    break;}
-case 308:
-#line 3065 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
-    if (!isa<PointerType>(yyvsp[0].ValueVal->getType()))
+    (yyval.InstVal) = new AllocaInst(*(yyvsp[(2) - (6)].TypeVal), tmpVal, (yyvsp[(6) - (6)].UIntVal));
+    delete (yyvsp[(2) - (6)].TypeVal);
+  ;}
+    break;
+
+  case 311:
+#line 3063 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!isa<PointerType>((yyvsp[(2) - (2)].ValueVal)->getType()))
       GEN_ERROR("Trying to free nonpointer type " + 
-                     yyvsp[0].ValueVal->getType()->getDescription() + "");
-    yyval.InstVal = new FreeInst(yyvsp[0].ValueVal);
+                     (yyvsp[(2) - (2)].ValueVal)->getType()->getDescription() + "");
+    (yyval.InstVal) = new FreeInst((yyvsp[(2) - (2)].ValueVal));
     CHECK_FOR_ERROR
-  ;
-    break;}
-case 309:
-#line 3073 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+  ;}
+    break;
+
+  case 312:
+#line 3071 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
-    if (!isa<PointerType>(yyvsp[-2].TypeVal->get()))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
+    if (!isa<PointerType>((yyvsp[(3) - (5)].TypeVal)->get()))
       GEN_ERROR("Can't load from nonpointer type: " +
-                     (*yyvsp[-2].TypeVal)->getDescription());
-    if (!cast<PointerType>(yyvsp[-2].TypeVal->get())->getElementType()->isFirstClassType())
+                     (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
+    if (!cast<PointerType>((yyvsp[(3) - (5)].TypeVal)->get())->getElementType()->isFirstClassType())
       GEN_ERROR("Can't load from pointer of non-first-class type: " +
-                     (*yyvsp[-2].TypeVal)->getDescription());
-    Value* tmpVal = getVal(*yyvsp[-2].TypeVal, yyvsp[-1].ValIDVal);
+                     (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
+    Value* tmpVal = getVal(*(yyvsp[(3) - (5)].TypeVal), (yyvsp[(4) - (5)].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = new LoadInst(tmpVal, "", yyvsp[-4].BoolVal, yyvsp[0].UIntVal);
-    delete yyvsp[-2].TypeVal;
-  ;
-    break;}
-case 310:
-#line 3087 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+    (yyval.InstVal) = new LoadInst(tmpVal, "", (yyvsp[(1) - (5)].BoolVal), (yyvsp[(5) - (5)].UIntVal));
+    delete (yyvsp[(3) - (5)].TypeVal);
+  ;}
+    break;
+
+  case 313:
+#line 3085 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
-    const PointerType *PT = dyn_cast<PointerType>(yyvsp[-2].TypeVal->get());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (7)].TypeVal))->getDescription());
+    const PointerType *PT = dyn_cast<PointerType>((yyvsp[(5) - (7)].TypeVal)->get());
     if (!PT)
       GEN_ERROR("Can't store to a nonpointer type: " +
-                     (*yyvsp[-2].TypeVal)->getDescription());
+                     (*(yyvsp[(5) - (7)].TypeVal))->getDescription());
     const Type *ElTy = PT->getElementType();
-    if (ElTy != yyvsp[-4].ValueVal->getType())
-      GEN_ERROR("Can't store '" + yyvsp[-4].ValueVal->getType()->getDescription() +
+    if (ElTy != (yyvsp[(3) - (7)].ValueVal)->getType())
+      GEN_ERROR("Can't store '" + (yyvsp[(3) - (7)].ValueVal)->getType()->getDescription() +
                      "' into space of type '" + ElTy->getDescription() + "'");
 
-    Value* tmpVal = getVal(*yyvsp[-2].TypeVal, yyvsp[-1].ValIDVal);
+    Value* tmpVal = getVal(*(yyvsp[(5) - (7)].TypeVal), (yyvsp[(6) - (7)].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = new StoreInst(yyvsp[-4].ValueVal, tmpVal, yyvsp[-6].BoolVal, yyvsp[0].UIntVal);
-    delete yyvsp[-2].TypeVal;
-  ;
-    break;}
-case 311:
-#line 3104 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
-{
+    (yyval.InstVal) = new StoreInst((yyvsp[(3) - (7)].ValueVal), tmpVal, (yyvsp[(1) - (7)].BoolVal), (yyvsp[(7) - (7)].UIntVal));
+    delete (yyvsp[(5) - (7)].TypeVal);
+  ;}
+    break;
+
+  case 314:
+#line 3102 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+    {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
-    if (!isa<PointerType>(yyvsp[-2].TypeVal->get()))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (4)].TypeVal))->getDescription());
+    if (!isa<PointerType>((yyvsp[(2) - (4)].TypeVal)->get()))
       GEN_ERROR("getelementptr insn requires pointer operand");
 
-    if (!GetElementPtrInst::getIndexedType(*yyvsp[-2].TypeVal, yyvsp[0].ValueList->begin(), yyvsp[0].ValueList->end(), true))
+    if (!GetElementPtrInst::getIndexedType(*(yyvsp[(2) - (4)].TypeVal), (yyvsp[(4) - (4)].ValueList)->begin(), (yyvsp[(4) - (4)].ValueList)->end(), true))
       GEN_ERROR("Invalid getelementptr indices for type '" +
-                     (*yyvsp[-2].TypeVal)->getDescription()+ "'");
-    Value* tmpVal = getVal(*yyvsp[-2].TypeVal, yyvsp[-1].ValIDVal);
+                     (*(yyvsp[(2) - (4)].TypeVal))->getDescription()+ "'");
+    Value* tmpVal = getVal(*(yyvsp[(2) - (4)].TypeVal), (yyvsp[(3) - (4)].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = new GetElementPtrInst(tmpVal, yyvsp[0].ValueList->begin(), yyvsp[0].ValueList->end());
-    delete yyvsp[-2].TypeVal; 
-    delete yyvsp[0].ValueList;
-  ;
-    break;}
-}
-   /* the action file gets copied in in place of this dollarsign */
-#line 543 "/usr/share/bison.simple"
-
-  yyvsp -= yylen;
-  yyssp -= yylen;
-#ifdef YYLSP_NEEDED
-  yylsp -= yylen;
-#endif
+    (yyval.InstVal) = new GetElementPtrInst(tmpVal, (yyvsp[(4) - (4)].ValueList)->begin(), (yyvsp[(4) - (4)].ValueList)->end());
+    delete (yyvsp[(2) - (4)].TypeVal); 
+    delete (yyvsp[(4) - (4)].ValueList);
+  ;}
+    break;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "state stack now");
-      while (ssp1 != yyssp)
-	fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
+
+/* Line 1267 of yacc.c.  */
+#line 6265 "llvmAsmParser.tab.c"
+      default: break;
     }
-#endif
+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+  YYPOPSTACK (yylen);
+  yylen = 0;
+  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
-#ifdef YYLSP_NEEDED
-  yylsp++;
-  if (yylen == 0)
-    {
-      yylsp->first_line = yylloc.first_line;
-      yylsp->first_column = yylloc.first_column;
-      yylsp->last_line = (yylsp-1)->last_line;
-      yylsp->last_column = (yylsp-1)->last_column;
-      yylsp->text = 0;
-    }
-  else
-    {
-      yylsp->last_line = (yylsp+yylen-1)->last_line;
-      yylsp->last_column = (yylsp+yylen-1)->last_column;
-    }
-#endif
 
-  /* Now "shift" the result of the reduction.
-     Determine what state that goes to,
-     based on the state we popped back to
-     and the rule number reduced by.  */
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
 
   yyn = yyr1[yyn];
 
-  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
     yystate = yytable[yystate];
   else
-    yystate = yydefgoto[yyn - YYNTBASE];
+    yystate = yydefgoto[yyn - YYNTOKENS];
 
   goto yynewstate;
 
-yyerrlab:   /* here on detecting error */
 
-  if (! yyerrstatus)
-    /* If not already recovering from an error, report this error.  */
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
     {
       ++yynerrs;
+#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;
+	      }
+	  }
 
-#ifdef YYERROR_VERBOSE
-      yyn = yypact[yystate];
-
-      if (yyn > YYFLAG && yyn < YYLAST)
-	{
-	  int size = 0;
-	  char *msg;
-	  int x, count;
-
-	  count = 0;
-	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
-	  for (x = (yyn < 0 ? -yyn : 0);
-	       x < (sizeof(yytname) / sizeof(char *)); x++)
-	    if (yycheck[x + yyn] == x)
-	      size += strlen(yytname[x]) + 15, count++;
-	  msg = (char *) malloc(size + 15);
-	  if (msg != 0)
-	    {
-	      strcpy(msg, "parse error");
-
-	      if (count < 5)
-		{
-		  count = 0;
-		  for (x = (yyn < 0 ? -yyn : 0);
-		       x < (sizeof(yytname) / sizeof(char *)); x++)
-		    if (yycheck[x + yyn] == x)
-		      {
-			strcat(msg, count == 0 ? ", expecting `" : " or `");
-			strcat(msg, yytname[x]);
-			strcat(msg, "'");
-			count++;
-		      }
-		}
-	      yyerror(msg);
-	      free(msg);
-	    }
-	  else
-	    yyerror ("parse error; also virtual memory exceeded");
-	}
-      else
-#endif /* YYERROR_VERBOSE */
-	yyerror("parse error");
+	if (0 < yysize && yysize <= yymsg_alloc)
+	  {
+	    (void) yysyntax_error (yymsg, yystate, yychar);
+	    yyerror (yymsg);
+	  }
+	else
+	  {
+	    yyerror (YY_("syntax error"));
+	    if (yysize != 0)
+	      goto yyexhaustedlab;
+	  }
+      }
+#endif
     }
 
-  goto yyerrlab1;
-yyerrlab1:   /* here on error raised explicitly by an action */
+
 
   if (yyerrstatus == 3)
     {
-      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
+      /* If just tried and failed to reuse look-ahead token after an
+	 error, discard it.  */
 
-      /* return failure if at end of input */
-      if (yychar == YYEOF)
+      if (yychar <= YYEOF)
+	{
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+	}
+      else
+	{
+	  yydestruct ("Error: discarding",
+		      yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (/*CONSTCOND*/ 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);
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
 	YYABORT;
 
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
 
-      yychar = YYEMPTY;
+      yydestruct ("Error: popping",
+		  yystos[yystate], yyvsp);
+      YYPOPSTACK (1);
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
     }
 
-  /* Else will try to reuse lookahead token
-     after shifting the error token.  */
-
-  yyerrstatus = 3;		/* Each real token shifted decrements this */
-
-  goto yyerrhandle;
-
-yyerrdefault:  /* current state does not do anything special for the error token. */
-
-#if 0
-  /* This is wrong; only states that explicitly want error tokens
-     should shift them.  */
-  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
-  if (yyn) goto yydefault;
-#endif
-
-yyerrpop:   /* pop the current state because it cannot handle the error token */
-
-  if (yyssp == yyss) YYABORT;
-  yyvsp--;
-  yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
-  yylsp--;
-#endif
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "Error: state stack now");
-      while (ssp1 != yyssp)
-	fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
-
-yyerrhandle:
-
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yyerrdefault;
-
-  yyn += YYTERROR;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-    goto yyerrdefault;
-
-  yyn = yytable[yyn];
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-	goto yyerrpop;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-  else if (yyn == 0)
-    goto yyerrpop;
-
   if (yyn == YYFINAL)
     YYACCEPT;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting error token, ");
-#endif
-
   *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
+
+
+  /* Shift the error token.  */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
 
   yystate = yyn;
   goto yynewstate;
 
- yyacceptlab:
-  /* YYACCEPT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
-#endif
-    }
-  return 0;
 
- yyabortlab:
-  /* YYABORT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
 #endif
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
+  /* 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);
     }
-  return 1;
+#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);
 }
-#line 3121 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y"
+
+
+#line 3119 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
 
 
 // common code from the two 'RunVMAsmParser' functions
@@ -5438,3 +6556,4 @@
   GenerateError(errMsg);
   return 0;
 }
+
diff --git a/lib/AsmParser/llvmAsmParser.h.cvs b/lib/AsmParser/llvmAsmParser.h.cvs
index 84d8915..0914d95 100644
--- a/lib/AsmParser/llvmAsmParser.h.cvs
+++ b/lib/AsmParser/llvmAsmParser.h.cvs
@@ -1,4 +1,345 @@
-typedef union {
+/* A Bison parser, made by GNU Bison 2.3.  */
+
+/* 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.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, 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.  */
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     ESINT64VAL = 258,
+     EUINT64VAL = 259,
+     ESAPINTVAL = 260,
+     EUAPINTVAL = 261,
+     LOCALVAL_ID = 262,
+     GLOBALVAL_ID = 263,
+     FPVAL = 264,
+     VOID = 265,
+     INTTYPE = 266,
+     FLOAT = 267,
+     DOUBLE = 268,
+     X86_FP80 = 269,
+     FP128 = 270,
+     PPC_FP128 = 271,
+     LABEL = 272,
+     TYPE = 273,
+     LOCALVAR = 274,
+     GLOBALVAR = 275,
+     LABELSTR = 276,
+     STRINGCONSTANT = 277,
+     ATSTRINGCONSTANT = 278,
+     PCTSTRINGCONSTANT = 279,
+     ZEROINITIALIZER = 280,
+     TRUETOK = 281,
+     FALSETOK = 282,
+     BEGINTOK = 283,
+     ENDTOK = 284,
+     DECLARE = 285,
+     DEFINE = 286,
+     GLOBAL = 287,
+     CONSTANT = 288,
+     SECTION = 289,
+     ALIAS = 290,
+     VOLATILE = 291,
+     THREAD_LOCAL = 292,
+     TO = 293,
+     DOTDOTDOT = 294,
+     NULL_TOK = 295,
+     UNDEF = 296,
+     INTERNAL = 297,
+     LINKONCE = 298,
+     WEAK = 299,
+     APPENDING = 300,
+     DLLIMPORT = 301,
+     DLLEXPORT = 302,
+     EXTERN_WEAK = 303,
+     OPAQUE = 304,
+     EXTERNAL = 305,
+     TARGET = 306,
+     TRIPLE = 307,
+     ALIGN = 308,
+     DEPLIBS = 309,
+     CALL = 310,
+     TAIL = 311,
+     ASM_TOK = 312,
+     MODULE = 313,
+     SIDEEFFECT = 314,
+     CC_TOK = 315,
+     CCC_TOK = 316,
+     FASTCC_TOK = 317,
+     COLDCC_TOK = 318,
+     X86_STDCALLCC_TOK = 319,
+     X86_FASTCALLCC_TOK = 320,
+     DATALAYOUT = 321,
+     RET = 322,
+     BR = 323,
+     SWITCH = 324,
+     INVOKE = 325,
+     UNWIND = 326,
+     UNREACHABLE = 327,
+     ADD = 328,
+     SUB = 329,
+     MUL = 330,
+     UDIV = 331,
+     SDIV = 332,
+     FDIV = 333,
+     UREM = 334,
+     SREM = 335,
+     FREM = 336,
+     AND = 337,
+     OR = 338,
+     XOR = 339,
+     SHL = 340,
+     LSHR = 341,
+     ASHR = 342,
+     ICMP = 343,
+     FCMP = 344,
+     EQ = 345,
+     NE = 346,
+     SLT = 347,
+     SGT = 348,
+     SLE = 349,
+     SGE = 350,
+     ULT = 351,
+     UGT = 352,
+     ULE = 353,
+     UGE = 354,
+     OEQ = 355,
+     ONE = 356,
+     OLT = 357,
+     OGT = 358,
+     OLE = 359,
+     OGE = 360,
+     ORD = 361,
+     UNO = 362,
+     UEQ = 363,
+     UNE = 364,
+     MALLOC = 365,
+     ALLOCA = 366,
+     FREE = 367,
+     LOAD = 368,
+     STORE = 369,
+     GETELEMENTPTR = 370,
+     TRUNC = 371,
+     ZEXT = 372,
+     SEXT = 373,
+     FPTRUNC = 374,
+     FPEXT = 375,
+     BITCAST = 376,
+     UITOFP = 377,
+     SITOFP = 378,
+     FPTOUI = 379,
+     FPTOSI = 380,
+     INTTOPTR = 381,
+     PTRTOINT = 382,
+     PHI_TOK = 383,
+     SELECT = 384,
+     VAARG = 385,
+     EXTRACTELEMENT = 386,
+     INSERTELEMENT = 387,
+     SHUFFLEVECTOR = 388,
+     SIGNEXT = 389,
+     ZEROEXT = 390,
+     NORETURN = 391,
+     INREG = 392,
+     SRET = 393,
+     NOUNWIND = 394,
+     NOALIAS = 395,
+     BYVAL = 396,
+     NEST = 397,
+     CONST = 398,
+     PURE = 399,
+     DEFAULT = 400,
+     HIDDEN = 401,
+     PROTECTED = 402
+   };
+#endif
+/* Tokens.  */
+#define ESINT64VAL 258
+#define EUINT64VAL 259
+#define ESAPINTVAL 260
+#define EUAPINTVAL 261
+#define LOCALVAL_ID 262
+#define GLOBALVAL_ID 263
+#define FPVAL 264
+#define VOID 265
+#define INTTYPE 266
+#define FLOAT 267
+#define DOUBLE 268
+#define X86_FP80 269
+#define FP128 270
+#define PPC_FP128 271
+#define LABEL 272
+#define TYPE 273
+#define LOCALVAR 274
+#define GLOBALVAR 275
+#define LABELSTR 276
+#define STRINGCONSTANT 277
+#define ATSTRINGCONSTANT 278
+#define PCTSTRINGCONSTANT 279
+#define ZEROINITIALIZER 280
+#define TRUETOK 281
+#define FALSETOK 282
+#define BEGINTOK 283
+#define ENDTOK 284
+#define DECLARE 285
+#define DEFINE 286
+#define GLOBAL 287
+#define CONSTANT 288
+#define SECTION 289
+#define ALIAS 290
+#define VOLATILE 291
+#define THREAD_LOCAL 292
+#define TO 293
+#define DOTDOTDOT 294
+#define NULL_TOK 295
+#define UNDEF 296
+#define INTERNAL 297
+#define LINKONCE 298
+#define WEAK 299
+#define APPENDING 300
+#define DLLIMPORT 301
+#define DLLEXPORT 302
+#define EXTERN_WEAK 303
+#define OPAQUE 304
+#define EXTERNAL 305
+#define TARGET 306
+#define TRIPLE 307
+#define ALIGN 308
+#define DEPLIBS 309
+#define CALL 310
+#define TAIL 311
+#define ASM_TOK 312
+#define MODULE 313
+#define SIDEEFFECT 314
+#define CC_TOK 315
+#define CCC_TOK 316
+#define FASTCC_TOK 317
+#define COLDCC_TOK 318
+#define X86_STDCALLCC_TOK 319
+#define X86_FASTCALLCC_TOK 320
+#define DATALAYOUT 321
+#define RET 322
+#define BR 323
+#define SWITCH 324
+#define INVOKE 325
+#define UNWIND 326
+#define UNREACHABLE 327
+#define ADD 328
+#define SUB 329
+#define MUL 330
+#define UDIV 331
+#define SDIV 332
+#define FDIV 333
+#define UREM 334
+#define SREM 335
+#define FREM 336
+#define AND 337
+#define OR 338
+#define XOR 339
+#define SHL 340
+#define LSHR 341
+#define ASHR 342
+#define ICMP 343
+#define FCMP 344
+#define EQ 345
+#define NE 346
+#define SLT 347
+#define SGT 348
+#define SLE 349
+#define SGE 350
+#define ULT 351
+#define UGT 352
+#define ULE 353
+#define UGE 354
+#define OEQ 355
+#define ONE 356
+#define OLT 357
+#define OGT 358
+#define OLE 359
+#define OGE 360
+#define ORD 361
+#define UNO 362
+#define UEQ 363
+#define UNE 364
+#define MALLOC 365
+#define ALLOCA 366
+#define FREE 367
+#define LOAD 368
+#define STORE 369
+#define GETELEMENTPTR 370
+#define TRUNC 371
+#define ZEXT 372
+#define SEXT 373
+#define FPTRUNC 374
+#define FPEXT 375
+#define BITCAST 376
+#define UITOFP 377
+#define SITOFP 378
+#define FPTOUI 379
+#define FPTOSI 380
+#define INTTOPTR 381
+#define PTRTOINT 382
+#define PHI_TOK 383
+#define SELECT 384
+#define VAARG 385
+#define EXTRACTELEMENT 386
+#define INSERTELEMENT 387
+#define SHUFFLEVECTOR 388
+#define SIGNEXT 389
+#define ZEROEXT 390
+#define NORETURN 391
+#define INREG 392
+#define SRET 393
+#define NOUNWIND 394
+#define NOALIAS 395
+#define BYVAL 396
+#define NEST 397
+#define CONST 398
+#define PURE 399
+#define DEFAULT 400
+#define HIDDEN 401
+#define PROTECTED 402
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+#line 968 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
+{
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
   llvm::BasicBlock                       *BasicBlockVal;
@@ -43,150 +384,14 @@
   llvm::Instruction::OtherOps       OtherOpVal;
   llvm::ICmpInst::Predicate         IPredicate;
   llvm::FCmpInst::Predicate         FPredicate;
-} YYSTYPE;
-#define	ESINT64VAL	257
-#define	EUINT64VAL	258
-#define	ESAPINTVAL	259
-#define	EUAPINTVAL	260
-#define	LOCALVAL_ID	261
-#define	GLOBALVAL_ID	262
-#define	FPVAL	263
-#define	VOID	264
-#define	INTTYPE	265
-#define	FLOAT	266
-#define	DOUBLE	267
-#define	X86_FP80	268
-#define	FP128	269
-#define	PPC_FP128	270
-#define	LABEL	271
-#define	TYPE	272
-#define	LOCALVAR	273
-#define	GLOBALVAR	274
-#define	LABELSTR	275
-#define	STRINGCONSTANT	276
-#define	ATSTRINGCONSTANT	277
-#define	PCTSTRINGCONSTANT	278
-#define	ZEROINITIALIZER	279
-#define	TRUETOK	280
-#define	FALSETOK	281
-#define	BEGINTOK	282
-#define	ENDTOK	283
-#define	DECLARE	284
-#define	DEFINE	285
-#define	GLOBAL	286
-#define	CONSTANT	287
-#define	SECTION	288
-#define	ALIAS	289
-#define	VOLATILE	290
-#define	THREAD_LOCAL	291
-#define	TO	292
-#define	DOTDOTDOT	293
-#define	NULL_TOK	294
-#define	UNDEF	295
-#define	INTERNAL	296
-#define	LINKONCE	297
-#define	WEAK	298
-#define	APPENDING	299
-#define	DLLIMPORT	300
-#define	DLLEXPORT	301
-#define	EXTERN_WEAK	302
-#define	OPAQUE	303
-#define	EXTERNAL	304
-#define	TARGET	305
-#define	TRIPLE	306
-#define	ALIGN	307
-#define	DEPLIBS	308
-#define	CALL	309
-#define	TAIL	310
-#define	ASM_TOK	311
-#define	MODULE	312
-#define	SIDEEFFECT	313
-#define	CC_TOK	314
-#define	CCC_TOK	315
-#define	FASTCC_TOK	316
-#define	COLDCC_TOK	317
-#define	X86_STDCALLCC_TOK	318
-#define	X86_FASTCALLCC_TOK	319
-#define	DATALAYOUT	320
-#define	RET	321
-#define	BR	322
-#define	SWITCH	323
-#define	INVOKE	324
-#define	UNWIND	325
-#define	UNREACHABLE	326
-#define	ADD	327
-#define	SUB	328
-#define	MUL	329
-#define	UDIV	330
-#define	SDIV	331
-#define	FDIV	332
-#define	UREM	333
-#define	SREM	334
-#define	FREM	335
-#define	AND	336
-#define	OR	337
-#define	XOR	338
-#define	SHL	339
-#define	LSHR	340
-#define	ASHR	341
-#define	ICMP	342
-#define	FCMP	343
-#define	EQ	344
-#define	NE	345
-#define	SLT	346
-#define	SGT	347
-#define	SLE	348
-#define	SGE	349
-#define	ULT	350
-#define	UGT	351
-#define	ULE	352
-#define	UGE	353
-#define	OEQ	354
-#define	ONE	355
-#define	OLT	356
-#define	OGT	357
-#define	OLE	358
-#define	OGE	359
-#define	ORD	360
-#define	UNO	361
-#define	UEQ	362
-#define	UNE	363
-#define	MALLOC	364
-#define	ALLOCA	365
-#define	FREE	366
-#define	LOAD	367
-#define	STORE	368
-#define	GETELEMENTPTR	369
-#define	TRUNC	370
-#define	ZEXT	371
-#define	SEXT	372
-#define	FPTRUNC	373
-#define	FPEXT	374
-#define	BITCAST	375
-#define	UITOFP	376
-#define	SITOFP	377
-#define	FPTOUI	378
-#define	FPTOSI	379
-#define	INTTOPTR	380
-#define	PTRTOINT	381
-#define	PHI_TOK	382
-#define	SELECT	383
-#define	VAARG	384
-#define	EXTRACTELEMENT	385
-#define	INSERTELEMENT	386
-#define	SHUFFLEVECTOR	387
-#define	SIGNEXT	388
-#define	ZEROEXT	389
-#define	NORETURN	390
-#define	INREG	391
-#define	SRET	392
-#define	NOUNWIND	393
-#define	NOALIAS	394
-#define	BYVAL	395
-#define	NEST	396
-#define	DEFAULT	397
-#define	HIDDEN	398
-#define	PROTECTED	399
-
+}
+/* Line 1489 of yacc.c.  */
+#line 390 "llvmAsmParser.tab.h"
+	YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
 
 extern YYSTYPE llvmAsmlval;
+
diff --git a/lib/AsmParser/llvmAsmParser.y.cvs b/lib/AsmParser/llvmAsmParser.y.cvs
index 7084538..4c9bed0 100644
--- a/lib/AsmParser/llvmAsmParser.y.cvs
+++ b/lib/AsmParser/llvmAsmParser.y.cvs
@@ -1113,6 +1113,7 @@
 
 // Function Attributes
 %token SIGNEXT ZEROEXT NORETURN INREG SRET NOUNWIND NOALIAS BYVAL NEST
+%token CONST PURE
 
 // Visibility Styles
 %token DEFAULT HIDDEN PROTECTED
@@ -1256,6 +1257,8 @@
               | NOUNWIND { $$ = ParamAttr::NoUnwind; }
               | ZEROEXT  { $$ = ParamAttr::ZExt;     }
               | SIGNEXT  { $$ = ParamAttr::SExt;     }
+              | PURE     { $$ = ParamAttr::Pure;     }
+              | CONST    { $$ = ParamAttr::Const;    }
               ;
 
 OptFuncAttrs  : /* empty */ { $$ = ParamAttr::None; }
@@ -2812,11 +2815,6 @@
         !isa<VectorType>((*$2).get()))
       GEN_ERROR(
         "Arithmetic operator requires integer, FP, or packed operands");
-    if (isa<VectorType>((*$2).get()) && 
-        ($1 == Instruction::URem || 
-         $1 == Instruction::SRem ||
-         $1 == Instruction::FRem))
-      GEN_ERROR("Remainder not supported on vector types");
     Value* val1 = getVal(*$2, $3); 
     CHECK_FOR_ERROR
     Value* val2 = getVal(*$2, $5);
