diff --git a/lib/AsmParser/Lexer.cpp b/lib/AsmParser/Lexer.cpp
index 657b364..77d0d9f 100644
--- a/lib/AsmParser/Lexer.cpp
+++ b/lib/AsmParser/Lexer.cpp
@@ -28,7 +28,6 @@
 #define YY_FLEX_MINOR_VERSION 5
 
 #include <stdio.h>
-#include <unistd.h>
 
 
 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
@@ -42,6 +41,7 @@
 #ifdef __cplusplus
 
 #include <stdlib.h>
+#include <unistd.h>
 
 /* Use prototypes in function declarations. */
 #define YY_USE_PROTOS
@@ -308,32 +308,32 @@
 	*yy_cp = '\0'; \
 	yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 99
-#define YY_END_OF_BUFFER 100
-static yyconst short int yy_acclist[177] =
+#define YY_NUM_RULES 100
+#define YY_END_OF_BUFFER 101
+static yyconst short int yy_acclist[178] =
     {   0,
-      100,   98,   99,   97,   98,   99,   97,   99,   98,   99,
-       98,   99,   98,   99,   98,   99,   98,   99,   98,   99,
-       90,   98,   99,   90,   98,   99,    1,   98,   99,   98,
-       99,   98,   99,   98,   99,   98,   99,   98,   99,   98,
-       99,   98,   99,   98,   99,   98,   99,   98,   99,   98,
-       99,   98,   99,   98,   99,   98,   99,   98,   99,   98,
-       99,   98,   99,   98,   99,   98,   99,   98,   99,   98,
-       99,   89,   87,   86,   86,   93,   91,   95,   90,    1,
-       75,   32,   57,   20,   89,   86,   86,   94,   95,   17,
-       95,   96,   51,   56,   30,   33,   54,    3,   42,   53,
+      101,   99,  100,   98,   99,  100,   98,  100,   99,  100,
+       99,  100,   99,  100,   99,  100,   99,  100,   99,  100,
+       91,   99,  100,   91,   99,  100,    1,   99,  100,   99,
+      100,   99,  100,   99,  100,   99,  100,   99,  100,   99,
+      100,   99,  100,   99,  100,   99,  100,   99,  100,   99,
+      100,   99,  100,   99,  100,   99,  100,   99,  100,   99,
+      100,   99,  100,   99,  100,   99,  100,   99,  100,   99,
+      100,   90,   88,   87,   87,   94,   92,   96,   91,    1,
+       76,   32,   58,   20,   90,   87,   87,   95,   96,   17,
+       96,   97,   52,   57,   30,   33,   55,    3,   42,   54,
 
-       22,   65,   55,   74,   69,   70,   52,   58,   88,   95,
-       95,   37,   66,   67,   82,   83,   44,   19,   92,   23,
-        4,   49,   43,   36,   11,   95,    2,    5,   46,   48,
-       38,   60,   64,   62,   63,   61,   59,   40,   84,   39,
-       45,   18,   72,   81,   35,   47,   27,   21,   34,    7,
-       77,   29,   80,   50,   68,   76,   24,   25,   78,   41,
-       73,   71,    6,   26,    8,   14,    9,   10,   31,   12,
-       28,   79,   85,   13,   15,   16
+       22,   66,   56,   75,   70,   71,   53,   59,   89,   96,
+       96,   37,   67,   68,   83,   84,   44,   19,   93,   23,
+        4,   49,   43,   36,   11,   96,   51,    2,    5,   46,
+       48,   38,   61,   65,   63,   64,   62,   60,   40,   85,
+       39,   45,   18,   73,   82,   35,   47,   27,   21,   34,
+        7,   78,   29,   81,   50,   69,   77,   24,   25,   79,
+       41,   74,   72,    6,   26,    8,   14,    9,   10,   31,
+       12,   28,   80,   86,   13,   15,   16
     } ;
 
-static yyconst short int yy_accept[398] =
+static yyconst short int yy_accept[401] =
     {   0,
         1,    1,    1,    2,    4,    7,    9,   11,   13,   15,
        17,   19,   21,   24,   27,   30,   32,   34,   36,   38,
@@ -347,37 +347,37 @@
        84,   84,   84,   84,   85,   85,   85,   85,   85,   85,
 
        85,   85,   85,   85,   85,   85,   85,   86,   87,   89,
-       90,   91,   92,   92,   93,   94,   94,   95,   95,   95,
-       96,   96,   96,   96,   97,   97,   97,   97,   97,   98,
-       98,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,  100,  100,  100,  100,  100,  100,  100,  100,  101,
-      102,  102,  102,  103,  103,  104,  105,  105,  105,  105,
-      105,  106,  106,  107,  107,  108,  108,  108,  108,  108,
+       90,   91,   92,   92,   93,   94,   94,   94,   95,   95,
+       95,   96,   96,   96,   96,   97,   97,   97,   97,   97,
+       98,   98,   99,   99,   99,   99,   99,   99,   99,   99,
+       99,   99,  100,  100,  100,  100,  100,  100,  100,  100,
+      101,  102,  102,  102,  103,  103,  104,  105,  105,  105,
+      105,  105,  106,  106,  107,  107,  108,  108,  108,  108,
       108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
-      108,  108,  108,  108,  108,  108,  109,  109,  110,  111,
-      111,  111,  111,  112,  112,  112,  112,  113,  114,  115,
+      108,  108,  108,  108,  108,  108,  108,  109,  109,  110,
+      111,  111,  111,  111,  112,  112,  112,  112,  112,  113,
 
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-      117,  118,  118,  119,  119,  119,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  121,  121,  121,  122,
-      123,  123,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  125,  125,  126,  126,  127,  127,  127,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  129,  129,
-      130,  130,  130,  130,  130,  130,  131,  131,  131,  131,
-      131,  131,  132,  132,  133,  134,  135,  136,  137,  138,
-      139,  140,  140,  140,  140,  141,  142,  143,  143,  143,
+      114,  115,  115,  115,  115,  115,  115,  115,  115,  115,
+      115,  115,  115,  116,  116,  116,  116,  116,  116,  116,
+      116,  116,  117,  118,  118,  119,  119,  119,  120,  120,
+      120,  120,  120,  120,  120,  120,  120,  120,  121,  121,
+      121,  122,  123,  123,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,  125,  125,  126,  126,  127,  128,
+      128,  128,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  130,  130,  131,  131,  131,  131,  131,  131,  132,
+      132,  132,  132,  132,  132,  133,  133,  134,  135,  136,
+      137,  138,  139,  140,  141,  141,  141,  141,  142,  143,
 
-      143,  143,  143,  144,  144,  144,  144,  145,  145,  146,
-      146,  146,  146,  147,  148,  149,  149,  150,  150,  151,
-      151,  151,  152,  152,  153,  154,  155,  155,  156,  157,
-      158,  159,  159,  159,  160,  161,  162,  163,  163,  163,
-      163,  163,  164,  165,  165,  165,  165,  165,  165,  165,
-      165,  165,  165,  165,  165,  166,  167,  167,  167,  168,
-      169,  169,  169,  169,  170,  170,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  172,  172,  173,  173,  173,  173,  173,  173,  174,
-      174,  175,  175,  176,  176,  177,  177
+      144,  144,  144,  144,  144,  144,  145,  145,  145,  145,
+      146,  146,  147,  147,  147,  147,  148,  149,  150,  150,
+      151,  151,  152,  152,  152,  153,  153,  154,  155,  156,
+      156,  157,  158,  159,  160,  160,  160,  161,  162,  163,
+      164,  164,  164,  164,  164,  165,  166,  166,  166,  166,
+      166,  166,  166,  166,  166,  166,  166,  166,  167,  168,
+      168,  168,  169,  170,  170,  170,  170,  171,  171,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  173,  173,  174,  174,  174,  174,
+      174,  174,  175,  175,  176,  176,  177,  177,  178,  178
 
     } ;
 
@@ -422,105 +422,105 @@
         3
     } ;
 
-static yyconst short int yy_base[402] =
+static yyconst short int yy_base[405] =
     {   0,
-        0,    0,  834,  835,  835,  835,  829,  820,   34,   36,
+        0,    0,  840,  841,  841,  841,  835,  826,   34,   36,
        38,   42,   46,   50,    0,   51,   54,   53,   56,   61,
        76,   77,   79,   80,   82,   83,   84,   90,   31,  111,
-       94,  140,  113,   55,  110,  116,  827,  835,  818,  835,
+       94,  140,  113,   55,  110,  116,  833,  841,  824,  841,
         0,  128,  131,  144,  150,  124,  160,  167,  172,    0,
-      136,   89,  168,  100,   41,  145,  114,  817,  139,  183,
-      184,  185,  173,  186,  187,  189,  191,  133,  188,  193,
-      200,  202,  194,  203,  205,  215,  208,  211,  207,  214,
-       57,  816,  224,  225,  227,  231,  233,  234,  241,  235,
-      236,  239,  247,  815,  251,  244,  245,  248,  254,  266,
+      136,  139,  168,  100,   41,  145,  114,  823,  173,  183,
+      184,  185,  161,  187,  189,  191,  193,  133,  194,  196,
+      200,  202,  205,  206,  209,  217,   89,  210,  213,  216,
+       57,  822,  207,  224,  223,  227,  229,  233,  240,  235,
+      238,  247,  249,  821,  250,  245,  241,  242,  265,  267,
 
-      255,  276,  269,  278,  270,  277,  814,    0,  287,  291,
-      813,  303,  309,    0,  812,  295,  811,  288,  310,  810,
-      296,  299,  315,  809,  316,  317,  318,  319,  808,  240,
-      322,  320,  321,  325,  326,  327,  328,  331,  336,  341,
-      343,  344,  345,  346,  348,  350,  353,  351,  807,  806,
-      355,  357,  805,  359,  804,  803,  380,  361,  363,  391,
-      802,  373,  801,  374,  800,  369,  365,  393,  396,  398,
-      401,  397,  399,  409,  403,  411,  405,  368,  413,  416,
-      417,  418,  367,  419,  423,  799,  425,  835,  431,  437,
-      443,  446,  449,  450,  439,  451,  798,  797,  796,  452,
+      266,  268,  271,  276,  277,  279,  820,    0,  253,  292,
+      819,  304,  310,    0,  818,  311,  294,  817,  287,  314,
+      816,  282,  315,  316,  815,  317,  299,  318,  319,  814,
+      320,  323,  328,  329,  324,  331,  335,  332,  342,  343,
+      344,  347,  345,  348,  350,  352,  353,  355,  358,  813,
+      812,  362,  360,  811,  365,  810,  809,  385,  374,  367,
+      389,  808,  378,  807,  381,  806,  385,  371,  368,  396,
+      401,  403,  405,  407,  409,  411,  414,  413,  416,  417,
+      418,  419,  424,  434,  427,  425,  805,  436,  841,  446,
+      452,  371,  458,  461,  421,  446,  452,  462,  804,  803,
 
-      453,  455,  454,  458,  461,  462,  463,  465,  464,  469,
-      795,  470,  472,  478,  475,  479,  480,  482,  483,  794,
-      793,  486,  792,  488,  490,    0,  494,  499,  489,  501,
-      502,  505,  497,  507,  508,  791,  517,  518,  790,  789,
-      519,  788,  521,  527,  522,  529,  523,  530,  531,  536,
-      538,  787,  539,  786,  541,  544,  544,  545,  785,  548,
-      556,  546,  557,  550,  558,  560,  564,  784,  566,  783,
-      568,  569,  570,  571,  576,  782,  572,  578,  590,  582,
-      592,  781,  579,  780,  779,  778,  777,  776,  775,  774,
-      773,  593,  580,  595,  772,  771,  770,  594,  599,  600,
+      802,  463,  441,  466,  465,  467,  468,  472,  474,  475,
+      476,  477,  801,  481,  480,  488,  486,  487,  489,  490,
+      494,  800,  799,  492,  798,  493,  498,    0,  502,  499,
+      503,  505,  513,  515,  512,  516,  519,  797,  518,  529,
+      796,  795,  530,  794,  520,  532,  533,  538,  534,  537,
+      540,  541,  545,  793,  547,  792,  549,  555,  791,  550,
+      548,  790,  557,  560,  559,  437,  566,  567,  563,  568,
+      789,  569,  788,  573,  574,  571,  577,  579,  787,  578,
+      581,  591,  583,  593,  786,  596,  785,  784,  783,  782,
+      781,  780,  779,  778,  597,  599,  601,  777,  776,  775,
 
-      596,  598,  769,  607,  610,  611,  768,  612,  767,  614,
-      613,  615,  766,  765,  764,  616,  763,  618,  762,  620,
-      627,  761,  626,  760,  759,  758,  624,  757,  756,  755,
-      754,  635,  638,  753,  752,  749,  739,  636,  639,  640,
-      641,  738,  737,  643,  644,  642,  646,  647,  649,  655,
-      662,  654,  665,  666,  736,  735,  668,  669,  734,  733,
-      670,  672,  673,  732,  676,  731,  674,  675,  678,  681,
-      684,  686,  682,  690,  693,  695,  696,  700,  698,  703,
-      730,  708,  728,  706,  704,  709,  710,  711,  726,  712,
-      722,  714,  574,  720,  491,  835,  753,  755,  280,  759,
+      600,  604,  605,  603,  606,  774,  607,  608,  612,  773,
+      614,  772,  615,  616,  618,  771,  770,  769,  628,  768,
+      620,  767,  634,  637,  766,  624,  765,  764,  763,  635,
+      762,  761,  760,  759,  638,  641,  758,  755,  746,  744,
+      639,  644,  645,  646,  743,  742,  648,  649,  647,  650,
+      652,  655,  666,  667,  659,  660,  670,  741,  740,  673,
+      674,  738,  737,  675,  676,  678,  736,  679,  735,  680,
+      682,  685,  686,  689,  693,  694,  695,  696,  700,  701,
+      702,  707,  706,  732,  711,  731,  708,  712,  709,  715,
+      716,  728,  722,  724,  725,  372,  726,  292,  841,  759,
 
-      161
+      761,  298,  765,  252
     } ;
 
-static yyconst short int yy_def[402] =
+static yyconst short int yy_def[405] =
     {   0,
-      396,    1,  396,  396,  396,  396,  397,  398,  399,  396,
-      398,  398,  398,  398,  400,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  397,  396,  398,  396,
-      401,  401,  396,  396,  398,  398,  398,  398,  398,  400,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
+      399,    1,  399,  399,  399,  399,  400,  401,  402,  399,
+      401,  401,  401,  401,  403,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  400,  399,  401,  399,
+      404,  404,  399,  399,  401,  401,  401,  401,  401,  403,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
 
-      398,  398,  398,  398,  398,  398,  396,  401,  401,  396,
-      398,  398,  398,   49,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,   49,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  396,  396,  396,
-      396,  398,  398,  398,  398,  398,  398,  398,  398,  398,
+      401,  401,  401,  401,  401,  401,  399,  404,  404,  399,
+      401,  401,  401,   49,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,   49,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  399,  399,
+      399,  399,  401,  401,  401,  401,  401,  401,  401,  401,
 
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  157,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  396,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  158,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  399,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
 
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,    0,  396,  396,  396,  396,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  401,    0,  399,
 
-      396
+      399,  399,  399,  399
     } ;
 
-static yyconst short int yy_nxt[877] =
+static yyconst short int yy_nxt[883] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
        14,    4,   15,    8,    8,    8,   16,   17,   18,   19,
@@ -528,99 +528,100 @@
        28,    8,   29,   30,   31,   32,   33,   34,   35,    8,
        36,   42,   40,   43,   43,   44,   44,   45,   45,   40,
        46,   85,   40,   40,   47,   48,   48,   40,   47,   48,
-       48,   40,   40,  119,   40,   40,   40,   40,   40,   59,
-       51,   60,   40,  152,   55,  104,   62,   52,   56,   53,
+       48,   40,   40,  120,   40,   40,   40,   40,   40,   59,
+       51,   60,   40,  153,   55,  104,   62,   52,   56,   53,
        63,   54,   61,   57,   49,   64,   58,   40,   40,   65,
        40,   40,   67,   40,   40,   40,   74,   70,   77,   66,
 
        40,   40,   68,   71,   75,   40,   72,   73,   69,   76,
-       93,   40,   79,   83,   81,  116,   82,   78,   80,   84,
+       93,   40,   79,   83,   81,  149,   82,   78,   80,   84,
        86,   40,   40,   94,   40,   40,   95,   40,   87,  102,
-      118,   88,  111,   96,   89,   40,  106,  109,  109,  105,
-       43,   43,  103,  121,   40,   90,   91,   40,   92,   86,
+      119,   88,  111,   96,   89,   40,  106,  109,  109,  105,
+       43,   43,  103,  122,   40,   90,   91,   40,   92,   86,
        40,   40,  110,   44,   44,  115,   40,   97,   47,   45,
-       45,   40,  136,  108,   98,  122,   99,  120,  100,  112,
-      112,   40,  123,  101,  113,   47,   48,   48,   40,   40,
-      113,  114,  114,   40,   40,  114,  114,  117,  114,  114,
-      114,  114,  114,  114,   40,   40,   40,   40,   40,   40,
+       45,   40,  137,  116,   98,  117,   99,  121,  100,  112,
+      112,   40,   40,  101,  113,   47,   48,   48,   40,   40,
+      113,  114,  114,   40,   40,  114,  114,  118,  114,  114,
+      114,  114,  114,  114,   40,   40,   40,  130,   40,  123,
 
-       40,  124,   40,  127,   40,   40,  131,  132,  137,  129,
-      125,   40,  126,   40,   40,  128,   40,  134,   40,   40,
-      143,  130,   40,  133,  135,   40,   40,  138,  141,  139,
-      142,  146,  140,  144,  148,   40,   40,  149,   40,  145,
-      151,  150,   40,  147,   40,   40,   40,   40,  153,  154,
-       40,   40,   40,  165,  155,   40,   40,  204,   40,   40,
-      159,  156,   40,  166,  164,   40,   40,  161,  160,  157,
-      162,  167,  158,  163,  171,  169,  173,   40,  179,  168,
-       40,   40,   41,  174,  172,  175,  170,   40,   40,   40,
-      176,  180,  181,  183,  185,  184,  109,  109,  177,   40,
+       40,  125,   40,  128,   40,   40,  124,   40,  132,  133,
+      126,   40,  127,   40,  138,  129,   40,   40,   40,  135,
+       40,   40,  131,  144,   40,  134,  136,   40,   40,  140,
+      139,  154,  141,  147,   40,   40,  150,  145,   40,  142,
+       40,  143,  152,  146,   40,  148,   40,  151,  155,   40,
+      156,   40,   40,   40,  108,  166,   40,  157,   40,  160,
+       40,   40,  109,  109,  165,  158,  162,  161,  159,  163,
+      174,  167,  164,  168,  170,  172,   40,   40,   40,   40,
+      173,  169,   40,  181,  182,  171,  176,   40,   40,  180,
+       40,  177,  186,   40,  175,  184,  183,  185,   40,  178,
 
-      189,  189,  186,  178,  182,  190,   40,   40,  195,  187,
-       40,  190,  112,  112,   40,  191,  192,  113,  193,  193,
-       40,   40,  197,  113,  194,  198,   40,   40,   40,   40,
-       40,   40,   40,   40,  196,  200,   40,   40,   40,   40,
-      206,  207,   40,  210,  202,  203,  205,   40,  211,  199,
-      201,  212,   40,  213,   40,   40,   40,   40,  208,   40,
-      209,   40,   40,  215,   40,  217,   40,  214,   40,  220,
-       40,  218,   40,  216,   40,  221,   40,  222,   40,   40,
-       40,  223,  219,  228,   40,   40,  252,  225,  224,  226,
-      226,  236,  247,  226,  226,  227,  226,  226,  226,  226,
+       41,  190,  190,   40,  179,   40,  191,  197,  199,  187,
+       40,  188,  191,  112,  112,   40,  192,  193,  113,  194,
+      194,   40,   40,  196,  113,   40,   40,   40,   40,   40,
+       40,   40,  203,  195,   40,   40,  202,  206,  198,   40,
+       40,  200,   40,   40,  204,  205,   40,  207,  208,  209,
+      201,  212,  213,   40,   40,   40,   40,  210,   40,   40,
+      215,   40,  214,   40,   40,  211,   40,  217,  219,   40,
+      216,   40,  222,   40,  218,  220,   40,  223,   40,   40,
+      258,  258,   40,   40,  224,   40,  221,  230,  225,   40,
+      239,  226,   40,  227,  228,  228,   40,  238,  228,  228,
 
-      226,  226,   40,  235,   40,  233,  234,   40,   40,   40,
-       40,  229,   40,  230,   40,  237,   40,  231,  239,  232,
-       40,  240,   40,  244,   40,  246,  238,   40,   40,   40,
-       40,  241,  249,  242,   40,  253,   40,  243,  251,  245,
-      189,  189,  248,  191,  191,  190,  256,  256,  254,  250,
-       40,  190,  256,  256,  255,  193,  193,   40,  193,  193,
-       40,   40,   40,   40,   40,   40,   40,  258,  257,   40,
-      260,  262,   40,   40,   40,   40,   40,  265,  263,  259,
-       40,   40,  269,   40,  264,  268,   40,  261,  272,   40,
-       40,   40,  266,   40,   40,  267,  271,   40,  273,   40,
+       40,  228,  228,  228,  228,  228,  228,   40,  229,  231,
+      235,  232,   40,  236,   40,  233,   40,  234,   40,  237,
+       40,  241,   40,  242,   40,   40,  240,   40,   40,   40,
+       40,  246,   40,  248,  251,   40,   40,  245,   40,  243,
+      249,  244,  247,  255,  253,   40,  250,   40,   40,  259,
+      256,  252,   40,  254,  315,  190,  190,   40,  192,  192,
+      191,  258,  258,   40,  260,  257,  191,  194,  194,   40,
+      194,  194,   40,   40,   40,  264,   40,   40,   40,   40,
+      261,  263,  265,   40,  268,   40,   40,   40,   40,  266,
+      262,   40,   40,  267,  272,  271,  275,   40,   40,   40,
 
-       40,   40,   40,  270,  275,   40,  276,  274,   40,  278,
-       40,  277,   40,   40,  282,  279,   40,  283,   40,   40,
-      284,  285,  287,  280,  281,  289,  292,  291,   40,   40,
-       40,  290,   40,   40,   40,  286,  288,  293,   40,  295,
-       40,   40,   40,  296,  294,  299,  298,   40,  297,   40,
-       40,  300,   40,  256,  256,   40,   40,   40,  303,   40,
-      307,   40,  301,  302,  308,  306,  309,   40,   40,   40,
-      313,   40,  310,  305,  312,   40,  304,   40,  311,   40,
-       40,   40,   40,   40,  317,   40,  314,   40,  318,   40,
-       40,   40,  316,   40,  315,  319,  322,  320,  324,  321,
+       40,   40,  269,   40,   40,   40,  270,  274,  276,   40,
+       40,  273,  278,   40,   40,  279,   40,  286,  277,  280,
+      281,  282,  285,   40,   40,  288,   40,   40,  283,   40,
+       40,   40,  284,  290,  287,  292,  294,  295,  296,  289,
+       40,   40,  299,   40,   40,   40,  293,  291,   40,   40,
+      298,   40,   40,  300,  302,  297,   40,  301,   40,   40,
+       40,   40,  303,  306,  258,  258,  310,  311,   40,  304,
+       40,   40,  305,  309,   40,  312,  313,   40,   40,   40,
+       40,  308,   40,  307,   40,   40,  316,  320,   40,   40,
+       40,  314,   40,  321,   40,  317,  319,  318,  323,  325,
 
-      323,   40,  326,   40,   40,   40,   40,   40,  325,   40,
-       40,   40,  327,  328,  330,  331,  329,  333,   40,  334,
-      336,   40,   40,   40,   40,   40,   40,   40,  332,   40,
-      335,   40,  344,  342,  338,   40,  340,   40,   40,  339,
-      346,  337,  341,  347,  348,  345,   40,   40,  343,   40,
-       40,   40,   40,   40,   40,   40,  349,   40,   40,  350,
-       40,  351,  352,  353,  357,   40,   40,  360,  354,  356,
-      358,  362,  359,   40,  364,  355,   40,   40,  363,   40,
-       40,   40,  361,   40,   40,   40,   40,   40,  366,   40,
-      371,  374,   40,   40,  369,   40,  367,   40,  370,  365,
+      322,  327,   40,  329,   40,  324,  326,   40,   40,  328,
+       40,   40,   40,  330,   40,   40,   40,   40,   40,   40,
+      332,  334,  336,   40,  337,   40,   40,   40,  339,   40,
+      331,   40,  341,  333,  335,   40,  345,  338,  343,   40,
+      342,  340,  351,  344,  347,   40,   40,  348,   40,   40,
+       40,  346,   40,  350,  349,   40,   40,   40,   40,   40,
+       40,   40,  353,   40,  354,  355,   40,  352,  356,  360,
+       40,   40,  363,  357,  359,  361,  362,   40,   40,  367,
+      358,   40,  365,  366,   40,   40,   40,   40,  364,   40,
+       40,   40,  369,   40,  368,  374,   40,   40,  377,  372,
 
-      372,   40,  378,  368,   40,  376,   40,   40,  373,   40,
-      377,   40,  379,  381,   40,   40,  383,   40,  375,   40,
-       40,   40,   40,   40,  380,   40,  384,  386,  387,  391,
-      388,   40,  385,   40,  394,  382,  389,   40,  390,   40,
-      393,   40,   40,   40,   40,   40,   40,   40,   40,   40,
-       40,  392,  395,   37,   37,   37,   37,   39,   39,   50,
-       40,   50,   50,   40,   40,   40,   40,   40,   40,   40,
+       40,  370,  373,  375,   40,   40,   40,   40,  371,  381,
+      379,   40,   40,   40,  376,  380,  384,   40,   40,   40,
+       40,  386,   40,   40,  382,  378,   40,   40,  387,  383,
+      389,  390,  391,   40,  394,   40,   40,   40,  393,   40,
+      385,  388,   40,   40,  392,  397,   40,   40,   40,   40,
+      396,   40,   40,   40,   40,   40,  395,   40,  398,   37,
+       37,   37,   37,   39,   39,   50,   40,   50,   50,   40,
        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
 
        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
-       40,   40,   40,   40,   40,  188,   40,   40,   40,   40,
-      107,   40,   38,  396,    3,  396,  396,  396,  396,  396,
-      396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
-      396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
-      396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
-      396,  396,  396,  396,  396,  396
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,  189,   40,   40,   40,   40,  107,   40,   38,  399,
+        3,  399,  399,  399,  399,  399,  399,  399,  399,  399,
+      399,  399,  399,  399,  399,  399,  399,  399,  399,  399,
+      399,  399,  399,  399,  399,  399,  399,  399,  399,  399,
+      399,  399,  399,  399,  399,  399,  399,  399,  399,  399,
+      399,  399
     } ;
 
-static yyconst short int yy_chk[877] =
+static yyconst short int yy_chk[883] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -633,91 +634,92 @@
        19,   16,   18,   17,   13,   19,   17,   21,   22,   20,
        23,   24,   21,   25,   26,   27,   24,   22,   25,   20,
 
-       52,   28,   21,   22,   24,   31,   23,   23,   21,   24,
-       31,   54,   26,   28,   27,   52,   27,   25,   26,   28,
+       77,   28,   21,   22,   24,   31,   23,   23,   21,   24,
+       31,   54,   26,   28,   27,   77,   27,   25,   26,   28,
        30,   35,   30,   31,   33,   57,   31,   36,   30,   33,
        54,   30,   46,   31,   30,   46,   36,   42,   42,   35,
        43,   43,   33,   57,   68,   30,   30,   51,   30,   32,
-       59,   32,   44,   44,   44,   51,   56,   32,   45,   45,
-       45,   45,   68,  401,   32,   59,   32,   56,   32,   47,
-       47,   47,   59,   32,   47,   48,   48,   48,   48,   53,
-       47,   49,   49,   49,   63,   49,   49,   53,   49,   49,
-       49,   49,   49,   49,   60,   61,   62,   64,   65,   69,
+       52,   32,   44,   44,   44,   51,   56,   32,   45,   45,
+       45,   45,   68,   52,   32,   52,   32,   56,   32,   47,
+       47,   47,   63,   32,   47,   48,   48,   48,   48,   53,
+       47,   49,   49,   49,   59,   49,   49,   53,   49,   49,
+       49,   49,   49,   49,   60,   61,   62,   63,   64,   59,
 
-       66,   60,   67,   62,   70,   73,   65,   66,   69,   63,
-       61,   71,   61,   72,   74,   62,   75,   67,   79,   77,
-       74,   64,   78,   66,   67,   80,   76,   70,   73,   71,
-       73,   76,   72,   75,   77,   83,   84,   78,   85,   75,
-       80,   79,   86,   76,   87,   88,   90,   91,   83,   84,
-       92,  130,   89,   91,   85,   96,   97,  130,   93,   98,
-       88,   85,   95,   92,   90,   99,  101,   89,   88,   86,
-       89,   93,   87,   89,   96,   95,   98,  100,  101,   93,
-      103,  105,  399,   99,   97,  100,   95,  102,  106,  104,
-      100,  102,  102,  103,  104,  103,  109,  109,  100,  118,
+       65,   60,   66,   62,   67,   69,   59,   70,   65,   66,
+       61,   71,   61,   72,   69,   62,   73,   74,   83,   67,
+       75,   78,   64,   74,   79,   66,   67,   80,   76,   71,
+       70,   83,   72,   76,   85,   84,   78,   75,   86,   73,
+       87,   73,   80,   75,   88,   76,   90,   79,   84,   91,
+       85,   89,   97,   98,  404,   91,   96,   85,   92,   88,
+       93,   95,  109,  109,   90,   86,   89,   88,   87,   89,
+       98,   92,   89,   93,   95,   96,   99,  101,  100,  102,
+       97,   93,  103,  102,  102,   95,  100,  104,  105,  101,
+      106,  100,  104,  122,   99,  103,  102,  103,  119,  100,
 
-      110,  110,  105,  100,  102,  110,  116,  121,  118,  106,
-      122,  110,  112,  112,  112,  113,  113,  112,  113,  113,
-      113,  119,  121,  112,  116,  122,  123,  125,  126,  127,
-      128,  132,  133,  131,  119,  125,  134,  135,  136,  137,
-      132,  133,  138,  136,  127,  128,  131,  139,  137,  123,
-      126,  138,  140,  139,  141,  142,  143,  144,  134,  145,
-      135,  146,  148,  141,  147,  143,  151,  140,  152,  146,
-      154,  144,  158,  142,  159,  147,  167,  148,  183,  178,
-      166,  151,  145,  159,  162,  164,  183,  154,  152,  157,
-      157,  167,  178,  157,  157,  158,  157,  157,  157,  157,
+      402,  110,  110,  398,  100,  117,  110,  119,  122,  105,
+      127,  106,  110,  112,  112,  112,  113,  113,  112,  113,
+      113,  113,  116,  117,  112,  120,  123,  124,  126,  128,
+      129,  131,  127,  116,  132,  135,  126,  131,  120,  133,
+      134,  123,  136,  138,  128,  129,  137,  132,  133,  134,
+      124,  137,  138,  139,  140,  141,  143,  135,  142,  144,
+      140,  145,  139,  146,  147,  136,  148,  142,  144,  149,
+      141,  153,  147,  152,  143,  145,  155,  148,  160,  169,
+      192,  192,  168,  396,  149,  159,  146,  160,  152,  163,
+      169,  153,  165,  155,  158,  158,  167,  168,  158,  158,
 
-      157,  157,  160,  166,  168,  162,  164,  169,  172,  170,
-      173,  160,  171,  160,  175,  168,  177,  160,  170,  160,
-      174,  171,  176,  175,  179,  177,  169,  180,  181,  182,
-      184,  172,  180,  173,  185,  184,  187,  174,  182,  176,
-      189,  189,  179,  190,  190,  189,  190,  190,  185,  181,
-      195,  189,  191,  191,  187,  192,  192,  192,  193,  193,
-      193,  194,  196,  200,  201,  203,  202,  195,  194,  204,
-      200,  202,  205,  206,  207,  209,  208,  205,  203,  196,
-      210,  212,  209,  213,  204,  208,  215,  201,  213,  214,
-      216,  217,  206,  218,  219,  207,  212,  222,  214,  224,
+      161,  158,  158,  158,  158,  158,  158,  170,  159,  161,
+      163,  161,  171,  165,  172,  161,  173,  161,  174,  167,
+      175,  171,  176,  172,  178,  177,  170,  179,  180,  181,
+      182,  176,  195,  178,  181,  183,  186,  175,  185,  173,
+      179,  174,  177,  185,  183,  184,  180,  188,  266,  195,
+      186,  182,  203,  184,  266,  190,  190,  196,  191,  191,
+      190,  191,  191,  197,  196,  188,  190,  193,  193,  193,
+      194,  194,  194,  198,  202,  203,  205,  204,  206,  207,
+      197,  202,  204,  208,  207,  209,  210,  211,  212,  205,
+      198,  215,  214,  206,  211,  210,  215,  217,  218,  216,
 
-      229,  225,  395,  210,  216,  227,  217,  215,  233,  219,
-      228,  218,  230,  231,  227,  222,  232,  228,  234,  235,
-      229,  230,  231,  224,  225,  232,  235,  234,  237,  238,
-      241,  233,  243,  245,  247,  230,  231,  237,  244,  241,
-      246,  248,  249,  243,  238,  246,  245,  250,  244,  251,
-      253,  247,  255,  256,  256,  257,  258,  262,  250,  260,
-      257,  264,  248,  249,  258,  255,  260,  261,  263,  265,
-      264,  266,  261,  253,  263,  267,  251,  269,  262,  271,
-      272,  273,  274,  277,  269,  393,  265,  275,  271,  278,
-      283,  293,  267,  280,  266,  272,  275,  273,  278,  274,
+      219,  220,  208,  224,  226,  221,  209,  214,  216,  227,
+      230,  212,  218,  229,  231,  219,  232,  230,  217,  220,
+      221,  224,  229,  235,  233,  232,  234,  236,  226,  239,
+      237,  245,  227,  233,  231,  234,  236,  237,  239,  232,
+      240,  243,  245,  246,  247,  249,  235,  233,  250,  248,
+      243,  251,  252,  246,  248,  240,  253,  247,  255,  261,
+      257,  260,  249,  252,  258,  258,  260,  261,  263,  250,
+      265,  264,  251,  257,  269,  263,  264,  267,  268,  270,
+      272,  255,  276,  253,  274,  275,  267,  272,  277,  280,
+      278,  265,  281,  274,  283,  268,  270,  269,  276,  278,
 
-      277,  279,  280,  281,  292,  298,  294,  301,  279,  302,
-      299,  300,  281,  283,  293,  294,  292,  299,  304,  300,
-      302,  305,  306,  308,  311,  310,  312,  316,  298,  318,
-      301,  320,  316,  311,  305,  327,  308,  323,  321,  306,
-      320,  304,  310,  321,  323,  318,  332,  338,  312,  333,
-      339,  340,  341,  346,  344,  345,  327,  347,  348,  332,
-      349,  333,  338,  339,  345,  352,  350,  348,  340,  344,
-      346,  350,  347,  351,  352,  341,  353,  354,  351,  357,
-      358,  361,  349,  362,  363,  367,  368,  365,  354,  369,
-      363,  368,  370,  373,  361,  371,  357,  372,  362,  353,
+      275,  281,  282,  283,  284,  277,  280,  286,  295,  282,
+      296,  301,  297,  284,  304,  302,  303,  305,  307,  308,
+      295,  297,  302,  309,  303,  311,  313,  314,  305,  315,
+      286,  321,  308,  296,  301,  326,  314,  304,  311,  319,
+      309,  307,  326,  313,  319,  323,  330,  321,  324,  335,
+      341,  315,  336,  324,  323,  342,  343,  344,  349,  347,
+      348,  350,  335,  351,  336,  341,  352,  330,  342,  348,
+      355,  356,  351,  343,  347,  349,  350,  353,  354,  355,
+      344,  357,  353,  354,  360,  361,  364,  365,  352,  366,
+      368,  370,  357,  371,  356,  366,  372,  373,  371,  364,
 
-      365,  374,  372,  358,  375,  370,  376,  377,  367,  379,
-      371,  378,  373,  375,  380,  385,  377,  384,  369,  382,
-      386,  387,  388,  390,  374,  392,  378,  380,  382,  387,
-      384,  394,  379,  391,  392,  376,  385,  389,  386,  383,
-      390,  381,  366,  364,  360,  359,  356,  355,  343,  342,
-      337,  388,  394,  397,  397,  397,  397,  398,  398,  400,
-      336,  400,  400,  335,  334,  331,  330,  329,  328,  326,
-      325,  324,  322,  319,  317,  315,  314,  313,  309,  307,
-      303,  297,  296,  295,  291,  290,  289,  288,  287,  286,
-      285,  284,  282,  276,  270,  268,  259,  254,  252,  242,
+      374,  360,  365,  368,  375,  376,  377,  378,  361,  375,
+      373,  379,  380,  381,  370,  374,  378,  383,  382,  387,
+      389,  380,  385,  388,  376,  372,  390,  391,  381,  377,
+      383,  385,  387,  393,  390,  394,  395,  397,  389,  392,
+      379,  382,  386,  384,  388,  395,  369,  367,  363,  362,
+      393,  359,  358,  346,  345,  340,  391,  339,  397,  400,
+      400,  400,  400,  401,  401,  403,  338,  403,  403,  337,
+      334,  333,  332,  331,  329,  328,  327,  325,  322,  320,
+      318,  317,  316,  312,  310,  306,  300,  299,  298,  294,
+      293,  292,  291,  290,  289,  288,  287,  285,  279,  273,
 
-      240,  239,  236,  223,  221,  220,  211,  199,  198,  197,
-      186,  165,  163,  161,  156,  155,  153,  150,  149,  129,
-      124,  120,  117,  115,  111,  107,   94,   82,   58,   39,
-       37,    8,    7,    3,  396,  396,  396,  396,  396,  396,
-      396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
-      396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
-      396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
-      396,  396,  396,  396,  396,  396
+      271,  262,  259,  256,  254,  244,  242,  241,  238,  225,
+      223,  222,  213,  201,  200,  199,  187,  166,  164,  162,
+      157,  156,  154,  151,  150,  130,  125,  121,  118,  115,
+      111,  107,   94,   82,   58,   39,   37,    8,    7,    3,
+      399,  399,  399,  399,  399,  399,  399,  399,  399,  399,
+      399,  399,  399,  399,  399,  399,  399,  399,  399,  399,
+      399,  399,  399,  399,  399,  399,  399,  399,  399,  399,
+      399,  399,  399,  399,  399,  399,  399,  399,  399,  399,
+      399,  399
     } ;
 
 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
@@ -734,7 +736,7 @@
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
-#line 1 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 1 "/llvm/lib/AsmParser/Lexer.l"
 #define INITIAL 0
 /*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===//
 //
@@ -749,7 +751,7 @@
 //
 //===----------------------------------------------------------------------===*/
 #define YY_NEVER_INTERACTIVE 1
-#line 28 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 28 "/llvm/lib/AsmParser/Lexer.l"
 #include "ParserInternals.h"
 #include "llvm/Module.h"
 #include <list>
@@ -875,7 +877,7 @@
 /* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing
  * it to deal with 64 bit numbers.
  */
-#line 879 "Lexer.cpp"
+#line 881 "Lexer.cpp"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1023,13 +1025,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 179 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 179 "/llvm/lib/AsmParser/Lexer.l"
 
 
-#line 1033 "Lexer.cpp"
+#line 1035 "Lexer.cpp"
 
 	if ( yy_init )
 		{
@@ -1077,14 +1079,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 >= 397 )
+				if ( yy_current_state >= 400 )
 					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 != 396 );
+		while ( yy_current_state != 399 );
 
 yy_find_action:
 		yy_current_state = *--yy_state_ptr;
@@ -1122,441 +1124,446 @@
 	{ /* beginning of action switch */
 case 1:
 YY_RULE_SETUP
-#line 181 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 181 "/llvm/lib/AsmParser/Lexer.l"
 { /* Ignore comments for now */ }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 183 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 183 "/llvm/lib/AsmParser/Lexer.l"
 { return BEGINTOK; }
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 184 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 184 "/llvm/lib/AsmParser/Lexer.l"
 { return ENDTOK; }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 185 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 185 "/llvm/lib/AsmParser/Lexer.l"
 { return TRUETOK;  }
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 186 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 186 "/llvm/lib/AsmParser/Lexer.l"
 { return FALSETOK; }
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 187 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 187 "/llvm/lib/AsmParser/Lexer.l"
 { return DECLARE; }
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 188 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 188 "/llvm/lib/AsmParser/Lexer.l"
 { return GLOBAL; }
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 189 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 189 "/llvm/lib/AsmParser/Lexer.l"
 { return CONSTANT; }
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 190 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 190 "/llvm/lib/AsmParser/Lexer.l"
 { return INTERNAL; }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 191 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 191 "/llvm/lib/AsmParser/Lexer.l"
 { return LINKONCE; }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 192 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 192 "/llvm/lib/AsmParser/Lexer.l"
 { return WEAK; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 193 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 193 "/llvm/lib/AsmParser/Lexer.l"
 { return APPENDING; }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 194 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 194 "/llvm/lib/AsmParser/Lexer.l"
 { return EXTERNAL; }    /* Deprecated, turn into external */
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 195 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 195 "/llvm/lib/AsmParser/Lexer.l"
 { return EXTERNAL; }
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 196 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 196 "/llvm/lib/AsmParser/Lexer.l"
 { return IMPLEMENTATION; }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 197 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 197 "/llvm/lib/AsmParser/Lexer.l"
 { return ZEROINITIALIZER; }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 198 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 198 "/llvm/lib/AsmParser/Lexer.l"
 { return DOTDOTDOT; }
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 199 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 199 "/llvm/lib/AsmParser/Lexer.l"
 { return UNDEF; }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 200 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 200 "/llvm/lib/AsmParser/Lexer.l"
 { return NULL_TOK; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 201 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 201 "/llvm/lib/AsmParser/Lexer.l"
 { return TO; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 202 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 202 "/llvm/lib/AsmParser/Lexer.l"
 { RET_TOK(TermOpVal, Unwind, UNWIND); }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 203 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 203 "/llvm/lib/AsmParser/Lexer.l"
 { return NOT; }  /* Deprecated, turned into XOR */
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 204 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 204 "/llvm/lib/AsmParser/Lexer.l"
 { return TAIL; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 205 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 205 "/llvm/lib/AsmParser/Lexer.l"
 { return TARGET; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 206 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 206 "/llvm/lib/AsmParser/Lexer.l"
 { return TRIPLE; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 207 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 207 "/llvm/lib/AsmParser/Lexer.l"
 { return DEPLIBS; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 208 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 208 "/llvm/lib/AsmParser/Lexer.l"
 { return ENDIAN; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 209 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 209 "/llvm/lib/AsmParser/Lexer.l"
 { return POINTERSIZE; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 210 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 210 "/llvm/lib/AsmParser/Lexer.l"
 { return LITTLE; }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 211 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 211 "/llvm/lib/AsmParser/Lexer.l"
 { return BIG; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 212 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 212 "/llvm/lib/AsmParser/Lexer.l"
 { return VOLATILE; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 214 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 214 "/llvm/lib/AsmParser/Lexer.l"
 { return CC_TOK; }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 215 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 215 "/llvm/lib/AsmParser/Lexer.l"
 { return CCC_TOK; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 216 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 216 "/llvm/lib/AsmParser/Lexer.l"
 { return FASTCC_TOK; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 217 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 217 "/llvm/lib/AsmParser/Lexer.l"
 { return COLDCC_TOK; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 219 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 219 "/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.PrimType = Type::VoidTy  ; return VOID;   }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 220 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 220 "/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.PrimType = Type::BoolTy  ; return BOOL;   }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 221 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 221 "/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.PrimType = Type::SByteTy ; return SBYTE;  }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 222 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 222 "/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.PrimType = Type::UByteTy ; return UBYTE;  }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 223 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 223 "/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.PrimType = Type::ShortTy ; return SHORT;  }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 224 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 224 "/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.PrimType = Type::UShortTy; return USHORT; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 225 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 225 "/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.PrimType = Type::IntTy   ; return INT;    }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 226 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 226 "/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.PrimType = Type::UIntTy  ; return UINT;   }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 227 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 227 "/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.PrimType = Type::LongTy  ; return LONG;   }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 228 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 228 "/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.PrimType = Type::ULongTy ; return ULONG;  }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 229 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 229 "/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.PrimType = Type::FloatTy ; return FLOAT;  }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 230 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 230 "/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.PrimType = Type::DoubleTy; return DOUBLE; }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 231 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 231 "/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.PrimType = Type::LabelTy ; return LABEL;  }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 232 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 232 "/llvm/lib/AsmParser/Lexer.l"
 { return TYPE;   }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 233 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 233 "/llvm/lib/AsmParser/Lexer.l"
 { return OPAQUE; }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 235 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Add, ADD); }
+#line 234 "/llvm/lib/AsmParser/Lexer.l"
+{ return ALIGN;  }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 236 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Sub, SUB); }
+#line 236 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Add, ADD); }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 237 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Mul, MUL); }
+#line 237 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Sub, SUB); }
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 238 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Div, DIV); }
+#line 238 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Mul, MUL); }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 239 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Rem, REM); }
+#line 239 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Div, DIV); }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 240 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, And, AND); }
+#line 240 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Rem, REM); }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 241 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Or , OR ); }
+#line 241 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, And, AND); }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 242 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, Xor, XOR); }
+#line 242 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Or , OR ); }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 243 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, SetNE, SETNE); }
+#line 243 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, Xor, XOR); }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 244 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, SetEQ, SETEQ); }
+#line 244 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, SetNE, SETNE); }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 245 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, SetLT, SETLT); }
+#line 245 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, SetEQ, SETEQ); }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 246 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, SetGT, SETGT); }
+#line 246 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, SetLT, SETLT); }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 247 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, SetLE, SETLE); }
+#line 247 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, SetGT, SETGT); }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 248 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(BinaryOpVal, SetGE, SETGE); }
+#line 248 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, SetLE, SETLE); }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 250 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, PHI, PHI_TOK); }
+#line 249 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(BinaryOpVal, SetGE, SETGE); }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 251 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Call, CALL); }
+#line 251 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, PHI, PHI_TOK); }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 252 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Cast, CAST); }
+#line 252 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Call, CALL); }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 253 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Select, SELECT); }
+#line 253 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Cast, CAST); }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 254 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Shl, SHL); }
+#line 254 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Select, SELECT); }
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 255 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, Shr, SHR); }
+#line 255 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Shl, SHL); }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 256 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ return VANEXT_old; }
+#line 256 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, Shr, SHR); }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 257 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ return VAARG_old; }
+#line 257 "/llvm/lib/AsmParser/Lexer.l"
+{ return VANEXT_old; }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 258 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(OtherOpVal, VAArg , VAARG); }
+#line 258 "/llvm/lib/AsmParser/Lexer.l"
+{ return VAARG_old; }
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 259 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Ret, RET); }
+#line 259 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(OtherOpVal, VAArg , VAARG); }
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 260 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Br, BR); }
+#line 260 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Ret, RET); }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 261 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Switch, SWITCH); }
+#line 261 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Br, BR); }
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 262 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Invoke, INVOKE); }
+#line 262 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Switch, SWITCH); }
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 263 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Unwind, UNWIND); }
+#line 263 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Invoke, INVOKE); }
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 264 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(TermOpVal, Unreachable, UNREACHABLE); }
+#line 264 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Unwind, UNWIND); }
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 266 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Malloc, MALLOC); }
+#line 265 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(TermOpVal, Unreachable, UNREACHABLE); }
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 267 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Alloca, ALLOCA); }
+#line 267 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Malloc, MALLOC); }
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 268 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Free, FREE); }
+#line 268 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Alloca, ALLOCA); }
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 269 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Load, LOAD); }
+#line 269 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Free, FREE); }
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 270 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, Store, STORE); }
+#line 270 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Load, LOAD); }
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 271 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); }
+#line 271 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, Store, STORE); }
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 274 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 272 "/llvm/lib/AsmParser/Lexer.l"
+{ RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); }
+	YY_BREAK
+case 87:
+YY_RULE_SETUP
+#line 275 "/llvm/lib/AsmParser/Lexer.l"
 {
                   UnEscapeLexed(yytext+1);
                   llvmAsmlval.StrVal = strdup(yytext+1);             // Skip %
                   return VAR_ID;
                 }
 	YY_BREAK
-case 87:
+case 88:
 YY_RULE_SETUP
-#line 279 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 280 "/llvm/lib/AsmParser/Lexer.l"
 {
                   yytext[strlen(yytext)-1] = 0;  // nuke colon
                   UnEscapeLexed(yytext);
@@ -1564,9 +1571,9 @@
                   return LABELSTR;
                 }
 	YY_BREAK
-case 88:
+case 89:
 YY_RULE_SETUP
-#line 285 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 286 "/llvm/lib/AsmParser/Lexer.l"
 {
                   yytext[strlen(yytext)-2] = 0;  // nuke colon, end quote
                   UnEscapeLexed(yytext+1);
@@ -1574,9 +1581,9 @@
                   return LABELSTR;
                 }
 	YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 292 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 293 "/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
@@ -1587,14 +1594,14 @@
                    return STRINGCONSTANT;
                  }
 	YY_BREAK
-case 90:
-YY_RULE_SETUP
-#line 303 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ llvmAsmlval.UInt64Val = atoull(yytext); return EUINT64VAL; }
-	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 304 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 304 "/llvm/lib/AsmParser/Lexer.l"
+{ llvmAsmlval.UInt64Val = atoull(yytext); return EUINT64VAL; }
+	YY_BREAK
+case 92:
+YY_RULE_SETUP
+#line 305 "/llvm/lib/AsmParser/Lexer.l"
 {
                   uint64_t Val = atoull(yytext+1);
                   // +1:  we have bigger negative range
@@ -1604,17 +1611,17 @@
                   return ESINT64VAL;
                 }
 	YY_BREAK
-case 92:
+case 93:
 YY_RULE_SETUP
-#line 312 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 313 "/llvm/lib/AsmParser/Lexer.l"
 {
                    llvmAsmlval.UInt64Val = HexIntToVal(yytext+3);
                    return yytext[0] == 's' ? ESINT64VAL : EUINT64VAL;
                  }
 	YY_BREAK
-case 93:
+case 94:
 YY_RULE_SETUP
-#line 317 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 318 "/llvm/lib/AsmParser/Lexer.l"
 {
                   uint64_t Val = atoull(yytext+1);
                   if ((unsigned)Val != Val)
@@ -1623,9 +1630,9 @@
                   return UINTVAL;
                 }
 	YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 324 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 325 "/llvm/lib/AsmParser/Lexer.l"
 {
                   uint64_t Val = atoull(yytext+2);
                   // +1:  we have bigger negative range
@@ -1635,18 +1642,18 @@
                   return SINTVAL;
                 }
 	YY_BREAK
-case 95:
-YY_RULE_SETUP
-#line 333 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ llvmAsmlval.FPVal = atof(yytext); return FPVAL; }
-	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 334 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 334 "/llvm/lib/AsmParser/Lexer.l"
+{ llvmAsmlval.FPVal = atof(yytext); return FPVAL; }
+	YY_BREAK
+case 97:
+YY_RULE_SETUP
+#line 335 "/llvm/lib/AsmParser/Lexer.l"
 { llvmAsmlval.FPVal = HexToFP(yytext); return FPVAL; }
 	YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 336 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 337 "/llvm/lib/AsmParser/Lexer.l"
 {
                   /* Make sure to free the internal buffers for flex when we are
                    * done reading our input!
@@ -1655,22 +1662,22 @@
                   return EOF;
                 }
 	YY_BREAK
-case 97:
-YY_RULE_SETUP
-#line 344 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ /* Ignore whitespace */ }
-	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 345 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
-{ return yytext[0]; }
+#line 345 "/llvm/lib/AsmParser/Lexer.l"
+{ /* Ignore whitespace */ }
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 347 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 346 "/llvm/lib/AsmParser/Lexer.l"
+{ return yytext[0]; }
+	YY_BREAK
+case 100:
+YY_RULE_SETUP
+#line 348 "/llvm/lib/AsmParser/Lexer.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 1674 "Lexer.cpp"
+#line 1681 "Lexer.cpp"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -1957,7 +1964,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 >= 397 )
+			if ( yy_current_state >= 400 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1987,11 +1994,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 >= 397 )
+		if ( yy_current_state >= 400 )
 			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 == 396);
+	yy_is_jam = (yy_current_state == 399);
 	if ( ! yy_is_jam )
 		*yy_state_ptr++ = yy_current_state;
 
@@ -2046,7 +2053,6 @@
 #endif	/* ifndef YY_NO_UNPUT */
 
 
-#ifndef YY_NO_INPUT
 #ifdef __cplusplus
 static int yyinput()
 #else
@@ -2120,7 +2126,7 @@
 
 	return c;
 	}
-#endif /* YY_NO_INPUT */
+
 
 #ifdef YY_USE_PROTOS
 void yyrestart( FILE *input_file )
@@ -2231,6 +2237,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 )
@@ -2548,5 +2559,5 @@
 	return 0;
 	}
 #endif
-#line 347 "/proj/llvm/build/../llvm/lib/AsmParser/Lexer.l"
+#line 348 "/llvm/lib/AsmParser/Lexer.l"
 
diff --git a/lib/AsmParser/Lexer.l b/lib/AsmParser/Lexer.l
index f9866f2..2102a93 100644
--- a/lib/AsmParser/Lexer.l
+++ b/lib/AsmParser/Lexer.l
@@ -231,6 +231,7 @@
 label           { llvmAsmlval.PrimType = Type::LabelTy ; return LABEL;  }
 type            { return TYPE;   }
 opaque          { return OPAQUE; }
+align           { return ALIGN;  }
 
 add             { RET_TOK(BinaryOpVal, Add, ADD); }
 sub             { RET_TOK(BinaryOpVal, Sub, SUB); }
diff --git a/lib/AsmParser/llvmAsmParser.cpp b/lib/AsmParser/llvmAsmParser.cpp
index 92e0a39..953fce8 100644
--- a/lib/AsmParser/llvmAsmParser.cpp
+++ b/lib/AsmParser/llvmAsmParser.cpp
@@ -1,257 +1,110 @@
-/* A Bison parser, made by GNU Bison 1.875d.  */
 
-/* Skeleton parser for Yacc-like parsing with Bison,
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+/*  A Bison parser, made from /llvm/lib/AsmParser/llvmAsmParser.y
+    by GNU Bison version 1.28  */
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
+#define YYBISON 1  /* Identify Bison output.  */
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
-
-/* Written by Richard Stallman by simplifying the original so called
-   ``semantic'' parser.  */
-
-/* All symbols defined below should begin with yy or YY, to avoid
-   infringing on user name space.  This should be done even for local
-   variables, as they might otherwise be expanded by user macros.
-   There are some unavoidable exceptions within include files to
-   define necessary library symbols; they are noted "INFRINGES ON
-   USER NAME SPACE" below.  */
-
-/* Identify Bison output.  */
-#define YYBISON 1
-
-/* Skeleton name.  */
-#define YYSKELETON_NAME "yacc.c"
-
-/* Pure parsers.  */
-#define YYPURE 0
-
-/* Using locations.  */
-#define YYLSP_NEEDED 0
-
-/* If NAME_PREFIX is specified substitute the variables and functions
-   names.  */
 #define yyparse llvmAsmparse
-#define yylex   llvmAsmlex
+#define yylex llvmAsmlex
 #define yyerror llvmAsmerror
-#define yylval  llvmAsmlval
-#define yychar  llvmAsmchar
+#define yylval llvmAsmlval
+#define yychar llvmAsmchar
 #define yydebug llvmAsmdebug
 #define yynerrs llvmAsmnerrs
+#define	ESINT64VAL	257
+#define	EUINT64VAL	258
+#define	SINTVAL	259
+#define	UINTVAL	260
+#define	FPVAL	261
+#define	VOID	262
+#define	BOOL	263
+#define	SBYTE	264
+#define	UBYTE	265
+#define	SHORT	266
+#define	USHORT	267
+#define	INT	268
+#define	UINT	269
+#define	LONG	270
+#define	ULONG	271
+#define	FLOAT	272
+#define	DOUBLE	273
+#define	TYPE	274
+#define	LABEL	275
+#define	VAR_ID	276
+#define	LABELSTR	277
+#define	STRINGCONSTANT	278
+#define	IMPLEMENTATION	279
+#define	ZEROINITIALIZER	280
+#define	TRUETOK	281
+#define	FALSETOK	282
+#define	BEGINTOK	283
+#define	ENDTOK	284
+#define	DECLARE	285
+#define	GLOBAL	286
+#define	CONSTANT	287
+#define	VOLATILE	288
+#define	TO	289
+#define	DOTDOTDOT	290
+#define	NULL_TOK	291
+#define	UNDEF	292
+#define	CONST	293
+#define	INTERNAL	294
+#define	LINKONCE	295
+#define	WEAK	296
+#define	APPENDING	297
+#define	OPAQUE	298
+#define	NOT	299
+#define	EXTERNAL	300
+#define	TARGET	301
+#define	TRIPLE	302
+#define	ENDIAN	303
+#define	POINTERSIZE	304
+#define	LITTLE	305
+#define	BIG	306
+#define	ALIGN	307
+#define	DEPLIBS	308
+#define	CALL	309
+#define	TAIL	310
+#define	CC_TOK	311
+#define	CCC_TOK	312
+#define	FASTCC_TOK	313
+#define	COLDCC_TOK	314
+#define	RET	315
+#define	BR	316
+#define	SWITCH	317
+#define	INVOKE	318
+#define	UNWIND	319
+#define	UNREACHABLE	320
+#define	ADD	321
+#define	SUB	322
+#define	MUL	323
+#define	DIV	324
+#define	REM	325
+#define	AND	326
+#define	OR	327
+#define	XOR	328
+#define	SETLE	329
+#define	SETGE	330
+#define	SETLT	331
+#define	SETGT	332
+#define	SETEQ	333
+#define	SETNE	334
+#define	MALLOC	335
+#define	ALLOCA	336
+#define	FREE	337
+#define	LOAD	338
+#define	STORE	339
+#define	GETELEMENTPTR	340
+#define	PHI_TOK	341
+#define	CAST	342
+#define	SELECT	343
+#define	SHL	344
+#define	SHR	345
+#define	VAARG	346
+#define	VAARG_old	347
+#define	VANEXT_old	348
 
-
-/* Tokens.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     ESINT64VAL = 258,
-     EUINT64VAL = 259,
-     SINTVAL = 260,
-     UINTVAL = 261,
-     FPVAL = 262,
-     VOID = 263,
-     BOOL = 264,
-     SBYTE = 265,
-     UBYTE = 266,
-     SHORT = 267,
-     USHORT = 268,
-     INT = 269,
-     UINT = 270,
-     LONG = 271,
-     ULONG = 272,
-     FLOAT = 273,
-     DOUBLE = 274,
-     TYPE = 275,
-     LABEL = 276,
-     VAR_ID = 277,
-     LABELSTR = 278,
-     STRINGCONSTANT = 279,
-     IMPLEMENTATION = 280,
-     ZEROINITIALIZER = 281,
-     TRUETOK = 282,
-     FALSETOK = 283,
-     BEGINTOK = 284,
-     ENDTOK = 285,
-     DECLARE = 286,
-     GLOBAL = 287,
-     CONSTANT = 288,
-     VOLATILE = 289,
-     TO = 290,
-     DOTDOTDOT = 291,
-     NULL_TOK = 292,
-     UNDEF = 293,
-     CONST = 294,
-     INTERNAL = 295,
-     LINKONCE = 296,
-     WEAK = 297,
-     APPENDING = 298,
-     OPAQUE = 299,
-     NOT = 300,
-     EXTERNAL = 301,
-     TARGET = 302,
-     TRIPLE = 303,
-     ENDIAN = 304,
-     POINTERSIZE = 305,
-     LITTLE = 306,
-     BIG = 307,
-     DEPLIBS = 308,
-     CALL = 309,
-     TAIL = 310,
-     CC_TOK = 311,
-     CCC_TOK = 312,
-     FASTCC_TOK = 313,
-     COLDCC_TOK = 314,
-     RET = 315,
-     BR = 316,
-     SWITCH = 317,
-     INVOKE = 318,
-     UNWIND = 319,
-     UNREACHABLE = 320,
-     ADD = 321,
-     SUB = 322,
-     MUL = 323,
-     DIV = 324,
-     REM = 325,
-     AND = 326,
-     OR = 327,
-     XOR = 328,
-     SETLE = 329,
-     SETGE = 330,
-     SETLT = 331,
-     SETGT = 332,
-     SETEQ = 333,
-     SETNE = 334,
-     MALLOC = 335,
-     ALLOCA = 336,
-     FREE = 337,
-     LOAD = 338,
-     STORE = 339,
-     GETELEMENTPTR = 340,
-     PHI_TOK = 341,
-     CAST = 342,
-     SELECT = 343,
-     SHL = 344,
-     SHR = 345,
-     VAARG = 346,
-     VAARG_old = 347,
-     VANEXT_old = 348
-   };
-#endif
-#define ESINT64VAL 258
-#define EUINT64VAL 259
-#define SINTVAL 260
-#define UINTVAL 261
-#define FPVAL 262
-#define VOID 263
-#define BOOL 264
-#define SBYTE 265
-#define UBYTE 266
-#define SHORT 267
-#define USHORT 268
-#define INT 269
-#define UINT 270
-#define LONG 271
-#define ULONG 272
-#define FLOAT 273
-#define DOUBLE 274
-#define TYPE 275
-#define LABEL 276
-#define VAR_ID 277
-#define LABELSTR 278
-#define STRINGCONSTANT 279
-#define IMPLEMENTATION 280
-#define ZEROINITIALIZER 281
-#define TRUETOK 282
-#define FALSETOK 283
-#define BEGINTOK 284
-#define ENDTOK 285
-#define DECLARE 286
-#define GLOBAL 287
-#define CONSTANT 288
-#define VOLATILE 289
-#define TO 290
-#define DOTDOTDOT 291
-#define NULL_TOK 292
-#define UNDEF 293
-#define CONST 294
-#define INTERNAL 295
-#define LINKONCE 296
-#define WEAK 297
-#define APPENDING 298
-#define OPAQUE 299
-#define NOT 300
-#define EXTERNAL 301
-#define TARGET 302
-#define TRIPLE 303
-#define ENDIAN 304
-#define POINTERSIZE 305
-#define LITTLE 306
-#define BIG 307
-#define DEPLIBS 308
-#define CALL 309
-#define TAIL 310
-#define CC_TOK 311
-#define CCC_TOK 312
-#define FASTCC_TOK 313
-#define COLDCC_TOK 314
-#define RET 315
-#define BR 316
-#define SWITCH 317
-#define INVOKE 318
-#define UNWIND 319
-#define UNREACHABLE 320
-#define ADD 321
-#define SUB 322
-#define MUL 323
-#define DIV 324
-#define REM 325
-#define AND 326
-#define OR 327
-#define XOR 328
-#define SETLE 329
-#define SETGE 330
-#define SETLT 331
-#define SETGT 332
-#define SETEQ 333
-#define SETNE 334
-#define MALLOC 335
-#define ALLOCA 336
-#define FREE 337
-#define LOAD 338
-#define STORE 339
-#define GETELEMENTPTR 340
-#define PHI_TOK 341
-#define CAST 342
-#define SELECT 343
-#define SHL 344
-#define SHR 345
-#define VAARG 346
-#define VAARG_old 347
-#define VANEXT_old 348
-
-
-
-
-/* Copy the first part of user declarations.  */
-#line 14 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
+#line 14 "/llvm/lib/AsmParser/llvmAsmParser.y"
 
 #include "ParserInternals.h"
 #include "llvm/CallingConv.h"
@@ -1103,23 +956,8 @@
 }
 
 
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 866 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-typedef union YYSTYPE {
+#line 866 "/llvm/lib/AsmParser/llvmAsmParser.y"
+typedef union {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
   std::pair<llvm::PATypeHolder*, char*>  *ArgVal;
@@ -1158,1235 +996,948 @@
   llvm::Instruction::OtherOps             OtherOpVal;
   llvm::Module::Endianness                Endianness;
 } YYSTYPE;
-/* Line 191 of yacc.c.  */
-#line 1163 "llvmAsmParser.tab.c"
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
+#include <stdio.h>
+
+#ifndef __cplusplus
+#ifndef __STDC__
+#define const
+#endif
 #endif
 
 
 
-/* Copy the second part of user declarations.  */
+#define	YYFINAL		429
+#define	YYFLAG		-32768
+#define	YYNTBASE	109
 
+#define YYTRANSLATE(x) ((unsigned)(x) <= 348 ? yytranslate[x] : 170)
 
-/* Line 214 of yacc.c.  */
-#line 1175 "llvmAsmParser.tab.c"
+static const char yytranslate[] = {     0,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,    97,
+    98,   106,     2,   107,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,   102,
+    95,   103,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+    99,    96,   101,     2,     2,     2,     2,     2,   108,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,   100,
+     2,     2,   104,     2,   105,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
+     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+    87,    88,    89,    90,    91,    92,    93,    94
+};
 
-#if ! defined (yyoverflow) || YYERROR_VERBOSE
+#if YYDEBUG != 0
+static const short yyprhs[] = {     0,
+     0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
+    20,    22,    24,    26,    28,    30,    32,    34,    36,    38,
+    40,    42,    44,    46,    48,    50,    52,    54,    56,    58,
+    60,    62,    64,    67,    68,    70,    72,    74,    76,    77,
+    78,    80,    82,    84,    87,    89,    91,    93,    95,    97,
+    99,   101,   103,   105,   107,   109,   111,   113,   115,   117,
+   119,   121,   123,   125,   127,   129,   132,   137,   143,   149,
+   153,   156,   159,   161,   165,   167,   171,   173,   174,   179,
+   183,   187,   192,   197,   201,   204,   207,   210,   213,   216,
+   219,   222,   225,   228,   231,   238,   244,   253,   260,   267,
+   274,   281,   285,   287,   289,   291,   293,   296,   299,   302,
+   304,   309,   312,   318,   324,   328,   333,   334,   336,   338,
+   342,   346,   350,   354,   358,   360,   361,   363,   365,   367,
+   368,   371,   375,   377,   379,   383,   385,   386,   393,   395,
+   397,   401,   403,   405,   408,   409,   413,   415,   417,   419,
+   421,   423,   425,   427,   431,   433,   435,   437,   439,   441,
+   444,   447,   450,   454,   457,   458,   460,   463,   466,   470,
+   480,   490,   499,   513,   515,   517,   524,   530,   533,   540,
+   548,   550,   554,   556,   557,   560,   562,   568,   574,   580,
+   583,   588,   593,   600,   605,   610,   615,   618,   626,   628,
+   631,   632,   634,   635,   638,   644,   650,   659,   662,   668,
+   674,   683,   686,   691,   698
+};
 
-# ifndef YYFREE
-#  define YYFREE free
-# endif
-# ifndef YYMALLOC
-#  define YYMALLOC malloc
-# endif
-
-/* The parser invokes alloca or malloc; define the necessary symbols.  */
-
-# ifdef YYSTACK_USE_ALLOCA
-#  if YYSTACK_USE_ALLOCA
-#   define YYSTACK_ALLOC alloca
-#  endif
-# else
-#  if defined (alloca) || defined (_ALLOCA_H)
-#   define YYSTACK_ALLOC alloca
-#  else
-#   ifdef __GNUC__
-#    define YYSTACK_ALLOC __builtin_alloca
-#   endif
-#  endif
-# endif
-
-# 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
-#  endif
-#  define YYSTACK_ALLOC YYMALLOC
-#  define YYSTACK_FREE YYFREE
-# endif
-#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-
-
-#if (! defined (yyoverflow) \
-     && (! defined (__cplusplus) \
-	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member.  */
-union yyalloc
-{
-  short int yyss;
-  YYSTYPE yyvs;
-  };
-
-/* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
-   N elements.  */
-# define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
-      + YYSTACK_GAP_MAXIMUM)
-
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined (__GNUC__) && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  register YYSIZE_T yyi;		\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (0)
-#  endif
-# endif
-
-/* Relocate STACK from its old location to the new one.  The
-   local variables YYSIZE and YYSTACKSIZE give the old and new number of
-   elements in the stack, and YYPTR gives the new location of the
-   stack.  Advance YYPTR to a properly aligned location for the next
-   stack.  */
-# define YYSTACK_RELOCATE(Stack)					\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack, Stack, yysize);				\
-	Stack = &yyptr->Stack;						\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (0)
+static const short yyrhs[] = {     5,
+     0,     6,     0,     3,     0,     4,     0,    67,     0,    68,
+     0,    69,     0,    70,     0,    71,     0,    72,     0,    73,
+     0,    74,     0,    75,     0,    76,     0,    77,     0,    78,
+     0,    79,     0,    80,     0,    90,     0,    91,     0,    16,
+     0,    14,     0,    12,     0,    10,     0,    17,     0,    15,
+     0,    13,     0,    11,     0,   115,     0,   116,     0,    18,
+     0,    19,     0,   140,    95,     0,     0,    40,     0,    41,
+     0,    42,     0,    43,     0,     0,     0,    58,     0,    59,
+     0,    60,     0,    57,     4,     0,   124,     0,     8,     0,
+   126,     0,     8,     0,   126,     0,     9,     0,    10,     0,
+    11,     0,    12,     0,    13,     0,    14,     0,    15,     0,
+    16,     0,    17,     0,    18,     0,    19,     0,    20,     0,
+    21,     0,    44,     0,   125,     0,   153,     0,    96,     4,
+     0,   123,    97,   128,    98,     0,    99,     4,   100,   126,
+   101,     0,   102,     4,   100,   126,   103,     0,   104,   127,
+   105,     0,   104,   105,     0,   126,   106,     0,   126,     0,
+   127,   107,   126,     0,   127,     0,   127,   107,    36,     0,
+    36,     0,     0,   124,    99,   131,   101,     0,   124,    99,
+   101,     0,   124,   108,    24,     0,   124,   102,   131,   103,
+     0,   124,   104,   131,   105,     0,   124,   104,   105,     0,
+   124,    37,     0,   124,    38,     0,   124,   153,     0,   124,
+   130,     0,   124,    26,     0,   115,   110,     0,   116,     4,
+     0,     9,    27,     0,     9,    28,     0,   118,     7,     0,
+    88,    97,   129,    35,   124,    98,     0,    86,    97,   129,
+   167,    98,     0,    89,    97,   129,   107,   129,   107,   129,
+    98,     0,   111,    97,   129,   107,   129,    98,     0,   112,
+    97,   129,   107,   129,    98,     0,   113,    97,   129,   107,
+   129,    98,     0,   114,    97,   129,   107,   129,    98,     0,
+   131,   107,   129,     0,   129,     0,    32,     0,    33,     0,
+   134,     0,   134,   149,     0,   134,   150,     0,   134,    25,
+     0,   135,     0,   135,   119,    20,   122,     0,   135,   150,
+     0,   135,   119,   120,   132,   129,     0,   135,   119,    46,
+   132,   124,     0,   135,    47,   137,     0,   135,    54,    95,
+   138,     0,     0,    52,     0,    51,     0,    49,    95,   136,
+     0,    50,    95,     4,     0,    48,    95,    24,     0,    99,
+   139,   101,     0,   139,   107,    24,     0,    24,     0,     0,
+    22,     0,    24,     0,   140,     0,     0,   124,   141,     0,
+   143,   107,   142,     0,   142,     0,   143,     0,   143,   107,
+    36,     0,    36,     0,     0,   121,   122,   140,    97,   144,
+    98,     0,    29,     0,   104,     0,   120,   145,   146,     0,
+    30,     0,   105,     0,   156,   148,     0,     0,    31,   151,
+   145,     0,     3,     0,     4,     0,     7,     0,    27,     0,
+    28,     0,    37,     0,    38,     0,   102,   131,   103,     0,
+   130,     0,   109,     0,   140,     0,   153,     0,   152,     0,
+   124,   154,     0,   156,   157,     0,   147,   157,     0,   158,
+   119,   159,     0,   158,   161,     0,     0,    23,     0,    61,
+   155,     0,    61,     8,     0,    62,    21,   154,     0,    62,
+     9,   154,   107,    21,   154,   107,    21,   154,     0,    63,
+   117,   154,   107,    21,   154,    99,   160,   101,     0,    63,
+   117,   154,   107,    21,   154,    99,   101,     0,    64,   121,
+   122,   154,    97,   164,    98,    35,    21,   154,    65,    21,
+   154,     0,    65,     0,    66,     0,   160,   117,   152,   107,
+    21,   154,     0,   117,   152,   107,    21,   154,     0,   119,
+   166,     0,   124,    99,   154,   107,   154,   101,     0,   162,
+   107,    99,   154,   107,   154,   101,     0,   155,     0,   163,
+   107,   155,     0,   163,     0,     0,    56,    55,     0,    55,
+     0,   111,   124,   154,   107,   154,     0,   112,   124,   154,
+   107,   154,     0,   113,   124,   154,   107,   154,     0,    45,
+   155,     0,   114,   155,   107,   155,     0,    88,   155,    35,
+   124,     0,    89,   155,   107,   155,   107,   155,     0,    92,
+   155,   107,   124,     0,    93,   155,   107,   124,     0,    94,
+   155,   107,   124,     0,    87,   162,     0,   165,   121,   122,
+   154,    97,   164,    98,     0,   169,     0,   107,   163,     0,
+     0,    34,     0,     0,    81,   124,     0,    81,   124,   107,
+    53,     4,     0,    81,   124,   107,    15,   154,     0,    81,
+   124,   107,    15,   154,   107,    53,     4,     0,    82,   124,
+     0,    82,   124,   107,    53,     4,     0,    82,   124,   107,
+    15,   154,     0,    82,   124,   107,    15,   154,   107,    53,
+     4,     0,    83,   155,     0,   168,    84,   124,   154,     0,
+   168,    85,   155,   107,   124,   154,     0,    86,   124,   154,
+   167,     0
+};
 
 #endif
 
-#if defined (__STDC__) || defined (__cplusplus)
-   typedef signed char yysigned_char;
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+   983,   984,   991,   992,  1001,  1001,  1001,  1001,  1001,  1002,
+  1002,  1002,  1003,  1003,  1003,  1003,  1003,  1003,  1005,  1005,
+  1009,  1009,  1009,  1009,  1010,  1010,  1010,  1010,  1011,  1011,
+  1012,  1012,  1015,  1018,  1022,  1022,  1023,  1024,  1025,  1028,
+  1028,  1029,  1030,  1031,  1045,  1045,  1046,  1046,  1048,  1057,
+  1057,  1057,  1057,  1057,  1057,  1057,  1058,  1058,  1058,  1058,
+  1058,  1058,  1059,  1062,  1065,  1071,  1078,  1090,  1094,  1105,
+  1114,  1117,  1125,  1129,  1134,  1135,  1138,  1141,  1151,  1176,
+  1189,  1217,  1242,  1262,  1274,  1283,  1287,  1346,  1352,  1360,
+  1365,  1370,  1373,  1376,  1383,  1393,  1424,  1431,  1452,  1459,
+  1464,  1474,  1477,  1484,  1484,  1494,  1501,  1505,  1508,  1511,
+  1524,  1544,  1546,  1550,  1554,  1556,  1558,  1563,  1564,  1566,
+  1569,  1577,  1582,  1584,  1588,  1592,  1600,  1600,  1601,  1601,
+  1603,  1609,  1614,  1620,  1623,  1628,  1632,  1636,  1716,  1716,
+  1718,  1726,  1726,  1728,  1732,  1732,  1741,  1744,  1747,  1750,
+  1753,  1756,  1759,  1762,  1786,  1793,  1796,  1801,  1801,  1807,
+  1811,  1814,  1822,  1831,  1835,  1845,  1856,  1859,  1862,  1865,
+  1868,  1882,  1886,  1939,  1942,  1948,  1956,  1966,  1973,  1978,
+  1985,  1989,  1995,  1995,  1997,  2000,  2006,  2018,  2026,  2036,
+  2048,  2055,  2062,  2069,  2074,  2093,  2115,  2129,  2186,  2192,
+  2194,  2198,  2201,  2207,  2211,  2215,  2219,  2223,  2227,  2231,
+  2235,  2239,  2246,  2256,  2269
+};
+#endif
+
+
+#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
+
+static const char * const yytname[] = {   "$","error","$undefined.","ESINT64VAL",
+"EUINT64VAL","SINTVAL","UINTVAL","FPVAL","VOID","BOOL","SBYTE","UBYTE","SHORT",
+"USHORT","INT","UINT","LONG","ULONG","FLOAT","DOUBLE","TYPE","LABEL","VAR_ID",
+"LABELSTR","STRINGCONSTANT","IMPLEMENTATION","ZEROINITIALIZER","TRUETOK","FALSETOK",
+"BEGINTOK","ENDTOK","DECLARE","GLOBAL","CONSTANT","VOLATILE","TO","DOTDOTDOT",
+"NULL_TOK","UNDEF","CONST","INTERNAL","LINKONCE","WEAK","APPENDING","OPAQUE",
+"NOT","EXTERNAL","TARGET","TRIPLE","ENDIAN","POINTERSIZE","LITTLE","BIG","ALIGN",
+"DEPLIBS","CALL","TAIL","CC_TOK","CCC_TOK","FASTCC_TOK","COLDCC_TOK","RET","BR",
+"SWITCH","INVOKE","UNWIND","UNREACHABLE","ADD","SUB","MUL","DIV","REM","AND",
+"OR","XOR","SETLE","SETGE","SETLT","SETGT","SETEQ","SETNE","MALLOC","ALLOCA",
+"FREE","LOAD","STORE","GETELEMENTPTR","PHI_TOK","CAST","SELECT","SHL","SHR",
+"VAARG","VAARG_old","VANEXT_old","'='","'\\\\'","'('","')'","'['","'x'","']'",
+"'<'","'>'","'{'","'}'","'*'","','","'c'","INTVAL","EINT64VAL","ArithmeticOps",
+"LogicalOps","SetCondOps","ShiftOps","SIntType","UIntType","IntType","FPType",
+"OptAssign","OptLinkage","OptCallingConv","TypesV","UpRTypesV","Types","PrimType",
+"UpRTypes","TypeListI","ArgTypeListI","ConstVal","ConstExpr","ConstVector","GlobalType",
+"Module","FunctionList","ConstPool","BigOrLittle","TargetDefinition","LibrariesDefinition",
+"LibList","Name","OptName","ArgVal","ArgListH","ArgList","FunctionHeaderH","BEGIN",
+"FunctionHeader","END","Function","FunctionProto","@1","ConstValueRef","SymbolicValueRef",
+"ValueRef","ResolvedVal","BasicBlockList","BasicBlock","InstructionList","BBTerminatorInst",
+"JumpTable","Inst","PHIList","ValueRefList","ValueRefListE","OptTailCall","InstVal",
+"IndexList","OptVolatile","MemoryInst", NULL
+};
+#endif
+
+static const short yyr1[] = {     0,
+   109,   109,   110,   110,   111,   111,   111,   111,   111,   112,
+   112,   112,   113,   113,   113,   113,   113,   113,   114,   114,
+   115,   115,   115,   115,   116,   116,   116,   116,   117,   117,
+   118,   118,   119,   119,   120,   120,   120,   120,   120,   121,
+   121,   121,   121,   121,   122,   122,   123,   123,   124,   125,
+   125,   125,   125,   125,   125,   125,   125,   125,   125,   125,
+   125,   125,   126,   126,   126,   126,   126,   126,   126,   126,
+   126,   126,   127,   127,   128,   128,   128,   128,   129,   129,
+   129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+   129,   129,   129,   129,   130,   130,   130,   130,   130,   130,
+   130,   131,   131,   132,   132,   133,   134,   134,   134,   134,
+   135,   135,   135,   135,   135,   135,   135,   136,   136,   137,
+   137,   137,   138,   139,   139,   139,   140,   140,   141,   141,
+   142,   143,   143,   144,   144,   144,   144,   145,   146,   146,
+   147,   148,   148,   149,   151,   150,   152,   152,   152,   152,
+   152,   152,   152,   152,   152,   153,   153,   154,   154,   155,
+   156,   156,   157,   158,   158,   158,   159,   159,   159,   159,
+   159,   159,   159,   159,   159,   160,   160,   161,   162,   162,
+   163,   163,   164,   164,   165,   165,   166,   166,   166,   166,
+   166,   166,   166,   166,   166,   166,   166,   166,   166,   167,
+   167,   168,   168,   169,   169,   169,   169,   169,   169,   169,
+   169,   169,   169,   169,   169
+};
+
+static const short yyr2[] = {     0,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     2,     0,     1,     1,     1,     1,     0,     0,
+     1,     1,     1,     2,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     2,     4,     5,     5,     3,
+     2,     2,     1,     3,     1,     3,     1,     0,     4,     3,
+     3,     4,     4,     3,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     6,     5,     8,     6,     6,     6,
+     6,     3,     1,     1,     1,     1,     2,     2,     2,     1,
+     4,     2,     5,     5,     3,     4,     0,     1,     1,     3,
+     3,     3,     3,     3,     1,     0,     1,     1,     1,     0,
+     2,     3,     1,     1,     3,     1,     0,     6,     1,     1,
+     3,     1,     1,     2,     0,     3,     1,     1,     1,     1,
+     1,     1,     1,     3,     1,     1,     1,     1,     1,     2,
+     2,     2,     3,     2,     0,     1,     2,     2,     3,     9,
+     9,     8,    13,     1,     1,     6,     5,     2,     6,     7,
+     1,     3,     1,     0,     2,     1,     5,     5,     5,     2,
+     4,     4,     6,     4,     4,     4,     2,     7,     1,     2,
+     0,     1,     0,     2,     5,     5,     8,     2,     5,     5,
+     8,     2,     4,     6,     4
+};
+
+static const short yydefact[] = {   117,
+    39,   110,   109,   145,    35,    36,    37,    38,    40,   165,
+   107,   108,   165,   127,   128,     0,     0,    39,     0,   112,
+    40,     0,    41,    42,    43,     0,     0,   166,   162,    34,
+   142,   143,   144,   161,     0,     0,     0,   115,     0,     0,
+     0,     0,    33,   146,    44,     1,     2,    46,    50,    51,
+    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+    62,    63,     0,     0,     0,     0,   156,     0,     0,    45,
+    64,    49,   157,    65,   139,   140,   141,   203,   164,     0,
+     0,     0,   126,   116,   111,   104,   105,     0,     0,    66,
+     0,     0,    48,    71,    73,     0,     0,    78,    72,   202,
+     0,   186,     0,     0,     0,     0,    40,   174,   175,     5,
+     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,     0,     0,     0,     0,     0,     0,     0,
+    19,    20,     0,     0,     0,     0,     0,     0,     0,   163,
+    40,   178,     0,   199,   122,   119,   118,   120,   121,   125,
+     0,   114,    50,    51,    52,    53,    54,    55,    56,    57,
+    58,    59,    60,     0,     0,     0,     0,   113,     0,     0,
+    70,     0,   137,    77,    75,     0,     0,   190,   185,   168,
+   167,     0,     0,    24,    28,    23,    27,    22,    26,    21,
+    25,    29,    30,     0,     0,   204,   208,   212,     0,     0,
+   197,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   123,     0,    92,    93,     3,     4,    90,
+    91,    94,    89,    85,    86,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    88,    87,    47,    47,
+    74,   136,   130,   133,   134,     0,     0,    67,   147,   148,
+   149,   150,   151,   152,   153,     0,   155,   159,   158,   160,
+     0,   169,     0,     0,     0,     0,   201,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   124,     0,     0,     0,    80,   103,     0,     0,    84,
+     0,    81,     0,     0,     0,     0,    68,    69,   129,   131,
+     0,   138,    76,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   215,     0,     0,   192,     0,   194,   195,   196,
+     0,     0,     0,   191,     0,   213,     0,   201,     0,     0,
+    79,     0,    82,    83,     0,     0,     0,     0,   135,   132,
+   154,     0,     0,   184,   206,   205,   210,   209,   181,   200,
+     0,     0,     0,   187,   188,   189,   184,     0,     0,     0,
+     0,   102,     0,     0,     0,     0,     0,     0,   183,     0,
+     0,     0,     0,     0,     0,   193,     0,   214,    96,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   182,   179,     0,   198,    95,     0,    98,    99,   100,   101,
+     0,   172,     0,     0,     0,   207,   211,   180,     0,   170,
+     0,   171,     0,     0,    97,     0,     0,     0,     0,     0,
+     0,   177,     0,     0,   176,   173,     0,     0,     0
+};
+
+static const short yydefgoto[] = {    67,
+   220,   233,   234,   235,   236,   164,   165,   194,   166,    18,
+     9,    26,    68,    69,   167,    71,    72,    96,   176,   287,
+   257,   288,    88,   427,     1,     2,   148,    38,    84,   151,
+    73,   300,   244,   245,   246,    27,    77,    10,    33,    11,
+    12,    21,   258,    74,   260,   349,    13,    29,    30,   140,
+   404,    79,   201,   369,   370,   141,   142,   313,   143,   144
+};
+
+static const short yypact[] = {-32768,
+    40,   341,-32768,-32768,-32768,-32768,-32768,-32768,    62,    12,
+-32768,-32768,   -20,-32768,-32768,   110,   -67,    48,   -50,-32768,
+    62,    65,-32768,-32768,-32768,  1073,   -18,-32768,-32768,    71,
+-32768,-32768,-32768,-32768,   -19,    -8,     2,-32768,   -15,  1073,
+    31,    31,-32768,-32768,-32768,-32768,-32768,     8,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   123,   152,   163,   120,-32768,    71,    17,-32768,
+-32768,   -36,-32768,-32768,-32768,-32768,-32768,  1228,-32768,   148,
+    72,   170,   164,-32768,-32768,-32768,-32768,  1136,  1173,-32768,
+    89,    90,-32768,-32768,   -36,    58,    94,   835,-32768,-32768,
+  1136,-32768,   137,  1236,    27,   138,    62,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,  1136,  1136,  1136,  1136,  1136,  1136,  1136,
+-32768,-32768,  1136,  1136,  1136,  1136,  1136,  1136,  1136,-32768,
+    62,-32768,    77,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   -35,-32768,   118,   167,   190,   173,   191,   175,   192,   177,
+   193,   196,   197,   180,   194,   198,   519,-32768,  1136,  1136,
+-32768,  1136,   872,-32768,    92,   108,   662,-32768,-32768,     8,
+-32768,   662,   662,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   662,  1073,   100,   101,-32768,   662,   115,
+   102,   182,   111,   113,   114,   119,   662,   662,   662,   121,
+  1073,  1136,  1136,-32768,   203,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   132,   133,   134,   935,  1173,
+   620,   208,   139,   140,   143,   144,-32768,-32768,   -74,   -29,
+   -36,-32768,    71,-32768,   127,   117,   972,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,  1173,-32768,-32768,-32768,-32768,
+   128,-32768,   136,   662,    -6,    -2,   146,   662,   155,  1136,
+  1136,  1136,  1136,  1136,   149,   151,   153,  1136,   662,   662,
+   154,-32768,  1173,  1173,  1173,-32768,-32768,   -28,   -57,-32768,
+    61,-32768,  1173,  1173,  1173,  1173,-32768,-32768,-32768,-32768,
+  1036,-32768,-32768,   -11,   230,   238,   165,   662,   262,   662,
+   263,  1136,-32768,   162,   662,-32768,   166,-32768,-32768,-32768,
+   662,   662,   662,-32768,   171,-32768,  1136,   146,   235,   169,
+-32768,  1173,-32768,-32768,   172,   183,   184,   185,-32768,-32768,
+-32768,   662,   662,  1136,   186,-32768,   187,-32768,-32768,   188,
+   662,   189,  1136,-32768,-32768,-32768,  1136,   662,   174,  1136,
+  1173,-32768,  1173,  1173,  1173,  1173,   199,   200,   188,   176,
+   218,   231,  1136,   202,   662,-32768,   206,-32768,-32768,   209,
+   201,   211,   212,   213,   214,   266,     5,   254,   293,   294,
+-32768,-32768,   215,-32768,-32768,  1173,-32768,-32768,-32768,-32768,
+   662,-32768,   740,    42,   279,-32768,-32768,-32768,   216,-32768,
+   210,-32768,   740,   662,-32768,   298,   219,   250,   662,   300,
+   301,-32768,   662,   662,-32768,-32768,   323,   325,-32768
+};
+
+static const short yypgoto[] = {-32768,
+-32768,   251,   252,   255,   259,  -102,   -99,  -362,-32768,   302,
+   310,   -81,   -38,-32768,   -26,-32768,   -54,   240,-32768,   -83,
+   178,  -207,   297,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+    -1,-32768,    39,-32768,-32768,   320,-32768,-32768,-32768,-32768,
+   340,-32768,  -372,    56,   161,   -96,-32768,   333,-32768,-32768,
+-32768,-32768,-32768,    36,    -7,-32768,-32768,    21,-32768,-32768
+};
+
+
+#define	YYLAST		1340
+
+
+static const short yytable[] = {    70,
+    19,    85,    28,   192,   178,   168,   193,   181,   308,    31,
+    75,    95,   310,    70,   184,   185,   186,   187,   188,   189,
+   190,   191,   289,   291,   403,   195,   297,    39,    19,   198,
+   411,    99,   202,   203,    28,   182,   204,   205,   206,  -106,
+   417,   413,   210,    95,    43,   333,   309,   183,   304,   332,
+   311,   184,   185,   186,   187,   188,   189,   190,   191,   211,
+   -47,   152,    86,    87,     3,   214,    97,    40,    45,    99,
+     4,   215,   331,   298,   177,    80,    99,   177,   332,     5,
+     6,     7,     8,    83,    32,    76,    81,     5,     6,     7,
+     8,   341,    14,    41,    15,   332,    82,   196,   197,   177,
+   199,   200,   177,   177,   -48,   402,   177,   177,   177,   207,
+   208,   209,   177,    98,   239,   240,   281,   241,    22,    23,
+    24,    25,   146,   147,    46,    47,    90,    93,    49,    50,
+    51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+    61,    14,   412,    15,   216,   217,   243,   184,   185,   186,
+   187,   188,   189,   190,   191,    91,   264,    35,    36,    37,
+   212,   213,   171,    62,   172,   334,    92,   332,    70,   -24,
+   -24,   145,   279,   149,   317,   -23,   -23,   -22,   -22,   -21,
+   -21,   324,   218,   219,    70,   280,   177,   150,   169,   170,
+   173,   179,   241,   -28,   -27,   -26,   -25,   221,   247,   328,
+   329,   330,   -31,   -32,   222,   248,   265,   266,   269,   335,
+   336,   337,   338,   268,   302,    63,   270,   271,    64,   272,
+   273,    65,   238,    66,    94,   274,   282,   278,   283,   284,
+   285,   292,   259,   301,   305,   293,   294,   259,   259,   295,
+   296,   299,   306,   316,   177,   318,   319,   320,   362,   259,
+   342,   177,   312,   315,   259,   321,   376,   322,   343,   323,
+   327,   344,   259,   259,   259,   346,   348,   357,   351,   360,
+   389,   379,   353,   388,   243,   361,   391,   381,   363,   382,
+   383,   384,   385,   390,   192,   177,   401,   193,   405,   364,
+   365,   366,   371,   372,   373,   375,   406,   407,   387,   414,
+   358,   192,   392,   394,   193,   386,   395,   396,   397,   398,
+   399,   400,   409,   415,   421,   408,   416,   177,   419,   259,
+   423,   424,   428,   259,   429,   420,   177,    42,   136,   137,
+   177,    78,   138,   380,   259,   259,   139,   175,    89,   340,
+    44,    20,   261,   262,   237,    34,   177,   350,   359,   377,
+     0,     0,     0,     0,   263,     0,     0,     0,     0,   267,
+   -34,     0,    14,   259,    15,   259,     0,   275,   276,   277,
+   259,     4,   -34,   -34,     0,     0,   259,   259,   259,     0,
+   -34,   -34,   -34,   -34,     0,     0,   -34,    16,     0,     0,
+     0,     0,     0,     0,    17,     0,     0,   259,   259,     0,
+     0,     0,     0,     0,     0,     0,   259,     0,     0,     0,
+     0,     0,     0,   259,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   307,     0,     0,     0,   314,     0,
+   259,     0,     0,     0,     0,     0,     0,     0,     0,   325,
+   326,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   259,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   345,   259,
+   347,     0,     0,     0,   259,   352,     0,     0,   259,   259,
+     0,   354,   355,   356,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   367,   368,     0,     0,     0,     0,     0,     0,
+     0,   374,     0,     0,     0,     0,     0,     0,   378,     0,
+     0,     0,     0,    46,    47,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   393,     0,     0,     0,     0,
+    14,     0,    15,     0,   223,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   224,   225,     0,     0,     0,
+     0,   410,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   418,     0,     0,     0,     0,   422,
+     0,     0,     0,   425,   426,   110,   111,   112,   113,   114,
+   115,   116,   117,   118,   119,   120,   121,   122,   123,     0,
+     0,     0,     0,     0,   226,     0,   227,   228,   131,   132,
+     0,     0,     0,     0,     0,     0,     0,   229,     0,     0,
+   230,     0,   231,     0,    46,    47,   232,    93,   153,   154,
+   155,   156,   157,   158,   159,   160,   161,   162,   163,    60,
+    61,    14,     0,    15,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    62,   249,   250,    46,    47,   251,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    14,     0,    15,     0,     0,   252,   253,
+     0,     0,     0,     0,     0,     0,     0,     0,   254,   255,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    63,     0,     0,    64,     0,
+     0,    65,     0,    66,   290,     0,     0,     0,   110,   111,
+   112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,   249,   250,     0,     0,   251,   226,     0,   227,
+   228,   131,   132,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   256,     0,     0,   252,   253,     0,     0,
+     0,     0,     0,     0,     0,     0,   254,   255,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   110,   111,   112,   113,
+   114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     0,     0,     0,     0,     0,   226,     0,   227,   228,   131,
+   132,     0,     0,     0,     0,     0,     0,     0,     0,    46,
+    47,   256,    93,    49,    50,    51,    52,    53,    54,    55,
+    56,    57,    58,    59,    60,    61,    14,     0,    15,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   174,     0,     0,     0,     0,     0,    46,    47,    62,    93,
+    49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+    59,    60,    61,    14,     0,    15,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   242,     0,     0,
+     0,     0,     0,     0,     0,    62,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    63,     0,     0,    64,     0,     0,    65,     0,    66,    46,
+    47,     0,    93,   153,   154,   155,   156,   157,   158,   159,
+   160,   161,   162,   163,    60,    61,    14,     0,    15,     0,
+     0,     0,     0,     0,     0,     0,     0,    63,     0,     0,
+    64,     0,     0,    65,     0,    66,    46,    47,    62,    93,
+    49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+    59,    60,    61,    14,     0,    15,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   303,     0,     0,
+     0,     0,     0,     0,     0,    62,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    63,     0,     0,    64,     0,   286,    65,     0,    66,     0,
+    46,    47,     0,    93,    49,    50,    51,    52,    53,    54,
+    55,    56,    57,    58,    59,    60,    61,    14,     0,    15,
+     0,     0,     0,     0,     0,     0,     0,    63,     0,     0,
+    64,   339,     0,    65,     0,    66,     0,    46,    47,    62,
+    48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+    58,    59,    60,    61,    14,     0,    15,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    62,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    63,     0,     0,    64,     0,     0,    65,     0,    66,
+    46,    47,     0,    93,    49,    50,    51,    52,    53,    54,
+    55,    56,    57,    58,    59,    60,    61,    14,     0,    15,
+     0,     0,     0,     0,     0,     0,     0,     0,    63,     0,
+     0,    64,     0,     0,    65,     0,    66,    46,    47,    62,
+    93,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,    60,    61,    14,     0,    15,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    62,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    63,     0,     0,    64,     0,     0,    65,     0,    66,
+    46,    47,     0,   180,    49,    50,    51,    52,    53,    54,
+    55,    56,    57,    58,    59,    60,    61,    14,     0,    15,
+     0,   100,     0,     0,     0,     0,     0,     0,    63,     0,
+     0,    64,   101,     0,    65,     0,    66,     0,     0,    62,
+     0,     0,   102,   103,     0,     0,     0,     0,   104,   105,
+   106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+   126,     0,     0,   127,   128,   129,   130,   131,   132,   133,
+   134,   135,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    63,     0,     0,    64,     0,     0,    65,     0,    66
+};
+
+static const short yycheck[] = {    26,
+     2,    40,    23,   106,   101,    89,   106,   104,    15,    30,
+    29,    66,    15,    40,    10,    11,    12,    13,    14,    15,
+    16,    17,   230,   231,   387,   107,   101,    95,    30,   126,
+   403,   106,   129,   130,    23,     9,   133,   134,   135,     0,
+   413,   404,   139,    98,    95,   103,    53,    21,   256,   107,
+    53,    10,    11,    12,    13,    14,    15,    16,    17,   141,
+    97,    88,    32,    33,    25,   101,    68,    20,     4,   106,
+    31,   107,   101,   103,   101,    95,   106,   104,   107,    40,
+    41,    42,    43,    99,   105,   104,    95,    40,    41,    42,
+    43,   103,    22,    46,    24,   107,    95,   124,   125,   126,
+   127,   128,   129,   130,    97,   101,   133,   134,   135,   136,
+   137,   138,   139,    97,   169,   170,   213,   172,    57,    58,
+    59,    60,    51,    52,     5,     6,     4,     8,     9,    10,
+    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+    21,    22,   101,    24,    27,    28,   173,    10,    11,    12,
+    13,    14,    15,    16,    17,     4,   195,    48,    49,    50,
+    84,    85,   105,    44,   107,   105,     4,   107,   195,     3,
+     4,    24,   211,     4,   271,     3,     4,     3,     4,     3,
+     4,   278,     3,     4,   211,   212,   213,    24,   100,   100,
+    97,    55,   247,     4,     4,     4,     4,     4,   107,   283,
+   284,   285,     7,     7,     7,    98,   107,   107,   107,   293,
+   294,   295,   296,    99,    98,    96,    35,   107,    99,   107,
+   107,   102,   167,   104,   105,   107,    24,   107,    97,    97,
+    97,    24,   177,   107,   107,    97,    97,   182,   183,    97,
+    97,   243,   107,   270,   271,   272,   273,   274,   332,   194,
+    21,   278,   107,    99,   199,   107,   353,   107,    21,   107,
+   107,    97,   207,   208,   209,     4,     4,    97,   107,    35,
+    53,    98,   107,    98,   301,   107,   373,   361,   107,   363,
+   364,   365,   366,    53,   387,   312,    21,   387,    35,   107,
+   107,   107,   107,   107,   107,   107,     4,     4,    99,    21,
+   327,   404,   101,    98,   404,   107,    98,   107,    98,    98,
+    98,    98,   396,    98,    65,   101,   107,   344,    21,   264,
+    21,    21,     0,   268,     0,   107,   353,    18,    78,    78,
+   357,    30,    78,   360,   279,   280,    78,    98,    42,   301,
+    21,     2,   182,   183,   167,    13,   373,   312,   328,   357,
+    -1,    -1,    -1,    -1,   194,    -1,    -1,    -1,    -1,   199,
+    20,    -1,    22,   308,    24,   310,    -1,   207,   208,   209,
+   315,    31,    32,    33,    -1,    -1,   321,   322,   323,    -1,
+    40,    41,    42,    43,    -1,    -1,    46,    47,    -1,    -1,
+    -1,    -1,    -1,    -1,    54,    -1,    -1,   342,   343,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   351,    -1,    -1,    -1,
+    -1,    -1,    -1,   358,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   264,    -1,    -1,    -1,   268,    -1,
+   375,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   279,
+   280,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   401,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   308,   414,
+   310,    -1,    -1,    -1,   419,   315,    -1,    -1,   423,   424,
+    -1,   321,   322,   323,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   342,   343,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   351,    -1,    -1,    -1,    -1,    -1,    -1,   358,    -1,
+    -1,    -1,    -1,     5,     6,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   375,    -1,    -1,    -1,    -1,
+    22,    -1,    24,    -1,    26,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    -1,    -1,
+    -1,   401,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   414,    -1,    -1,    -1,    -1,   419,
+    -1,    -1,    -1,   423,   424,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,    76,    77,    78,    79,    80,    -1,
+    -1,    -1,    -1,    -1,    86,    -1,    88,    89,    90,    91,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    99,    -1,    -1,
+   102,    -1,   104,    -1,     5,     6,   108,     8,     9,    10,
+    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+    21,    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    44,     3,     4,     5,     6,     7,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    22,    -1,    24,    -1,    -1,    27,    28,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    99,    -1,
+    -1,   102,    -1,   104,   105,    -1,    -1,    -1,    67,    68,
+    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+    79,    80,     3,     4,    -1,    -1,     7,    86,    -1,    88,
+    89,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   102,    -1,    -1,    27,    28,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -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,    86,    -1,    88,    89,    90,
+    91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,
+     6,   102,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    21,    22,    -1,    24,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    36,    -1,    -1,    -1,    -1,    -1,     5,     6,    44,     8,
+     9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    96,    -1,    -1,    99,    -1,    -1,   102,    -1,   104,     5,
+     6,    -1,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    21,    22,    -1,    24,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
+    99,    -1,    -1,   102,    -1,   104,     5,     6,    44,     8,
+     9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    96,    -1,    -1,    99,    -1,   101,   102,    -1,   104,    -1,
+     5,     6,    -1,     8,     9,    10,    11,    12,    13,    14,
+    15,    16,    17,    18,    19,    20,    21,    22,    -1,    24,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
+    99,    36,    -1,   102,    -1,   104,    -1,     5,     6,    44,
+     8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+    18,    19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    96,    -1,    -1,    99,    -1,    -1,   102,    -1,   104,
+     5,     6,    -1,     8,     9,    10,    11,    12,    13,    14,
+    15,    16,    17,    18,    19,    20,    21,    22,    -1,    24,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,
+    -1,    99,    -1,    -1,   102,    -1,   104,     5,     6,    44,
+     8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+    18,    19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    96,    -1,    -1,    99,    -1,    -1,   102,    -1,   104,
+     5,     6,    -1,     8,     9,    10,    11,    12,    13,    14,
+    15,    16,    17,    18,    19,    20,    21,    22,    -1,    24,
+    -1,    34,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,
+    -1,    99,    45,    -1,   102,    -1,   104,    -1,    -1,    44,
+    -1,    -1,    55,    56,    -1,    -1,    -1,    -1,    61,    62,
+    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+    73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+    83,    -1,    -1,    86,    87,    88,    89,    90,    91,    92,
+    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    96,    -1,    -1,    99,    -1,    -1,   102,    -1,   104
+};
+/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
+#line 3 "/usr/share/bison.simple"
+/* This file comes from bison-1.28.  */
+
+/* Skeleton output parser for bison,
+   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* This is the parser code that is written into each bison parser
+  when the %semantic_parser declaration is not specified in the grammar.
+  It was written by Richard Stallman by simplifying the hairy parser
+  used when %semantic_parser is specified.  */
+
+#ifndef YYSTACK_USE_ALLOCA
+#ifdef alloca
+#define YYSTACK_USE_ALLOCA
+#else /* alloca not defined */
+#ifdef __GNUC__
+#define YYSTACK_USE_ALLOCA
+#define alloca __builtin_alloca
+#else /* not GNU C.  */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
+#define YYSTACK_USE_ALLOCA
+#include <alloca.h>
+#else /* not sparc */
+/* We think this test detects Watcom and Microsoft C.  */
+/* This used to test MSDOS, but that is a bad idea
+   since that symbol is in the user namespace.  */
+#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
+#if 0 /* No need for malloc.h, which pollutes the namespace;
+	 instead, just don't use alloca.  */
+#include <malloc.h>
+#endif
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+/* I don't know what this was needed for, but it pollutes the namespace.
+   So I turned it off.   rms, 2 May 1997.  */
+/* #include <malloc.h>  */
+ #pragma alloca
+#define YYSTACK_USE_ALLOCA
+#else /* not MSDOS, or __TURBOC__, or _AIX */
+#if 0
+#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
+		 and on HPUX 10.  Eventually we can turn this on.  */
+#define YYSTACK_USE_ALLOCA
+#define alloca __builtin_alloca
+#endif /* __hpux */
+#endif
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc */
+#endif /* not GNU C */
+#endif /* alloca not defined */
+#endif /* YYSTACK_USE_ALLOCA not defined */
+
+#ifdef YYSTACK_USE_ALLOCA
+#define YYSTACK_ALLOC alloca
 #else
-   typedef short int yysigned_char;
+#define YYSTACK_ALLOC malloc
 #endif
 
-/* YYFINAL -- State number of the termination state. */
-#define YYFINAL  4
-/* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1102
-
-/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS  108
-/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS  62
-/* YYNRULES -- Number of rules. */
-#define YYNRULES  212
-/* YYNRULES -- Number of states. */
-#define YYNSTATES  419
-
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
-#define YYMAXUTOK   348
-
-#define YYTRANSLATE(YYX) 						\
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const unsigned char yytranslate[] =
-{
-       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      96,    97,   105,     2,   106,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     101,    94,   102,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    98,    95,   100,     2,     2,     2,     2,     2,   107,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      99,     2,     2,   103,     2,   104,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93
-};
-
-#if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const unsigned short int yyprhs[] =
-{
-       0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
-      19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
-      39,    41,    43,    45,    47,    49,    51,    53,    55,    57,
-      59,    61,    63,    65,    67,    70,    71,    73,    75,    77,
-      79,    80,    81,    83,    85,    87,    90,    92,    94,    96,
-      98,   100,   102,   104,   106,   108,   110,   112,   114,   116,
-     118,   120,   122,   124,   126,   128,   130,   132,   135,   140,
-     146,   152,   156,   159,   162,   164,   168,   170,   174,   176,
-     177,   182,   186,   190,   195,   200,   204,   207,   210,   213,
-     216,   219,   222,   225,   228,   231,   234,   241,   247,   256,
-     263,   270,   277,   284,   288,   290,   292,   294,   296,   299,
-     302,   305,   307,   312,   315,   321,   327,   331,   336,   337,
-     339,   341,   345,   349,   353,   357,   361,   363,   364,   366,
-     368,   370,   371,   374,   378,   380,   382,   386,   388,   389,
-     396,   398,   400,   404,   406,   408,   411,   412,   416,   418,
-     420,   422,   424,   426,   428,   430,   434,   436,   438,   440,
-     442,   444,   447,   450,   453,   457,   460,   461,   463,   466,
-     469,   473,   483,   493,   502,   516,   518,   520,   527,   533,
-     536,   543,   551,   553,   557,   559,   560,   563,   565,   571,
-     577,   583,   586,   591,   596,   603,   608,   613,   618,   621,
-     629,   631,   634,   635,   637,   638,   641,   647,   650,   656,
-     659,   664,   671
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-static const short int yyrhs[] =
-{
-     133,     0,    -1,     5,    -1,     6,    -1,     3,    -1,     4,
-      -1,    66,    -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,    89,
-      -1,    90,    -1,    16,    -1,    14,    -1,    12,    -1,    10,
-      -1,    17,    -1,    15,    -1,    13,    -1,    11,    -1,   115,
-      -1,   116,    -1,    18,    -1,    19,    -1,   140,    94,    -1,
-      -1,    40,    -1,    41,    -1,    42,    -1,    43,    -1,    -1,
-      -1,    57,    -1,    58,    -1,    59,    -1,    56,     4,    -1,
-     124,    -1,     8,    -1,   126,    -1,     8,    -1,   126,    -1,
-       9,    -1,    10,    -1,    11,    -1,    12,    -1,    13,    -1,
-      14,    -1,    15,    -1,    16,    -1,    17,    -1,    18,    -1,
-      19,    -1,    20,    -1,    21,    -1,    44,    -1,   125,    -1,
-     153,    -1,    95,     4,    -1,   123,    96,   128,    97,    -1,
-      98,     4,    99,   126,   100,    -1,   101,     4,    99,   126,
-     102,    -1,   103,   127,   104,    -1,   103,   104,    -1,   126,
-     105,    -1,   126,    -1,   127,   106,   126,    -1,   127,    -1,
-     127,   106,    36,    -1,    36,    -1,    -1,   124,    98,   131,
-     100,    -1,   124,    98,   100,    -1,   124,   107,    24,    -1,
-     124,   101,   131,   102,    -1,   124,   103,   131,   104,    -1,
-     124,   103,   104,    -1,   124,    37,    -1,   124,    38,    -1,
-     124,   153,    -1,   124,   130,    -1,   124,    26,    -1,   115,
-     110,    -1,   116,     4,    -1,     9,    27,    -1,     9,    28,
-      -1,   118,     7,    -1,    87,    96,   129,    35,   124,    97,
-      -1,    85,    96,   129,   167,    97,    -1,    88,    96,   129,
-     106,   129,   106,   129,    97,    -1,   111,    96,   129,   106,
-     129,    97,    -1,   112,    96,   129,   106,   129,    97,    -1,
-     113,    96,   129,   106,   129,    97,    -1,   114,    96,   129,
-     106,   129,    97,    -1,   131,   106,   129,    -1,   129,    -1,
-      32,    -1,    33,    -1,   134,    -1,   134,   149,    -1,   134,
-     150,    -1,   134,    25,    -1,   135,    -1,   135,   119,    20,
-     122,    -1,   135,   150,    -1,   135,   119,   120,   132,   129,
-      -1,   135,   119,    46,   132,   124,    -1,   135,    47,   137,
-      -1,   135,    53,    94,   138,    -1,    -1,    52,    -1,    51,
-      -1,    49,    94,   136,    -1,    50,    94,     4,    -1,    48,
-      94,    24,    -1,    98,   139,   100,    -1,   139,   106,    24,
-      -1,    24,    -1,    -1,    22,    -1,    24,    -1,   140,    -1,
-      -1,   124,   141,    -1,   143,   106,   142,    -1,   142,    -1,
-     143,    -1,   143,   106,    36,    -1,    36,    -1,    -1,   121,
-     122,   140,    96,   144,    97,    -1,    29,    -1,   103,    -1,
-     120,   145,   146,    -1,    30,    -1,   104,    -1,   156,   148,
-      -1,    -1,    31,   151,   145,    -1,     3,    -1,     4,    -1,
-       7,    -1,    27,    -1,    28,    -1,    37,    -1,    38,    -1,
-     101,   131,   102,    -1,   130,    -1,   109,    -1,   140,    -1,
-     153,    -1,   152,    -1,   124,   154,    -1,   156,   157,    -1,
-     147,   157,    -1,   158,   119,   159,    -1,   158,   161,    -1,
-      -1,    23,    -1,    60,   155,    -1,    60,     8,    -1,    61,
-      21,   154,    -1,    61,     9,   154,   106,    21,   154,   106,
-      21,   154,    -1,    62,   117,   154,   106,    21,   154,    98,
-     160,   100,    -1,    62,   117,   154,   106,    21,   154,    98,
-     100,    -1,    63,   121,   122,   154,    96,   164,    97,    35,
-      21,   154,    64,    21,   154,    -1,    64,    -1,    65,    -1,
-     160,   117,   152,   106,    21,   154,    -1,   117,   152,   106,
-      21,   154,    -1,   119,   166,    -1,   124,    98,   154,   106,
-     154,   100,    -1,   162,   106,    98,   154,   106,   154,   100,
-      -1,   155,    -1,   163,   106,   155,    -1,   163,    -1,    -1,
-      55,    54,    -1,    54,    -1,   111,   124,   154,   106,   154,
-      -1,   112,   124,   154,   106,   154,    -1,   113,   124,   154,
-     106,   154,    -1,    45,   155,    -1,   114,   155,   106,   155,
-      -1,    87,   155,    35,   124,    -1,    88,   155,   106,   155,
-     106,   155,    -1,    91,   155,   106,   124,    -1,    92,   155,
-     106,   124,    -1,    93,   155,   106,   124,    -1,    86,   162,
-      -1,   165,   121,   122,   154,    96,   164,    97,    -1,   169,
-      -1,   106,   163,    -1,    -1,    34,    -1,    -1,    80,   124,
-      -1,    80,   124,   106,    15,   154,    -1,    81,   124,    -1,
-      81,   124,   106,    15,   154,    -1,    82,   155,    -1,   168,
-      83,   124,   154,    -1,   168,    84,   155,   106,   124,   154,
-      -1,    85,   124,   154,   167,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const unsigned short int yyrline[] =
-{
-       0,   983,   983,   984,   991,   992,  1001,  1001,  1001,  1001,
-    1001,  1002,  1002,  1002,  1003,  1003,  1003,  1003,  1003,  1003,
-    1005,  1005,  1009,  1009,  1009,  1009,  1010,  1010,  1010,  1010,
-    1011,  1011,  1012,  1012,  1015,  1018,  1022,  1023,  1024,  1025,
-    1026,  1028,  1029,  1030,  1031,  1032,  1045,  1045,  1046,  1046,
-    1048,  1057,  1057,  1057,  1057,  1057,  1057,  1057,  1058,  1058,
-    1058,  1058,  1058,  1058,  1059,  1062,  1065,  1071,  1078,  1090,
-    1094,  1105,  1114,  1117,  1125,  1129,  1134,  1135,  1138,  1141,
-    1151,  1176,  1189,  1217,  1242,  1262,  1274,  1283,  1287,  1346,
-    1352,  1360,  1365,  1370,  1373,  1376,  1383,  1393,  1424,  1431,
-    1452,  1459,  1464,  1474,  1477,  1484,  1484,  1494,  1501,  1505,
-    1508,  1511,  1524,  1544,  1546,  1550,  1554,  1556,  1558,  1563,
-    1564,  1566,  1569,  1577,  1582,  1584,  1588,  1592,  1600,  1600,
-    1601,  1601,  1603,  1609,  1614,  1620,  1623,  1628,  1632,  1636,
-    1716,  1716,  1718,  1726,  1726,  1728,  1732,  1732,  1741,  1744,
-    1747,  1750,  1753,  1756,  1759,  1762,  1786,  1793,  1796,  1801,
-    1801,  1807,  1811,  1814,  1822,  1831,  1835,  1845,  1856,  1859,
-    1862,  1865,  1868,  1882,  1886,  1939,  1942,  1948,  1956,  1966,
-    1973,  1978,  1985,  1989,  1995,  1995,  1997,  2000,  2006,  2018,
-    2026,  2036,  2048,  2055,  2062,  2069,  2074,  2093,  2115,  2129,
-    2186,  2192,  2194,  2198,  2201,  2207,  2211,  2215,  2219,  2223,
-    2230,  2240,  2253
-};
-#endif
-
-#if YYDEBUG || YYERROR_VERBOSE
-/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-static const char *const yytname[] =
-{
-  "$end", "error", "$undefined", "ESINT64VAL", "EUINT64VAL", "SINTVAL",
-  "UINTVAL", "FPVAL", "VOID", "BOOL", "SBYTE", "UBYTE", "SHORT", "USHORT",
-  "INT", "UINT", "LONG", "ULONG", "FLOAT", "DOUBLE", "TYPE", "LABEL",
-  "VAR_ID", "LABELSTR", "STRINGCONSTANT", "IMPLEMENTATION",
-  "ZEROINITIALIZER", "TRUETOK", "FALSETOK", "BEGINTOK", "ENDTOK",
-  "DECLARE", "GLOBAL", "CONSTANT", "VOLATILE", "TO", "DOTDOTDOT",
-  "NULL_TOK", "UNDEF", "CONST", "INTERNAL", "LINKONCE", "WEAK",
-  "APPENDING", "OPAQUE", "NOT", "EXTERNAL", "TARGET", "TRIPLE", "ENDIAN",
-  "POINTERSIZE", "LITTLE", "BIG", "DEPLIBS", "CALL", "TAIL", "CC_TOK",
-  "CCC_TOK", "FASTCC_TOK", "COLDCC_TOK", "RET", "BR", "SWITCH", "INVOKE",
-  "UNWIND", "UNREACHABLE", "ADD", "SUB", "MUL", "DIV", "REM", "AND", "OR",
-  "XOR", "SETLE", "SETGE", "SETLT", "SETGT", "SETEQ", "SETNE", "MALLOC",
-  "ALLOCA", "FREE", "LOAD", "STORE", "GETELEMENTPTR", "PHI_TOK", "CAST",
-  "SELECT", "SHL", "SHR", "VAARG", "VAARG_old", "VANEXT_old", "'='",
-  "'\\\\'", "'('", "')'", "'['", "'x'", "']'", "'<'", "'>'", "'{'", "'}'",
-  "'*'", "','", "'c'", "$accept", "INTVAL", "EINT64VAL", "ArithmeticOps",
-  "LogicalOps", "SetCondOps", "ShiftOps", "SIntType", "UIntType",
-  "IntType", "FPType", "OptAssign", "OptLinkage", "OptCallingConv",
-  "TypesV", "UpRTypesV", "Types", "PrimType", "UpRTypes", "TypeListI",
-  "ArgTypeListI", "ConstVal", "ConstExpr", "ConstVector", "GlobalType",
-  "Module", "FunctionList", "ConstPool", "BigOrLittle", "TargetDefinition",
-  "LibrariesDefinition", "LibList", "Name", "OptName", "ArgVal",
-  "ArgListH", "ArgList", "FunctionHeaderH", "BEGIN", "FunctionHeader",
-  "END", "Function", "FunctionProto", "@1", "ConstValueRef",
-  "SymbolicValueRef", "ValueRef", "ResolvedVal", "BasicBlockList",
-  "BasicBlock", "InstructionList", "BBTerminatorInst", "JumpTable", "Inst",
-  "PHIList", "ValueRefList", "ValueRefListE", "OptTailCall", "InstVal",
-  "IndexList", "OptVolatile", "MemoryInst", 0
-};
-#endif
-
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
-static const unsigned short int yytoknum[] =
-{
-       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,   346,   347,   348,    61,    92,    40,    41,    91,   120,
-      93,    60,    62,   123,   125,    42,    44,    99
-};
-# endif
-
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const unsigned char yyr1[] =
-{
-       0,   108,   109,   109,   110,   110,   111,   111,   111,   111,
-     111,   112,   112,   112,   113,   113,   113,   113,   113,   113,
-     114,   114,   115,   115,   115,   115,   116,   116,   116,   116,
-     117,   117,   118,   118,   119,   119,   120,   120,   120,   120,
-     120,   121,   121,   121,   121,   121,   122,   122,   123,   123,
-     124,   125,   125,   125,   125,   125,   125,   125,   125,   125,
-     125,   125,   125,   125,   126,   126,   126,   126,   126,   126,
-     126,   126,   126,   126,   127,   127,   128,   128,   128,   128,
-     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
-     129,   129,   129,   129,   129,   129,   130,   130,   130,   130,
-     130,   130,   130,   131,   131,   132,   132,   133,   134,   134,
-     134,   134,   135,   135,   135,   135,   135,   135,   135,   136,
-     136,   137,   137,   137,   138,   139,   139,   139,   140,   140,
-     141,   141,   142,   143,   143,   144,   144,   144,   144,   145,
-     146,   146,   147,   148,   148,   149,   151,   150,   152,   152,
-     152,   152,   152,   152,   152,   152,   152,   153,   153,   154,
-     154,   155,   156,   156,   157,   158,   158,   158,   159,   159,
-     159,   159,   159,   159,   159,   159,   159,   160,   160,   161,
-     162,   162,   163,   163,   164,   164,   165,   165,   166,   166,
-     166,   166,   166,   166,   166,   166,   166,   166,   166,   166,
-     166,   167,   167,   168,   168,   169,   169,   169,   169,   169,
-     169,   169,   169
-};
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const unsigned char yyr2[] =
-{
-       0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     2,     0,     1,     1,     1,     1,
-       0,     0,     1,     1,     1,     2,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     4,     5,
-       5,     3,     2,     2,     1,     3,     1,     3,     1,     0,
-       4,     3,     3,     4,     4,     3,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     6,     5,     8,     6,
-       6,     6,     6,     3,     1,     1,     1,     1,     2,     2,
-       2,     1,     4,     2,     5,     5,     3,     4,     0,     1,
-       1,     3,     3,     3,     3,     3,     1,     0,     1,     1,
-       1,     0,     2,     3,     1,     1,     3,     1,     0,     6,
-       1,     1,     3,     1,     1,     2,     0,     3,     1,     1,
-       1,     1,     1,     1,     1,     3,     1,     1,     1,     1,
-       1,     2,     2,     2,     3,     2,     0,     1,     2,     2,
-       3,     9,     9,     8,    13,     1,     1,     6,     5,     2,
-       6,     7,     1,     3,     1,     0,     2,     1,     5,     5,
-       5,     2,     4,     4,     6,     4,     4,     4,     2,     7,
-       1,     2,     0,     1,     0,     2,     5,     2,     5,     2,
-       4,     6,     4
-};
-
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const unsigned char yydefact[] =
-{
-     118,     0,    40,   111,     1,   110,   146,    36,    37,    38,
-      39,    41,   166,   108,   109,   166,   128,   129,     0,     0,
-      40,     0,   113,    41,     0,    42,    43,    44,     0,     0,
-     167,   163,    35,   143,   144,   145,   162,     0,     0,     0,
-     116,     0,     0,     0,     0,    34,   147,    45,     2,     3,
-      47,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,     0,     0,     0,     0,   157,
-       0,     0,    46,    65,    50,   158,    66,   140,   141,   142,
-     204,   165,     0,     0,     0,   127,   117,   112,   105,   106,
-       0,     0,    67,     0,     0,    49,    72,    74,     0,     0,
-      79,    73,   203,     0,   187,     0,     0,     0,     0,    41,
-     175,   176,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
-       0,     0,     0,    20,    21,     0,     0,     0,     0,     0,
-       0,     0,   164,    41,   179,     0,   200,   123,   120,   119,
-     121,   122,   126,     0,   115,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,     0,     0,     0,     0,
-     114,     0,     0,    71,     0,   138,    78,    76,     0,     0,
-     191,   186,   169,   168,     0,     0,    25,    29,    24,    28,
-      23,    27,    22,    26,    30,    31,     0,     0,   205,   207,
-     209,     0,     0,   198,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   124,     0,    93,    94,
-       4,     5,    91,    92,    95,    90,    86,    87,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    89,
-      88,    48,    48,    75,   137,   131,   134,   135,     0,     0,
-      68,   148,   149,   150,   151,   152,   153,   154,     0,   156,
-     160,   159,   161,     0,   170,     0,     0,     0,     0,   202,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   125,     0,     0,     0,    81,   104,
-       0,     0,    85,     0,    82,     0,     0,     0,     0,    69,
-      70,   130,   132,     0,   139,    77,     0,     0,     0,     0,
-       0,     0,     0,   212,     0,     0,   193,     0,   195,   196,
-     197,     0,     0,     0,   192,     0,   210,     0,   202,     0,
-       0,    80,     0,    83,    84,     0,     0,     0,     0,   136,
-     133,   155,     0,     0,   185,   206,   208,   182,   201,     0,
-       0,     0,   188,   189,   190,   185,     0,     0,     0,     0,
-     103,     0,     0,     0,     0,     0,     0,   184,     0,     0,
-       0,     0,   194,     0,   211,    97,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   183,   180,     0,   199,    96,
-       0,    99,   100,   101,   102,     0,   173,     0,     0,     0,
-     181,     0,   171,     0,   172,     0,     0,    98,     0,     0,
-       0,     0,     0,     0,   178,     0,     0,   177,   174
-};
-
-/* YYDEFGOTO[NTERM-NUM]. */
-static const short int yydefgoto[] =
-{
-      -1,    69,   222,   235,   236,   237,   238,   166,   167,   196,
-     168,    20,    11,    28,    70,    71,   169,    73,    74,    98,
-     178,   289,   259,   290,    90,     1,     2,     3,   150,    40,
-      86,   153,    75,   302,   246,   247,   248,    29,    79,    12,
-      35,    13,    14,    23,   260,    76,   262,   347,    15,    31,
-      32,   142,   398,    81,   203,   367,   368,   143,   144,   313,
-     145,   146
-};
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -383
-static const short int yypact[] =
-{
-    -383,    48,   136,   517,  -383,  -383,  -383,  -383,  -383,  -383,
-    -383,    27,    36,  -383,  -383,   -17,  -383,  -383,    46,   -21,
-      -3,     3,  -383,    27,    73,  -383,  -383,  -383,   879,   -24,
-    -383,  -383,   113,  -383,  -383,  -383,  -383,    20,    51,    60,
-    -383,    21,   879,   -13,   -13,  -383,  -383,  -383,  -383,  -383,
-      62,  -383,  -383,  -383,  -383,  -383,  -383,  -383,  -383,  -383,
-    -383,  -383,  -383,  -383,  -383,   156,   162,   164,   480,  -383,
-     113,    76,  -383,  -383,   -25,  -383,  -383,  -383,  -383,  -383,
-     992,  -383,   149,    37,   170,   157,  -383,  -383,  -383,  -383,
-     900,   941,  -383,    81,    83,  -383,  -383,   -25,    34,    87,
-     643,  -383,  -383,   900,  -383,   130,   999,    32,   243,    27,
-    -383,  -383,  -383,  -383,  -383,  -383,  -383,  -383,  -383,  -383,
-    -383,  -383,  -383,  -383,  -383,  -383,   900,   900,   900,   900,
-     900,   900,   900,  -383,  -383,   900,   900,   900,   900,   900,
-     900,   900,  -383,    27,  -383,    22,  -383,  -383,  -383,  -383,
-    -383,  -383,  -383,   -82,  -383,   122,   148,   184,   153,   185,
-     159,   186,   161,   187,   191,   193,   167,   197,   195,   380,
-    -383,   900,   900,  -383,   900,   680,  -383,    97,   114,   549,
-    -383,  -383,    62,  -383,   549,   549,  -383,  -383,  -383,  -383,
-    -383,  -383,  -383,  -383,  -383,  -383,   549,   879,   108,   109,
-    -383,   549,   118,   111,   183,   116,   117,   119,   121,   549,
-     549,   549,   124,   879,   900,   900,  -383,   196,  -383,  -383,
-    -383,  -383,  -383,  -383,  -383,  -383,  -383,  -383,   123,   132,
-     135,   742,   941,   501,   208,   137,   144,   145,   147,  -383,
-    -383,   -84,   -12,   -25,  -383,   113,  -383,   155,   154,   779,
-    -383,  -383,  -383,  -383,  -383,  -383,  -383,  -383,   941,  -383,
-    -383,  -383,  -383,   158,  -383,   160,   549,   235,   247,   173,
-     549,   165,   900,   900,   900,   900,   900,   174,   175,   176,
-     900,   549,   549,   177,  -383,   941,   941,   941,  -383,  -383,
-     -54,   -57,  -383,    42,  -383,   941,   941,   941,   941,  -383,
-    -383,  -383,  -383,   842,  -383,  -383,   -30,   244,   246,   172,
-     549,   549,   900,  -383,   179,   549,  -383,   180,  -383,  -383,
-    -383,   549,   549,   549,  -383,   194,  -383,   900,   173,   241,
-     181,  -383,   941,  -383,  -383,   190,   198,   199,   202,  -383,
-    -383,  -383,   549,   549,   900,  -383,  -383,  -383,   205,   549,
-     206,   900,  -383,  -383,  -383,   900,   549,   192,   900,   941,
-    -383,   941,   941,   941,   941,   207,   203,   205,   200,   900,
-     214,   549,  -383,   218,  -383,  -383,   220,   212,   222,   223,
-     224,   225,   281,    17,   268,  -383,  -383,   226,  -383,  -383,
-     941,  -383,  -383,  -383,  -383,   549,  -383,    54,    53,   303,
-    -383,   228,  -383,   227,  -383,    54,   549,  -383,   307,   231,
-     265,   549,   310,   311,  -383,   549,   549,  -383,  -383
-};
-
-/* YYPGOTO[NTERM-NUM].  */
-static const short int yypgoto[] =
-{
-    -383,  -383,  -383,   254,   262,   264,   272,  -106,  -105,  -372,
-    -383,   313,   333,  -101,   -38,  -383,   -28,  -383,   -56,   255,
-    -383,   -90,   188,  -223,   312,  -383,  -383,  -383,  -383,  -383,
-    -383,  -383,     4,  -383,    55,  -383,  -383,   331,  -383,  -383,
-    -383,  -383,   356,  -383,  -382,    25,    28,   -81,  -383,   345,
-    -383,  -383,  -383,  -383,  -383,    49,     7,  -383,  -383,    35,
-    -383,  -383
-};
-
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -108
-static const short int yytable[] =
-{
-      72,   170,   194,   195,    87,    77,    30,    21,   197,   291,
-     293,   397,    97,    33,    72,   403,   299,    42,   216,    88,
-      89,   101,   180,   409,   217,   183,   405,   186,   187,   188,
-     189,   190,   191,   192,   193,   306,    21,     7,     8,     9,
-      10,   184,   213,    43,    97,   333,   331,   200,     4,   332,
-     204,   205,   332,   185,   206,   207,   208,   251,   252,    30,
-     212,   253,   154,   186,   187,   188,   189,   190,   191,   192,
-     193,   -48,   341,    41,    99,   179,   332,    47,   179,    78,
-     101,   254,   255,    24,    25,    26,    27,    34,   148,   149,
-     300,   256,   257,   101,    37,    38,    39,    45,   198,   199,
-     179,   201,   202,   179,   179,   214,   215,   179,   179,   179,
-     209,   210,   211,   179,    82,   241,   242,   396,   243,    85,
-     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,   123,   124,   125,   283,    16,  -107,    17,   173,   228,
-     174,   229,   230,   133,   134,    83,   334,   245,   332,   218,
-     219,   -25,   -25,   404,    84,   258,   -24,   -24,   -49,   266,
-      92,     5,   -23,   -23,   -22,   -22,    93,     6,    94,    72,
-     220,   221,   100,   147,   151,   281,     7,     8,     9,    10,
-     171,   152,   172,   175,   181,    72,   282,   179,   -29,   -28,
-     -27,   -26,   317,   243,   240,   328,   329,   330,   -32,   324,
-     -33,   223,   224,   249,   261,   335,   336,   337,   338,   261,
-     261,   250,   263,   264,   267,   268,   270,   271,   272,   285,
-     284,   261,   273,   274,   265,   275,   261,   276,   286,   269,
-     280,   287,   294,   295,   261,   261,   261,   277,   278,   279,
-     296,   297,   360,   298,   316,   179,   318,   319,   320,   301,
-     310,   304,   179,   186,   187,   188,   189,   190,   191,   192,
-     193,   303,   311,   315,   307,   342,   308,   343,   344,   377,
-     372,   378,   379,   380,   381,   245,   358,   194,   195,   312,
-     321,   322,   323,   327,   179,   349,   351,   359,   385,   375,
-     355,   261,   194,   195,   309,   261,   361,   384,   314,   356,
-     401,   383,   395,   399,   362,   363,   261,   261,   364,   325,
-     326,   369,   371,   382,   386,   388,   179,   389,   390,   391,
-     392,   393,   394,   179,   406,   407,   400,   179,   411,   413,
-     376,   415,   416,   408,   138,   261,   261,   412,   345,   346,
-     261,   179,   139,   350,   140,    80,   261,   261,   261,   352,
-     353,   354,   141,    44,    46,   177,    91,   239,   340,    22,
-      36,   348,   373,   357,     0,     0,     0,   261,   261,     0,
-     365,   366,     0,     0,   261,     0,     0,   370,     0,     0,
-       0,   261,     0,     0,   374,    48,    49,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   261,     0,     0,   387,
-       0,     0,    16,     0,    17,     0,   225,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   226,   227,     0,
-     261,     0,     0,   402,     0,     0,     0,     0,     0,     0,
-       0,   261,     0,     0,   410,     0,   261,     0,     0,   414,
-     261,   261,     0,   417,   418,     0,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-       0,     0,     0,     0,     0,   228,     0,   229,   230,   133,
-     134,     0,     0,     0,     0,     0,     0,     0,   231,     0,
-       0,   232,     0,   233,     0,    48,    49,   234,    95,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    16,     0,    17,     0,    48,    49,     0,    95,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,    62,    63,    16,    64,    17,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   -35,     0,    16,
-       0,    17,     0,     0,     0,    64,     0,     0,     6,   -35,
-     -35,     0,   251,   252,    48,    49,   253,   -35,   -35,   -35,
-     -35,     0,     0,   -35,    18,     0,     0,     0,     0,     0,
-      19,    16,     0,    17,     0,    65,   254,   255,    66,     0,
-       0,    67,     0,    68,    96,     0,   256,   257,     0,     0,
-       0,     0,     0,     0,     0,     0,    65,     0,     0,    66,
-       0,     0,    67,     0,    68,   292,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   112,   113,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,   125,     0,
-       0,     0,     0,     0,   228,     0,   229,   230,   133,   134,
-       0,     0,     0,     0,     0,     0,     0,     0,    48,    49,
-     258,    95,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    16,     0,    17,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   176,
-       0,     0,     0,     0,     0,    48,    49,    64,    95,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    16,     0,    17,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   244,     0,     0,     0,
-       0,     0,     0,     0,    64,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    65,     0,
-       0,    66,     0,     0,    67,     0,    68,    48,    49,     0,
-      95,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,    62,    63,    16,     0,    17,     0,     0,     0,
-       0,     0,     0,     0,     0,    65,     0,     0,    66,     0,
-       0,    67,     0,    68,    48,    49,    64,    95,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    16,     0,    17,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   305,     0,     0,     0,     0,
-       0,     0,     0,    64,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    65,     0,     0,
-      66,     0,   288,    67,     0,    68,     0,    48,    49,     0,
-      95,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    16,     0,    17,     0,     0,     0,
-       0,     0,     0,     0,    65,     0,     0,    66,   339,     0,
-      67,     0,    68,     0,    48,    49,    64,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    16,     0,    17,     0,    48,    49,     0,    95,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    16,    64,    17,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    65,     0,     0,
-      66,     0,     0,    67,    64,    68,    48,    49,     0,    95,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,    62,    63,    16,     0,    17,     0,     0,     0,     0,
-       0,     0,     0,     0,    65,     0,     0,    66,     0,     0,
-      67,     0,    68,     0,     0,    64,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    65,     0,     0,    66,     0,
-       0,    67,     0,    68,    48,    49,     0,   182,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    16,     0,    17,     0,     0,   102,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    65,   103,     0,    66,
-       0,     0,    67,    64,    68,     0,   104,   105,     0,     0,
-       0,     0,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,     0,     0,   129,   130,   131,
-     132,   133,   134,   135,   136,   137,     0,     0,     0,     0,
-       0,     0,     0,     0,    65,     0,     0,    66,     0,     0,
-      67,     0,    68
-};
-
-static const short int yycheck[] =
-{
-      28,    91,   108,   108,    42,    29,    23,     3,   109,   232,
-     233,   383,    68,    30,    42,   397,   100,    20,   100,    32,
-      33,   105,   103,   405,   106,   106,   398,    10,    11,    12,
-      13,    14,    15,    16,    17,   258,    32,    40,    41,    42,
-      43,     9,   143,    46,   100,   102,   100,   128,     0,   106,
-     131,   132,   106,    21,   135,   136,   137,     3,     4,    23,
-     141,     7,    90,    10,    11,    12,    13,    14,    15,    16,
-      17,    96,   102,    94,    70,   103,   106,     4,   106,   103,
-     105,    27,    28,    56,    57,    58,    59,   104,    51,    52,
-     102,    37,    38,   105,    48,    49,    50,    94,   126,   127,
-     128,   129,   130,   131,   132,    83,    84,   135,   136,   137,
-     138,   139,   140,   141,    94,   171,   172,   100,   174,    98,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,   215,    22,     0,    24,   104,    85,
-     106,    87,    88,    89,    90,    94,   104,   175,   106,    27,
-      28,     3,     4,   100,    94,   101,     3,     4,    96,   197,
-       4,    25,     3,     4,     3,     4,     4,    31,     4,   197,
-       3,     4,    96,    24,     4,   213,    40,    41,    42,    43,
-      99,    24,    99,    96,    54,   213,   214,   215,     4,     4,
-       4,     4,   273,   249,   169,   285,   286,   287,     7,   280,
-       7,     4,     7,   106,   179,   295,   296,   297,   298,   184,
-     185,    97,   184,   185,   106,   106,    98,   106,    35,    96,
-      24,   196,   106,   106,   196,   106,   201,   106,    96,   201,
-     106,    96,    24,    96,   209,   210,   211,   209,   210,   211,
-      96,    96,   332,    96,   272,   273,   274,   275,   276,   245,
-      15,    97,   280,    10,    11,    12,    13,    14,    15,    16,
-      17,   106,    15,    98,   106,    21,   106,    21,    96,   359,
-     351,   361,   362,   363,   364,   303,    35,   383,   383,   106,
-     106,   106,   106,   106,   312,   106,   106,   106,   369,    97,
-      96,   266,   398,   398,   266,   270,   106,    97,   270,   327,
-     390,    98,    21,    35,   106,   106,   281,   282,   106,   281,
-     282,   106,   106,   106,   100,    97,   344,    97,   106,    97,
-      97,    97,    97,   351,    21,    97,   100,   355,    21,    64,
-     358,    21,    21,   106,    80,   310,   311,   106,   310,   311,
-     315,   369,    80,   315,    80,    32,   321,   322,   323,   321,
-     322,   323,    80,    20,    23,   100,    44,   169,   303,     3,
-      15,   312,   355,   328,    -1,    -1,    -1,   342,   343,    -1,
-     342,   343,    -1,    -1,   349,    -1,    -1,   349,    -1,    -1,
-      -1,   356,    -1,    -1,   356,     5,     6,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   371,    -1,    -1,   371,
-      -1,    -1,    22,    -1,    24,    -1,    26,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
-     395,    -1,    -1,   395,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   406,    -1,    -1,   406,    -1,   411,    -1,    -1,   411,
-     415,   416,    -1,   415,   416,    -1,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      -1,    -1,    -1,    -1,    -1,    85,    -1,    87,    88,    89,
-      90,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,
-      -1,   101,    -1,   103,    -1,     5,     6,   107,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    -1,    24,    -1,     5,     6,    -1,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    44,    24,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    -1,    22,
-      -1,    24,    -1,    -1,    -1,    44,    -1,    -1,    31,    32,
-      33,    -1,     3,     4,     5,     6,     7,    40,    41,    42,
-      43,    -1,    -1,    46,    47,    -1,    -1,    -1,    -1,    -1,
-      53,    22,    -1,    24,    -1,    95,    27,    28,    98,    -1,
-      -1,   101,    -1,   103,   104,    -1,    37,    38,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    95,    -1,    -1,    98,
-      -1,    -1,   101,    -1,   103,   104,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,    77,    78,    79,    -1,
-      -1,    -1,    -1,    -1,    85,    -1,    87,    88,    89,    90,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,     6,
-     101,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    -1,    24,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
-      -1,    -1,    -1,    -1,    -1,     5,     6,    44,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    95,    -1,
-      -1,    98,    -1,    -1,   101,    -1,   103,     5,     6,    -1,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    95,    -1,    -1,    98,    -1,
-      -1,   101,    -1,   103,     5,     6,    44,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    95,    -1,    -1,
-      98,    -1,   100,   101,    -1,   103,    -1,     5,     6,    -1,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    95,    -1,    -1,    98,    36,    -1,
-     101,    -1,   103,    -1,     5,     6,    44,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    -1,    24,    -1,     5,     6,    -1,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    44,    24,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    95,    -1,    -1,
-      98,    -1,    -1,   101,    44,   103,     5,     6,    -1,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    95,    -1,    -1,    98,    -1,    -1,
-     101,    -1,   103,    -1,    -1,    44,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    95,    -1,    -1,    98,    -1,
-      -1,   101,    -1,   103,     5,     6,    -1,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    -1,    24,    -1,    -1,    34,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    95,    45,    -1,    98,
-      -1,    -1,   101,    44,   103,    -1,    54,    55,    -1,    -1,
-      -1,    -1,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    -1,    -1,    85,    86,    87,
-      88,    89,    90,    91,    92,    93,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    95,    -1,    -1,    98,    -1,    -1,
-     101,    -1,   103
-};
-
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
-static const unsigned char yystos[] =
-{
-       0,   133,   134,   135,     0,    25,    31,    40,    41,    42,
-      43,   120,   147,   149,   150,   156,    22,    24,    47,    53,
-     119,   140,   150,   151,    56,    57,    58,    59,   121,   145,
-      23,   157,   158,    30,   104,   148,   157,    48,    49,    50,
-     137,    94,    20,    46,   120,    94,   145,     4,     5,     6,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    44,    95,    98,   101,   103,   109,
-     122,   123,   124,   125,   126,   140,   153,    29,   103,   146,
-     119,   161,    94,    94,    94,    98,   138,   122,    32,    33,
-     132,   132,     4,     4,     4,     8,   104,   126,   127,   140,
-      96,   105,    34,    45,    54,    55,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,   111,   112,
-     113,   114,   159,   165,   166,   168,   169,    24,    51,    52,
-     136,     4,    24,   139,   124,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,   115,   116,   118,   124,
-     129,    99,    99,   104,   106,    96,    36,   127,   128,   124,
-     155,    54,     8,   155,     9,    21,    10,    11,    12,    13,
-      14,    15,    16,    17,   115,   116,   117,   121,   124,   124,
-     155,   124,   124,   162,   155,   155,   155,   155,   155,   124,
-     124,   124,   155,   121,    83,    84,   100,   106,    27,    28,
-       3,     4,   110,     4,     7,    26,    37,    38,    85,    87,
-      88,    98,   101,   103,   107,   111,   112,   113,   114,   130,
-     153,   126,   126,   126,    36,   124,   142,   143,   144,   106,
-      97,     3,     4,     7,    27,    28,    37,    38,   101,   130,
-     152,   153,   154,   154,   154,   154,   122,   106,   106,   154,
-      98,   106,    35,   106,   106,   106,   106,   154,   154,   154,
-     106,   122,   124,   155,    24,    96,    96,    96,   100,   129,
-     131,   131,   104,   131,    24,    96,    96,    96,    96,   100,
-     102,   140,   141,   106,    97,    36,   131,   106,   106,   154,
-      15,    15,   106,   167,   154,    98,   124,   155,   124,   124,
-     124,   106,   106,   106,   155,   154,   154,   106,   129,   129,
-     129,   100,   106,   102,   104,   129,   129,   129,   129,    36,
-     142,   102,    21,    21,    96,   154,   154,   155,   163,   106,
-     154,   106,   154,   154,   154,    96,   124,   167,    35,   106,
-     129,   106,   106,   106,   106,   154,   154,   163,   164,   106,
-     154,   106,   155,   164,   154,    97,   124,   129,   129,   129,
-     129,   129,   106,    98,    97,   155,   100,   154,    97,    97,
-     106,    97,    97,    97,    97,    21,   100,   117,   160,    35,
-     100,   129,   154,   152,   100,   117,    21,    97,   106,   152,
-     154,    21,   106,    64,   154,    21,    21,   154,   154
-};
-
-#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
+/* Note: there must be only one dollar sign in this file.
+   It is replaced by the list of actions, each action
+   as one case of the switch.  */
 
 #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 yyerrorlab
-
-
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
+#define YYABORT 	goto yyabortlab
+#define YYERROR		goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+   This remains here temporarily to ease the
+   transition to the new meaning of YYERROR, for GCC.
    Once GCC version 2 has supplanted version 1, this can go.  */
-
 #define YYFAIL		goto yyerrlab
-
 #define YYRECOVERING()  (!!yyerrstatus)
-
-#define YYBACKUP(Token, Value)					\
+#define YYBACKUP(token, value) \
 do								\
   if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
+    { yychar = (token), yylval = (value);			\
+      yychar1 = YYTRANSLATE (yychar);				\
       YYPOPSTACK;						\
       goto yybackup;						\
     }								\
   else								\
-    { 								\
-      yyerror ("syntax error: cannot back up");\
-      YYERROR;							\
-    }								\
+    { yyerror ("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).  */
-
-#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)
+#ifndef YYPURE
+#define YYLEX		yylex()
 #endif
 
-/* YYLEX -- calling `yylex' with the right arguments.  */
-
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
 #ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
+#define YYLEX		yylex(&yylval, &yylloc, YYLEX_PARAM)
 #else
-# define YYLEX yylex ()
+#define YYLEX		yylex(&yylval, &yylloc)
+#endif
+#else /* not YYLSP_NEEDED */
+#ifdef YYLEX_PARAM
+#define YYLEX		yylex(&yylval, YYLEX_PARAM)
+#else
+#define YYLEX		yylex(&yylval)
+#endif
+#endif /* not YYLSP_NEEDED */
 #endif
 
-/* Enable debugging if requested.  */
-#if YYDEBUG
+/* If nonreentrant, generate the variables here */
 
-# ifndef YYFPRINTF
-#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYFPRINTF fprintf
-# endif
+#ifndef YYPURE
 
-# define YYDPRINTF(Args)			\
-do {						\
-  if (yydebug)					\
-    YYFPRINTF Args;				\
-} while (0)
+int	yychar;			/*  the lookahead symbol		*/
+YYSTYPE	yylval;			/*  the semantic value of the		*/
+				/*  lookahead symbol			*/
 
-# define YYDSYMPRINT(Args)			\
-do {						\
-  if (yydebug)					\
-    yysymprint Args;				\
-} while (0)
-
-# define YYDSYMPRINTF(Title, Token, Value, Location)		\
-do {								\
-  if (yydebug)							\
-    {								\
-      YYFPRINTF (stderr, "%s ", Title);				\
-      yysymprint (stderr, 					\
-                  Token, 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;
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc;			/*  location data for the lookahead	*/
+				/*  symbol				*/
 #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)
+int yynerrs;			/*  number of parse errors so far       */
+#endif  /* not YYPURE */
 
-
-/*------------------------------------------------.
-| 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;
+#if YYDEBUG != 0
+int yydebug;			/*  nonzero means print parse trace	*/
+/* Since this is uninitialized, it does not stop multiple parsers
+   from coexisting.  */
 #endif
-{
-  int yyi;
-  unsigned int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
-             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)
+/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/
 
-/* 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 YYDSYMPRINTF(Title, Token, Value, Location)
-# define YY_STACK_PRINT(Bottom, Top)
-# define YY_REDUCE_PRINT(Rule)
-#endif /* !YYDEBUG */
-
-
-/* YYINITDEPTH -- initial size of the parser's stacks.  */
 #ifndef	YYINITDEPTH
-# define YYINITDEPTH 200
+#define YYINITDEPTH 200
 #endif
 
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
-   if the built-in stack extension method is used).
+/*  YYMAXDEPTH is the maximum size the stacks can grow to
+    (effective only if the built-in stack extension method is used).  */
 
-   Do not make this value too large; the results are undefined if
-   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
-   evaluated with infinite-precision integer arithmetic.  */
-
-#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
-# undef YYMAXDEPTH
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
 #endif
 
 #ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
+#define YYMAXDEPTH 10000
 #endif
-
 
+/* Define __yy_memcpy.  Note that the size argument
+   should be passed with type unsigned int, because that is what the non-GCC
+   definitions require.  With GCC, __builtin_memcpy takes an arg
+   of type size_t, but it can handle unsigned int.  */
 
-#if YYERROR_VERBOSE
+#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
+#define __yy_memcpy(TO,FROM,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
+#else				/* not GNU C or C++ */
+#ifndef __cplusplus
 
-# ifndef yystrlen
-#  if defined (__GLIBC__) && defined (_STRING_H)
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-static YYSIZE_T
-#   if defined (__STDC__) || defined (__cplusplus)
-yystrlen (const char *yystr)
-#   else
-yystrlen (yystr)
-     const char *yystr;
-#   endif
-{
-  register const char *yys = yystr;
-
-  while (*yys++ != '\0')
-    continue;
-
-  return yys - yystr - 1;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-static char *
-#   if defined (__STDC__) || defined (__cplusplus)
-yystpcpy (char *yydest, const char *yysrc)
-#   else
-yystpcpy (yydest, yysrc)
-     char *yydest;
-     const char *yysrc;
-#   endif
-{
-  register char *yyd = yydest;
-  register const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
-
-  return yyd - 1;
-}
-#  endif
-# endif
-
-#endif /* !YYERROR_VERBOSE */
-
-
-
-#if YYDEBUG
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-#if defined (__STDC__) || defined (__cplusplus)
+/* This is the most reliable way to avoid incompatibilities
+   in available built-in functions on various systems.  */
 static void
-yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
-#else
+__yy_memcpy (to, from, count)
+     char *to;
+     char *from;
+     unsigned int count;
+{
+  register char *f = from;
+  register char *t = to;
+  register int i = count;
+
+  while (i-- > 0)
+    *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+   in available built-in functions on various systems.  */
 static void
-yysymprint (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE *yyvaluep;
+__yy_memcpy (char *to, char *from, unsigned int count)
+{
+  register char *t = to;
+  register char *f = from;
+  register int i = count;
+
+  while (i-- > 0)
+    *t++ = *f++;
+}
+
 #endif
-{
-  /* Pacify ``unused variable'' warnings.  */
-  (void) yyvaluep;
-
-  if (yytype < YYNTOKENS)
-    {
-      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-# ifdef YYPRINT
-      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# endif
-    }
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-
-  switch (yytype)
-    {
-      default:
-        break;
-    }
-  YYFPRINTF (yyoutput, ")");
-}
-
-#endif /* ! YYDEBUG */
-/*-----------------------------------------------.
-| Release the memory associated to this symbol.  |
-`-----------------------------------------------*/
-
-#if defined (__STDC__) || defined (__cplusplus)
-static void
-yydestruct (int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yydestruct (yytype, yyvaluep)
-    int yytype;
-    YYSTYPE *yyvaluep;
 #endif
-{
-  /* Pacify ``unused variable'' warnings.  */
-  (void) yyvaluep;
-
-  switch (yytype)
-    {
-
-      default:
-        break;
-    }
-}
 
+#line 217 "/usr/share/bison.simple"
 
-/* Prevent warnings from -Wmissing-prototypes.  */
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+   into yyparse.  The argument should have type void *.
+   It should actually point to an object.
+   Grammar actions can access the variable by casting it
+   to the proper pointer type.  */
 
 #ifdef YYPARSE_PARAM
-# if defined (__STDC__) || defined (__cplusplus)
-int yyparse (void *YYPARSE_PARAM);
-# else
-int yyparse ();
-# endif
-#else /* ! YYPARSE_PARAM */
-#if defined (__STDC__) || defined (__cplusplus)
+#ifdef __cplusplus
+#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL
+#else /* not __cplusplus */
+#define YYPARSE_PARAM_ARG YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+#endif /* not __cplusplus */
+#else /* not YYPARSE_PARAM */
+#define YYPARSE_PARAM_ARG
+#define YYPARSE_PARAM_DECL
+#endif /* not YYPARSE_PARAM */
+
+/* Prevent warning if -Wstrict-prototypes.  */
+#ifdef __GNUC__
+#ifdef YYPARSE_PARAM
+int yyparse (void *);
+#else
 int yyparse (void);
-#else
-int yyparse ();
 #endif
-#endif /* ! YYPARSE_PARAM */
+#endif
 
-
-
-/* The lookahead symbol.  */
-int yychar;
-
-/* The semantic value of the lookahead symbol.  */
-YYSTYPE yylval;
-
-/* Number of syntax errors so far.  */
-int yynerrs;
-
-
-
-/*----------.
-| yyparse.  |
-`----------*/
-
-#ifdef YYPARSE_PARAM
-# if defined (__STDC__) || defined (__cplusplus)
-int yyparse (void *YYPARSE_PARAM)
-# else
-int yyparse (YYPARSE_PARAM)
-  void *YYPARSE_PARAM;
-# endif
-#else /* ! YYPARSE_PARAM */
-#if defined (__STDC__) || defined (__cplusplus)
 int
-yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
+yyparse(YYPARSE_PARAM_ARG)
+     YYPARSE_PARAM_DECL
 {
-  
   register int yystate;
   register int yyn;
-  int yyresult;
-  /* Number of tokens to shift before error messages enabled.  */
-  int yyerrstatus;
-  /* Lookahead token as an internal (translated) token number.  */
-  int yytoken = 0;
-
-  /* Three stacks and their tools:
-     `yyss': related to states,
-     `yyvs': related to semantic values,
-     `yyls': related to locations.
-
-     Refer to the stacks thru separate pointers, to allow yyoverflow
-     to reallocate them elsewhere.  */
-
-  /* The state stack.  */
-  short int yyssa[YYINITDEPTH];
-  short int *yyss = yyssa;
-  register short int *yyssp;
-
-  /* The semantic value stack.  */
-  YYSTYPE yyvsa[YYINITDEPTH];
-  YYSTYPE *yyvs = yyvsa;
+  register short *yyssp;
   register YYSTYPE *yyvsp;
+  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
+  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */
 
+  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
+  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/
 
+  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
+  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */
 
+#ifdef YYLSP_NEEDED
+  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
+  YYLTYPE *yyls = yylsa;
+  YYLTYPE *yylsp;
+
+#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
+#else
 #define YYPOPSTACK   (yyvsp--, yyssp--)
+#endif
 
-  YYSIZE_T yystacksize = YYINITDEPTH;
+  int yystacksize = YYINITDEPTH;
+  int yyfree_stacks = 0;
 
-  /* The variables used to return semantic value and location from the
-     action routines.  */
-  YYSTYPE yyval;
+#ifdef YYPURE
+  int yychar;
+  YYSTYPE yylval;
+  int yynerrs;
+#ifdef YYLSP_NEEDED
+  YYLTYPE yylloc;
+#endif
+#endif
 
+  YYSTYPE yyval;		/*  the variable used to return		*/
+				/*  semantic values from the action	*/
+				/*  routines				*/
 
-  /* When reducing, the number of symbols on the RHS of the reduced
-     rule.  */
   int yylen;
 
-  YYDPRINTF ((stderr, "Starting parse\n"));
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Starting parse\n");
+#endif
 
   yystate = 0;
   yyerrstatus = 0;
@@ -2398,97 +1949,110 @@
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
 
-  yyssp = yyss;
+  yyssp = yyss - 1;
   yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+  yylsp = yyls;
+#endif
 
+/* Push a new state, which is found in  yystate  .  */
+/* In all cases, when you get here, the value and location stacks
+   have just been pushed. so pushing a state here evens the stacks.  */
+yynewstate:
 
-  goto yysetstate;
+  *++yyssp = yystate;
 
-/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
-`------------------------------------------------------------*/
- yynewstate:
-  /* In all cases, when you get here, the value and location stacks
-     have just been pushed. so pushing a state here evens the stacks.
-     */
-  yyssp++;
-
- yysetstate:
-  *yyssp = yystate;
-
-  if (yyss + yystacksize - 1 <= yyssp)
+  if (yyssp >= yyss + yystacksize - 1)
     {
+      /* Give user a chance to reallocate the stack */
+      /* Use copies of these so that the &'s don't force the real ones into memory. */
+      YYSTYPE *yyvs1 = yyvs;
+      short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+      YYLTYPE *yyls1 = yyls;
+#endif
+
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      int size = yyssp - yyss + 1;
 
 #ifdef yyoverflow
-      {
-	/* Give user a chance to reallocate the stack. Use copies of
-	   these so that the &'s don't force the real ones into
-	   memory.  */
-	YYSTYPE *yyvs1 = yyvs;
-	short int *yyss1 = yyss;
+      /* Each stack pointer address is followed by the size of
+	 the data in use in that stack, in bytes.  */
+#ifdef YYLSP_NEEDED
+      /* This used to be a conditional around just the two extra args,
+	 but that might be undefined if yyoverflow is a macro.  */
+      yyoverflow("parser stack overflow",
+		 &yyss1, size * sizeof (*yyssp),
+		 &yyvs1, size * sizeof (*yyvsp),
+		 &yyls1, size * sizeof (*yylsp),
+		 &yystacksize);
+#else
+      yyoverflow("parser stack overflow",
+		 &yyss1, size * sizeof (*yyssp),
+		 &yyvs1, size * sizeof (*yyvsp),
+		 &yystacksize);
+#endif
 
-
-	/* 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",
-		    &yyss1, yysize * sizeof (*yyssp),
-		    &yyvs1, yysize * sizeof (*yyvsp),
-
-		    &yystacksize);
-
-	yyss = yyss1;
-	yyvs = yyvs1;
-      }
+      yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+      yyls = yyls1;
+#endif
 #else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyoverflowlab;
-# else
       /* Extend the stack our own way.  */
-      if (YYMAXDEPTH <= yystacksize)
-	goto yyoverflowlab;
+      if (yystacksize >= YYMAXDEPTH)
+	{
+	  yyerror("parser stack overflow");
+	  if (yyfree_stacks)
+	    {
+	      free (yyss);
+	      free (yyvs);
+#ifdef YYLSP_NEEDED
+	      free (yyls);
+#endif
+	    }
+	  return 2;
+	}
       yystacksize *= 2;
-      if (YYMAXDEPTH < yystacksize)
+      if (yystacksize > YYMAXDEPTH)
 	yystacksize = YYMAXDEPTH;
-
-      {
-	short int *yyss1 = yyss;
-	union yyalloc *yyptr =
-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-	if (! yyptr)
-	  goto yyoverflowlab;
-	YYSTACK_RELOCATE (yyss);
-	YYSTACK_RELOCATE (yyvs);
-
-#  undef YYSTACK_RELOCATE
-	if (yyss1 != yyssa)
-	  YYSTACK_FREE (yyss1);
-      }
-# endif
+#ifndef YYSTACK_USE_ALLOCA
+      yyfree_stacks = 1;
+#endif
+      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
+      __yy_memcpy ((char *)yyss, (char *)yyss1,
+		   size * (unsigned int) sizeof (*yyssp));
+      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
+      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
+		   size * (unsigned int) sizeof (*yyvsp));
+#ifdef YYLSP_NEEDED
+      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
+      __yy_memcpy ((char *)yyls, (char *)yyls1,
+		   size * (unsigned int) sizeof (*yylsp));
+#endif
 #endif /* no yyoverflow */
 
-      yyssp = yyss + yysize - 1;
-      yyvsp = yyvs + yysize - 1;
+      yyssp = yyss + size - 1;
+      yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+      yylsp = yyls + size - 1;
+#endif
 
+#if YYDEBUG != 0
+      if (yydebug)
+	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
-
-      if (yyss + yystacksize - 1 <= yyssp)
+      if (yyssp >= yyss + yystacksize - 1)
 	YYABORT;
     }
 
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Entering state %d\n", yystate);
+#endif
 
   goto yybackup;
-
-/*-----------.
-| yybackup.  |
-`-----------*/
-yybackup:
+ yybackup:
 
 /* Do appropriate processing given the current state.  */
 /* Read a lookahead token if we need one and don't already have one.  */
@@ -2497,236 +2061,251 @@
   /* First try to decide what to do without reference to lookahead token.  */
 
   yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
+  if (yyn == YYFLAG)
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* yychar is either YYEMPTY or YYEOF
+     or a valid token in external form.  */
+
   if (yychar == YYEMPTY)
     {
-      YYDPRINTF ((stderr, "Reading a token: "));
+#if YYDEBUG != 0
+      if (yydebug)
+	fprintf(stderr, "Reading a token: ");
+#endif
       yychar = YYLEX;
     }
 
-  if (yychar <= YYEOF)
+  /* Convert token to internal form (in yychar1) for indexing tables with */
+
+  if (yychar <= 0)		/* This means end of input. */
     {
-      yychar = yytoken = YYEOF;
-      YYDPRINTF ((stderr, "Now at end of input.\n"));
+      yychar1 = 0;
+      yychar = YYEOF;		/* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+      if (yydebug)
+	fprintf(stderr, "Now at end of input.\n");
+#endif
     }
   else
     {
-      yytoken = YYTRANSLATE (yychar);
-      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
+      yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+      if (yydebug)
+	{
+	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+	  /* Give the individual parser a way to print the precise meaning
+	     of a token, for further debugging info.  */
+#ifdef YYPRINT
+	  YYPRINT (stderr, yychar, yylval);
+#endif
+	  fprintf (stderr, ")\n");
+	}
+#endif
     }
 
-  /* If the proper action on seeing token YYTOKEN is to reduce or to
-     detect an error, take that action.  */
-  yyn += yytoken;
-  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+  yyn += yychar1;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
     goto yydefault;
+
   yyn = yytable[yyn];
-  if (yyn <= 0)
+
+  /* yyn is what to do for this token type in this state.
+     Negative => reduce, -yyn is rule number.
+     Positive => shift, yyn is new state.
+       New state is final state => don't bother to shift,
+       just return success.
+     0, or most negative number => error.  */
+
+  if (yyn < 0)
     {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
+      if (yyn == YYFLAG)
 	goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
+  else if (yyn == 0)
+    goto yyerrlab;
 
   if (yyn == YYFINAL)
     YYACCEPT;
 
   /* Shift the lookahead token.  */
-  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
+#endif
 
   /* Discard the token being shifted unless it is eof.  */
   if (yychar != YYEOF)
     yychar = YYEMPTY;
 
   *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+  *++yylsp = yylloc;
+#endif
 
-
-  /* Count tokens shifted since error; after three, turn off error
-     status.  */
-  if (yyerrstatus)
-    yyerrstatus--;
+  /* count tokens shifted since error; after three, turn off error status.  */
+  if (yyerrstatus) yyerrstatus--;
 
   yystate = yyn;
   goto yynewstate;
 
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state.  |
-`-----------------------------------------------------------*/
+/* Do the default action for the current state.  */
 yydefault:
+
   yyn = yydefact[yystate];
   if (yyn == 0)
     goto yyerrlab;
-  goto yyreduce;
 
-
-/*-----------------------------.
-| yyreduce -- Do a reduction.  |
-`-----------------------------*/
+/* Do a reduction.  yyn is the number of a rule to reduce with.  */
 yyreduce:
-  /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
+  if (yylen > 0)
+    yyval = yyvsp[1-yylen]; /* implement default value of the action */
 
-  /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
-
-     Otherwise, the following line sets YYVAL to garbage.
-     This behavior is undocumented and Bison
-     users should not rely upon it.  Assigning to YYVAL
-     unconditionally makes the parser a bit smaller, and it avoids a
-     GCC warning that YYVAL may be used uninitialized.  */
-  yyval = yyvsp[1-yylen];
-
-
-  YY_REDUCE_PRINT (yyn);
-  switch (yyn)
+#if YYDEBUG != 0
+  if (yydebug)
     {
-        case 3:
-#line 984 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+      int i;
+
+      fprintf (stderr, "Reducing via rule %d (line %d), ",
+	       yyn, yyrline[yyn]);
+
+      /* Print the symbols being reduced, and their result.  */
+      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+	fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+    }
+#endif
+
+
+  switch (yyn) {
+
+case 2:
+#line 984 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
   if (yyvsp[0].UIntVal > (uint32_t)INT32_MAX)     // Outside of my range!
     ThrowException("Value too large for type!");
   yyval.SIntVal = (int32_t)yyvsp[0].UIntVal;
-;}
-    break;
-
-  case 5:
-#line 992 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+;
+    break;}
+case 4:
+#line 992 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
   if (yyvsp[0].UInt64Val > (uint64_t)INT64_MAX)     // Outside of my range!
     ThrowException("Value too large for type!");
   yyval.SInt64Val = (int64_t)yyvsp[0].UInt64Val;
-;}
-    break;
-
-  case 34:
-#line 1015 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+;
+    break;}
+case 33:
+#line 1015 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.StrVal = yyvsp[-1].StrVal;
-  ;}
-    break;
-
-  case 35:
-#line 1018 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 34:
+#line 1018 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.StrVal = 0;
-  ;}
-    break;
-
-  case 36:
-#line 1022 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::InternalLinkage; ;}
-    break;
-
-  case 37:
-#line 1023 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::LinkOnceLinkage; ;}
-    break;
-
-  case 38:
-#line 1024 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::WeakLinkage; ;}
-    break;
-
-  case 39:
-#line 1025 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::AppendingLinkage; ;}
-    break;
-
-  case 40:
-#line 1026 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.Linkage = GlobalValue::ExternalLinkage; ;}
-    break;
-
-  case 41:
-#line 1028 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.UIntVal = CallingConv::C; ;}
-    break;
-
-  case 42:
-#line 1029 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.UIntVal = CallingConv::C; ;}
-    break;
-
-  case 43:
-#line 1030 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.UIntVal = CallingConv::Fast; ;}
-    break;
-
-  case 44:
-#line 1031 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.UIntVal = CallingConv::Cold; ;}
-    break;
-
-  case 45:
-#line 1032 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 35:
+#line 1022 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.Linkage = GlobalValue::InternalLinkage; ;
+    break;}
+case 36:
+#line 1023 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.Linkage = GlobalValue::LinkOnceLinkage; ;
+    break;}
+case 37:
+#line 1024 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.Linkage = GlobalValue::WeakLinkage; ;
+    break;}
+case 38:
+#line 1025 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.Linkage = GlobalValue::AppendingLinkage; ;
+    break;}
+case 39:
+#line 1026 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.Linkage = GlobalValue::ExternalLinkage; ;
+    break;}
+case 40:
+#line 1028 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.UIntVal = CallingConv::C; ;
+    break;}
+case 41:
+#line 1029 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.UIntVal = CallingConv::C; ;
+    break;}
+case 42:
+#line 1030 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.UIntVal = CallingConv::Fast; ;
+    break;}
+case 43:
+#line 1031 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.UIntVal = CallingConv::Cold; ;
+    break;}
+case 44:
+#line 1032 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
                    if ((unsigned)yyvsp[0].UInt64Val != yyvsp[0].UInt64Val)
                      ThrowException("Calling conv too large!");
                    yyval.UIntVal = yyvsp[0].UInt64Val;
-                 ;}
-    break;
-
-  case 47:
-#line 1045 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ;}
-    break;
-
-  case 49:
-#line 1046 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ;}
-    break;
-
-  case 50:
-#line 1048 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+                 ;
+    break;}
+case 46:
+#line 1045 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ;
+    break;}
+case 48:
+#line 1046 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ;
+    break;}
+case 49:
+#line 1048 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (!UpRefs.empty())
       ThrowException("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
     yyval.TypeVal = yyvsp[0].TypeVal;
-  ;}
-    break;
-
-  case 64:
-#line 1059 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 63:
+#line 1059 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.TypeVal = new PATypeHolder(OpaqueType::get());
-  ;}
-    break;
-
-  case 65:
-#line 1062 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 64:
+#line 1062 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType);
-  ;}
-    break;
-
-  case 66:
-#line 1065 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {            // Named types are also simple types...
+  ;
+    break;}
+case 65:
+#line 1065 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{            // Named types are also simple types...
   yyval.TypeVal = new PATypeHolder(getTypeVal(yyvsp[0].ValIDVal));
-;}
-    break;
-
-  case 67:
-#line 1071 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {                   // Type UpReference
+;
+    break;}
+case 66:
+#line 1071 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{                   // Type UpReference
     if (yyvsp[0].UInt64Val > (uint64_t)~0U) ThrowException("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");
-  ;}
-    break;
-
-  case 68:
-#line 1078 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {           // Function derived type?
+  ;
+    break;}
+case 67:
+#line 1078 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{           // Function derived type?
     std::vector<const Type*> Params;
     for (std::list<llvm::PATypeHolder>::iterator I = yyvsp[-1].TypeList->begin(),
            E = yyvsp[-1].TypeList->end(); I != E; ++I)
@@ -2737,20 +2316,18 @@
     yyval.TypeVal = new PATypeHolder(HandleUpRefs(FunctionType::get(*yyvsp[-3].TypeVal,Params,isVarArg)));
     delete yyvsp[-1].TypeList;      // Delete the argument list
     delete yyvsp[-3].TypeVal;      // Delete the return type handle
-  ;}
-    break;
-
-  case 69:
-#line 1090 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {          // Sized array type?
+  ;
+    break;}
+case 68:
+#line 1090 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{          // Sized array type?
     yyval.TypeVal = new PATypeHolder(HandleUpRefs(ArrayType::get(*yyvsp[-1].TypeVal, (unsigned)yyvsp[-3].UInt64Val)));
     delete yyvsp[-1].TypeVal;
-  ;}
-    break;
-
-  case 70:
-#line 1094 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {          // Packed array type?
+  ;
+    break;}
+case 69:
+#line 1094 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{          // Packed array type?
      const llvm::Type* ElemTy = yyvsp[-1].TypeVal->get();
      if ((unsigned)yyvsp[-3].UInt64Val != yyvsp[-3].UInt64Val) {
         ThrowException("Unsigned result not equal to signed result");
@@ -2760,12 +2337,11 @@
      }
      yyval.TypeVal = new PATypeHolder(HandleUpRefs(PackedType::get(*yyvsp[-1].TypeVal, (unsigned)yyvsp[-3].UInt64Val)));
      delete yyvsp[-1].TypeVal;
-  ;}
-    break;
-
-  case 71:
-#line 1105 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {                        // Structure type?
+  ;
+    break;}
+case 70:
+#line 1105 "/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)
@@ -2773,63 +2349,55 @@
 
     yyval.TypeVal = new PATypeHolder(HandleUpRefs(StructType::get(Elements)));
     delete yyvsp[-1].TypeList;
-  ;}
-    break;
-
-  case 72:
-#line 1114 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {                                  // Empty structure type?
+  ;
+    break;}
+case 71:
+#line 1114 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{                                  // Empty structure type?
     yyval.TypeVal = new PATypeHolder(StructType::get(std::vector<const Type*>()));
-  ;}
-    break;
-
-  case 73:
-#line 1117 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {                             // Pointer type?
+  ;
+    break;}
+case 72:
+#line 1117 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{                             // Pointer type?
     yyval.TypeVal = new PATypeHolder(HandleUpRefs(PointerType::get(*yyvsp[-1].TypeVal)));
     delete yyvsp[-1].TypeVal;
-  ;}
-    break;
-
-  case 74:
-#line 1125 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 73:
+#line 1125 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.TypeList = new std::list<PATypeHolder>();
     yyval.TypeList->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal;
-  ;}
-    break;
-
-  case 75:
-#line 1129 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 74:
+#line 1129 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     (yyval.TypeList=yyvsp[-2].TypeList)->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal;
-  ;}
-    break;
-
-  case 77:
-#line 1135 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 76:
+#line 1135 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     (yyval.TypeList=yyvsp[-2].TypeList)->push_back(Type::VoidTy);
-  ;}
-    break;
-
-  case 78:
-#line 1138 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 77:
+#line 1138 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     (yyval.TypeList = new std::list<PATypeHolder>())->push_back(Type::VoidTy);
-  ;}
-    break;
-
-  case 79:
-#line 1141 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 78:
+#line 1141 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.TypeList = new std::list<PATypeHolder>();
-  ;}
-    break;
-
-  case 80:
-#line 1151 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { // Nonempty unsized arr
+  ;
+    break;}
+case 79:
+#line 1151 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ // Nonempty unsized arr
     const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-3].TypeVal->get());
     if (ATy == 0)
       ThrowException("Cannot make array constant with type: '" + 
@@ -2853,12 +2421,11 @@
 
     yyval.ConstVal = ConstantArray::get(ATy, *yyvsp[-1].ConstVector);
     delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
-  ;}
-    break;
-
-  case 81:
-#line 1176 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 80:
+#line 1176 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-2].TypeVal->get());
     if (ATy == 0)
       ThrowException("Cannot make array constant with type: '" + 
@@ -2870,12 +2437,11 @@
                      " arguments, but has size of " + itostr(NumElements) +"!");
     yyval.ConstVal = ConstantArray::get(ATy, std::vector<Constant*>());
     delete yyvsp[-2].TypeVal;
-  ;}
-    break;
-
-  case 82:
-#line 1189 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 81:
+#line 1189 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-2].TypeVal->get());
     if (ATy == 0)
       ThrowException("Cannot make array constant with type: '" + 
@@ -2902,12 +2468,11 @@
     free(yyvsp[0].StrVal);
     yyval.ConstVal = ConstantArray::get(ATy, Vals);
     delete yyvsp[-2].TypeVal;
-  ;}
-    break;
-
-  case 83:
-#line 1217 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { // Nonempty unsized arr
+  ;
+    break;}
+case 82:
+#line 1217 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ // Nonempty unsized arr
     const PackedType *PTy = dyn_cast<PackedType>(yyvsp[-3].TypeVal->get());
     if (PTy == 0)
       ThrowException("Cannot make packed constant with type: '" + 
@@ -2931,12 +2496,11 @@
 
     yyval.ConstVal = ConstantPacked::get(PTy, *yyvsp[-1].ConstVector);
     delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
-  ;}
-    break;
-
-  case 84:
-#line 1242 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 83:
+#line 1242 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     const StructType *STy = dyn_cast<StructType>(yyvsp[-3].TypeVal->get());
     if (STy == 0)
       ThrowException("Cannot make struct constant with type: '" + 
@@ -2955,12 +2519,11 @@
 
     yyval.ConstVal = ConstantStruct::get(STy, *yyvsp[-1].ConstVector);
     delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
-  ;}
-    break;
-
-  case 85:
-#line 1262 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 84:
+#line 1262 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     const StructType *STy = dyn_cast<StructType>(yyvsp[-2].TypeVal->get());
     if (STy == 0)
       ThrowException("Cannot make struct constant with type: '" + 
@@ -2971,12 +2534,11 @@
 
     yyval.ConstVal = ConstantStruct::get(STy, std::vector<Constant*>());
     delete yyvsp[-2].TypeVal;
-  ;}
-    break;
-
-  case 86:
-#line 1274 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 85:
+#line 1274 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     const PointerType *PTy = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
     if (PTy == 0)
       ThrowException("Cannot make null pointer constant with type: '" + 
@@ -2984,20 +2546,18 @@
 
     yyval.ConstVal = ConstantPointerNull::get(PTy);
     delete yyvsp[-1].TypeVal;
-  ;}
-    break;
-
-  case 87:
-#line 1283 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 86:
+#line 1283 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ConstVal = UndefValue::get(yyvsp[-1].TypeVal->get());
     delete yyvsp[-1].TypeVal;
-  ;}
-    break;
-
-  case 88:
-#line 1287 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 87:
+#line 1287 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     const PointerType *Ty = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
     if (Ty == 0)
       ThrowException("Global const reference must be a pointer type!");
@@ -3055,74 +2615,66 @@
 
     yyval.ConstVal = cast<GlobalValue>(V);
     delete yyvsp[-1].TypeVal;            // Free the type handle
-  ;}
-    break;
-
-  case 89:
-#line 1346 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 88:
+#line 1346 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (yyvsp[-1].TypeVal->get() != yyvsp[0].ConstVal->getType())
       ThrowException("Mismatched types for constant expression!");
     yyval.ConstVal = yyvsp[0].ConstVal;
     delete yyvsp[-1].TypeVal;
-  ;}
-    break;
-
-  case 90:
-#line 1352 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 89:
+#line 1352 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     const Type *Ty = yyvsp[-1].TypeVal->get();
     if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty))
       ThrowException("Cannot create a null initialized value of this type!");
     yyval.ConstVal = Constant::getNullValue(Ty);
     delete yyvsp[-1].TypeVal;
-  ;}
-    break;
-
-  case 91:
-#line 1360 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {      // integral constants
+  ;
+    break;}
+case 90:
+#line 1360 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{      // integral constants
     if (!ConstantSInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].SInt64Val))
       ThrowException("Constant value doesn't fit in type!");
     yyval.ConstVal = ConstantSInt::get(yyvsp[-1].PrimType, yyvsp[0].SInt64Val);
-  ;}
-    break;
-
-  case 92:
-#line 1365 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {            // integral constants
+  ;
+    break;}
+case 91:
+#line 1365 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{            // integral constants
     if (!ConstantUInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].UInt64Val))
       ThrowException("Constant value doesn't fit in type!");
     yyval.ConstVal = ConstantUInt::get(yyvsp[-1].PrimType, yyvsp[0].UInt64Val);
-  ;}
-    break;
-
-  case 93:
-#line 1370 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {                      // Boolean constants
+  ;
+    break;}
+case 92:
+#line 1370 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{                      // Boolean constants
     yyval.ConstVal = ConstantBool::True;
-  ;}
-    break;
-
-  case 94:
-#line 1373 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {                     // Boolean constants
+  ;
+    break;}
+case 93:
+#line 1373 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{                     // Boolean constants
     yyval.ConstVal = ConstantBool::False;
-  ;}
-    break;
-
-  case 95:
-#line 1376 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {                   // Float & Double constants
+  ;
+    break;}
+case 94:
+#line 1376 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{                   // Float & Double constants
     if (!ConstantFP::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].FPVal))
       ThrowException("Floating point constant invalid for type!!");
     yyval.ConstVal = ConstantFP::get(yyvsp[-1].PrimType, yyvsp[0].FPVal);
-  ;}
-    break;
-
-  case 96:
-#line 1383 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 95:
+#line 1383 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (!yyvsp[-3].ConstVal->getType()->isFirstClassType())
       ThrowException("cast constant expression from a non-primitive type: '" +
                      yyvsp[-3].ConstVal->getType()->getDescription() + "'!");
@@ -3131,12 +2683,11 @@
                      yyvsp[-1].TypeVal->get()->getDescription() + "'!");
     yyval.ConstVal = ConstantExpr::getCast(yyvsp[-3].ConstVal, yyvsp[-1].TypeVal->get());
     delete yyvsp[-1].TypeVal;
-  ;}
-    break;
-
-  case 97:
-#line 1393 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 96:
+#line 1393 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (!isa<PointerType>(yyvsp[-2].ConstVal->getType()))
       ThrowException("GetElementPtr requires a pointer operand!");
 
@@ -3166,23 +2717,21 @@
     delete yyvsp[-1].ValueList;
 
     yyval.ConstVal = ConstantExpr::getGetElementPtr(yyvsp[-2].ConstVal, IdxVec);
-  ;}
-    break;
-
-  case 98:
-#line 1424 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 97:
+#line 1424 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (yyvsp[-5].ConstVal->getType() != Type::BoolTy)
       ThrowException("Select condition must be of boolean type!");
     if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
       ThrowException("Select operand types must match!");
     yyval.ConstVal = ConstantExpr::getSelect(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  ;}
-    break;
-
-  case 99:
-#line 1431 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 98:
+#line 1431 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
       ThrowException("Binary operator types must match!");
     // HACK: llvm 1.3 and earlier used to emit invalid pointer constant exprs.
@@ -3202,98 +2751,86 @@
                              ConstantExpr::getCast(yyvsp[-1].ConstVal, IntPtrTy));
       yyval.ConstVal = ConstantExpr::getCast(yyval.ConstVal, yyvsp[-3].ConstVal->getType());
     }
-  ;}
-    break;
-
-  case 100:
-#line 1452 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 99:
+#line 1452 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
       ThrowException("Logical operator types must match!");
     if (!yyvsp[-3].ConstVal->getType()->isIntegral())
       ThrowException("Logical operands must have integral types!");
     yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  ;}
-    break;
-
-  case 101:
-#line 1459 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 100:
+#line 1459 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
       ThrowException("setcc operand types must match!");
     yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  ;}
-    break;
-
-  case 102:
-#line 1464 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 101:
+#line 1464 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (yyvsp[-1].ConstVal->getType() != Type::UByteTy)
       ThrowException("Shift count for shift constant must be unsigned byte!");
     if (!yyvsp[-3].ConstVal->getType()->isInteger())
       ThrowException("Shift constant expression requires integer operand!");
     yyval.ConstVal = ConstantExpr::get(yyvsp[-5].OtherOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
-  ;}
-    break;
-
-  case 103:
-#line 1474 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 102:
+#line 1474 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     (yyval.ConstVector = yyvsp[-2].ConstVector)->push_back(yyvsp[0].ConstVal);
-  ;}
-    break;
-
-  case 104:
-#line 1477 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 103:
+#line 1477 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ConstVector = new std::vector<Constant*>();
     yyval.ConstVector->push_back(yyvsp[0].ConstVal);
-  ;}
-    break;
-
-  case 105:
-#line 1484 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.BoolVal = false; ;}
-    break;
-
-  case 106:
-#line 1484 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.BoolVal = true; ;}
-    break;
-
-  case 107:
-#line 1494 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 104:
+#line 1484 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.BoolVal = false; ;
+    break;}
+case 105:
+#line 1484 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.BoolVal = true; ;
+    break;}
+case 106:
+#line 1494 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
   yyval.ModuleVal = ParserResult = yyvsp[0].ModuleVal;
   CurModule.ModuleDone();
-;}
-    break;
-
-  case 108:
-#line 1501 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+;
+    break;}
+case 107:
+#line 1501 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ModuleVal = yyvsp[-1].ModuleVal;
     CurFun.FunctionDone();
-  ;}
-    break;
-
-  case 109:
-#line 1505 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 108:
+#line 1505 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ModuleVal = yyvsp[-1].ModuleVal;
-  ;}
-    break;
-
-  case 110:
-#line 1508 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 109:
+#line 1508 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ModuleVal = yyvsp[-1].ModuleVal;
-  ;}
-    break;
-
-  case 111:
-#line 1511 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 110:
+#line 1511 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ModuleVal = CurModule.CurrentModule;
     // Emit an error if there are any unresolved types left.
     if (!CurModule.LateResolveTypes.empty()) {
@@ -3303,12 +2840,11 @@
       else
         ThrowException("Reference to an undefined type: #" + itostr(DID.Num));
     }
-  ;}
-    break;
-
-  case 112:
-#line 1524 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 111:
+#line 1524 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     // Eagerly resolve types.  This is not an optimization, this is a
     // requirement that is due to the fact that we could have this:
     //
@@ -3327,174 +2863,151 @@
     }
 
     delete yyvsp[0].TypeVal;
-  ;}
-    break;
-
-  case 113:
-#line 1544 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {       // Function prototypes can be in const pool
-  ;}
-    break;
-
-  case 114:
-#line 1546 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 112:
+#line 1544 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{       // Function prototypes can be in const pool
+  ;
+    break;}
+case 113:
+#line 1546 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (yyvsp[0].ConstVal == 0) ThrowException("Global value initializer is not a constant!");
     ParseGlobalVariable(yyvsp[-3].StrVal, yyvsp[-2].Linkage, yyvsp[-1].BoolVal, yyvsp[0].ConstVal->getType(), yyvsp[0].ConstVal);
-  ;}
-    break;
-
-  case 115:
-#line 1550 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 114:
+#line 1550 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     ParseGlobalVariable(yyvsp[-3].StrVal, GlobalValue::ExternalLinkage, yyvsp[-1].BoolVal, *yyvsp[0].TypeVal, 0);
     delete yyvsp[0].TypeVal;
-  ;}
-    break;
-
-  case 116:
-#line 1554 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { 
-  ;}
-    break;
-
-  case 117:
-#line 1556 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
-  ;}
-    break;
-
-  case 118:
-#line 1558 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { 
-  ;}
-    break;
-
-  case 119:
-#line 1563 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.Endianness = Module::BigEndian; ;}
-    break;
-
-  case 120:
-#line 1564 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.Endianness = Module::LittleEndian; ;}
-    break;
-
-  case 121:
-#line 1566 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 115:
+#line 1554 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ 
+  ;
+    break;}
+case 116:
+#line 1556 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
+  ;
+    break;}
+case 117:
+#line 1558 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ 
+  ;
+    break;}
+case 118:
+#line 1563 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.Endianness = Module::BigEndian; ;
+    break;}
+case 119:
+#line 1564 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.Endianness = Module::LittleEndian; ;
+    break;}
+case 120:
+#line 1566 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     CurModule.CurrentModule->setEndianness(yyvsp[0].Endianness);
-  ;}
-    break;
-
-  case 122:
-#line 1569 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 121:
+#line 1569 "/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
       ThrowException("Invalid pointer size: '" + utostr(yyvsp[0].UInt64Val) + "'!");
-  ;}
-    break;
-
-  case 123:
-#line 1577 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 122:
+#line 1577 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     CurModule.CurrentModule->setTargetTriple(yyvsp[0].StrVal);
     free(yyvsp[0].StrVal);
-  ;}
-    break;
-
-  case 125:
-#line 1584 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 124:
+#line 1584 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
           CurModule.CurrentModule->addLibrary(yyvsp[0].StrVal);
           free(yyvsp[0].StrVal);
-        ;}
-    break;
-
-  case 126:
-#line 1588 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+        ;
+    break;}
+case 125:
+#line 1588 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
           CurModule.CurrentModule->addLibrary(yyvsp[0].StrVal);
           free(yyvsp[0].StrVal);
-        ;}
-    break;
-
-  case 127:
-#line 1592 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
-        ;}
-    break;
-
-  case 131:
-#line 1601 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.StrVal = 0; ;}
-    break;
-
-  case 132:
-#line 1603 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+        ;
+    break;}
+case 126:
+#line 1592 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
+        ;
+    break;}
+case 130:
+#line 1601 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.StrVal = 0; ;
+    break;}
+case 131:
+#line 1603 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
   if (*yyvsp[-1].TypeVal == Type::VoidTy)
     ThrowException("void typed arguments are invalid!");
   yyval.ArgVal = new std::pair<PATypeHolder*, char*>(yyvsp[-1].TypeVal, yyvsp[0].StrVal);
-;}
-    break;
-
-  case 133:
-#line 1609 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+;
+    break;}
+case 132:
+#line 1609 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ArgList = yyvsp[-2].ArgList;
     yyvsp[-2].ArgList->push_back(*yyvsp[0].ArgVal);
     delete yyvsp[0].ArgVal;
-  ;}
-    break;
-
-  case 134:
-#line 1614 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 133:
+#line 1614 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ArgList = new std::vector<std::pair<PATypeHolder*,char*> >();
     yyval.ArgList->push_back(*yyvsp[0].ArgVal);
     delete yyvsp[0].ArgVal;
-  ;}
-    break;
-
-  case 135:
-#line 1620 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 134:
+#line 1620 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ArgList = yyvsp[0].ArgList;
-  ;}
-    break;
-
-  case 136:
-#line 1623 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 135:
+#line 1623 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ArgList = yyvsp[-2].ArgList;
     yyval.ArgList->push_back(std::pair<PATypeHolder*,
                             char*>(new PATypeHolder(Type::VoidTy), 0));
-  ;}
-    break;
-
-  case 137:
-#line 1628 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 136:
+#line 1628 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ArgList = new std::vector<std::pair<PATypeHolder*,char*> >();
     yyval.ArgList->push_back(std::make_pair(new PATypeHolder(Type::VoidTy), (char*)0));
-  ;}
-    break;
-
-  case 138:
-#line 1632 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 137:
+#line 1632 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ArgList = 0;
-  ;}
-    break;
-
-  case 139:
-#line 1636 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 138:
+#line 1636 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
   UnEscapeLexed(yyvsp[-3].StrVal);
   std::string FunctionName(yyvsp[-3].StrVal);
   free(yyvsp[-3].StrVal);  // Free strdup'd memory!
@@ -3572,92 +3085,80 @@
 
     delete yyvsp[-1].ArgList;                     // We're now done with the argument list
   }
-;}
-    break;
-
-  case 142:
-#line 1718 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+;
+    break;}
+case 141:
+#line 1718 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
   yyval.FunctionVal = CurFun.CurrentFunction;
 
   // Make sure that we keep track of the linkage type even if there was a
   // previous "declare".
   yyval.FunctionVal->setLinkage(yyvsp[-2].Linkage);
-;}
-    break;
-
-  case 145:
-#line 1728 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+;
+    break;}
+case 144:
+#line 1728 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
   yyval.FunctionVal = yyvsp[-1].FunctionVal;
-;}
-    break;
-
-  case 146:
-#line 1732 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { CurFun.isDeclare = true; ;}
-    break;
-
-  case 147:
-#line 1732 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+;
+    break;}
+case 145:
+#line 1732 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ CurFun.isDeclare = true; ;
+    break;}
+case 146:
+#line 1732 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
   yyval.FunctionVal = CurFun.CurrentFunction;
   CurFun.FunctionDone();
-;}
-    break;
-
-  case 148:
-#line 1741 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {    // A reference to a direct constant
+;
+    break;}
+case 147:
+#line 1741 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{    // A reference to a direct constant
     yyval.ValIDVal = ValID::create(yyvsp[0].SInt64Val);
-  ;}
-    break;
-
-  case 149:
-#line 1744 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 148:
+#line 1744 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ValIDVal = ValID::create(yyvsp[0].UInt64Val);
-  ;}
-    break;
-
-  case 150:
-#line 1747 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {                     // Perhaps it's an FP constant?
+  ;
+    break;}
+case 149:
+#line 1747 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{                     // Perhaps it's an FP constant?
     yyval.ValIDVal = ValID::create(yyvsp[0].FPVal);
-  ;}
-    break;
-
-  case 151:
-#line 1750 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 150:
+#line 1750 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ValIDVal = ValID::create(ConstantBool::True);
-  ;}
-    break;
-
-  case 152:
-#line 1753 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 151:
+#line 1753 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ValIDVal = ValID::create(ConstantBool::False);
-  ;}
-    break;
-
-  case 153:
-#line 1756 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 152:
+#line 1756 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ValIDVal = ValID::createNull();
-  ;}
-    break;
-
-  case 154:
-#line 1759 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 153:
+#line 1759 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ValIDVal = ValID::createUndef();
-  ;}
-    break;
-
-  case 155:
-#line 1762 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { // Nonempty unsized packed vector
+  ;
+    break;}
+case 154:
+#line 1762 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ // Nonempty unsized packed vector
     const Type *ETy = (*yyvsp[-1].ConstVector)[0]->getType();
     int NumElements = yyvsp[-1].ConstVector->size(); 
     
@@ -3680,74 +3181,65 @@
 
     yyval.ValIDVal = ValID::create(ConstantPacked::get(pt, *yyvsp[-1].ConstVector));
     delete PTy; delete yyvsp[-1].ConstVector;
-  ;}
-    break;
-
-  case 156:
-#line 1786 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 155:
+#line 1786 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ValIDVal = ValID::create(yyvsp[0].ConstVal);
-  ;}
-    break;
-
-  case 157:
-#line 1793 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {  // Is it an integer reference...?
+  ;
+    break;}
+case 156:
+#line 1793 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{  // Is it an integer reference...?
     yyval.ValIDVal = ValID::create(yyvsp[0].SIntVal);
-  ;}
-    break;
-
-  case 158:
-#line 1796 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {                   // Is it a named reference...?
+  ;
+    break;}
+case 157:
+#line 1796 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{                   // Is it a named reference...?
     yyval.ValIDVal = ValID::create(yyvsp[0].StrVal);
-  ;}
-    break;
-
-  case 161:
-#line 1807 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 160:
+#line 1807 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ValueVal = getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal); delete yyvsp[-1].TypeVal;
-  ;}
-    break;
-
-  case 162:
-#line 1811 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 161:
+#line 1811 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.FunctionVal = yyvsp[-1].FunctionVal;
-  ;}
-    break;
-
-  case 163:
-#line 1814 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { // Do not allow functions with 0 basic blocks   
+  ;
+    break;}
+case 162:
+#line 1814 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ // Do not allow functions with 0 basic blocks   
     yyval.FunctionVal = yyvsp[-1].FunctionVal;
-  ;}
-    break;
-
-  case 164:
-#line 1822 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 163:
+#line 1822 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     setValueName(yyvsp[0].TermInstVal, yyvsp[-1].StrVal);
     InsertValue(yyvsp[0].TermInstVal);
 
     yyvsp[-2].BasicBlockVal->getInstList().push_back(yyvsp[0].TermInstVal);
     InsertValue(yyvsp[-2].BasicBlockVal);
     yyval.BasicBlockVal = yyvsp[-2].BasicBlockVal;
-  ;}
-    break;
-
-  case 165:
-#line 1831 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 164:
+#line 1831 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyvsp[-1].BasicBlockVal->getInstList().push_back(yyvsp[0].InstVal);
     yyval.BasicBlockVal = yyvsp[-1].BasicBlockVal;
-  ;}
-    break;
-
-  case 166:
-#line 1835 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 165:
+#line 1835 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.BasicBlockVal = CurBB = getBBVal(ValID::create((int)CurFun.NextBBNum++), true);
 
     // Make sure to move the basic block to the correct location in the
@@ -3756,12 +3248,11 @@
     Function::BasicBlockListType &BBL = 
       CurFun.CurrentFunction->getBasicBlockList();
     BBL.splice(BBL.end(), BBL, yyval.BasicBlockVal);
-  ;}
-    break;
-
-  case 167:
-#line 1845 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 166:
+#line 1845 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.BasicBlockVal = CurBB = getBBVal(ValID::create(yyvsp[0].StrVal), true);
 
     // Make sure to move the basic block to the correct location in the
@@ -3770,40 +3261,35 @@
     Function::BasicBlockListType &BBL = 
       CurFun.CurrentFunction->getBasicBlockList();
     BBL.splice(BBL.end(), BBL, yyval.BasicBlockVal);
-  ;}
-    break;
-
-  case 168:
-#line 1856 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {              // Return with a result...
+  ;
+    break;}
+case 167:
+#line 1856 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{              // Return with a result...
     yyval.TermInstVal = new ReturnInst(yyvsp[0].ValueVal);
-  ;}
-    break;
-
-  case 169:
-#line 1859 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {                                       // Return with no result...
+  ;
+    break;}
+case 168:
+#line 1859 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{                                       // Return with no result...
     yyval.TermInstVal = new ReturnInst();
-  ;}
-    break;
-
-  case 170:
-#line 1862 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {                         // Unconditional Branch...
+  ;
+    break;}
+case 169:
+#line 1862 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{                         // Unconditional Branch...
     yyval.TermInstVal = new BranchInst(getBBVal(yyvsp[0].ValIDVal));
-  ;}
-    break;
-
-  case 171:
-#line 1865 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {  
+  ;
+    break;}
+case 170:
+#line 1865 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{  
     yyval.TermInstVal = new BranchInst(getBBVal(yyvsp[-3].ValIDVal), getBBVal(yyvsp[0].ValIDVal), getVal(Type::BoolTy, yyvsp[-6].ValIDVal));
-  ;}
-    break;
-
-  case 172:
-#line 1868 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 171:
+#line 1868 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     SwitchInst *S = new SwitchInst(getVal(yyvsp[-7].PrimType, yyvsp[-6].ValIDVal), getBBVal(yyvsp[-3].ValIDVal), yyvsp[-1].JumpTable->size());
     yyval.TermInstVal = S;
 
@@ -3816,20 +3302,18 @@
         ThrowException("Switch case is constant, but not a simple integer!");
     }
     delete yyvsp[-1].JumpTable;
-  ;}
-    break;
-
-  case 173:
-#line 1882 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 172:
+#line 1882 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     SwitchInst *S = new SwitchInst(getVal(yyvsp[-6].PrimType, yyvsp[-5].ValIDVal), getBBVal(yyvsp[-2].ValIDVal), 0);
     yyval.TermInstVal = S;
-  ;}
-    break;
-
-  case 174:
-#line 1887 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 173:
+#line 1887 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     const PointerType *PFTy;
     const FunctionType *Ty;
 
@@ -3880,38 +3364,34 @@
   
     delete yyvsp[-10].TypeVal;
     delete yyvsp[-7].ValueList;
-  ;}
-    break;
-
-  case 175:
-#line 1939 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 174:
+#line 1939 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.TermInstVal = new UnwindInst();
-  ;}
-    break;
-
-  case 176:
-#line 1942 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 175:
+#line 1942 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.TermInstVal = new UnreachableInst();
-  ;}
-    break;
-
-  case 177:
-#line 1948 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 176:
+#line 1948 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.JumpTable = yyvsp[-5].JumpTable;
     Constant *V = cast<Constant>(getValNonImprovising(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal));
     if (V == 0)
       ThrowException("May only switch on a constant pool value!");
 
     yyval.JumpTable->push_back(std::make_pair(V, getBBVal(yyvsp[0].ValIDVal)));
-  ;}
-    break;
-
-  case 178:
-#line 1956 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 177:
+#line 1956 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.JumpTable = new std::vector<std::pair<Constant*, BasicBlock*> >();
     Constant *V = cast<Constant>(getValNonImprovising(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal));
 
@@ -3919,75 +3399,66 @@
       ThrowException("May only switch on a constant pool value!");
 
     yyval.JumpTable->push_back(std::make_pair(V, getBBVal(yyvsp[0].ValIDVal)));
-  ;}
-    break;
-
-  case 179:
-#line 1966 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 178:
+#line 1966 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
   // Is this definition named?? if so, assign the name...
   setValueName(yyvsp[0].InstVal, yyvsp[-1].StrVal);
   InsertValue(yyvsp[0].InstVal);
   yyval.InstVal = yyvsp[0].InstVal;
-;}
-    break;
-
-  case 180:
-#line 1973 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {    // Used for PHI nodes
+;
+    break;}
+case 179:
+#line 1973 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{    // Used for PHI nodes
     yyval.PHIList = new std::list<std::pair<Value*, BasicBlock*> >();
     yyval.PHIList->push_back(std::make_pair(getVal(*yyvsp[-5].TypeVal, yyvsp[-3].ValIDVal), getBBVal(yyvsp[-1].ValIDVal)));
     delete yyvsp[-5].TypeVal;
-  ;}
-    break;
-
-  case 181:
-#line 1978 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 180:
+#line 1978 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.PHIList = yyvsp[-6].PHIList;
     yyvsp[-6].PHIList->push_back(std::make_pair(getVal(yyvsp[-6].PHIList->front().first->getType(), yyvsp[-3].ValIDVal),
                                  getBBVal(yyvsp[-1].ValIDVal)));
-  ;}
-    break;
-
-  case 182:
-#line 1985 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {    // Used for call statements, and memory insts...
+  ;
+    break;}
+case 181:
+#line 1985 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{    // Used for call statements, and memory insts...
     yyval.ValueList = new std::vector<Value*>();
     yyval.ValueList->push_back(yyvsp[0].ValueVal);
-  ;}
-    break;
-
-  case 183:
-#line 1989 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 182:
+#line 1989 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.ValueList = yyvsp[-2].ValueList;
     yyvsp[-2].ValueList->push_back(yyvsp[0].ValueVal);
-  ;}
-    break;
-
-  case 185:
-#line 1995 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { yyval.ValueList = 0; ;}
-    break;
-
-  case 186:
-#line 1997 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 184:
+#line 1995 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.ValueList = 0; ;
+    break;}
+case 185:
+#line 1997 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.BoolVal = true;
-  ;}
-    break;
-
-  case 187:
-#line 2000 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 186:
+#line 2000 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.BoolVal = false;
-  ;}
-    break;
-
-  case 188:
-#line 2006 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 187:
+#line 2006 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (!(*yyvsp[-3].TypeVal)->isInteger() && !(*yyvsp[-3].TypeVal)->isFloatingPoint() && 
         !isa<PackedType>((*yyvsp[-3].TypeVal).get()))
       ThrowException(
@@ -3998,24 +3469,22 @@
     if (yyval.InstVal == 0)
       ThrowException("binary operator returned null!");
     delete yyvsp[-3].TypeVal;
-  ;}
-    break;
-
-  case 189:
-#line 2018 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 188:
+#line 2018 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (!(*yyvsp[-3].TypeVal)->isIntegral())
       ThrowException("Logical operator requires integral operands!");
     yyval.InstVal = BinaryOperator::create(yyvsp[-4].BinaryOpVal, getVal(*yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal), getVal(*yyvsp[-3].TypeVal, yyvsp[0].ValIDVal));
     if (yyval.InstVal == 0)
       ThrowException("binary operator returned null!");
     delete yyvsp[-3].TypeVal;
-  ;}
-    break;
-
-  case 190:
-#line 2026 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 189:
+#line 2026 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if(isa<PackedType>((*yyvsp[-3].TypeVal).get())) {
       ThrowException(
         "PackedTypes currently not supported in setcc instructions!");
@@ -4024,12 +3493,11 @@
     if (yyval.InstVal == 0)
       ThrowException("binary operator returned null!");
     delete yyvsp[-3].TypeVal;
-  ;}
-    break;
-
-  case 191:
-#line 2036 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 190:
+#line 2036 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     std::cerr << "WARNING: Use of eliminated 'not' instruction:"
               << " Replacing with 'xor'.\n";
 
@@ -4040,54 +3508,49 @@
     yyval.InstVal = BinaryOperator::create(Instruction::Xor, yyvsp[0].ValueVal, Ones);
     if (yyval.InstVal == 0)
       ThrowException("Could not create a xor instruction!");
-  ;}
-    break;
-
-  case 192:
-#line 2048 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 191:
+#line 2048 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (yyvsp[0].ValueVal->getType() != Type::UByteTy)
       ThrowException("Shift amount must be ubyte!");
     if (!yyvsp[-2].ValueVal->getType()->isInteger())
       ThrowException("Shift constant expression requires integer operand!");
     yyval.InstVal = new ShiftInst(yyvsp[-3].OtherOpVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
-  ;}
-    break;
-
-  case 193:
-#line 2055 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 192:
+#line 2055 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (!yyvsp[0].TypeVal->get()->isFirstClassType())
       ThrowException("cast instruction to a non-primitive type: '" +
                      yyvsp[0].TypeVal->get()->getDescription() + "'!");
     yyval.InstVal = new CastInst(yyvsp[-2].ValueVal, *yyvsp[0].TypeVal);
     delete yyvsp[0].TypeVal;
-  ;}
-    break;
-
-  case 194:
-#line 2062 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 193:
+#line 2062 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (yyvsp[-4].ValueVal->getType() != Type::BoolTy)
       ThrowException("select condition must be boolean!");
     if (yyvsp[-2].ValueVal->getType() != yyvsp[0].ValueVal->getType())
       ThrowException("select value types should match!");
     yyval.InstVal = new SelectInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
-  ;}
-    break;
-
-  case 195:
-#line 2069 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 194:
+#line 2069 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     NewVarArgs = true;
     yyval.InstVal = new VAArgInst(yyvsp[-2].ValueVal, *yyvsp[0].TypeVal);
     delete yyvsp[0].TypeVal;
-  ;}
-    break;
-
-  case 196:
-#line 2074 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 195:
+#line 2074 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     ObsoleteVarArgs = true;
     const Type* ArgTy = yyvsp[-2].ValueVal->getType();
     Function* NF = CurModule.CurrentModule->
@@ -4105,12 +3568,11 @@
     CurBB->getInstList().push_back(new StoreInst(bar, foo));
     yyval.InstVal = new VAArgInst(foo, *yyvsp[0].TypeVal);
     delete yyvsp[0].TypeVal;
-  ;}
-    break;
-
-  case 197:
-#line 2093 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 196:
+#line 2093 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     ObsoleteVarArgs = true;
     const Type* ArgTy = yyvsp[-2].ValueVal->getType();
     Function* NF = CurModule.CurrentModule->
@@ -4131,12 +3593,11 @@
     CurBB->getInstList().push_back(tmp);
     yyval.InstVal = new LoadInst(foo);
     delete yyvsp[0].TypeVal;
-  ;}
-    break;
-
-  case 198:
-#line 2115 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 197:
+#line 2115 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     const Type *Ty = yyvsp[0].PHIList->front().first->getType();
     if (!Ty->isFirstClassType())
       ThrowException("PHI node operands must be of first class type!");
@@ -4149,12 +3610,11 @@
       yyvsp[0].PHIList->pop_front();
     }
     delete yyvsp[0].PHIList;  // Free the list...
-  ;}
-    break;
-
-  case 199:
-#line 2129 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 198:
+#line 2129 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     const PointerType *PFTy;
     const FunctionType *Ty;
 
@@ -4210,89 +3670,106 @@
     cast<CallInst>(yyval.InstVal)->setCallingConv(yyvsp[-5].UIntVal);
     delete yyvsp[-4].TypeVal;
     delete yyvsp[-1].ValueList;
-  ;}
-    break;
-
-  case 200:
-#line 2186 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 199:
+#line 2186 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.InstVal = yyvsp[0].InstVal;
-  ;}
-    break;
-
-  case 201:
-#line 2192 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { 
+  ;
+    break;}
+case 200:
+#line 2192 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ 
     yyval.ValueList = yyvsp[0].ValueList; 
-  ;}
-    break;
-
-  case 202:
-#line 2194 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    { 
+  ;
+    break;}
+case 201:
+#line 2194 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{ 
     yyval.ValueList = new std::vector<Value*>(); 
-  ;}
-    break;
-
-  case 203:
-#line 2198 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 202:
+#line 2198 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.BoolVal = true;
-  ;}
-    break;
-
-  case 204:
-#line 2201 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 203:
+#line 2201 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.BoolVal = false;
-  ;}
-    break;
-
-  case 205:
-#line 2207 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 204:
+#line 2207 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.InstVal = new MallocInst(*yyvsp[0].TypeVal);
     delete yyvsp[0].TypeVal;
-  ;}
-    break;
-
-  case 206:
-#line 2211 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 205:
+#line 2211 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
+    yyval.InstVal = new MallocInst(*yyvsp[-3].TypeVal, 0, yyvsp[0].UInt64Val);
+    delete yyvsp[-3].TypeVal;
+  ;
+    break;}
+case 206:
+#line 2215 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.InstVal = new MallocInst(*yyvsp[-3].TypeVal, getVal(yyvsp[-1].PrimType, yyvsp[0].ValIDVal));
     delete yyvsp[-3].TypeVal;
-  ;}
-    break;
-
-  case 207:
-#line 2215 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 207:
+#line 2219 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
+    yyval.InstVal = new MallocInst(*yyvsp[-6].TypeVal, getVal(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal), yyvsp[0].UInt64Val);
+    delete yyvsp[-6].TypeVal;
+  ;
+    break;}
+case 208:
+#line 2223 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.InstVal = new AllocaInst(*yyvsp[0].TypeVal);
     delete yyvsp[0].TypeVal;
-  ;}
-    break;
-
-  case 208:
-#line 2219 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 209:
+#line 2227 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
+    yyval.InstVal = new AllocaInst(*yyvsp[-3].TypeVal, 0, yyvsp[0].UInt64Val);
+    delete yyvsp[-3].TypeVal;
+  ;
+    break;}
+case 210:
+#line 2231 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     yyval.InstVal = new AllocaInst(*yyvsp[-3].TypeVal, getVal(yyvsp[-1].PrimType, yyvsp[0].ValIDVal));
     delete yyvsp[-3].TypeVal;
-  ;}
-    break;
-
-  case 209:
-#line 2223 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 211:
+#line 2235 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
+    yyval.InstVal = new AllocaInst(*yyvsp[-6].TypeVal, getVal(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal), yyvsp[0].UInt64Val);
+    delete yyvsp[-6].TypeVal;
+  ;
+    break;}
+case 212:
+#line 2239 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (!isa<PointerType>(yyvsp[0].ValueVal->getType()))
       ThrowException("Trying to free nonpointer type " + 
                      yyvsp[0].ValueVal->getType()->getDescription() + "!");
     yyval.InstVal = new FreeInst(yyvsp[0].ValueVal);
-  ;}
-    break;
-
-  case 210:
-#line 2230 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 213:
+#line 2246 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (!isa<PointerType>(yyvsp[-1].TypeVal->get()))
       ThrowException("Can't load from nonpointer type: " +
                      (*yyvsp[-1].TypeVal)->getDescription());
@@ -4301,12 +3778,11 @@
                      (*yyvsp[-1].TypeVal)->getDescription());
     yyval.InstVal = new LoadInst(getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal), "", yyvsp[-3].BoolVal);
     delete yyvsp[-1].TypeVal;
-  ;}
-    break;
-
-  case 211:
-#line 2240 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 214:
+#line 2256 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     const PointerType *PT = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
     if (!PT)
       ThrowException("Can't store to a nonpointer type: " +
@@ -4318,12 +3794,11 @@
 
     yyval.InstVal = new StoreInst(yyvsp[-3].ValueVal, getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal), yyvsp[-5].BoolVal);
     delete yyvsp[-1].TypeVal;
-  ;}
-    break;
-
-  case 212:
-#line 2253 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-    {
+  ;
+    break;}
+case 215:
+#line 2269 "/llvm/lib/AsmParser/llvmAsmParser.y"
+{
     if (!isa<PointerType>(yyvsp[-2].TypeVal->get()))
       ThrowException("getelementptr insn requires pointer operand!");
 
@@ -4343,239 +3818,231 @@
                      (*yyvsp[-2].TypeVal)->getDescription()+ "'!");
     yyval.InstVal = new GetElementPtrInst(getVal(*yyvsp[-2].TypeVal, yyvsp[-1].ValIDVal), *yyvsp[0].ValueList);
     delete yyvsp[-2].TypeVal; delete yyvsp[0].ValueList;
-  ;}
-    break;
-
-
-    }
-
-/* Line 1010 of yacc.c.  */
-#line 4354 "llvmAsmParser.tab.c"
+  ;
+    break;}
+}
+   /* the action file gets copied in in place of this dollarsign */
+#line 543 "/usr/share/bison.simple"
 
   yyvsp -= yylen;
   yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+  yylsp -= yylen;
+#endif
 
-
-  YY_STACK_PRINT (yyss, yyssp);
+#if YYDEBUG != 0
+  if (yydebug)
+    {
+      short *ssp1 = yyss - 1;
+      fprintf (stderr, "state stack now");
+      while (ssp1 != yyssp)
+	fprintf (stderr, " %d", *++ssp1);
+      fprintf (stderr, "\n");
+    }
+#endif
 
   *++yyvsp = yyval;
 
+#ifdef YYLSP_NEEDED
+  yylsp++;
+  if (yylen == 0)
+    {
+      yylsp->first_line = yylloc.first_line;
+      yylsp->first_column = yylloc.first_column;
+      yylsp->last_line = (yylsp-1)->last_line;
+      yylsp->last_column = (yylsp-1)->last_column;
+      yylsp->text = 0;
+    }
+  else
+    {
+      yylsp->last_line = (yylsp+yylen-1)->last_line;
+      yylsp->last_column = (yylsp+yylen-1)->last_column;
+    }
+#endif
 
-  /* Now `shift' the result of the reduction.  Determine what state
-     that goes to, based on the state we popped back to and the rule
-     number reduced by.  */
+  /* Now "shift" the result of the reduction.
+     Determine what state that goes to,
+     based on the state we popped back to
+     and the rule number reduced by.  */
 
   yyn = yyr1[yyn];
 
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
     yystate = yytable[yystate];
   else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+    yystate = yydefgoto[yyn - YYNTBASE];
 
   goto yynewstate;
 
+yyerrlab:   /* here on detecting error */
 
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
-yyerrlab:
-  /* If not already recovering from an error, report this error.  */
-  if (!yyerrstatus)
+  if (! yyerrstatus)
+    /* If not already recovering from an error, report this error.  */
     {
       ++yynerrs;
-#if YYERROR_VERBOSE
+
+#ifdef YYERROR_VERBOSE
       yyn = yypact[yystate];
 
-      if (YYPACT_NINF < yyn && yyn < YYLAST)
+      if (yyn > YYFLAG && yyn < YYLAST)
 	{
-	  YYSIZE_T yysize = 0;
-	  int yytype = YYTRANSLATE (yychar);
-	  const char* yyprefix;
-	  char *yymsg;
-	  int yyx;
+	  int size = 0;
+	  char *msg;
+	  int x, count;
 
-	  /* Start YYX at -YYN if negative to avoid negative indexes in
-	     YYCHECK.  */
-	  int yyxbegin = yyn < 0 ? -yyn : 0;
-
-	  /* Stay within bounds of both yycheck and yytname.  */
-	  int yychecklim = YYLAST - yyn;
-	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-	  int yycount = 0;
-
-	  yyprefix = ", expecting ";
-	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	      {
-		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
-		yycount += 1;
-		if (yycount == 5)
-		  {
-		    yysize = 0;
-		    break;
-		  }
-	      }
-	  yysize += (sizeof ("syntax error, unexpected ")
-		     + yystrlen (yytname[yytype]));
-	  yymsg = (char *) YYSTACK_ALLOC (yysize);
-	  if (yymsg != 0)
+	  count = 0;
+	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
+	  for (x = (yyn < 0 ? -yyn : 0);
+	       x < (sizeof(yytname) / sizeof(char *)); x++)
+	    if (yycheck[x + yyn] == x)
+	      size += strlen(yytname[x]) + 15, count++;
+	  msg = (char *) malloc(size + 15);
+	  if (msg != 0)
 	    {
-	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
-	      yyp = yystpcpy (yyp, yytname[yytype]);
+	      strcpy(msg, "parse error");
 
-	      if (yycount < 5)
+	      if (count < 5)
 		{
-		  yyprefix = ", expecting ";
-		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+		  count = 0;
+		  for (x = (yyn < 0 ? -yyn : 0);
+		       x < (sizeof(yytname) / sizeof(char *)); x++)
+		    if (yycheck[x + yyn] == x)
 		      {
-			yyp = yystpcpy (yyp, yyprefix);
-			yyp = yystpcpy (yyp, yytname[yyx]);
-			yyprefix = " or ";
+			strcat(msg, count == 0 ? ", expecting `" : " or `");
+			strcat(msg, yytname[x]);
+			strcat(msg, "'");
+			count++;
 		      }
 		}
-	      yyerror (yymsg);
-	      YYSTACK_FREE (yymsg);
+	      yyerror(msg);
+	      free(msg);
 	    }
 	  else
-	    yyerror ("syntax error; also virtual memory exhausted");
+	    yyerror ("parse error; also virtual memory exceeded");
 	}
       else
 #endif /* YYERROR_VERBOSE */
-	yyerror ("syntax error");
+	yyerror("parse error");
     }
 
-
+  goto yyerrlab1;
+yyerrlab1:   /* here on error raised explicitly by an action */
 
   if (yyerrstatus == 3)
     {
-      /* If just tried and failed to reuse lookahead token after an
-	 error, discard it.  */
+      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
 
-      if (yychar <= YYEOF)
-        {
-          /* If at end of input, pop the error token,
-	     then the rest of the stack, then return failure.  */
-	  if (yychar == YYEOF)
-	     for (;;)
-	       {
-		 YYPOPSTACK;
-		 if (yyssp == yyss)
-		   YYABORT;
-		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
-		 yydestruct (yystos[*yyssp], yyvsp);
-	       }
-        }
-      else
-	{
-	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
-	  yydestruct (yytoken, &yylval);
-	  yychar = YYEMPTY;
-
-	}
-    }
-
-  /* Else will try to reuse lookahead token after shifting the error
-     token.  */
-  goto yyerrlab1;
-
-
-/*---------------------------------------------------.
-| yyerrorlab -- error raised explicitly by YYERROR.  |
-`---------------------------------------------------*/
-yyerrorlab:
-
-#ifdef __GNUC__
-  /* Pacify GCC when the user code never invokes YYERROR and the label
-     yyerrorlab therefore never appears in user code.  */
-  if (0)
-     goto yyerrorlab;
-#endif
-
-  yyvsp -= yylen;
-  yyssp -= yylen;
-  yystate = *yyssp;
-  goto yyerrlab1;
-
-
-/*-------------------------------------------------------------.
-| yyerrlab1 -- common code for both syntax error and YYERROR.  |
-`-------------------------------------------------------------*/
-yyerrlab1:
-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
-
-  for (;;)
-    {
-      yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
-	{
-	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-	    {
-	      yyn = yytable[yyn];
-	      if (0 < yyn)
-		break;
-	    }
-	}
-
-      /* Pop the current state because it cannot handle the error token.  */
-      if (yyssp == yyss)
+      /* return failure if at end of input */
+      if (yychar == YYEOF)
 	YYABORT;
 
-      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
-      yydestruct (yystos[yystate], yyvsp);
-      YYPOPSTACK;
-      yystate = *yyssp;
-      YY_STACK_PRINT (yyss, yyssp);
+#if YYDEBUG != 0
+      if (yydebug)
+	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
+#endif
+
+      yychar = YYEMPTY;
     }
 
+  /* Else will try to reuse lookahead token
+     after shifting the error token.  */
+
+  yyerrstatus = 3;		/* Each real token shifted decrements this */
+
+  goto yyerrhandle;
+
+yyerrdefault:  /* current state does not do anything special for the error token. */
+
+#if 0
+  /* This is wrong; only states that explicitly want error tokens
+     should shift them.  */
+  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
+  if (yyn) goto yydefault;
+#endif
+
+yyerrpop:   /* pop the current state because it cannot handle the error token */
+
+  if (yyssp == yyss) YYABORT;
+  yyvsp--;
+  yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+  yylsp--;
+#endif
+
+#if YYDEBUG != 0
+  if (yydebug)
+    {
+      short *ssp1 = yyss - 1;
+      fprintf (stderr, "Error: state stack now");
+      while (ssp1 != yyssp)
+	fprintf (stderr, " %d", *++ssp1);
+      fprintf (stderr, "\n");
+    }
+#endif
+
+yyerrhandle:
+
+  yyn = yypact[yystate];
+  if (yyn == YYFLAG)
+    goto yyerrdefault;
+
+  yyn += YYTERROR;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+    goto yyerrdefault;
+
+  yyn = yytable[yyn];
+  if (yyn < 0)
+    {
+      if (yyn == YYFLAG)
+	goto yyerrpop;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+  else if (yyn == 0)
+    goto yyerrpop;
+
   if (yyn == YYFINAL)
     YYACCEPT;
 
-  YYDPRINTF ((stderr, "Shifting error token, "));
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Shifting error token, ");
+#endif
 
   *++yyvsp = yylval;
-
+#ifdef YYLSP_NEEDED
+  *++yylsp = yylloc;
+#endif
 
   yystate = yyn;
   goto yynewstate;
 
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here.  |
-`-------------------------------------*/
-yyacceptlab:
-  yyresult = 0;
-  goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here.  |
-`-----------------------------------*/
-yyabortlab:
-  yyresult = 1;
-  goto yyreturn;
-
-#ifndef yyoverflow
-/*----------------------------------------------.
-| yyoverflowlab -- parser overflow comes here.  |
-`----------------------------------------------*/
-yyoverflowlab:
-  yyerror ("parser stack overflow");
-  yyresult = 2;
-  /* Fall through.  */
+ yyacceptlab:
+  /* YYACCEPT comes here.  */
+  if (yyfree_stacks)
+    {
+      free (yyss);
+      free (yyvs);
+#ifdef YYLSP_NEEDED
+      free (yyls);
 #endif
+    }
+  return 0;
 
-yyreturn:
-#ifndef yyoverflow
-  if (yyss != yyssa)
-    YYSTACK_FREE (yyss);
+ yyabortlab:
+  /* YYABORT comes here.  */
+  if (yyfree_stacks)
+    {
+      free (yyss);
+      free (yyvs);
+#ifdef YYLSP_NEEDED
+      free (yyls);
 #endif
-  return yyresult;
+    }
+  return 1;
 }
-
-
-#line 2276 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
+#line 2292 "/llvm/lib/AsmParser/llvmAsmParser.y"
 
 int yyerror(const char *ErrorMsg) {
   std::string where 
@@ -4589,4 +4056,3 @@
   ThrowException(errMsg);
   return 0;
 }
-
diff --git a/lib/AsmParser/llvmAsmParser.h b/lib/AsmParser/llvmAsmParser.h
index fbd1b9a..082a437 100644
--- a/lib/AsmParser/llvmAsmParser.h
+++ b/lib/AsmParser/llvmAsmParser.h
@@ -1,225 +1,4 @@
-/* A Bison parser, made by GNU Bison 1.875d.  */
-
-/* Skeleton parser for Yacc-like parsing with Bison,
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
-
-/* Tokens.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     ESINT64VAL = 258,
-     EUINT64VAL = 259,
-     SINTVAL = 260,
-     UINTVAL = 261,
-     FPVAL = 262,
-     VOID = 263,
-     BOOL = 264,
-     SBYTE = 265,
-     UBYTE = 266,
-     SHORT = 267,
-     USHORT = 268,
-     INT = 269,
-     UINT = 270,
-     LONG = 271,
-     ULONG = 272,
-     FLOAT = 273,
-     DOUBLE = 274,
-     TYPE = 275,
-     LABEL = 276,
-     VAR_ID = 277,
-     LABELSTR = 278,
-     STRINGCONSTANT = 279,
-     IMPLEMENTATION = 280,
-     ZEROINITIALIZER = 281,
-     TRUETOK = 282,
-     FALSETOK = 283,
-     BEGINTOK = 284,
-     ENDTOK = 285,
-     DECLARE = 286,
-     GLOBAL = 287,
-     CONSTANT = 288,
-     VOLATILE = 289,
-     TO = 290,
-     DOTDOTDOT = 291,
-     NULL_TOK = 292,
-     UNDEF = 293,
-     CONST = 294,
-     INTERNAL = 295,
-     LINKONCE = 296,
-     WEAK = 297,
-     APPENDING = 298,
-     OPAQUE = 299,
-     NOT = 300,
-     EXTERNAL = 301,
-     TARGET = 302,
-     TRIPLE = 303,
-     ENDIAN = 304,
-     POINTERSIZE = 305,
-     LITTLE = 306,
-     BIG = 307,
-     DEPLIBS = 308,
-     CALL = 309,
-     TAIL = 310,
-     CC_TOK = 311,
-     CCC_TOK = 312,
-     FASTCC_TOK = 313,
-     COLDCC_TOK = 314,
-     RET = 315,
-     BR = 316,
-     SWITCH = 317,
-     INVOKE = 318,
-     UNWIND = 319,
-     UNREACHABLE = 320,
-     ADD = 321,
-     SUB = 322,
-     MUL = 323,
-     DIV = 324,
-     REM = 325,
-     AND = 326,
-     OR = 327,
-     XOR = 328,
-     SETLE = 329,
-     SETGE = 330,
-     SETLT = 331,
-     SETGT = 332,
-     SETEQ = 333,
-     SETNE = 334,
-     MALLOC = 335,
-     ALLOCA = 336,
-     FREE = 337,
-     LOAD = 338,
-     STORE = 339,
-     GETELEMENTPTR = 340,
-     PHI_TOK = 341,
-     CAST = 342,
-     SELECT = 343,
-     SHL = 344,
-     SHR = 345,
-     VAARG = 346,
-     VAARG_old = 347,
-     VANEXT_old = 348
-   };
-#endif
-#define ESINT64VAL 258
-#define EUINT64VAL 259
-#define SINTVAL 260
-#define UINTVAL 261
-#define FPVAL 262
-#define VOID 263
-#define BOOL 264
-#define SBYTE 265
-#define UBYTE 266
-#define SHORT 267
-#define USHORT 268
-#define INT 269
-#define UINT 270
-#define LONG 271
-#define ULONG 272
-#define FLOAT 273
-#define DOUBLE 274
-#define TYPE 275
-#define LABEL 276
-#define VAR_ID 277
-#define LABELSTR 278
-#define STRINGCONSTANT 279
-#define IMPLEMENTATION 280
-#define ZEROINITIALIZER 281
-#define TRUETOK 282
-#define FALSETOK 283
-#define BEGINTOK 284
-#define ENDTOK 285
-#define DECLARE 286
-#define GLOBAL 287
-#define CONSTANT 288
-#define VOLATILE 289
-#define TO 290
-#define DOTDOTDOT 291
-#define NULL_TOK 292
-#define UNDEF 293
-#define CONST 294
-#define INTERNAL 295
-#define LINKONCE 296
-#define WEAK 297
-#define APPENDING 298
-#define OPAQUE 299
-#define NOT 300
-#define EXTERNAL 301
-#define TARGET 302
-#define TRIPLE 303
-#define ENDIAN 304
-#define POINTERSIZE 305
-#define LITTLE 306
-#define BIG 307
-#define DEPLIBS 308
-#define CALL 309
-#define TAIL 310
-#define CC_TOK 311
-#define CCC_TOK 312
-#define FASTCC_TOK 313
-#define COLDCC_TOK 314
-#define RET 315
-#define BR 316
-#define SWITCH 317
-#define INVOKE 318
-#define UNWIND 319
-#define UNREACHABLE 320
-#define ADD 321
-#define SUB 322
-#define MUL 323
-#define DIV 324
-#define REM 325
-#define AND 326
-#define OR 327
-#define XOR 328
-#define SETLE 329
-#define SETGE 330
-#define SETLT 331
-#define SETGT 332
-#define SETEQ 333
-#define SETNE 334
-#define MALLOC 335
-#define ALLOCA 336
-#define FREE 337
-#define LOAD 338
-#define STORE 339
-#define GETELEMENTPTR 340
-#define PHI_TOK 341
-#define CAST 342
-#define SELECT 343
-#define SHL 344
-#define SHR 345
-#define VAARG 346
-#define VAARG_old 347
-#define VANEXT_old 348
-
-
-
-
-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 866 "/usr/home/llvm/obj/../lib/AsmParser/llvmAsmParser.y"
-typedef union YYSTYPE {
+typedef union {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
   std::pair<llvm::PATypeHolder*, char*>  *ArgVal;
@@ -258,14 +37,98 @@
   llvm::Instruction::OtherOps             OtherOpVal;
   llvm::Module::Endianness                Endianness;
 } YYSTYPE;
-/* Line 1285 of yacc.c.  */
-#line 263 "llvmAsmParser.tab.h"
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
-#endif
+#define	ESINT64VAL	257
+#define	EUINT64VAL	258
+#define	SINTVAL	259
+#define	UINTVAL	260
+#define	FPVAL	261
+#define	VOID	262
+#define	BOOL	263
+#define	SBYTE	264
+#define	UBYTE	265
+#define	SHORT	266
+#define	USHORT	267
+#define	INT	268
+#define	UINT	269
+#define	LONG	270
+#define	ULONG	271
+#define	FLOAT	272
+#define	DOUBLE	273
+#define	TYPE	274
+#define	LABEL	275
+#define	VAR_ID	276
+#define	LABELSTR	277
+#define	STRINGCONSTANT	278
+#define	IMPLEMENTATION	279
+#define	ZEROINITIALIZER	280
+#define	TRUETOK	281
+#define	FALSETOK	282
+#define	BEGINTOK	283
+#define	ENDTOK	284
+#define	DECLARE	285
+#define	GLOBAL	286
+#define	CONSTANT	287
+#define	VOLATILE	288
+#define	TO	289
+#define	DOTDOTDOT	290
+#define	NULL_TOK	291
+#define	UNDEF	292
+#define	CONST	293
+#define	INTERNAL	294
+#define	LINKONCE	295
+#define	WEAK	296
+#define	APPENDING	297
+#define	OPAQUE	298
+#define	NOT	299
+#define	EXTERNAL	300
+#define	TARGET	301
+#define	TRIPLE	302
+#define	ENDIAN	303
+#define	POINTERSIZE	304
+#define	LITTLE	305
+#define	BIG	306
+#define	ALIGN	307
+#define	DEPLIBS	308
+#define	CALL	309
+#define	TAIL	310
+#define	CC_TOK	311
+#define	CCC_TOK	312
+#define	FASTCC_TOK	313
+#define	COLDCC_TOK	314
+#define	RET	315
+#define	BR	316
+#define	SWITCH	317
+#define	INVOKE	318
+#define	UNWIND	319
+#define	UNREACHABLE	320
+#define	ADD	321
+#define	SUB	322
+#define	MUL	323
+#define	DIV	324
+#define	REM	325
+#define	AND	326
+#define	OR	327
+#define	XOR	328
+#define	SETLE	329
+#define	SETGE	330
+#define	SETLT	331
+#define	SETGT	332
+#define	SETEQ	333
+#define	SETNE	334
+#define	MALLOC	335
+#define	ALLOCA	336
+#define	FREE	337
+#define	LOAD	338
+#define	STORE	339
+#define	GETELEMENTPTR	340
+#define	PHI_TOK	341
+#define	CAST	342
+#define	SELECT	343
+#define	SHL	344
+#define	SHR	345
+#define	VAARG	346
+#define	VAARG_old	347
+#define	VANEXT_old	348
+
 
 extern YYSTYPE llvmAsmlval;
-
-
-
diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y
index c0b7d63..c558978 100644
--- a/lib/AsmParser/llvmAsmParser.y
+++ b/lib/AsmParser/llvmAsmParser.y
@@ -953,7 +953,7 @@
 %token IMPLEMENTATION ZEROINITIALIZER TRUETOK FALSETOK BEGINTOK ENDTOK
 %token DECLARE GLOBAL CONSTANT VOLATILE
 %token TO DOTDOTDOT NULL_TOK UNDEF CONST INTERNAL LINKONCE WEAK  APPENDING
-%token OPAQUE NOT EXTERNAL TARGET TRIPLE ENDIAN POINTERSIZE LITTLE BIG
+%token OPAQUE NOT EXTERNAL TARGET TRIPLE ENDIAN POINTERSIZE LITTLE BIG ALIGN
 %token DEPLIBS CALL TAIL
 %token CC_TOK CCC_TOK FASTCC_TOK COLDCC_TOK
 %type <UIntVal> OptCallingConv
@@ -2208,18 +2208,34 @@
     $$ = new MallocInst(*$2);
     delete $2;
   }
+  | MALLOC Types ',' ALIGN EUINT64VAL {
+    $$ = new MallocInst(*$2, 0, $5);
+    delete $2;
+  }
   | MALLOC Types ',' UINT ValueRef {
     $$ = new MallocInst(*$2, getVal($4, $5));
     delete $2;
   }
+  | MALLOC Types ',' UINT ValueRef ',' ALIGN EUINT64VAL {
+    $$ = new MallocInst(*$2, getVal($4, $5), $8);
+    delete $2;
+  }
   | ALLOCA Types {
     $$ = new AllocaInst(*$2);
     delete $2;
   }
+  | ALLOCA Types ',' ALIGN EUINT64VAL {
+    $$ = new AllocaInst(*$2, 0, $5);
+    delete $2;
+  }
   | ALLOCA Types ',' UINT ValueRef {
     $$ = new AllocaInst(*$2, getVal($4, $5));
     delete $2;
   }
+  | ALLOCA Types ',' UINT ValueRef ',' ALIGN EUINT64VAL {
+    $$ = new AllocaInst(*$2, getVal($4, $5), $8);
+    delete $2;
+  }
   | FREE ResolvedVal {
     if (!isa<PointerType>($2->getType()))
       ThrowException("Trying to free nonpointer type " + 
