diff --git a/lib/AsmParser/Lexer.cpp.cvs b/lib/AsmParser/Lexer.cpp.cvs
index 51f989e..d102617 100644
--- a/lib/AsmParser/Lexer.cpp.cvs
+++ b/lib/AsmParser/Lexer.cpp.cvs
@@ -17,10 +17,14 @@
 #define yylineno llvmAsmlineno
 
 #line 20 "Lexer.cpp"
-/* A lexical scanner generated by flex*/
+/* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
+<<<<<<< Lexer.cpp.cvs
  * $Header$
+=======
+ * $Header$
+>>>>>>> 1.27
  */
 
 #define FLEX_SCANNER
@@ -28,7 +32,6 @@
 #define YY_FLEX_MINOR_VERSION 5
 
 #include <stdio.h>
-#include <unistd.h>
 
 
 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
@@ -42,6 +45,7 @@
 #ifdef __cplusplus
 
 #include <stdlib.h>
+#include <unistd.h>
 
 /* Use prototypes in function declarations. */
 #define YY_USE_PROTOS
@@ -153,15 +157,6 @@
 
 #define unput(c) yyunput( c, yytext_ptr )
 
-/* Some routines like yy_flex_realloc() are emitted as static but are
-   not called by all lexers. This generates warnings in some compilers,
-   notably GCC. Arrange to suppress these. */
-#ifdef __GNUC__
-#define YY_MAY_BE_UNUSED __attribute__((unused))
-#else
-#define YY_MAY_BE_UNUSED
-#endif
-
 /* The following is because we cannot portably get our hands on size_t
  * (without autoconf's help, which isn't available because we want
  * flex-generated scanners to compile on their own).
@@ -268,7 +263,7 @@
 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
 
 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED;
+static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
 static void yy_flex_free YY_PROTO(( void * ));
 
 #define yy_new_buffer yy_create_buffer
@@ -317,37 +312,36 @@
 	*yy_cp = '\0'; \
 	yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 135
-#define YY_END_OF_BUFFER 136
-static yyconst short int yy_acclist[215] =
+#define YY_NUM_RULES 131
+#define YY_END_OF_BUFFER 132
+static yyconst short int yy_acclist[211] =
     {   0,
-      136,  134,  135,  133,  134,  135,  133,  135,  134,  135,
-      134,  135,  134,  135,  134,  135,  134,  135,  134,  135,
-      126,  134,  135,  126,  134,  135,    1,  134,  135,  134,
-      135,  134,  135,  134,  135,  134,  135,  134,  135,  134,
-      135,  134,  135,  134,  135,  134,  135,  134,  135,  134,
-      135,  134,  135,  134,  135,  134,  135,  134,  135,  134,
-      135,  134,  135,  134,  135,  134,  135,  134,  135,  134,
-      135,  134,  135,  125,  123,  122,  122,  129,  127,  131,
-      126,    1,  108,   40,   68,   53,   69,   64,   24,  125,
-      122,  122,  130,  131,   21,  131,  132,   54,   63,   38,
+      132,  130,  131,  129,  130,  131,  129,  131,  130,  131,
+      130,  131,  130,  131,  130,  131,  130,  131,  130,  131,
+      122,  130,  131,  122,  130,  131,    1,  130,  131,  130,
+      131,  130,  131,  130,  131,  130,  131,  130,  131,  130,
+      131,  130,  131,  130,  131,  130,  131,  130,  131,  130,
+      131,  130,  131,  130,  131,  130,  131,  130,  131,  130,
+      131,  130,  131,  130,  131,  130,  131,  130,  131,  130,
+      131,  130,  131,  121,  119,  118,  118,  125,  123,  127,
+      122,    1,  104,   36,   64,   49,   65,   60,   24,  121,
+      118,  118,  126,  127,   21,  127,  128,   50,   59,   34,
 
-       33,   41,    3,   56,   78,   83,   81,   82,   80,   79,
-       84,   88,  107,   73,   71,  103,   72,   70,   55,   86,
-       77,   75,   76,   74,   87,   85,   65,  124,  131,  131,
-      105,   89,   67,   59,  115,   62,   66,  116,  104,   23,
-      128,   58,   92,   61,   25,    4,   51,   57,   60,   47,
-       12,   91,  131,   35,    2,    5,   48,   94,   50,  117,
-       90,   22,  114,   44,    7,   49,   29,   43,   98,   97,
-        8,   16,  110,   32,  113,   37,   52,  102,   96,  109,
-       26,   27,   95,  111,  106,  101,   42,    6,   28,   93,
-       36,    9,   18,   10,   99,   11,  100,   34,   13,   15,
+       37,    3,   52,   74,   79,   77,   78,   76,   75,   80,
+       84,  103,   69,   67,   99,   68,   66,   51,   82,   73,
+       71,   72,   70,   83,   81,   61,  120,  127,  127,  101,
+       85,   63,   55,  111,   58,   62,  112,  100,   23,  124,
+       54,   88,   57,   25,    4,   47,   53,   56,   43,   12,
+       87,  127,   31,    2,    5,   44,   90,   46,  113,   86,
+       22,  110,   40,    7,   45,   39,   94,   93,    8,   16,
+      106,  109,   33,   48,   98,   92,  105,   26,   27,   91,
+      107,  102,   97,   38,    6,   28,   89,   32,    9,   18,
+       10,   95,   11,   96,   30,   13,   15,   14,   29,   35,
 
-       14,   31,   39,   17,   30,  112,  118,  120,  121,   45,
-      119,   19,   46,   20
+       17,  108,  114,  116,  117,   41,  115,   19,   42,   20
     } ;
 
-static yyconst short int yy_accept[555] =
+static yyconst short int yy_accept[537] =
     {   0,
         1,    1,    1,    2,    4,    7,    9,   11,   13,   15,
        17,   19,   21,   24,   27,   30,   32,   34,   36,   38,
@@ -361,55 +355,53 @@
        87,   88,   88,   88,   88,   88,   88,   88,   89,   89,
 
        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
-       89,   89,   89,   89,   89,   90,   90,   90,   90,   90,
+       89,   89,   89,   89,   90,   90,   90,   90,   90,   90,
        90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   91,   92,   94,   95,   96,   97,   97,   98,   99,
-       99,   99,  100,  100,  100,  101,  101,  102,  102,  102,
+       91,   92,   94,   95,   96,   97,   97,   98,   99,   99,
+       99,  100,  100,  100,  101,  101,  101,  101,  102,  102,
+      102,  102,  102,  102,  102,  102,  102,  102,  103,  103,
       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
-      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
-      104,  104,  104,  104,  104,  105,  105,  106,  107,  108,
-      109,  110,  111,  111,  112,  113,  113,  113,  114,  114,
+      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
+      103,  103,  104,  104,  105,  106,  107,  108,  109,  110,
+      110,  111,  112,  112,  113,  113,  113,  113,  113,  113,
 
-      114,  114,  114,  114,  115,  116,  117,  117,  117,  117,
-      118,  119,  119,  119,  120,  120,  120,  120,  120,  120,
-      120,  120,  121,  122,  123,  123,  124,  125,  125,  126,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  128,
-      128,  128,  129,  130,  130,  130,  130,  131,  131,  131,
-      131,  132,  132,  132,  133,  133,  133,  133,  133,  133,
-      133,  133,  133,  133,  133,  133,  133,  133,  133,  133,
-      134,  135,  135,  135,  135,  135,  136,  137,  137,  137,
-      137,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      139,  140,  140,  140,  141,  141,  141,  141,  142,  143,
+      114,  115,  116,  116,  116,  116,  117,  118,  118,  118,
+      119,  119,  119,  119,  119,  119,  119,  119,  120,  121,
+      122,  122,  123,  124,  124,  125,  126,  126,  126,  126,
+      126,  126,  126,  126,  126,  127,  127,  127,  128,  129,
+      129,  129,  129,  130,  130,  130,  130,  131,  131,  131,
+      132,  132,  132,  132,  132,  132,  132,  132,  132,  132,
+      132,  132,  132,  132,  132,  133,  134,  134,  134,  134,
+      134,  135,  136,  136,  136,  136,  137,  137,  137,  137,
+      137,  137,  137,  137,  138,  139,  139,  139,  140,  140,
+      140,  141,  142,  142,  142,  143,  143,  143,  143,  144,
 
-      143,  143,  144,  144,  144,  144,  145,  145,  145,  146,
-      146,  146,  147,  147,  148,  149,  149,  149,  149,  149,
-      150,  150,  151,  151,  152,  152,  152,  153,  154,  155,
-      155,  155,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  157,  157,  158,
-      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
-      159,  159,  160,  160,  160,  160,  160,  160,  160,  160,
-      160,  160,  160,  160,  160,  161,  161,  161,  161,  162,
-      162,  163,  163,  163,  163,  163,  163,  163,  163,  164,
-      164,  164,  165,  165,  165,  165,  165,  166,  166,  166,
+      144,  144,  145,  145,  145,  146,  146,  147,  148,  148,
+      148,  148,  148,  149,  149,  150,  150,  151,  151,  151,
+      152,  153,  154,  154,  154,  155,  155,  155,  155,  155,
+      155,  155,  155,  155,  155,  155,  155,  155,  155,  156,
+      156,  157,  158,  158,  158,  158,  158,  158,  158,  158,
+      158,  158,  158,  158,  159,  159,  159,  159,  159,  159,
+      159,  159,  159,  159,  159,  160,  160,  160,  160,  161,
+      161,  162,  162,  162,  162,  162,  162,  162,  162,  163,
+      163,  163,  164,  164,  164,  164,  164,  165,  165,  165,
+      165,  166,  166,  166,  167,  168,  169,  169,  169,  170,
 
-      166,  167,  168,  168,  168,  169,  170,  171,  171,  171,
-      172,  173,  173,  173,  173,  173,  174,  174,  175,  176,
-      177,  178,  178,  178,  178,  179,  179,  179,  180,  181,
-      182,  183,  184,  184,  185,  186,  186,  186,  186,  186,
-      186,  187,  187,  188,  188,  189,  190,  190,  190,  190,
-      190,  190,  191,  191,  191,  191,  191,  191,  191,  191,
-      191,  192,  192,  192,  192,  192,  192,  192,  192,  192,
-      193,  193,  193,  193,  193,  194,  194,  194,  194,  194,
-      195,  196,  197,  197,  198,  198,  198,  198,  199,  199,
-      199,  199,  200,  200,  201,  202,  202,  202,  202,  202,
+      171,  171,  171,  171,  171,  172,  172,  173,  174,  175,
+      175,  175,  176,  176,  176,  177,  178,  179,  180,  181,
+      181,  182,  183,  183,  183,  183,  183,  183,  184,  184,
+      185,  185,  186,  187,  187,  187,  187,  187,  187,  188,
+      188,  188,  188,  188,  188,  188,  188,  189,  189,  189,
+      189,  189,  189,  189,  189,  189,  190,  190,  190,  190,
+      190,  191,  191,  191,  191,  191,  192,  193,  194,  195,
+      195,  195,  195,  196,  196,  196,  196,  197,  197,  198,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  200,  200,  200,  200,  200,  200,  200,  201,
 
-      202,  202,  202,  202,  202,  202,  202,  202,  203,  203,
-      203,  203,  203,  203,  203,  203,  204,  204,  204,  204,
-      204,  205,  205,  205,  205,  205,  206,  206,  207,  207,
-      207,  207,  207,  207,  207,  207,  207,  207,  207,  207,
-      207,  208,  208,  209,  210,  210,  211,  211,  212,  213,
-      214,  214,  215,  215
+      201,  201,  201,  201,  202,  202,  202,  202,  202,  202,
+      203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
+      203,  203,  203,  204,  204,  205,  206,  206,  207,  207,
+      208,  209,  210,  210,  211,  211
     } ;
 
 static yyconst int yy_ec[256] =
@@ -453,416 +445,404 @@
         3,    3,    3
     } ;
 
-static yyconst short int yy_base[559] =
+static yyconst short int yy_base[541] =
     {   0,
-        0,    0, 1200, 1201, 1201, 1201, 1195, 1184,   36,   40,
+        0,    0, 1164, 1165, 1165, 1165, 1159, 1148,   36,   40,
        44,   50,   56,   62,    0,   63,   66,   81,   89,   47,
-      108,   91,   77,  134,   92,  119,   93,  152,  126,  109,
-      178,  154,  209,  135,  111,  146,  112, 1193, 1201, 1182,
-     1201,    0,  159,  198,  215,  236,   70,  241,  256,  261,
-        0,   68,  147,  128,  165,  176,   73,  262, 1181,   31,
-      170,  166,   48,   49,  265,  185,  101,  198, 1180,  180,
-      227,  207,  208,  225,  274,  139,  276,  228,  278,  272,
-      229,  277,  280,  281,  290,  293,  282,  291,  292,  295,
-     1179,  301,  122,  308,  309,  311,  314,  304,  315,  321,
+      108,   91,   77,  134,   92,  119,   93,  152,   72,  109,
+      178,  121,  209,  120,  135,  146,  147, 1157, 1165, 1146,
+     1165,    0,  161,  183,  199,  215,   70,  235,  250,  255,
+        0,   68,  140,  128,  165,  154,  101,   46, 1145,   96,
+      168,  206,  162,  177,  259,  188,   49,  208, 1144,  219,
+      267,  176,  172,  207,  268,  227,  256,  270,  229,  264,
+      274,  273,  272,  287,   31,  296,  228,  283,  276,  285,
+     1143,  299,  286,  302,  303,  304,  305,  307,  308,  309,
 
-      322,  323,  324,  325,  326,  327,  330,  329,  335,  339,
-      342,  349,  356,  357, 1178,  359,  347,  361,  362,  364,
-      340,  367,  371,  368,  215,  381,  386,  395,  384,  385,
-     1177,    0,  402,  411, 1176,  425,  442,    0, 1175,  168,
-      411, 1174,  404,  416, 1173,  375, 1172,  419,  402, 1171,
-      443,  427,  444,  445,  403,  433,  415,  447,  448,  452,
-      455,  457,  458,  459,  461,  462,  463,  466,  473,  468,
-      469,  472,  474,  470,  483,  488,  491,  494,  496,  495,
-      498,  499,  500,  501, 1170,  502, 1169, 1168, 1167, 1166,
-     1165, 1164,  504, 1163, 1162,  505,  507, 1161,  535,  514,
+      316,  317,  318,  320,  319,  322,  332,  329,  324,  323,
+      343,  345,  348, 1142,  350,  334,  351,  336,  357,  354,
+      359,  367,  362,  239,  379,  360,  372,  378,  381, 1141,
+        0,  399,  407, 1140,  421,  438,    0, 1139,  373,  383,
+     1138,  391,  386, 1137,  409,  426,  412, 1136,  415,  389,
+      439,  440,  413,  429,  441,  444,  443, 1135,  446,  425,
+      450,  451,  452,  454,  387,  458,  462,  460,  466,  474,
+      461,  468,  475,  481,  485,  486,  487,  488,  489,  491,
+      492, 1134,  493, 1133, 1132, 1131, 1130, 1129, 1128,  494,
+     1127, 1126,  497, 1125,  525,  500,  513,  498,  515, 1124,
 
-      512,  519,  513, 1160, 1159, 1158,  516,  546,  529, 1157,
-     1156,  548,  549, 1155,  527,  508,  551,  552,  556,  554,
-      553, 1154, 1153, 1152,  557, 1151, 1150,  558, 1149, 1148,
-      559,  561,  560,  572,  579,  580,  569,  582, 1147,  566,
-      581, 1201,  592,  600,  609,  613,  618,  602,  620,  621,
-     1146,  622,  623, 1145,  624,  603,  625,  629,  630,  632,
-      633,  634,  636,  640,  637,  641,  645,  647,  651, 1144,
-     1143,  643,  653,  657,  654, 1142, 1141,  659,  660,  663,
-     1140,  664,  667,  668,  669,  670,  671,  675,  677, 1139,
-     1138,  680,  682, 1137,  683,  685,  691,    0, 1136,  690,
+     1123, 1122,  499,  502,  519, 1121, 1120,  526,  518, 1119,
+      517,  529,  541,  543,  546,  545,  547, 1118, 1117, 1116,
+      548, 1115, 1114,  549, 1113, 1112,  550,  551,  553,  556,
+      557,  568,  560,  567, 1111,  570,  575, 1165,  580,  588,
+      594,  603,  608,  580,  505,  594, 1110,  595,  609, 1109,
+      610,  596,  613,  615,  616,  618,  620,  622,  623,  625,
+      624,  626,  628,  627, 1108, 1107,  629,  632,  638,  641,
+     1106, 1105,  642,  643,  644, 1104,  647,  646,  650,  651,
+      654,  658,  659, 1103, 1102,  661,  663, 1101,  664,  666,
+        0, 1100,  670,  674, 1099,  672,  676,  680, 1098,  686,
 
-      694, 1135,  695,  702,  696, 1134,  704,  710, 1133,  712,
-      699, 1132,  715, 1131, 1130,  716,  718,  719,  720, 1129,
-      723, 1128,  725, 1127,  729,  727, 1126,  734, 1125,  736,
-      592, 1124,  734,  735,  738,  745,  749,  746,  750,  747,
-      755,  757,  760,  758,  761,  763, 1123,  764, 1122, 1121,
-      766,  768,  765,  777,  772,  773,  780,  762,  783,  784,
-      788, 1120,  789,  792,  791,  793,  795,  799,  794,  805,
-      809,  810,  811,  812, 1119,  814,  813,  815, 1118,  816,
-     1117,  820,  822,  817,  829,  833,  818,  834, 1116,  837,
-      839, 1115,  840,  845,  819,  844, 1114,  843,  846,  848,
+      687, 1097,  689,  691, 1096,  692, 1095, 1094,  693,  697,
+      696,  700, 1093,  702, 1092,  704, 1091,  708,  709, 1090,
+      714, 1089,  714,  716, 1088,  715,  721,  720,  726,  729,
+      731,  732,  736,  735,  738,  739,  743,  740, 1087,  744,
+     1086, 1085,  745,  746,  749,  753,  750,  755,  761,  756,
+      763,  764,  767, 1084,  768,  771,  773,  775,  774,  770,
+      769,  781,  789,  786, 1083,  790,  791,  794, 1082,  793,
+     1081,  797,  798,  800,  795,  810,  801,  809, 1080,  807,
+      813, 1079,  816,  818,  817,  819, 1078,  821,  822,  823,
+     1077,  827,  829, 1076, 1075, 1074,  830,  834, 1073, 1072,
 
-     1113, 1112,  854,  849, 1111, 1110, 1109,  856,  855, 1108,
-     1107,  860,  861,  868,  867, 1106,  874, 1105, 1104, 1103,
-     1102,  875,  876,  877, 1101,  878,  879, 1100, 1099, 1098,
-     1097, 1096,  880, 1095, 1094,  882,  883,  891,  885,  884,
-     1093,  886, 1092,  888, 1091, 1090,  895,  900,  902,  903,
-      904, 1089,  908,  907,  910,  911,  912,  914,  915,  919,
-     1086,  920,  922,  927,  929,  930,  934,  935,  936, 1077,
-      939,  943,  944,  940, 1076,  946,  948,  950,  951, 1075,
-     1073, 1071,  955, 1070,  962,  952,  964, 1069,  969,  972,
-      974, 1068,  956, 1067, 1064,  975,  981,  978,  983,  982,
+      835,  838,  846,  839, 1071,  842, 1070, 1069, 1068,  848,
+      853, 1067,  854,  856, 1066, 1065, 1064, 1063, 1062,  855,
+     1061, 1060,  857,  858,  860,  861,  859, 1059,  864, 1058,
+      871, 1057, 1056,  869,  873,  122,  877,  875, 1055,  879,
+      878,  881,  882,  883,  891,  885, 1054,  886,  893,  898,
+      901,  899,  905,  906,  907, 1051,  909,  913,  914,  915,
+     1042,  916,  917,  919,  921, 1041, 1040, 1039, 1038,  923,
+      920,  935, 1036,  938,  939,  940, 1035,  925, 1033, 1032,
+      946,  943,  926,  950,  947,  954,  956,  957,  959,  958,
+      960, 1031,  962,  966,  967,  968,  969,  970, 1027,  971,
 
-      957,  984,  985,  989,  992,  994,  995, 1063,  993,  996,
-      999, 1002, 1005, 1006, 1003, 1062, 1010, 1013, 1016, 1017,
-     1058, 1011, 1021, 1022, 1023,  954, 1024,  700, 1030, 1027,
-     1033, 1036, 1029, 1037, 1038, 1039, 1041, 1047, 1043, 1051,
-      521, 1049,  471,  432, 1052,  431, 1056,  365,  248,  247,
-     1057,  216, 1201, 1092, 1094,  107, 1098,  106
+      974,  975,  977, 1025,  985,  981,  983,  984,  987, 1024,
+      988,  995,  997,  998,  999, 1000, 1006, 1007, 1009, 1012,
+     1008, 1011, 1023, 1013,  928,  705, 1014,  675, 1017,  465,
+      464,  463, 1022,  390, 1165, 1057, 1059,  286, 1063,  252
     } ;
 
-static yyconst short int yy_def[559] =
+static yyconst short int yy_def[541] =
     {   0,
-      553,    1,  553,  553,  553,  553,  554,  555,  556,  553,
-      555,  555,  555,  555,  557,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  554,  553,  555,
-      553,  558,  558,  553,  553,  555,  555,  555,  555,  555,
-      557,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,   24,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      535,    1,  535,  535,  535,  535,  536,  537,  538,  535,
+      537,  537,  537,  537,  539,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  536,  535,  537,
+      535,  540,  540,  535,  535,  537,  537,  537,  537,  537,
+      539,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,   24,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
 
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      553,  558,  558,  553,  555,  555,  555,   50,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,   50,  555,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  535,
+      540,  540,  535,  537,  537,  537,   50,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,   50,  537,  537,  537,  537,  537,
 
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  553,  553,  553,  553,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  199,  555,  555,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  535,  535,  535,
+      535,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      195,  537,  537,  537,  537,  537,  537,  537,  537,  537,
 
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  553,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      535,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
 
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
 
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,    0,  553,  553,  553,  553,  553
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,    0,  535,  535,  535,  535,  535
     } ;
 
-static yyconst short int yy_nxt[1245] =
+static yyconst short int yy_nxt[1209] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
        14,   14,   14,    4,   15,    8,    8,    8,   16,   17,
        18,   19,   20,   21,   22,   23,   24,    8,   25,   26,
        27,   28,   29,    8,   30,   31,   32,   33,   34,   35,
        36,    8,   37,   43,   41,   44,   44,   44,   44,   45,
-       45,   45,   45,   46,   46,   46,   46,   41,   47,  149,
-       41,   41,   41,   41,   48,   49,   49,   49,   49,   41,
-       48,   49,   49,   49,   49,   41,   41,   68,  135,   41,
-       69,   41,  153,   41,   52,  154,   41,   70,   57,  139,
-       41,   53,   58,   54,   41,   55,   50,  146,   56,   60,
+       45,   45,   45,   46,   46,   46,   46,   41,   47,   41,
+       41,  177,   41,   41,   48,   49,   49,   49,   49,   41,
+       48,   49,   49,   49,   49,   41,   41,   68,  134,   41,
+       69,   41,  146,   41,   52,   41,  157,   70,   57,  138,
+       41,   53,   58,   54,   41,   55,   50,   99,   56,   60,
 
-       59,   61,   41,   79,   41,   41,   41,   64,  132,   42,
+       59,   61,   41,   79,   41,   41,   41,   64,  100,   41,
        84,   65,   62,   77,   41,   91,   63,   66,   85,   78,
-       67,   41,   41,   86,   41,   41,   71,   87,   72,   73,
-       92,  102,   41,  127,  130,   41,   74,   88,  159,   41,
-       75,   41,   76,   80,   80,   80,   80,   41,   41,  142,
-       89,   99,   41,  125,   81,  187,   90,  100,  128,   41,
-       41,  169,  101,   82,   83,   41,  126,   41,  133,  133,
-      133,  133,  114,  140,   93,  141,   94,  129,   41,   41,
-       95,   41,   96,   41,   97,  115,   98,  103,  116,   41,
-      150,   41,  248,   41,  151,  117,  152,  143,   41,  104,
+       67,   41,   41,   86,  147,  145,   71,   87,   72,   73,
+       92,  101,   41,   41,   41,   41,   74,   88,  124,  113,
+       75,   41,   76,   80,   80,   80,   80,   41,   41,  141,
+       89,  125,  114,   41,   81,  115,   90,  126,  127,   41,
+       41,  460,  116,   82,   83,   41,  139,   41,  140,  129,
+      132,  132,  132,  132,   93,   41,   94,  128,   41,  143,
+       95,   41,   96,  144,   97,   41,   98,  102,  148,   41,
+       41,   41,   44,   44,   44,   44,  151,  142,  163,  103,
 
-      105,  144,  106,  107,  108,  145,  109,   44,   44,   44,
-       44,   41,  110,  158,  111,  112,  161,  113,  103,  160,
-       41,   41,   41,  134,   45,   45,   45,   45,   41,   41,
-      118,  119,  234,  120,  165,  121,  164,  122,   41,  123,
-       41,   41,   41,  124,   48,   46,   46,   46,   46,   41,
-      136,  136,  136,  136,   41,  162,  166,  137,  173,  171,
-       41,   41,  163,  137,   48,   49,   49,   49,   49,   41,
-      138,  138,  138,  138,   41,   41,  138,  138,   41,  138,
-      138,  138,  138,  138,  138,  155,  147,   41,  156,   41,
-       41,   41,   40,   41,   41,   41,  167,  157,  148,  172,
+      104,   41,  105,  106,  107,  162,  108,  133,   45,   45,
+       45,   45,  109,  152,  110,  111,  156,  112,  102,   41,
+       41,   41,   41,   48,   46,   46,   46,   46,   41,  158,
+      117,  118,   41,  119,  149,  120,  150,  121,  164,  122,
+       41,   41,   41,  123,  135,  135,  135,  135,   41,  167,
+      170,  136,   41,  179,  131,  159,  230,  136,   48,   49,
+       49,   49,   49,   41,  137,  137,  137,  137,   41,   41,
+      137,  137,   41,  137,  137,  137,  137,  137,  137,  153,
+       41,   41,  154,   41,   40,   41,   41,   41,   42,   41,
+      165,  155,  168,   40,   40,  160,   41,  181,   41,   41,
 
-      178,   40,   40,   41,   41,   41,   41,  182,   41,  174,
-      168,  181,  170,  184,   41,  175,  176,   41,  177,  183,
-      179,   41,   41,  185,   41,  194,  180,   41,   41,  186,
-      188,  190,  193,  192,   41,   41,   41,   41,   41,   41,
-       41,  195,   41,   41,  189,  191,  201,  196,   41,  204,
-      208,  200,   41,   41,  202,   41,  197,  210,  206,  198,
-       41,  212,   41,  205,  199,  209,  203,  207,  214,   41,
-       41,  211,   41,  213,   41,   41,  225,   41,   41,  220,
-       41,   41,  215,  216,   41,  218,  223,  221,   41,  226,
-      233,  217,  228,  229,   41,  222,  219,   41,   41,   41,
+       41,  169,  161,  171,  166,  172,  176,  173,  174,   41,
+      175,  180,   41,  182,  178,   41,   41,   41,   41,  184,
+       41,   41,   41,  190,  185,  187,  189,  183,  191,   41,
+       41,   41,   41,   41,  192,   41,   41,   41,  186,  188,
+      197,  200,   41,  193,  196,   41,  208,   41,  198,   41,
+      202,  206,  194,  204,  209,  201,   41,  195,   41,  203,
+      199,   41,  210,   41,   41,  207,  216,   41,  205,  218,
+       41,  211,   41,   41,  212,   41,  214,  217,  233,  219,
+       41,  222,  213,  234,  229,   41,   41,  215,  224,  225,
+      221,   41,   41,  220,   41,  223,   41,  244,  226,   41,
 
-      224,  252,  230,  227,  237,  231,  238,  235,   41,  236,
-      232,  133,  133,  133,  133,   41,   41,   41,  239,  240,
-      243,  243,  243,  243,   41,  241,  250,  244,   41,   41,
-      254,  259,   41,  244,  136,  136,  136,  136,   41,  253,
-       41,  137,  249,  261,   41,   41,   41,  137,  245,  246,
-      251,  247,  247,  247,  247,   41,   41,   41,   41,  260,
-       41,   41,  256,  258,  255,   41,  257,  264,   41,  262,
-       41,   41,   41,  263,   41,   41,   41,  266,  265,   41,
-      272,   41,   41,   41,   41,   41,   41,   41,  279,  267,
-      278,  270,  268,  280,  269,  276,   41,  274,  282,  271,
+       41,  227,   41,   41,   41,  231,  228,  232,  132,  132,
+      132,  132,  235,  246,  245,  236,  239,  239,  239,  239,
+      247,  237,   41,  240,  252,   41,   41,  268,   41,  240,
+      135,  135,  135,  135,   41,  248,  251,  136,   41,   41,
+      250,  255,   41,  136,  241,  242,  249,  243,  243,  243,
+      243,   41,   41,   41,   41,  256,   41,   41,  254,   41,
+      263,  253,  260,   41,   41,   41,  258,   41,  261,  257,
+      259,   41,  267,   41,   41,   41,   41,   41,   41,   41,
+      262,   41,  273,  265,  271,  274,  264,   41,   41,  269,
+      266,  272,  270,  276,   41,  275,  277,  278,   41,   41,
 
-      275,   41,  277,  273,   41,  283,  281,   41,   41,   41,
-      284,   41,   41,   41,   41,   41,  287,   41,   41,  290,
-       41,   41,  286,  288,  285,   41,   41,   41,  292,   41,
-      294,  289,   41,  291,   41,  296,  309,  295,  293,  303,
-       41,  301,   41,  297,  298,  298,  298,  298,  300,  302,
-      298,  298,  299,  298,  298,  298,  298,  298,  298,   41,
-      305,   41,   41,  308,   41,   41,   41,   41,  304,   41,
-       41,   41,   41,   41,   41,  310,  314,  306,  312,   41,
-      317,  318,   41,  307,  311,   41,  313,  319,  316,  320,
-      321,  315,   41,   41,   41,   41,  324,  326,  323,  325,
+       41,   41,   41,  279,   41,   41,   41,   41,  282,  284,
+       41,   41,   41,   41,  283,   41,  281,  280,   41,  286,
+      294,  288,  296,  285,  297,  323,   41,  289,   41,  287,
+       41,   41,   41,  290,  291,  291,  291,  291,  292,   41,
+      291,  291,   41,  291,  291,  291,  291,  291,  291,  293,
+      298,  295,  300,  301,   41,  299,   41,  302,   41,   41,
+       41,   41,   41,   41,   41,  303,   41,  307,  305,   41,
+       41,  310,  311,   41,  314,  304,  306,  312,  315,  309,
+       41,   41,  313,   41,  318,  308,  316,  317,   41,  239,
+      239,  239,  239,   41,  241,  241,  240,  321,  321,  321,
 
-      322,  243,  243,  243,  243,   41,  245,  245,  244,  328,
-      328,  328,  328,  390,  244,   41,   41,  327,  328,  328,
-      328,  328,  247,  247,  247,  247,   41,  247,  247,  247,
-      247,   41,  329,   41,   41,   41,   41,   41,   41,  335,
-      330,  333,   41,   41,  334,   41,   41,   41,  338,   41,
-       41,  331,  332,   41,   41,  344,   41,  337,   41,  340,
-       41,  336,  339,  346,   41,  342,   41,   41,  343,  347,
-       41,  348,   41,   41,  341,  345,   41,   41,  355,  349,
-       41,   41,   41,   41,   41,  356,  357,  354,   41,  350,
-       41,  353,  351,   41,  352,   41,   41,  361,   41,  362,
+      321,  319,  240,  321,  321,  321,  321,   41,   41,   41,
+      322,  320,  243,  243,  243,  243,   41,  243,  243,  243,
+      243,   41,   41,   41,  324,  325,   41,  326,   41,   41,
+      327,   41,  328,   41,  331,   41,   41,   41,   41,   41,
+       41,   41,   41,  330,  338,   41,  333,  340,  332,  329,
+      339,   41,  335,  336,   41,   41,   41,   41,  337,   41,
+       41,  347,  334,   41,   41,  341,  348,   41,  342,  349,
+      346,   41,   41,  343,   41,  344,   41,   41,  345,   41,
+      350,  353,  352,   41,  351,   41,  354,   41,   41,   41,
+      355,  357,  356,   41,  361,  362,  360,  359,  363,   41,
 
-      360,  358,  359,   41,   41,  364,  363,   41,   41,   41,
-      366,  365,   41,   41,  371,   41,  370,   41,  372,  374,
-      367,  368,  369,   41,  373,   41,  375,  378,   41,   41,
-      376,   41,   41,   41,  377,  379,   41,  382,   41,  380,
-       41,  381,   41,  328,  328,  328,  328,   41,   41,   41,
-      383,   41,  386,  388,  389,  392,  393,  384,   41,   41,
-       41,  385,   41,   41,  387,  394,  398,  395,   41,  391,
-       41,   41,  397,   41,   41,   41,   41,   41,   41,   41,
-      396,   41,  401,  404,  405,   41,   41,  399,  402,  400,
-       41,  403,  406,   41,  407,  408,   41,   41,  413,  409,
+       41,  358,   41,  364,   41,   41,   41,  366,  365,   41,
+       41,  367,  369,   41,  372,   41,  370,   41,   41,  368,
+      371,   41,   41,  321,  321,  321,  321,   41,   41,   41,
+      373,  376,  379,   41,   41,  378,  374,  380,  383,   41,
+      375,  382,   41,  377,   41,   41,  384,  385,   41,   41,
+      381,   41,   41,   41,  387,  388,   41,   41,   41,   41,
+      393,  391,   41,   41,  394,  386,   41,  389,   41,   41,
+      390,  395,  396,  392,   41,  398,   41,   41,  399,  397,
+       41,   41,   41,   41,   41,  400,   41,   41,   41,  405,
+      401,  407,  402,  403,   41,  408,  404,  409,  406,   41,
 
-      410,   41,   41,  411,   41,   41,   41,   41,   41,  412,
-      416,  419,   41,  414,  418,  420,  415,  421,   41,  417,
-      423,  422,   41,   41,   41,   41,   41,   41,   41,   41,
-       41,   41,   41,   41,  427,   41,  424,  431,  426,  429,
-      433,  435,   41,  434,  428,  425,   41,   41,  432,  430,
-       41,  437,   41,   41,  438,  436,   41,   41,   41,   41,
-      444,   41,   41,  440,  439,  443,  445,   41,   41,   41,
-      442,  449,  450,   41,   41,  441,  452,  447,  446,  448,
-       41,   41,  454,  455,  453,  451,  456,   41,   41,   41,
-       41,   41,   41,   41,  458,   41,   41,   41,   41,   41,
+      410,  411,   41,   41,   41,  412,   41,   41,   41,  413,
+       41,   41,  414,   41,   41,  416,  418,  420,  415,  421,
+       41,  423,   41,   41,  422,  419,   41,  417,  424,   41,
+       41,   41,   41,  427,   41,   41,   41,  425,  430,  426,
+       41,  432,   41,   41,  436,  437,  429,   41,   41,  428,
+      439,   41,   41,  434,  435,   41,  433,  441,  431,   41,
+      442,   41,  445,  440,  443,  438,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,  444,  448,   41,  446,  449,
+      450,  453,   41,  447,   41,  451,   41,  454,   41,  455,
+       41,   41,   41,  452,   41,   41,   41,  462,   41,   41,
 
-      462,   41,  463,  457,   41,  464,  460,  461,   41,  459,
-      465,  468,  467,   41,  469,   41,   41,   41,  466,  471,
-       41,   41,  470,   41,   41,   41,  476,   41,   41,  472,
-      477,  475,   41,   41,  473,   41,  482,  478,  479,  480,
-       41,  474,   41,   41,  486,  487,  481,   41,   41,   41,
-      483,  488,   41,   41,  490,  484,   41,   41,  485,   41,
-      492,   41,  496,   41,   41,   41,  489,   41,   41,   41,
-       41,  491,  503,  500,  497,   41,  493,   41,  498,  494,
-      495,  501,   41,  504,  502,   41,  499,   41,   41,  505,
-      506,   41,  508,  509,   41,   41,   41,   41,   41,  514,
+      456,  463,  457,  458,   41,  461,   41,  459,  464,  465,
+      466,   41,   41,  468,   41,  471,  472,  467,   41,   41,
+       41,  469,   41,  473,  470,  475,   41,   41,   41,   41,
+       41,  477,   41,   41,   41,  474,   41,  481,   41,   41,
+      487,   41,  476,  485,  482,  486,  478,  483,   41,  479,
+      480,   41,   41,   41,  488,  484,   41,  490,  489,   41,
+       41,  492,  495,   41,  493,  494,  491,   41,  496,   41,
+       41,   41,   41,   41,  498,   41,  497,  501,  503,   41,
+       41,   41,   41,   41,   41,  500,  502,   41,   41,  504,
+       41,  508,  499,  510,   41,  505,   41,   41,   41,  506,
 
-      507,  512,   41,  510,  515,   41,   41,   41,   41,   41,
-      518,  513,   41,  520,  511,   41,   41,  517,   41,   41,
-      521,  516,  519,   41,   41,  522,   41,  525,  526,   41,
-       41,  523,  528,  532,   41,   41,   41,   41,  524,  527,
-       41,  529,   41,   41,  530,  531,   41,  538,  534,   41,
-       41,   41,   41,  535,   41,  536,   41,  533,  537,  539,
-       41,  545,   41,  541,   41,   41,  540,  546,  542,   41,
-       41,   41,  550,  544,  543,   41,   41,   41,  551,  549,
-       41,   41,   41,   41,   41,  547,   41,  548,   41,   41,
-       41,  552,   38,   38,   38,   38,   40,   40,   51,   41,
+       41,   41,  511,  512,  507,  513,  509,  514,   41,  516,
+       41,   41,   41,   41,  517,  520,  519,  515,  518,   41,
+       41,   41,   41,  521,   41,   41,   41,   41,  522,  527,
+       41,  524,  528,  523,  532,   41,   41,   41,   41,  533,
+       41,  526,  525,  531,   41,   41,   41,  530,   41,   41,
+      529,   41,   41,   41,   41,   41,  534,   38,   38,   38,
+       38,   40,   40,   51,   41,   51,   51,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
 
-       51,   51,   41,   41,   41,   41,   41,   41,   41,   41,
        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
-       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
-       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
-       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
-      242,   41,   41,   41,   41,   41,  131,   41,   39,  553,
+       41,   41,   41,   41,  238,   41,   41,   41,   41,   41,
+      130,   41,   39,  535,    3,  535,  535,  535,  535,  535,
+      535,  535,  535,  535,  535,  535,  535,  535,  535,  535,
+      535,  535,  535,  535,  535,  535,  535,  535,  535,  535,
+      535,  535,  535,  535,  535,  535,  535,  535,  535,  535,
 
-        3,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553
+      535,  535,  535,  535,  535,  535,  535,  535
     } ;
 
-static yyconst short int yy_chk[1245] =
+static yyconst short int yy_chk[1209] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    9,   60,    9,    9,    9,    9,   10,
-       10,   10,   10,   11,   11,   11,   11,   11,   12,   60,
-       20,   63,   64,   12,   13,   13,   13,   13,   13,   13,
+        1,    1,    1,    9,   85,    9,    9,    9,    9,   10,
+       10,   10,   10,   11,   11,   11,   11,   11,   12,   58,
+       20,   85,   67,   12,   13,   13,   13,   13,   13,   13,
        14,   14,   14,   14,   14,   14,   16,   20,   47,   17,
-       20,   52,   63,   47,   16,   64,   57,   20,   17,   52,
-       23,   16,   17,   16,   18,   16,   13,   57,   16,   18,
+       20,   52,   58,   47,   16,   29,   67,   20,   17,   52,
+       23,   16,   17,   16,   18,   16,   13,   29,   16,   18,
 
-       17,   18,   19,   23,   22,   25,   27,   19,  558,  556,
-       25,   19,   18,   22,   67,   27,   18,   19,   25,   22,
-       19,   21,   30,   25,   35,   37,   21,   25,   21,   21,
-       27,   30,   26,   35,   37,   93,   21,   26,   67,   29,
-       21,   54,   21,   24,   24,   24,   24,   24,   34,   54,
-       26,   29,   76,   34,   24,   93,   26,   29,   36,   36,
-       53,   76,   29,   24,   24,   28,   34,   32,   43,   43,
-       43,   43,   32,   53,   28,   53,   28,   36,   55,   62,
-       28,  140,   28,   61,   28,   32,   28,   31,   32,   56,
-       61,   31,  140,   70,   62,   32,   62,   55,   66,   31,
+       17,   18,   19,   23,   22,   25,   27,   19,   29,   60,
+       25,   19,   18,   22,   57,   27,   18,   19,   25,   22,
+       19,   21,   30,   25,   60,   57,   21,   25,   21,   21,
+       27,   30,   26,   34,   32,  436,   21,   26,   34,   32,
+       21,   54,   21,   24,   24,   24,   24,   24,   35,   54,
+       26,   34,   32,   53,   24,   32,   26,   35,   36,   36,
+       37,  436,   32,   24,   24,   28,   53,   56,   53,   37,
+       43,   43,   43,   43,   28,   63,   28,   36,   55,   56,
+       28,   61,   28,   56,   28,   73,   28,   31,   61,   72,
+       64,   31,   44,   44,   44,   44,   63,   55,   73,   31,
 
-       31,   56,   31,   31,   31,   56,   31,   44,   44,   44,
-       44,   68,   31,   66,   31,   31,   70,   31,   33,   68,
-       72,   73,   33,   45,   45,   45,   45,   45,  125,  552,
-       33,   33,  125,   33,   73,   33,   72,   33,   74,   33,
-       71,   78,   81,   33,   46,   46,   46,   46,   46,   46,
-       48,   48,   48,   48,   48,   71,   74,   48,   81,   78,
-      550,  549,   71,   48,   49,   49,   49,   49,   49,   49,
-       50,   50,   50,   50,   50,   58,   50,   50,   65,   50,
-       50,   50,   50,   50,   50,   65,   58,   75,   65,   77,
-       82,   79,   80,   83,   84,   87,   75,   65,   58,   79,
+       31,   66,   31,   31,   31,   72,   31,   45,   45,   45,
+       45,   45,   31,   64,   31,   31,   66,   31,   33,   62,
+       74,   68,   33,   46,   46,   46,   46,   46,   46,   68,
+       33,   33,   70,   33,   62,   33,   62,   33,   74,   33,
+       76,   87,   79,   33,   48,   48,   48,   48,   48,   76,
+       79,   48,  124,   87,  540,   70,  124,   48,   49,   49,
+       49,   49,   49,   49,   50,   50,   50,   50,   50,   77,
+       50,   50,   65,   50,   50,   50,   50,   50,   50,   65,
+       71,   75,   65,   78,   80,   83,   82,   81,  538,   89,
+       75,   65,   77,   80,   80,   71,   88,   89,   90,   93,
 
-       84,   80,   80,   85,   88,   89,   86,   87,   90,   82,
-       75,   86,   77,   89,   92,   83,   83,   98,   83,   88,
-       85,   94,   95,   90,   96,   98,   85,   97,   99,   92,
-       94,   95,   97,   96,  100,  101,  102,  103,  104,  105,
-      106,   99,  108,  107,   94,   95,  105,  100,  109,  106,
-      108,  104,  110,  121,  105,  111,  101,  109,  107,  102,
-      117,  110,  112,  106,  103,  108,  105,  107,  112,  113,
-      114,  109,  116,  111,  118,  119,  121,  120,  548,  117,
-      122,  124,  113,  114,  123,  116,  120,  118,  146,  122,
-      124,  114,  123,  123,  126,  119,  116,  129,  130,  127,
+       84,   78,   71,   81,   75,   82,   84,   83,   83,   86,
+       83,   88,   92,   90,   86,   94,   95,   96,   97,   93,
+       98,   99,  100,   97,   94,   95,   96,   92,   98,  101,
+      102,  103,  105,  104,   99,  106,  110,  109,   94,   95,
+      104,  105,  108,  100,  103,  107,  109,  116,  104,  118,
+      106,  108,  101,  107,  110,  105,  111,  102,  112,  106,
+      104,  113,  111,  115,  117,  108,  116,  120,  107,  118,
+      119,  112,  121,  126,  113,  123,  115,  117,  126,  119,
+      122,  121,  113,  127,  123,  127,  139,  115,  122,  122,
+      120,  128,  125,  119,  129,  121,  140,  139,  122,  143,
 
-      120,  146,  123,  122,  127,  123,  128,  126,  128,  126,
-      123,  133,  133,  133,  133,  149,  155,  143,  129,  130,
-      134,  134,  134,  134,  141,  130,  143,  134,  157,  144,
-      149,  155,  148,  134,  136,  136,  136,  136,  136,  148,
-      152,  136,  141,  157,  546,  544,  156,  136,  137,  137,
-      144,  137,  137,  137,  137,  137,  151,  153,  154,  156,
-      158,  159,  152,  154,  151,  160,  153,  159,  161,  158,
-      162,  163,  164,  158,  165,  166,  167,  161,  160,  168,
-      166,  170,  171,  174,  543,  172,  169,  173,  171,  161,
-      170,  164,  162,  172,  163,  169,  175,  168,  174,  165,
+      165,  122,  150,  534,  142,  125,  122,  125,  132,  132,
+      132,  132,  128,  142,  140,  129,  133,  133,  133,  133,
+      143,  129,  145,  133,  150,  147,  153,  165,  149,  133,
+      135,  135,  135,  135,  135,  145,  149,  135,  160,  146,
+      147,  153,  154,  135,  136,  136,  146,  136,  136,  136,
+      136,  136,  151,  152,  155,  154,  157,  156,  152,  159,
+      160,  151,  157,  161,  162,  163,  156,  164,  159,  155,
+      156,  166,  164,  168,  171,  167,  532,  531,  530,  169,
+      159,  172,  168,  162,  167,  169,  161,  170,  173,  166,
+      163,  167,  166,  171,  174,  170,  172,  173,  175,  176,
 
-      168,  176,  169,  167,  177,  175,  173,  178,  180,  179,
-      176,  181,  182,  183,  184,  186,  178,  193,  196,  181,
-      197,  216,  177,  179,  176,  201,  203,  200,  183,  207,
-      186,  180,  202,  182,  541,  196,  216,  193,  184,  207,
-      215,  202,  209,  197,  199,  199,  199,  199,  201,  203,
-      199,  199,  200,  199,  199,  199,  199,  199,  199,  208,
-      209,  212,  213,  215,  217,  218,  221,  220,  208,  219,
-      225,  228,  231,  233,  232,  217,  220,  212,  219,  240,
-      228,  231,  237,  213,  218,  234,  219,  232,  225,  233,
-      234,  221,  235,  236,  241,  238,  237,  240,  236,  238,
+      177,  178,  179,  174,  180,  181,  183,  190,  176,  178,
+      193,  198,  203,  196,  177,  204,  175,  174,  245,  180,
+      198,  183,  203,  179,  204,  245,  197,  190,  199,  181,
+      211,  209,  205,  193,  195,  195,  195,  195,  196,  208,
+      195,  195,  212,  195,  195,  195,  195,  195,  195,  197,
+      205,  199,  209,  211,  213,  208,  214,  212,  216,  215,
+      217,  221,  224,  227,  228,  213,  229,  216,  215,  230,
+      231,  224,  227,  233,  230,  214,  215,  228,  231,  221,
+      234,  232,  229,  236,  234,  217,  232,  233,  237,  239,
+      239,  239,  239,  244,  240,  240,  239,  240,  240,  240,
 
-      235,  243,  243,  243,  243,  331,  244,  244,  243,  244,
-      244,  244,  244,  331,  243,  248,  256,  241,  245,  245,
-      245,  245,  246,  246,  246,  246,  246,  247,  247,  247,
-      247,  247,  248,  249,  250,  252,  253,  255,  257,  256,
-      249,  253,  258,  259,  255,  260,  261,  262,  259,  263,
-      265,  250,  252,  264,  266,  265,  272,  258,  267,  261,
-      268,  257,  260,  267,  269,  263,  273,  275,  264,  268,
-      274,  269,  278,  279,  262,  266,  280,  282,  279,  272,
-      283,  284,  285,  286,  287,  280,  282,  278,  288,  273,
-      289,  275,  274,  292,  274,  293,  295,  286,  296,  287,
+      240,  236,  239,  241,  241,  241,  241,  246,  248,  252,
+      244,  237,  242,  242,  242,  242,  242,  243,  243,  243,
+      243,  243,  249,  251,  246,  248,  253,  249,  254,  255,
+      251,  256,  252,  257,  255,  258,  259,  261,  260,  262,
+      264,  263,  267,  254,  262,  268,  257,  264,  256,  253,
+      263,  269,  259,  260,  270,  273,  274,  275,  261,  278,
+      277,  274,  258,  279,  280,  267,  275,  281,  268,  277,
+      273,  282,  283,  269,  286,  269,  287,  289,  270,  290,
+      278,  281,  280,  293,  279,  296,  282,  294,  528,  297,
+      283,  287,  286,  298,  294,  296,  293,  290,  297,  300,
 
-      285,  283,  284,  300,  297,  289,  288,  301,  303,  305,
-      293,  292,  311,  528,  301,  304,  300,  307,  303,  305,
-      295,  296,  297,  308,  304,  310,  307,  311,  313,  316,
-      308,  317,  318,  319,  310,  313,  321,  318,  323,  316,
-      326,  317,  325,  328,  328,  328,  328,  333,  334,  330,
-      319,  335,  325,  326,  330,  334,  335,  321,  336,  338,
-      340,  323,  337,  339,  325,  336,  340,  337,  341,  333,
-      342,  344,  339,  343,  345,  358,  346,  348,  353,  351,
-      338,  352,  343,  346,  348,  355,  356,  341,  344,  342,
-      354,  345,  351,  357,  352,  353,  359,  360,  358,  354,
+      301,  289,  303,  298,  304,  306,  309,  301,  300,  311,
+      310,  303,  306,  312,  311,  314,  309,  316,  526,  304,
+      310,  318,  319,  321,  321,  321,  321,  323,  326,  324,
+      312,  318,  323,  328,  327,  319,  314,  324,  328,  329,
+      316,  327,  330,  318,  331,  332,  329,  330,  334,  333,
+      326,  335,  336,  338,  332,  333,  337,  340,  343,  344,
+      338,  336,  345,  347,  340,  331,  346,  334,  348,  350,
+      335,  343,  344,  337,  349,  346,  351,  352,  347,  345,
+      353,  355,  361,  360,  356,  348,  357,  359,  358,  353,
+      349,  356,  350,  351,  362,  357,  352,  358,  355,  364,
 
-      355,  361,  363,  356,  365,  364,  366,  369,  367,  357,
-      361,  365,  368,  359,  364,  366,  360,  367,  370,  363,
-      369,  368,  371,  372,  373,  374,  377,  376,  378,  380,
-      384,  387,  395,  382,  373,  383,  370,  378,  372,  376,
-      382,  384,  385,  383,  374,  371,  386,  388,  380,  377,
-      390,  386,  391,  393,  387,  385,  398,  396,  394,  399,
-      395,  400,  404,  390,  388,  394,  396,  403,  409,  408,
-      393,  403,  403,  412,  413,  391,  408,  399,  398,  400,
-      415,  414,  412,  413,  409,  404,  414,  417,  422,  423,
-      424,  426,  427,  433,  417,  436,  437,  440,  439,  442,
+      359,  360,  363,  366,  367,  361,  370,  368,  375,  362,
+      372,  373,  363,  374,  377,  366,  368,  372,  364,  373,
+      380,  375,  378,  376,  374,  370,  381,  367,  376,  383,
+      385,  384,  386,  380,  388,  389,  390,  377,  384,  378,
+      392,  386,  393,  397,  392,  392,  383,  398,  401,  381,
+      397,  402,  404,  389,  390,  406,  388,  401,  385,  403,
+      402,  410,  406,  398,  403,  393,  411,  413,  420,  414,
+      423,  424,  427,  425,  426,  404,  413,  429,  410,  414,
+      420,  425,  434,  411,  431,  423,  435,  426,  438,  427,
+      437,  441,  440,  424,  442,  443,  444,  438,  446,  448,
 
-      426,  444,  427,  415,  438,  433,  423,  424,  447,  422,
-      436,  439,  438,  448,  440,  449,  450,  451,  437,  444,
-      454,  453,  442,  455,  456,  457,  451,  458,  459,  447,
-      453,  450,  460,  462,  448,  463,  458,  454,  455,  456,
-      464,  449,  465,  466,  463,  464,  457,  467,  468,  469,
-      459,  465,  471,  474,  467,  460,  472,  473,  462,  476,
-      469,  477,  474,  478,  479,  486,  466,  526,  483,  493,
-      501,  468,  486,  479,  476,  485,  471,  487,  477,  472,
-      473,  483,  489,  487,  485,  490,  478,  491,  496,  489,
-      490,  498,  493,  496,  497,  500,  499,  502,  503,  501,
+      429,  440,  431,  434,  445,  437,  449,  435,  441,  442,
+      443,  450,  452,  445,  451,  449,  450,  444,  453,  454,
+      455,  446,  457,  451,  448,  453,  458,  459,  460,  462,
+      463,  455,  464,  471,  465,  452,  470,  460,  478,  483,
+      471,  525,  454,  465,  462,  470,  457,  463,  472,  458,
+      459,  474,  475,  476,  472,  464,  482,  475,  474,  481,
+      485,  478,  483,  484,  481,  482,  476,  486,  484,  487,
+      488,  490,  489,  491,  486,  493,  485,  489,  491,  494,
+      495,  496,  497,  498,  500,  488,  490,  501,  502,  493,
+      503,  497,  487,  500,  506,  494,  507,  508,  505,  495,
 
-      491,  499,  504,  497,  502,  505,  509,  506,  507,  510,
-      505,  500,  511,  507,  498,  512,  515,  504,  513,  514,
-      509,  503,  506,  517,  522,  510,  518,  513,  514,  519,
-      520,  511,  517,  522,  523,  524,  525,  527,  512,  515,
-      530,  518,  533,  529,  519,  520,  531,  530,  524,  532,
-      534,  535,  536,  525,  537,  527,  539,  523,  529,  531,
-      538,  537,  542,  533,  540,  545,  532,  538,  534,  547,
-      551,  521,  545,  536,  535,  516,  508,  495,  547,  542,
-      494,  492,  488,  484,  482,  539,  481,  540,  480,  475,
-      470,  551,  554,  554,  554,  554,  555,  555,  557,  461,
+      509,  511,  501,  502,  496,  503,  498,  505,  512,  507,
+      513,  514,  515,  516,  508,  512,  511,  506,  509,  517,
+      518,  521,  519,  513,  522,  520,  524,  527,  514,  519,
+      529,  516,  520,  515,  527,  533,  523,  510,  504,  529,
+      499,  518,  517,  524,  492,  480,  479,  522,  477,  473,
+      521,  469,  468,  467,  466,  461,  533,  536,  536,  536,
+      536,  537,  537,  539,  456,  539,  539,  447,  439,  433,
+      432,  430,  428,  422,  421,  419,  418,  417,  416,  415,
+      412,  409,  408,  407,  405,  400,  399,  396,  395,  394,
+      391,  387,  382,  379,  371,  369,  365,  354,  342,  341,
 
-      557,  557,  452,  446,  445,  443,  441,  435,  434,  432,
-      431,  430,  429,  428,  425,  421,  420,  419,  418,  416,
-      411,  410,  407,  406,  405,  402,  401,  397,  392,  389,
-      381,  379,  375,  362,  350,  349,  347,  332,  329,  327,
-      324,  322,  320,  315,  314,  312,  309,  306,  302,  299,
-      294,  291,  290,  281,  277,  276,  271,  270,  254,  251,
-      239,  230,  229,  227,  226,  224,  223,  222,  214,  211,
-      210,  206,  205,  204,  198,  195,  194,  192,  191,  190,
-      189,  188,  187,  185,  150,  147,  145,  142,  139,  135,
-      131,  115,   91,   69,   59,   40,   38,    8,    7,    3,
+      339,  325,  322,  320,  317,  315,  313,  308,  307,  305,
+      302,  299,  295,  292,  288,  285,  284,  276,  272,  271,
+      266,  265,  250,  247,  235,  226,  225,  223,  222,  220,
+      219,  218,  210,  207,  206,  202,  201,  200,  194,  192,
+      191,  189,  188,  187,  186,  185,  184,  182,  158,  148,
+      144,  141,  138,  134,  130,  114,   91,   69,   59,   40,
+       38,    8,    7,    3,  535,  535,  535,  535,  535,  535,
+      535,  535,  535,  535,  535,  535,  535,  535,  535,  535,
+      535,  535,  535,  535,  535,  535,  535,  535,  535,  535,
+      535,  535,  535,  535,  535,  535,  535,  535,  535,  535,
 
-      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553
+      535,  535,  535,  535,  535,  535,  535,  535
     } ;
 
 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
@@ -879,7 +859,7 @@
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
-#line 1 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 1 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 #define INITIAL 0
 /*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===//
 //
@@ -894,7 +874,7 @@
 //
 //===----------------------------------------------------------------------===*/
 #define YY_NEVER_INTERACTIVE 1
-#line 28 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 28 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 #include "ParserInternals.h"
 #include "llvm/Module.h"
 #include <list>
@@ -1027,7 +1007,7 @@
 /* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing
  * it to deal with 64 bit numbers.
  */
-#line 1031 "Lexer.cpp"
+#line 1007 "Lexer.cpp"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1175,13 +1155,13 @@
 YY_DECL
 	{
 	register yy_state_type yy_current_state;
-	register char *yy_cp = NULL, *yy_bp = NULL;
+	register char *yy_cp, *yy_bp;
 	register int yy_act;
 
-#line 188 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 188 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 
 
-#line 1185 "Lexer.cpp"
+#line 1161 "Lexer.cpp"
 
 	if ( yy_init )
 		{
@@ -1229,14 +1209,14 @@
 			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 >= 554 )
+				if ( yy_current_state >= 536 )
 					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 != 553 );
+		while ( yy_current_state != 535 );
 
 yy_find_action:
 		yy_current_state = *--yy_state_ptr;
@@ -1274,267 +1254,247 @@
 	{ /* beginning of action switch */
 case 1:
 YY_RULE_SETUP
-#line 190 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 190 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { /* Ignore comments for now */ }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 192 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 192 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return BEGINTOK; }
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 193 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 193 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return ENDTOK; }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 194 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 194 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return TRUETOK;  }
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 195 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 195 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return FALSETOK; }
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 196 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 196 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return DECLARE; }
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 197 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 197 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return DEFINE; }
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 198 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 198 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return GLOBAL; }
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 199 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 199 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return CONSTANT; }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 200 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 200 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return INTERNAL; }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 201 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 201 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return LINKONCE; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 202 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 202 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return WEAK; }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 203 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 203 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return APPENDING; }
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 204 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 204 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return DLLIMPORT; }
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 205 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 205 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return DLLEXPORT; }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 206 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 206 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return HIDDEN; }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 207 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 207 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return EXTERN_WEAK; }
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 208 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 208 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return EXTERNAL; }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 209 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 209 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return IMPLEMENTATION; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 210 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 210 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return ZEROINITIALIZER; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 211 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 211 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return DOTDOTDOT; }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 212 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 212 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return UNDEF; }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 213 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 213 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return NULL_TOK; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 214 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 214 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return TO; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 215 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 215 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return TAIL; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 216 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 216 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return TARGET; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 217 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 217 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return TRIPLE; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 218 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 218 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return DEPLIBS; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 219 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return ENDIAN; }
+#line 219 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return DATALAYOUT; }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 220 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return POINTERSIZE; }
+#line 220 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return VOLATILE; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 221 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return DATALAYOUT; }
+#line 221 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return ALIGN;  }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 222 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return LITTLE; }
+#line 222 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return SECTION; }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 223 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return BIG; }
+#line 223 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return MODULE; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 224 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return VOLATILE; }
+#line 224 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return ASM_TOK; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 225 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return ALIGN;  }
+#line 225 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return SIDEEFFECT; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 226 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return SECTION; }
+#line 227 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return CC_TOK; }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 227 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return MODULE; }
+#line 228 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return CCC_TOK; }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 228 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return ASM_TOK; }
+#line 229 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return CSRETCC_TOK; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 229 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return SIDEEFFECT; }
+#line 230 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return FASTCC_TOK; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 231 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return CC_TOK; }
+#line 231 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return COLDCC_TOK; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 232 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return CCC_TOK; }
+#line 232 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return X86_STDCALLCC_TOK; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 233 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return CSRETCC_TOK; }
+#line 233 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return X86_FASTCALLCC_TOK; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 234 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return FASTCC_TOK; }
+#line 235 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::VoidTy,  VOID);  }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 235 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return COLDCC_TOK; }
+#line 236 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::FloatTy, FLOAT); }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 236 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return X86_STDCALLCC_TOK; }
+#line 237 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::DoubleTy,DOUBLE);}
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 237 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return X86_FASTCALLCC_TOK; }
+#line 238 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TY(Type::LabelTy, LABEL); }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 239 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::VoidTy,  VOID);  }
+#line 239 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return TYPE;   }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 240 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::FloatTy, FLOAT); }
+#line 240 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return OPAQUE; }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 241 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::DoubleTy,DOUBLE);}
-	YY_BREAK
-case 50:
-YY_RULE_SETUP
-#line 242 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TY(Type::LabelTy, LABEL); }
-	YY_BREAK
-case 51:
-YY_RULE_SETUP
-#line 243 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return TYPE;   }
-	YY_BREAK
-case 52:
-YY_RULE_SETUP
-#line 244 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return OPAQUE; }
-	YY_BREAK
-case 53:
-YY_RULE_SETUP
-#line 245 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 241 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { uint64_t NumBits = atoull(yytext+1);
                   if (NumBits < IntegerType::MIN_INT_BITS || 
                       NumBits > IntegerType::MAX_INT_BITS)
@@ -1543,358 +1503,358 @@
                   RET_TY(Ty, INTTYPE);
                 }
 	YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 249 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Add, ADD); }
+	YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 250 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Sub, SUB); }
+	YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 251 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Mul, MUL); }
+	YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 252 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, UDiv, UDIV); }
+	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 253 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Add, ADD); }
+#line 253 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, SDiv, SDIV); }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 254 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Sub, SUB); }
+#line 254 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, FDiv, FDIV); }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 255 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Mul, MUL); }
+#line 255 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, URem, UREM); }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 256 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, UDiv, UDIV); }
+#line 256 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, SRem, SREM); }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 257 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, SDiv, SDIV); }
+#line 257 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, FRem, FREM); }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 258 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, FDiv, FDIV); }
+#line 258 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, And, AND); }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 259 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, URem, UREM); }
+#line 259 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Or , OR ); }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 260 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, SRem, SREM); }
+#line 260 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Xor, XOR); }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 261 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, FRem, FREM); }
+#line 261 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal,  ICmp,  ICMP); }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 262 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, And, AND); }
+#line 262 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal,  FCmp,  FCMP); }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 263 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Or , OR ); }
+#line 263 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return EQ;  }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 264 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Xor, XOR); }
+#line 264 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return NE;  }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 265 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal,  ICmp,  ICMP); }
+#line 265 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return SLT; }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 266 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal,  FCmp,  FCMP); }
+#line 266 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return SGT; }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 267 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return EQ;  }
+#line 267 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return SLE; }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 268 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return NE;  }
+#line 268 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return SGE; }
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 269 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return SLT; }
+#line 269 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return ULT; }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 270 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return SGT; }
+#line 270 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return UGT; }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 271 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return SLE; }
+#line 271 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return ULE; }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 272 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return SGE; }
+#line 272 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return UGE; }
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 273 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return ULT; }
+#line 273 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return OEQ; }
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 274 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return UGT; }
+#line 274 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return ONE; }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 275 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return ULE; }
+#line 275 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return OLT; }
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 276 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return UGE; }
+#line 276 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return OGT; }
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 277 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return OEQ; }
+#line 277 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return OLE; }
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 278 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return ONE; }
+#line 278 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return OGE; }
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 279 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return OLT; }
+#line 279 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return ORD; }
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 280 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return OGT; }
+#line 280 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return UNO; }
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 281 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return OLE; }
+#line 281 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return UEQ; }
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 282 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return OGE; }
+#line 282 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ return UNE; }
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 283 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return ORD; }
+#line 284 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, PHI, PHI_TOK); }
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 284 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return UNO; }
+#line 285 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Call, CALL); }
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 285 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return UEQ; }
+#line 286 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, Trunc, TRUNC); }
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 286 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ return UNE; }
+#line 287 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, ZExt, ZEXT); }
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 288 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, PHI, PHI_TOK); }
+#line 288 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, SExt, SEXT); }
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 289 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Call, CALL); }
+#line 289 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPTrunc, FPTRUNC); }
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 290 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, Trunc, TRUNC); }
+#line 290 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPExt, FPEXT); }
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 291 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, ZExt, ZEXT); }
+#line 291 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, UIToFP, UITOFP); }
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 292 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, SExt, SEXT); }
+#line 292 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, SIToFP, SITOFP); }
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 293 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPTrunc, FPTRUNC); }
+#line 293 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPToUI, FPTOUI); }
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 294 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPExt, FPEXT); }
+#line 294 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, FPToSI, FPTOSI); }
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 295 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, UIToFP, UITOFP); }
+#line 295 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, IntToPtr, INTTOPTR); }
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 296 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, SIToFP, SITOFP); }
+#line 296 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, PtrToInt, PTRTOINT); }
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 297 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPToUI, FPTOUI); }
+#line 297 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(CastOpVal, BitCast, BITCAST); }
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 298 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, FPToSI, FPTOSI); }
+#line 298 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Select, SELECT); }
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 299 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, IntToPtr, INTTOPTR); }
+#line 299 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Shl, SHL); }
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 300 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, PtrToInt, PTRTOINT); }
+#line 300 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, LShr, LSHR); }
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 301 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(CastOpVal, BitCast, BITCAST); }
+#line 301 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, AShr, ASHR); }
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 302 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Select, SELECT); }
+#line 302 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, VAArg , VAARG); }
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 303 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Shl, SHL); }
+#line 303 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Ret, RET); }
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 304 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, LShr, LSHR); }
+#line 304 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Br, BR); }
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 305 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, AShr, ASHR); }
+#line 305 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Switch, SWITCH); }
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 306 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, VAArg , VAARG); }
+#line 306 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Invoke, INVOKE); }
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 307 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Ret, RET); }
+#line 307 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Unwind, UNWIND); }
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 308 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Br, BR); }
+#line 308 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Unreachable, UNREACHABLE); }
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 309 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Switch, SWITCH); }
+#line 310 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Malloc, MALLOC); }
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 310 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Invoke, INVOKE); }
+#line 311 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Alloca, ALLOCA); }
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 311 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Unwind, UNWIND); }
+#line 312 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Free, FREE); }
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 312 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Unreachable, UNREACHABLE); }
+#line 313 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Load, LOAD); }
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 314 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Malloc, MALLOC); }
+#line 314 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Store, STORE); }
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 315 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Alloca, ALLOCA); }
+#line 315 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); }
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 316 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Free, FREE); }
+#line 317 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); }
 	YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 317 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Load, LOAD); }
+#line 318 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); }
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 318 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Store, STORE); }
+#line 319 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); }
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 319 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); }
-	YY_BREAK
-case 119:
-YY_RULE_SETUP
-#line 321 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); }
-	YY_BREAK
-case 120:
-YY_RULE_SETUP
-#line 322 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); }
-	YY_BREAK
-case 121:
-YY_RULE_SETUP
-#line 323 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); }
-	YY_BREAK
-case 122:
-YY_RULE_SETUP
-#line 326 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 322 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 {
                   UnEscapeLexed(yytext+1);
                   llvmAsmlval.StrVal = strdup(yytext+1);             // Skip %
                   return VAR_ID;
                 }
 	YY_BREAK
-case 123:
+case 119:
 YY_RULE_SETUP
-#line 331 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 327 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 {
                   yytext[strlen(yytext)-1] = 0;  // nuke colon
                   UnEscapeLexed(yytext);
@@ -1902,9 +1862,9 @@
                   return LABELSTR;
                 }
 	YY_BREAK
-case 124:
+case 120:
 YY_RULE_SETUP
-#line 337 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 333 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 {
                   yytext[strlen(yytext)-2] = 0;  // nuke colon, end quote
                   UnEscapeLexed(yytext+1);
@@ -1912,9 +1872,9 @@
                   return LABELSTR;
                 }
 	YY_BREAK
-case 125:
+case 121:
 YY_RULE_SETUP
-#line 344 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 340 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { // Note that we cannot unescape a string constant here!  The
                    // string constant might contain a \00 which would not be
                    // understood by the string stuff.  It is valid to make a
@@ -1925,14 +1885,14 @@
                    return STRINGCONSTANT;
                  }
 	YY_BREAK
-case 126:
+case 122:
 YY_RULE_SETUP
-#line 355 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 351 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.UInt64Val = atoull(yytext); return EUINT64VAL; }
 	YY_BREAK
-case 127:
+case 123:
 YY_RULE_SETUP
-#line 356 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 352 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 {
                   uint64_t Val = atoull(yytext+1);
                   // +1:  we have bigger negative range
@@ -1942,17 +1902,17 @@
                   return ESINT64VAL;
                 }
 	YY_BREAK
-case 128:
+case 124:
 YY_RULE_SETUP
-#line 364 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 360 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 {
                    llvmAsmlval.UInt64Val = HexIntToVal(yytext+3);
                    return yytext[0] == 's' ? ESINT64VAL : EUINT64VAL;
                  }
 	YY_BREAK
-case 129:
+case 125:
 YY_RULE_SETUP
-#line 369 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 365 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 {
                   uint64_t Val = atoull(yytext+1);
                   if ((unsigned)Val != Val)
@@ -1961,9 +1921,9 @@
                   return UINTVAL;
                 }
 	YY_BREAK
-case 130:
+case 126:
 YY_RULE_SETUP
-#line 376 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 372 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 {
                   uint64_t Val = atoull(yytext+2);
                   // +1:  we have bigger negative range
@@ -1973,18 +1933,18 @@
                   return SINTVAL;
                 }
 	YY_BREAK
-case 131:
+case 127:
 YY_RULE_SETUP
-#line 385 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 381 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.FPVal = atof(yytext); return FPVAL; }
 	YY_BREAK
-case 132:
+case 128:
 YY_RULE_SETUP
-#line 386 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 382 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.FPVal = HexToFP(yytext); return FPVAL; }
 	YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 388 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 384 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 {
                   /* Make sure to free the internal buffers for flex when we are
                    * done reading our input!
@@ -1993,22 +1953,22 @@
                   return EOF;
                 }
 	YY_BREAK
-case 133:
+case 129:
 YY_RULE_SETUP
-#line 396 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 392 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { /* Ignore whitespace */ }
 	YY_BREAK
-case 134:
+case 130:
 YY_RULE_SETUP
-#line 397 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 393 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 { return yytext[0]; }
 	YY_BREAK
-case 135:
+case 131:
 YY_RULE_SETUP
-#line 399 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 395 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 2012 "Lexer.cpp"
+#line 1968 "Lexer.cpp"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -2295,7 +2255,7 @@
 		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 >= 554 )
+			if ( yy_current_state >= 536 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2325,11 +2285,11 @@
 	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 >= 554 )
+		if ( yy_current_state >= 536 )
 			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 == 553);
+	yy_is_jam = (yy_current_state == 535);
 	if ( ! yy_is_jam )
 		*yy_state_ptr++ = yy_current_state;
 
@@ -2384,7 +2344,6 @@
 #endif	/* ifndef YY_NO_UNPUT */
 
 
-#ifndef YY_NO_INPUT
 #ifdef __cplusplus
 static int yyinput()
 #else
@@ -2458,7 +2417,7 @@
 
 	return c;
 	}
-#endif /* YY_NO_INPUT */
+
 
 #ifdef YY_USE_PROTOS
 void yyrestart( FILE *input_file )
@@ -2569,6 +2528,11 @@
 	}
 
 
+#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 )
@@ -2886,5 +2850,5 @@
 	return 0;
 	}
 #endif
-#line 399 "/proj/llvm/llvm-4/lib/AsmParser/Lexer.l"
+#line 395 "/Users/resistor/llvm/src/llvm/lib/AsmParser/Lexer.l"
 
diff --git a/lib/AsmParser/Lexer.l.cvs b/lib/AsmParser/Lexer.l.cvs
index 970a214..e688868 100644
--- a/lib/AsmParser/Lexer.l.cvs
+++ b/lib/AsmParser/Lexer.l.cvs
@@ -148,8 +148,11 @@
 /* Comments start with a ; and go till end of line */
 Comment    ;.*
 
-/* Variable(Value) identifiers start with a % sign */
-VarID       %[-a-zA-Z$._][-a-zA-Z$._0-9]*
+/* Local Values and Type identifiers start with a % sign */
+LocalVarName       %[-a-zA-Z$._][-a-zA-Z$._0-9]*
+
+/* Global Value identifiers start with an @ sign */
+GlobalVarName       @[-a-zA-Z$._][-a-zA-Z$._0-9]*
 
 /* Label identifiers end with a colon */
 Label       [-a-zA-Z$._0-9]+:
@@ -157,18 +160,16 @@
 
 /* Quoted names can contain any character except " and \ */
 StringConstant \"[^\"]*\"
+AtStringConstant @\"[^\"]*\"
+  
+/* LocalVarID/GlobalVarID: match an unnamed local variable slot ID. */
+LocalVarID     %[0-9]+
+GlobalVarID    @[0-9]+
 
-
-/* [PN]Integer: match positive and negative literal integer values that
- * are preceeded by a '%' character.  These represent unnamed variable slots.
- */
-EPInteger     %[0-9]+
-ENInteger    %-[0-9]+
-
+/* Integer types are specified with i and a bitwidth */
 IntegerType i[0-9]+
 
-
-/* E[PN]Integer: match positive and negative literal integer values */
+/* E[PN]Integer: match positive and negative literal integer values. */
 PInteger   [0-9]+
 NInteger  -[0-9]+
 
@@ -216,11 +217,7 @@
 target          { return TARGET; }
 triple          { return TRIPLE; }
 deplibs         { return DEPLIBS; }
-endian          { return ENDIAN; }
-pointersize     { return POINTERSIZE; }
 datalayout      { return DATALAYOUT; }
-little          { return LITTLE; }
-big             { return BIG; }
 volatile        { return VOLATILE; }
 align           { return ALIGN;  }
 section         { return SECTION; }
@@ -323,10 +320,15 @@
 shufflevector   { RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); }
 
 
-{VarID}         {
+{LocalVarName}  {
                   UnEscapeLexed(yytext+1);
                   llvmAsmlval.StrVal = strdup(yytext+1);             // Skip %
-                  return VAR_ID;
+                  return LOCALVAR;
+                }
+{GlobalVarName} {
+                  UnEscapeLexed(yytext+1);
+                  llvmAsmlval.StrVal = strdup(yytext+1);             // Skip @
+                  return GLOBALVAR;
                 }
 {Label}         {
                   yytext[strlen(yytext)-1] = 0;  // nuke colon
@@ -350,6 +352,12 @@
                    llvmAsmlval.StrVal = strdup(yytext+1);  // Nuke start quote
                    return STRINGCONSTANT;
                  }
+{AtStringConstant} {
+                     yytext[strlen(yytext)-1] = 0;           // nuke end quote
+                     llvmAsmlval.StrVal = strdup(yytext+2);  // Nuke @, quote
+                     return ATSTRINGCONSTANT;
+                   }
+
 
 
 {PInteger}      { llvmAsmlval.UInt64Val = atoull(yytext); return EUINT64VAL; }
@@ -366,20 +374,19 @@
                    return yytext[0] == 's' ? ESINT64VAL : EUINT64VAL;
                  }
 
-{EPInteger}     {
+{LocalVarID}     {
                   uint64_t Val = atoull(yytext+1);
                   if ((unsigned)Val != Val)
                     GenerateError("Invalid value number (too large)!");
                   llvmAsmlval.UIntVal = unsigned(Val);
-                  return UINTVAL;
+                  return LOCALVAL_ID;
                 }
-{ENInteger}     {
-                  uint64_t Val = atoull(yytext+2);
-                  // +1:  we have bigger negative range
-                  if (Val > (uint64_t)INT32_MAX+1)
-                    GenerateError("Constant too large for signed 32 bits!");
-                  llvmAsmlval.SIntVal = (int)-Val;
-                  return SINTVAL;
+{GlobalVarID}   {
+                  uint64_t Val = atoull(yytext+1);
+                  if ((unsigned)Val != Val)
+                    GenerateError("Invalid value number (too large)!");
+                  llvmAsmlval.UIntVal = unsigned(Val);
+                  return GLOBALVAL_ID;
                 }
 
 {FPConstant}    { llvmAsmlval.FPVal = atof(yytext); return FPVAL; }
diff --git a/lib/AsmParser/llvmAsmParser.cpp.cvs b/lib/AsmParser/llvmAsmParser.cpp.cvs
index 7af40bb..0188842 100644
--- a/lib/AsmParser/llvmAsmParser.cpp.cvs
+++ b/lib/AsmParser/llvmAsmParser.cpp.cvs
@@ -1,7 +1,7 @@
-/* A Bison parser, made from /usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y, by GNU bison 1.75.  */
+/* A Bison parser, made by GNU Bison 2.1.  */
 
 /* Skeleton parser for Yacc-like parsing with Bison,
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -15,8 +15,8 @@
 
    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.  */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 /* As a special exception, when this file is copied by Bison into a
    Bison output file, you may use that output file without restriction.
@@ -34,16 +34,21 @@
    USER NAME SPACE" below.  */
 
 /* Identify Bison output.  */
-#define YYBISON	1
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
 
 /* Pure parsers.  */
-#define YYPURE	0
+#define YYPURE 0
 
 /* Using locations.  */
 #define YYLSP_NEEDED 0
 
-/* If NAME_PREFIX is specified substitute the variables and functions
-   names.  */
+/* Substitute the variable and function names.  */
 #define yyparse llvmAsmparse
 #define yylex   llvmAsmlex
 #define yyerror llvmAsmerror
@@ -61,8 +66,8 @@
    enum yytokentype {
      ESINT64VAL = 258,
      EUINT64VAL = 259,
-     SINTVAL = 260,
-     UINTVAL = 261,
+     LOCALVAL_ID = 260,
+     GLOBALVAL_ID = 261,
      FPVAL = 262,
      VOID = 263,
      INTTYPE = 264,
@@ -70,131 +75,130 @@
      DOUBLE = 266,
      LABEL = 267,
      TYPE = 268,
-     VAR_ID = 269,
-     LABELSTR = 270,
-     STRINGCONSTANT = 271,
-     IMPLEMENTATION = 272,
-     ZEROINITIALIZER = 273,
-     TRUETOK = 274,
-     FALSETOK = 275,
-     BEGINTOK = 276,
-     ENDTOK = 277,
-     DECLARE = 278,
-     DEFINE = 279,
-     GLOBAL = 280,
-     CONSTANT = 281,
-     SECTION = 282,
-     VOLATILE = 283,
-     TO = 284,
-     DOTDOTDOT = 285,
-     NULL_TOK = 286,
-     UNDEF = 287,
-     INTERNAL = 288,
-     LINKONCE = 289,
-     WEAK = 290,
-     APPENDING = 291,
-     DLLIMPORT = 292,
-     DLLEXPORT = 293,
-     EXTERN_WEAK = 294,
-     OPAQUE = 295,
-     EXTERNAL = 296,
-     TARGET = 297,
-     TRIPLE = 298,
-     ENDIAN = 299,
-     POINTERSIZE = 300,
-     LITTLE = 301,
-     BIG = 302,
-     ALIGN = 303,
-     DEPLIBS = 304,
-     CALL = 305,
-     TAIL = 306,
-     ASM_TOK = 307,
-     MODULE = 308,
-     SIDEEFFECT = 309,
-     CC_TOK = 310,
-     CCC_TOK = 311,
-     CSRETCC_TOK = 312,
-     FASTCC_TOK = 313,
-     COLDCC_TOK = 314,
-     X86_STDCALLCC_TOK = 315,
-     X86_FASTCALLCC_TOK = 316,
-     DATALAYOUT = 317,
-     RET = 318,
-     BR = 319,
-     SWITCH = 320,
-     INVOKE = 321,
-     UNWIND = 322,
-     UNREACHABLE = 323,
-     ADD = 324,
-     SUB = 325,
-     MUL = 326,
-     UDIV = 327,
-     SDIV = 328,
-     FDIV = 329,
-     UREM = 330,
-     SREM = 331,
-     FREM = 332,
-     AND = 333,
-     OR = 334,
-     XOR = 335,
-     ICMP = 336,
-     FCMP = 337,
-     EQ = 338,
-     NE = 339,
-     SLT = 340,
-     SGT = 341,
-     SLE = 342,
-     SGE = 343,
-     ULT = 344,
-     UGT = 345,
-     ULE = 346,
-     UGE = 347,
-     OEQ = 348,
-     ONE = 349,
-     OLT = 350,
-     OGT = 351,
-     OLE = 352,
-     OGE = 353,
-     ORD = 354,
-     UNO = 355,
-     UEQ = 356,
-     UNE = 357,
-     MALLOC = 358,
-     ALLOCA = 359,
-     FREE = 360,
-     LOAD = 361,
-     STORE = 362,
-     GETELEMENTPTR = 363,
-     TRUNC = 364,
-     ZEXT = 365,
-     SEXT = 366,
-     FPTRUNC = 367,
-     FPEXT = 368,
-     BITCAST = 369,
-     UITOFP = 370,
-     SITOFP = 371,
-     FPTOUI = 372,
-     FPTOSI = 373,
-     INTTOPTR = 374,
-     PTRTOINT = 375,
-     PHI_TOK = 376,
-     SELECT = 377,
-     SHL = 378,
-     LSHR = 379,
-     ASHR = 380,
-     VAARG = 381,
-     EXTRACTELEMENT = 382,
-     INSERTELEMENT = 383,
-     SHUFFLEVECTOR = 384,
-     NORETURN = 385,
-     DEFAULT = 386,
-     HIDDEN = 387
+     LOCALVAR = 269,
+     GLOBALVAR = 270,
+     LABELSTR = 271,
+     STRINGCONSTANT = 272,
+     ATSTRINGCONSTANT = 273,
+     IMPLEMENTATION = 274,
+     ZEROINITIALIZER = 275,
+     TRUETOK = 276,
+     FALSETOK = 277,
+     BEGINTOK = 278,
+     ENDTOK = 279,
+     DECLARE = 280,
+     DEFINE = 281,
+     GLOBAL = 282,
+     CONSTANT = 283,
+     SECTION = 284,
+     VOLATILE = 285,
+     TO = 286,
+     DOTDOTDOT = 287,
+     NULL_TOK = 288,
+     UNDEF = 289,
+     INTERNAL = 290,
+     LINKONCE = 291,
+     WEAK = 292,
+     APPENDING = 293,
+     DLLIMPORT = 294,
+     DLLEXPORT = 295,
+     EXTERN_WEAK = 296,
+     OPAQUE = 297,
+     EXTERNAL = 298,
+     TARGET = 299,
+     TRIPLE = 300,
+     ALIGN = 301,
+     DEPLIBS = 302,
+     CALL = 303,
+     TAIL = 304,
+     ASM_TOK = 305,
+     MODULE = 306,
+     SIDEEFFECT = 307,
+     CC_TOK = 308,
+     CCC_TOK = 309,
+     CSRETCC_TOK = 310,
+     FASTCC_TOK = 311,
+     COLDCC_TOK = 312,
+     X86_STDCALLCC_TOK = 313,
+     X86_FASTCALLCC_TOK = 314,
+     DATALAYOUT = 315,
+     RET = 316,
+     BR = 317,
+     SWITCH = 318,
+     INVOKE = 319,
+     UNWIND = 320,
+     UNREACHABLE = 321,
+     ADD = 322,
+     SUB = 323,
+     MUL = 324,
+     UDIV = 325,
+     SDIV = 326,
+     FDIV = 327,
+     UREM = 328,
+     SREM = 329,
+     FREM = 330,
+     AND = 331,
+     OR = 332,
+     XOR = 333,
+     ICMP = 334,
+     FCMP = 335,
+     EQ = 336,
+     NE = 337,
+     SLT = 338,
+     SGT = 339,
+     SLE = 340,
+     SGE = 341,
+     ULT = 342,
+     UGT = 343,
+     ULE = 344,
+     UGE = 345,
+     OEQ = 346,
+     ONE = 347,
+     OLT = 348,
+     OGT = 349,
+     OLE = 350,
+     OGE = 351,
+     ORD = 352,
+     UNO = 353,
+     UEQ = 354,
+     UNE = 355,
+     MALLOC = 356,
+     ALLOCA = 357,
+     FREE = 358,
+     LOAD = 359,
+     STORE = 360,
+     GETELEMENTPTR = 361,
+     TRUNC = 362,
+     ZEXT = 363,
+     SEXT = 364,
+     FPTRUNC = 365,
+     FPEXT = 366,
+     BITCAST = 367,
+     UITOFP = 368,
+     SITOFP = 369,
+     FPTOUI = 370,
+     FPTOSI = 371,
+     INTTOPTR = 372,
+     PTRTOINT = 373,
+     PHI_TOK = 374,
+     SELECT = 375,
+     SHL = 376,
+     LSHR = 377,
+     ASHR = 378,
+     VAARG = 379,
+     EXTRACTELEMENT = 380,
+     INSERTELEMENT = 381,
+     SHUFFLEVECTOR = 382,
+     NORETURN = 383,
+     DEFAULT = 384,
+     HIDDEN = 385
    };
 #endif
+/* Tokens.  */
 #define ESINT64VAL 258
 #define EUINT64VAL 259
-#define SINTVAL 260
-#define UINTVAL 261
+#define LOCALVAL_ID 260
+#define GLOBALVAL_ID 261
 #define FPVAL 262
 #define VOID 263
 #define INTTYPE 264
@@ -202,131 +206,129 @@
 #define DOUBLE 266
 #define LABEL 267
 #define TYPE 268
-#define VAR_ID 269
-#define LABELSTR 270
-#define STRINGCONSTANT 271
-#define IMPLEMENTATION 272
-#define ZEROINITIALIZER 273
-#define TRUETOK 274
-#define FALSETOK 275
-#define BEGINTOK 276
-#define ENDTOK 277
-#define DECLARE 278
-#define DEFINE 279
-#define GLOBAL 280
-#define CONSTANT 281
-#define SECTION 282
-#define VOLATILE 283
-#define TO 284
-#define DOTDOTDOT 285
-#define NULL_TOK 286
-#define UNDEF 287
-#define INTERNAL 288
-#define LINKONCE 289
-#define WEAK 290
-#define APPENDING 291
-#define DLLIMPORT 292
-#define DLLEXPORT 293
-#define EXTERN_WEAK 294
-#define OPAQUE 295
-#define EXTERNAL 296
-#define TARGET 297
-#define TRIPLE 298
-#define ENDIAN 299
-#define POINTERSIZE 300
-#define LITTLE 301
-#define BIG 302
-#define ALIGN 303
-#define DEPLIBS 304
-#define CALL 305
-#define TAIL 306
-#define ASM_TOK 307
-#define MODULE 308
-#define SIDEEFFECT 309
-#define CC_TOK 310
-#define CCC_TOK 311
-#define CSRETCC_TOK 312
-#define FASTCC_TOK 313
-#define COLDCC_TOK 314
-#define X86_STDCALLCC_TOK 315
-#define X86_FASTCALLCC_TOK 316
-#define DATALAYOUT 317
-#define RET 318
-#define BR 319
-#define SWITCH 320
-#define INVOKE 321
-#define UNWIND 322
-#define UNREACHABLE 323
-#define ADD 324
-#define SUB 325
-#define MUL 326
-#define UDIV 327
-#define SDIV 328
-#define FDIV 329
-#define UREM 330
-#define SREM 331
-#define FREM 332
-#define AND 333
-#define OR 334
-#define XOR 335
-#define ICMP 336
-#define FCMP 337
-#define EQ 338
-#define NE 339
-#define SLT 340
-#define SGT 341
-#define SLE 342
-#define SGE 343
-#define ULT 344
-#define UGT 345
-#define ULE 346
-#define UGE 347
-#define OEQ 348
-#define ONE 349
-#define OLT 350
-#define OGT 351
-#define OLE 352
-#define OGE 353
-#define ORD 354
-#define UNO 355
-#define UEQ 356
-#define UNE 357
-#define MALLOC 358
-#define ALLOCA 359
-#define FREE 360
-#define LOAD 361
-#define STORE 362
-#define GETELEMENTPTR 363
-#define TRUNC 364
-#define ZEXT 365
-#define SEXT 366
-#define FPTRUNC 367
-#define FPEXT 368
-#define BITCAST 369
-#define UITOFP 370
-#define SITOFP 371
-#define FPTOUI 372
-#define FPTOSI 373
-#define INTTOPTR 374
-#define PTRTOINT 375
-#define PHI_TOK 376
-#define SELECT 377
-#define SHL 378
-#define LSHR 379
-#define ASHR 380
-#define VAARG 381
-#define EXTRACTELEMENT 382
-#define INSERTELEMENT 383
-#define SHUFFLEVECTOR 384
-#define NORETURN 385
-#define DEFAULT 386
-#define HIDDEN 387
+#define LOCALVAR 269
+#define GLOBALVAR 270
+#define LABELSTR 271
+#define STRINGCONSTANT 272
+#define ATSTRINGCONSTANT 273
+#define IMPLEMENTATION 274
+#define ZEROINITIALIZER 275
+#define TRUETOK 276
+#define FALSETOK 277
+#define BEGINTOK 278
+#define ENDTOK 279
+#define DECLARE 280
+#define DEFINE 281
+#define GLOBAL 282
+#define CONSTANT 283
+#define SECTION 284
+#define VOLATILE 285
+#define TO 286
+#define DOTDOTDOT 287
+#define NULL_TOK 288
+#define UNDEF 289
+#define INTERNAL 290
+#define LINKONCE 291
+#define WEAK 292
+#define APPENDING 293
+#define DLLIMPORT 294
+#define DLLEXPORT 295
+#define EXTERN_WEAK 296
+#define OPAQUE 297
+#define EXTERNAL 298
+#define TARGET 299
+#define TRIPLE 300
+#define ALIGN 301
+#define DEPLIBS 302
+#define CALL 303
+#define TAIL 304
+#define ASM_TOK 305
+#define MODULE 306
+#define SIDEEFFECT 307
+#define CC_TOK 308
+#define CCC_TOK 309
+#define CSRETCC_TOK 310
+#define FASTCC_TOK 311
+#define COLDCC_TOK 312
+#define X86_STDCALLCC_TOK 313
+#define X86_FASTCALLCC_TOK 314
+#define DATALAYOUT 315
+#define RET 316
+#define BR 317
+#define SWITCH 318
+#define INVOKE 319
+#define UNWIND 320
+#define UNREACHABLE 321
+#define ADD 322
+#define SUB 323
+#define MUL 324
+#define UDIV 325
+#define SDIV 326
+#define FDIV 327
+#define UREM 328
+#define SREM 329
+#define FREM 330
+#define AND 331
+#define OR 332
+#define XOR 333
+#define ICMP 334
+#define FCMP 335
+#define EQ 336
+#define NE 337
+#define SLT 338
+#define SGT 339
+#define SLE 340
+#define SGE 341
+#define ULT 342
+#define UGT 343
+#define ULE 344
+#define UGE 345
+#define OEQ 346
+#define ONE 347
+#define OLT 348
+#define OGT 349
+#define OLE 350
+#define OGE 351
+#define ORD 352
+#define UNO 353
+#define UEQ 354
+#define UNE 355
+#define MALLOC 356
+#define ALLOCA 357
+#define FREE 358
+#define LOAD 359
+#define STORE 360
+#define GETELEMENTPTR 361
+#define TRUNC 362
+#define ZEXT 363
+#define SEXT 364
+#define FPTRUNC 365
+#define FPEXT 366
+#define BITCAST 367
+#define UITOFP 368
+#define SITOFP 369
+#define FPTOUI 370
+#define FPTOSI 371
+#define INTTOPTR 372
+#define PTRTOINT 373
+#define PHI_TOK 374
+#define SELECT 375
+#define SHL 376
+#define LSHR 377
+#define ASHR 378
+#define VAARG 379
+#define EXTRACTELEMENT 380
+#define INSERTELEMENT 381
+#define SHUFFLEVECTOR 382
+#define NORETURN 383
+#define DEFAULT 384
+#define HIDDEN 385
 
 
 
 
 /* Copy the first part of user declarations.  */
-#line 14 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 14 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
 
 #include "ParserInternals.h"
 #include "llvm/CallingConv.h"
@@ -586,12 +588,12 @@
 
 static const Type *getTypeVal(const ValID &D, bool DoNotImprovise = false) {
   switch (D.Type) {
-  case ValID::NumberVal:               // Is it a numbered definition?
+  case ValID::LocalID:               // Is it a numbered definition?
     // Module constants occupy the lowest numbered slots...
-    if ((unsigned)D.Num < CurModule.Types.size())
-      return CurModule.Types[(unsigned)D.Num];
+    if (D.Num < CurModule.Types.size())
+      return CurModule.Types[D.Num];
     break;
-  case ValID::NameVal:                 // Is it a named definition?
+  case ValID::LocalName:                 // Is it a named definition?
     if (const Type *N = CurModule.CurrentModule->getTypeByName(D.Name)) {
       D.destroy();  // Free old strdup'd memory...
       return N;
@@ -610,11 +612,11 @@
 
 
   if (inFunctionScope()) {
-    if (D.Type == ValID::NameVal) {
+    if (D.Type == ValID::LocalName) {
       GenerateError("Reference to an undefined type: '" + D.getName() + "'");
       return 0;
     } else {
-      GenerateError("Reference to an undefined type: #" + itostr(D.Num));
+      GenerateError("Reference to an undefined type: #" + utostr(D.Num));
       return 0;
     }
   }
@@ -628,13 +630,6 @@
   return Typ;
  }
 
-static Value *lookupInSymbolTable(const Type *Ty, const std::string &Name) {
-  SymbolTable &SymTab =
-    inFunctionScope() ? CurFun.CurrentFunction->getValueSymbolTable() :
-                        CurModule.CurrentModule->getValueSymbolTable();
-  return SymTab.lookup(Ty, Name);
-}
-
 // getValNonImprovising - Look up the value specified by the provided type and
 // the provided ValID.  If the value exists and has already been defined, return
 // it.  Otherwise return null.
@@ -647,29 +642,39 @@
   }
 
   switch (D.Type) {
-  case ValID::NumberVal: {                 // Is it a numbered definition?
-    unsigned Num = (unsigned)D.Num;
-
-    // Module constants occupy the lowest numbered slots...
-    std::map<const Type*,ValueList>::iterator VI = CurModule.Values.find(Ty);
-    if (VI != CurModule.Values.end()) {
-      if (Num < VI->second.size())
-        return VI->second[Num];
-      Num -= VI->second.size();
-    }
-
-    // Make sure that our type is within bounds
-    VI = CurFun.Values.find(Ty);
+  case ValID::LocalID: {                 // Is it a numbered definition?
+    // Module constants occupy the lowest numbered slots.
+    std::map<const Type*,ValueList>::iterator VI = CurFun.Values.find(Ty);
+    // Make sure that our type is within bounds.
     if (VI == CurFun.Values.end()) return 0;
 
-    // Check that the number is within bounds...
-    if (VI->second.size() <= Num) return 0;
+    // Check that the number is within bounds.
+    if (D.Num >= VI->second.size()) return 0;
 
+    return VI->second[D.Num];
+  }
+  case ValID::GlobalID: {                 // Is it a numbered definition?
+    unsigned Num = D.Num;
+    
+    // Module constants occupy the lowest numbered slots...
+    std::map<const Type*,ValueList>::iterator VI = CurModule.Values.find(Ty);
+    if (VI == CurModule.Values.end()) return 0;
+    if (D.Num >= VI->second.size()) return 0;
     return VI->second[Num];
   }
-
-  case ValID::NameVal: {                // Is it a named definition?
-    Value *N = lookupInSymbolTable(Ty, std::string(D.Name));
+    
+  case ValID::LocalName: {                // Is it a named definition?
+    if (!inFunctionScope()) return 0;
+    SymbolTable &SymTab = CurFun.CurrentFunction->getValueSymbolTable();
+    Value *N = SymTab.lookup(Ty, D.Name);
+    if (N == 0) return 0;
+    
+    D.destroy();  // Free old strdup'd memory...
+    return N;
+  }
+  case ValID::GlobalName: {                // Is it a named definition?
+    SymbolTable &SymTab = CurModule.CurrentModule->getValueSymbolTable();
+    Value *N = SymTab.lookup(Ty, D.Name);
     if (N == 0) return 0;
 
     D.destroy();  // Free old strdup'd memory...
@@ -804,12 +809,12 @@
   default: 
     GenerateError("Illegal label reference " + ID.getName());
     return 0;
-  case ValID::NumberVal:                // Is it a numbered definition?
-    if (unsigned(ID.Num) >= CurFun.NumberedBlocks.size())
+  case ValID::LocalID:                // Is it a numbered definition?
+    if (ID.Num >= CurFun.NumberedBlocks.size())
       CurFun.NumberedBlocks.resize(ID.Num+1);
     BB = CurFun.NumberedBlocks[ID.Num];
     break;
-  case ValID::NameVal:                  // Is it a named definition?
+  case ValID::LocalName:                  // Is it a named definition?
     Name = ID.Name;
     if (Value *N = CurFun.CurrentFunction->
                    getValueSymbolTable().lookup(Type::LabelTy, Name))
@@ -834,7 +839,7 @@
 
   // Otherwise this block has not been seen before.
   BB = new BasicBlock("", CurFun.CurrentFunction);
-  if (ID.Type == ValID::NameVal) {
+  if (ID.Type == ValID::LocalName) {
     BB->setName(ID.Name);
   } else {
     CurFun.NumberedBlocks[ID.Num] = BB;
@@ -901,7 +906,7 @@
         // resolver table
         InsertValue(V, *FutureLateResolvers);
       } else {
-        if (DID.Type == ValID::NameVal) {
+        if (DID.Type == ValID::LocalName || DID.Type == ValID::GlobalName) {
           GenerateError("Reference to an invalid definition: '" +DID.getName()+
                          "' of type '" + V->getType()->getDescription() + "'",
                          PHI->second.second);
@@ -926,8 +931,8 @@
 //
 static void ResolveTypeTo(char *Name, const Type *ToTy) {
   ValID D;
-  if (Name) D = ValID::create(Name);
-  else      D = ValID::create((int)CurModule.Types.size());
+  if (Name) D = ValID::createLocalName(Name);
+  else      D = ValID::createLocalID(CurModule.Types.size());
 
   std::map<ValID, PATypeHolder>::iterator I =
     CurModule.LateResolveTypes.find(D);
@@ -942,26 +947,25 @@
 // assumed to be a malloc'd string buffer, and is free'd by this function.
 //
 static void setValueName(Value *V, char *NameStr) {
-  if (NameStr) {
-    std::string Name(NameStr);      // Copy string
-    free(NameStr);                  // Free old string
+  if (!NameStr) return;
+  std::string Name(NameStr);      // Copy string
+  free(NameStr);                  // Free old string
 
-    if (V->getType() == Type::VoidTy) {
-      GenerateError("Can't assign name '" + Name+"' to value with void type!");
-      return;
-    }
-
-    assert(inFunctionScope() && "Must be in function scope!");
-    SymbolTable &ST = CurFun.CurrentFunction->getValueSymbolTable();
-    if (ST.lookup(V->getType(), Name)) {
-      GenerateError("Redefinition of value '" + Name + "' of type '" +
-                     V->getType()->getDescription() + "'!");
-      return;
-    }
-
-    // Set the name.
-    V->setName(Name);
+  if (V->getType() == Type::VoidTy) {
+    GenerateError("Can't assign name '" + Name+"' to value with void type!");
+    return;
   }
+
+  assert(inFunctionScope() && "Must be in function scope!");
+  SymbolTable &ST = CurFun.CurrentFunction->getValueSymbolTable();
+  if (ST.lookup(V->getType(), Name)) {
+    GenerateError("Redefinition of value '" + Name + "' of type '" +
+                   V->getType()->getDescription() + "'!");
+    return;
+  }
+
+  // Set the name.
+  V->setName(Name);
 }
 
 /// ParseGlobalVariable - Handle parsing of a global.  If Initializer is null,
@@ -989,9 +993,9 @@
   // object.
   ValID ID;
   if (!Name.empty()) {
-    ID = ValID::create((char*)Name.c_str());
+    ID = ValID::createGlobalName((char*)Name.c_str());
   } else {
-    ID = ValID::create((int)CurModule.Values[PTy].size());
+    ID = ValID::createGlobalID(CurModule.Values[PTy].size());
   }
 
   if (GlobalValue *FWGV = CurModule.GetForwardRefForGlobal(PTy, ID)) {
@@ -1209,9 +1213,14 @@
 # define YYERROR_VERBOSE 0
 #endif
 
-#ifndef YYSTYPE
-#line 883 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-typedef union {
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 885 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+typedef union YYSTYPE {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
   llvm::BasicBlock                       *BasicBlockVal;
@@ -1253,47 +1262,63 @@
   llvm::Instruction::MemoryOps      MemOpVal;
   llvm::Instruction::CastOps        CastOpVal;
   llvm::Instruction::OtherOps       OtherOpVal;
-  llvm::Module::Endianness          Endianness;
   llvm::ICmpInst::Predicate         IPredicate;
   llvm::FCmpInst::Predicate         FPredicate;
-} yystype;
-/* Line 188 of /usr/local/share/bison/yacc.c.  */
-#line 1262 "llvmAsmParser.tab.c"
-# define YYSTYPE yystype
+} YYSTYPE;
+/* Line 196 of yacc.c.  */
+#line 1270 "llvmAsmParser.tab.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
 #endif
 
-#ifndef YYLTYPE
-typedef struct yyltype
-{
-  int first_line;
-  int first_column;
-  int last_line;
-  int last_column;
-} yyltype;
-# define YYLTYPE yyltype
-# define YYLTYPE_IS_TRIVIAL 1
-#endif
+
 
 /* Copy the second part of user declarations.  */
 
 
-/* Line 213 of /usr/local/share/bison/yacc.c.  */
-#line 1283 "llvmAsmParser.tab.c"
+/* Line 219 of yacc.c.  */
+#line 1282 "llvmAsmParser.tab.c"
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#ifndef YY_
+# if YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
 
 #if ! defined (yyoverflow) || YYERROR_VERBOSE
 
 /* The parser invokes alloca or malloc; define the necessary symbols.  */
 
-# if YYSTACK_USE_ALLOCA
-#  define YYSTACK_ALLOC alloca
-# else
-#  ifndef YYSTACK_USE_ALLOCA
-#   if defined (alloca) || defined (_ALLOCA_H)
-#    define YYSTACK_ALLOC alloca
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
 #   else
-#    ifdef __GNUC__
-#     define YYSTACK_ALLOC __builtin_alloca
+#    define YYSTACK_ALLOC alloca
+#    if defined (__STDC__) || defined (__cplusplus)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     define YYINCLUDED_STDLIB_H
 #    endif
 #   endif
 #  endif
@@ -1302,50 +1327,76 @@
 # ifdef YYSTACK_ALLOC
    /* Pacify GCC's `empty if-body' warning. */
 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-# else
-#  if defined (__STDC__) || defined (__cplusplus)
-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   define YYSIZE_T size_t
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
 #  endif
-#  define YYSTACK_ALLOC malloc
-#  define YYSTACK_FREE free
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+#  endif
+#  ifdef __cplusplus
+extern "C" {
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifdef __cplusplus
+}
+#  endif
 # endif
 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
 
 
 #if (! defined (yyoverflow) \
      && (! defined (__cplusplus) \
-	 || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  short yyss;
+  short int yyss;
   YYSTYPE yyvs;
   };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
-      + YYSTACK_GAP_MAX)
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
+      + YYSTACK_GAP_MAXIMUM)
 
 /* Copy COUNT objects from FROM to TO.  The source and destination do
    not overlap.  */
 # ifndef YYCOPY
-#  if 1 < __GNUC__
+#  if defined (__GNUC__) && 1 < __GNUC__
 #   define YYCOPY(To, From, Count) \
       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
 #  else
 #   define YYCOPY(To, From, Count)		\
       do					\
 	{					\
-	  register YYSIZE_T yyi;		\
+	  YYSIZE_T yyi;				\
 	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];	\
+	    (To)[yyi] = (From)[yyi];		\
 	}					\
       while (0)
 #  endif
@@ -1362,7 +1413,7 @@
 	YYSIZE_T yynewbytes;						\
 	YYCOPY (&yyptr->Stack, Stack, yysize);				\
 	Stack = &yyptr->Stack;						\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX;	\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
 	yyptr += yynewbytes / sizeof (*yyptr);				\
       }									\
     while (0)
@@ -1372,28 +1423,29 @@
 #if defined (__STDC__) || defined (__cplusplus)
    typedef signed char yysigned_char;
 #else
-   typedef short yysigned_char;
+   typedef short int yysigned_char;
 #endif
 
 /* YYFINAL -- State number of the termination state. */
-#define YYFINAL  36
-#define YYLAST   1357
+#define YYFINAL  40
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   1476
 
 /* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS  147
+#define YYNTOKENS  145
 /* YYNNTS -- Number of nonterminals. */
 #define YYNNTS  79
 /* YYNRULES -- Number of rules. */
 #define YYNRULES  285
 /* YYNRULES -- Number of states. */
-#define YYNSTATES  569
+#define YYNSTATES  566
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   387
+#define YYMAXUTOK   385
 
-#define YYTRANSLATE(X) \
-  ((unsigned)(X) <= YYMAXUTOK ? yytranslate[X] : YYUNDEFTOK)
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
 static const unsigned char yytranslate[] =
@@ -1402,15 +1454,15 @@
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     137,   138,   135,     2,   134,     2,     2,     2,     2,     2,
+     135,   136,   133,     2,   132,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     142,   133,   143,     2,     2,     2,     2,     2,     2,     2,
+     140,   131,   141,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   139,   136,   141,     2,     2,     2,     2,     2,   146,
+       2,   137,   134,   139,     2,     2,     2,     2,     2,   144,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     140,     2,     2,   144,     2,   145,     2,     2,     2,     2,
+     138,     2,     2,   142,     2,   143,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1436,13 +1488,13 @@
       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132
+     125,   126,   127,   128,   129,   130
 };
 
 #if YYDEBUG
 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
    YYRHS.  */
-static const unsigned short yyprhs[] =
+static const unsigned short int yyprhs[] =
 {
        0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
       19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
@@ -1450,213 +1502,214 @@
       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,   122,   123,   125,   127,   129,   131,   133,   135,   137,
-     139,   140,   142,   143,   145,   147,   148,   150,   152,   154,
-     156,   157,   159,   161,   163,   165,   167,   169,   172,   174,
-     176,   177,   180,   182,   184,   185,   188,   189,   192,   193,
-     197,   200,   201,   203,   204,   208,   210,   213,   215,   217,
-     219,   221,   223,   225,   228,   230,   233,   239,   245,   251,
-     257,   261,   264,   270,   275,   278,   280,   282,   284,   288,
-     290,   294,   296,   297,   299,   303,   308,   312,   316,   321,
-     326,   330,   337,   343,   346,   349,   352,   355,   358,   361,
-     364,   367,   370,   373,   380,   386,   395,   402,   409,   417,
-     425,   432,   439,   448,   457,   461,   463,   465,   467,   469,
-     470,   472,   475,   476,   480,   481,   485,   489,   491,   495,
-     499,   500,   507,   508,   516,   517,   525,   528,   532,   534,
-     536,   538,   542,   546,   550,   554,   558,   562,   564,   565,
-     567,   569,   571,   572,   578,   582,   584,   588,   590,   591,
-     601,   603,   605,   610,   612,   614,   617,   621,   622,   624,
-     626,   628,   630,   632,   634,   636,   638,   640,   644,   646,
-     652,   654,   656,   658,   660,   663,   666,   669,   673,   676,
-     677,   679,   682,   685,   689,   699,   709,   718,   733,   735,
-     737,   744,   750,   753,   760,   768,   772,   778,   779,   780,
-     784,   787,   789,   795,   801,   808,   815,   820,   825,   832,
-     837,   842,   849,   856,   859,   868,   870,   872,   873,   877,
-     884,   888,   895,   898,   903,   910
+     119,   121,   122,   125,   126,   128,   130,   133,   134,   136,
+     138,   140,   142,   144,   146,   148,   150,   151,   153,   154,
+     156,   158,   159,   161,   163,   165,   167,   168,   170,   172,
+     174,   176,   178,   180,   183,   185,   187,   188,   191,   193,
+     195,   196,   199,   200,   203,   204,   208,   211,   212,   214,
+     215,   219,   221,   224,   226,   228,   230,   232,   234,   236,
+     239,   241,   244,   250,   256,   262,   268,   272,   275,   281,
+     286,   289,   291,   293,   295,   299,   301,   305,   307,   308,
+     310,   314,   319,   323,   327,   332,   337,   341,   348,   354,
+     357,   360,   363,   366,   369,   372,   375,   378,   381,   384,
+     391,   397,   406,   413,   420,   428,   436,   443,   450,   459,
+     468,   472,   474,   476,   478,   480,   481,   483,   486,   487,
+     491,   492,   496,   500,   502,   506,   510,   511,   518,   519,
+     527,   528,   536,   539,   543,   545,   549,   553,   557,   561,
+     563,   564,   570,   574,   576,   580,   582,   583,   593,   595,
+     597,   602,   604,   606,   609,   613,   614,   616,   618,   620,
+     622,   624,   626,   628,   630,   632,   636,   638,   644,   646,
+     648,   650,   652,   654,   656,   659,   662,   665,   669,   672,
+     673,   675,   678,   681,   685,   695,   705,   714,   729,   731,
+     733,   740,   746,   749,   756,   764,   768,   774,   775,   776,
+     780,   783,   785,   791,   797,   804,   811,   816,   821,   828,
+     833,   838,   845,   852,   855,   864,   866,   868,   869,   873,
+     880,   884,   891,   894,   899,   906
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
-static const short yyrhs[] =
+static const short int yyrhs[] =
 {
-     185,     0,    -1,     5,    -1,     6,    -1,    69,    -1,    70,
+     186,     0,    -1,    67,    -1,    68,    -1,    69,    -1,    70,
       -1,    71,    -1,    72,    -1,    73,    -1,    74,    -1,    75,
-      -1,    76,    -1,    77,    -1,    78,    -1,    79,    -1,    80,
+      -1,    76,    -1,    77,    -1,    78,    -1,   107,    -1,   108,
       -1,   109,    -1,   110,    -1,   111,    -1,   112,    -1,   113,
       -1,   114,    -1,   115,    -1,   116,    -1,   117,    -1,   118,
-      -1,   119,    -1,   120,    -1,   123,    -1,   124,    -1,   125,
+      -1,   121,    -1,   122,    -1,   123,    -1,    81,    -1,    82,
       -1,    83,    -1,    84,    -1,    85,    -1,    86,    -1,    87,
       -1,    88,    -1,    89,    -1,    90,    -1,    91,    -1,    92,
       -1,    93,    -1,    94,    -1,    95,    -1,    96,    -1,    97,
-      -1,    98,    -1,    99,    -1,   100,    -1,   101,    -1,   102,
-      -1,    89,    -1,    90,    -1,    91,    -1,    92,    -1,    19,
-      -1,    20,    -1,     9,    -1,    10,    -1,    11,    -1,   198,
-     133,    -1,    -1,    33,    -1,    35,    -1,    34,    -1,    36,
-      -1,    38,    -1,    37,    -1,    39,    -1,    41,    -1,    -1,
-     132,    -1,    -1,    37,    -1,    39,    -1,    -1,    33,    -1,
-      34,    -1,    35,    -1,    38,    -1,    -1,    56,    -1,    57,
-      -1,    58,    -1,    59,    -1,    60,    -1,    61,    -1,    55,
-       4,    -1,   110,    -1,   111,    -1,    -1,   165,   164,    -1,
-     130,    -1,   164,    -1,    -1,   167,   166,    -1,    -1,    48,
-       4,    -1,    -1,   134,    48,     4,    -1,    27,    16,    -1,
-      -1,   170,    -1,    -1,   134,   173,   172,    -1,   170,    -1,
-      48,     4,    -1,     9,    -1,    10,    -1,    11,    -1,    12,
-      -1,    40,    -1,   174,    -1,   175,   135,    -1,   210,    -1,
-     136,     4,    -1,   175,   137,   179,   138,   167,    -1,     8,
-     137,   179,   138,   167,    -1,   139,     4,   140,   175,   141,
-      -1,   142,     4,   140,   175,   143,    -1,   144,   180,   145,
-      -1,   144,   145,    -1,   142,   144,   180,   145,   143,    -1,
-     142,   144,   145,   143,    -1,   175,   165,    -1,   175,    -1,
-       8,    -1,   176,    -1,   178,   134,   176,    -1,   178,    -1,
-     178,   134,    30,    -1,    30,    -1,    -1,   175,    -1,   180,
-     134,   175,    -1,   175,   139,   183,   141,    -1,   175,   139,
-     141,    -1,   175,   146,    16,    -1,   175,   142,   183,   143,
-      -1,   175,   144,   183,   145,    -1,   175,   144,   145,    -1,
-     175,   142,   144,   183,   145,   143,    -1,   175,   142,   144,
-     145,   143,    -1,   175,    31,    -1,   175,    32,    -1,   175,
-     210,    -1,   175,   182,    -1,   175,    18,    -1,   155,     3,
-      -1,   155,     4,    -1,     9,    19,    -1,     9,    20,    -1,
-     156,     7,    -1,   151,   137,   181,    29,   175,   138,    -1,
-     108,   137,   181,   221,   138,    -1,   122,   137,   181,   134,
-     181,   134,   181,   138,    -1,   149,   137,   181,   134,   181,
-     138,    -1,   150,   137,   181,   134,   181,   138,    -1,    81,
-     153,   137,   181,   134,   181,   138,    -1,    82,   154,   137,
-     181,   134,   181,   138,    -1,   152,   137,   181,   134,   181,
-     138,    -1,   127,   137,   181,   134,   181,   138,    -1,   128,
-     137,   181,   134,   181,   134,   181,   138,    -1,   129,   137,
-     181,   134,   181,   134,   181,   138,    -1,   183,   134,   181,
-      -1,   181,    -1,    25,    -1,    26,    -1,   186,    -1,    -1,
-     187,    -1,   186,   187,    -1,    -1,    24,   188,   206,    -1,
-      -1,    23,   189,   207,    -1,    53,    52,   193,    -1,    17,
-      -1,   157,    13,   175,    -1,   157,    13,     8,    -1,    -1,
-     157,   160,   184,   181,   190,   172,    -1,    -1,   157,   158,
-     160,   184,   181,   191,   172,    -1,    -1,   157,   159,   160,
-     184,   175,   192,   172,    -1,    42,   195,    -1,    49,   133,
-     196,    -1,    16,    -1,    47,    -1,    46,    -1,    44,   133,
-     194,    -1,    45,   133,     4,    -1,    43,   133,    16,    -1,
-      62,   133,    16,    -1,   139,   197,   141,    -1,   197,   134,
-      16,    -1,    16,    -1,    -1,    14,    -1,    16,    -1,   198,
-      -1,    -1,   200,   134,   175,   165,   199,    -1,   175,   165,
-     199,    -1,   200,    -1,   200,   134,    30,    -1,    30,    -1,
-      -1,   163,   177,   198,   137,   201,   138,   167,   171,   168,
-      -1,    21,    -1,   144,    -1,   162,   160,   202,   203,    -1,
-      22,    -1,   145,    -1,   213,   205,    -1,   161,   160,   202,
-      -1,    -1,    54,    -1,     3,    -1,     4,    -1,     7,    -1,
-      19,    -1,    20,    -1,    31,    -1,    32,    -1,    18,    -1,
-     142,   183,   143,    -1,   182,    -1,    52,   208,    16,   134,
-      16,    -1,   148,    -1,   198,    -1,   210,    -1,   209,    -1,
-     175,   211,    -1,   213,   214,    -1,   204,   214,    -1,   215,
-     157,   216,    -1,   215,   218,    -1,    -1,    15,    -1,    63,
-     212,    -1,    63,     8,    -1,    64,    12,   211,    -1,    64,
-       9,   211,   134,    12,   211,   134,    12,   211,    -1,    65,
-     155,   211,   134,    12,   211,   139,   217,   141,    -1,    65,
-     155,   211,   134,    12,   211,   139,   141,    -1,    66,   163,
-     177,   211,   137,   220,   138,   167,    29,    12,   211,    67,
-      12,   211,    -1,    67,    -1,    68,    -1,   217,   155,   209,
-     134,    12,   211,    -1,   155,   209,   134,    12,   211,    -1,
-     157,   223,    -1,   175,   139,   211,   134,   211,   141,    -1,
-     219,   134,   139,   211,   134,   211,   141,    -1,   175,   211,
-     165,    -1,   220,   134,   175,   211,   165,    -1,    -1,    -1,
-     221,   134,   212,    -1,    51,    50,    -1,    50,    -1,   149,
-     175,   211,   134,   211,    -1,   150,   175,   211,   134,   211,
-      -1,    81,   153,   175,   211,   134,   211,    -1,    82,   154,
-     175,   211,   134,   211,    -1,   152,   212,   134,   212,    -1,
-     151,   212,    29,   175,    -1,   122,   212,   134,   212,   134,
-     212,    -1,   126,   212,   134,   175,    -1,   127,   212,   134,
-     212,    -1,   128,   212,   134,   212,   134,   212,    -1,   129,
-     212,   134,   212,   134,   212,    -1,   121,   219,    -1,   222,
-     163,   177,   211,   137,   220,   138,   167,    -1,   225,    -1,
-      28,    -1,    -1,   103,   175,   169,    -1,   103,   175,   134,
-       9,   211,   169,    -1,   104,   175,   169,    -1,   104,   175,
-     134,     9,   211,   169,    -1,   105,   212,    -1,   224,   106,
-     175,   211,    -1,   224,   107,   212,   134,   175,   211,    -1,
-     108,   175,   211,   221,    -1
+      -1,    98,    -1,    99,    -1,   100,    -1,    87,    -1,    88,
+      -1,    89,    -1,    90,    -1,    21,    -1,    22,    -1,     9,
+      -1,    10,    -1,    11,    -1,    14,    -1,    17,    -1,   154,
+      -1,    -1,   154,   131,    -1,    -1,    15,    -1,    18,    -1,
+     157,   131,    -1,    -1,    35,    -1,    37,    -1,    36,    -1,
+      38,    -1,    40,    -1,    39,    -1,    41,    -1,    43,    -1,
+      -1,   130,    -1,    -1,    39,    -1,    41,    -1,    -1,    35,
+      -1,    36,    -1,    37,    -1,    40,    -1,    -1,    54,    -1,
+      55,    -1,    56,    -1,    57,    -1,    58,    -1,    59,    -1,
+      53,     4,    -1,   108,    -1,   109,    -1,    -1,   166,   165,
+      -1,   128,    -1,   165,    -1,    -1,   168,   167,    -1,    -1,
+      46,     4,    -1,    -1,   132,    46,     4,    -1,    29,    17,
+      -1,    -1,   171,    -1,    -1,   132,   174,   173,    -1,   171,
+      -1,    46,     4,    -1,     9,    -1,    10,    -1,    11,    -1,
+      12,    -1,    42,    -1,   175,    -1,   176,   133,    -1,   208,
+      -1,   134,     4,    -1,   176,   135,   180,   136,   168,    -1,
+       8,   135,   180,   136,   168,    -1,   137,     4,   138,   176,
+     139,    -1,   140,     4,   138,   176,   141,    -1,   142,   181,
+     143,    -1,   142,   143,    -1,   140,   142,   181,   143,   141,
+      -1,   140,   142,   143,   141,    -1,   176,   166,    -1,   176,
+      -1,     8,    -1,   177,    -1,   179,   132,   177,    -1,   179,
+      -1,   179,   132,    32,    -1,    32,    -1,    -1,   176,    -1,
+     181,   132,   176,    -1,   176,   137,   184,   139,    -1,   176,
+     137,   139,    -1,   176,   144,    17,    -1,   176,   140,   184,
+     141,    -1,   176,   142,   184,   143,    -1,   176,   142,   143,
+      -1,   176,   140,   142,   184,   143,   141,    -1,   176,   140,
+     142,   143,   141,    -1,   176,    33,    -1,   176,    34,    -1,
+     176,   208,    -1,   176,   183,    -1,   176,    20,    -1,   152,
+       3,    -1,   152,     4,    -1,     9,    21,    -1,     9,    22,
+      -1,   153,     7,    -1,   148,   135,   182,    31,   176,   136,
+      -1,   106,   135,   182,   219,   136,    -1,   120,   135,   182,
+     132,   182,   132,   182,   136,    -1,   146,   135,   182,   132,
+     182,   136,    -1,   147,   135,   182,   132,   182,   136,    -1,
+      79,   150,   135,   182,   132,   182,   136,    -1,    80,   151,
+     135,   182,   132,   182,   136,    -1,   149,   135,   182,   132,
+     182,   136,    -1,   125,   135,   182,   132,   182,   136,    -1,
+     126,   135,   182,   132,   182,   132,   182,   136,    -1,   127,
+     135,   182,   132,   182,   132,   182,   136,    -1,   184,   132,
+     182,    -1,   182,    -1,    27,    -1,    28,    -1,   187,    -1,
+      -1,   188,    -1,   187,   188,    -1,    -1,    26,   189,   204,
+      -1,    -1,    25,   190,   205,    -1,    51,    50,   194,    -1,
+      19,    -1,   156,    13,   176,    -1,   156,    13,     8,    -1,
+      -1,   158,   161,   185,   182,   191,   173,    -1,    -1,   158,
+     159,   161,   185,   182,   192,   173,    -1,    -1,   158,   160,
+     161,   185,   176,   193,   173,    -1,    44,   195,    -1,    47,
+     131,   196,    -1,    17,    -1,    45,   131,    17,    -1,    60,
+     131,    17,    -1,   137,   197,   139,    -1,   197,   132,    17,
+      -1,    17,    -1,    -1,   198,   132,   176,   166,   155,    -1,
+     176,   166,   155,    -1,   198,    -1,   198,   132,    32,    -1,
+      32,    -1,    -1,   164,   178,   157,   135,   199,   136,   168,
+     172,   169,    -1,    23,    -1,   142,    -1,   163,   161,   200,
+     201,    -1,    24,    -1,   143,    -1,   211,   203,    -1,   162,
+     161,   200,    -1,    -1,    52,    -1,     3,    -1,     4,    -1,
+       7,    -1,    21,    -1,    22,    -1,    33,    -1,    34,    -1,
+      20,    -1,   140,   184,   141,    -1,   183,    -1,    50,   206,
+      17,   132,    17,    -1,     5,    -1,     6,    -1,   154,    -1,
+     157,    -1,   208,    -1,   207,    -1,   176,   209,    -1,   211,
+     212,    -1,   202,   212,    -1,   213,   156,   214,    -1,   213,
+     216,    -1,    -1,    16,    -1,    61,   210,    -1,    61,     8,
+      -1,    62,    12,   209,    -1,    62,     9,   209,   132,    12,
+     209,   132,    12,   209,    -1,    63,   152,   209,   132,    12,
+     209,   137,   215,   139,    -1,    63,   152,   209,   132,    12,
+     209,   137,   139,    -1,    64,   164,   178,   209,   135,   218,
+     136,   168,    31,    12,   209,    65,    12,   209,    -1,    65,
+      -1,    66,    -1,   215,   152,   207,   132,    12,   209,    -1,
+     152,   207,   132,    12,   209,    -1,   156,   221,    -1,   176,
+     137,   209,   132,   209,   139,    -1,   217,   132,   137,   209,
+     132,   209,   139,    -1,   176,   209,   166,    -1,   218,   132,
+     176,   209,   166,    -1,    -1,    -1,   219,   132,   210,    -1,
+      49,    48,    -1,    48,    -1,   146,   176,   209,   132,   209,
+      -1,   147,   176,   209,   132,   209,    -1,    79,   150,   176,
+     209,   132,   209,    -1,    80,   151,   176,   209,   132,   209,
+      -1,   149,   210,   132,   210,    -1,   148,   210,    31,   176,
+      -1,   120,   210,   132,   210,   132,   210,    -1,   124,   210,
+     132,   176,    -1,   125,   210,   132,   210,    -1,   126,   210,
+     132,   210,   132,   210,    -1,   127,   210,   132,   210,   132,
+     210,    -1,   119,   217,    -1,   220,   164,   178,   209,   135,
+     218,   136,   168,    -1,   223,    -1,    30,    -1,    -1,   101,
+     176,   170,    -1,   101,   176,   132,     9,   209,   170,    -1,
+     102,   176,   170,    -1,   102,   176,   132,     9,   209,   170,
+      -1,   103,   210,    -1,   222,   104,   176,   209,    -1,   222,
+     105,   210,   132,   176,   209,    -1,   106,   176,   209,   219,
+      -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const unsigned short yyrline[] =
+static const unsigned short int yyrline[] =
 {
-       0,  1031,  1031,  1032,  1042,  1042,  1042,  1042,  1042,  1042,
-    1042,  1042,  1042,  1043,  1043,  1043,  1044,  1044,  1044,  1044,
-    1044,  1044,  1044,  1045,  1045,  1045,  1045,  1045,  1046,  1046,
-    1046,  1048,  1048,  1049,  1049,  1050,  1050,  1051,  1051,  1052,
-    1052,  1056,  1056,  1057,  1057,  1058,  1058,  1059,  1059,  1060,
-    1060,  1061,  1061,  1062,  1062,  1063,  1064,  1069,  1070,  1070,
-    1073,  1077,  1083,  1084,  1085,  1086,  1087,  1091,  1092,  1093,
-    1097,  1098,  1102,  1103,  1104,  1108,  1109,  1110,  1111,  1112,
-    1115,  1115,  1116,  1117,  1118,  1119,  1120,  1121,  1129,  1130,
-    1133,  1134,  1139,  1140,  1143,  1144,  1151,  1151,  1158,  1158,
-    1167,  1175,  1175,  1181,  1181,  1183,  1188,  1201,  1201,  1201,
-    1201,  1204,  1208,  1212,  1219,  1224,  1232,  1250,  1268,  1273,
-    1285,  1295,  1299,  1309,  1316,  1323,  1330,  1335,  1340,  1347,
-    1348,  1355,  1362,  1370,  1375,  1386,  1414,  1430,  1459,  1487,
-    1512,  1531,  1556,  1575,  1587,  1594,  1657,  1667,  1677,  1683,
-    1689,  1694,  1699,  1707,  1719,  1740,  1748,  1754,  1765,  1770,
-    1775,  1784,  1790,  1796,  1805,  1809,  1817,  1817,  1828,  1833,
-    1841,  1842,  1846,  1846,  1850,  1850,  1853,  1856,  1868,  1892,
-    1903,  1903,  1912,  1912,  1920,  1920,  1930,  1933,  1939,  1952,
-    1953,  1955,  1959,  1968,  1972,  1977,  1979,  1984,  1989,  1998,
-    1998,  1999,  1999,  2001,  2011,  2022,  2026,  2035,  2044,  2049,
-    2155,  2155,  2157,  2166,  2166,  2168,  2173,  2185,  2189,  2194,
-    2198,  2202,  2206,  2210,  2214,  2218,  2222,  2226,  2251,  2255,
-    2269,  2273,  2279,  2279,  2285,  2294,  2298,  2307,  2318,  2327,
-    2339,  2352,  2356,  2360,  2365,  2375,  2394,  2403,  2470,  2474,
-    2481,  2492,  2505,  2514,  2525,  2535,  2543,  2551,  2554,  2555,
-    2562,  2566,  2571,  2592,  2609,  2622,  2635,  2644,  2656,  2664,
-    2671,  2677,  2683,  2689,  2704,  2767,  2772,  2776,  2783,  2790,
-    2798,  2805,  2813,  2821,  2835,  2852
+       0,  1032,  1032,  1032,  1032,  1032,  1032,  1032,  1032,  1032,
+    1032,  1033,  1033,  1033,  1034,  1034,  1034,  1034,  1034,  1034,
+    1035,  1035,  1035,  1035,  1035,  1035,  1036,  1036,  1036,  1038,
+    1038,  1039,  1039,  1040,  1040,  1041,  1041,  1042,  1042,  1046,
+    1046,  1047,  1047,  1048,  1048,  1049,  1049,  1050,  1050,  1051,
+    1051,  1052,  1052,  1053,  1054,  1059,  1060,  1060,  1062,  1062,
+    1063,  1063,  1067,  1071,  1076,  1076,  1078,  1082,  1088,  1089,
+    1090,  1091,  1092,  1096,  1097,  1098,  1102,  1103,  1107,  1108,
+    1109,  1113,  1114,  1115,  1116,  1117,  1120,  1121,  1122,  1123,
+    1124,  1125,  1126,  1127,  1134,  1135,  1138,  1139,  1144,  1145,
+    1148,  1149,  1156,  1157,  1163,  1164,  1172,  1180,  1181,  1186,
+    1187,  1188,  1193,  1206,  1206,  1206,  1206,  1209,  1213,  1217,
+    1224,  1229,  1237,  1255,  1273,  1278,  1290,  1300,  1304,  1314,
+    1321,  1328,  1335,  1340,  1345,  1352,  1353,  1360,  1367,  1375,
+    1380,  1391,  1419,  1435,  1464,  1492,  1517,  1536,  1561,  1580,
+    1592,  1599,  1665,  1675,  1685,  1691,  1697,  1702,  1707,  1715,
+    1727,  1748,  1756,  1762,  1773,  1778,  1783,  1792,  1798,  1804,
+    1813,  1817,  1825,  1825,  1836,  1841,  1849,  1850,  1854,  1854,
+    1858,  1858,  1861,  1864,  1876,  1900,  1911,  1911,  1921,  1921,
+    1929,  1929,  1939,  1942,  1948,  1961,  1965,  1970,  1972,  1977,
+    1982,  1991,  2001,  2012,  2016,  2025,  2034,  2039,  2145,  2145,
+    2147,  2156,  2156,  2158,  2163,  2175,  2179,  2184,  2188,  2192,
+    2196,  2200,  2204,  2208,  2212,  2216,  2241,  2245,  2259,  2263,
+    2267,  2271,  2277,  2277,  2283,  2292,  2296,  2305,  2316,  2325,
+    2337,  2350,  2354,  2358,  2363,  2373,  2392,  2401,  2468,  2472,
+    2479,  2490,  2503,  2512,  2523,  2533,  2541,  2549,  2552,  2553,
+    2560,  2564,  2569,  2590,  2607,  2620,  2633,  2642,  2654,  2662,
+    2669,  2675,  2681,  2687,  2702,  2766,  2771,  2775,  2782,  2789,
+    2797,  2804,  2812,  2820,  2834,  2851
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE
-/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals. */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "ESINT64VAL", "EUINT64VAL", "SINTVAL", 
-  "UINTVAL", "FPVAL", "VOID", "INTTYPE", "FLOAT", "DOUBLE", "LABEL", 
-  "TYPE", "VAR_ID", "LABELSTR", "STRINGCONSTANT", "IMPLEMENTATION", 
-  "ZEROINITIALIZER", "TRUETOK", "FALSETOK", "BEGINTOK", "ENDTOK", 
-  "DECLARE", "DEFINE", "GLOBAL", "CONSTANT", "SECTION", "VOLATILE", "TO", 
-  "DOTDOTDOT", "NULL_TOK", "UNDEF", "INTERNAL", "LINKONCE", "WEAK", 
-  "APPENDING", "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK", "OPAQUE", 
-  "EXTERNAL", "TARGET", "TRIPLE", "ENDIAN", "POINTERSIZE", "LITTLE", 
-  "BIG", "ALIGN", "DEPLIBS", "CALL", "TAIL", "ASM_TOK", "MODULE", 
-  "SIDEEFFECT", "CC_TOK", "CCC_TOK", "CSRETCC_TOK", "FASTCC_TOK", 
-  "COLDCC_TOK", "X86_STDCALLCC_TOK", "X86_FASTCALLCC_TOK", "DATALAYOUT", 
-  "RET", "BR", "SWITCH", "INVOKE", "UNWIND", "UNREACHABLE", "ADD", "SUB", 
-  "MUL", "UDIV", "SDIV", "FDIV", "UREM", "SREM", "FREM", "AND", "OR", 
-  "XOR", "ICMP", "FCMP", "EQ", "NE", "SLT", "SGT", "SLE", "SGE", "ULT", 
-  "UGT", "ULE", "UGE", "OEQ", "ONE", "OLT", "OGT", "OLE", "OGE", "ORD", 
-  "UNO", "UEQ", "UNE", "MALLOC", "ALLOCA", "FREE", "LOAD", "STORE", 
-  "GETELEMENTPTR", "TRUNC", "ZEXT", "SEXT", "FPTRUNC", "FPEXT", "BITCAST", 
-  "UITOFP", "SITOFP", "FPTOUI", "FPTOSI", "INTTOPTR", "PTRTOINT", 
-  "PHI_TOK", "SELECT", "SHL", "LSHR", "ASHR", "VAARG", "EXTRACTELEMENT", 
-  "INSERTELEMENT", "SHUFFLEVECTOR", "NORETURN", "DEFAULT", "HIDDEN", 
-  "'='", "','", "'*'", "'\\\\'", "'('", "')'", "'['", "'x'", "']'", "'<'", 
-  "'>'", "'{'", "'}'", "'c'", "$accept", "INTVAL", "ArithmeticOps", 
-  "LogicalOps", "CastOps", "ShiftOps", "IPredicates", "FPredicates", 
-  "IntType", "FPType", "OptAssign", "GVInternalLinkage", 
-  "GVExternalLinkage", "GVVisibilityStyle", "FunctionDeclareLinkage", 
-  "FunctionDefineLinkage", "OptCallingConv", "ParamAttr", "OptParamAttrs", 
-  "FuncAttr", "OptFuncAttrs", "OptAlign", "OptCAlign", "SectionString", 
-  "OptSection", "GlobalVarAttributes", "GlobalVarAttribute", "PrimType", 
-  "Types", "ArgType", "ResultTypes", "ArgTypeList", "ArgTypeListI", 
-  "TypeListI", "ConstVal", "ConstExpr", "ConstVector", "GlobalType", 
-  "Module", "DefinitionList", "Definition", "@1", "@2", "@3", "@4", "@5", 
-  "AsmBlock", "BigOrLittle", "TargetDefinition", "LibrariesDefinition", 
-  "LibList", "Name", "OptName", "ArgListH", "ArgList", "FunctionHeaderH", 
-  "BEGIN", "FunctionHeader", "END", "Function", "FunctionProto", 
-  "OptSideEffect", "ConstValueRef", "SymbolicValueRef", "ValueRef", 
-  "ResolvedVal", "BasicBlockList", "BasicBlock", "InstructionList", 
-  "BBTerminatorInst", "JumpTable", "Inst", "PHIList", "ValueRefList", 
-  "IndexList", "OptTailCall", "InstVal", "OptVolatile", "MemoryInst", 0
+  "$end", "error", "$undefined", "ESINT64VAL", "EUINT64VAL",
+  "LOCALVAL_ID", "GLOBALVAL_ID", "FPVAL", "VOID", "INTTYPE", "FLOAT",
+  "DOUBLE", "LABEL", "TYPE", "LOCALVAR", "GLOBALVAR", "LABELSTR",
+  "STRINGCONSTANT", "ATSTRINGCONSTANT", "IMPLEMENTATION",
+  "ZEROINITIALIZER", "TRUETOK", "FALSETOK", "BEGINTOK", "ENDTOK",
+  "DECLARE", "DEFINE", "GLOBAL", "CONSTANT", "SECTION", "VOLATILE", "TO",
+  "DOTDOTDOT", "NULL_TOK", "UNDEF", "INTERNAL", "LINKONCE", "WEAK",
+  "APPENDING", "DLLIMPORT", "DLLEXPORT", "EXTERN_WEAK", "OPAQUE",
+  "EXTERNAL", "TARGET", "TRIPLE", "ALIGN", "DEPLIBS", "CALL", "TAIL",
+  "ASM_TOK", "MODULE", "SIDEEFFECT", "CC_TOK", "CCC_TOK", "CSRETCC_TOK",
+  "FASTCC_TOK", "COLDCC_TOK", "X86_STDCALLCC_TOK", "X86_FASTCALLCC_TOK",
+  "DATALAYOUT", "RET", "BR", "SWITCH", "INVOKE", "UNWIND", "UNREACHABLE",
+  "ADD", "SUB", "MUL", "UDIV", "SDIV", "FDIV", "UREM", "SREM", "FREM",
+  "AND", "OR", "XOR", "ICMP", "FCMP", "EQ", "NE", "SLT", "SGT", "SLE",
+  "SGE", "ULT", "UGT", "ULE", "UGE", "OEQ", "ONE", "OLT", "OGT", "OLE",
+  "OGE", "ORD", "UNO", "UEQ", "UNE", "MALLOC", "ALLOCA", "FREE", "LOAD",
+  "STORE", "GETELEMENTPTR", "TRUNC", "ZEXT", "SEXT", "FPTRUNC", "FPEXT",
+  "BITCAST", "UITOFP", "SITOFP", "FPTOUI", "FPTOSI", "INTTOPTR",
+  "PTRTOINT", "PHI_TOK", "SELECT", "SHL", "LSHR", "ASHR", "VAARG",
+  "EXTRACTELEMENT", "INSERTELEMENT", "SHUFFLEVECTOR", "NORETURN",
+  "DEFAULT", "HIDDEN", "'='", "','", "'*'", "'\\\\'", "'('", "')'", "'['",
+  "'x'", "']'", "'<'", "'>'", "'{'", "'}'", "'c'", "$accept",
+  "ArithmeticOps", "LogicalOps", "CastOps", "ShiftOps", "IPredicates",
+  "FPredicates", "IntType", "FPType", "LocalName", "OptLocalName",
+  "OptLocalAssign", "GlobalName", "OptGlobalAssign", "GVInternalLinkage",
+  "GVExternalLinkage", "GVVisibilityStyle", "FunctionDeclareLinkage",
+  "FunctionDefineLinkage", "OptCallingConv", "ParamAttr", "OptParamAttrs",
+  "FuncAttr", "OptFuncAttrs", "OptAlign", "OptCAlign", "SectionString",
+  "OptSection", "GlobalVarAttributes", "GlobalVarAttribute", "PrimType",
+  "Types", "ArgType", "ResultTypes", "ArgTypeList", "ArgTypeListI",
+  "TypeListI", "ConstVal", "ConstExpr", "ConstVector", "GlobalType",
+  "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", "ValueRefList", "IndexList", "OptTailCall", "InstVal",
+  "OptVolatile", "MemoryInst", 0
 };
 #endif
 
 # ifdef YYPRINT
 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
    token YYLEX-NUM.  */
-static const unsigned short yytoknum[] =
+static const unsigned short int yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
@@ -1671,43 +1724,43 @@
      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,    61,    44,    42,    92,    40,    41,    91,
-     120,    93,    60,    62,   123,   125,    99
+     385,    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 unsigned char yyr1[] =
 {
-       0,   147,   148,   148,   149,   149,   149,   149,   149,   149,
-     149,   149,   149,   150,   150,   150,   151,   151,   151,   151,
-     151,   151,   151,   151,   151,   151,   151,   151,   152,   152,
-     152,   153,   153,   153,   153,   153,   153,   153,   153,   153,
-     153,   154,   154,   154,   154,   154,   154,   154,   154,   154,
-     154,   154,   154,   154,   154,   154,   154,   155,   156,   156,
-     157,   157,   158,   158,   158,   158,   158,   159,   159,   159,
-     160,   160,   161,   161,   161,   162,   162,   162,   162,   162,
-     163,   163,   163,   163,   163,   163,   163,   163,   164,   164,
-     165,   165,   166,   166,   167,   167,   168,   168,   169,   169,
-     170,   171,   171,   172,   172,   173,   173,   174,   174,   174,
-     174,   175,   175,   175,   175,   175,   175,   175,   175,   175,
-     175,   175,   175,   175,   176,   177,   177,   178,   178,   179,
-     179,   179,   179,   180,   180,   181,   181,   181,   181,   181,
-     181,   181,   181,   181,   181,   181,   181,   181,   181,   181,
-     181,   181,   181,   182,   182,   182,   182,   182,   182,   182,
-     182,   182,   182,   182,   183,   183,   184,   184,   185,   185,
-     186,   186,   188,   187,   189,   187,   187,   187,   187,   187,
-     190,   187,   191,   187,   192,   187,   187,   187,   193,   194,
-     194,   195,   195,   195,   195,   196,   197,   197,   197,   198,
-     198,   199,   199,   200,   200,   201,   201,   201,   201,   202,
-     203,   203,   204,   205,   205,   206,   207,   208,   208,   209,
-     209,   209,   209,   209,   209,   209,   209,   209,   209,   209,
-     210,   210,   211,   211,   212,   213,   213,   214,   215,   215,
-     215,   216,   216,   216,   216,   216,   216,   216,   216,   216,
-     217,   217,   218,   219,   219,   220,   220,   220,   221,   221,
-     222,   222,   223,   223,   223,   223,   223,   223,   223,   223,
-     223,   223,   223,   223,   223,   223,   224,   224,   225,   225,
-     225,   225,   225,   225,   225,   225
+       0,   145,   146,   146,   146,   146,   146,   146,   146,   146,
+     146,   147,   147,   147,   148,   148,   148,   148,   148,   148,
+     148,   148,   148,   148,   148,   148,   149,   149,   149,   150,
+     150,   150,   150,   150,   150,   150,   150,   150,   150,   151,
+     151,   151,   151,   151,   151,   151,   151,   151,   151,   151,
+     151,   151,   151,   151,   151,   152,   153,   153,   154,   154,
+     155,   155,   156,   156,   157,   157,   158,   158,   159,   159,
+     159,   159,   159,   160,   160,   160,   161,   161,   162,   162,
+     162,   163,   163,   163,   163,   163,   164,   164,   164,   164,
+     164,   164,   164,   164,   165,   165,   166,   166,   167,   167,
+     168,   168,   169,   169,   170,   170,   171,   172,   172,   173,
+     173,   174,   174,   175,   175,   175,   175,   176,   176,   176,
+     176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
+     177,   178,   178,   179,   179,   180,   180,   180,   180,   181,
+     181,   182,   182,   182,   182,   182,   182,   182,   182,   182,
+     182,   182,   182,   182,   182,   182,   182,   182,   182,   183,
+     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
+     184,   184,   185,   185,   186,   186,   187,   187,   189,   188,
+     190,   188,   188,   188,   188,   188,   191,   188,   192,   188,
+     193,   188,   188,   188,   194,   195,   195,   196,   197,   197,
+     197,   198,   198,   199,   199,   199,   199,   200,   201,   201,
+     202,   203,   203,   204,   205,   206,   206,   207,   207,   207,
+     207,   207,   207,   207,   207,   207,   207,   207,   208,   208,
+     208,   208,   209,   209,   210,   211,   211,   212,   213,   213,
+     213,   214,   214,   214,   214,   214,   214,   214,   214,   214,
+     215,   215,   216,   217,   217,   218,   218,   218,   219,   219,
+     220,   220,   221,   221,   221,   221,   221,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   222,   222,   223,   223,
+     223,   223,   223,   223,   223,   223
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1719,23 +1772,23 @@
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     1,     0,     1,     1,     0,     1,     1,     1,     1,
-       0,     1,     1,     1,     1,     1,     1,     2,     1,     1,
-       0,     2,     1,     1,     0,     2,     0,     2,     0,     3,
-       2,     0,     1,     0,     3,     1,     2,     1,     1,     1,
-       1,     1,     1,     2,     1,     2,     5,     5,     5,     5,
-       3,     2,     5,     4,     2,     1,     1,     1,     3,     1,
-       3,     1,     0,     1,     3,     4,     3,     3,     4,     4,
-       3,     6,     5,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     6,     5,     8,     6,     6,     7,     7,
-       6,     6,     8,     8,     3,     1,     1,     1,     1,     0,
-       1,     2,     0,     3,     0,     3,     3,     1,     3,     3,
-       0,     6,     0,     7,     0,     7,     2,     3,     1,     1,
-       1,     3,     3,     3,     3,     3,     3,     1,     0,     1,
-       1,     1,     0,     5,     3,     1,     3,     1,     0,     9,
-       1,     1,     4,     1,     1,     2,     3,     0,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     3,     1,     5,
+       1,     0,     2,     0,     1,     1,     2,     0,     1,     1,
+       1,     1,     1,     1,     1,     1,     0,     1,     0,     1,
+       1,     0,     1,     1,     1,     1,     0,     1,     1,     1,
+       1,     1,     1,     2,     1,     1,     0,     2,     1,     1,
+       0,     2,     0,     2,     0,     3,     2,     0,     1,     0,
+       3,     1,     2,     1,     1,     1,     1,     1,     1,     2,
+       1,     2,     5,     5,     5,     5,     3,     2,     5,     4,
+       2,     1,     1,     1,     3,     1,     3,     1,     0,     1,
+       3,     4,     3,     3,     4,     4,     3,     6,     5,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     6,
+       5,     8,     6,     6,     7,     7,     6,     6,     8,     8,
+       3,     1,     1,     1,     1,     0,     1,     2,     0,     3,
+       0,     3,     3,     1,     3,     3,     0,     6,     0,     7,
+       0,     7,     2,     3,     1,     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,     5,     0,     0,     3,
@@ -1747,529 +1800,538 @@
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
    means the default is an error.  */
-static const unsigned short yydefact[] =
+static const unsigned short int yydefact[] =
 {
-      61,   199,   200,   177,   174,   172,     0,     0,     0,    70,
-       0,    61,   170,     0,    72,    75,     0,     0,     0,     0,
-     186,     0,     0,     0,    62,    64,    63,    65,    67,    66,
-      68,    69,    71,    70,    70,     0,     1,   171,    60,    73,
-      74,    70,   175,    76,    77,    78,    79,    70,   239,   173,
-     239,     0,     0,     0,     0,   198,   187,   188,   176,     2,
-       3,   179,   107,   108,   109,   110,   111,     0,     0,     0,
-       0,   230,   112,   178,   231,   114,     0,     0,   166,   167,
-       0,    80,    80,   240,   236,    61,   213,   214,   215,   235,
-     193,   190,   189,   191,   192,   194,   197,     0,   132,   115,
-       0,     0,     0,     0,   121,   133,     0,   113,   132,     0,
-       0,   107,   108,   109,     0,     0,     0,   180,     0,    81,
-      82,    83,    84,    85,    86,     0,   216,     0,   277,   238,
-       0,   195,   131,    90,   127,   129,     0,     0,     0,     0,
-       0,     0,   120,     0,   182,   184,   150,   151,   148,   149,
-     152,   147,   143,   144,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,     0,     0,     0,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,     0,    28,    29,    30,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   146,   145,   103,    87,
-     126,   125,     0,   210,   211,   212,   276,   261,     0,     0,
-       0,     0,    80,   248,   249,     0,     0,     0,     0,     0,
+      67,    58,    64,    59,    65,   183,   180,   178,     0,     0,
+       0,     0,     0,     0,    76,     0,    67,   176,    78,    81,
+       0,     0,   192,     0,     0,    62,     0,    66,    68,    70,
+      69,    71,    73,    72,    74,    75,    77,    76,    76,     0,
+       1,   177,    79,    80,    76,   181,    82,    83,    84,    85,
+      76,   239,   179,   239,     0,     0,   200,   193,   194,   182,
+     228,   229,   185,   113,   114,   115,   116,   117,     0,     0,
+       0,     0,   230,   231,   118,   184,   120,     0,     0,   172,
+     173,     0,    86,    86,   240,   236,    63,   211,   212,   213,
+     235,   195,   196,   199,     0,   138,   121,     0,     0,     0,
+       0,   127,   139,     0,   119,   138,     0,     0,   113,   114,
+     115,     0,     0,     0,   186,     0,    87,    88,    89,    90,
+      91,    92,     0,   214,     0,   277,   238,     0,   197,   137,
+      96,   133,   135,     0,     0,     0,     0,     0,     0,   126,
+       0,   188,   190,   156,   157,   154,   155,   158,   153,   149,
+     150,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,     0,     0,     0,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,     0,    26,
+      27,    28,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   152,   151,   109,    93,   132,   131,     0,
+     208,   209,   210,   276,   261,     0,     0,     0,     0,    86,
+     248,   249,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   237,    86,
+     252,     0,   275,   198,   130,     0,   100,     0,     0,   129,
+       0,   140,   100,   109,   109,    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,     0,     0,     0,     0,     0,   142,   171,
+       0,     0,     0,   146,     0,   143,     0,     0,     0,     0,
+       0,   187,     0,   260,   242,     0,   241,     0,     0,    55,
+       0,     0,     0,     0,   104,   104,   282,     0,     0,   273,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   237,    80,   252,     0,   275,   196,   124,     0,    94,
-       0,     0,   123,     0,   134,    94,   103,   103,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,     0,    55,
-      56,    51,    52,    53,    54,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,     0,     0,     0,     0,     0,
-       0,   136,   165,     0,     0,     0,   140,     0,   137,     0,
-       0,     0,     0,     0,   181,     0,   260,   242,     0,   241,
-       0,     0,    57,     0,     0,     0,     0,    98,    98,   282,
-       0,     0,   273,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    88,    89,    91,   130,   128,
-     117,   118,   119,   122,   116,   183,   185,     0,     0,   258,
-       0,     0,     0,     0,     0,   135,   121,   133,     0,   138,
-     139,     0,     0,     0,     0,     0,     0,   105,   103,   208,
-     219,   220,   221,   226,   222,   223,   224,   225,   217,     0,
-     228,   233,   232,   234,     0,   243,     0,     0,     0,     0,
-       0,   278,     0,   280,   258,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    92,
-      93,    95,     0,     0,     0,     0,     0,     0,     0,   164,
-     142,     0,     0,     0,     0,     0,   100,   106,   104,   207,
-      90,   205,     0,   218,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   285,     0,     0,     0,   269,   270,
-       0,     0,     0,     0,   267,   266,     0,   283,     0,     0,
-       0,     0,   154,     0,     0,     0,     0,   141,     0,     0,
-       0,     0,   202,     0,    94,     0,   227,     0,     0,   257,
-       0,     0,    98,    99,    98,     0,     0,     0,     0,     0,
-     262,   263,   257,     0,     0,     0,   259,     0,   161,     0,
-       0,   156,   157,   153,   160,   201,   204,   206,    90,   101,
-       0,     0,     0,     0,     0,   264,   265,     0,   279,   281,
-       0,     0,   268,   271,   272,     0,   284,   158,   159,     0,
-       0,     0,   202,   102,    96,   229,     0,     0,    90,     0,
-      94,   253,     0,    94,   155,   162,   163,   203,     0,   209,
-       0,   246,     0,     0,   255,     0,     0,   254,   274,    97,
-     244,     0,   245,     0,    90,     0,     0,     0,   256,     0,
-       0,     0,     0,   251,     0,     0,   250,     0,   247
+       0,     0,    94,    95,    97,   136,   134,   123,   124,   125,
+     128,   122,   189,   191,     0,     0,   258,     0,     0,     0,
+       0,     0,   141,   127,   139,     0,   144,   145,     0,     0,
+       0,     0,     0,     0,   111,   109,   206,   217,   218,   219,
+     224,   220,   221,   222,   223,   215,     0,   226,   233,   232,
+     234,     0,   243,     0,     0,     0,     0,     0,   278,     0,
+     280,   258,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    98,    99,   101,     0,
+       0,     0,     0,     0,     0,     0,   170,   148,     0,     0,
+       0,     0,     0,   106,   112,   110,   205,    96,   203,     0,
+     216,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   285,     0,     0,     0,   269,   270,     0,     0,     0,
+       0,   267,   266,     0,   283,     0,     0,     0,     0,   160,
+       0,     0,     0,     0,   147,     0,     0,     0,     0,    61,
+       0,   100,     0,   225,     0,     0,   257,     0,     0,   104,
+     105,   104,     0,     0,     0,     0,     0,   262,   263,   257,
+       0,     0,     0,   259,     0,   167,     0,     0,   162,   163,
+     159,   166,    60,   202,   204,    96,   107,     0,     0,     0,
+       0,     0,   264,   265,     0,   279,   281,     0,     0,   268,
+     271,   272,     0,   284,   164,   165,     0,     0,     0,    61,
+     108,   102,   227,     0,     0,    96,     0,   100,   253,     0,
+     100,   161,   168,   169,   201,     0,   207,     0,   246,     0,
+       0,   255,     0,     0,   254,   274,   103,   244,     0,   245,
+       0,    96,     0,     0,     0,   256,     0,     0,     0,     0,
+     251,     0,     0,   250,     0,   247
 };
 
 /* YYDEFGOTO[NTERM-NUM]. */
-static const short yydefgoto[] =
+static const short int yydefgoto[] =
 {
-      -1,    71,   192,   193,   194,   195,   258,   275,   114,   115,
-       9,    33,    34,    35,    41,    47,   125,   327,   237,   401,
-     330,   539,   381,   357,   524,   294,   358,    72,   116,   134,
-     202,   135,   136,   106,   282,   370,   283,    80,    10,    11,
-      12,    15,    14,   198,   246,   247,    58,    93,    20,    56,
-      97,    74,   496,   421,   422,   126,   205,    48,    88,    49,
-      42,   424,   371,    75,   373,   299,    50,    84,    85,   231,
-     543,   129,   312,   504,   404,   232,   233,   234,   235
+      -1,   189,   190,   191,   192,   255,   272,   111,   112,    72,
+     493,    12,    73,    14,    37,    38,    39,    44,    50,   122,
+     324,   234,   398,   327,   536,   378,   354,   521,   291,   355,
+      74,   113,   131,   199,   132,   133,   103,   279,   367,   280,
+      81,    15,    16,    17,    19,    18,   195,   243,   244,    59,
+      22,    57,    94,   418,   419,   123,   202,    51,    89,    52,
+      45,   421,   368,    76,   370,   296,    53,    85,    86,   228,
+     540,   126,   309,   501,   401,   229,   230,   231,   232
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -413
-static const short yypact[] =
+#define YYPACT_NINF -440
+static const short int yypact[] =
 {
-     401,  -413,  -413,  -413,  -413,  -413,   110,  -107,    30,    67,
-      77,   527,  -413,   -43,     2,   238,   -16,     8,    47,    84,
-    -413,    -4,   132,   791,  -413,  -413,  -413,  -413,  -413,  -413,
-    -413,  -413,  -413,    91,    91,   149,  -413,  -413,  -413,  -413,
-    -413,    91,  -413,  -413,  -413,  -413,  -413,    91,   147,  -413,
-      20,   210,   208,   280,   226,   273,  -413,  -413,  -413,  -413,
-    -413,   160,  -413,  -413,  -413,  -413,  -413,   295,   299,     3,
-       7,  -413,  -413,   140,  -413,  -413,   149,   149,  -413,  -413,
-     954,   192,   192,  -413,  -413,   184,  -413,  -413,  -413,  -413,
-    -413,  -413,  -413,  -413,  -413,  -413,  -413,   -65,   549,  -413,
-     167,   171,    22,   160,  -413,   140,   -81,  -413,   549,   954,
-    1045,    95,   311,   312,   284,   313,   602,  -413,   317,  -413,
-    -413,  -413,  -413,  -413,  -413,  1125,  -413,    -7,  1228,  -413,
-     306,  -413,  -413,   140,  -413,   191,   193,  1045,  1045,   186,
-     -64,  1045,  -413,   194,  -413,   140,  -413,  -413,  -413,  -413,
-    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
-    -413,  -413,  -413,  -413,  -413,  -413,   251,   501,   207,  -413,
-    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
-    -413,   209,  -413,  -413,  -413,   214,   215,   216,    49,  1138,
-     120,   314,   219,   222,   224,   225,  -413,  -413,   230,  -413,
-     160,   140,   184,  -413,  -413,  -413,  -413,  -413,   315,  1185,
-     175,   357,   192,  -413,  -413,   251,   501,  1045,  1045,  1045,
-    1045,  1045,  1045,  1045,  1045,  1045,  1045,  1045,  1045,  1045,
-    1045,  -413,   192,  -413,   195,  -413,  -413,   203,   693,  -413,
-     126,    46,  -413,   228,   140,  -413,   230,   230,  -413,  -413,
-    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,   231,  -413,
-    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
-    -413,  -413,  -413,  -413,  -413,   235,   954,   954,   954,   954,
-     954,  -413,  -413,    29,   500,   -24,  -413,   -27,  -413,   954,
-     954,   954,   954,    39,  -413,   241,  -413,   160,   746,  -413,
-     873,   873,  -413,   873,  1125,  1045,  1045,   123,   159,  -413,
-     746,   146,   233,   245,   248,   249,   250,   252,   746,   746,
-     356,   253,  1125,  1045,  1045,  -413,  -413,  -413,  -413,  -413,
-     -18,  -413,  -413,  -413,   -18,  -413,  -413,   954,   954,  -413,
-     254,   255,   256,   259,   954,  -413,   262,   602,   -12,  -413,
-    -413,   265,   274,   367,   275,   391,   407,  -413,   230,   774,
-    -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,   358,   954,
-    -413,  -413,  -413,  -413,   282,  -413,   285,   873,   746,   746,
-      35,  -413,    43,  -413,  -413,   873,   281,  1045,  1045,  1045,
-    1045,  1045,   289,   292,  1045,  1045,   873,   746,   293,  -413,
-    -413,  -413,   294,   301,   -25,   954,   954,   954,   954,  -413,
-    -413,   271,   954,   954,  1045,   954,  -413,  -413,  -413,  -413,
-     140,   302,   303,  -413,   417,    25,   427,   428,   305,   310,
-     318,   873,   441,   873,   319,   322,   873,   323,   140,  -413,
-     324,   325,   873,   873,   140,  -413,   309,  -413,  1045,   954,
-     954,  1045,  -413,   326,   328,   327,   335,  -413,   332,   333,
-     131,   336,    34,  1028,  -413,   339,  -413,   873,   873,  1045,
-     873,   873,   341,  -413,   341,   873,   342,  1045,  1045,  1045,
-    -413,  -413,  1045,   746,   340,   345,  -413,   954,  -413,   954,
-     954,  -413,  -413,  -413,  -413,  -413,  -413,  -413,   140,    10,
-     431,   343,   346,   746,    63,  -413,  -413,   400,  -413,  -413,
-     338,   873,  -413,  -413,  -413,   144,  -413,  -413,  -413,   351,
-     352,   354,    34,  -413,   403,  -413,   472,    -3,  -413,  1045,
-    -413,  -413,   355,  -413,  -413,  -413,  -413,  -413,   489,  -413,
-     873,  -413,  1000,    15,   203,   746,    66,  -413,   -18,  -413,
-    -413,   361,  -413,  1000,  -413,   485,   486,   368,   203,   873,
-     873,   491,   434,  -413,   873,   492,  -413,   873,  -413
+     298,  -440,  -440,  -440,  -440,  -440,  -440,  -440,     7,   -91,
+      83,    26,   134,    37,    52,   152,   776,  -440,   178,   108,
+      49,    56,  -440,   107,   233,  -440,   945,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,  -440,  -440,   123,   123,    76,
+    -440,  -440,  -440,  -440,   123,  -440,  -440,  -440,  -440,  -440,
+     123,   238,  -440,    27,   240,   241,   242,  -440,  -440,  -440,
+    -440,  -440,   125,  -440,  -440,  -440,  -440,  -440,   257,   258,
+       4,    24,  -440,  -440,  -440,   103,  -440,    76,    76,  -440,
+    -440,  1189,   175,   175,  -440,  -440,   171,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,   -34,   851,  -440,   126,   130,   109,
+     125,  -440,   103,   -78,  -440,   851,  1189,  1205,    55,   256,
+     262,   200,   263,   622,  -440,   267,  -440,  -440,  -440,  -440,
+    -440,  -440,  1224,  -440,    -8,  1349,  -440,   255,  -440,  -440,
+     103,  -440,   141,   138,  1205,  1205,   140,   -64,  1205,  -440,
+     143,  -440,   103,  -440,  -440,  -440,  -440,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,
+    -440,  -440,  -440,   450,   481,   145,  -440,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,   147,  -440,
+    -440,  -440,   148,   149,   154,   807,  1253,   387,   273,   157,
+     162,   164,   165,  -440,  -440,   169,  -440,   125,   103,   198,
+    -440,  -440,  -440,  -440,  -440,   227,  1267,   228,   293,   175,
+    -440,  -440,   450,   481,  1205,  1205,  1205,  1205,  1205,  1205,
+    1205,  1205,  1205,  1205,  1205,  1205,  1205,  1205,  -440,   175,
+    -440,   120,  -440,  -440,   133,  1114,  -440,    21,   -72,  -440,
+     166,   103,  -440,   169,   169,  -440,  -440,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,   168,  -440,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,  -440,
+    -440,  -440,   173,  1189,  1189,  1189,  1189,  1189,  -440,  -440,
+     -31,   473,   -68,  -440,   -49,  -440,  1189,  1189,  1189,  1189,
+      16,  -440,   174,  -440,   125,   764,  -440,   902,   902,  -440,
+     902,  1224,  1205,  1205,     3,    30,  -440,   764,    36,   182,
+     187,   188,   189,   190,   193,   764,   764,   275,   194,  1224,
+    1205,  1205,  -440,  -440,  -440,  -440,  -440,   -53,  -440,  -440,
+    -440,   -53,  -440,  -440,  1189,  1189,  -440,   195,   196,   197,
+     201,  1189,  -440,   191,   622,   -36,  -440,  -440,   203,   204,
+     279,   205,   313,   334,  -440,   169,  1154,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,   288,  1189,  -440,  -440,  -440,
+    -440,   211,  -440,   214,   902,   764,   764,    35,  -440,    39,
+    -440,  -440,   902,   210,  1205,  1205,  1205,  1205,  1205,   216,
+     220,  1205,  1205,   902,   764,   221,  -440,  -440,  -440,   222,
+     223,   -30,  1189,  1189,  1189,  1189,  -440,  -440,   215,  1189,
+    1189,  1205,  1189,  -440,  -440,  -440,  -440,   103,   225,   229,
+    -440,   341,   -16,   352,   356,   234,   239,   245,   902,   366,
+     902,   248,   249,   902,   250,   103,  -440,   252,   253,   902,
+     902,   103,  -440,   237,  -440,  1205,  1189,  1189,  1205,  -440,
+     268,   251,   271,   274,  -440,   254,   272,    79,   281,    33,
+    1170,  -440,   277,  -440,   902,   902,  1205,   902,   902,   278,
+    -440,   278,   902,   286,  1205,  1205,  1205,  -440,  -440,  1205,
+     764,   294,   296,  -440,  1189,  -440,  1189,  1189,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,   103,    31,   357,   301,   236,
+     764,    -4,  -440,  -440,   342,  -440,  -440,   295,   902,  -440,
+    -440,  -440,    40,  -440,  -440,  -440,   300,   302,   306,    33,
+    -440,   343,  -440,   382,    10,  -440,  1205,  -440,  -440,   304,
+    -440,  -440,  -440,  -440,  -440,   403,  -440,   902,  -440,  1027,
+      14,   133,   764,    22,  -440,   -53,  -440,  -440,   305,  -440,
+    1027,  -440,   432,   433,   314,   133,   902,   902,   435,   390,
+    -440,   902,   440,  -440,   902,  -440
 };
 
 /* YYPGOTO[NTERM-NUM].  */
-static const short yypgoto[] =
+static const short int yypgoto[] =
 {
-    -413,  -413,   379,   385,   389,   390,   304,   307,  -210,  -413,
-     439,  -413,  -413,   145,  -413,  -413,  -192,  -305,  -412,  -413,
-    -235,  -413,  -303,    26,  -413,  -201,  -413,  -413,   -14,   288,
-    -255,  -413,   420,   429,   -58,  -112,  -187,   239,  -413,  -413,
-     518,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,  -413,
-    -413,     0,    11,  -413,  -413,   448,  -413,  -413,  -413,  -413,
-    -413,  -413,  -403,   -73,   103,  -151,  -413,   482,  -413,  -413,
-    -413,  -413,  -413,    53,   153,  -413,  -413,  -413,  -413
+    -440,   331,   332,   333,   335,   259,   264,  -206,  -440,     0,
+     -58,   376,     6,  -440,  -440,  -440,    34,  -440,  -440,  -172,
+    -322,  -396,  -440,  -239,  -440,  -285,   -33,  -440,  -218,  -440,
+    -440,   -25,   230,  -270,  -440,   359,   367,   139,  -109,  -159,
+     170,  -440,  -440,   453,  -440,  -440,  -440,  -440,  -440,  -440,
+    -440,  -440,  -440,  -440,  -440,   393,  -440,  -440,  -440,  -440,
+    -440,  -440,  -439,   -89,   124,  -209,  -440,   417,  -440,  -440,
+    -440,  -440,  -440,    13,   105,  -440,  -440,  -440,  -440
 };
 
 /* 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, parse error.  */
-#define YYTABLE_NINF -170
-static const short yytable[] =
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -176
+static const short int yytable[] =
 {
-      13,   303,   285,   287,   196,   383,   302,   101,   462,    73,
-     334,    13,    59,    60,   203,   103,    62,    63,    64,    65,
-     304,     1,   117,     2,   302,   400,    21,    59,    60,   400,
-     103,    62,    63,    64,    65,    83,     1,   355,     2,    39,
-     322,    40,    86,   197,   431,   335,   336,    66,     1,   377,
-       2,   144,   433,   141,    59,    60,   105,   103,   111,   112,
-     113,    65,    66,     1,   142,     2,   355,   396,   309,   130,
-     141,   313,   314,   315,   316,   317,   131,    36,   320,   321,
-      23,   243,    22,   432,   133,    13,   522,   356,   105,    66,
-      38,   432,   325,   326,   133,   555,   145,   348,   -57,   -57,
-      24,    25,    26,    27,    28,    29,    30,   344,    31,   451,
-     344,   201,   399,   452,   146,   147,   544,    51,   350,   349,
-     325,   326,   344,   240,   241,    59,    60,   244,   103,   111,
-     112,   113,    65,   411,     1,    55,     2,   204,   541,   551,
-     399,    52,   558,    67,   325,   326,    68,   102,    57,    69,
-     557,    70,   104,    16,    17,    18,   552,   418,    67,   344,
-      66,    68,    83,   344,    69,    87,    70,   139,   466,   508,
-     345,   509,    19,   398,    78,    79,   325,   326,    76,    77,
-      53,   107,   425,   108,   300,    67,    81,   301,    68,   332,
-     281,    69,    82,    70,   400,   298,   399,   529,     1,    32,
-       2,   530,   295,   307,   308,   298,   310,   311,   298,   298,
-     298,   298,   298,   318,   319,   298,   298,    54,   339,   340,
-     341,   342,   343,    32,   133,   372,    90,   372,   372,   499,
-     372,   351,   352,   353,   354,   196,   437,   372,   439,   440,
-     441,   400,    95,   400,   445,   372,   372,   118,   119,   120,
-     121,   122,   123,   124,    91,    92,    67,   380,   107,    68,
-     108,   107,    69,   108,    70,   286,   107,   331,   108,   493,
-     347,    43,    44,    45,   197,   107,    46,   108,   529,   402,
-     403,   107,   533,   108,    94,   385,   409,   148,   149,    96,
-     201,   378,   379,   382,   107,   546,   108,    98,   548,    99,
-     486,   323,   324,   100,   372,   372,   372,   137,   201,   397,
-     298,   138,   372,   325,   326,   109,   110,   542,   -58,   -59,
-     150,   199,   236,   372,   372,   238,   512,   513,   514,   242,
-     288,   239,   245,   553,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   276,   420,   277,   453,   454,   455,
-     456,   278,   279,   280,   458,   459,   289,   461,   372,   290,
-     372,   291,   292,   372,   293,   296,   302,   386,   337,   372,
-     372,   333,   338,   298,   438,   298,   298,   298,   359,   387,
-     444,   298,   388,   389,   390,   394,   391,   395,   405,   406,
-     407,   484,   485,   408,   372,   372,   414,   372,   372,   412,
-     460,  -169,   372,   374,   375,   410,   376,   416,   413,   415,
-     372,   417,   423,   384,   457,     1,   426,     2,     3,   427,
-     436,   392,   393,   442,     4,     5,   443,   448,   449,   519,
-     372,   520,   521,   465,   483,   450,   463,   298,   372,   467,
-     468,   464,   469,     6,   470,   473,   482,   525,   432,   498,
-       7,   538,   471,   451,     8,   503,   475,   477,   478,   479,
-     487,   489,   495,   298,   298,   298,   488,   372,   503,   490,
-     491,   492,   372,   500,   494,   507,   511,   526,   517,   531,
-     428,   429,   430,   518,   540,   527,   372,   372,   435,   534,
-     535,   372,   536,   549,   372,   556,   547,   559,   560,   446,
-     447,   565,   561,   564,   567,    59,    60,   227,   103,   111,
-     112,   113,    65,   228,     1,   545,     2,   229,   230,   305,
-     259,   260,   495,   306,   128,   523,   329,  -168,   143,    37,
-     127,   140,    89,   537,   472,   515,   474,   434,     0,   476,
-      66,     1,     0,     2,     3,   480,   481,     0,     0,     0,
-       4,     5,     0,     0,    59,    60,     0,   103,    62,    63,
-      64,    65,     0,     1,     0,     2,     0,     0,     0,     6,
-     501,   502,     0,   505,   506,     0,     7,     0,   510,   132,
-       8,     0,     0,     0,     0,     0,   516,     0,     0,    66,
-     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
-     271,   272,   273,   274,     0,     0,   528,    59,    60,     0,
-       0,     0,     0,     0,   532,     0,     1,     0,     2,     0,
-     151,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   152,   153,     0,    67,     0,     0,    68,
-       0,     0,    69,   550,    70,   346,     0,     0,   554,     0,
+      11,    75,   300,   331,   193,   397,    13,   306,    98,   397,
+     310,   311,   312,   313,   314,   200,    11,   317,   318,   299,
+     380,   459,    13,   299,   194,   332,   333,   282,   284,    60,
+      61,   374,   100,    63,    64,    65,    66,   301,     1,     2,
+      23,     3,     4,    84,   428,   352,   102,     1,   430,   393,
+       3,    87,    20,   552,   138,   322,   323,   319,   -55,   -55,
+     352,   104,   353,   105,   341,   139,    67,    21,   138,   329,
+     130,    77,    78,   346,   102,   396,   143,   144,    82,   240,
+     130,   429,   142,   341,    83,   429,    11,    28,    29,    30,
+      31,    32,    33,    34,   347,    35,   341,   198,   127,   519,
+     548,   341,   448,    79,    80,   128,   449,   408,   342,   237,
+     238,   554,   395,   241,    60,    61,   341,   100,    63,    64,
+      65,    66,   345,     1,     2,   463,     3,     4,   526,   541,
+     322,   323,   527,    24,   201,   377,   104,   415,   105,   322,
+     323,   322,   323,    46,    47,    48,    99,    26,    49,   538,
+     396,    67,    40,   549,   104,   555,   105,    25,    68,   396,
+     328,    69,   379,   104,    70,   105,    71,   101,    27,   104,
+      88,   105,   526,   382,   397,   434,   530,   436,   437,   438,
+      54,   295,    36,   442,   505,     1,   506,    55,     3,   304,
+     305,   295,   307,   308,   295,   295,   295,   295,   295,   315,
+     316,   295,   295,   145,   146,   292,   369,   422,   369,   369,
+     130,   369,   104,     2,   105,   490,     4,    42,   369,    43,
+     114,   397,   496,   397,   320,   321,   369,   369,   115,   116,
+     117,   118,   119,   120,   121,   193,   104,   297,   105,   483,
+     298,   322,   323,    68,    56,   141,    69,   106,   107,    70,
+      58,    71,   136,    36,    84,   194,   344,    91,    92,    93,
+      95,    96,    97,   -56,   134,   509,   510,   511,   135,   -57,
+     147,   196,   233,   235,   236,   293,   198,   375,   376,   242,
+     273,   239,   274,   275,   276,   369,   369,   369,   543,   277,
+     285,   545,   286,   369,   198,   394,   295,   287,  -175,   288,
+     289,   290,   299,   334,   369,   369,   391,   330,   335,   356,
+     411,   -63,     1,     2,   383,     3,     4,     5,   539,   384,
+     385,   386,   387,     6,     7,   388,   392,   402,   403,   404,
+     413,   417,   407,   405,   550,   409,   410,   412,   414,   369,
+     420,   369,     8,   423,   369,     9,   424,   433,   439,    10,
+     369,   369,   440,   445,   446,   447,   454,   460,   462,   295,
+     435,   295,   295,   295,   464,   461,   441,   295,   465,   466,
+     470,   467,   479,   524,   522,   369,   369,   468,   369,   369,
+     448,   472,   474,   369,   475,   476,   457,   485,   429,   535,
+     488,   369,    60,    61,   537,   100,   108,   109,   110,    66,
+     484,     1,     2,   486,     3,     4,   487,   546,   489,   497,
+     504,   369,   336,   337,   338,   339,   340,   491,   508,   369,
+     480,   371,   372,   295,   373,   348,   349,   350,   351,    67,
+     514,   381,   515,   523,   528,   495,   531,   553,   532,   389,
+     390,   500,   533,   544,   556,   557,   558,   561,   369,   295,
+     295,   295,   564,   369,   500,   562,   224,   225,   226,   492,
+     227,   534,   125,   520,   140,   326,   137,   369,   369,    41,
+      90,   302,   369,   399,   400,   369,   124,   303,    60,    61,
+     406,   100,   108,   109,   110,    66,   431,     1,     2,     0,
+       3,     4,   512,     0,     0,     0,     0,     0,   425,   426,
+     427,   542,   256,   257,     0,     0,   432,     0,     0,     0,
+       0,     0,     0,     0,     0,    67,     0,   443,   444,   492,
+       0,    68,     0,     0,    69,     0,     0,    70,     0,    71,
+     283,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   450,   451,   452,   453,     0,     0,     0,   455,   456,
+       0,   458,   469,     0,   471,     0,     0,   473,     0,     0,
+       0,     0,     0,   477,   478,     0,     0,     0,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,     0,     0,     0,   481,   482,     0,   498,   499,
+       0,   502,   503,     0,     0,     0,   507,     0,     0,     0,
+       0,     0,     0,     0,   513,     0,     0,    68,     0,     0,
+      69,     0,     0,    70,     0,    71,   343,     0,     0,     0,
+       0,     0,     0,   516,   525,   517,   518,    60,    61,     0,
+       0,     0,   529,     0,     0,     0,     1,     2,     0,     3,
+       4,     0,   148,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   149,   150,     0,     0,     0,
+       0,   547,     0,     0,     0,     0,   551,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   562,   563,     0,     0,     0,   566,     0,     0,
-     568,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,    67,     0,     0,    68,     0,
-       0,    69,     0,    70,     0,     0,     0,     0,    59,    60,
-       0,   103,    62,    63,    64,    65,     0,     1,     0,     2,
-     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
-     178,   179,   180,   328,   181,   182,   183,   184,     0,   185,
-     186,   187,     0,    66,     0,     0,     0,   107,     0,   108,
-       0,   188,     0,     0,   189,     0,   190,     0,   191,   360,
-     361,    59,    60,   362,     0,     0,     0,     0,     0,     0,
-       1,     0,     2,     0,   363,   364,   365,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   366,   367,    59,
-      60,     0,   103,    62,    63,    64,    65,     0,     1,     0,
-       2,     0,     0,     0,     0,     0,    59,    60,   368,    61,
-      62,    63,    64,    65,   419,     1,     0,     2,     0,     0,
-       0,     0,     0,     0,    66,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,    67,
-       0,    66,    68,     0,     0,    69,     0,    70,     0,     0,
+     559,   560,     0,     0,     0,   563,     0,     0,   565,   151,
+     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+     162,   163,   164,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   168,   169,   170,   171,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,     0,   181,   182,
-     183,   184,     0,   185,   186,   187,   360,   361,    59,    60,
-     362,   107,     0,   108,     0,     0,     0,     1,   369,     2,
-       0,   363,   364,   365,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   366,   367,     0,     0,     0,     0,
-      67,     0,     0,    68,     0,     0,    69,     0,    70,     0,
-       0,     0,     0,     0,     0,   368,     0,    67,     0,     0,
-      68,     0,     0,    69,     0,    70,     0,     0,     0,     0,
-       0,     0,   154,   155,   156,   157,   158,   159,   160,   161,
-     162,   163,   164,   165,   166,   167,     0,     0,     0,    59,
-      60,     0,   103,   111,   112,   113,    65,     0,     1,     0,
-       2,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   168,   169,   170,   171,   172,   173,   174,   175,   176,
-     177,   178,   179,   180,    66,   181,   182,   183,   184,     0,
-     185,   186,   187,   360,   361,     0,     0,   362,     0,     0,
-       0,     0,     0,     0,     0,   369,     0,     0,   363,   364,
-     365,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   366,   367,    59,    60,     0,   103,    62,    63,    64,
-      65,     0,     1,     0,     2,     0,     0,     0,     0,     0,
-      59,    60,   368,   103,    62,    63,    64,    65,   497,     1,
-       0,     2,     0,     0,     0,     0,     0,     0,    66,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,     0,     0,    66,     0,     0,     0,     0,
-      67,     0,     0,    68,     0,     0,    69,     0,    70,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   168,   169,
-     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
-     180,     0,   181,   182,   183,   184,     0,   185,   186,   187,
-      59,    60,     0,   200,    62,    63,    64,    65,     0,     1,
-       0,     2,   369,    59,    60,     0,   103,   111,   112,   113,
-      65,     0,     1,     0,     2,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    67,    66,     0,    68,     0,     0,
-      69,     0,    70,     0,     0,     0,     0,     0,    66,     0,
-       0,    67,     0,     0,    68,     0,     0,    69,     0,    70,
-      59,    60,     0,   297,    62,    63,    64,    65,     0,     1,
-       0,     2,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,     0,   178,   179,   180,   181,     0,   182,   183,   184,
+       0,     0,     0,     0,     0,   104,     0,   105,     0,   185,
+       0,     0,   186,     0,   187,     0,   188,   357,   358,    60,
+      61,   359,     0,     0,     0,     0,  -174,     0,     1,     2,
+       0,     3,     4,     0,   360,   361,   362,     0,     0,   -63,
+       1,     2,     0,     3,     4,     5,     0,   363,   364,     0,
+       0,     6,     7,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    60,    61,   365,   100,   108,   109,   110,    66,
+       8,     1,     2,     9,     3,     4,     0,    10,     0,     0,
+       0,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,     0,     0,     0,     0,    67,
+       0,     0,     0,     0,     0,     0,    60,    61,     0,   100,
+      63,    64,    65,    66,     0,     1,     2,     0,     3,     4,
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   129,   178,   179,   180,   181,     0,   182,
+     183,   184,     0,    67,     0,     0,     0,   104,     0,   105,
+       0,     0,     0,     0,   366,   357,   358,    60,    61,   359,
+       0,     0,     0,     0,     0,     0,     1,     2,     0,     3,
+       4,     0,   360,   361,   362,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   363,   364,     0,     0,     0,
+       0,    68,     0,     0,    69,     0,   278,    70,     0,    71,
+      60,    61,   365,    62,    63,    64,    65,    66,     0,     1,
+       2,     0,     3,     4,     0,     0,     0,     0,     0,   151,
+     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+     162,   163,   164,     0,     0,    68,     0,    67,    69,     0,
+       0,    70,     0,    71,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,     0,   178,   179,   180,   181,     0,   182,   183,   184,
+     357,   358,     0,     0,   359,     0,     0,     0,     0,     0,
+       0,     0,   366,     0,     0,     0,     0,   360,   361,   362,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    66,     0,     0,     0,     0,
+     363,   364,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   365,     0,    68,
+       0,     0,    69,     0,     0,    70,     0,    71,     0,     0,
+       0,     0,     0,     0,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    60,
+      61,     0,   100,    63,    64,    65,    66,     0,     1,     2,
+       0,     3,     4,   165,   166,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,   176,   177,   325,   178,   179,   180,
+     181,     0,   182,   183,   184,     0,    67,     0,     0,    60,
+      61,     0,   100,    63,    64,    65,    66,   366,     1,     2,
+       0,     3,     4,     0,     0,    60,    61,     0,   100,    63,
+      64,    65,    66,     0,     1,     2,   416,     3,     4,     0,
+       0,     0,     0,     0,    60,    61,    67,   100,   108,   109,
+     110,    66,   494,     1,     2,     0,     3,     4,     0,     0,
+      60,    61,    67,   100,    63,    64,    65,    66,     0,     1,
+       2,     0,     3,     4,     0,     0,     0,     0,     0,    60,
+      61,    67,   197,    63,    64,    65,    66,     0,     1,     2,
+       0,     3,     4,     0,     0,     0,     0,    67,    68,     0,
+       0,    69,     0,     0,    70,     0,    71,     0,    60,    61,
+       0,   100,   108,   109,   110,    66,    67,     1,     2,     0,
+       3,     4,    60,    61,     0,   294,    63,    64,    65,    66,
+       0,     1,     2,     0,     3,     4,     0,     0,    68,     0,
+       0,    69,     0,     0,    70,    67,    71,     0,     0,     0,
+       0,     0,     0,     0,    68,     0,     0,    69,     0,    67,
+      70,     0,    71,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    68,     0,     0,    69,     0,     0,    70,
+       0,    71,     0,     0,     0,     0,     0,     0,     0,    68,
+       0,     0,    69,     0,     0,    70,     0,    71,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    68,     0,
+       0,    69,     0,     0,    70,     0,    71,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   203,
+       0,     0,     0,     0,     0,     0,     0,    68,     0,     0,
+      69,     0,     0,    70,     0,   281,     0,   204,   205,     0,
+       0,    68,     0,     0,    69,     0,     0,    70,     0,    71,
+     206,   207,   208,   209,   210,   211,   151,   152,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   212,   213,
        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,   206,     0,     0,     0,
-       0,    67,     0,     0,    68,     0,     0,    69,     0,    70,
-       0,     0,     0,     0,    67,     0,     0,    68,   207,   208,
-      69,     0,   284,     0,     0,     0,     0,     0,     0,     0,
-       0,   209,   210,   211,   212,   213,   214,   154,   155,   156,
-     157,   158,   159,   160,   161,   162,   163,   164,   165,   215,
-     216,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    67,     0,     0,    68,     0,     0,    69,     0,    70,
-       0,   217,   218,   219,     0,     0,   220,   169,   170,   171,
-     172,   173,   174,   175,   176,   177,   178,   179,   180,   221,
-     222,   182,   183,   184,   223,   224,   225,   226
+     214,   215,   216,     0,     0,   217,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   218,   219,
+     179,   180,   181,   220,   221,   222,   223
 };
 
-static const short yycheck[] =
+static const short int yycheck[] =
 {
-       0,   211,   189,   190,   116,   308,     9,     4,   420,    23,
-     245,    11,     5,     6,    21,     8,     9,    10,    11,    12,
-     212,    14,    80,    16,     9,   330,   133,     5,     6,   334,
-       8,     9,    10,    11,    12,    15,    14,    27,    16,    37,
-     232,    39,    22,   116,     9,   246,   247,    40,    14,   304,
-      16,   109,     9,   134,     5,     6,    70,     8,     9,    10,
-      11,    12,    40,    14,   145,    16,    27,   322,   219,   134,
-     134,   222,   223,   224,   225,   226,   141,     0,   229,   230,
-      13,   145,    52,    48,    98,    85,   498,    48,   102,    40,
-     133,    48,   110,   111,   108,    29,   110,   284,     3,     4,
-      33,    34,    35,    36,    37,    38,    39,   134,    41,   134,
-     134,   125,   130,   138,    19,    20,   528,   133,   145,   143,
-     110,   111,   134,   137,   138,     5,     6,   141,     8,     9,
-      10,    11,    12,   145,    14,   139,    16,   144,   141,   542,
-     130,   133,   554,   136,   110,   111,   139,   144,    16,   142,
-     553,   144,   145,    43,    44,    45,   141,   358,   136,   134,
-      40,   139,    15,   134,   142,   145,   144,   145,   143,   472,
-     141,   474,    62,   324,    25,    26,   110,   111,    33,    34,
-     133,   135,   369,   137,     9,   136,    41,    12,   139,   143,
-     141,   142,    47,   144,   499,   209,   130,   134,    14,   132,
-      16,   138,   202,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   133,   276,   277,
-     278,   279,   280,   132,   238,   298,    16,   300,   301,   464,
-     303,   289,   290,   291,   292,   347,   387,   310,   389,   390,
-     391,   546,    16,   548,   395,   318,   319,    55,    56,    57,
-      58,    59,    60,    61,    46,    47,   136,   134,   135,   139,
-     137,   135,   142,   137,   144,   145,   135,   141,   137,   138,
-     284,    33,    34,    35,   347,   135,    38,   137,   134,   337,
-     338,   135,   138,   137,     4,   139,   344,     3,     4,    16,
-     304,   305,   306,   134,   135,   530,   137,   137,   533,     4,
-     451,   106,   107,     4,   377,   378,   379,   140,   322,   323,
-     324,   140,   385,   110,   111,    76,    77,   527,     7,     7,
-       7,     4,    16,   396,   397,   134,   477,   478,   479,   143,
-      16,   138,   138,   543,    83,    84,    85,    86,    87,    88,
-      89,    90,    91,    92,   137,   359,   137,   405,   406,   407,
-     408,   137,   137,   137,   412,   413,   137,   415,   431,   137,
-     433,   137,   137,   436,   134,    50,     9,   134,   137,   442,
-     443,   143,   137,   387,   388,   389,   390,   391,   137,   134,
-     394,   395,   134,   134,   134,    29,   134,   134,   134,   134,
-     134,   449,   450,   134,   467,   468,    29,   470,   471,   134,
-     414,     0,   475,   300,   301,   143,   303,    16,   134,   134,
-     483,     4,    54,   310,   143,    14,   134,    16,    17,   134,
-     139,   318,   319,   134,    23,    24,   134,   134,   134,   487,
-     503,   489,   490,    16,   448,   134,   134,   451,   511,    12,
-      12,   138,   137,    42,   134,     4,   137,    16,    48,   463,
-      49,    48,   134,   134,    53,   469,   134,   134,   134,   134,
-     134,   134,   462,   477,   478,   479,   138,   540,   482,   134,
-     138,   138,   545,   134,   138,   134,   134,   134,   138,   141,
-     377,   378,   379,   138,    12,   139,   559,   560,   385,   138,
-     138,   564,   138,     4,   567,   134,   141,    12,    12,   396,
-     397,    67,   134,    12,    12,     5,     6,   128,     8,     9,
-      10,    11,    12,   128,    14,   529,    16,   128,   128,   215,
-      19,    20,   522,   216,    85,   499,   238,     0,   108,    11,
-      82,   102,    50,   522,   431,   482,   433,   384,    -1,   436,
-      40,    14,    -1,    16,    17,   442,   443,    -1,    -1,    -1,
-      23,    24,    -1,    -1,     5,     6,    -1,     8,     9,    10,
-      11,    12,    -1,    14,    -1,    16,    -1,    -1,    -1,    42,
-     467,   468,    -1,   470,   471,    -1,    49,    -1,   475,    30,
-      53,    -1,    -1,    -1,    -1,    -1,   483,    -1,    -1,    40,
+       0,    26,   208,   242,   113,   327,     0,   216,     4,   331,
+     219,   220,   221,   222,   223,    23,    16,   226,   227,     9,
+     305,   417,    16,     9,   113,   243,   244,   186,   187,     5,
+       6,   301,     8,     9,    10,    11,    12,   209,    14,    15,
+     131,    17,    18,    16,     9,    29,    71,    14,     9,   319,
+      17,    24,    45,    31,   132,   108,   109,   229,     3,     4,
+      29,   133,    46,   135,   132,   143,    42,    60,   132,   141,
+      95,    37,    38,   141,    99,   128,    21,    22,    44,   143,
+     105,    46,   107,   132,    50,    46,    86,    35,    36,    37,
+      38,    39,    40,    41,   143,    43,   132,   122,   132,   495,
+     539,   132,   132,    27,    28,   139,   136,   143,   139,   134,
+     135,   550,   321,   138,     5,     6,   132,     8,     9,    10,
+      11,    12,   281,    14,    15,   141,    17,    18,   132,   525,
+     108,   109,   136,    50,   142,   132,   133,   355,   135,   108,
+     109,   108,   109,    35,    36,    37,   142,    13,    40,   139,
+     128,    42,     0,   139,   133,   551,   135,   131,   134,   128,
+     139,   137,   132,   133,   140,   135,   142,   143,   131,   133,
+     143,   135,   132,   137,   496,   384,   136,   386,   387,   388,
+     131,   206,   130,   392,   469,    14,   471,   131,    17,   214,
+     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+     225,   226,   227,     3,     4,   199,   295,   366,   297,   298,
+     235,   300,   133,    15,   135,   136,    18,    39,   307,    41,
+      81,   543,   461,   545,   104,   105,   315,   316,    53,    54,
+      55,    56,    57,    58,    59,   344,   133,     9,   135,   448,
+      12,   108,   109,   134,   137,   106,   137,    77,    78,   140,
+      17,   142,   143,   130,    16,   344,   281,    17,    17,    17,
+     135,     4,     4,     7,   138,   474,   475,   476,   138,     7,
+       7,     4,    17,   132,   136,    48,   301,   302,   303,   136,
+     135,   141,   135,   135,   135,   374,   375,   376,   527,   135,
+      17,   530,   135,   382,   319,   320,   321,   135,     0,   135,
+     135,   132,     9,   135,   393,   394,    31,   141,   135,   135,
+      31,    13,    14,    15,   132,    17,    18,    19,   524,   132,
+     132,   132,   132,    25,    26,   132,   132,   132,   132,   132,
+      17,   356,   141,   132,   540,   132,   132,   132,     4,   428,
+      52,   430,    44,   132,   433,    47,   132,   137,   132,    51,
+     439,   440,   132,   132,   132,   132,   141,   132,    17,   384,
+     385,   386,   387,   388,    12,   136,   391,   392,    12,   135,
+       4,   132,   135,   137,    17,   464,   465,   132,   467,   468,
+     132,   132,   132,   472,   132,   132,   411,   136,    46,    46,
+     136,   480,     5,     6,    12,     8,     9,    10,    11,    12,
+     132,    14,    15,   132,    17,    18,   132,     4,   136,   132,
+     132,   500,   273,   274,   275,   276,   277,   136,   132,   508,
+     445,   297,   298,   448,   300,   286,   287,   288,   289,    42,
+     136,   307,   136,   132,   139,   460,   136,   132,   136,   315,
+     316,   466,   136,   139,    12,    12,   132,    12,   537,   474,
+     475,   476,    12,   542,   479,    65,   125,   125,   125,   459,
+     125,   519,    86,   496,   105,   235,    99,   556,   557,    16,
+      53,   212,   561,   334,   335,   564,    83,   213,     5,     6,
+     341,     8,     9,    10,    11,    12,   381,    14,    15,    -1,
+      17,    18,   479,    -1,    -1,    -1,    -1,    -1,   374,   375,
+     376,   526,    21,    22,    -1,    -1,   382,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    42,    -1,   393,   394,   519,
+      -1,   134,    -1,    -1,   137,    -1,    -1,   140,    -1,   142,
+     143,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,   402,   403,   404,   405,    -1,    -1,    -1,   409,   410,
+      -1,   412,   428,    -1,   430,    -1,    -1,   433,    -1,    -1,
+      -1,    -1,    -1,   439,   440,    -1,    -1,    -1,    87,    88,
       89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,    -1,    -1,   503,     5,     6,    -1,
-      -1,    -1,    -1,    -1,   511,    -1,    14,    -1,    16,    -1,
-      18,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    31,    32,    -1,   136,    -1,    -1,   139,
-      -1,    -1,   142,   540,   144,   145,    -1,    -1,   545,    -1,
+      99,   100,    -1,    -1,    -1,   446,   447,    -1,   464,   465,
+      -1,   467,   468,    -1,    -1,    -1,   472,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   480,    -1,    -1,   134,    -1,    -1,
+     137,    -1,    -1,   140,    -1,   142,   143,    -1,    -1,    -1,
+      -1,    -1,    -1,   484,   500,   486,   487,     5,     6,    -1,
+      -1,    -1,   508,    -1,    -1,    -1,    14,    15,    -1,    17,
+      18,    -1,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    33,    34,    -1,    -1,    -1,
+      -1,   537,    -1,    -1,    -1,    -1,   542,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   559,   560,    -1,    -1,    -1,   564,    -1,    -1,
-     567,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,   136,    -1,    -1,   139,    -1,
-      -1,   142,    -1,   144,    -1,    -1,    -1,    -1,     5,     6,
-      -1,     8,     9,    10,    11,    12,    -1,    14,    -1,    16,
+     556,   557,    -1,    -1,    -1,   561,    -1,    -1,   564,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,
      108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-     118,   119,   120,    30,   122,   123,   124,   125,    -1,   127,
-     128,   129,    -1,    40,    -1,    -1,    -1,   135,    -1,   137,
-      -1,   139,    -1,    -1,   142,    -1,   144,    -1,   146,     3,
-       4,     5,     6,     7,    -1,    -1,    -1,    -1,    -1,    -1,
-      14,    -1,    16,    -1,    18,    19,    20,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    31,    32,     5,
-       6,    -1,     8,     9,    10,    11,    12,    -1,    14,    -1,
-      16,    -1,    -1,    -1,    -1,    -1,     5,     6,    52,     8,
-       9,    10,    11,    12,    30,    14,    -1,    16,    -1,    -1,
-      -1,    -1,    -1,    -1,    40,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,   136,
-      -1,    40,   139,    -1,    -1,   142,    -1,   144,    -1,    -1,
+     118,    -1,   120,   121,   122,   123,    -1,   125,   126,   127,
+      -1,    -1,    -1,    -1,    -1,   133,    -1,   135,    -1,   137,
+      -1,    -1,   140,    -1,   142,    -1,   144,     3,     4,     5,
+       6,     7,    -1,    -1,    -1,    -1,     0,    -1,    14,    15,
+      -1,    17,    18,    -1,    20,    21,    22,    -1,    -1,    13,
+      14,    15,    -1,    17,    18,    19,    -1,    33,    34,    -1,
+      -1,    25,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     5,     6,    50,     8,     9,    10,    11,    12,
+      44,    14,    15,    47,    17,    18,    -1,    51,    -1,    -1,
+      -1,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    -1,    -1,    -1,    -1,    42,
+      -1,    -1,    -1,    -1,    -1,    -1,     5,     6,    -1,     8,
+       9,    10,    11,    12,    -1,    14,    15,    -1,    17,    18,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,    32,   120,   121,   122,   123,    -1,   125,
+     126,   127,    -1,    42,    -1,    -1,    -1,   133,    -1,   135,
+      -1,    -1,    -1,    -1,   140,     3,     4,     5,     6,     7,
+      -1,    -1,    -1,    -1,    -1,    -1,    14,    15,    -1,    17,
+      18,    -1,    20,    21,    22,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    33,    34,    -1,    -1,    -1,
+      -1,   134,    -1,    -1,   137,    -1,   139,   140,    -1,   142,
+       5,     6,    50,     8,     9,    10,    11,    12,    -1,    14,
+      15,    -1,    17,    18,    -1,    -1,    -1,    -1,    -1,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    -1,    -1,   134,    -1,    42,   137,    -1,
+      -1,   140,    -1,   142,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,    -1,   120,   121,   122,   123,    -1,   125,   126,   127,
+       3,     4,    -1,    -1,     7,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   140,    -1,    -1,    -1,    -1,    20,    21,    22,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,   120,    -1,   122,   123,
-     124,   125,    -1,   127,   128,   129,     3,     4,     5,     6,
-       7,   135,    -1,   137,    -1,    -1,    -1,    14,   142,    16,
-      -1,    18,    19,    20,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    31,    32,    -1,    -1,    -1,    -1,
-     136,    -1,    -1,   139,    -1,    -1,   142,    -1,   144,    -1,
-      -1,    -1,    -1,    -1,    -1,    52,    -1,   136,    -1,    -1,
-     139,    -1,    -1,   142,    -1,   144,    -1,    -1,    -1,    -1,
-      -1,    -1,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    82,    -1,    -1,    -1,     5,
-       6,    -1,     8,     9,    10,    11,    12,    -1,    14,    -1,
-      16,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-     117,   118,   119,   120,    40,   122,   123,   124,   125,    -1,
-     127,   128,   129,     3,     4,    -1,    -1,     7,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   142,    -1,    -1,    18,    19,
-      20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    31,    32,     5,     6,    -1,     8,     9,    10,    11,
-      12,    -1,    14,    -1,    16,    -1,    -1,    -1,    -1,    -1,
-       5,     6,    52,     8,     9,    10,    11,    12,    30,    14,
-      -1,    16,    -1,    -1,    -1,    -1,    -1,    -1,    40,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    -1,    -1,    40,    -1,    -1,    -1,    -1,
-     136,    -1,    -1,   139,    -1,    -1,   142,    -1,   144,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-     120,    -1,   122,   123,   124,   125,    -1,   127,   128,   129,
-       5,     6,    -1,     8,     9,    10,    11,    12,    -1,    14,
-      -1,    16,   142,     5,     6,    -1,     8,     9,    10,    11,
-      12,    -1,    14,    -1,    16,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   136,    40,    -1,   139,    -1,    -1,
-     142,    -1,   144,    -1,    -1,    -1,    -1,    -1,    40,    -1,
-      -1,   136,    -1,    -1,   139,    -1,    -1,   142,    -1,   144,
-       5,     6,    -1,     8,     9,    10,    11,    12,    -1,    14,
-      -1,    16,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    -1,
+      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,   134,
+      -1,    -1,   137,    -1,    -1,   140,    -1,   142,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,
+       6,    -1,     8,     9,    10,    11,    12,    -1,    14,    15,
+      -1,    17,    18,   106,   107,   108,   109,   110,   111,   112,
+     113,   114,   115,   116,   117,   118,    32,   120,   121,   122,
+     123,    -1,   125,   126,   127,    -1,    42,    -1,    -1,     5,
+       6,    -1,     8,     9,    10,    11,    12,   140,    14,    15,
+      -1,    17,    18,    -1,    -1,     5,     6,    -1,     8,     9,
+      10,    11,    12,    -1,    14,    15,    32,    17,    18,    -1,
+      -1,    -1,    -1,    -1,     5,     6,    42,     8,     9,    10,
+      11,    12,    32,    14,    15,    -1,    17,    18,    -1,    -1,
+       5,     6,    42,     8,     9,    10,    11,    12,    -1,    14,
+      15,    -1,    17,    18,    -1,    -1,    -1,    -1,    -1,     5,
+       6,    42,     8,     9,    10,    11,    12,    -1,    14,    15,
+      -1,    17,    18,    -1,    -1,    -1,    -1,    42,   134,    -1,
+      -1,   137,    -1,    -1,   140,    -1,   142,    -1,     5,     6,
+      -1,     8,     9,    10,    11,    12,    42,    14,    15,    -1,
+      17,    18,     5,     6,    -1,     8,     9,    10,    11,    12,
+      -1,    14,    15,    -1,    17,    18,    -1,    -1,   134,    -1,
+      -1,   137,    -1,    -1,   140,    42,   142,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   134,    -1,    -1,   137,    -1,    42,
+     140,    -1,   142,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   134,    -1,    -1,   137,    -1,    -1,   140,
+      -1,   142,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,
+      -1,    -1,   137,    -1,    -1,   140,    -1,   142,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,    -1,
+      -1,   137,    -1,    -1,   140,    -1,   142,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    30,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,    -1,    -1,
+     137,    -1,    -1,   140,    -1,   142,    -1,    48,    49,    -1,
+      -1,   134,    -1,    -1,   137,    -1,    -1,   140,    -1,   142,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    -1,    -1,
-      -1,   136,    -1,    -1,   139,    -1,    -1,   142,    -1,   144,
-      -1,    -1,    -1,    -1,   136,    -1,    -1,   139,    50,    51,
-     142,    -1,   144,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   136,    -1,    -1,   139,    -1,    -1,   142,    -1,   144,
-      -1,   103,   104,   105,    -1,    -1,   108,   109,   110,   111,
-     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,   123,   124,   125,   126,   127,   128,   129
+     101,   102,   103,    -1,    -1,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   124,   125,   126,   127
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const unsigned char yystos[] =
 {
-       0,    14,    16,    17,    23,    24,    42,    49,    53,   157,
-     185,   186,   187,   198,   189,   188,    43,    44,    45,    62,
-     195,   133,    52,    13,    33,    34,    35,    36,    37,    38,
-      39,    41,   132,   158,   159,   160,     0,   187,   133,    37,
-      39,   161,   207,    33,    34,    35,    38,   162,   204,   206,
-     213,   133,   133,   133,   133,   139,   196,    16,   193,     5,
-       6,     8,     9,    10,    11,    12,    40,   136,   139,   142,
-     144,   148,   174,   175,   198,   210,   160,   160,    25,    26,
-     184,   160,   160,    15,   214,   215,    22,   145,   205,   214,
-      16,    46,    47,   194,     4,    16,    16,   197,   137,     4,
-       4,     4,   144,     8,   145,   175,   180,   135,   137,   184,
-     184,     9,    10,    11,   155,   156,   175,   181,    55,    56,
-      57,    58,    59,    60,    61,   163,   202,   202,   157,   218,
-     134,   141,    30,   175,   176,   178,   179,   140,   140,   145,
-     180,   134,   145,   179,   181,   175,    19,    20,     3,     4,
-       7,    18,    31,    32,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-     120,   122,   123,   124,   125,   127,   128,   129,   139,   142,
-     144,   146,   149,   150,   151,   152,   182,   210,   190,     4,
-       8,   175,   177,    21,   144,   203,    28,    50,    51,    63,
-      64,    65,    66,    67,    68,    81,    82,   103,   104,   105,
-     108,   121,   122,   126,   127,   128,   129,   149,   150,   151,
-     152,   216,   222,   223,   224,   225,    16,   165,   134,   138,
-     175,   175,   143,   145,   175,   138,   191,   192,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,   153,    19,
-      20,    89,    90,    91,    92,    93,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   154,   137,   137,   137,   137,
-     137,   141,   181,   183,   144,   183,   145,   183,    16,   137,
-     137,   137,   137,   134,   172,   198,    50,     8,   175,   212,
-       9,    12,     9,   155,   163,   153,   154,   175,   175,   212,
-     175,   175,   219,   212,   212,   212,   212,   212,   175,   175,
-     212,   212,   163,   106,   107,   110,   111,   164,    30,   176,
-     167,   141,   143,   143,   167,   172,   172,   137,   137,   181,
-     181,   181,   181,   181,   134,   141,   145,   175,   183,   143,
-     145,   181,   181,   181,   181,    27,    48,   170,   173,   137,
-       3,     4,     7,    18,    19,    20,    31,    32,    52,   142,
-     182,   209,   210,   211,   211,   211,   211,   177,   175,   175,
-     134,   169,   134,   169,   211,   139,   134,   134,   134,   134,
-     134,   134,   211,   211,    29,   134,   177,   175,   212,   130,
-     164,   166,   181,   181,   221,   134,   134,   134,   134,   181,
-     143,   145,   134,   134,    29,   134,    16,     4,   172,    30,
-     175,   200,   201,    54,   208,   183,   134,   134,   211,   211,
-     211,     9,    48,     9,   221,   211,   139,   212,   175,   212,
-     212,   212,   134,   134,   175,   212,   211,   211,   134,   134,
-     134,   134,   138,   181,   181,   181,   181,   143,   181,   181,
-     175,   181,   165,   134,   138,    16,   143,    12,    12,   137,
-     134,   134,   211,     4,   211,   134,   211,   134,   134,   134,
-     211,   211,   137,   175,   181,   181,   212,   134,   138,   134,
-     134,   138,   138,   138,   138,   198,   199,    30,   175,   167,
-     134,   211,   211,   175,   220,   211,   211,   134,   169,   169,
-     211,   134,   212,   212,   212,   220,   211,   138,   138,   181,
-     181,   181,   165,   170,   171,    16,   134,   139,   211,   134,
-     138,   141,   211,   138,   138,   138,   138,   199,    48,   168,
-      12,   141,   155,   217,   165,   175,   167,   141,   167,     4,
-     211,   209,   141,   155,   211,    29,   134,   209,   165,    12,
-      12,   134,   211,   211,    12,    67,   211,    12,   211
+       0,    14,    15,    17,    18,    19,    25,    26,    44,    47,
+      51,   154,   156,   157,   158,   186,   187,   188,   190,   189,
+      45,    60,   195,   131,    50,   131,    13,   131,    35,    36,
+      37,    38,    39,    40,    41,    43,   130,   159,   160,   161,
+       0,   188,    39,    41,   162,   205,    35,    36,    37,    40,
+     163,   202,   204,   211,   131,   131,   137,   196,    17,   194,
+       5,     6,     8,     9,    10,    11,    12,    42,   134,   137,
+     140,   142,   154,   157,   175,   176,   208,   161,   161,    27,
+      28,   185,   161,   161,    16,   212,   213,    24,   143,   203,
+     212,    17,    17,    17,   197,   135,     4,     4,     4,   142,
+       8,   143,   176,   181,   133,   135,   185,   185,     9,    10,
+      11,   152,   153,   176,   182,    53,    54,    55,    56,    57,
+      58,    59,   164,   200,   200,   156,   216,   132,   139,    32,
+     176,   177,   179,   180,   138,   138,   143,   181,   132,   143,
+     180,   182,   176,    21,    22,     3,     4,     7,    20,    33,
+      34,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   120,   121,
+     122,   123,   125,   126,   127,   137,   140,   142,   144,   146,
+     147,   148,   149,   183,   208,   191,     4,     8,   176,   178,
+      23,   142,   201,    30,    48,    49,    61,    62,    63,    64,
+      65,    66,    79,    80,   101,   102,   103,   106,   119,   120,
+     124,   125,   126,   127,   146,   147,   148,   149,   214,   220,
+     221,   222,   223,    17,   166,   132,   136,   176,   176,   141,
+     143,   176,   136,   192,   193,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,   150,    21,    22,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   151,   135,   135,   135,   135,   135,   139,   182,
+     184,   142,   184,   143,   184,    17,   135,   135,   135,   135,
+     132,   173,   157,    48,     8,   176,   210,     9,    12,     9,
+     152,   164,   150,   151,   176,   176,   210,   176,   176,   217,
+     210,   210,   210,   210,   210,   176,   176,   210,   210,   164,
+     104,   105,   108,   109,   165,    32,   177,   168,   139,   141,
+     141,   168,   173,   173,   135,   135,   182,   182,   182,   182,
+     182,   132,   139,   143,   176,   184,   141,   143,   182,   182,
+     182,   182,    29,    46,   171,   174,   135,     3,     4,     7,
+      20,    21,    22,    33,    34,    50,   140,   183,   207,   208,
+     209,   209,   209,   209,   178,   176,   176,   132,   170,   132,
+     170,   209,   137,   132,   132,   132,   132,   132,   132,   209,
+     209,    31,   132,   178,   176,   210,   128,   165,   167,   182,
+     182,   219,   132,   132,   132,   132,   182,   141,   143,   132,
+     132,    31,   132,    17,     4,   173,    32,   176,   198,   199,
+      52,   206,   184,   132,   132,   209,   209,   209,     9,    46,
+       9,   219,   209,   137,   210,   176,   210,   210,   210,   132,
+     132,   176,   210,   209,   209,   132,   132,   132,   132,   136,
+     182,   182,   182,   182,   141,   182,   182,   176,   182,   166,
+     132,   136,    17,   141,    12,    12,   135,   132,   132,   209,
+       4,   209,   132,   209,   132,   132,   132,   209,   209,   135,
+     176,   182,   182,   210,   132,   136,   132,   132,   136,   136,
+     136,   136,   154,   155,    32,   176,   168,   132,   209,   209,
+     176,   218,   209,   209,   132,   170,   170,   209,   132,   210,
+     210,   210,   218,   209,   136,   136,   182,   182,   182,   166,
+     171,   172,    17,   132,   137,   209,   132,   136,   139,   209,
+     136,   136,   136,   136,   155,    46,   169,    12,   139,   152,
+     215,   166,   176,   168,   139,   168,     4,   209,   207,   139,
+     152,   209,    31,   132,   207,   166,    12,    12,   132,   209,
+     209,    12,    65,   209,    12,   209
 };
 
-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
-# define YYSIZE_T __SIZE_TYPE__
-#endif
-#if ! defined (YYSIZE_T) && defined (size_t)
-# define YYSIZE_T size_t
-#endif
-#if ! defined (YYSIZE_T)
-# if defined (__STDC__) || defined (__cplusplus)
-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYSIZE_T size_t
-# endif
-#endif
-#if ! defined (YYSIZE_T)
-# define YYSIZE_T unsigned int
-#endif
-
 #define yyerrok		(yyerrstatus = 0)
 #define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		-2
+#define YYEMPTY		(-2)
 #define YYEOF		0
 
 #define YYACCEPT	goto yyacceptlab
 #define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrlab1
+#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.
@@ -2285,34 +2347,71 @@
     {								\
       yychar = (Token);						\
       yylval = (Value);						\
-      yychar1 = YYTRANSLATE (yychar);				\
+      yytoken = YYTRANSLATE (yychar);				\
       YYPOPSTACK;						\
       goto yybackup;						\
     }								\
   else								\
-    { 								\
-      yyerror ("syntax error: cannot back up");			\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
       YYERROR;							\
     }								\
 while (0)
 
+
 #define YYTERROR	1
 #define YYERRCODE	256
 
-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
-   are run).  */
 
+/* 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)           \
-  Current.first_line   = Rhs[1].first_line;      \
-  Current.first_column = Rhs[1].first_column;    \
-  Current.last_line    = Rhs[N].last_line;       \
-  Current.last_column  = Rhs[N].last_column;
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (N)								\
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (0)
 #endif
 
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+              (Loc).first_line, (Loc).first_column,	\
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
 /* YYLEX -- calling `yylex' with the right arguments.  */
 
-#define YYLEX	yylex ()
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -2327,19 +2426,86 @@
   if (yydebug)					\
     YYFPRINTF Args;				\
 } while (0)
-# define YYDSYMPRINT(Args)			\
-do {						\
-  if (yydebug)					\
-    yysymprint Args;				\
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
+do {								\
+  if (yydebug)							\
+    {								\
+      YYFPRINTF (stderr, "%s ", Title);				\
+      yysymprint (stderr,					\
+                  Type, Value);	\
+      YYFPRINTF (stderr, "\n");					\
+    }								\
 } while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short int *bottom;
+    short int *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
+#endif
+{
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (Rule);		\
+} while (0)
+
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
 int yydebug;
 #else /* !YYDEBUG */
 # define YYDPRINTF(Args)
-# define YYDSYMPRINT(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
@@ -2349,13 +2515,9 @@
    if the built-in stack extension method is used).
 
    Do not make this value too large; the results are undefined if
-   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
    evaluated with infinite-precision integer arithmetic.  */
 
-#if YYMAXDEPTH == 0
-# undef YYMAXDEPTH
-#endif
-
 #ifndef YYMAXDEPTH
 # define YYMAXDEPTH 10000
 #endif
@@ -2377,7 +2539,7 @@
      const char *yystr;
 #   endif
 {
-  register const char *yys = yystr;
+  const char *yys = yystr;
 
   while (*yys++ != '\0')
     continue;
@@ -2402,8 +2564,8 @@
      const char *yysrc;
 #   endif
 {
-  register char *yyd = yydest;
-  register const char *yys = yysrc;
+  char *yyd = yydest;
+  const char *yys = yysrc;
 
   while ((*yyd++ = *yys++) != '\0')
     continue;
@@ -2413,124 +2575,186 @@
 #  endif
 # endif
 
-#endif /* !YYERROR_VERBOSE */
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      size_t yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+#endif /* YYERROR_VERBOSE */
 
 
 
 #if YYDEBUG
-/*-----------------------------.
-| Print this symbol on YYOUT.  |
-`-----------------------------*/
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
 
-static void
 #if defined (__STDC__) || defined (__cplusplus)
-yysymprint (FILE* yyout, int yytype, YYSTYPE yyvalue)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
 #else
-yysymprint (yyout, yytype, yyvalue)
-    FILE* yyout;
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
     int yytype;
-    YYSTYPE yyvalue;
+    YYSTYPE *yyvaluep;
 #endif
 {
   /* Pacify ``unused variable'' warnings.  */
-  (void) yyvalue;
+  (void) yyvaluep;
 
   if (yytype < YYNTOKENS)
-    {
-      YYFPRINTF (yyout, "token %s (", yytname[yytype]);
-# ifdef YYPRINT
-      YYPRINT (yyout, yytoknum[yytype], yyvalue);
-# endif
-    }
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
   else
-    YYFPRINTF (yyout, "nterm %s (", yytname[yytype]);
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
 
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
   switch (yytype)
     {
       default:
         break;
     }
-  YYFPRINTF (yyout, ")");
+  YYFPRINTF (yyoutput, ")");
 }
-#endif /* YYDEBUG. */
 
-
+#endif /* ! YYDEBUG */
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
-static void
 #if defined (__STDC__) || defined (__cplusplus)
-yydestruct (int yytype, YYSTYPE yyvalue)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
 #else
-yydestruct (yytype, yyvalue)
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
     int yytype;
-    YYSTYPE yyvalue;
+    YYSTYPE *yyvaluep;
 #endif
 {
   /* Pacify ``unused variable'' warnings.  */
-  (void) yyvalue;
+  (void) yyvaluep;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
   switch (yytype)
     {
+
       default:
         break;
     }
 }
-
 
 
-/* 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.  */
+/* Prevent warnings from -Wmissing-prototypes.  */
 
 #ifdef YYPARSE_PARAM
 # if defined (__STDC__) || defined (__cplusplus)
-#  define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#  define YYPARSE_PARAM_DECL
+int yyparse (void *YYPARSE_PARAM);
 # else
-#  define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#  define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+int yyparse ();
 # endif
-#else /* !YYPARSE_PARAM */
-# define YYPARSE_PARAM_ARG
-# define YYPARSE_PARAM_DECL
-#endif /* !YYPARSE_PARAM */
-
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-# ifdef YYPARSE_PARAM
-int yyparse (void *);
-# else
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
 int yyparse (void);
-# endif
+#else
+int yyparse ();
 #endif
+#endif /* ! YYPARSE_PARAM */
 
 
-/* The lookahead symbol.  */
+
+/* The look-ahead symbol.  */
 int yychar;
 
-/* The semantic value of the lookahead symbol.  */
+/* The semantic value of the look-ahead symbol.  */
 YYSTYPE yylval;
 
-/* Number of parse errors so far.  */
+/* Number of syntax errors so far.  */
 int yynerrs;
 
 
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
 int
-yyparse (YYPARSE_PARAM_ARG)
-     YYPARSE_PARAM_DECL
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
 {
   
-  register int yystate;
-  register int yyn;
+  int yystate;
+  int yyn;
   int yyresult;
   /* Number of tokens to shift before error messages enabled.  */
   int yyerrstatus;
-  /* Lookahead token as an internal (translated) token number.  */
-  int yychar1 = 0;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
 
   /* Three stacks and their tools:
      `yyss': related to states,
@@ -2541,14 +2765,14 @@
      to reallocate them elsewhere.  */
 
   /* The state stack.  */
-  short	yyssa[YYINITDEPTH];
-  short *yyss = yyssa;
-  register short *yyssp;
+  short int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  short int *yyssp;
 
   /* The semantic value stack.  */
   YYSTYPE yyvsa[YYINITDEPTH];
   YYSTYPE *yyvs = yyvsa;
-  register YYSTYPE *yyvsp;
+  YYSTYPE *yyvsp;
 
 
 
@@ -2594,7 +2818,7 @@
  yysetstate:
   *yyssp = yystate;
 
-  if (yyssp >= yyss + yystacksize - 1)
+  if (yyss + yystacksize - 1 <= yyssp)
     {
       /* Get the current used size of the three stacks, in elements.  */
       YYSIZE_T yysize = yyssp - yyss + 1;
@@ -2605,14 +2829,14 @@
 	   these so that the &'s don't force the real ones into
 	   memory.  */
 	YYSTYPE *yyvs1 = yyvs;
-	short *yyss1 = yyss;
+	short int *yyss1 = yyss;
 
 
 	/* Each stack pointer address is followed by the size of the
 	   data in use in that stack, in bytes.  This used to be a
 	   conditional around just the two extra args, but that might
 	   be undefined if yyoverflow is a macro.  */
-	yyoverflow ("parser stack overflow",
+	yyoverflow (YY_("memory exhausted"),
 		    &yyss1, yysize * sizeof (*yyssp),
 		    &yyvs1, yysize * sizeof (*yyvsp),
 
@@ -2623,21 +2847,21 @@
       }
 #else /* no yyoverflow */
 # ifndef YYSTACK_RELOCATE
-      goto yyoverflowlab;
+      goto yyexhaustedlab;
 # else
       /* Extend the stack our own way.  */
-      if (yystacksize >= YYMAXDEPTH)
-	goto yyoverflowlab;
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
       yystacksize *= 2;
-      if (yystacksize > YYMAXDEPTH)
+      if (YYMAXDEPTH < yystacksize)
 	yystacksize = YYMAXDEPTH;
 
       {
-	short *yyss1 = yyss;
+	short int *yyss1 = yyss;
 	union yyalloc *yyptr =
 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
 	if (! yyptr)
-	  goto yyoverflowlab;
+	  goto yyexhaustedlab;
 	YYSTACK_RELOCATE (yyss);
 	YYSTACK_RELOCATE (yyvs);
 
@@ -2655,7 +2879,7 @@
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
 		  (unsigned long int) yystacksize));
 
-      if (yyssp >= yyss + yystacksize - 1)
+      if (yyss + yystacksize - 1 <= yyssp)
 	YYABORT;
     }
 
@@ -2669,50 +2893,39 @@
 yybackup:
 
 /* Do appropriate processing given the current state.  */
-/* Read a lookahead token if we need one and don't already have one.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
 /* yyresume: */
 
-  /* First try to decide what to do without reference to lookahead token.  */
+  /* First try to decide what to do without reference to look-ahead token.  */
 
   yyn = yypact[yystate];
   if (yyn == YYPACT_NINF)
     goto yydefault;
 
-  /* Not known => get a 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)
     {
       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.  */
-
+      yychar = yytoken = YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
   else
     {
-      yychar1 = YYTRANSLATE (yychar);
-
-      /* We have to keep this `#if YYDEBUG', since we use variables
-	 which are defined only if `YYDEBUG' is set.  */
-      YYDPRINTF ((stderr, "Next token is "));
-      YYDSYMPRINT ((stderr, yychar1, yylval));
-      YYDPRINTF ((stderr, "\n"));
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
     }
 
-  /* If the proper action on seeing token YYCHAR1 is to reduce or to
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
      detect an error, take that action.  */
-  yyn += yychar1;
-  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yychar1)
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
     goto yydefault;
   yyn = yytable[yyn];
   if (yyn <= 0)
@@ -2726,9 +2939,8 @@
   if (yyn == YYFINAL)
     YYACCEPT;
 
-  /* Shift the lookahead token.  */
-  YYDPRINTF ((stderr, "Shifting token %d (%s), ",
-	      yychar, yytname[yychar1]));
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 
   /* Discard the token being shifted unless it is eof.  */
   if (yychar != YYEOF)
@@ -2774,512 +2986,485 @@
   yyval = yyvsp[1-yylen];
 
 
-
-#if YYDEBUG
-  /* We have to keep this `#if YYDEBUG', since we use variables which
-     are defined only if `YYDEBUG' is set.  */
-  if (yydebug)
-    {
-      int yyi;
-
-      YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
-		 yyn - 1, yyrline[yyn]);
-
-      /* Print the symbols being reduced, and their result.  */
-      for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++)
-	YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
-      YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-    }
-#endif
+  YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 3:
-#line 1032 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-  if (yyvsp[0].UIntVal > (uint32_t)INT32_MAX)     // Outside of my range!
-    GEN_ERROR("Value too large for type!");
-  yyval.SIntVal = (int32_t)yyvsp[0].UIntVal;
-  CHECK_FOR_ERROR
-}
+        case 29:
+#line 1038 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;}
+    break;
+
+  case 30:
+#line 1038 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;}
     break;
 
   case 31:
-#line 1048 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.IPredicate = ICmpInst::ICMP_EQ; }
+#line 1039 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;}
     break;
 
   case 32:
-#line 1048 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.IPredicate = ICmpInst::ICMP_NE; }
+#line 1039 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;}
     break;
 
   case 33:
-#line 1049 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.IPredicate = ICmpInst::ICMP_SLT; }
+#line 1040 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;}
     break;
 
   case 34:
-#line 1049 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.IPredicate = ICmpInst::ICMP_SGT; }
+#line 1040 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;}
     break;
 
   case 35:
-#line 1050 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.IPredicate = ICmpInst::ICMP_SLE; }
+#line 1041 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;}
     break;
 
   case 36:
-#line 1050 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.IPredicate = ICmpInst::ICMP_SGE; }
+#line 1041 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;}
     break;
 
   case 37:
-#line 1051 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.IPredicate = ICmpInst::ICMP_ULT; }
+#line 1042 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;}
     break;
 
   case 38:
-#line 1051 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.IPredicate = ICmpInst::ICMP_UGT; }
+#line 1042 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;}
     break;
 
   case 39:
-#line 1052 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.IPredicate = ICmpInst::ICMP_ULE; }
+#line 1046 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;}
     break;
 
   case 40:
-#line 1052 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.IPredicate = ICmpInst::ICMP_UGE; }
+#line 1046 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;}
     break;
 
   case 41:
-#line 1056 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_OEQ; }
+#line 1047 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;}
     break;
 
   case 42:
-#line 1056 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_ONE; }
+#line 1047 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;}
     break;
 
   case 43:
-#line 1057 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_OLT; }
+#line 1048 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;}
     break;
 
   case 44:
-#line 1057 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_OGT; }
+#line 1048 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;}
     break;
 
   case 45:
-#line 1058 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_OLE; }
+#line 1049 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;}
     break;
 
   case 46:
-#line 1058 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_OGE; }
+#line 1049 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;}
     break;
 
   case 47:
-#line 1059 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_ORD; }
+#line 1050 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;}
     break;
 
   case 48:
-#line 1059 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_UNO; }
+#line 1050 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;}
     break;
 
   case 49:
-#line 1060 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_UEQ; }
+#line 1051 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;}
     break;
 
   case 50:
-#line 1060 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_UNE; }
+#line 1051 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;}
     break;
 
   case 51:
-#line 1061 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_ULT; }
+#line 1052 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;}
     break;
 
   case 52:
-#line 1061 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_UGT; }
+#line 1052 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;}
     break;
 
   case 53:
-#line 1062 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_ULE; }
+#line 1053 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;}
     break;
 
   case 54:
-#line 1062 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_UGE; }
-    break;
-
-  case 55:
-#line 1063 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_TRUE; }
-    break;
-
-  case 56:
-#line 1064 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.FPredicate = FCmpInst::FCMP_FALSE; }
-    break;
-
-  case 60:
-#line 1073 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    yyval.StrVal = yyvsp[-1].StrVal;
-    CHECK_FOR_ERROR
-  }
+#line 1054 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;}
     break;
 
   case 61:
-#line 1077 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    yyval.StrVal = 0;
-    CHECK_FOR_ERROR
-  }
+#line 1063 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.StrVal) = 0; ;}
     break;
 
   case 62:
-#line 1083 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::InternalLinkage; }
+#line 1067 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.StrVal) = (yyvsp[-1].StrVal);
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 63:
-#line 1084 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::WeakLinkage; }
-    break;
-
-  case 64:
-#line 1085 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::LinkOnceLinkage; }
-    break;
-
-  case 65:
-#line 1086 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::AppendingLinkage; }
+#line 1071 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.StrVal) = 0;
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 66:
-#line 1087 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::DLLExportLinkage; }
+#line 1078 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.StrVal) = (yyvsp[-1].StrVal);
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 67:
-#line 1091 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::DLLImportLinkage; }
+#line 1082 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.StrVal) = 0;
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 68:
-#line 1092 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::ExternalWeakLinkage; }
+#line 1088 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 69:
-#line 1093 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::ExternalLinkage; }
+#line 1089 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 70:
-#line 1097 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Visibility = GlobalValue::DefaultVisibility; }
+#line 1090 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
     break;
 
   case 71:
-#line 1098 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Visibility = GlobalValue::HiddenVisibility;  }
+#line 1091 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;}
     break;
 
   case 72:
-#line 1102 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::ExternalLinkage; }
+#line 1092 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
     break;
 
   case 73:
-#line 1103 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::DLLImportLinkage; }
+#line 1096 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
     break;
 
   case 74:
-#line 1104 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::ExternalWeakLinkage; }
+#line 1097 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
     break;
 
   case 75:
-#line 1108 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::ExternalLinkage; }
+#line 1098 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 76:
-#line 1109 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::InternalLinkage; }
+#line 1102 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Visibility) = GlobalValue::DefaultVisibility; ;}
     break;
 
   case 77:
-#line 1110 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::LinkOnceLinkage; }
+#line 1103 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Visibility) = GlobalValue::HiddenVisibility;  ;}
     break;
 
   case 78:
-#line 1111 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::WeakLinkage; }
+#line 1107 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 79:
-#line 1112 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::DLLExportLinkage; }
+#line 1108 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
     break;
 
   case 80:
-#line 1115 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.UIntVal = CallingConv::C; }
+#line 1109 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
     break;
 
   case 81:
-#line 1116 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.UIntVal = CallingConv::C; }
+#line 1113 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 82:
-#line 1117 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.UIntVal = CallingConv::CSRet; }
+#line 1114 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 83:
-#line 1118 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.UIntVal = CallingConv::Fast; }
+#line 1115 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
     break;
 
   case 84:
-#line 1119 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.UIntVal = CallingConv::Cold; }
+#line 1116 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 85:
-#line 1120 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.UIntVal = CallingConv::X86_StdCall; }
+#line 1117 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
     break;
 
   case 86:
-#line 1121 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.UIntVal = CallingConv::X86_FastCall; }
+#line 1120 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = CallingConv::C; ;}
     break;
 
   case 87:
-#line 1122 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-                   if ((unsigned)yyvsp[0].UInt64Val != yyvsp[0].UInt64Val)
-                     GEN_ERROR("Calling conv too large!");
-                   yyval.UIntVal = yyvsp[0].UInt64Val;
-                  CHECK_FOR_ERROR
-                 }
+#line 1121 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = CallingConv::C; ;}
     break;
 
   case 88:
-#line 1129 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.ParamAttrs = FunctionType::ZExtAttribute; }
+#line 1122 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = CallingConv::CSRet; ;}
     break;
 
   case 89:
-#line 1130 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.ParamAttrs = FunctionType::SExtAttribute; }
+#line 1123 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = CallingConv::Fast; ;}
     break;
 
   case 90:
-#line 1133 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.ParamAttrs = FunctionType::NoAttributeSet; }
+#line 1124 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = CallingConv::Cold; ;}
     break;
 
   case 91:
-#line 1134 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-                yyval.ParamAttrs = FunctionType::ParameterAttributes(yyvsp[-1].ParamAttrs | yyvsp[0].ParamAttrs);
-              }
+#line 1125 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = CallingConv::X86_StdCall; ;}
     break;
 
   case 92:
-#line 1139 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.ParamAttrs = FunctionType::NoReturnAttribute; }
+#line 1126 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = CallingConv::X86_FastCall; ;}
+    break;
+
+  case 93:
+#line 1127 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+                   if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val))
+                     GEN_ERROR("Calling conv too large!");
+                   (yyval.UIntVal) = (yyvsp[0].UInt64Val);
+                  CHECK_FOR_ERROR
+                 ;}
     break;
 
   case 94:
-#line 1143 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.ParamAttrs = FunctionType::NoAttributeSet; }
+#line 1134 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = FunctionType::ZExtAttribute; ;}
     break;
 
   case 95:
-#line 1144 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-                yyval.ParamAttrs = FunctionType::ParameterAttributes(yyvsp[-1].ParamAttrs | yyvsp[0].ParamAttrs);
-              }
+#line 1135 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = FunctionType::SExtAttribute; ;}
     break;
 
   case 96:
-#line 1151 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.UIntVal = 0; }
+#line 1138 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = FunctionType::NoAttributeSet; ;}
     break;
 
   case 97:
-#line 1152 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1139 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-  yyval.UIntVal = yyvsp[0].UInt64Val;
-  if (yyval.UIntVal != 0 && !isPowerOf2_32(yyval.UIntVal))
-    GEN_ERROR("Alignment must be a power of two!");
-  CHECK_FOR_ERROR
-}
+                (yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[-1].ParamAttrs) | (yyvsp[0].ParamAttrs));
+              ;}
     break;
 
   case 98:
-#line 1158 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.UIntVal = 0; }
-    break;
-
-  case 99:
-#line 1159 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-  yyval.UIntVal = yyvsp[0].UInt64Val;
-  if (yyval.UIntVal != 0 && !isPowerOf2_32(yyval.UIntVal))
-    GEN_ERROR("Alignment must be a power of two!");
-  CHECK_FOR_ERROR
-}
+#line 1144 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = FunctionType::NoReturnAttribute; ;}
     break;
 
   case 100:
-#line 1167 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-  for (unsigned i = 0, e = strlen(yyvsp[0].StrVal); i != e; ++i)
-    if (yyvsp[0].StrVal[i] == '"' || yyvsp[0].StrVal[i] == '\\')
-      GEN_ERROR("Invalid character in section name!");
-  yyval.StrVal = yyvsp[0].StrVal;
-  CHECK_FOR_ERROR
-}
+#line 1148 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ParamAttrs) = FunctionType::NoAttributeSet; ;}
     break;
 
   case 101:
-#line 1175 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.StrVal = 0; }
+#line 1149 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+                (yyval.ParamAttrs) = FunctionType::ParameterAttributes((yyvsp[-1].ParamAttrs) | (yyvsp[0].ParamAttrs));
+              ;}
     break;
 
   case 102:
-#line 1176 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.StrVal = yyvsp[0].StrVal; }
+#line 1156 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = 0; ;}
     break;
 
   case 103:
-#line 1181 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {}
+#line 1157 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+  (yyval.UIntVal) = (yyvsp[0].UInt64Val);
+  if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
+    GEN_ERROR("Alignment must be a power of two!");
+  CHECK_FOR_ERROR
+;}
     break;
 
   case 104:
-#line 1182 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {}
+#line 1163 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.UIntVal) = 0; ;}
     break;
 
   case 105:
-#line 1183 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1164 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    CurGV->setSection(yyvsp[0].StrVal);
-    free(yyvsp[0].StrVal);
-    CHECK_FOR_ERROR
-  }
+  (yyval.UIntVal) = (yyvsp[0].UInt64Val);
+  if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
+    GEN_ERROR("Alignment must be a power of two!");
+  CHECK_FOR_ERROR
+;}
     break;
 
   case 106:
-#line 1188 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1172 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    if (yyvsp[0].UInt64Val != 0 && !isPowerOf2_32(yyvsp[0].UInt64Val))
-      GEN_ERROR("Alignment must be a power of two!");
-    CurGV->setAlignment(yyvsp[0].UInt64Val);
-    CHECK_FOR_ERROR
-  }
+  for (unsigned i = 0, e = strlen((yyvsp[0].StrVal)); i != e; ++i)
+    if ((yyvsp[0].StrVal)[i] == '"' || (yyvsp[0].StrVal)[i] == '\\')
+      GEN_ERROR("Invalid character in section name!");
+  (yyval.StrVal) = (yyvsp[0].StrVal);
+  CHECK_FOR_ERROR
+;}
+    break;
+
+  case 107:
+#line 1180 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.StrVal) = 0; ;}
+    break;
+
+  case 108:
+#line 1181 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.StrVal) = (yyvsp[0].StrVal); ;}
+    break;
+
+  case 109:
+#line 1186 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {;}
+    break;
+
+  case 110:
+#line 1187 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {;}
     break;
 
   case 111:
-#line 1204 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1188 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.TypeVal = new PATypeHolder(OpaqueType::get());
+    CurGV->setSection((yyvsp[0].StrVal));
+    free((yyvsp[0].StrVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 112:
-#line 1208 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1193 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType);
+    if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val)))
+      GEN_ERROR("Alignment must be a power of two!");
+    CurGV->setAlignment((yyvsp[0].UInt64Val));
     CHECK_FOR_ERROR
-  }
-    break;
-
-  case 113:
-#line 1212 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {                             // Pointer type?
-    if (*yyvsp[-1].TypeVal == Type::LabelTy)
-      GEN_ERROR("Cannot form a pointer to a basic block");
-    yyval.TypeVal = new PATypeHolder(HandleUpRefs(PointerType::get(*yyvsp[-1].TypeVal)));
-    delete yyvsp[-1].TypeVal;
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 114:
-#line 1219 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {            // Named types are also simple types...
-    const Type* tmp = getTypeVal(yyvsp[0].ValIDVal);
-    CHECK_FOR_ERROR
-    yyval.TypeVal = new PATypeHolder(tmp);
-  }
-    break;
-
-  case 115:
-#line 1224 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {                   // Type UpReference
-    if (yyvsp[0].UInt64Val > (uint64_t)~0U) GEN_ERROR("Value out of range!");
-    OpaqueType *OT = OpaqueType::get();        // Use temporary placeholder
-    UpRefs.push_back(UpRefRecord((unsigned)yyvsp[0].UInt64Val, OT));  // Add to vector...
-    yyval.TypeVal = new PATypeHolder(OT);
-    UR_OUT("New Upreference!\n");
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 116:
-#line 1232 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    std::vector<const Type*> Params;
-    std::vector<FunctionType::ParameterAttributes> Attrs;
-    Attrs.push_back(yyvsp[0].ParamAttrs);
-    for (TypeWithAttrsList::iterator I=yyvsp[-2].TypeWithAttrsList->begin(), E=yyvsp[-2].TypeWithAttrsList->end(); I != E; ++I) {
-      Params.push_back(I->Ty->get());
-      if (I->Ty->get() != Type::VoidTy)
-        Attrs.push_back(I->Attrs);
-    }
-    bool isVarArg = Params.size() && Params.back() == Type::VoidTy;
-    if (isVarArg) Params.pop_back();
-
-    FunctionType *FT = FunctionType::get(*yyvsp[-4].TypeVal, Params, isVarArg, Attrs);
-    delete yyvsp[-2].TypeWithAttrsList;   // Delete the argument list
-    delete yyvsp[-4].TypeVal;   // Delete the return type handle
-    yyval.TypeVal = new PATypeHolder(HandleUpRefs(FT)); 
-    CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 117:
-#line 1250 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1209 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TypeVal) = new PATypeHolder(OpaqueType::get());
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 118:
+#line 1213 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType));
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 119:
+#line 1217 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {                             // Pointer type?
+    if (*(yyvsp[-1].TypeVal) == Type::LabelTy)
+      GEN_ERROR("Cannot form a pointer to a basic block");
+    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PointerType::get(*(yyvsp[-1].TypeVal))));
+    delete (yyvsp[-1].TypeVal);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 120:
+#line 1224 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {            // Named types are also simple types...
+    const Type* tmp = getTypeVal((yyvsp[0].ValIDVal));
+    CHECK_FOR_ERROR
+    (yyval.TypeVal) = new PATypeHolder(tmp);
+  ;}
+    break;
+
+  case 121:
+#line 1229 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {                   // Type UpReference
+    if ((yyvsp[0].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range!");
+    OpaqueType *OT = OpaqueType::get();        // Use temporary placeholder
+    UpRefs.push_back(UpRefRecord((unsigned)(yyvsp[0].UInt64Val), OT));  // Add to vector...
+    (yyval.TypeVal) = new PATypeHolder(OT);
+    UR_OUT("New Upreference!\n");
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 122:
+#line 1237 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
     std::vector<const Type*> Params;
     std::vector<FunctionType::ParameterAttributes> Attrs;
-    Attrs.push_back(yyvsp[0].ParamAttrs);
-    for (TypeWithAttrsList::iterator I=yyvsp[-2].TypeWithAttrsList->begin(), E=yyvsp[-2].TypeWithAttrsList->end(); I != E; ++I) {
+    Attrs.push_back((yyvsp[0].ParamAttrs));
+    for (TypeWithAttrsList::iterator I=(yyvsp[-2].TypeWithAttrsList)->begin(), E=(yyvsp[-2].TypeWithAttrsList)->end(); I != E; ++I) {
       Params.push_back(I->Ty->get());
       if (I->Ty->get() != Type::VoidTy)
         Attrs.push_back(I->Attrs);
@@ -3287,426 +3472,448 @@
     bool isVarArg = Params.size() && Params.back() == Type::VoidTy;
     if (isVarArg) Params.pop_back();
 
-    FunctionType *FT = FunctionType::get(yyvsp[-4].PrimType, Params, isVarArg, Attrs);
-    delete yyvsp[-2].TypeWithAttrsList;      // Delete the argument list
-    yyval.TypeVal = new PATypeHolder(HandleUpRefs(FT)); 
+    FunctionType *FT = FunctionType::get(*(yyvsp[-4].TypeVal), Params, isVarArg, Attrs);
+    delete (yyvsp[-2].TypeWithAttrsList);   // Delete the argument list
+    delete (yyvsp[-4].TypeVal);   // Delete the return type handle
+    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT)); 
     CHECK_FOR_ERROR
-  }
-    break;
-
-  case 118:
-#line 1268 "/usr/home/jeffc/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;
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 119:
-#line 1273 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {          // Packed array type?
-     const llvm::Type* ElemTy = yyvsp[-1].TypeVal->get();
-     if ((unsigned)yyvsp[-3].UInt64Val != yyvsp[-3].UInt64Val)
-        GEN_ERROR("Unsigned result not equal to signed result");
-     if (!ElemTy->isFloatingPoint() && !ElemTy->isInteger())
-        GEN_ERROR("Element type of a PackedType must be primitive");
-     if (!isPowerOf2_32(yyvsp[-3].UInt64Val))
-       GEN_ERROR("Vector length should be a power of 2!");
-     yyval.TypeVal = new PATypeHolder(HandleUpRefs(PackedType::get(*yyvsp[-1].TypeVal, (unsigned)yyvsp[-3].UInt64Val)));
-     delete yyvsp[-1].TypeVal;
-     CHECK_FOR_ERROR
-  }
-    break;
-
-  case 120:
-#line 1285 "/usr/home/jeffc/llvm/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)
-      Elements.push_back(*I);
-
-    yyval.TypeVal = new PATypeHolder(HandleUpRefs(StructType::get(Elements)));
-    delete yyvsp[-1].TypeList;
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 121:
-#line 1295 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {                                  // Empty structure type?
-    yyval.TypeVal = new PATypeHolder(StructType::get(std::vector<const Type*>()));
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 122:
-#line 1299 "/usr/home/jeffc/llvm/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)
-      Elements.push_back(*I);
-
-    yyval.TypeVal = new PATypeHolder(HandleUpRefs(StructType::get(Elements, true)));
-    delete yyvsp[-2].TypeList;
-    CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 123:
-#line 1309 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {                         // Empty structure type?
-    yyval.TypeVal = new PATypeHolder(StructType::get(std::vector<const Type*>(), true));
+#line 1255 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    std::vector<const Type*> Params;
+    std::vector<FunctionType::ParameterAttributes> Attrs;
+    Attrs.push_back((yyvsp[0].ParamAttrs));
+    for (TypeWithAttrsList::iterator I=(yyvsp[-2].TypeWithAttrsList)->begin(), E=(yyvsp[-2].TypeWithAttrsList)->end(); I != E; ++I) {
+      Params.push_back(I->Ty->get());
+      if (I->Ty->get() != Type::VoidTy)
+        Attrs.push_back(I->Attrs);
+    }
+    bool isVarArg = Params.size() && Params.back() == Type::VoidTy;
+    if (isVarArg) Params.pop_back();
+
+    FunctionType *FT = FunctionType::get((yyvsp[-4].PrimType), Params, isVarArg, Attrs);
+    delete (yyvsp[-2].TypeWithAttrsList);      // Delete the argument list
+    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(FT)); 
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 124:
-#line 1316 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { 
-    yyval.TypeWithAttrs.Ty = yyvsp[-1].TypeVal; 
-    yyval.TypeWithAttrs.Attrs = yyvsp[0].ParamAttrs; 
-  }
+#line 1273 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {          // Sized array type?
+    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(ArrayType::get(*(yyvsp[-1].TypeVal), (unsigned)(yyvsp[-3].UInt64Val))));
+    delete (yyvsp[-1].TypeVal);
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 125:
-#line 1323 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
-    if (!(*yyvsp[0].TypeVal)->isFirstClassType())
-      GEN_ERROR("LLVM functions cannot return aggregate types!");
-    yyval.TypeVal = yyvsp[0].TypeVal;
-  }
+#line 1278 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {          // Packed array type?
+     const llvm::Type* ElemTy = (yyvsp[-1].TypeVal)->get();
+     if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val))
+        GEN_ERROR("Unsigned result not equal to signed result");
+     if (!ElemTy->isFloatingPoint() && !ElemTy->isInteger())
+        GEN_ERROR("Element type of a PackedType must be primitive");
+     if (!isPowerOf2_32((yyvsp[-3].UInt64Val)))
+       GEN_ERROR("Vector length should be a power of 2!");
+     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PackedType::get(*(yyvsp[-1].TypeVal), (unsigned)(yyvsp[-3].UInt64Val))));
+     delete (yyvsp[-1].TypeVal);
+     CHECK_FOR_ERROR
+  ;}
     break;
 
   case 126:
-#line 1330 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    yyval.TypeVal = new PATypeHolder(Type::VoidTy);
-  }
+#line 1290 "/proj/llvm/llvm-1/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)
+      Elements.push_back(*I);
+
+    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(StructType::get(Elements)));
+    delete (yyvsp[-1].TypeList);
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 127:
-#line 1335 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    yyval.TypeWithAttrsList = new TypeWithAttrsList();
-    yyval.TypeWithAttrsList->push_back(yyvsp[0].TypeWithAttrs);
+#line 1300 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {                                  // Empty structure type?
+    (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>()));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 128:
-#line 1340 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1304 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    (yyval.TypeWithAttrsList=yyvsp[-2].TypeWithAttrsList)->push_back(yyvsp[0].TypeWithAttrs);
+    std::vector<const Type*> Elements;
+    for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-2].TypeList)->begin(),
+           E = (yyvsp[-2].TypeList)->end(); I != E; ++I)
+      Elements.push_back(*I);
+
+    (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(StructType::get(Elements, true)));
+    delete (yyvsp[-2].TypeList);
     CHECK_FOR_ERROR
-  }
+  ;}
+    break;
+
+  case 129:
+#line 1314 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {                         // Empty structure type?
+    (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>(), true));
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 130:
-#line 1348 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    yyval.TypeWithAttrsList=yyvsp[-2].TypeWithAttrsList;
-    TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet;
-    TWA.Ty = new PATypeHolder(Type::VoidTy);
-    yyval.TypeWithAttrsList->push_back(TWA);
-    CHECK_FOR_ERROR
-  }
+#line 1321 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { 
+    (yyval.TypeWithAttrs).Ty = (yyvsp[-1].TypeVal); 
+    (yyval.TypeWithAttrs).Attrs = (yyvsp[0].ParamAttrs); 
+  ;}
     break;
 
   case 131:
-#line 1355 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1328 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.TypeWithAttrsList = new TypeWithAttrsList;
-    TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet;
-    TWA.Ty = new PATypeHolder(Type::VoidTy);
-    yyval.TypeWithAttrsList->push_back(TWA);
-    CHECK_FOR_ERROR
-  }
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
+    if (!(*(yyvsp[0].TypeVal))->isFirstClassType())
+      GEN_ERROR("LLVM functions cannot return aggregate types!");
+    (yyval.TypeVal) = (yyvsp[0].TypeVal);
+  ;}
     break;
 
   case 132:
-#line 1362 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1335 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.TypeWithAttrsList = new TypeWithAttrsList();
-    CHECK_FOR_ERROR
-  }
+    (yyval.TypeVal) = new PATypeHolder(Type::VoidTy);
+  ;}
     break;
 
   case 133:
-#line 1370 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1340 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.TypeList = new std::list<PATypeHolder>();
-    yyval.TypeList->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal;
+    (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
+    (yyval.TypeWithAttrsList)->push_back((yyvsp[0].TypeWithAttrs));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 134:
-#line 1375 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1345 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    (yyval.TypeList=yyvsp[-2].TypeList)->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal;
+    ((yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList))->push_back((yyvsp[0].TypeWithAttrs));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
-  case 135:
-#line 1386 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 136:
+#line 1353 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TypeWithAttrsList)=(yyvsp[-2].TypeWithAttrsList);
+    TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet;
+    TWA.Ty = new PATypeHolder(Type::VoidTy);
+    (yyval.TypeWithAttrsList)->push_back(TWA);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 137:
+#line 1360 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TypeWithAttrsList) = new TypeWithAttrsList;
+    TypeWithAttrs TWA; TWA.Attrs = FunctionType::NoAttributeSet;
+    TWA.Ty = new PATypeHolder(Type::VoidTy);
+    (yyval.TypeWithAttrsList)->push_back(TWA);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 138:
+#line 1367 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 139:
+#line 1375 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.TypeList) = new std::list<PATypeHolder>();
+    (yyval.TypeList)->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 140:
+#line 1380 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 141:
+#line 1391 "/proj/llvm/llvm-1/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[-3].TypeVal))->getDescription());
+    const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-3].TypeVal)->get());
     if (ATy == 0)
       GEN_ERROR("Cannot make array constant with type: '" + 
-                     (*yyvsp[-3].TypeVal)->getDescription() + "'!");
+                     (*(yyvsp[-3].TypeVal))->getDescription() + "'!");
     const Type *ETy = ATy->getElementType();
     int NumElements = ATy->getNumElements();
 
     // Verify that we have the correct size...
-    if (NumElements != -1 && NumElements != (int)yyvsp[-1].ConstVector->size())
+    if (NumElements != -1 && NumElements != (int)(yyvsp[-1].ConstVector)->size())
       GEN_ERROR("Type mismatch: constant sized array initialized with " +
-                     utostr(yyvsp[-1].ConstVector->size()) +  " arguments, but has size of " + 
+                     utostr((yyvsp[-1].ConstVector)->size()) +  " arguments, but has size of " + 
                      itostr(NumElements) + "!");
 
     // Verify all elements are correct type!
-    for (unsigned i = 0; i < yyvsp[-1].ConstVector->size(); i++) {
-      if (ETy != (*yyvsp[-1].ConstVector)[i]->getType())
+    for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) {
+      if (ETy != (*(yyvsp[-1].ConstVector))[i]->getType())
         GEN_ERROR("Element #" + utostr(i) + " is not of type '" + 
                        ETy->getDescription() +"' as required!\nIt is of type '"+
-                       (*yyvsp[-1].ConstVector)[i]->getType()->getDescription() + "'.");
+                       (*(yyvsp[-1].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[-1].ConstVector));
+    delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
-  case 136:
-#line 1414 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 142:
+#line 1419 "/proj/llvm/llvm-1/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[-2].TypeVal))->getDescription());
+    const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal)->get());
     if (ATy == 0)
       GEN_ERROR("Cannot make array constant with type: '" + 
-                     (*yyvsp[-2].TypeVal)->getDescription() + "'!");
+                     (*(yyvsp[-2].TypeVal))->getDescription() + "'!");
 
     int NumElements = ATy->getNumElements();
     if (NumElements != -1 && NumElements != 0) 
       GEN_ERROR("Type mismatch: constant sized array initialized with 0"
                      " arguments, but has size of " + itostr(NumElements) +"!");
-    yyval.ConstVal = ConstantArray::get(ATy, std::vector<Constant*>());
-    delete yyvsp[-2].TypeVal;
+    (yyval.ConstVal) = ConstantArray::get(ATy, std::vector<Constant*>());
+    delete (yyvsp[-2].TypeVal);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
-  case 137:
-#line 1430 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 143:
+#line 1435 "/proj/llvm/llvm-1/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[-2].TypeVal))->getDescription());
+    const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal)->get());
     if (ATy == 0)
       GEN_ERROR("Cannot make array constant with type: '" + 
-                     (*yyvsp[-2].TypeVal)->getDescription() + "'!");
+                     (*(yyvsp[-2].TypeVal))->getDescription() + "'!");
 
     int NumElements = ATy->getNumElements();
     const Type *ETy = ATy->getElementType();
-    char *EndStr = UnEscapeLexed(yyvsp[0].StrVal, true);
-    if (NumElements != -1 && NumElements != (EndStr-yyvsp[0].StrVal))
+    char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true);
+    if (NumElements != -1 && NumElements != (EndStr-(yyvsp[0].StrVal)))
       GEN_ERROR("Can't build string constant of size " + 
-                     itostr((int)(EndStr-yyvsp[0].StrVal)) +
+                     itostr((int)(EndStr-(yyvsp[0].StrVal))) +
                      " when array has size " + itostr(NumElements) + "!");
     std::vector<Constant*> Vals;
     if (ETy == Type::Int8Ty) {
-      for (unsigned char *C = (unsigned char *)yyvsp[0].StrVal; 
+      for (unsigned char *C = (unsigned char *)(yyvsp[0].StrVal); 
         C != (unsigned char*)EndStr; ++C)
       Vals.push_back(ConstantInt::get(ETy, *C));
     } else {
-      free(yyvsp[0].StrVal);
+      free((yyvsp[0].StrVal));
       GEN_ERROR("Cannot build string arrays of non byte sized elements!");
     }
-    free(yyvsp[0].StrVal);
-    yyval.ConstVal = ConstantArray::get(ATy, Vals);
-    delete yyvsp[-2].TypeVal;
+    free((yyvsp[0].StrVal));
+    (yyval.ConstVal) = ConstantArray::get(ATy, Vals);
+    delete (yyvsp[-2].TypeVal);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
-  case 138:
-#line 1459 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 144:
+#line 1464 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized arr
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
-    const PackedType *PTy = dyn_cast<PackedType>(yyvsp[-3].TypeVal->get());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+    const PackedType *PTy = dyn_cast<PackedType>((yyvsp[-3].TypeVal)->get());
     if (PTy == 0)
       GEN_ERROR("Cannot make packed constant with type: '" + 
-                     (*yyvsp[-3].TypeVal)->getDescription() + "'!");
+                     (*(yyvsp[-3].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[-1].ConstVector)->size())
       GEN_ERROR("Type mismatch: constant sized packed initialized with " +
-                     utostr(yyvsp[-1].ConstVector->size()) +  " arguments, but has size of " + 
+                     utostr((yyvsp[-1].ConstVector)->size()) +  " arguments, but has size of " + 
                      itostr(NumElements) + "!");
 
     // Verify all elements are correct type!
-    for (unsigned i = 0; i < yyvsp[-1].ConstVector->size(); i++) {
-      if (ETy != (*yyvsp[-1].ConstVector)[i]->getType())
+    for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) {
+      if (ETy != (*(yyvsp[-1].ConstVector))[i]->getType())
         GEN_ERROR("Element #" + utostr(i) + " is not of type '" + 
            ETy->getDescription() +"' as required!\nIt is of type '"+
-           (*yyvsp[-1].ConstVector)[i]->getType()->getDescription() + "'.");
+           (*(yyvsp[-1].ConstVector))[i]->getType()->getDescription() + "'.");
     }
 
-    yyval.ConstVal = ConstantPacked::get(PTy, *yyvsp[-1].ConstVector);
-    delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
+    (yyval.ConstVal) = ConstantPacked::get(PTy, *(yyvsp[-1].ConstVector));
+    delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector);
     CHECK_FOR_ERROR
-  }
-    break;
-
-  case 139:
-#line 1487 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    const StructType *STy = dyn_cast<StructType>(yyvsp[-3].TypeVal->get());
-    if (STy == 0)
-      GEN_ERROR("Cannot make struct constant with type: '" + 
-                     (*yyvsp[-3].TypeVal)->getDescription() + "'!");
-
-    if (yyvsp[-1].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))
-        GEN_ERROR("Expected type '" +
-                       STy->getElementType(i)->getDescription() +
-                       "' for element #" + utostr(i) +
-                       " of structure initializer!");
-
-    // Check to ensure that Type is not packed
-    if (STy->isPacked())
-      GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'");
-
-    yyval.ConstVal = ConstantStruct::get(STy, *yyvsp[-1].ConstVector);
-    delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 140:
-#line 1512 "/usr/home/jeffc/llvm/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());
-    if (STy == 0)
-      GEN_ERROR("Cannot make struct constant with type: '" + 
-                     (*yyvsp[-2].TypeVal)->getDescription() + "'!");
-
-    if (STy->getNumContainedTypes() != 0)
-      GEN_ERROR("Illegal number of initializers for structure type!");
-
-    // Check to ensure that Type is not packed
-    if (STy->isPacked())
-      GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'");
-
-    yyval.ConstVal = ConstantStruct::get(STy, std::vector<Constant*>());
-    delete yyvsp[-2].TypeVal;
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 141:
-#line 1531 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    const StructType *STy = dyn_cast<StructType>(yyvsp[-5].TypeVal->get());
-    if (STy == 0)
-      GEN_ERROR("Cannot make struct constant with type: '" + 
-                     (*yyvsp[-5].TypeVal)->getDescription() + "'!");
-
-    if (yyvsp[-2].ConstVector->size() != STy->getNumContainedTypes())
-      GEN_ERROR("Illegal number of initializers for structure type!");
-
-    // Check to ensure that constants are compatible with the type initializer!
-    for (unsigned i = 0, e = yyvsp[-2].ConstVector->size(); i != e; ++i)
-      if ((*yyvsp[-2].ConstVector)[i]->getType() != STy->getElementType(i))
-        GEN_ERROR("Expected type '" +
-                       STy->getElementType(i)->getDescription() +
-                       "' for element #" + utostr(i) +
-                       " of structure initializer!");
-
-    // Check to ensure that Type is packed
-    if (!STy->isPacked())
-      GEN_ERROR("Packed Initializer to unpacked type '" + STy->getDescription() + "'");
-
-    yyval.ConstVal = ConstantStruct::get(STy, *yyvsp[-2].ConstVector);
-    delete yyvsp[-5].TypeVal; delete yyvsp[-2].ConstVector;
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 142:
-#line 1556 "/usr/home/jeffc/llvm/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());
-    if (STy == 0)
-      GEN_ERROR("Cannot make struct constant with type: '" + 
-                     (*yyvsp[-4].TypeVal)->getDescription() + "'!");
-
-    if (STy->getNumContainedTypes() != 0)
-      GEN_ERROR("Illegal number of initializers for structure type!");
-
-    // Check to ensure that Type is packed
-    if (!STy->isPacked())
-      GEN_ERROR("Packed Initializer to unpacked type '" + STy->getDescription() + "'");
-
-    yyval.ConstVal = ConstantStruct::get(STy, std::vector<Constant*>());
-    delete yyvsp[-4].TypeVal;
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 143:
-#line 1575 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
-    const PointerType *PTy = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
-    if (PTy == 0)
-      GEN_ERROR("Cannot make null pointer constant with type: '" + 
-                     (*yyvsp[-1].TypeVal)->getDescription() + "'!");
-
-    yyval.ConstVal = ConstantPointerNull::get(PTy);
-    delete yyvsp[-1].TypeVal;
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 144:
-#line 1587 "/usr/home/jeffc/llvm/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;
-    CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 145:
-#line 1594 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1492 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    const StructType *STy = dyn_cast<StructType>((yyvsp[-3].TypeVal)->get());
+    if (STy == 0)
+      GEN_ERROR("Cannot make struct constant with type: '" + 
+                     (*(yyvsp[-3].TypeVal))->getDescription() + "'!");
+
+    if ((yyvsp[-1].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))
+        GEN_ERROR("Expected type '" +
+                       STy->getElementType(i)->getDescription() +
+                       "' for element #" + utostr(i) +
+                       " of structure initializer!");
+
+    // Check to ensure that Type is not packed
+    if (STy->isPacked())
+      GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'");
+
+    (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[-1].ConstVector));
+    delete (yyvsp[-3].TypeVal); delete (yyvsp[-1].ConstVector);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 146:
+#line 1517 "/proj/llvm/llvm-1/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[-2].TypeVal))->getDescription());
+    const StructType *STy = dyn_cast<StructType>((yyvsp[-2].TypeVal)->get());
+    if (STy == 0)
+      GEN_ERROR("Cannot make struct constant with type: '" + 
+                     (*(yyvsp[-2].TypeVal))->getDescription() + "'!");
+
+    if (STy->getNumContainedTypes() != 0)
+      GEN_ERROR("Illegal number of initializers for structure type!");
+
+    // Check to ensure that Type is not packed
+    if (STy->isPacked())
+      GEN_ERROR("Unpacked Initializer to packed type '" + STy->getDescription() + "'");
+
+    (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>());
+    delete (yyvsp[-2].TypeVal);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 147:
+#line 1536 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    const StructType *STy = dyn_cast<StructType>((yyvsp[-5].TypeVal)->get());
+    if (STy == 0)
+      GEN_ERROR("Cannot make struct constant with type: '" + 
+                     (*(yyvsp[-5].TypeVal))->getDescription() + "'!");
+
+    if ((yyvsp[-2].ConstVector)->size() != STy->getNumContainedTypes())
+      GEN_ERROR("Illegal number of initializers for structure type!");
+
+    // Check to ensure that constants are compatible with the type initializer!
+    for (unsigned i = 0, e = (yyvsp[-2].ConstVector)->size(); i != e; ++i)
+      if ((*(yyvsp[-2].ConstVector))[i]->getType() != STy->getElementType(i))
+        GEN_ERROR("Expected type '" +
+                       STy->getElementType(i)->getDescription() +
+                       "' for element #" + utostr(i) +
+                       " of structure initializer!");
+
+    // Check to ensure that Type is packed
+    if (!STy->isPacked())
+      GEN_ERROR("Packed Initializer to unpacked type '" + STy->getDescription() + "'");
+
+    (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[-2].ConstVector));
+    delete (yyvsp[-5].TypeVal); delete (yyvsp[-2].ConstVector);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 148:
+#line 1561 "/proj/llvm/llvm-1/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());
+    if (STy == 0)
+      GEN_ERROR("Cannot make struct constant with type: '" + 
+                     (*(yyvsp[-4].TypeVal))->getDescription() + "'!");
+
+    if (STy->getNumContainedTypes() != 0)
+      GEN_ERROR("Illegal number of initializers for structure type!");
+
+    // Check to ensure that Type is packed
+    if (!STy->isPacked())
+      GEN_ERROR("Packed Initializer to unpacked type '" + STy->getDescription() + "'");
+
+    (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>());
+    delete (yyvsp[-4].TypeVal);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 149:
+#line 1580 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    const PointerType *PTy = dyn_cast<PointerType>((yyvsp[-1].TypeVal)->get());
+    if (PTy == 0)
+      GEN_ERROR("Cannot make null pointer constant with type: '" + 
+                     (*(yyvsp[-1].TypeVal))->getDescription() + "'!");
+
+    (yyval.ConstVal) = ConstantPointerNull::get(PTy);
+    delete (yyvsp[-1].TypeVal);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 150:
+#line 1592 "/proj/llvm/llvm-1/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);
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 151:
+#line 1599 "/proj/llvm/llvm-1/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());
     if (Ty == 0)
       GEN_ERROR("Global const reference must be a pointer type!");
 
@@ -3720,7 +3927,7 @@
     Function *SavedCurFn = CurFun.CurrentFunction;
     CurFun.CurrentFunction = 0;
 
-    Value *V = getValNonImprovising(Ty, yyvsp[0].ValIDVal);
+    Value *V = getValNonImprovising(Ty, (yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
 
     CurFun.CurrentFunction = SavedCurFn;
@@ -3735,14 +3942,17 @@
 
       // 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[0].ValIDVal)));
     
       if (I != CurModule.GlobalRefs.end()) {
         V = I->second;             // Placeholder already exists, use it...
-        yyvsp[0].ValIDVal.destroy();
+        (yyvsp[0].ValIDVal).destroy();
       } else {
         std::string Name;
-        if (yyvsp[0].ValIDVal.Type == ValID::NameVal) Name = yyvsp[0].ValIDVal.Name;
+        if ((yyvsp[0].ValIDVal).Type == ValID::GlobalName)
+          Name = (yyvsp[0].ValIDVal).Name;
+        else if ((yyvsp[0].ValIDVal).Type != ValID::GlobalID)
+          GEN_ERROR("Invalid reference to global");
 
         // Create the forward referenced global.
         GlobalValue *GV;
@@ -3757,330 +3967,330 @@
         }
 
         // 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[0].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].TypeVal);            // Free the type handle
     CHECK_FOR_ERROR
-  }
-    break;
-
-  case 146:
-#line 1657 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
-    if (yyvsp[-1].TypeVal->get() != yyvsp[0].ConstVal->getType())
-      GEN_ERROR("Mismatched types for constant expression: " + 
-        (*yyvsp[-1].TypeVal)->getDescription() + " and " + yyvsp[0].ConstVal->getType()->getDescription());
-    yyval.ConstVal = yyvsp[0].ConstVal;
-    delete yyvsp[-1].TypeVal;
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 147:
-#line 1667 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
-    const Type *Ty = yyvsp[-1].TypeVal->get();
-    if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty))
-      GEN_ERROR("Cannot create a null initialized value of this type!");
-    yyval.ConstVal = Constant::getNullValue(Ty);
-    delete yyvsp[-1].TypeVal;
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 148:
-#line 1677 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {      // integral constants
-    if (!ConstantInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].SInt64Val))
-      GEN_ERROR("Constant value doesn't fit in type!");
-    yyval.ConstVal = ConstantInt::get(yyvsp[-1].PrimType, yyvsp[0].SInt64Val);
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 149:
-#line 1683 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {      // integral constants
-    if (!ConstantInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].UInt64Val))
-      GEN_ERROR("Constant value doesn't fit in type!");
-    yyval.ConstVal = ConstantInt::get(yyvsp[-1].PrimType, yyvsp[0].UInt64Val);
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 150:
-#line 1689 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {                      // Boolean constants
-    assert(cast<IntegerType>(yyvsp[-1].PrimType)->getBitWidth() == 1 && "Not Bool?");
-    yyval.ConstVal = ConstantInt::getTrue();
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 151:
-#line 1694 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {                     // Boolean constants
-    assert(cast<IntegerType>(yyvsp[-1].PrimType)->getBitWidth() == 1 && "Not Bool?");
-    yyval.ConstVal = ConstantInt::getFalse();
-    CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 152:
-#line 1699 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {                   // Float & Double constants
-    if (!ConstantFP::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].FPVal))
-      GEN_ERROR("Floating point constant invalid for type!!");
-    yyval.ConstVal = ConstantFP::get(yyvsp[-1].PrimType, yyvsp[0].FPVal);
+#line 1665 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    if ((yyvsp[-1].TypeVal)->get() != (yyvsp[0].ConstVal)->getType())
+      GEN_ERROR("Mismatched types for constant expression: " + 
+        (*(yyvsp[-1].TypeVal))->getDescription() + " and " + (yyvsp[0].ConstVal)->getType()->getDescription());
+    (yyval.ConstVal) = (yyvsp[0].ConstVal);
+    delete (yyvsp[-1].TypeVal);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 153:
-#line 1707 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1675 "/proj/llvm/llvm-1/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 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;
-  }
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    const Type *Ty = (yyvsp[-1].TypeVal)->get();
+    if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty))
+      GEN_ERROR("Cannot create a null initialized value of this type!");
+    (yyval.ConstVal) = Constant::getNullValue(Ty);
+    delete (yyvsp[-1].TypeVal);
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 154:
-#line 1719 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1685 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {      // integral constants
+    if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val)))
+      GEN_ERROR("Constant value doesn't fit in type!");
+    (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val));
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 155:
+#line 1691 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {      // integral constants
+    if (!ConstantInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val)))
+      GEN_ERROR("Constant value doesn't fit in type!");
+    (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val));
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 156:
+#line 1697 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {                      // Boolean constants
+    assert(cast<IntegerType>((yyvsp[-1].PrimType))->getBitWidth() == 1 && "Not Bool?");
+    (yyval.ConstVal) = ConstantInt::getTrue();
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 157:
+#line 1702 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {                     // Boolean constants
+    assert(cast<IntegerType>((yyvsp[-1].PrimType))->getBitWidth() == 1 && "Not Bool?");
+    (yyval.ConstVal) = ConstantInt::getFalse();
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 158:
+#line 1707 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {                   // Float & Double constants
+    if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].FPVal)))
+      GEN_ERROR("Floating point constant invalid for type!!");
+    (yyval.ConstVal) = ConstantFP::get((yyvsp[-1].PrimType), (yyvsp[0].FPVal));
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 159:
+#line 1715 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!isa<PointerType>(yyvsp[-2].ConstVal->getType()))
+    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 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 160:
+#line 1727 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!isa<PointerType>((yyvsp[-2].ConstVal)->getType()))
       GEN_ERROR("GetElementPtr requires a pointer operand!");
 
     const Type *IdxTy =
-      GetElementPtrInst::getIndexedType(yyvsp[-2].ConstVal->getType(), *yyvsp[-1].ValueList, true);
+      GetElementPtrInst::getIndexedType((yyvsp[-2].ConstVal)->getType(), *(yyvsp[-1].ValueList), true);
     if (!IdxTy)
       GEN_ERROR("Index list invalid for constant getelementptr!");
 
     std::vector<Constant*> IdxVec;
-    for (unsigned i = 0, e = yyvsp[-1].ValueList->size(); i != e; ++i)
-      if (Constant *C = dyn_cast<Constant>((*yyvsp[-1].ValueList)[i]))
+    for (unsigned i = 0, e = (yyvsp[-1].ValueList)->size(); i != e; ++i)
+      if (Constant *C = dyn_cast<Constant>((*(yyvsp[-1].ValueList))[i]))
         IdxVec.push_back(C);
       else
         GEN_ERROR("Indices to constant getelementptr must be constants!");
 
-    delete yyvsp[-1].ValueList;
+    delete (yyvsp[-1].ValueList);
 
-    yyval.ConstVal = ConstantExpr::getGetElementPtr(yyvsp[-2].ConstVal, IdxVec);
+    (yyval.ConstVal) = ConstantExpr::getGetElementPtr((yyvsp[-2].ConstVal), IdxVec);
     CHECK_FOR_ERROR
-  }
-    break;
-
-  case 155:
-#line 1740 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (yyvsp[-5].ConstVal->getType() != Type::Int1Ty)
-      GEN_ERROR("Select condition must be of boolean type!");
-    if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
-      GEN_ERROR("Select operand types must match!");
-    yyval.ConstVal = ConstantExpr::getSelect(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 156:
-#line 1748 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
-      GEN_ERROR("Binary operator types must match!");
-    CHECK_FOR_ERROR;
-    yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  }
-    break;
-
-  case 157:
-#line 1754 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
-      GEN_ERROR("Logical operator types must match!");
-    if (!yyvsp[-3].ConstVal->getType()->isInteger()) {
-      if (!isa<PackedType>(yyvsp[-3].ConstVal->getType()) || 
-          !cast<PackedType>(yyvsp[-3].ConstVal->getType())->getElementType()->isInteger())
-        GEN_ERROR("Logical operator requires integral operands!");
-    }
-    yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 158:
-#line 1765 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
-      GEN_ERROR("icmp operand types must match!");
-    yyval.ConstVal = ConstantExpr::getICmp(yyvsp[-5].IPredicate, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  }
-    break;
-
-  case 159:
-#line 1770 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
-      GEN_ERROR("fcmp operand types must match!");
-    yyval.ConstVal = ConstantExpr::getFCmp(yyvsp[-5].FPredicate, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  }
-    break;
-
-  case 160:
-#line 1775 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (yyvsp[-1].ConstVal->getType() != Type::Int8Ty)
-      GEN_ERROR("Shift count for shift constant must be i8 type!");
-    if (!yyvsp[-3].ConstVal->getType()->isInteger())
-      GEN_ERROR("Shift constant expression requires integer operand!");
-    CHECK_FOR_ERROR;
-    yyval.ConstVal = ConstantExpr::get(yyvsp[-5].OtherOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-    CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 161:
-#line 1784 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1748 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!ExtractElementInst::isValidOperands(yyvsp[-3].ConstVal, yyvsp[-1].ConstVal))
-      GEN_ERROR("Invalid extractelement operands!");
-    yyval.ConstVal = ConstantExpr::getExtractElement(yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
+    if ((yyvsp[-5].ConstVal)->getType() != Type::Int1Ty)
+      GEN_ERROR("Select condition must be of boolean type!");
+    if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
+      GEN_ERROR("Select operand types must match!");
+    (yyval.ConstVal) = ConstantExpr::getSelect((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 162:
-#line 1790 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1756 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!InsertElementInst::isValidOperands(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal))
-      GEN_ERROR("Invalid insertelement operands!");
-    yyval.ConstVal = ConstantExpr::getInsertElement(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-    CHECK_FOR_ERROR
-  }
+    if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
+      GEN_ERROR("Binary operator types must match!");
+    CHECK_FOR_ERROR;
+    (yyval.ConstVal) = ConstantExpr::get((yyvsp[-5].BinaryOpVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
+  ;}
     break;
 
   case 163:
-#line 1796 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1762 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!ShuffleVectorInst::isValidOperands(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal))
-      GEN_ERROR("Invalid shufflevector operands!");
-    yyval.ConstVal = ConstantExpr::getShuffleVector(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
+    if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
+      GEN_ERROR("Logical operator types must match!");
+    if (!(yyvsp[-3].ConstVal)->getType()->isInteger()) {
+      if (!isa<PackedType>((yyvsp[-3].ConstVal)->getType()) || 
+          !cast<PackedType>((yyvsp[-3].ConstVal)->getType())->getElementType()->isInteger())
+        GEN_ERROR("Logical operator requires integral operands!");
+    }
+    (yyval.ConstVal) = ConstantExpr::get((yyvsp[-5].BinaryOpVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 164:
-#line 1805 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1773 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    (yyval.ConstVector = yyvsp[-2].ConstVector)->push_back(yyvsp[0].ConstVal);
-    CHECK_FOR_ERROR
-  }
+    if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
+      GEN_ERROR("icmp operand types must match!");
+    (yyval.ConstVal) = ConstantExpr::getICmp((yyvsp[-5].IPredicate), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
+  ;}
     break;
 
   case 165:
-#line 1809 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1778 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.ConstVector = new std::vector<Constant*>();
-    yyval.ConstVector->push_back(yyvsp[0].ConstVal);
-    CHECK_FOR_ERROR
-  }
+    if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
+      GEN_ERROR("fcmp operand types must match!");
+    (yyval.ConstVal) = ConstantExpr::getFCmp((yyvsp[-5].FPredicate), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
+  ;}
     break;
 
   case 166:
-#line 1817 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.BoolVal = false; }
+#line 1783 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    if ((yyvsp[-1].ConstVal)->getType() != Type::Int8Ty)
+      GEN_ERROR("Shift count for shift constant must be i8 type!");
+    if (!(yyvsp[-3].ConstVal)->getType()->isInteger())
+      GEN_ERROR("Shift constant expression requires integer operand!");
+    CHECK_FOR_ERROR;
+    (yyval.ConstVal) = ConstantExpr::get((yyvsp[-5].OtherOpVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 167:
-#line 1817 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.BoolVal = true; }
+#line 1792 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
+      GEN_ERROR("Invalid extractelement operands!");
+    (yyval.ConstVal) = ConstantExpr::getExtractElement((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 168:
-#line 1828 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1798 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.ModuleVal = ParserResult = CurModule.CurrentModule;
-    CurModule.ModuleDone();
-    CHECK_FOR_ERROR;
-  }
+    if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
+      GEN_ERROR("Invalid insertelement operands!");
+    (yyval.ConstVal) = ConstantExpr::getInsertElement((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 169:
-#line 1833 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1804 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.ModuleVal = ParserResult = CurModule.CurrentModule;
-    CurModule.ModuleDone();
-    CHECK_FOR_ERROR;
-  }
+    if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
+      GEN_ERROR("Invalid shufflevector operands!");
+    (yyval.ConstVal) = ConstantExpr::getShuffleVector((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal));
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 170:
+#line 1813 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    ((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal));
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 171:
+#line 1817 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ConstVector) = new std::vector<Constant*>();
+    (yyval.ConstVector)->push_back((yyvsp[0].ConstVal));
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 172:
-#line 1846 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { CurFun.isDeclare = false; }
+#line 1825 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.BoolVal) = false; ;}
     break;
 
   case 173:
-#line 1846 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    CurFun.FunctionDone();
-    CHECK_FOR_ERROR
-  }
+#line 1825 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.BoolVal) = true; ;}
     break;
 
   case 174:
-#line 1850 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { CurFun.isDeclare = true; }
+#line 1836 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
+    CurModule.ModuleDone();
+    CHECK_FOR_ERROR;
+  ;}
     break;
 
   case 175:
-#line 1850 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1841 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    CHECK_FOR_ERROR
-  }
+    (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
+    CurModule.ModuleDone();
+    CHECK_FOR_ERROR;
+  ;}
     break;
 
-  case 176:
-#line 1853 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    CHECK_FOR_ERROR
-  }
+  case 178:
+#line 1854 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { CurFun.isDeclare = false; ;}
     break;
 
-  case 177:
-#line 1856 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 179:
+#line 1854 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    CurFun.FunctionDone();
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 180:
+#line 1858 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { CurFun.isDeclare = true; ;}
+    break;
+
+  case 181:
+#line 1858 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 182:
+#line 1861 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 183:
+#line 1864 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
     // Emit an error if there are any unresolved types left.
     if (!CurModule.LateResolveTypes.empty()) {
       const ValID &DID = CurModule.LateResolveTypes.begin()->first;
-      if (DID.Type == ValID::NameVal) {
+      if (DID.Type == ValID::LocalName) {
         GEN_ERROR("Reference to an undefined type: '"+DID.getName() + "'");
       } else {
         GEN_ERROR("Reference to an undefined type: #" + itostr(DID.Num));
       }
     }
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
-  case 178:
-#line 1868 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 184:
+#line 1876 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
     // Eagerly resolve types.  This is not an optimization, this is a
     // requirement that is due to the fact that we could have this:
     //
@@ -4090,283 +4300,248 @@
     // 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[-2].StrVal), *(yyvsp[0].TypeVal));
 
-    if (!setTypeName(*yyvsp[0].TypeVal, yyvsp[-2].StrVal) && !yyvsp[-2].StrVal) {
+    if (!setTypeName(*(yyvsp[0].TypeVal), (yyvsp[-2].StrVal)) && !(yyvsp[-2].StrVal)) {
       CHECK_FOR_ERROR
       // If this is a named type that is not a redefinition, add it to the slot
       // table.
-      CurModule.Types.push_back(*yyvsp[0].TypeVal);
+      CurModule.Types.push_back(*(yyvsp[0].TypeVal));
     }
 
-    delete yyvsp[0].TypeVal;
+    delete (yyvsp[0].TypeVal);
     CHECK_FOR_ERROR
-  }
-    break;
-
-  case 179:
-#line 1892 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    ResolveTypeTo(yyvsp[-2].StrVal, yyvsp[0].PrimType);
-
-    if (!setTypeName(yyvsp[0].PrimType, yyvsp[-2].StrVal) && !yyvsp[-2].StrVal) {
-      CHECK_FOR_ERROR
-      // If this is a named type that is not a redefinition, add it to the slot
-      // table.
-      CurModule.Types.push_back(yyvsp[0].PrimType);
-    }
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 180:
-#line 1903 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { /* "Externally Visible" Linkage */
-    if (yyvsp[0].ConstVal == 0) 
-      GEN_ERROR("Global value initializer is not a constant!");
-    CurGV = ParseGlobalVariable(yyvsp[-3].StrVal, GlobalValue::ExternalLinkage,
-                                yyvsp[-2].Visibility, yyvsp[-1].BoolVal, yyvsp[0].ConstVal->getType(), yyvsp[0].ConstVal);
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 181:
-#line 1909 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    CurGV = 0;
-  }
-    break;
-
-  case 182:
-#line 1912 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (yyvsp[0].ConstVal == 0) 
-      GEN_ERROR("Global value initializer is not a constant!");
-    CurGV = ParseGlobalVariable(yyvsp[-4].StrVal, yyvsp[-3].Linkage, yyvsp[-2].Visibility, yyvsp[-1].BoolVal, yyvsp[0].ConstVal->getType(), yyvsp[0].ConstVal);
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 183:
-#line 1917 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    CurGV = 0;
-  }
-    break;
-
-  case 184:
-#line 1920 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
-    CurGV = ParseGlobalVariable(yyvsp[-4].StrVal, yyvsp[-3].Linkage, yyvsp[-2].Visibility, yyvsp[-1].BoolVal, *yyvsp[0].TypeVal, 0);
-    CHECK_FOR_ERROR
-    delete yyvsp[0].TypeVal;
-  }
+  ;}
     break;
 
   case 185:
-#line 1926 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1900 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    CurGV = 0;
+    ResolveTypeTo((yyvsp[-2].StrVal), (yyvsp[0].PrimType));
+
+    if (!setTypeName((yyvsp[0].PrimType), (yyvsp[-2].StrVal)) && !(yyvsp[-2].StrVal)) {
+      CHECK_FOR_ERROR
+      // If this is a named type that is not a redefinition, add it to the slot
+      // table.
+      CurModule.Types.push_back((yyvsp[0].PrimType));
+    }
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 186:
-#line 1930 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1911 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     { 
+    /* "Externally Visible" Linkage */
+    if ((yyvsp[0].ConstVal) == 0) 
+      GEN_ERROR("Global value initializer is not a constant!");
+    CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::ExternalLinkage,
+                                (yyvsp[-2].Visibility), (yyvsp[-1].BoolVal), (yyvsp[0].ConstVal)->getType(), (yyvsp[0].ConstVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 187:
-#line 1933 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1918 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    CHECK_FOR_ERROR
-  }
+    CurGV = 0;
+  ;}
     break;
 
   case 188:
-#line 1939 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1921 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    if ((yyvsp[0].ConstVal) == 0) 
+      GEN_ERROR("Global value initializer is not a constant!");
+    CurGV = ParseGlobalVariable((yyvsp[-4].StrVal), (yyvsp[-3].Linkage), (yyvsp[-2].Visibility), (yyvsp[-1].BoolVal), (yyvsp[0].ConstVal)->getType(), (yyvsp[0].ConstVal));
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 189:
+#line 1926 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    CurGV = 0;
+  ;}
+    break;
+
+  case 190:
+#line 1929 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    if (!UpRefs.empty())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
+    CurGV = ParseGlobalVariable((yyvsp[-4].StrVal), (yyvsp[-3].Linkage), (yyvsp[-2].Visibility), (yyvsp[-1].BoolVal), *(yyvsp[0].TypeVal), 0);
+    CHECK_FOR_ERROR
+    delete (yyvsp[0].TypeVal);
+  ;}
+    break;
+
+  case 191:
+#line 1935 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    CurGV = 0;
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 192:
+#line 1939 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { 
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 193:
+#line 1942 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 194:
+#line 1948 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
   const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm();
-  char *EndStr = UnEscapeLexed(yyvsp[0].StrVal, true);
-  std::string NewAsm(yyvsp[0].StrVal, EndStr);
-  free(yyvsp[0].StrVal);
+  char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true);
+  std::string NewAsm((yyvsp[0].StrVal), EndStr);
+  free((yyvsp[0].StrVal));
 
   if (AsmSoFar.empty())
     CurModule.CurrentModule->setModuleInlineAsm(NewAsm);
   else
     CurModule.CurrentModule->setModuleInlineAsm(AsmSoFar+"\n"+NewAsm);
   CHECK_FOR_ERROR
-}
+;}
     break;
 
-  case 189:
-#line 1952 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Endianness = Module::BigEndian; }
-    break;
-
-  case 190:
-#line 1953 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.Endianness = Module::LittleEndian; }
-    break;
-
-  case 191:
-#line 1955 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 195:
+#line 1961 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    CurModule.CurrentModule->setEndianness(yyvsp[0].Endianness);
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 192:
-#line 1959 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    if (yyvsp[0].UInt64Val == 32)
-      CurModule.CurrentModule->setPointerSize(Module::Pointer32);
-    else if (yyvsp[0].UInt64Val == 64)
-      CurModule.CurrentModule->setPointerSize(Module::Pointer64);
-    else
-      GEN_ERROR("Invalid pointer size: '" + utostr(yyvsp[0].UInt64Val) + "'!");
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 193:
-#line 1968 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    CurModule.CurrentModule->setTargetTriple(yyvsp[0].StrVal);
-    free(yyvsp[0].StrVal);
-  }
-    break;
-
-  case 194:
-#line 1972 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    CurModule.CurrentModule->setDataLayout(yyvsp[0].StrVal);
-    free(yyvsp[0].StrVal);
-  }
+    CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal));
+    free((yyvsp[0].StrVal));
+  ;}
     break;
 
   case 196:
-#line 1979 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1965 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-          CurModule.CurrentModule->addLibrary(yyvsp[0].StrVal);
-          free(yyvsp[0].StrVal);
-          CHECK_FOR_ERROR
-        }
-    break;
-
-  case 197:
-#line 1984 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-          CurModule.CurrentModule->addLibrary(yyvsp[0].StrVal);
-          free(yyvsp[0].StrVal);
-          CHECK_FOR_ERROR
-        }
+    CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal));
+    free((yyvsp[0].StrVal));
+  ;}
     break;
 
   case 198:
-#line 1989 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1972 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+          CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal));
+          free((yyvsp[0].StrVal));
+          CHECK_FOR_ERROR
+        ;}
+    break;
+
+  case 199:
+#line 1977 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+          CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal));
+          free((yyvsp[0].StrVal));
+          CHECK_FOR_ERROR
+        ;}
+    break;
+
+  case 200:
+#line 1982 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
           CHECK_FOR_ERROR
-        }
+        ;}
+    break;
+
+  case 201:
+#line 1991 "/proj/llvm/llvm-1/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("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);
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 202:
-#line 1999 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.StrVal = 0; }
+#line 2001 "/proj/llvm/llvm-1/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("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);
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 203:
-#line 2001 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2012 "/proj/llvm/llvm-1/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("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);
+    (yyval.ArgList) = (yyvsp[0].ArgList);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 204:
-#line 2011 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2016 "/proj/llvm/llvm-1/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("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);
+    (yyval.ArgList) = (yyvsp[-2].ArgList);
+    struct ArgListEntry E;
+    E.Ty = new PATypeHolder(Type::VoidTy);
+    E.Name = 0;
+    E.Attrs = FunctionType::NoAttributeSet;
+    (yyval.ArgList)->push_back(E);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 205:
-#line 2022 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2025 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.ArgList = yyvsp[0].ArgList;
+    (yyval.ArgList) = new ArgListType;
+    struct ArgListEntry E;
+    E.Ty = new PATypeHolder(Type::VoidTy);
+    E.Name = 0;
+    E.Attrs = FunctionType::NoAttributeSet;
+    (yyval.ArgList)->push_back(E);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 206:
-#line 2026 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2034 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.ArgList = yyvsp[-2].ArgList;
-    struct ArgListEntry E;
-    E.Ty = new PATypeHolder(Type::VoidTy);
-    E.Name = 0;
-    E.Attrs = FunctionType::NoAttributeSet;
-    yyval.ArgList->push_back(E);
+    (yyval.ArgList) = 0;
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 207:
-#line 2035 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2040 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.ArgList = new ArgListType;
-    struct ArgListEntry E;
-    E.Ty = new PATypeHolder(Type::VoidTy);
-    E.Name = 0;
-    E.Attrs = FunctionType::NoAttributeSet;
-    yyval.ArgList->push_back(E);
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 208:
-#line 2044 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    yyval.ArgList = 0;
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 209:
-#line 2050 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-  UnEscapeLexed(yyvsp[-6].StrVal);
-  std::string FunctionName(yyvsp[-6].StrVal);
-  free(yyvsp[-6].StrVal);  // Free strdup'd memory!
+  UnEscapeLexed((yyvsp[-6].StrVal));
+  std::string FunctionName((yyvsp[-6].StrVal));
+  free((yyvsp[-6].StrVal));  // Free strdup'd memory!
   
   // Check the function result for abstractness if this is a define. We should
   // have no abstract types at this point
-  if (!CurFun.isDeclare && CurModule.TypeIsUnresolved(yyvsp[-7].TypeVal))
-    GEN_ERROR("Reference to abstract result: "+ yyvsp[-7].TypeVal->get()->getDescription());
+  if (!CurFun.isDeclare && CurModule.TypeIsUnresolved((yyvsp[-7].TypeVal)))
+    GEN_ERROR("Reference to abstract result: "+ (yyvsp[-7].TypeVal)->get()->getDescription());
 
   std::vector<const Type*> ParamTypeList;
   std::vector<FunctionType::ParameterAttributes> ParamAttrs;
-  ParamAttrs.push_back(yyvsp[-2].ParamAttrs);
-  if (yyvsp[-4].ArgList) {   // If there are arguments...
-    for (ArgListType::iterator I = yyvsp[-4].ArgList->begin(); I != yyvsp[-4].ArgList->end(); ++I) {
+  ParamAttrs.push_back((yyvsp[-2].ParamAttrs));
+  if ((yyvsp[-4].ArgList)) {   // If there are arguments...
+    for (ArgListType::iterator I = (yyvsp[-4].ArgList)->begin(); I != (yyvsp[-4].ArgList)->end(); ++I) {
       const Type* Ty = I->Ty->get();
       if (!CurFun.isDeclare && CurModule.TypeIsUnresolved(I->Ty))
         GEN_ERROR("Reference to abstract argument: " + Ty->getDescription());
@@ -4379,16 +4554,16 @@
   bool isVarArg = ParamTypeList.size() && ParamTypeList.back() == Type::VoidTy;
   if (isVarArg) ParamTypeList.pop_back();
 
-  FunctionType *FT = FunctionType::get(*yyvsp[-7].TypeVal, ParamTypeList, isVarArg,
+  FunctionType *FT = FunctionType::get(*(yyvsp[-7].TypeVal), ParamTypeList, isVarArg,
                                        ParamAttrs);
   const PointerType *PFT = PointerType::get(FT);
-  delete yyvsp[-7].TypeVal;
+  delete (yyvsp[-7].TypeVal);
 
   ValID ID;
   if (!FunctionName.empty()) {
-    ID = ValID::create((char*)FunctionName.c_str());
+    ID = ValID::createGlobalName((char*)FunctionName.c_str());
   } else {
-    ID = ValID::create((int)CurModule.Values[PFT].size());
+    ID = ValID::createGlobalID(CurModule.Values[PFT].size());
   }
 
   Function *Fn = 0;
@@ -4427,24 +4602,24 @@
     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);
-    free(yyvsp[-1].StrVal);
+  Fn->setCallingConv((yyvsp[-8].UIntVal));
+  Fn->setAlignment((yyvsp[0].UIntVal));
+  if ((yyvsp[-1].StrVal)) {
+    Fn->setSection((yyvsp[-1].StrVal));
+    free((yyvsp[-1].StrVal));
   }
 
   // Add all of the arguments we parsed to the function...
-  if (yyvsp[-4].ArgList) {                     // Is null if empty...
+  if ((yyvsp[-4].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[-4].ArgList)->back().Ty->get() == Type::VoidTy && (yyvsp[-4].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[-4].ArgList)->back().Ty;
+      (yyvsp[-4].ArgList)->pop_back();  // Delete the last entry
     }
     Function::arg_iterator ArgIt = Fn->arg_begin();
     unsigned Idx = 1;
-    for (ArgListType::iterator I = yyvsp[-4].ArgList->begin(); I != yyvsp[-4].ArgList->end(); ++I, ++ArgIt) {
+    for (ArgListType::iterator I = (yyvsp[-4].ArgList)->begin(); I != (yyvsp[-4].ArgList)->end(); ++I, ++ArgIt) {
       delete I->Ty;                          // Delete the typeholder...
       setValueName(ArgIt, I->Name);           // Insert arg into symtab...
       CHECK_FOR_ERROR
@@ -4452,128 +4627,128 @@
       Idx++;
     }
 
-    delete yyvsp[-4].ArgList;                     // We're now done with the argument list
+    delete (yyvsp[-4].ArgList);                     // We're now done with the argument list
   }
   CHECK_FOR_ERROR
-}
+;}
     break;
 
-  case 212:
-#line 2157 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+  case 210:
+#line 2147 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-  yyval.FunctionVal = CurFun.CurrentFunction;
+  (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);
-}
+  (yyval.FunctionVal)->setLinkage((yyvsp[-3].Linkage));
+  (yyval.FunctionVal)->setVisibility((yyvsp[-2].Visibility));
+;}
+    break;
+
+  case 213:
+#line 2158 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+  (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
+  CHECK_FOR_ERROR
+;}
+    break;
+
+  case 214:
+#line 2163 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    CurFun.CurrentFunction->setLinkage((yyvsp[-2].Linkage));
+    CurFun.CurrentFunction->setVisibility((yyvsp[-1].Visibility));
+    (yyval.FunctionVal) = CurFun.CurrentFunction;
+    CurFun.FunctionDone();
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 215:
-#line 2168 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2175 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-  yyval.FunctionVal = yyvsp[-1].FunctionVal;
-  CHECK_FOR_ERROR
-}
+    (yyval.BoolVal) = false;
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 216:
-#line 2173 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2179 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    CurFun.CurrentFunction->setLinkage(yyvsp[-2].Linkage);
-    CurFun.CurrentFunction->setVisibility(yyvsp[-1].Visibility);
-    yyval.FunctionVal = CurFun.CurrentFunction;
-    CurFun.FunctionDone();
+    (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 217:
-#line 2185 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    yyval.BoolVal = false;
+#line 2184 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {    // A reference to a direct constant
+    (yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 218:
-#line 2189 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2188 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.BoolVal = true;
+    (yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 219:
-#line 2194 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {    // A reference to a direct constant
-    yyval.ValIDVal = ValID::create(yyvsp[0].SInt64Val);
+#line 2192 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {                     // Perhaps it's an FP constant?
+    (yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 220:
-#line 2198 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2196 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.ValIDVal = ValID::create(yyvsp[0].UInt64Val);
+    (yyval.ValIDVal) = ValID::create(ConstantInt::getTrue());
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 221:
-#line 2202 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {                     // Perhaps it's an FP constant?
-    yyval.ValIDVal = ValID::create(yyvsp[0].FPVal);
+#line 2200 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ValIDVal) = ValID::create(ConstantInt::getFalse());
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 222:
-#line 2206 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2204 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.ValIDVal = ValID::create(ConstantInt::getTrue());
+    (yyval.ValIDVal) = ValID::createNull();
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 223:
-#line 2210 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2208 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.ValIDVal = ValID::create(ConstantInt::getFalse());
+    (yyval.ValIDVal) = ValID::createUndef();
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 224:
-#line 2214 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    yyval.ValIDVal = ValID::createNull();
+#line 2212 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {     // A vector zero constant.
+    (yyval.ValIDVal) = ValID::createZeroInit();
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 225:
-#line 2218 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    yyval.ValIDVal = ValID::createUndef();
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 226:
-#line 2222 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {     // A vector zero constant.
-    yyval.ValIDVal = ValID::createZeroInit();
-    CHECK_FOR_ERROR
-  }
-    break;
-
-  case 227:
-#line 2226 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2216 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized packed vector
-    const Type *ETy = (*yyvsp[-1].ConstVector)[0]->getType();
-    int NumElements = yyvsp[-1].ConstVector->size(); 
+    const Type *ETy = (*(yyvsp[-1].ConstVector))[0]->getType();
+    int NumElements = (yyvsp[-1].ConstVector)->size(); 
     
     PackedType* pt = PackedType::get(ETy, NumElements);
     PATypeHolder* PTy = new PATypeHolder(
@@ -4585,115 +4760,131 @@
                                          );
     
     // 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[-1].ConstVector)->size(); i++) {
+      if (ETy != (*(yyvsp[-1].ConstVector))[i]->getType())
         GEN_ERROR("Element #" + utostr(i) + " is not of type '" + 
                      ETy->getDescription() +"' as required!\nIt is of type '" +
-                     (*yyvsp[-1].ConstVector)[i]->getType()->getDescription() + "'.");
+                     (*(yyvsp[-1].ConstVector))[i]->getType()->getDescription() + "'.");
     }
 
-    yyval.ValIDVal = ValID::create(ConstantPacked::get(pt, *yyvsp[-1].ConstVector));
-    delete PTy; delete yyvsp[-1].ConstVector;
+    (yyval.ValIDVal) = ValID::create(ConstantPacked::get(pt, *(yyvsp[-1].ConstVector)));
+    delete PTy; delete (yyvsp[-1].ConstVector);
     CHECK_FOR_ERROR
-  }
+  ;}
+    break;
+
+  case 226:
+#line 2241 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    (yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal));
+    CHECK_FOR_ERROR
+  ;}
+    break;
+
+  case 227:
+#line 2245 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {
+    char *End = UnEscapeLexed((yyvsp[-2].StrVal), true);
+    std::string AsmStr = std::string((yyvsp[-2].StrVal), End);
+    End = UnEscapeLexed((yyvsp[0].StrVal), true);
+    std::string Constraints = std::string((yyvsp[0].StrVal), End);
+    (yyval.ValIDVal) = ValID::createInlineAsm(AsmStr, Constraints, (yyvsp[-3].BoolVal));
+    free((yyvsp[-2].StrVal));
+    free((yyvsp[0].StrVal));
+    CHECK_FOR_ERROR
+  ;}
     break;
 
   case 228:
-#line 2251 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {
-    yyval.ValIDVal = ValID::create(yyvsp[0].ConstVal);
+#line 2259 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {  // Is it an integer reference...?
+    (yyval.ValIDVal) = ValID::createLocalID((yyvsp[0].UIntVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 229:
-#line 2255 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2263 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    char *End = UnEscapeLexed(yyvsp[-2].StrVal, true);
-    std::string AsmStr = std::string(yyvsp[-2].StrVal, End);
-    End = UnEscapeLexed(yyvsp[0].StrVal, true);
-    std::string Constraints = std::string(yyvsp[0].StrVal, End);
-    yyval.ValIDVal = ValID::createInlineAsm(AsmStr, Constraints, yyvsp[-3].BoolVal);
-    free(yyvsp[-2].StrVal);
-    free(yyvsp[0].StrVal);
+    (yyval.ValIDVal) = ValID::createGlobalID((yyvsp[0].UIntVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 230:
-#line 2269 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    {  // Is it an integer reference...?
-    yyval.ValIDVal = ValID::create(yyvsp[0].SIntVal);
+#line 2267 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    {                   // Is it a named reference...?
+    (yyval.ValIDVal) = ValID::createLocalName((yyvsp[0].StrVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 231:
-#line 2273 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2271 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {                   // Is it a named reference...?
-    yyval.ValIDVal = ValID::create(yyvsp[0].StrVal);
+    (yyval.ValIDVal) = ValID::createGlobalName((yyvsp[0].StrVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 234:
-#line 2285 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2283 "/proj/llvm/llvm-1/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].TypeVal))->getDescription());
+    (yyval.ValueVal) = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal)); 
+    delete (yyvsp[-1].TypeVal);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 235:
-#line 2294 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2292 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.FunctionVal = yyvsp[-1].FunctionVal;
+    (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 236:
-#line 2298 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2296 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     { // Do not allow functions with 0 basic blocks   
-    yyval.FunctionVal = yyvsp[-1].FunctionVal;
+    (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 237:
-#line 2307 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2305 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    setValueName(yyvsp[0].TermInstVal, yyvsp[-1].StrVal);
+    setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal));
     CHECK_FOR_ERROR
-    InsertValue(yyvsp[0].TermInstVal);
+    InsertValue((yyvsp[0].TermInstVal));
 
-    yyvsp[-2].BasicBlockVal->getInstList().push_back(yyvsp[0].TermInstVal);
-    InsertValue(yyvsp[-2].BasicBlockVal);
-    yyval.BasicBlockVal = yyvsp[-2].BasicBlockVal;
+    (yyvsp[-2].BasicBlockVal)->getInstList().push_back((yyvsp[0].TermInstVal));
+    InsertValue((yyvsp[-2].BasicBlockVal));
+    (yyval.BasicBlockVal) = (yyvsp[-2].BasicBlockVal);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 238:
-#line 2318 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2316 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    if (CastInst *CI1 = dyn_cast<CastInst>(yyvsp[0].InstVal))
+    if (CastInst *CI1 = dyn_cast<CastInst>((yyvsp[0].InstVal)))
       if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0)))
         if (CI2->getParent() == 0)
-          yyvsp[-1].BasicBlockVal->getInstList().push_back(CI2);
-    yyvsp[-1].BasicBlockVal->getInstList().push_back(yyvsp[0].InstVal);
-    yyval.BasicBlockVal = yyvsp[-1].BasicBlockVal;
+          (yyvsp[-1].BasicBlockVal)->getInstList().push_back(CI2);
+    (yyvsp[-1].BasicBlockVal)->getInstList().push_back((yyvsp[0].InstVal));
+    (yyval.BasicBlockVal) = (yyvsp[-1].BasicBlockVal);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 239:
-#line 2327 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2325 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.BasicBlockVal = getBBVal(ValID::create((int)CurFun.NextBBNum++), true);
+    (yyval.BasicBlockVal) = getBBVal(ValID::createLocalID(CurFun.NextBBNum++), true);
     CHECK_FOR_ERROR
 
     // Make sure to move the basic block to the correct location in the
@@ -4701,15 +4892,15 @@
     // referenced.
     Function::BasicBlockListType &BBL = 
       CurFun.CurrentFunction->getBasicBlockList();
-    BBL.splice(BBL.end(), BBL, yyval.BasicBlockVal);
+    BBL.splice(BBL.end(), BBL, (yyval.BasicBlockVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 240:
-#line 2339 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2337 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.BasicBlockVal = getBBVal(ValID::create(yyvsp[0].StrVal), true);
+    (yyval.BasicBlockVal) = getBBVal(ValID::createLocalName((yyvsp[0].StrVal)), true);
     CHECK_FOR_ERROR
 
     // Make sure to move the basic block to the correct location in the
@@ -4717,100 +4908,100 @@
     // referenced.
     Function::BasicBlockListType &BBL = 
       CurFun.CurrentFunction->getBasicBlockList();
-    BBL.splice(BBL.end(), BBL, yyval.BasicBlockVal);
+    BBL.splice(BBL.end(), BBL, (yyval.BasicBlockVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 241:
-#line 2352 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2350 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {              // Return with a result...
-    yyval.TermInstVal = new ReturnInst(yyvsp[0].ValueVal);
+    (yyval.TermInstVal) = new ReturnInst((yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 242:
-#line 2356 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2354 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {                                       // Return with no result...
-    yyval.TermInstVal = new ReturnInst();
+    (yyval.TermInstVal) = new ReturnInst();
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 243:
-#line 2360 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2358 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {                         // Unconditional Branch...
-    BasicBlock* tmpBB = getBBVal(yyvsp[0].ValIDVal);
+    BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.TermInstVal = new BranchInst(tmpBB);
-  }
+    (yyval.TermInstVal) = new BranchInst(tmpBB);
+  ;}
     break;
 
   case 244:
-#line 2365 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2363 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {  
-    assert(cast<IntegerType>(yyvsp[-7].PrimType)->getBitWidth() == 1 && "Not Bool?");
-    BasicBlock* tmpBBA = getBBVal(yyvsp[-3].ValIDVal);
+    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);
+    BasicBlock* tmpBBB = getBBVal((yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
-    Value* tmpVal = getVal(Type::Int1Ty, yyvsp[-6].ValIDVal);
+    Value* tmpVal = getVal(Type::Int1Ty, (yyvsp[-6].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.TermInstVal = new BranchInst(tmpBBA, tmpBBB, tmpVal);
-  }
+    (yyval.TermInstVal) = new BranchInst(tmpBBA, tmpBBB, tmpVal);
+  ;}
     break;
 
   case 245:
-#line 2375 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2373 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    Value* tmpVal = getVal(yyvsp[-7].PrimType, yyvsp[-6].ValIDVal);
+    Value* tmpVal = getVal((yyvsp[-7].PrimType), (yyvsp[-6].ValIDVal));
     CHECK_FOR_ERROR
-    BasicBlock* tmpBB = getBBVal(yyvsp[-3].ValIDVal);
+    BasicBlock* tmpBB = getBBVal((yyvsp[-3].ValIDVal));
     CHECK_FOR_ERROR
-    SwitchInst *S = new SwitchInst(tmpVal, tmpBB, yyvsp[-1].JumpTable->size());
-    yyval.TermInstVal = S;
+    SwitchInst *S = new SwitchInst(tmpVal, tmpBB, (yyvsp[-1].JumpTable)->size());
+    (yyval.TermInstVal) = S;
 
-    std::vector<std::pair<Constant*,BasicBlock*> >::iterator I = yyvsp[-1].JumpTable->begin(),
-      E = yyvsp[-1].JumpTable->end();
+    std::vector<std::pair<Constant*,BasicBlock*> >::iterator I = (yyvsp[-1].JumpTable)->begin(),
+      E = (yyvsp[-1].JumpTable)->end();
     for (; I != E; ++I) {
       if (ConstantInt *CI = dyn_cast<ConstantInt>(I->first))
           S->addCase(CI, I->second);
       else
         GEN_ERROR("Switch case is constant, but not a simple integer!");
     }
-    delete yyvsp[-1].JumpTable;
+    delete (yyvsp[-1].JumpTable);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 246:
-#line 2394 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2392 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    Value* tmpVal = getVal(yyvsp[-6].PrimType, yyvsp[-5].ValIDVal);
+    Value* tmpVal = getVal((yyvsp[-6].PrimType), (yyvsp[-5].ValIDVal));
     CHECK_FOR_ERROR
-    BasicBlock* tmpBB = getBBVal(yyvsp[-2].ValIDVal);
+    BasicBlock* tmpBB = getBBVal((yyvsp[-2].ValIDVal));
     CHECK_FOR_ERROR
     SwitchInst *S = new SwitchInst(tmpVal, tmpBB, 0);
-    yyval.TermInstVal = S;
+    (yyval.TermInstVal) = S;
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 247:
-#line 2404 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2402 "/proj/llvm/llvm-1/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[-11].TypeVal)->get())) ||
         !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) {
       // Pull out the types of all of the arguments...
       std::vector<const Type*> ParamTypes;
       FunctionType::ParamAttrsList ParamAttrs;
-      ParamAttrs.push_back(yyvsp[-6].ParamAttrs);
-      for (ValueRefList::iterator I = yyvsp[-8].ValueRefList->begin(), E = yyvsp[-8].ValueRefList->end(); I != E; ++I) {
+      ParamAttrs.push_back((yyvsp[-6].ParamAttrs));
+      for (ValueRefList::iterator I = (yyvsp[-8].ValueRefList)->begin(), E = (yyvsp[-8].ValueRefList)->end(); I != E; ++I) {
         const Type *Ty = I->Val->getType();
         if (Ty == Type::VoidTy)
           GEN_ERROR("Short call syntax cannot be used with varargs");
@@ -4818,20 +5009,20 @@
         ParamAttrs.push_back(I->Attrs);
       }
 
-      Ty = FunctionType::get(yyvsp[-11].TypeVal->get(), ParamTypes, false, ParamAttrs);
+      Ty = FunctionType::get((yyvsp[-11].TypeVal)->get(), ParamTypes, false, ParamAttrs);
       PFTy = PointerType::get(Ty);
     }
 
-    Value *V = getVal(PFTy, yyvsp[-10].ValIDVal);   // Get the function we're calling...
+    Value *V = getVal(PFTy, (yyvsp[-10].ValIDVal));   // Get the function we're calling...
     CHECK_FOR_ERROR
-    BasicBlock *Normal = getBBVal(yyvsp[-3].ValIDVal);
+    BasicBlock *Normal = getBBVal((yyvsp[-3].ValIDVal));
     CHECK_FOR_ERROR
-    BasicBlock *Except = getBBVal(yyvsp[0].ValIDVal);
+    BasicBlock *Except = getBBVal((yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
 
     // Check the arguments
     ValueList Args;
-    if (yyvsp[-8].ValueRefList->empty()) {                                   // Has no arguments?
+    if ((yyvsp[-8].ValueRefList)->empty()) {                                   // Has no arguments?
       // Make sure no arguments is a good thing!
       if (Ty->getNumParams() != 0)
         GEN_ERROR("No arguments passed to a function that "
@@ -4841,7 +5032,7 @@
       // correctly!
       FunctionType::param_iterator I = Ty->param_begin();
       FunctionType::param_iterator E = Ty->param_end();
-      ValueRefList::iterator ArgI = yyvsp[-8].ValueRefList->begin(), ArgE = yyvsp[-8].ValueRefList->end();
+      ValueRefList::iterator ArgI = (yyvsp[-8].ValueRefList)->begin(), ArgE = (yyvsp[-8].ValueRefList)->end();
 
       for (; ArgI != ArgE && I != E; ++ArgI, ++I) {
         if (ArgI->Val->getType() != *I)
@@ -4860,353 +5051,353 @@
 
     // Create the InvokeInst
     InvokeInst *II = new InvokeInst(V, Normal, Except, Args);
-    II->setCallingConv(yyvsp[-12].UIntVal);
-    yyval.TermInstVal = II;
-    delete yyvsp[-8].ValueRefList;
+    II->setCallingConv((yyvsp[-12].UIntVal));
+    (yyval.TermInstVal) = II;
+    delete (yyvsp[-8].ValueRefList);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 248:
-#line 2470 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2468 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.TermInstVal = new UnwindInst();
+    (yyval.TermInstVal) = new UnwindInst();
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 249:
-#line 2474 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2472 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.TermInstVal = new UnreachableInst();
+    (yyval.TermInstVal) = new UnreachableInst();
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 250:
-#line 2481 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2479 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.JumpTable = yyvsp[-5].JumpTable;
-    Constant *V = cast<Constant>(getValNonImprovising(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal));
+    (yyval.JumpTable) = (yyvsp[-5].JumpTable);
+    Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal)));
     CHECK_FOR_ERROR
     if (V == 0)
       GEN_ERROR("May only switch on a constant pool value!");
 
-    BasicBlock* tmpBB = getBBVal(yyvsp[0].ValIDVal);
+    BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.JumpTable->push_back(std::make_pair(V, tmpBB));
-  }
+    (yyval.JumpTable)->push_back(std::make_pair(V, tmpBB));
+  ;}
     break;
 
   case 251:
-#line 2492 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2490 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.JumpTable = new std::vector<std::pair<Constant*, BasicBlock*> >();
-    Constant *V = cast<Constant>(getValNonImprovising(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal));
+    (yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >();
+    Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal)));
     CHECK_FOR_ERROR
 
     if (V == 0)
       GEN_ERROR("May only switch on a constant pool value!");
 
-    BasicBlock* tmpBB = getBBVal(yyvsp[0].ValIDVal);
+    BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.JumpTable->push_back(std::make_pair(V, tmpBB)); 
-  }
+    (yyval.JumpTable)->push_back(std::make_pair(V, tmpBB)); 
+  ;}
     break;
 
   case 252:
-#line 2505 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2503 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
   // Is this definition named?? if so, assign the name...
-  setValueName(yyvsp[0].InstVal, yyvsp[-1].StrVal);
+  setValueName((yyvsp[0].InstVal), (yyvsp[-1].StrVal));
   CHECK_FOR_ERROR
-  InsertValue(yyvsp[0].InstVal);
-  yyval.InstVal = yyvsp[0].InstVal;
+  InsertValue((yyvsp[0].InstVal));
+  (yyval.InstVal) = (yyvsp[0].InstVal);
   CHECK_FOR_ERROR
-}
+;}
     break;
 
   case 253:
-#line 2514 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2512 "/proj/llvm/llvm-1/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[-5].TypeVal))->getDescription());
+    (yyval.PHIList) = new std::list<std::pair<Value*, BasicBlock*> >();
+    Value* tmpVal = getVal(*(yyvsp[-5].TypeVal), (yyvsp[-3].ValIDVal));
     CHECK_FOR_ERROR
-    BasicBlock* tmpBB = getBBVal(yyvsp[-1].ValIDVal);
+    BasicBlock* tmpBB = getBBVal((yyvsp[-1].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.PHIList->push_back(std::make_pair(tmpVal, tmpBB));
-    delete yyvsp[-5].TypeVal;
-  }
+    (yyval.PHIList)->push_back(std::make_pair(tmpVal, tmpBB));
+    delete (yyvsp[-5].TypeVal);
+  ;}
     break;
 
   case 254:
-#line 2525 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2523 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.PHIList = yyvsp[-6].PHIList;
-    Value* tmpVal = getVal(yyvsp[-6].PHIList->front().first->getType(), yyvsp[-3].ValIDVal);
+    (yyval.PHIList) = (yyvsp[-6].PHIList);
+    Value* tmpVal = getVal((yyvsp[-6].PHIList)->front().first->getType(), (yyvsp[-3].ValIDVal));
     CHECK_FOR_ERROR
-    BasicBlock* tmpBB = getBBVal(yyvsp[-1].ValIDVal);
+    BasicBlock* tmpBB = getBBVal((yyvsp[-1].ValIDVal));
     CHECK_FOR_ERROR
-    yyvsp[-6].PHIList->push_back(std::make_pair(tmpVal, tmpBB));
-  }
+    (yyvsp[-6].PHIList)->push_back(std::make_pair(tmpVal, tmpBB));
+  ;}
     break;
 
   case 255:
-#line 2535 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2533 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {    
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
     // Used for call and invoke instructions
-    yyval.ValueRefList = new ValueRefList();
-    ValueRefListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getVal(yyvsp[-2].TypeVal->get(), yyvsp[-1].ValIDVal);
-    yyval.ValueRefList->push_back(E);
-  }
+    (yyval.ValueRefList) = new ValueRefList();
+    ValueRefListEntry E; E.Attrs = (yyvsp[0].ParamAttrs); E.Val = getVal((yyvsp[-2].TypeVal)->get(), (yyvsp[-1].ValIDVal));
+    (yyval.ValueRefList)->push_back(E);
+  ;}
     break;
 
   case 256:
-#line 2543 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2541 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription());
-    yyval.ValueRefList = yyvsp[-4].ValueRefList;
-    ValueRefListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getVal(yyvsp[-2].TypeVal->get(), yyvsp[-1].ValIDVal);
-    yyval.ValueRefList->push_back(E);
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-2].TypeVal))->getDescription());
+    (yyval.ValueRefList) = (yyvsp[-4].ValueRefList);
+    ValueRefListEntry E; E.Attrs = (yyvsp[0].ParamAttrs); E.Val = getVal((yyvsp[-2].TypeVal)->get(), (yyvsp[-1].ValIDVal));
+    (yyval.ValueRefList)->push_back(E);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 257:
-#line 2551 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.ValueRefList = new ValueRefList(); }
+#line 2549 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ValueRefList) = new ValueRefList(); ;}
     break;
 
   case 258:
-#line 2554 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-    { yyval.ValueList = new std::vector<Value*>(); }
+#line 2552 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+    { (yyval.ValueList) = new std::vector<Value*>(); ;}
     break;
 
   case 259:
-#line 2555 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2553 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.ValueList = yyvsp[-2].ValueList;
-    yyval.ValueList->push_back(yyvsp[0].ValueVal);
+    (yyval.ValueList) = (yyvsp[-2].ValueList);
+    (yyval.ValueList)->push_back((yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 260:
-#line 2562 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2560 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.BoolVal = true;
+    (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 261:
-#line 2566 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2564 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.BoolVal = false;
+    (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 262:
-#line 2571 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2569 "/proj/llvm/llvm-1/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<PackedType>((*yyvsp[-3].TypeVal).get()))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+    if (!(*(yyvsp[-3].TypeVal))->isInteger() && !(*(yyvsp[-3].TypeVal))->isFloatingPoint() && 
+        !isa<PackedType>((*(yyvsp[-3].TypeVal)).get()))
       GEN_ERROR(
         "Arithmetic operator requires integer, FP, or packed operands!");
-    if (isa<PackedType>((*yyvsp[-3].TypeVal).get()) && 
-        (yyvsp[-4].BinaryOpVal == Instruction::URem || 
-         yyvsp[-4].BinaryOpVal == Instruction::SRem ||
-         yyvsp[-4].BinaryOpVal == Instruction::FRem))
+    if (isa<PackedType>((*(yyvsp[-3].TypeVal)).get()) && 
+        ((yyvsp[-4].BinaryOpVal) == Instruction::URem || 
+         (yyvsp[-4].BinaryOpVal) == Instruction::SRem ||
+         (yyvsp[-4].BinaryOpVal) == Instruction::FRem))
       GEN_ERROR("U/S/FRem not supported on packed types!");
-    Value* val1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal); 
+    Value* val1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal)); 
     CHECK_FOR_ERROR
-    Value* val2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal);
+    Value* val2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = BinaryOperator::create(yyvsp[-4].BinaryOpVal, val1, val2);
-    if (yyval.InstVal == 0)
+    (yyval.InstVal) = BinaryOperator::create((yyvsp[-4].BinaryOpVal), val1, val2);
+    if ((yyval.InstVal) == 0)
       GEN_ERROR("binary operator returned null!");
-    delete yyvsp[-3].TypeVal;
-  }
+    delete (yyvsp[-3].TypeVal);
+  ;}
     break;
 
   case 263:
-#line 2592 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2590 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
-    if (!(*yyvsp[-3].TypeVal)->isInteger()) {
-      if (!isa<PackedType>(yyvsp[-3].TypeVal->get()) ||
-          !cast<PackedType>(yyvsp[-3].TypeVal->get())->getElementType()->isInteger())
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+    if (!(*(yyvsp[-3].TypeVal))->isInteger()) {
+      if (!isa<PackedType>((yyvsp[-3].TypeVal)->get()) ||
+          !cast<PackedType>((yyvsp[-3].TypeVal)->get())->getElementType()->isInteger())
         GEN_ERROR("Logical operator requires integral operands!");
     }
-    Value* tmpVal1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal);
+    Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal));
     CHECK_FOR_ERROR
-    Value* tmpVal2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal);
+    Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = BinaryOperator::create(yyvsp[-4].BinaryOpVal, tmpVal1, tmpVal2);
-    if (yyval.InstVal == 0)
+    (yyval.InstVal) = BinaryOperator::create((yyvsp[-4].BinaryOpVal), tmpVal1, tmpVal2);
+    if ((yyval.InstVal) == 0)
       GEN_ERROR("binary operator returned null!");
-    delete yyvsp[-3].TypeVal;
-  }
+    delete (yyvsp[-3].TypeVal);
+  ;}
     break;
 
   case 264:
-#line 2609 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2607 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
-    if (isa<PackedType>((*yyvsp[-3].TypeVal).get()))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+    if (isa<PackedType>((*(yyvsp[-3].TypeVal)).get()))
       GEN_ERROR("Packed types not supported by icmp instruction");
-    Value* tmpVal1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal);
+    Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal));
     CHECK_FOR_ERROR
-    Value* tmpVal2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal);
+    Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].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[-5].OtherOpVal), (yyvsp[-4].IPredicate), tmpVal1, tmpVal2);
+    if ((yyval.InstVal) == 0)
       GEN_ERROR("icmp operator returned null!");
-  }
+  ;}
     break;
 
   case 265:
-#line 2622 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2620 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription());
-    if (isa<PackedType>((*yyvsp[-3].TypeVal).get()))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-3].TypeVal))->getDescription());
+    if (isa<PackedType>((*(yyvsp[-3].TypeVal)).get()))
       GEN_ERROR("Packed types not supported by fcmp instruction");
-    Value* tmpVal1 = getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal);
+    Value* tmpVal1 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[-2].ValIDVal));
     CHECK_FOR_ERROR
-    Value* tmpVal2 = getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal);
+    Value* tmpVal2 = getVal(*(yyvsp[-3].TypeVal), (yyvsp[0].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[-5].OtherOpVal), (yyvsp[-4].FPredicate), tmpVal1, tmpVal2);
+    if ((yyval.InstVal) == 0)
       GEN_ERROR("fcmp operator returned null!");
-  }
+  ;}
     break;
 
   case 266:
-#line 2635 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2633 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    if (yyvsp[0].ValueVal->getType() != Type::Int8Ty)
+    if ((yyvsp[0].ValueVal)->getType() != Type::Int8Ty)
       GEN_ERROR("Shift amount must be i8 type!");
-    if (!yyvsp[-2].ValueVal->getType()->isInteger())
+    if (!(yyvsp[-2].ValueVal)->getType()->isInteger())
       GEN_ERROR("Shift constant expression requires integer operand!");
     CHECK_FOR_ERROR;
-    yyval.InstVal = new ShiftInst(yyvsp[-3].OtherOpVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
+    (yyval.InstVal) = new ShiftInst((yyvsp[-3].OtherOpVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 267:
-#line 2644 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2642 "/proj/llvm/llvm-1/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[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 cast opcode for cast from '" +
                 Val->getType()->getDescription() + "' to '" +
                 DestTy->getDescription() + "'!"); 
-    yyval.InstVal = CastInst::create(yyvsp[-3].CastOpVal, Val, DestTy);
-    delete yyvsp[0].TypeVal;
-  }
+    (yyval.InstVal) = CastInst::create((yyvsp[-3].CastOpVal), Val, DestTy);
+    delete (yyvsp[0].TypeVal);
+  ;}
     break;
 
   case 268:
-#line 2656 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2654 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    if (yyvsp[-4].ValueVal->getType() != Type::Int1Ty)
+    if ((yyvsp[-4].ValueVal)->getType() != Type::Int1Ty)
       GEN_ERROR("select condition must be boolean!");
-    if (yyvsp[-2].ValueVal->getType() != yyvsp[0].ValueVal->getType())
+    if ((yyvsp[-2].ValueVal)->getType() != (yyvsp[0].ValueVal)->getType())
       GEN_ERROR("select value types should match!");
-    yyval.InstVal = new SelectInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
+    (yyval.InstVal) = new SelectInst((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 269:
-#line 2664 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2662 "/proj/llvm/llvm-1/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[0].TypeVal))->getDescription());
+    (yyval.InstVal) = new VAArgInst((yyvsp[-2].ValueVal), *(yyvsp[0].TypeVal));
+    delete (yyvsp[0].TypeVal);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 270:
-#line 2671 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2669 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!ExtractElementInst::isValidOperands(yyvsp[-2].ValueVal, yyvsp[0].ValueVal))
+    if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
       GEN_ERROR("Invalid extractelement operands!");
-    yyval.InstVal = new ExtractElementInst(yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
+    (yyval.InstVal) = new ExtractElementInst((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 271:
-#line 2677 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2675 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!InsertElementInst::isValidOperands(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal))
+    if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
       GEN_ERROR("Invalid insertelement operands!");
-    yyval.InstVal = new InsertElementInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
+    (yyval.InstVal) = new InsertElementInst((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 272:
-#line 2683 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2681 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!ShuffleVectorInst::isValidOperands(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal))
+    if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
       GEN_ERROR("Invalid shufflevector operands!");
-    yyval.InstVal = new ShuffleVectorInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
+    (yyval.InstVal) = new ShuffleVectorInst((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 273:
-#line 2689 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2687 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    const Type *Ty = yyvsp[0].PHIList->front().first->getType();
+    const Type *Ty = (yyvsp[0].PHIList)->front().first->getType();
     if (!Ty->isFirstClassType())
       GEN_ERROR("PHI node operands must be of first class type!");
-    yyval.InstVal = new PHINode(Ty);
-    ((PHINode*)yyval.InstVal)->reserveOperandSpace(yyvsp[0].PHIList->size());
-    while (yyvsp[0].PHIList->begin() != yyvsp[0].PHIList->end()) {
-      if (yyvsp[0].PHIList->front().first->getType() != Ty) 
+    (yyval.InstVal) = new PHINode(Ty);
+    ((PHINode*)(yyval.InstVal))->reserveOperandSpace((yyvsp[0].PHIList)->size());
+    while ((yyvsp[0].PHIList)->begin() != (yyvsp[0].PHIList)->end()) {
+      if ((yyvsp[0].PHIList)->front().first->getType() != Ty) 
         GEN_ERROR("All elements of a PHI node must be of the same type!");
-      cast<PHINode>(yyval.InstVal)->addIncoming(yyvsp[0].PHIList->front().first, yyvsp[0].PHIList->front().second);
-      yyvsp[0].PHIList->pop_front();
+      cast<PHINode>((yyval.InstVal))->addIncoming((yyvsp[0].PHIList)->front().first, (yyvsp[0].PHIList)->front().second);
+      (yyvsp[0].PHIList)->pop_front();
     }
-    delete yyvsp[0].PHIList;  // Free the list...
+    delete (yyvsp[0].PHIList);  // Free the list...
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 274:
-#line 2705 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2703 "/proj/llvm/llvm-1/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[-5].TypeVal)->get())) ||
         !(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) {
       // Pull out the types of all of the arguments...
       std::vector<const Type*> ParamTypes;
       FunctionType::ParamAttrsList ParamAttrs;
-      ParamAttrs.push_back(yyvsp[0].ParamAttrs);
-      for (ValueRefList::iterator I = yyvsp[-2].ValueRefList->begin(), E = yyvsp[-2].ValueRefList->end(); I != E; ++I) {
+      ParamAttrs.push_back((yyvsp[0].ParamAttrs));
+      for (ValueRefList::iterator I = (yyvsp[-2].ValueRefList)->begin(), E = (yyvsp[-2].ValueRefList)->end(); I != E; ++I) {
         const Type *Ty = I->Val->getType();
         if (Ty == Type::VoidTy)
           GEN_ERROR("Short call syntax cannot be used with varargs");
@@ -5214,16 +5405,16 @@
         ParamAttrs.push_back(I->Attrs);
       }
 
-      Ty = FunctionType::get(yyvsp[-5].TypeVal->get(), ParamTypes, false, ParamAttrs);
+      Ty = FunctionType::get((yyvsp[-5].TypeVal)->get(), ParamTypes, false, ParamAttrs);
       PFTy = PointerType::get(Ty);
     }
 
-    Value *V = getVal(PFTy, yyvsp[-4].ValIDVal);   // Get the function we're calling...
+    Value *V = getVal(PFTy, (yyvsp[-4].ValIDVal));   // Get the function we're calling...
     CHECK_FOR_ERROR
 
     // Check the arguments 
     ValueList Args;
-    if (yyvsp[-2].ValueRefList->empty()) {                                   // Has no arguments?
+    if ((yyvsp[-2].ValueRefList)->empty()) {                                   // Has no arguments?
       // Make sure no arguments is a good thing!
       if (Ty->getNumParams() != 0)
         GEN_ERROR("No arguments passed to a function that "
@@ -5234,7 +5425,7 @@
       //
       FunctionType::param_iterator I = Ty->param_begin();
       FunctionType::param_iterator E = Ty->param_end();
-      ValueRefList::iterator ArgI = yyvsp[-2].ValueRefList->begin(), ArgE = yyvsp[-2].ValueRefList->end();
+      ValueRefList::iterator ArgI = (yyvsp[-2].ValueRefList)->begin(), ArgE = (yyvsp[-2].ValueRefList)->end();
 
       for (; ArgI != ArgE && I != E; ++ArgI, ++I) {
         if (ArgI->Val->getType() != *I)
@@ -5251,173 +5442,166 @@
     }
     // Create the call node
     CallInst *CI = new CallInst(V, Args);
-    CI->setTailCall(yyvsp[-7].BoolVal);
-    CI->setCallingConv(yyvsp[-6].UIntVal);
-    yyval.InstVal = CI;
-    delete yyvsp[-2].ValueRefList;
+    CI->setTailCall((yyvsp[-7].BoolVal));
+    CI->setCallingConv((yyvsp[-6].UIntVal));
+    (yyval.InstVal) = CI;
+    delete (yyvsp[-2].ValueRefList);
+    delete (yyvsp[-5].TypeVal);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 275:
-#line 2767 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2766 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.InstVal = yyvsp[0].InstVal;
+    (yyval.InstVal) = (yyvsp[0].InstVal);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 276:
-#line 2772 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2771 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.BoolVal = true;
+    (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 277:
-#line 2776 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2775 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    yyval.BoolVal = false;
+    (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 278:
-#line 2783 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2782 "/proj/llvm/llvm-1/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[-1].TypeVal))->getDescription());
+    (yyval.InstVal) = new MallocInst(*(yyvsp[-1].TypeVal), 0, (yyvsp[0].UIntVal));
+    delete (yyvsp[-1].TypeVal);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 279:
-#line 2790 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2789 "/proj/llvm/llvm-1/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[-4].TypeVal))->getDescription());
+    Value* tmpVal = getVal((yyvsp[-2].PrimType), (yyvsp[-1].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = new MallocInst(*yyvsp[-4].TypeVal, tmpVal, yyvsp[0].UIntVal);
-    delete yyvsp[-4].TypeVal;
-  }
+    (yyval.InstVal) = new MallocInst(*(yyvsp[-4].TypeVal), tmpVal, (yyvsp[0].UIntVal));
+    delete (yyvsp[-4].TypeVal);
+  ;}
     break;
 
   case 280:
-#line 2798 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2797 "/proj/llvm/llvm-1/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[-1].TypeVal))->getDescription());
+    (yyval.InstVal) = new AllocaInst(*(yyvsp[-1].TypeVal), 0, (yyvsp[0].UIntVal));
+    delete (yyvsp[-1].TypeVal);
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 281:
-#line 2805 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2804 "/proj/llvm/llvm-1/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[-4].TypeVal))->getDescription());
+    Value* tmpVal = getVal((yyvsp[-2].PrimType), (yyvsp[-1].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = new AllocaInst(*yyvsp[-4].TypeVal, tmpVal, yyvsp[0].UIntVal);
-    delete yyvsp[-4].TypeVal;
-  }
+    (yyval.InstVal) = new AllocaInst(*(yyvsp[-4].TypeVal), tmpVal, (yyvsp[0].UIntVal));
+    delete (yyvsp[-4].TypeVal);
+  ;}
     break;
 
   case 282:
-#line 2813 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2812 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
-    if (!isa<PointerType>(yyvsp[0].ValueVal->getType()))
+    if (!isa<PointerType>((yyvsp[0].ValueVal)->getType()))
       GEN_ERROR("Trying to free nonpointer type " + 
-                     yyvsp[0].ValueVal->getType()->getDescription() + "!");
-    yyval.InstVal = new FreeInst(yyvsp[0].ValueVal);
+                     (yyvsp[0].ValueVal)->getType()->getDescription() + "!");
+    (yyval.InstVal) = new FreeInst((yyvsp[0].ValueVal));
     CHECK_FOR_ERROR
-  }
+  ;}
     break;
 
   case 283:
-#line 2821 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2820 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
-    if (!isa<PointerType>(yyvsp[-1].TypeVal->get()))
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    if (!isa<PointerType>((yyvsp[-1].TypeVal)->get()))
       GEN_ERROR("Can't load from nonpointer type: " +
-                     (*yyvsp[-1].TypeVal)->getDescription());
-    if (!cast<PointerType>(yyvsp[-1].TypeVal->get())->getElementType()->isFirstClassType())
+                     (*(yyvsp[-1].TypeVal))->getDescription());
+    if (!cast<PointerType>((yyvsp[-1].TypeVal)->get())->getElementType()->isFirstClassType())
       GEN_ERROR("Can't load from pointer of non-first-class type: " +
-                     (*yyvsp[-1].TypeVal)->getDescription());
-    Value* tmpVal = getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal);
+                     (*(yyvsp[-1].TypeVal))->getDescription());
+    Value* tmpVal = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = new LoadInst(tmpVal, "", yyvsp[-3].BoolVal);
-    delete yyvsp[-1].TypeVal;
-  }
+    (yyval.InstVal) = new LoadInst(tmpVal, "", (yyvsp[-3].BoolVal));
+    delete (yyvsp[-1].TypeVal);
+  ;}
     break;
 
   case 284:
-#line 2835 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2834 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
-      GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription());
-    const PointerType *PT = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
+      GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[-1].TypeVal))->getDescription());
+    const PointerType *PT = dyn_cast<PointerType>((yyvsp[-1].TypeVal)->get());
     if (!PT)
       GEN_ERROR("Can't store to a nonpointer type: " +
-                     (*yyvsp[-1].TypeVal)->getDescription());
+                     (*(yyvsp[-1].TypeVal))->getDescription());
     const Type *ElTy = PT->getElementType();
-    if (ElTy != yyvsp[-3].ValueVal->getType())
-      GEN_ERROR("Can't store '" + yyvsp[-3].ValueVal->getType()->getDescription() +
+    if (ElTy != (yyvsp[-3].ValueVal)->getType())
+      GEN_ERROR("Can't store '" + (yyvsp[-3].ValueVal)->getType()->getDescription() +
                      "' into space of type '" + ElTy->getDescription() + "'!");
 
-    Value* tmpVal = getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal);
+    Value* tmpVal = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = new StoreInst(yyvsp[-3].ValueVal, tmpVal, yyvsp[-5].BoolVal);
-    delete yyvsp[-1].TypeVal;
-  }
+    (yyval.InstVal) = new StoreInst((yyvsp[-3].ValueVal), tmpVal, (yyvsp[-5].BoolVal));
+    delete (yyvsp[-1].TypeVal);
+  ;}
     break;
 
   case 285:
-#line 2852 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2851 "/proj/llvm/llvm-1/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].TypeVal))->getDescription());
+    if (!isa<PointerType>((yyvsp[-2].TypeVal)->get()))
       GEN_ERROR("getelementptr insn requires pointer operand!");
 
-    if (!GetElementPtrInst::getIndexedType(*yyvsp[-2].TypeVal, *yyvsp[0].ValueList, true))
+    if (!GetElementPtrInst::getIndexedType(*(yyvsp[-2].TypeVal), *(yyvsp[0].ValueList), true))
       GEN_ERROR("Invalid getelementptr indices for type '" +
-                     (*yyvsp[-2].TypeVal)->getDescription()+ "'!");
-    Value* tmpVal = getVal(*yyvsp[-2].TypeVal, yyvsp[-1].ValIDVal);
+                     (*(yyvsp[-2].TypeVal))->getDescription()+ "'!");
+    Value* tmpVal = getVal(*(yyvsp[-2].TypeVal), (yyvsp[-1].ValIDVal));
     CHECK_FOR_ERROR
-    yyval.InstVal = new GetElementPtrInst(tmpVal, *yyvsp[0].ValueList);
-    delete yyvsp[-2].TypeVal; 
-    delete yyvsp[0].ValueList;
-  }
+    (yyval.InstVal) = new GetElementPtrInst(tmpVal, *(yyvsp[0].ValueList));
+    delete (yyvsp[-2].TypeVal); 
+    delete (yyvsp[0].ValueList);
+  ;}
     break;
 
 
+      default: break;
     }
 
-/* Line 1016 of /usr/local/share/bison/yacc.c.  */
-#line 5406 "llvmAsmParser.tab.c"
+/* Line 1126 of yacc.c.  */
+#line 5599 "llvmAsmParser.tab.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
 
 
-#if YYDEBUG
-  if (yydebug)
-    {
-      short *yyssp1 = yyss - 1;
-      YYFPRINTF (stderr, "state stack now");
-      while (yyssp1 != yyssp)
-	YYFPRINTF (stderr, " %d", *++yyssp1);
-      YYFPRINTF (stderr, "\n");
-    }
-#endif
+  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
@@ -5450,90 +5634,153 @@
 
       if (YYPACT_NINF < yyn && yyn < YYLAST)
 	{
-	  YYSIZE_T yysize = 0;
 	  int yytype = YYTRANSLATE (yychar);
-	  char *yymsg;
-	  int yyx, yycount;
+	  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+	  YYSIZE_T yysize = yysize0;
+	  YYSIZE_T yysize1;
+	  int yysize_overflow = 0;
+	  char *yymsg = 0;
+#	  define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+	  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+	  int yyx;
 
-	  yycount = 0;
+#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.  */
-	  for (yyx = yyn < 0 ? -yyn : 0;
-	       yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
-	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	      yysize += yystrlen (yytname[yyx]) + 15, yycount++;
-	  yysize += yystrlen ("parse error, unexpected ") + 1;
-	  yysize += yystrlen (yytname[yytype]);
-	  yymsg = (char *) YYSTACK_ALLOC (yysize);
-	  if (yymsg != 0)
-	    {
-	      char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
-	      yyp = yystpcpy (yyp, yytname[yytype]);
+	  int yyxbegin = yyn < 0 ? -yyn : 0;
 
-	      if (yycount < 5)
+	  /* Stay within bounds of both yycheck and yytname.  */
+	  int yychecklim = YYLAST - yyn;
+	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+	  int yycount = 1;
+
+	  yyarg[0] = yytname[yytype];
+	  yyfmt = yystpcpy (yyformat, yyunexpected);
+
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+		  {
+		    yycount = 1;
+		    yysize = yysize0;
+		    yyformat[sizeof yyunexpected - 1] = '\0';
+		    break;
+		  }
+		yyarg[yycount++] = yytname[yyx];
+		yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+		yysize_overflow |= yysize1 < yysize;
+		yysize = yysize1;
+		yyfmt = yystpcpy (yyfmt, yyprefix);
+		yyprefix = yyor;
+	      }
+
+	  yyf = YY_(yyformat);
+	  yysize1 = yysize + yystrlen (yyf);
+	  yysize_overflow |= yysize1 < yysize;
+	  yysize = yysize1;
+
+	  if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+	    yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg)
+	    {
+	      /* Avoid sprintf, as that infringes on the user's name space.
+		 Don't have undefined behavior even if the translation
+		 produced a string with the wrong number of "%s"s.  */
+	      char *yyp = yymsg;
+	      int yyi = 0;
+	      while ((*yyp = *yyf))
 		{
-		  yycount = 0;
-		  for (yyx = yyn < 0 ? -yyn : 0;
-		       yyx < (int) (sizeof (yytname) / sizeof (char *));
-		       yyx++)
-		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-		      {
-			const char *yyq = ! yycount ? ", expecting " : " or ";
-			yyp = yystpcpy (yyp, yyq);
-			yyp = yystpcpy (yyp, yytname[yyx]);
-			yycount++;
-		      }
+		  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+		    {
+		      yyp += yytnamerr (yyp, yyarg[yyi++]);
+		      yyf += 2;
+		    }
+		  else
+		    {
+		      yyp++;
+		      yyf++;
+		    }
 		}
 	      yyerror (yymsg);
 	      YYSTACK_FREE (yymsg);
 	    }
 	  else
-	    yyerror ("parse error; also virtual memory exhausted");
+	    {
+	      yyerror (YY_("syntax error"));
+	      goto yyexhaustedlab;
+	    }
 	}
       else
 #endif /* YYERROR_VERBOSE */
-	yyerror ("parse error");
+	yyerror (YY_("syntax error"));
     }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+	 error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+        }
+      else
+	{
+	  yydestruct ("Error: discarding", yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
   goto yyerrlab1;
 
 
-/*----------------------------------------------------.
-| yyerrlab1 -- error raised explicitly by an action.  |
-`----------------------------------------------------*/
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (0)
+     goto yyerrorlab;
+
+yyvsp -= yylen;
+  yyssp -= yylen;
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
 yyerrlab1:
-  if (yyerrstatus == 3)
-    {
-      /* If just tried and failed to reuse lookahead token after an
-	 error, discard it.  */
-
-      /* Return failure if at end of input.  */
-      if (yychar == YYEOF)
-        {
-	  /* Pop the error token.  */
-          YYPOPSTACK;
-	  /* Pop the rest of the stack.  */
-	  while (yyssp > yyss)
-	    {
-	      YYDPRINTF ((stderr, "Error: popping "));
-	      YYDSYMPRINT ((stderr,
-			    yystos[*yyssp],
-			    *yyvsp));
-	      YYDPRINTF ((stderr, "\n"));
-	      yydestruct (yystos[*yyssp], *yyvsp);
-	      YYPOPSTACK;
-	    }
-	  YYABORT;
-        }
-
-      YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
-		  yychar, yytname[yychar1]));
-      yydestruct (yychar1, yylval);
-      yychar = YYEMPTY;
-    }
-
-  /* Else will try to reuse lookahead token after shifting the error
-     token.  */
-
   yyerrstatus = 3;	/* Each real token shifted decrements this.  */
 
   for (;;)
@@ -5554,36 +5801,22 @@
       if (yyssp == yyss)
 	YYABORT;
 
-      YYDPRINTF ((stderr, "Error: popping "));
-      YYDSYMPRINT ((stderr,
-		    yystos[*yyssp], *yyvsp));
-      YYDPRINTF ((stderr, "\n"));
 
-      yydestruct (yystos[yystate], *yyvsp);
-      yyvsp--;
-      yystate = *--yyssp;
-
-
-#if YYDEBUG
-      if (yydebug)
-	{
-	  short *yyssp1 = yyss - 1;
-	  YYFPRINTF (stderr, "Error: state stack now");
-	  while (yyssp1 != yyssp)
-	    YYFPRINTF (stderr, " %d", *++yyssp1);
-	  YYFPRINTF (stderr, "\n");
-	}
-#endif
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
     }
 
   if (yyn == YYFINAL)
     YYACCEPT;
 
-  YYDPRINTF ((stderr, "Shifting error token, "));
-
   *++yyvsp = yylval;
 
 
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
   yystate = yyn;
   goto yynewstate;
 
@@ -5603,16 +5836,25 @@
   goto yyreturn;
 
 #ifndef yyoverflow
-/*----------------------------------------------.
-| yyoverflowlab -- parser overflow comes here.  |
-`----------------------------------------------*/
-yyoverflowlab:
-  yyerror ("parser stack overflow");
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
   yyresult = 2;
   /* Fall through.  */
 #endif
 
 yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+		  yystos[*yyssp], yyvsp);
+      YYPOPSTACK;
+    }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
@@ -5621,7 +5863,7 @@
 }
 
 
-#line 2869 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2868 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
 
 
 // common code from the two 'RunVMAsmParser' functions
diff --git a/lib/AsmParser/llvmAsmParser.h.cvs b/lib/AsmParser/llvmAsmParser.h.cvs
index 12c45b3..2cde455 100644
--- a/lib/AsmParser/llvmAsmParser.h.cvs
+++ b/lib/AsmParser/llvmAsmParser.h.cvs
@@ -1,7 +1,7 @@
-/* A Bison parser, made from /usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y, by GNU bison 1.75.  */
+/* A Bison parser, made by GNU Bison 2.1.  */
 
 /* Skeleton parser for Yacc-like parsing with Bison,
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -15,17 +15,14 @@
 
    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.  */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 /* As a special exception, when this file is copied by Bison into a
    Bison output file, you may use that output file without restriction.
    This special exception was added by the Free Software Foundation
    in version 1.24 of Bison.  */
 
-#ifndef BISON_LLVMASMPARSER_TAB_H
-# define BISON_LLVMASMPARSER_TAB_H
-
 /* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
@@ -34,8 +31,8 @@
    enum yytokentype {
      ESINT64VAL = 258,
      EUINT64VAL = 259,
-     SINTVAL = 260,
-     UINTVAL = 261,
+     LOCALVAL_ID = 260,
+     GLOBALVAL_ID = 261,
      FPVAL = 262,
      VOID = 263,
      INTTYPE = 264,
@@ -43,131 +40,130 @@
      DOUBLE = 266,
      LABEL = 267,
      TYPE = 268,
-     VAR_ID = 269,
-     LABELSTR = 270,
-     STRINGCONSTANT = 271,
-     IMPLEMENTATION = 272,
-     ZEROINITIALIZER = 273,
-     TRUETOK = 274,
-     FALSETOK = 275,
-     BEGINTOK = 276,
-     ENDTOK = 277,
-     DECLARE = 278,
-     DEFINE = 279,
-     GLOBAL = 280,
-     CONSTANT = 281,
-     SECTION = 282,
-     VOLATILE = 283,
-     TO = 284,
-     DOTDOTDOT = 285,
-     NULL_TOK = 286,
-     UNDEF = 287,
-     INTERNAL = 288,
-     LINKONCE = 289,
-     WEAK = 290,
-     APPENDING = 291,
-     DLLIMPORT = 292,
-     DLLEXPORT = 293,
-     EXTERN_WEAK = 294,
-     OPAQUE = 295,
-     EXTERNAL = 296,
-     TARGET = 297,
-     TRIPLE = 298,
-     ENDIAN = 299,
-     POINTERSIZE = 300,
-     LITTLE = 301,
-     BIG = 302,
-     ALIGN = 303,
-     DEPLIBS = 304,
-     CALL = 305,
-     TAIL = 306,
-     ASM_TOK = 307,
-     MODULE = 308,
-     SIDEEFFECT = 309,
-     CC_TOK = 310,
-     CCC_TOK = 311,
-     CSRETCC_TOK = 312,
-     FASTCC_TOK = 313,
-     COLDCC_TOK = 314,
-     X86_STDCALLCC_TOK = 315,
-     X86_FASTCALLCC_TOK = 316,
-     DATALAYOUT = 317,
-     RET = 318,
-     BR = 319,
-     SWITCH = 320,
-     INVOKE = 321,
-     UNWIND = 322,
-     UNREACHABLE = 323,
-     ADD = 324,
-     SUB = 325,
-     MUL = 326,
-     UDIV = 327,
-     SDIV = 328,
-     FDIV = 329,
-     UREM = 330,
-     SREM = 331,
-     FREM = 332,
-     AND = 333,
-     OR = 334,
-     XOR = 335,
-     ICMP = 336,
-     FCMP = 337,
-     EQ = 338,
-     NE = 339,
-     SLT = 340,
-     SGT = 341,
-     SLE = 342,
-     SGE = 343,
-     ULT = 344,
-     UGT = 345,
-     ULE = 346,
-     UGE = 347,
-     OEQ = 348,
-     ONE = 349,
-     OLT = 350,
-     OGT = 351,
-     OLE = 352,
-     OGE = 353,
-     ORD = 354,
-     UNO = 355,
-     UEQ = 356,
-     UNE = 357,
-     MALLOC = 358,
-     ALLOCA = 359,
-     FREE = 360,
-     LOAD = 361,
-     STORE = 362,
-     GETELEMENTPTR = 363,
-     TRUNC = 364,
-     ZEXT = 365,
-     SEXT = 366,
-     FPTRUNC = 367,
-     FPEXT = 368,
-     BITCAST = 369,
-     UITOFP = 370,
-     SITOFP = 371,
-     FPTOUI = 372,
-     FPTOSI = 373,
-     INTTOPTR = 374,
-     PTRTOINT = 375,
-     PHI_TOK = 376,
-     SELECT = 377,
-     SHL = 378,
-     LSHR = 379,
-     ASHR = 380,
-     VAARG = 381,
-     EXTRACTELEMENT = 382,
-     INSERTELEMENT = 383,
-     SHUFFLEVECTOR = 384,
-     NORETURN = 385,
-     DEFAULT = 386,
-     HIDDEN = 387
+     LOCALVAR = 269,
+     GLOBALVAR = 270,
+     LABELSTR = 271,
+     STRINGCONSTANT = 272,
+     ATSTRINGCONSTANT = 273,
+     IMPLEMENTATION = 274,
+     ZEROINITIALIZER = 275,
+     TRUETOK = 276,
+     FALSETOK = 277,
+     BEGINTOK = 278,
+     ENDTOK = 279,
+     DECLARE = 280,
+     DEFINE = 281,
+     GLOBAL = 282,
+     CONSTANT = 283,
+     SECTION = 284,
+     VOLATILE = 285,
+     TO = 286,
+     DOTDOTDOT = 287,
+     NULL_TOK = 288,
+     UNDEF = 289,
+     INTERNAL = 290,
+     LINKONCE = 291,
+     WEAK = 292,
+     APPENDING = 293,
+     DLLIMPORT = 294,
+     DLLEXPORT = 295,
+     EXTERN_WEAK = 296,
+     OPAQUE = 297,
+     EXTERNAL = 298,
+     TARGET = 299,
+     TRIPLE = 300,
+     ALIGN = 301,
+     DEPLIBS = 302,
+     CALL = 303,
+     TAIL = 304,
+     ASM_TOK = 305,
+     MODULE = 306,
+     SIDEEFFECT = 307,
+     CC_TOK = 308,
+     CCC_TOK = 309,
+     CSRETCC_TOK = 310,
+     FASTCC_TOK = 311,
+     COLDCC_TOK = 312,
+     X86_STDCALLCC_TOK = 313,
+     X86_FASTCALLCC_TOK = 314,
+     DATALAYOUT = 315,
+     RET = 316,
+     BR = 317,
+     SWITCH = 318,
+     INVOKE = 319,
+     UNWIND = 320,
+     UNREACHABLE = 321,
+     ADD = 322,
+     SUB = 323,
+     MUL = 324,
+     UDIV = 325,
+     SDIV = 326,
+     FDIV = 327,
+     UREM = 328,
+     SREM = 329,
+     FREM = 330,
+     AND = 331,
+     OR = 332,
+     XOR = 333,
+     ICMP = 334,
+     FCMP = 335,
+     EQ = 336,
+     NE = 337,
+     SLT = 338,
+     SGT = 339,
+     SLE = 340,
+     SGE = 341,
+     ULT = 342,
+     UGT = 343,
+     ULE = 344,
+     UGE = 345,
+     OEQ = 346,
+     ONE = 347,
+     OLT = 348,
+     OGT = 349,
+     OLE = 350,
+     OGE = 351,
+     ORD = 352,
+     UNO = 353,
+     UEQ = 354,
+     UNE = 355,
+     MALLOC = 356,
+     ALLOCA = 357,
+     FREE = 358,
+     LOAD = 359,
+     STORE = 360,
+     GETELEMENTPTR = 361,
+     TRUNC = 362,
+     ZEXT = 363,
+     SEXT = 364,
+     FPTRUNC = 365,
+     FPEXT = 366,
+     BITCAST = 367,
+     UITOFP = 368,
+     SITOFP = 369,
+     FPTOUI = 370,
+     FPTOSI = 371,
+     INTTOPTR = 372,
+     PTRTOINT = 373,
+     PHI_TOK = 374,
+     SELECT = 375,
+     SHL = 376,
+     LSHR = 377,
+     ASHR = 378,
+     VAARG = 379,
+     EXTRACTELEMENT = 380,
+     INSERTELEMENT = 381,
+     SHUFFLEVECTOR = 382,
+     NORETURN = 383,
+     DEFAULT = 384,
+     HIDDEN = 385
    };
 #endif
+/* Tokens.  */
 #define ESINT64VAL 258
 #define EUINT64VAL 259
-#define SINTVAL 260
-#define UINTVAL 261
+#define LOCALVAL_ID 260
+#define GLOBALVAL_ID 261
 #define FPVAL 262
 #define VOID 263
 #define INTTYPE 264
@@ -175,132 +171,130 @@
 #define DOUBLE 266
 #define LABEL 267
 #define TYPE 268
-#define VAR_ID 269
-#define LABELSTR 270
-#define STRINGCONSTANT 271
-#define IMPLEMENTATION 272
-#define ZEROINITIALIZER 273
-#define TRUETOK 274
-#define FALSETOK 275
-#define BEGINTOK 276
-#define ENDTOK 277
-#define DECLARE 278
-#define DEFINE 279
-#define GLOBAL 280
-#define CONSTANT 281
-#define SECTION 282
-#define VOLATILE 283
-#define TO 284
-#define DOTDOTDOT 285
-#define NULL_TOK 286
-#define UNDEF 287
-#define INTERNAL 288
-#define LINKONCE 289
-#define WEAK 290
-#define APPENDING 291
-#define DLLIMPORT 292
-#define DLLEXPORT 293
-#define EXTERN_WEAK 294
-#define OPAQUE 295
-#define EXTERNAL 296
-#define TARGET 297
-#define TRIPLE 298
-#define ENDIAN 299
-#define POINTERSIZE 300
-#define LITTLE 301
-#define BIG 302
-#define ALIGN 303
-#define DEPLIBS 304
-#define CALL 305
-#define TAIL 306
-#define ASM_TOK 307
-#define MODULE 308
-#define SIDEEFFECT 309
-#define CC_TOK 310
-#define CCC_TOK 311
-#define CSRETCC_TOK 312
-#define FASTCC_TOK 313
-#define COLDCC_TOK 314
-#define X86_STDCALLCC_TOK 315
-#define X86_FASTCALLCC_TOK 316
-#define DATALAYOUT 317
-#define RET 318
-#define BR 319
-#define SWITCH 320
-#define INVOKE 321
-#define UNWIND 322
-#define UNREACHABLE 323
-#define ADD 324
-#define SUB 325
-#define MUL 326
-#define UDIV 327
-#define SDIV 328
-#define FDIV 329
-#define UREM 330
-#define SREM 331
-#define FREM 332
-#define AND 333
-#define OR 334
-#define XOR 335
-#define ICMP 336
-#define FCMP 337
-#define EQ 338
-#define NE 339
-#define SLT 340
-#define SGT 341
-#define SLE 342
-#define SGE 343
-#define ULT 344
-#define UGT 345
-#define ULE 346
-#define UGE 347
-#define OEQ 348
-#define ONE 349
-#define OLT 350
-#define OGT 351
-#define OLE 352
-#define OGE 353
-#define ORD 354
-#define UNO 355
-#define UEQ 356
-#define UNE 357
-#define MALLOC 358
-#define ALLOCA 359
-#define FREE 360
-#define LOAD 361
-#define STORE 362
-#define GETELEMENTPTR 363
-#define TRUNC 364
-#define ZEXT 365
-#define SEXT 366
-#define FPTRUNC 367
-#define FPEXT 368
-#define BITCAST 369
-#define UITOFP 370
-#define SITOFP 371
-#define FPTOUI 372
-#define FPTOSI 373
-#define INTTOPTR 374
-#define PTRTOINT 375
-#define PHI_TOK 376
-#define SELECT 377
-#define SHL 378
-#define LSHR 379
-#define ASHR 380
-#define VAARG 381
-#define EXTRACTELEMENT 382
-#define INSERTELEMENT 383
-#define SHUFFLEVECTOR 384
-#define NORETURN 385
-#define DEFAULT 386
-#define HIDDEN 387
+#define LOCALVAR 269
+#define GLOBALVAR 270
+#define LABELSTR 271
+#define STRINGCONSTANT 272
+#define ATSTRINGCONSTANT 273
+#define IMPLEMENTATION 274
+#define ZEROINITIALIZER 275
+#define TRUETOK 276
+#define FALSETOK 277
+#define BEGINTOK 278
+#define ENDTOK 279
+#define DECLARE 280
+#define DEFINE 281
+#define GLOBAL 282
+#define CONSTANT 283
+#define SECTION 284
+#define VOLATILE 285
+#define TO 286
+#define DOTDOTDOT 287
+#define NULL_TOK 288
+#define UNDEF 289
+#define INTERNAL 290
+#define LINKONCE 291
+#define WEAK 292
+#define APPENDING 293
+#define DLLIMPORT 294
+#define DLLEXPORT 295
+#define EXTERN_WEAK 296
+#define OPAQUE 297
+#define EXTERNAL 298
+#define TARGET 299
+#define TRIPLE 300
+#define ALIGN 301
+#define DEPLIBS 302
+#define CALL 303
+#define TAIL 304
+#define ASM_TOK 305
+#define MODULE 306
+#define SIDEEFFECT 307
+#define CC_TOK 308
+#define CCC_TOK 309
+#define CSRETCC_TOK 310
+#define FASTCC_TOK 311
+#define COLDCC_TOK 312
+#define X86_STDCALLCC_TOK 313
+#define X86_FASTCALLCC_TOK 314
+#define DATALAYOUT 315
+#define RET 316
+#define BR 317
+#define SWITCH 318
+#define INVOKE 319
+#define UNWIND 320
+#define UNREACHABLE 321
+#define ADD 322
+#define SUB 323
+#define MUL 324
+#define UDIV 325
+#define SDIV 326
+#define FDIV 327
+#define UREM 328
+#define SREM 329
+#define FREM 330
+#define AND 331
+#define OR 332
+#define XOR 333
+#define ICMP 334
+#define FCMP 335
+#define EQ 336
+#define NE 337
+#define SLT 338
+#define SGT 339
+#define SLE 340
+#define SGE 341
+#define ULT 342
+#define UGT 343
+#define ULE 344
+#define UGE 345
+#define OEQ 346
+#define ONE 347
+#define OLT 348
+#define OGT 349
+#define OLE 350
+#define OGE 351
+#define ORD 352
+#define UNO 353
+#define UEQ 354
+#define UNE 355
+#define MALLOC 356
+#define ALLOCA 357
+#define FREE 358
+#define LOAD 359
+#define STORE 360
+#define GETELEMENTPTR 361
+#define TRUNC 362
+#define ZEXT 363
+#define SEXT 364
+#define FPTRUNC 365
+#define FPEXT 366
+#define BITCAST 367
+#define UITOFP 368
+#define SITOFP 369
+#define FPTOUI 370
+#define FPTOSI 371
+#define INTTOPTR 372
+#define PTRTOINT 373
+#define PHI_TOK 374
+#define SELECT 375
+#define SHL 376
+#define LSHR 377
+#define ASHR 378
+#define VAARG 379
+#define EXTRACTELEMENT 380
+#define INSERTELEMENT 381
+#define SHUFFLEVECTOR 382
+#define NORETURN 383
+#define DEFAULT 384
+#define HIDDEN 385
 
 
 
 
-#ifndef YYSTYPE
-#line 883 "/usr/home/jeffc/llvm/lib/AsmParser/llvmAsmParser.y"
-typedef union {
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 885 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+typedef union YYSTYPE {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
   llvm::BasicBlock                       *BasicBlockVal;
@@ -342,17 +336,17 @@
   llvm::Instruction::MemoryOps      MemOpVal;
   llvm::Instruction::CastOps        CastOpVal;
   llvm::Instruction::OtherOps       OtherOpVal;
-  llvm::Module::Endianness          Endianness;
   llvm::ICmpInst::Predicate         IPredicate;
   llvm::FCmpInst::Predicate         FPredicate;
-} yystype;
-/* Line 1237 of /usr/local/share/bison/yacc.c.  */
-#line 351 "llvmAsmParser.tab.h"
-# define YYSTYPE yystype
+} YYSTYPE;
+/* Line 1447 of yacc.c.  */
+#line 344 "llvmAsmParser.tab.h"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 extern YYSTYPE llvmAsmlval;
 
 
-#endif /* not BISON_LLVMASMPARSER_TAB_H */
 
diff --git a/lib/AsmParser/llvmAsmParser.y.cvs b/lib/AsmParser/llvmAsmParser.y.cvs
index 6b5562b..03832e7 100644
--- a/lib/AsmParser/llvmAsmParser.y.cvs
+++ b/lib/AsmParser/llvmAsmParser.y.cvs
@@ -270,12 +270,12 @@
 
 static const Type *getTypeVal(const ValID &D, bool DoNotImprovise = false) {
   switch (D.Type) {
-  case ValID::NumberVal:               // Is it a numbered definition?
+  case ValID::LocalID:               // Is it a numbered definition?
     // Module constants occupy the lowest numbered slots...
-    if ((unsigned)D.Num < CurModule.Types.size())
-      return CurModule.Types[(unsigned)D.Num];
+    if (D.Num < CurModule.Types.size())
+      return CurModule.Types[D.Num];
     break;
-  case ValID::NameVal:                 // Is it a named definition?
+  case ValID::LocalName:                 // Is it a named definition?
     if (const Type *N = CurModule.CurrentModule->getTypeByName(D.Name)) {
       D.destroy();  // Free old strdup'd memory...
       return N;
@@ -294,11 +294,11 @@
 
 
   if (inFunctionScope()) {
-    if (D.Type == ValID::NameVal) {
+    if (D.Type == ValID::LocalName) {
       GenerateError("Reference to an undefined type: '" + D.getName() + "'");
       return 0;
     } else {
-      GenerateError("Reference to an undefined type: #" + itostr(D.Num));
+      GenerateError("Reference to an undefined type: #" + utostr(D.Num));
       return 0;
     }
   }
@@ -312,13 +312,6 @@
   return Typ;
  }
 
-static Value *lookupInSymbolTable(const Type *Ty, const std::string &Name) {
-  SymbolTable &SymTab =
-    inFunctionScope() ? CurFun.CurrentFunction->getValueSymbolTable() :
-                        CurModule.CurrentModule->getValueSymbolTable();
-  return SymTab.lookup(Ty, Name);
-}
-
 // getValNonImprovising - Look up the value specified by the provided type and
 // the provided ValID.  If the value exists and has already been defined, return
 // it.  Otherwise return null.
@@ -331,29 +324,39 @@
   }
 
   switch (D.Type) {
-  case ValID::NumberVal: {                 // Is it a numbered definition?
-    unsigned Num = (unsigned)D.Num;
-
-    // Module constants occupy the lowest numbered slots...
-    std::map<const Type*,ValueList>::iterator VI = CurModule.Values.find(Ty);
-    if (VI != CurModule.Values.end()) {
-      if (Num < VI->second.size())
-        return VI->second[Num];
-      Num -= VI->second.size();
-    }
-
-    // Make sure that our type is within bounds
-    VI = CurFun.Values.find(Ty);
+  case ValID::LocalID: {                 // Is it a numbered definition?
+    // Module constants occupy the lowest numbered slots.
+    std::map<const Type*,ValueList>::iterator VI = CurFun.Values.find(Ty);
+    // Make sure that our type is within bounds.
     if (VI == CurFun.Values.end()) return 0;
 
-    // Check that the number is within bounds...
-    if (VI->second.size() <= Num) return 0;
+    // Check that the number is within bounds.
+    if (D.Num >= VI->second.size()) return 0;
 
+    return VI->second[D.Num];
+  }
+  case ValID::GlobalID: {                 // Is it a numbered definition?
+    unsigned Num = D.Num;
+    
+    // Module constants occupy the lowest numbered slots...
+    std::map<const Type*,ValueList>::iterator VI = CurModule.Values.find(Ty);
+    if (VI == CurModule.Values.end()) return 0;
+    if (D.Num >= VI->second.size()) return 0;
     return VI->second[Num];
   }
-
-  case ValID::NameVal: {                // Is it a named definition?
-    Value *N = lookupInSymbolTable(Ty, std::string(D.Name));
+    
+  case ValID::LocalName: {                // Is it a named definition?
+    if (!inFunctionScope()) return 0;
+    SymbolTable &SymTab = CurFun.CurrentFunction->getValueSymbolTable();
+    Value *N = SymTab.lookup(Ty, D.Name);
+    if (N == 0) return 0;
+    
+    D.destroy();  // Free old strdup'd memory...
+    return N;
+  }
+  case ValID::GlobalName: {                // Is it a named definition?
+    SymbolTable &SymTab = CurModule.CurrentModule->getValueSymbolTable();
+    Value *N = SymTab.lookup(Ty, D.Name);
     if (N == 0) return 0;
 
     D.destroy();  // Free old strdup'd memory...
@@ -488,12 +491,12 @@
   default: 
     GenerateError("Illegal label reference " + ID.getName());
     return 0;
-  case ValID::NumberVal:                // Is it a numbered definition?
-    if (unsigned(ID.Num) >= CurFun.NumberedBlocks.size())
+  case ValID::LocalID:                // Is it a numbered definition?
+    if (ID.Num >= CurFun.NumberedBlocks.size())
       CurFun.NumberedBlocks.resize(ID.Num+1);
     BB = CurFun.NumberedBlocks[ID.Num];
     break;
-  case ValID::NameVal:                  // Is it a named definition?
+  case ValID::LocalName:                  // Is it a named definition?
     Name = ID.Name;
     if (Value *N = CurFun.CurrentFunction->
                    getValueSymbolTable().lookup(Type::LabelTy, Name))
@@ -518,7 +521,7 @@
 
   // Otherwise this block has not been seen before.
   BB = new BasicBlock("", CurFun.CurrentFunction);
-  if (ID.Type == ValID::NameVal) {
+  if (ID.Type == ValID::LocalName) {
     BB->setName(ID.Name);
   } else {
     CurFun.NumberedBlocks[ID.Num] = BB;
@@ -585,7 +588,7 @@
         // resolver table
         InsertValue(V, *FutureLateResolvers);
       } else {
-        if (DID.Type == ValID::NameVal) {
+        if (DID.Type == ValID::LocalName || DID.Type == ValID::GlobalName) {
           GenerateError("Reference to an invalid definition: '" +DID.getName()+
                          "' of type '" + V->getType()->getDescription() + "'",
                          PHI->second.second);
@@ -610,8 +613,8 @@
 //
 static void ResolveTypeTo(char *Name, const Type *ToTy) {
   ValID D;
-  if (Name) D = ValID::create(Name);
-  else      D = ValID::create((int)CurModule.Types.size());
+  if (Name) D = ValID::createLocalName(Name);
+  else      D = ValID::createLocalID(CurModule.Types.size());
 
   std::map<ValID, PATypeHolder>::iterator I =
     CurModule.LateResolveTypes.find(D);
@@ -626,26 +629,25 @@
 // assumed to be a malloc'd string buffer, and is free'd by this function.
 //
 static void setValueName(Value *V, char *NameStr) {
-  if (NameStr) {
-    std::string Name(NameStr);      // Copy string
-    free(NameStr);                  // Free old string
+  if (!NameStr) return;
+  std::string Name(NameStr);      // Copy string
+  free(NameStr);                  // Free old string
 
-    if (V->getType() == Type::VoidTy) {
-      GenerateError("Can't assign name '" + Name+"' to value with void type!");
-      return;
-    }
-
-    assert(inFunctionScope() && "Must be in function scope!");
-    SymbolTable &ST = CurFun.CurrentFunction->getValueSymbolTable();
-    if (ST.lookup(V->getType(), Name)) {
-      GenerateError("Redefinition of value '" + Name + "' of type '" +
-                     V->getType()->getDescription() + "'!");
-      return;
-    }
-
-    // Set the name.
-    V->setName(Name);
+  if (V->getType() == Type::VoidTy) {
+    GenerateError("Can't assign name '" + Name+"' to value with void type!");
+    return;
   }
+
+  assert(inFunctionScope() && "Must be in function scope!");
+  SymbolTable &ST = CurFun.CurrentFunction->getValueSymbolTable();
+  if (ST.lookup(V->getType(), Name)) {
+    GenerateError("Redefinition of value '" + Name + "' of type '" +
+                   V->getType()->getDescription() + "'!");
+    return;
+  }
+
+  // Set the name.
+  V->setName(Name);
 }
 
 /// ParseGlobalVariable - Handle parsing of a global.  If Initializer is null,
@@ -673,9 +675,9 @@
   // object.
   ValID ID;
   if (!Name.empty()) {
-    ID = ValID::create((char*)Name.c_str());
+    ID = ValID::createGlobalName((char*)Name.c_str());
   } else {
-    ID = ValID::create((int)CurModule.Values[PTy].size());
+    ID = ValID::createGlobalID(CurModule.Values[PTy].size());
   }
 
   if (GlobalValue *FWGV = CurModule.GetForwardRefForGlobal(PTy, ID)) {
@@ -922,7 +924,6 @@
   llvm::Instruction::MemoryOps      MemOpVal;
   llvm::Instruction::CastOps        CastOpVal;
   llvm::Instruction::OtherOps       OtherOpVal;
-  llvm::Module::Endianness          Endianness;
   llvm::ICmpInst::Predicate         IPredicate;
   llvm::FCmpInst::Predicate         FPredicate;
 }
@@ -949,7 +950,6 @@
 %type <Linkage>       GVInternalLinkage GVExternalLinkage
 %type <Linkage>       FunctionDefineLinkage FunctionDeclareLinkage
 %type <Visibility>    GVVisibilityStyle
-%type <Endianness>    BigOrLittle
 
 // ValueRef - Unresolved reference to a definition or BB
 %type <ValIDVal>      ValueRef ConstValueRef SymbolicValueRef
@@ -962,9 +962,7 @@
 // EUINT64VAL - A positive number within uns. long long range
 %token <UInt64Val> EUINT64VAL
 
-%token  <SIntVal>   SINTVAL   // Signed 32 bit ints...
-%token  <UIntVal>   UINTVAL   // Unsigned 32 bit ints...
-%type   <SIntVal>   INTVAL
+%token  <UIntVal>   LOCALVAL_ID GLOBALVAL_ID  // %123 @123
 %token  <FPVal>     FPVAL     // Float or Double constant
 
 // Built in types...
@@ -974,16 +972,17 @@
 %token <PrimType> FLOAT DOUBLE LABEL
 %token TYPE
 
-%token <StrVal> VAR_ID LABELSTR STRINGCONSTANT
-%type  <StrVal> Name OptName OptAssign
-%type  <UIntVal> OptAlign OptCAlign
+%token<StrVal> LOCALVAR GLOBALVAR LABELSTR STRINGCONSTANT ATSTRINGCONSTANT
+%type <StrVal> LocalName OptLocalName OptLocalAssign
+%type <StrVal> GlobalName OptGlobalAssign
+%type <UIntVal> OptAlign OptCAlign
 %type <StrVal> OptSection SectionString
 
 %token IMPLEMENTATION ZEROINITIALIZER TRUETOK FALSETOK BEGINTOK ENDTOK
 %token DECLARE DEFINE GLOBAL CONSTANT SECTION VOLATILE
 %token TO DOTDOTDOT NULL_TOK UNDEF INTERNAL LINKONCE WEAK APPENDING
 %token DLLIMPORT DLLEXPORT EXTERN_WEAK
-%token OPAQUE EXTERNAL TARGET TRIPLE ENDIAN POINTERSIZE LITTLE BIG ALIGN
+%token OPAQUE EXTERNAL TARGET TRIPLE ALIGN
 %token DEPLIBS CALL TAIL ASM_TOK MODULE SIDEEFFECT
 %token CC_TOK CCC_TOK CSRETCC_TOK FASTCC_TOK COLDCC_TOK
 %token X86_STDCALLCC_TOK X86_FASTCALLCC_TOK
@@ -1026,15 +1025,6 @@
 %start Module
 %%
 
-// Handle constant integer size restriction and conversion...
-//
-INTVAL : SINTVAL;
-INTVAL : UINTVAL {
-  if ($1 > (uint32_t)INT32_MAX)     // Outside of my range!
-    GEN_ERROR("Value too large for type!");
-  $$ = (int32_t)$1;
-  CHECK_FOR_ERROR
-};
 
 // Operations that are notably excluded from this list include:
 // RET, BR, & SWITCH because they end basic blocks and are treated specially.
@@ -1069,8 +1059,23 @@
 IntType :  INTTYPE;
 FPType   : FLOAT | DOUBLE;
 
-// OptAssign - Value producing statements have an optional assignment component
-OptAssign : Name '=' {
+LocalName : LOCALVAR | STRINGCONSTANT;
+OptLocalName : LocalName | /*empty*/ { $$ = 0; };
+
+/// OptLocalAssign - Value producing statements have an optional assignment
+/// component.
+OptLocalAssign : LocalName '=' {
+    $$ = $1;
+    CHECK_FOR_ERROR
+  }
+  | /*empty*/ {
+    $$ = 0;
+    CHECK_FOR_ERROR
+  };
+
+GlobalName : GLOBALVAR | ATSTRINGCONSTANT;
+
+OptGlobalAssign : GlobalName '=' {
     $$ = $1;
     CHECK_FOR_ERROR
   }
@@ -1630,7 +1635,10 @@
         $2.destroy();
       } else {
         std::string Name;
-        if ($2.Type == ValID::NameVal) Name = $2.Name;
+        if ($2.Type == ValID::GlobalName)
+          Name = $2.Name;
+        else if ($2.Type != ValID::GlobalID)
+          GEN_ERROR("Invalid reference to global");
 
         // Create the forward referenced global.
         GlobalValue *GV;
@@ -1857,7 +1865,7 @@
     // Emit an error if there are any unresolved types left.
     if (!CurModule.LateResolveTypes.empty()) {
       const ValID &DID = CurModule.LateResolveTypes.begin()->first;
-      if (DID.Type == ValID::NameVal) {
+      if (DID.Type == ValID::LocalName) {
         GEN_ERROR("Reference to an undefined type: '"+DID.getName() + "'");
       } else {
         GEN_ERROR("Reference to an undefined type: #" + itostr(DID.Num));
@@ -1865,7 +1873,7 @@
     }
     CHECK_FOR_ERROR
   }
-  | OptAssign TYPE Types {
+  | OptLocalAssign TYPE Types {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription());
     // Eagerly resolve types.  This is not an optimization, this is a
@@ -1889,7 +1897,7 @@
     delete $3;
     CHECK_FOR_ERROR
   }
-  | OptAssign TYPE VOID {
+  | OptLocalAssign TYPE VOID {
     ResolveTypeTo($1, $3);
 
     if (!setTypeName($3, $1) && !$1) {
@@ -1900,7 +1908,8 @@
     }
     CHECK_FOR_ERROR
   }
-  | OptAssign GVVisibilityStyle GlobalType ConstVal { /* "Externally Visible" Linkage */
+  | OptGlobalAssign GVVisibilityStyle GlobalType ConstVal { 
+    /* "Externally Visible" Linkage */
     if ($4 == 0) 
       GEN_ERROR("Global value initializer is not a constant!");
     CurGV = ParseGlobalVariable($1, GlobalValue::ExternalLinkage,
@@ -1909,7 +1918,7 @@
   } GlobalVarAttributes {
     CurGV = 0;
   }
-  | OptAssign GVInternalLinkage GVVisibilityStyle GlobalType ConstVal {
+  | OptGlobalAssign GVInternalLinkage GVVisibilityStyle GlobalType ConstVal {
     if ($5 == 0) 
       GEN_ERROR("Global value initializer is not a constant!");
     CurGV = ParseGlobalVariable($1, $2, $3, $4, $5->getType(), $5);
@@ -1917,7 +1926,7 @@
   } GlobalVarAttributes {
     CurGV = 0;
   }
-  | OptAssign GVExternalLinkage GVVisibilityStyle GlobalType Types {
+  | OptGlobalAssign GVExternalLinkage GVVisibilityStyle GlobalType Types {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*$5)->getDescription());
     CurGV = ParseGlobalVariable($1, $2, $3, $4, *$5, 0);
@@ -1949,23 +1958,7 @@
   CHECK_FOR_ERROR
 };
 
-BigOrLittle : BIG    { $$ = Module::BigEndian; };
-BigOrLittle : LITTLE { $$ = Module::LittleEndian; };
-
-TargetDefinition : ENDIAN '=' BigOrLittle {
-    CurModule.CurrentModule->setEndianness($3);
-    CHECK_FOR_ERROR
-  }
-  | POINTERSIZE '=' EUINT64VAL {
-    if ($3 == 32)
-      CurModule.CurrentModule->setPointerSize(Module::Pointer32);
-    else if ($3 == 64)
-      CurModule.CurrentModule->setPointerSize(Module::Pointer64);
-    else
-      GEN_ERROR("Invalid pointer size: '" + utostr($3) + "'!");
-    CHECK_FOR_ERROR
-  }
-  | TRIPLE '=' STRINGCONSTANT {
+TargetDefinition : TRIPLE '=' STRINGCONSTANT {
     CurModule.CurrentModule->setTargetTriple($3);
     free($3);
   }
@@ -1995,10 +1988,7 @@
 //                       Rules to match Function Headers
 //===----------------------------------------------------------------------===//
 
-Name : VAR_ID | STRINGCONSTANT;
-OptName : Name | /*empty*/ { $$ = 0; };
-
-ArgListH : ArgListH ',' Types OptParamAttrs OptName {
+ArgListH : ArgListH ',' Types OptParamAttrs OptLocalName {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription());
     if (*$3 == Type::VoidTy)
@@ -2008,7 +1998,7 @@
     $1->push_back(E);
     CHECK_FOR_ERROR
   }
-  | Types OptParamAttrs OptName {
+  | Types OptParamAttrs OptLocalName {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription());
     if (*$1 == Type::VoidTy)
@@ -2046,7 +2036,7 @@
     CHECK_FOR_ERROR
   };
 
-FunctionHeaderH : OptCallingConv ResultTypes Name '(' ArgList ')' 
+FunctionHeaderH : OptCallingConv ResultTypes GlobalName '(' ArgList ')' 
                   OptFuncAttrs OptSection OptAlign {
   UnEscapeLexed($3);
   std::string FunctionName($3);
@@ -2081,9 +2071,9 @@
 
   ValID ID;
   if (!FunctionName.empty()) {
-    ID = ValID::create((char*)FunctionName.c_str());
+    ID = ValID::createGlobalName((char*)FunctionName.c_str());
   } else {
-    ID = ValID::create((int)CurModule.Values[PFT].size());
+    ID = ValID::createGlobalID(CurModule.Values[PFT].size());
   }
 
   Function *Fn = 0;
@@ -2266,12 +2256,20 @@
 // SymbolicValueRef - Reference to one of two ways of symbolically refering to
 // another value.
 //
-SymbolicValueRef : INTVAL {  // Is it an integer reference...?
-    $$ = ValID::create($1);
+SymbolicValueRef : LOCALVAL_ID {  // Is it an integer reference...?
+    $$ = ValID::createLocalID($1);
     CHECK_FOR_ERROR
   }
-  | Name {                   // Is it a named reference...?
-    $$ = ValID::create($1);
+  | GLOBALVAL_ID {
+    $$ = ValID::createGlobalID($1);
+    CHECK_FOR_ERROR
+  }
+  | LocalName {                   // Is it a named reference...?
+    $$ = ValID::createLocalName($1);
+    CHECK_FOR_ERROR
+  }
+  | GlobalName {                   // Is it a named reference...?
+    $$ = ValID::createGlobalName($1);
     CHECK_FOR_ERROR
   };
 
@@ -2304,7 +2302,7 @@
 // Basic blocks are terminated by branching instructions: 
 // br, br/cc, switch, ret
 //
-BasicBlock : InstructionList OptAssign BBTerminatorInst  {
+BasicBlock : InstructionList OptLocalAssign BBTerminatorInst  {
     setValueName($3, $2);
     CHECK_FOR_ERROR
     InsertValue($3);
@@ -2325,7 +2323,7 @@
     CHECK_FOR_ERROR
   }
   | /* empty */ {
-    $$ = getBBVal(ValID::create((int)CurFun.NextBBNum++), true);
+    $$ = getBBVal(ValID::createLocalID(CurFun.NextBBNum++), true);
     CHECK_FOR_ERROR
 
     // Make sure to move the basic block to the correct location in the
@@ -2337,7 +2335,7 @@
     CHECK_FOR_ERROR
   }
   | LABELSTR {
-    $$ = getBBVal(ValID::create($1), true);
+    $$ = getBBVal(ValID::createLocalName($1), true);
     CHECK_FOR_ERROR
 
     // Make sure to move the basic block to the correct location in the
@@ -2502,7 +2500,7 @@
     $$->push_back(std::make_pair(V, tmpBB)); 
   };
 
-Inst : OptAssign InstVal {
+Inst : OptLocalAssign InstVal {
   // Is this definition named?? if so, assign the name...
   setValueName($2, $1);
   CHECK_FOR_ERROR
@@ -2762,6 +2760,7 @@
     CI->setCallingConv($2);
     $$ = CI;
     delete $6;
+    delete $3;
     CHECK_FOR_ERROR
   }
   | MemoryInst {
