[llvm-commits] CVS: llvm/lib/AsmParser/llvmAsmParser.cpp

Chris Lattner lattner at cs.uiuc.edu
Sat Nov 5 22:47:05 PST 2005



Changes in directory llvm/lib/AsmParser:

llvmAsmParser.cpp updated: 1.21 -> 1.22
---
Log message:

regenerate


---
Diffs of the changes:  (+793 -785)

 llvmAsmParser.cpp | 1558 +++++++++++++++++++++++++++---------------------------
 1 files changed, 793 insertions(+), 765 deletions(-)


Index: llvm/lib/AsmParser/llvmAsmParser.cpp
diff -u llvm/lib/AsmParser/llvmAsmParser.cpp:1.21 llvm/lib/AsmParser/llvmAsmParser.cpp:1.22
--- llvm/lib/AsmParser/llvmAsmParser.cpp:1.21	Sun Nov  6 00:34:34 2005
+++ llvm/lib/AsmParser/llvmAsmParser.cpp	Sun Nov  6 00:46:53 2005
@@ -113,6 +113,7 @@
 #include "llvm/SymbolTable.h"
 #include "llvm/Support/GetElementPtrTypeIterator.h"
 #include "llvm/ADT/STLExtras.h"
+#include "llvm/Support/MathExtras.h"
 #include <algorithm>
 #include <iostream>
 #include <list>
@@ -610,7 +611,10 @@
 /// this is a declaration, otherwise it is a definition.
 static void ParseGlobalVariable(char *NameStr,GlobalValue::LinkageTypes Linkage,
                                 bool isConstantGlobal, const Type *Ty,
-                                Constant *Initializer) {
+                                Constant *Initializer, unsigned Align) {
+  if (Align != 0 && !isPowerOf2_32(Align))
+    ThrowException("Global alignment must be a power of two!");
+  
   if (isa<FunctionType>(Ty))
     ThrowException("Cannot declare global vars of function type!");
 
@@ -640,6 +644,7 @@
     GV->setInitializer(Initializer);
     GV->setLinkage(Linkage);
     GV->setConstant(isConstantGlobal);
+    GV->setAlignment(Align);
     InsertValue(GV, CurModule.Values);
     return;
   }
@@ -666,6 +671,7 @@
         if (isConstantGlobal)
           EGV->setConstant(true);
         EGV->setLinkage(Linkage);
+        EGV->setAlignment(Align);
         return;
       }
 
@@ -678,6 +684,7 @@
   GlobalVariable *GV =
     new GlobalVariable(Ty, isConstantGlobal, Linkage, Initializer, Name,
                        CurModule.CurrentModule);
+  GV->setAlignment(Align);
   InsertValue(GV, CurModule.Values);
 }
 
@@ -956,7 +963,7 @@
 }
 
 
-#line 866 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 873 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 typedef union {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
@@ -1006,11 +1013,11 @@
 
 
 
-#define	YYFINAL		426
+#define	YYFINAL		431
 #define	YYFLAG		-32768
 #define	YYNTBASE	109
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 348 ? yytranslate[x] : 171)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 348 ? yytranslate[x] : 172)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1056,24 +1063,24 @@
     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,    88,    92,    94,    96,    98,
+    78,    80,    82,    84,    87,    88,    91,    92,    96,    98,
    100,   102,   104,   106,   108,   110,   112,   114,   116,   118,
-   120,   122,   124,   126,   128,   130,   132,   134,   137,   142,
-   148,   154,   158,   161,   164,   166,   170,   172,   176,   178,
-   179,   184,   188,   192,   197,   202,   206,   209,   212,   215,
-   218,   221,   224,   227,   230,   233,   236,   243,   249,   258,
-   265,   272,   279,   286,   290,   292,   294,   296,   298,   301,
-   304,   307,   309,   314,   317,   323,   329,   333,   338,   339,
-   341,   343,   347,   351,   355,   359,   363,   365,   366,   368,
-   370,   372,   373,   376,   380,   382,   384,   388,   390,   391,
-   398,   400,   402,   406,   408,   410,   413,   414,   418,   420,
-   422,   424,   426,   428,   430,   432,   436,   438,   440,   442,
-   444,   446,   449,   452,   455,   459,   462,   463,   465,   468,
-   471,   475,   485,   495,   504,   518,   520,   522,   529,   535,
-   538,   545,   553,   555,   559,   561,   562,   565,   567,   573,
-   579,   585,   588,   593,   598,   605,   610,   615,   620,   623,
-   631,   633,   636,   637,   639,   640,   644,   651,   655,   662,
-   665,   670,   677
+   120,   122,   124,   126,   128,   130,   132,   134,   136,   138,
+   141,   146,   152,   158,   162,   165,   168,   170,   174,   176,
+   180,   182,   183,   188,   192,   196,   201,   206,   210,   213,
+   216,   219,   222,   225,   228,   231,   234,   237,   240,   247,
+   253,   262,   269,   276,   283,   290,   294,   296,   298,   300,
+   302,   305,   308,   311,   313,   318,   321,   328,   335,   339,
+   344,   345,   347,   349,   353,   357,   361,   365,   369,   371,
+   372,   374,   376,   378,   379,   382,   386,   388,   390,   394,
+   396,   397,   405,   407,   409,   413,   415,   417,   420,   421,
+   425,   427,   429,   431,   433,   435,   437,   439,   443,   445,
+   447,   449,   451,   453,   456,   459,   462,   466,   469,   470,
+   472,   475,   478,   482,   492,   502,   511,   525,   527,   529,
+   536,   542,   545,   552,   560,   562,   566,   568,   569,   572,
+   574,   580,   586,   592,   595,   600,   605,   612,   617,   622,
+   627,   630,   638,   640,   643,   644,   646,   647,   651,   658,
+   662,   669,   672,   677,   684
 };
 
 static const short yyrhs[] = {     5,
@@ -1083,97 +1090,97 @@
      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,   141,    95,     0,     0,    40,     0,    41,
+     0,    19,     0,   142,    95,     0,     0,    40,     0,    41,
      0,    42,     0,    43,     0,     0,     0,    58,     0,    59,
-     0,    60,     0,    57,     4,     0,     0,    96,    53,     4,
-     0,   125,     0,     8,     0,   127,     0,     8,     0,   127,
-     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,   126,
-     0,   154,     0,    97,     4,     0,   124,    98,   129,    99,
-     0,   100,     4,   101,   127,   102,     0,   103,     4,   101,
-   127,   104,     0,   105,   128,   106,     0,   105,   106,     0,
-   127,   107,     0,   127,     0,   128,    96,   127,     0,   128,
-     0,   128,    96,    36,     0,    36,     0,     0,   125,   100,
-   132,   102,     0,   125,   100,   102,     0,   125,   108,    24,
-     0,   125,   103,   132,   104,     0,   125,   105,   132,   106,
-     0,   125,   105,   106,     0,   125,    37,     0,   125,    38,
-     0,   125,   154,     0,   125,   131,     0,   125,    26,     0,
-   115,   110,     0,   116,     4,     0,     9,    27,     0,     9,
-    28,     0,   118,     7,     0,    88,    98,   130,    35,   125,
-    99,     0,    86,    98,   130,   168,    99,     0,    89,    98,
-   130,    96,   130,    96,   130,    99,     0,   111,    98,   130,
-    96,   130,    99,     0,   112,    98,   130,    96,   130,    99,
-     0,   113,    98,   130,    96,   130,    99,     0,   114,    98,
-   130,    96,   130,    99,     0,   132,    96,   130,     0,   130,
-     0,    32,     0,    33,     0,   135,     0,   135,   150,     0,
-   135,   151,     0,   135,    25,     0,   136,     0,   136,   119,
-    20,   123,     0,   136,   151,     0,   136,   119,   120,   133,
-   130,     0,   136,   119,    46,   133,   125,     0,   136,    47,
-   138,     0,   136,    54,    95,   139,     0,     0,    52,     0,
-    51,     0,    49,    95,   137,     0,    50,    95,     4,     0,
-    48,    95,    24,     0,   100,   140,   102,     0,   140,    96,
-    24,     0,    24,     0,     0,    22,     0,    24,     0,   141,
-     0,     0,   125,   142,     0,   144,    96,   143,     0,   143,
-     0,   144,     0,   144,    96,    36,     0,    36,     0,     0,
-   121,   123,   141,    98,   145,    99,     0,    29,     0,   105,
-     0,   120,   146,   147,     0,    30,     0,   106,     0,   157,
-   149,     0,     0,    31,   152,   146,     0,     3,     0,     4,
-     0,     7,     0,    27,     0,    28,     0,    37,     0,    38,
-     0,   103,   132,   104,     0,   131,     0,   109,     0,   141,
-     0,   154,     0,   153,     0,   125,   155,     0,   157,   158,
-     0,   148,   158,     0,   159,   119,   160,     0,   159,   162,
-     0,     0,    23,     0,    61,   156,     0,    61,     8,     0,
-    62,    21,   155,     0,    62,     9,   155,    96,    21,   155,
-    96,    21,   155,     0,    63,   117,   155,    96,    21,   155,
-   100,   161,   102,     0,    63,   117,   155,    96,    21,   155,
-   100,   102,     0,    64,   121,   123,   155,    98,   165,    99,
-    35,    21,   155,    65,    21,   155,     0,    65,     0,    66,
-     0,   161,   117,   153,    96,    21,   155,     0,   117,   153,
-    96,    21,   155,     0,   119,   167,     0,   125,   100,   155,
-    96,   155,   102,     0,   163,    96,   100,   155,    96,   155,
-   102,     0,   156,     0,   164,    96,   156,     0,   164,     0,
-     0,    56,    55,     0,    55,     0,   111,   125,   155,    96,
-   155,     0,   112,   125,   155,    96,   155,     0,   113,   125,
-   155,    96,   155,     0,    45,   156,     0,   114,   156,    96,
-   156,     0,    88,   156,    35,   125,     0,    89,   156,    96,
-   156,    96,   156,     0,    92,   156,    96,   125,     0,    93,
-   156,    96,   125,     0,    94,   156,    96,   125,     0,    87,
-   163,     0,   166,   121,   123,   155,    98,   165,    99,     0,
-   170,     0,    96,   164,     0,     0,    34,     0,     0,    81,
-   125,   122,     0,    81,   125,    96,    15,   155,   122,     0,
-    82,   125,   122,     0,    82,   125,    96,    15,   155,   122,
-     0,    83,   156,     0,   169,    84,   125,   155,     0,   169,
-    85,   156,    96,   125,   155,     0,    86,   125,   155,   168,
-     0
+     0,    60,     0,    57,     4,     0,     0,    53,     4,     0,
+     0,    96,    53,     4,     0,   126,     0,     8,     0,   128,
+     0,     8,     0,   128,     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,   127,     0,   155,     0,    97,     4,     0,
+   125,    98,   130,    99,     0,   100,     4,   101,   128,   102,
+     0,   103,     4,   101,   128,   104,     0,   105,   129,   106,
+     0,   105,   106,     0,   128,   107,     0,   128,     0,   129,
+    96,   128,     0,   129,     0,   129,    96,    36,     0,    36,
+     0,     0,   126,   100,   133,   102,     0,   126,   100,   102,
+     0,   126,   108,    24,     0,   126,   103,   133,   104,     0,
+   126,   105,   133,   106,     0,   126,   105,   106,     0,   126,
+    37,     0,   126,    38,     0,   126,   155,     0,   126,   132,
+     0,   126,    26,     0,   115,   110,     0,   116,     4,     0,
+     9,    27,     0,     9,    28,     0,   118,     7,     0,    88,
+    98,   131,    35,   126,    99,     0,    86,    98,   131,   169,
+    99,     0,    89,    98,   131,    96,   131,    96,   131,    99,
+     0,   111,    98,   131,    96,   131,    99,     0,   112,    98,
+   131,    96,   131,    99,     0,   113,    98,   131,    96,   131,
+    99,     0,   114,    98,   131,    96,   131,    99,     0,   133,
+    96,   131,     0,   131,     0,    32,     0,    33,     0,   136,
+     0,   136,   151,     0,   136,   152,     0,   136,    25,     0,
+   137,     0,   137,   119,    20,   124,     0,   137,   152,     0,
+   137,   119,   120,   134,   131,   123,     0,   137,   119,    46,
+   134,   126,   123,     0,   137,    47,   139,     0,   137,    54,
+    95,   140,     0,     0,    52,     0,    51,     0,    49,    95,
+   138,     0,    50,    95,     4,     0,    48,    95,    24,     0,
+   100,   141,   102,     0,   141,    96,    24,     0,    24,     0,
+     0,    22,     0,    24,     0,   142,     0,     0,   126,   143,
+     0,   145,    96,   144,     0,   144,     0,   145,     0,   145,
+    96,    36,     0,    36,     0,     0,   121,   124,   142,    98,
+   146,    99,   122,     0,    29,     0,   105,     0,   120,   147,
+   148,     0,    30,     0,   106,     0,   158,   150,     0,     0,
+    31,   153,   147,     0,     3,     0,     4,     0,     7,     0,
+    27,     0,    28,     0,    37,     0,    38,     0,   103,   133,
+   104,     0,   132,     0,   109,     0,   142,     0,   155,     0,
+   154,     0,   126,   156,     0,   158,   159,     0,   149,   159,
+     0,   160,   119,   161,     0,   160,   163,     0,     0,    23,
+     0,    61,   157,     0,    61,     8,     0,    62,    21,   156,
+     0,    62,     9,   156,    96,    21,   156,    96,    21,   156,
+     0,    63,   117,   156,    96,    21,   156,   100,   162,   102,
+     0,    63,   117,   156,    96,    21,   156,   100,   102,     0,
+    64,   121,   124,   156,    98,   166,    99,    35,    21,   156,
+    65,    21,   156,     0,    65,     0,    66,     0,   162,   117,
+   154,    96,    21,   156,     0,   117,   154,    96,    21,   156,
+     0,   119,   168,     0,   126,   100,   156,    96,   156,   102,
+     0,   164,    96,   100,   156,    96,   156,   102,     0,   157,
+     0,   165,    96,   157,     0,   165,     0,     0,    56,    55,
+     0,    55,     0,   111,   126,   156,    96,   156,     0,   112,
+   126,   156,    96,   156,     0,   113,   126,   156,    96,   156,
+     0,    45,   157,     0,   114,   157,    96,   157,     0,    88,
+   157,    35,   126,     0,    89,   157,    96,   157,    96,   157,
+     0,    92,   157,    96,   126,     0,    93,   157,    96,   126,
+     0,    94,   157,    96,   126,     0,    87,   164,     0,   167,
+   121,   124,   156,    98,   166,    99,     0,   171,     0,    96,
+   165,     0,     0,    34,     0,     0,    81,   126,   123,     0,
+    81,   126,    96,    15,   156,   123,     0,    82,   126,   123,
+     0,    82,   126,    96,    15,   156,   123,     0,    83,   157,
+     0,   170,    84,   126,   156,     0,   170,    85,   157,    96,
+   126,   156,     0,    86,   126,   156,   169,     0
 };
 
 #endif
 
 #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,  1040,  1040,  1050,  1050,  1051,  1051,
-  1053,  1062,  1062,  1062,  1062,  1062,  1062,  1062,  1063,  1063,
-  1063,  1063,  1063,  1063,  1064,  1067,  1070,  1076,  1083,  1095,
-  1099,  1110,  1119,  1122,  1130,  1134,  1139,  1140,  1143,  1146,
-  1156,  1181,  1194,  1222,  1247,  1267,  1279,  1288,  1292,  1351,
-  1357,  1365,  1370,  1375,  1378,  1381,  1388,  1398,  1429,  1436,
-  1457,  1464,  1469,  1479,  1482,  1489,  1489,  1499,  1506,  1510,
-  1513,  1516,  1529,  1549,  1551,  1555,  1559,  1561,  1563,  1568,
-  1569,  1571,  1574,  1582,  1587,  1589,  1593,  1597,  1605,  1605,
-  1606,  1606,  1608,  1614,  1619,  1625,  1628,  1633,  1637,  1641,
-  1721,  1721,  1723,  1731,  1731,  1733,  1737,  1737,  1746,  1749,
-  1752,  1755,  1758,  1761,  1764,  1767,  1791,  1798,  1801,  1806,
-  1806,  1812,  1816,  1819,  1827,  1836,  1840,  1850,  1861,  1864,
-  1867,  1870,  1873,  1887,  1891,  1944,  1947,  1953,  1961,  1971,
-  1978,  1983,  1990,  1994,  2000,  2000,  2002,  2005,  2011,  2023,
-  2031,  2041,  2053,  2060,  2067,  2074,  2079,  2098,  2120,  2134,
-  2191,  2197,  2199,  2203,  2206,  2212,  2219,  2226,  2233,  2240,
-  2247,  2257,  2270
+   990,   991,   998,   999,  1008,  1008,  1008,  1008,  1008,  1009,
+  1009,  1009,  1010,  1010,  1010,  1010,  1010,  1010,  1012,  1012,
+  1016,  1016,  1016,  1016,  1017,  1017,  1017,  1017,  1018,  1018,
+  1019,  1019,  1022,  1025,  1029,  1029,  1030,  1031,  1032,  1035,
+  1035,  1036,  1037,  1038,  1047,  1047,  1049,  1049,  1059,  1059,
+  1060,  1060,  1062,  1071,  1071,  1071,  1071,  1071,  1071,  1071,
+  1072,  1072,  1072,  1072,  1072,  1072,  1073,  1076,  1079,  1085,
+  1092,  1104,  1108,  1119,  1128,  1131,  1139,  1143,  1148,  1149,
+  1152,  1155,  1165,  1190,  1203,  1231,  1256,  1276,  1288,  1297,
+  1301,  1360,  1366,  1374,  1379,  1384,  1387,  1390,  1397,  1407,
+  1438,  1445,  1466,  1473,  1478,  1488,  1491,  1498,  1498,  1508,
+  1515,  1519,  1522,  1525,  1538,  1558,  1560,  1564,  1568,  1570,
+  1572,  1577,  1578,  1580,  1583,  1591,  1596,  1598,  1602,  1606,
+  1614,  1614,  1615,  1615,  1617,  1623,  1628,  1634,  1637,  1642,
+  1646,  1650,  1733,  1733,  1735,  1743,  1743,  1745,  1749,  1749,
+  1758,  1761,  1764,  1767,  1770,  1773,  1776,  1779,  1803,  1810,
+  1813,  1818,  1818,  1824,  1828,  1831,  1839,  1848,  1852,  1862,
+  1873,  1876,  1879,  1882,  1885,  1899,  1903,  1956,  1959,  1965,
+  1973,  1983,  1990,  1995,  2002,  2006,  2012,  2012,  2014,  2017,
+  2023,  2035,  2043,  2053,  2065,  2072,  2079,  2086,  2091,  2110,
+  2132,  2146,  2203,  2209,  2211,  2215,  2218,  2224,  2231,  2238,
+  2245,  2252,  2259,  2269,  2282
 };
 #endif
 
@@ -1194,15 +1201,15 @@
 "VAARG","VAARG_old","VANEXT_old","'='","','","'\\\\'","'('","')'","'['","'x'",
 "']'","'<'","'>'","'{'","'}'","'*'","'c'","INTVAL","EINT64VAL","ArithmeticOps",
 "LogicalOps","SetCondOps","ShiftOps","SIntType","UIntType","IntType","FPType",
-"OptAssign","OptLinkage","OptCallingConv","OptCAlign","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
+"OptAssign","OptLinkage","OptCallingConv","OptAlign","OptCAlign","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
 
@@ -1212,23 +1219,23 @@
    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,   124,
-   125,   126,   126,   126,   126,   126,   126,   126,   126,   126,
-   126,   126,   126,   126,   127,   127,   127,   127,   127,   127,
-   127,   127,   127,   127,   128,   128,   129,   129,   129,   129,
-   130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-   130,   130,   130,   130,   130,   130,   131,   131,   131,   131,
-   131,   131,   131,   132,   132,   133,   133,   134,   135,   135,
-   135,   135,   136,   136,   136,   136,   136,   136,   136,   137,
-   137,   138,   138,   138,   139,   140,   140,   140,   141,   141,
-   142,   142,   143,   144,   144,   145,   145,   145,   145,   146,
-   147,   147,   148,   149,   149,   150,   152,   151,   153,   153,
-   153,   153,   153,   153,   153,   153,   153,   154,   154,   155,
-   155,   156,   157,   157,   158,   159,   159,   159,   160,   160,
-   160,   160,   160,   160,   160,   160,   160,   161,   161,   162,
-   163,   163,   164,   164,   165,   165,   166,   166,   167,   167,
-   167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
-   167,   168,   168,   169,   169,   170,   170,   170,   170,   170,
-   170,   170,   170
+   125,   125,   126,   127,   127,   127,   127,   127,   127,   127,
+   127,   127,   127,   127,   127,   127,   128,   128,   128,   128,
+   128,   128,   128,   128,   128,   128,   129,   129,   130,   130,
+   130,   130,   131,   131,   131,   131,   131,   131,   131,   131,
+   131,   131,   131,   131,   131,   131,   131,   131,   132,   132,
+   132,   132,   132,   132,   132,   133,   133,   134,   134,   135,
+   136,   136,   136,   136,   137,   137,   137,   137,   137,   137,
+   137,   138,   138,   139,   139,   139,   140,   141,   141,   141,
+   142,   142,   143,   143,   144,   145,   145,   146,   146,   146,
+   146,   147,   148,   148,   149,   150,   150,   151,   153,   152,
+   154,   154,   154,   154,   154,   154,   154,   154,   154,   155,
+   155,   156,   156,   157,   158,   158,   159,   160,   160,   160,
+   161,   161,   161,   161,   161,   161,   161,   161,   161,   162,
+   162,   163,   164,   164,   165,   165,   166,   166,   167,   167,
+   168,   168,   168,   168,   168,   168,   168,   168,   168,   168,
+   168,   168,   168,   169,   169,   170,   170,   171,   171,   171,
+   171,   171,   171,   171,   171
 };
 
 static const short yyr2[] = {     0,
@@ -1236,388 +1243,378 @@
      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,     0,     3,     1,     1,     1,     1,
+     1,     1,     1,     2,     0,     2,     0,     3,     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,     3,     6,     3,     6,     2,
-     4,     6,     4
+     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,     6,     6,     3,     4,
+     0,     1,     1,     3,     3,     3,     3,     3,     1,     0,
+     1,     1,     1,     0,     2,     3,     1,     1,     3,     1,
+     0,     7,     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,     3,     6,     3,
+     6,     2,     4,     6,     4
 };
 
-static const short yydefact[] = {   119,
-    39,   112,   111,   147,    35,    36,    37,    38,    40,   167,
-   109,   110,   167,   129,   130,     0,     0,    39,     0,   114,
-    40,     0,    41,    42,    43,     0,     0,   168,   164,    34,
-   144,   145,   146,   163,     0,     0,     0,   117,     0,     0,
-     0,     0,    33,   148,    44,     1,     2,    48,    52,    53,
-    54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-    64,    65,     0,     0,     0,     0,   158,     0,     0,    47,
-    66,    51,   159,    67,   141,   142,   143,   205,   166,     0,
-     0,     0,   128,   118,   113,   106,   107,     0,     0,    68,
-     0,     0,    50,    73,    75,     0,     0,    80,    74,   204,
-     0,   188,     0,     0,     0,     0,    40,   176,   177,     5,
+static const short yydefact[] = {   121,
+    39,   114,   113,   149,    35,    36,    37,    38,    40,   169,
+   111,   112,   169,   131,   132,     0,     0,    39,     0,   116,
+    40,     0,    41,    42,    43,     0,     0,   170,   166,    34,
+   146,   147,   148,   165,     0,     0,     0,   119,     0,     0,
+     0,     0,    33,   150,    44,     1,     2,    50,    54,    55,
+    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+    66,    67,     0,     0,     0,     0,   160,     0,     0,    49,
+    68,    53,   161,    69,   143,   144,   145,   207,   168,     0,
+     0,     0,   130,   120,   115,   108,   109,     0,     0,    70,
+     0,     0,    52,    75,    77,     0,     0,    82,    76,   206,
+     0,   190,     0,     0,     0,     0,    40,   178,   179,     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,   165,
-    40,   180,     0,   201,   124,   121,   120,   122,   123,   127,
-     0,   116,    52,    53,    54,    55,    56,    57,    58,    59,
-    60,    61,    62,     0,     0,     0,     0,   115,     0,     0,
-     0,    72,   139,    79,    77,     0,     0,   192,   187,   170,
-   169,     0,     0,    24,    28,    23,    27,    22,    26,    21,
-    25,    29,    30,     0,     0,    45,    45,   210,     0,     0,
-   199,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   125,    94,    95,     3,     4,    92,
-    93,    96,    91,    87,    88,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    90,    89,    49,    49,
-    76,   138,   132,   135,   136,     0,     0,    69,   149,   150,
-   151,   152,   153,   154,   155,     0,   157,   161,   160,   162,
-     0,   171,     0,     0,     0,   206,     0,   208,   203,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   126,     0,     0,     0,    82,   105,     0,
-     0,    86,     0,    83,     0,     0,     0,     0,    70,    71,
-   131,   133,     0,   140,    78,     0,     0,     0,     0,     0,
-     0,     0,     0,   213,     0,     0,   194,     0,   196,   197,
-   198,     0,     0,     0,   193,     0,   211,     0,   203,     0,
-     0,     0,    81,    84,    85,     0,     0,     0,     0,   137,
-   134,   156,     0,     0,   186,    45,    46,    45,   183,   202,
-     0,     0,     0,   189,   190,   191,   186,     0,     0,     0,
-     0,   104,     0,     0,     0,     0,     0,     0,   185,     0,
-     0,   207,   209,     0,     0,     0,   195,     0,   212,    98,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   184,
-   181,     0,   200,    97,     0,   100,   101,   102,   103,     0,
-   174,     0,     0,     0,   182,     0,   172,     0,   173,     0,
-     0,    99,     0,     0,     0,     0,     0,     0,   179,     0,
-     0,   178,   175,     0,     0,     0
+    19,    20,     0,     0,     0,     0,     0,     0,     0,   167,
+    40,   182,     0,   203,   126,   123,   122,   124,   125,   129,
+     0,    47,    54,    55,    56,    57,    58,    59,    60,    61,
+    62,    63,    64,     0,     0,     0,     0,    47,     0,     0,
+     0,    74,   141,    81,    79,     0,     0,   194,   189,   172,
+   171,     0,     0,    24,    28,    23,    27,    22,    26,    21,
+    25,    29,    30,     0,     0,    47,    47,   212,     0,     0,
+   201,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   127,     0,   118,    96,    97,     3,
+     4,    94,    95,    98,    93,    89,    90,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    92,    91,
+   117,    51,    51,    78,   140,   134,   137,   138,     0,     0,
+    71,   151,   152,   153,   154,   155,   156,   157,     0,   159,
+   163,   162,   164,     0,   173,     0,     0,     0,   208,     0,
+   210,   205,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   128,     0,     0,     0,
+     0,    84,   107,     0,     0,    88,     0,    85,     0,     0,
+     0,     0,    72,    73,   133,   135,     0,    45,    80,     0,
+     0,     0,     0,     0,     0,     0,   215,     0,     0,   196,
+     0,   198,   199,   200,     0,     0,     0,   195,     0,   213,
+     0,    48,   205,     0,     0,     0,    83,    86,    87,     0,
+     0,     0,     0,   139,   136,     0,   142,   158,     0,     0,
+   188,    47,    47,   185,   204,     0,     0,     0,   191,   192,
+   193,   188,     0,     0,     0,     0,   106,     0,     0,     0,
+     0,    46,     0,     0,   187,     0,   209,   211,     0,     0,
+     0,   197,     0,   214,   100,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   186,   183,     0,   202,    99,     0,
+   102,   103,   104,   105,     0,   176,     0,     0,     0,   184,
+     0,   174,     0,   175,     0,     0,   101,     0,     0,     0,
+     0,     0,     0,   181,     0,     0,   180,   177,     0,     0,
+     0
 };
 
 static const short yydefgoto[] = {    67,
-   220,   233,   234,   235,   236,   164,   165,   194,   166,    18,
-     9,    26,   266,    68,    69,   167,    71,    72,    96,   176,
-   289,   257,   290,    88,   424,     1,     2,   148,    38,    84,
-   151,    73,   302,   244,   245,   246,    27,    77,    10,    33,
-    11,    12,    21,   258,    74,   260,   349,    13,    29,    30,
-   140,   403,    79,   201,   369,   370,   141,   142,   314,   143,
-   144
+   222,   235,   236,   237,   238,   164,   165,   194,   166,    18,
+     9,    26,   347,   217,    68,    69,   167,    71,    72,    96,
+   176,   293,   260,   294,    88,   429,     1,     2,   148,    38,
+    84,   151,    73,   306,   247,   248,   249,    27,    77,    10,
+    33,    11,    12,    21,   261,    74,   263,   354,    13,    29,
+    30,   140,   408,    79,   201,   375,   376,   141,   142,   317,
+   143,   144
 };
 
 static const short yypact[] = {-32768,
-    15,   304,-32768,-32768,-32768,-32768,-32768,-32768,   104,   -16,
--32768,-32768,   -13,-32768,-32768,   -27,   -69,    23,   -57,-32768,
-   104,    88,-32768,-32768,-32768,   954,   -18,-32768,-32768,    50,
--32768,-32768,-32768,-32768,   -34,   -22,    10,-32768,    -5,   954,
-    58,    58,-32768,-32768,-32768,-32768,-32768,    17,-32768,-32768,
+   191,   336,-32768,-32768,-32768,-32768,-32768,-32768,    37,    19,
+-32768,-32768,   -17,-32768,-32768,   101,   -32,    31,   -25,-32768,
+    37,    53,-32768,-32768,-32768,   896,   -13,-32768,-32768,   130,
+-32768,-32768,-32768,-32768,   -19,   -16,    33,-32768,    26,   896,
+    58,    58,-32768,-32768,-32768,-32768,-32768,    55,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   126,   142,   148,   531,-32768,    50,    61,-32768,
--32768,   -30,-32768,-32768,-32768,-32768,-32768,  1111,-32768,   150,
-    66,   166,   153,-32768,-32768,-32768,-32768,   991,  1028,-32768,
-    74,    77,-32768,-32768,   -30,   -36,    81,   769,-32768,-32768,
-   991,-32768,   125,  1065,     3,   123,   104,-32768,-32768,-32768,
+-32768,-32768,   127,   156,   166,   124,-32768,   130,    82,-32768,
+-32768,   -81,-32768,-32768,-32768,-32768,-32768,  1053,-32768,   157,
+    54,   178,   160,-32768,-32768,-32768,-32768,   933,   970,-32768,
+    88,    91,-32768,-32768,   -81,   -42,    85,   711,-32768,-32768,
+   933,-32768,   141,  1007,     0,   104,    37,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   991,   991,   991,   991,   991,   991,   991,
--32768,-32768,   991,   991,   991,   991,   991,   991,   991,-32768,
-   104,-32768,    57,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-    -8,-32768,   117,   146,   177,   151,   178,   162,   179,   164,
-   180,   182,   183,   169,   187,   185,   407,-32768,   991,   991,
-   991,-32768,   806,-32768,    97,    95,   595,-32768,-32768,    17,
--32768,   595,   595,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   595,   954,   100,   101,-32768,   595,    98,
-   103,   165,   106,   107,   111,   112,   595,   595,   595,   113,
-   954,   991,   991,   186,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,   120,   122,   124,   843,  1028,
-   552,   188,   127,   128,   129,   130,-32768,-32768,   -31,   -65,
-   -30,-32768,    50,-32768,   115,   133,   880,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,  1028,-32768,-32768,-32768,-32768,
-   137,-32768,   138,   595,    -6,-32768,    -2,-32768,   139,   595,
-   121,   991,   991,   991,   991,   991,   140,   141,   143,   991,
-   595,   595,   144,-32768,  1028,  1028,  1028,-32768,-32768,    18,
-    -7,-32768,     0,-32768,  1028,  1028,  1028,  1028,-32768,-32768,
--32768,-32768,   917,-32768,-32768,    25,   202,   203,   131,   595,
-   234,   595,   991,-32768,   145,   595,-32768,   147,-32768,-32768,
--32768,   595,   595,   595,-32768,   154,-32768,   991,   139,   209,
-   149,  1028,-32768,-32768,-32768,   157,   159,   160,   161,-32768,
--32768,-32768,   595,   595,   991,   167,-32768,   167,-32768,   168,
-   595,   170,   991,-32768,-32768,-32768,   991,   595,   163,   991,
-  1028,-32768,  1028,  1028,  1028,  1028,   171,   158,   168,   175,
-   207,-32768,-32768,   991,   173,   595,-32768,   191,-32768,-32768,
-   192,   174,   195,   196,   199,   200,   248,    20,   241,-32768,
--32768,   176,-32768,-32768,  1028,-32768,-32768,-32768,-32768,   595,
--32768,   673,    69,   258,-32768,   205,-32768,   210,-32768,   673,
-   595,-32768,   260,   213,   240,   595,   289,   290,-32768,   595,
-   595,-32768,-32768,   312,   315,-32768
+-32768,-32768,-32768,   933,   933,   933,   933,   933,   933,   933,
+-32768,-32768,   933,   933,   933,   933,   933,   933,   933,-32768,
+    37,-32768,    71,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   -77,   102,   131,   159,   195,   161,   196,   163,   201,   171,
+   202,   203,   204,   175,   208,   206,   387,   102,   933,   933,
+   933,-32768,   748,-32768,   118,   116,   560,-32768,-32768,    55,
+-32768,   560,   560,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   560,   896,   129,   132,-32768,   560,   123,
+   139,   205,   140,   142,   143,   145,   560,   560,   560,   146,
+   896,   933,   933,   213,-32768,   173,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,   148,   149,   150,
+   785,   970,   511,   219,   158,   162,   164,   165,-32768,-32768,
+-32768,   -14,   -48,   -81,-32768,   130,-32768,   168,   167,   822,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   970,-32768,
+-32768,-32768,-32768,   169,-32768,   172,   560,   -12,-32768,    -7,
+-32768,   174,   560,   144,   933,   933,   933,   933,   933,   177,
+   179,   180,   933,   560,   560,   181,-32768,   251,   970,   970,
+   970,-32768,-32768,   -74,   -36,-32768,   -41,-32768,   970,   970,
+   970,   970,-32768,-32768,-32768,-32768,   859,   216,-32768,   -35,
+   237,   238,   176,   560,   560,   933,-32768,   184,   560,-32768,
+   186,-32768,-32768,-32768,   560,   560,   560,-32768,   185,-32768,
+   933,-32768,   174,   236,   189,   970,-32768,-32768,-32768,   198,
+   199,   200,   207,-32768,-32768,   293,-32768,-32768,   560,   560,
+   933,   102,   102,-32768,   214,   560,   215,   933,-32768,-32768,
+-32768,   933,   560,   217,   933,   970,-32768,   970,   970,   970,
+   970,-32768,   218,   212,   214,   223,-32768,-32768,   933,   197,
+   560,-32768,   224,-32768,-32768,   225,   221,   227,   228,   229,
+   230,   277,    20,   265,-32768,-32768,   231,-32768,-32768,   970,
+-32768,-32768,-32768,-32768,   560,-32768,   615,    70,   280,-32768,
+   232,-32768,   234,-32768,   615,   560,-32768,   281,   239,   250,
+   560,   283,   313,-32768,   560,   560,-32768,-32768,   340,   341,
+-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   238,   239,   242,   251,  -102,  -100,  -385,-32768,   288,
-   314,   -82,  -195,   -35,-32768,   -26,-32768,   -46,   232,-32768,
-   -81,   172,  -203,   291,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,    -1,-32768,    35,-32768,-32768,   319,-32768,-32768,-32768,
--32768,   339,-32768,  -283,   -51,   114,   -85,-32768,   329,-32768,
--32768,-32768,-32768,-32768,    30,    -4,-32768,-32768,    26,-32768,
--32768
+-32768,   264,   267,   268,   269,  -102,  -101,  -381,-32768,   318,
+   333,   -96,-32768,  -158,   -38,-32768,   -26,-32768,   -46,   254,
+-32768,   -82,   188,  -209,   317,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,    -1,-32768,    59,-32768,-32768,   344,-32768,-32768,
+-32768,-32768,   359,-32768,  -349,    -6,   155,   -86,-32768,   357,
+-32768,-32768,-32768,-32768,-32768,    56,     9,-32768,-32768,    40,
+-32768,-32768
 };
 
 
-#define	YYLAST		1205
+#define	YYLAST		1147
 
 
 static const short yytable[] = {    70,
-    19,   268,   402,   192,    85,   193,    28,   168,   310,    28,
-    75,   182,   312,    70,  -108,   178,    31,   410,   181,    95,
-    35,    36,    37,   183,   195,    39,   291,   293,    19,   184,
-   185,   186,   187,   188,   189,   190,   191,    43,   300,     3,
-   198,    99,    40,   202,   203,     4,   311,   204,   205,   206,
-   311,    95,   306,   210,     5,     6,     7,     8,   211,   171,
-    80,   152,     5,     6,     7,     8,    97,   -49,    41,   172,
-   299,    14,    81,    15,   177,    99,    99,   177,   184,   185,
-   186,   187,   188,   189,   190,   191,    76,   214,   332,    86,
-    87,    45,    32,   215,    83,   332,   334,   196,   197,   177,
-   199,   200,   177,   177,    82,   335,   177,   177,   177,   207,
-   208,   209,   177,   332,   -50,   238,   146,   147,   408,   333,
-   332,   401,   239,   240,   241,   259,   414,   283,   342,    90,
-   259,   259,   184,   185,   186,   187,   188,   189,   190,   191,
-   212,   213,   259,   216,   217,    91,   243,   259,   -24,   -24,
-   372,    92,   373,   -23,   -23,   259,   259,   259,    98,   264,
-    22,    23,    24,    25,   -22,   -22,   -21,   -21,    70,   149,
-   409,   218,   219,   145,   169,   281,   150,   170,   173,   179,
-   -28,   -27,   -26,   -25,    70,   282,   177,   318,   -31,   -32,
-   221,   222,   247,   248,   325,   265,   267,   270,   271,   272,
-   241,   273,   274,   329,   330,   331,   275,   276,   280,   284,
-   303,   294,   259,   336,   337,   338,   339,   285,   259,   286,
-   316,   287,   343,   344,   295,   296,   297,   298,   345,   259,
-   259,   304,   307,   308,   313,   322,   323,   347,   324,   328,
-   351,   301,   353,   360,   361,   317,   177,   319,   320,   321,
-   362,   357,   363,   177,   364,   365,   366,   388,   259,   311,
-   259,   380,   371,   374,   259,   376,   387,   377,   400,   395,
-   259,   259,   259,   389,   391,   404,   243,   405,   411,   382,
-   416,   383,   384,   385,   386,   192,   177,   193,   390,   393,
-   394,   259,   259,   396,   397,   261,   262,   398,   399,   259,
-   192,   358,   193,   412,   418,   413,   259,   263,   417,   420,
-   421,   425,   269,   406,   426,   136,   137,    78,   177,   138,
-   277,   278,   279,   -34,   259,    14,   177,    15,   139,   175,
-   177,    42,    89,   381,     4,   -34,   -34,   341,   237,    44,
-    20,    34,   350,   -34,   -34,   -34,   -34,   177,   259,   -34,
-    16,     0,   378,     0,   359,     0,     0,    17,     0,   259,
-     0,     0,     0,     0,   259,     0,     0,     0,   259,   259,
-     0,     0,     0,     0,     0,     0,     0,   309,     0,     0,
-     0,     0,     0,   315,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   326,   327,     0,     0,     0,     0,
+    19,    85,   314,   192,   193,    28,   168,   315,   182,   241,
+   195,   407,    31,    70,   178,    75,   -51,   181,   214,    95,
+   183,   336,   295,   297,   215,    99,   415,   337,    19,   184,
+   185,   186,   187,   188,   189,   190,   191,   269,   271,   198,
+   288,    28,   202,   203,   211,   288,   204,   205,   206,   310,
+    40,    95,   210,   171,   336,   304,    45,   413,    99,   336,
+   336,   152,    39,   172,   339,   419,    97,   338,   348,    43,
+     5,     6,     7,     8,   177,    80,    41,   177,    81,   184,
+   185,   186,   187,   188,   189,   190,   191,   303,    32,    86,
+    87,    76,    99,    22,    23,    24,    25,   196,   197,   177,
+   199,   200,   177,   177,   146,   147,   177,   177,   177,   207,
+   208,   209,   177,   184,   185,   186,   187,   188,   189,   190,
+   191,   406,   242,   243,   244,    83,   286,    82,    46,    47,
+    90,    93,    49,    50,    51,    52,    53,    54,    55,    56,
+    57,    58,    59,    60,    61,    14,   246,    15,    35,    36,
+    37,    14,   -52,    15,   212,   213,   267,   218,   219,    91,
+   240,   -24,   -24,   -23,   -23,   -22,   -22,    62,    70,    92,
+   262,   414,   284,   -21,   -21,   262,   262,   220,   221,    98,
+   145,   149,   173,   150,    70,   285,   177,   262,   169,   321,
+  -110,   170,   262,   377,   378,   179,   328,   216,   -28,   -27,
+   262,   262,   262,   244,   -26,   -25,   333,   334,   335,   -31,
+   -32,   223,   224,   250,   251,     3,   340,   341,   342,   343,
+    63,     4,   273,    64,   268,   288,    65,   270,    66,    94,
+     5,     6,     7,     8,   274,   276,   287,   277,   278,   275,
+   279,   283,   298,   319,   305,   289,   290,   291,   320,   177,
+   322,   323,   324,   367,   332,   299,   177,   349,   350,   300,
+   262,   301,   302,   307,   311,   308,   262,   312,   346,   316,
+   365,   382,   325,   351,   326,   327,   331,   262,   262,   356,
+   246,   358,   362,   387,   366,   388,   389,   390,   391,   177,
+   192,   193,   395,   368,   369,   370,   372,   405,   396,   409,
+   416,   421,   371,   425,   363,   192,   193,   262,   262,   379,
+   381,   393,   262,   392,   423,   385,   400,   411,   262,   262,
+   262,   394,   398,   399,   177,   401,   402,   403,   404,   418,
+   417,   177,   410,   426,   422,   177,   264,   265,   386,   430,
+   431,   136,   262,   262,   137,   138,   139,    78,   266,   262,
+    42,   175,   177,   272,   239,   -34,   262,    14,    89,    15,
+    20,   280,   281,   282,    44,   345,     4,   -34,   -34,    34,
+   383,   355,   364,     0,   262,   -34,   -34,   -34,   -34,     0,
+     0,   -34,    16,     0,     0,     0,     0,     0,     0,    17,
+     0,    46,    47,     0,     0,     0,     0,     0,   262,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    14,   262,
+    15,     0,   225,     0,   262,     0,     0,     0,   262,   262,
+     0,   313,     0,   226,   227,     0,     0,   318,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   329,   330,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    46,    47,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   346,     0,   348,     0,     0,    14,   352,
-    15,     0,   223,     0,     0,   354,   355,   356,     0,     0,
-     0,     0,     0,   224,   225,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   367,   368,     0,     0,
-     0,     0,     0,     0,   375,     0,     0,     0,     0,     0,
-     0,   379,     0,   110,   111,   112,   113,   114,   115,   116,
-   117,   118,   119,   120,   121,   122,   123,     0,     0,   392,
-     0,     0,   226,     0,   227,   228,   131,   132,     0,     0,
-     0,     0,     0,     0,     0,     0,   229,     0,     0,   230,
-     0,   231,     0,   407,   232,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   415,     0,     0,     0,     0,   419,
-     0,     0,     0,   422,   423,    46,    47,     0,    93,    49,
-    50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-    60,    61,    14,     0,    15,     0,    46,    47,     0,    93,
-   153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-   163,    60,    61,    14,    62,    15,     0,     0,     0,     0,
+     0,     0,     0,   110,   111,   112,   113,   114,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,     0,   352,   353,
+     0,     0,   228,   357,   229,   230,   131,   132,     0,   359,
+   360,   361,     0,     0,     0,     0,   231,     0,     0,   232,
+     0,   233,     0,     0,   234,     0,     0,     0,     0,     0,
+     0,     0,     0,   373,   374,     0,     0,     0,     0,     0,
+   380,     0,     0,     0,     0,    46,    47,   384,    93,   153,
+   154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+    60,    61,    14,     0,    15,   397,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    62,     0,   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,    63,     0,     0,
-    64,   254,   255,    65,     0,    66,    94,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    63,     0,
-     0,    64,     0,     0,    65,     0,    66,   292,     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,     0,   256,     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,    62,     0,     0,     0,     0,   412,
+     0,     0,   252,   253,    46,    47,   254,     0,     0,     0,
+   420,     0,     0,     0,     0,   424,     0,     0,     0,   427,
+   428,    14,     0,    15,     0,     0,   255,   256,     0,     0,
+     0,     0,     0,     0,     0,     0,   257,   258,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    63,     0,     0,
+    64,     0,     0,    65,     0,    66,   296,   252,   253,     0,
+     0,   254,     0,     0,     0,     0,   110,   111,   112,   113,
+   114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     0,   255,   256,     0,     0,   228,     0,   229,   230,   131,
+   132,   257,   258,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   259,     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,     0,    46,    47,   256,    93,    49,    50,    51,
+     0,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,     0,     0,     0,     0,     0,
+   228,     0,   229,   230,   131,   132,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    46,    47,   259,    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,   245,     0,     0,     0,     0,     0,    46,
+    47,    62,    93,   153,   154,   155,   156,   157,   158,   159,
+   160,   161,   162,   163,    60,    61,    14,    63,    15,     0,
+    64,     0,     0,    65,     0,    66,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    46,    47,    62,    93,
+    49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+    59,    60,    61,    14,    63,    15,     0,    64,     0,     0,
+    65,     0,    66,     0,     0,     0,     0,   309,     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,   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,    46,    47,    62,
-    93,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-   162,   163,    60,    61,    14,    63,    15,     0,    64,     0,
+    14,    63,    15,     0,    64,     0,   292,    65,     0,    66,
+     0,     0,     0,     0,   344,     0,     0,     0,     0,     0,
+    46,    47,    62,    48,    49,    50,    51,    52,    53,    54,
+    55,    56,    57,    58,    59,    60,    61,    14,    63,    15,
+     0,    64,     0,     0,    65,     0,    66,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    46,    47,    62,
+    93,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+    58,    59,    60,    61,    14,    63,    15,     0,    64,     0,
      0,    65,     0,    66,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    46,    47,    62,    93,    49,    50,
-    51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+     0,     0,     0,     0,    46,    47,    62,    93,   153,   154,
+   155,   156,   157,   158,   159,   160,   161,   162,   163,    60,
     61,    14,    63,    15,     0,    64,     0,     0,    65,     0,
-    66,     0,     0,     0,     0,   305,     0,     0,     0,     0,
-     0,    46,    47,    62,    93,    49,    50,    51,    52,    53,
+    66,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    46,    47,    62,   180,    49,    50,    51,    52,    53,
     54,    55,    56,    57,    58,    59,    60,    61,    14,    63,
-    15,     0,    64,     0,   288,    65,     0,    66,     0,     0,
-     0,     0,   340,     0,     0,     0,     0,     0,    46,    47,
-    62,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-    57,    58,    59,    60,    61,    14,    63,    15,     0,    64,
-     0,     0,    65,     0,    66,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    46,    47,    62,    93,    49,
-    50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-    60,    61,    14,    63,    15,     0,    64,     0,     0,    65,
-     0,    66,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    46,    47,    62,    93,   153,   154,   155,   156,
-   157,   158,   159,   160,   161,   162,   163,    60,    61,    14,
-    63,    15,     0,    64,     0,     0,    65,     0,    66,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    46,
-    47,    62,   180,    49,    50,    51,    52,    53,    54,    55,
-    56,    57,    58,    59,    60,    61,    14,    63,    15,     0,
-    64,     0,     0,    65,     0,    66,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    62,     0,
+    15,     0,    64,     0,     0,    65,     0,    66,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    63,     0,     0,    64,     0,     0,
-    65,     0,    66,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   100,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   101,     0,     0,     0,     0,
-     0,    63,     0,     0,    64,   102,   103,    65,     0,    66,
-     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
+    62,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    63,     0,     0,    64,
+     0,     0,    65,     0,    66,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   100,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   101,     0,     0,
+     0,     0,     0,    63,     0,     0,    64,   102,   103,    65,
+     0,    66,     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
 };
 
 static const short yycheck[] = {    26,
-     2,   197,   388,   106,    40,   106,    23,    89,    15,    23,
-    29,     9,    15,    40,     0,   101,    30,   403,   104,    66,
-    48,    49,    50,    21,   107,    95,   230,   231,    30,    10,
-    11,    12,    13,    14,    15,    16,    17,    95,   104,    25,
-   126,   107,    20,   129,   130,    31,    53,   133,   134,   135,
-    53,    98,   256,   139,    40,    41,    42,    43,   141,    96,
-    95,    88,    40,    41,    42,    43,    68,    98,    46,   106,
-   102,    22,    95,    24,   101,   107,   107,   104,    10,    11,
-    12,    13,    14,    15,    16,    17,   105,    96,    96,    32,
-    33,     4,   106,   102,   100,    96,   104,   124,   125,   126,
-   127,   128,   129,   130,    95,   106,   133,   134,   135,   136,
-   137,   138,   139,    96,    98,   167,    51,    52,   402,   102,
-    96,   102,   169,   170,   171,   177,   410,   213,   104,     4,
-   182,   183,    10,    11,    12,    13,    14,    15,    16,    17,
-    84,    85,   194,    27,    28,     4,   173,   199,     3,     4,
-   346,     4,   348,     3,     4,   207,   208,   209,    98,   195,
-    57,    58,    59,    60,     3,     4,     3,     4,   195,     4,
-   102,     3,     4,    24,   101,   211,    24,   101,    98,    55,
-     4,     4,     4,     4,   211,   212,   213,   273,     7,     7,
-     4,     7,    96,    99,   280,    96,    96,   100,    96,    35,
-   247,    96,    96,   285,   286,   287,    96,    96,    96,    24,
-    96,    24,   264,   295,   296,   297,   298,    98,   270,    98,
-   100,    98,    21,    21,    98,    98,    98,    98,    98,   281,
-   282,    99,    96,    96,    96,    96,    96,     4,    96,    96,
-    96,   243,    96,    35,    96,   272,   273,   274,   275,   276,
-   332,    98,    96,   280,    96,    96,    96,   100,   310,    53,
-   312,    99,    96,    96,   316,    96,    96,   353,    21,    96,
-   322,   323,   324,    99,   102,    35,   303,   102,    21,   361,
-    21,   363,   364,   365,   366,   388,   313,   388,   374,    99,
-    99,   343,   344,    99,    99,   182,   183,    99,    99,   351,
-   403,   328,   403,    99,    65,    96,   358,   194,    96,    21,
-    21,     0,   199,   395,     0,    78,    78,    30,   345,    78,
-   207,   208,   209,    20,   376,    22,   353,    24,    78,    98,
-   357,    18,    42,   360,    31,    32,    33,   303,   167,    21,
-     2,    13,   313,    40,    41,    42,    43,   374,   400,    46,
-    47,    -1,   357,    -1,   329,    -1,    -1,    54,    -1,   411,
-    -1,    -1,    -1,    -1,   416,    -1,    -1,    -1,   420,   421,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   264,    -1,    -1,
-    -1,    -1,    -1,   270,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   281,   282,    -1,    -1,    -1,    -1,
+     2,    40,    15,   106,   106,    23,    89,    15,     9,   168,
+   107,   393,    30,    40,   101,    29,    98,   104,    96,    66,
+    21,    96,   232,   233,   102,   107,   408,   102,    30,    10,
+    11,    12,    13,    14,    15,    16,    17,   196,   197,   126,
+    53,    23,   129,   130,   141,    53,   133,   134,   135,   259,
+    20,    98,   139,    96,    96,   104,     4,   407,   107,    96,
+    96,    88,    95,   106,   106,   415,    68,   104,   104,    95,
+    40,    41,    42,    43,   101,    95,    46,   104,    95,    10,
+    11,    12,    13,    14,    15,    16,    17,   102,   106,    32,
+    33,   105,   107,    57,    58,    59,    60,   124,   125,   126,
+   127,   128,   129,   130,    51,    52,   133,   134,   135,   136,
+   137,   138,   139,    10,    11,    12,    13,    14,    15,    16,
+    17,   102,   169,   170,   171,   100,   213,    95,     5,     6,
+     4,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,   173,    24,    48,    49,
+    50,    22,    98,    24,    84,    85,   195,    27,    28,     4,
+   167,     3,     4,     3,     4,     3,     4,    44,   195,     4,
+   177,   102,   211,     3,     4,   182,   183,     3,     4,    98,
+    24,     4,    98,    24,   211,   212,   213,   194,   101,   276,
+     0,   101,   199,   352,   353,    55,   283,    96,     4,     4,
+   207,   208,   209,   250,     4,     4,   289,   290,   291,     7,
+     7,     4,     7,    96,    99,    25,   299,   300,   301,   302,
+    97,    31,   100,   100,    96,    53,   103,    96,   105,   106,
+    40,    41,    42,    43,    96,    96,    24,    96,    96,    35,
+    96,    96,    24,   100,   246,    98,    98,    98,   275,   276,
+   277,   278,   279,   336,     4,    98,   283,    21,    21,    98,
+   267,    98,    98,    96,    96,    99,   273,    96,    53,    96,
+    35,   358,    96,    98,    96,    96,    96,   284,   285,    96,
+   307,    96,    98,   366,    96,   368,   369,   370,   371,   316,
+   393,   393,   379,    96,    96,    96,     4,    21,   102,    35,
+    21,    21,    96,    21,   331,   408,   408,   314,   315,    96,
+    96,   100,   319,    96,    65,    99,    96,   400,   325,   326,
+   327,    99,    99,    99,   351,    99,    99,    99,    99,    96,
+    99,   358,   102,    21,    96,   362,   182,   183,   365,     0,
+     0,    78,   349,   350,    78,    78,    78,    30,   194,   356,
+    18,    98,   379,   199,   167,    20,   363,    22,    42,    24,
+     2,   207,   208,   209,    21,   307,    31,    32,    33,    13,
+   362,   316,   333,    -1,   381,    40,    41,    42,    43,    -1,
+    -1,    46,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,
+    -1,     5,     6,    -1,    -1,    -1,    -1,    -1,   405,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,   416,
+    24,    -1,    26,    -1,   421,    -1,    -1,    -1,   425,   426,
+    -1,   267,    -1,    37,    38,    -1,    -1,   273,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   284,   285,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,     5,     6,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   310,    -1,   312,    -1,    -1,    22,   316,
-    24,    -1,    26,    -1,    -1,   322,   323,   324,    -1,    -1,
-    -1,    -1,    -1,    37,    38,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   343,   344,    -1,    -1,
-    -1,    -1,    -1,    -1,   351,    -1,    -1,    -1,    -1,    -1,
-    -1,   358,    -1,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,    77,    78,    79,    80,    -1,    -1,   376,
-    -1,    -1,    86,    -1,    88,    89,    90,    91,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   100,    -1,    -1,   103,
-    -1,   105,    -1,   400,   108,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   411,    -1,    -1,    -1,    -1,   416,
-    -1,    -1,    -1,   420,   421,     5,     6,    -1,     8,     9,
+    -1,    -1,    -1,    67,    68,    69,    70,    71,    72,    73,
+    74,    75,    76,    77,    78,    79,    80,    -1,   314,   315,
+    -1,    -1,    86,   319,    88,    89,    90,    91,    -1,   325,
+   326,   327,    -1,    -1,    -1,    -1,   100,    -1,    -1,   103,
+    -1,   105,    -1,    -1,   108,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   349,   350,    -1,    -1,    -1,    -1,    -1,
+   356,    -1,    -1,    -1,    -1,     5,     6,   363,     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,
+    20,    21,    22,    -1,    24,   381,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,   405,
+    -1,    -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,
+   416,    -1,    -1,    -1,    -1,   421,    -1,    -1,    -1,   425,
+   426,    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,    97,    -1,    -1,
+   100,    -1,    -1,   103,    -1,   105,   106,     3,     4,    -1,
+    -1,     7,    -1,    -1,    -1,    -1,    67,    68,    69,    70,
+    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+    -1,    27,    28,    -1,    -1,    86,    -1,    88,    89,    90,
+    91,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    44,    -1,     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,    97,    -1,    -1,
-   100,    37,    38,   103,    -1,   105,   106,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    97,    -1,
-    -1,   100,    -1,    -1,   103,    -1,   105,   106,    -1,    -1,
     -1,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,    77,    78,    79,    80,     3,     4,    -1,    -1,     7,
+    76,    77,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,
     86,    -1,    88,    89,    90,    91,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -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,    -1,     5,     6,   103,     8,     9,    10,    11,
+    -1,    -1,    -1,    -1,    -1,     5,     6,   103,     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,     5,
+     6,    44,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    21,    22,    97,    24,    -1,
+   100,    -1,    -1,   103,    -1,   105,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,     5,     6,    44,     8,
+     9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    21,    22,    97,    24,    -1,   100,    -1,    -1,
+   103,    -1,   105,    -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,
+    22,    97,    24,    -1,   100,    -1,   102,   103,    -1,   105,
     -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,     5,     6,    44,
+    15,    16,    17,    18,    19,    20,    21,    22,    97,    24,
+    -1,   100,    -1,    -1,   103,    -1,   105,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,     6,    44,
      8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     18,    19,    20,    21,    22,    97,    24,    -1,   100,    -1,
     -1,   103,    -1,   105,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,     5,     6,    44,     8,     9,    10,
     11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     21,    22,    97,    24,    -1,   100,    -1,    -1,   103,    -1,
-   105,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,
+   105,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,     5,     6,    44,     8,     9,    10,    11,    12,    13,
     14,    15,    16,    17,    18,    19,    20,    21,    22,    97,
-    24,    -1,   100,    -1,   102,   103,    -1,   105,    -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,    97,    24,    -1,   100,
-    -1,    -1,   103,    -1,   105,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,     5,     6,    44,     8,     9,
-    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    20,    21,    22,    97,    24,    -1,   100,    -1,    -1,   103,
-    -1,   105,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,     5,     6,    44,     8,     9,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-    97,    24,    -1,   100,    -1,    -1,   103,    -1,   105,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,
-     6,    44,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    97,    24,    -1,
-   100,    -1,    -1,   103,    -1,   105,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,
+    24,    -1,   100,    -1,    -1,   103,    -1,   105,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    97,    -1,    -1,   100,    -1,    -1,
-   103,    -1,   105,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,
-    -1,    97,    -1,    -1,   100,    55,    56,   103,    -1,   105,
-    -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
+    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    97,    -1,    -1,   100,
+    -1,    -1,   103,    -1,   105,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,
+    -1,    -1,    -1,    97,    -1,    -1,   100,    55,    56,   103,
+    -1,   105,    -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
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -2163,7 +2160,7 @@
   switch (yyn) {
 
 case 2:
-#line 984 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 991 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
   if (yyvsp[0].UIntVal > (uint32_t)INT32_MAX)     // Outside of my range!
     ThrowException("Value too large for type!");
@@ -2171,7 +2168,7 @@
 ;
     break;}
 case 4:
-#line 992 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 999 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
   if (yyvsp[0].UInt64Val > (uint64_t)INT64_MAX)     // Outside of my range!
     ThrowException("Value too large for type!");
@@ -2179,55 +2176,55 @@
 ;
     break;}
 case 33:
-#line 1015 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1022 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.StrVal = yyvsp[-1].StrVal;
   ;
     break;}
 case 34:
-#line 1018 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1025 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.StrVal = 0;
   ;
     break;}
 case 35:
-#line 1022 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1029 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.Linkage = GlobalValue::InternalLinkage; ;
     break;}
 case 36:
-#line 1023 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1030 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.Linkage = GlobalValue::LinkOnceLinkage; ;
     break;}
 case 37:
-#line 1024 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1031 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.Linkage = GlobalValue::WeakLinkage; ;
     break;}
 case 38:
-#line 1025 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1032 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.Linkage = GlobalValue::AppendingLinkage; ;
     break;}
 case 39:
-#line 1026 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1033 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.Linkage = GlobalValue::ExternalLinkage; ;
     break;}
 case 40:
-#line 1028 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1035 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.UIntVal = CallingConv::C; ;
     break;}
 case 41:
-#line 1029 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1036 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.UIntVal = CallingConv::C; ;
     break;}
 case 42:
-#line 1030 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1037 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.UIntVal = CallingConv::Fast; ;
     break;}
 case 43:
-#line 1031 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1038 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.UIntVal = CallingConv::Cold; ;
     break;}
 case 44:
-#line 1032 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1039 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
                    if ((unsigned)yyvsp[0].UInt64Val != yyvsp[0].UInt64Val)
                      ThrowException("Calling conv too large!");
@@ -2235,49 +2232,57 @@
                  ;
     break;}
 case 45:
-#line 1040 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1047 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.UIntVal = 0; ;
     break;}
 case 46:
-#line 1041 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1048 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.UIntVal = yyvsp[0].UInt64Val; ;
     break;}
+case 47:
+#line 1049 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.UIntVal = 0; ;
+    break;}
 case 48:
 #line 1050 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
-{ yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ;
+{ yyval.UIntVal = yyvsp[0].UInt64Val; ;
     break;}
 case 50:
-#line 1051 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1059 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+{ yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ;
+    break;}
+case 52:
+#line 1060 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); ;
     break;}
-case 51:
-#line 1053 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 53:
+#line 1062 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (!UpRefs.empty())
       ThrowException("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription());
     yyval.TypeVal = yyvsp[0].TypeVal;
   ;
     break;}
-case 65:
-#line 1064 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 67:
+#line 1073 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.TypeVal = new PATypeHolder(OpaqueType::get());
   ;
     break;}
-case 66:
-#line 1067 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 68:
+#line 1076 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType);
   ;
     break;}
-case 67:
-#line 1070 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 69:
+#line 1079 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {            // Named types are also simple types...
   yyval.TypeVal = new PATypeHolder(getTypeVal(yyvsp[0].ValIDVal));
 ;
     break;}
-case 68:
-#line 1076 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 70:
+#line 1085 "/Users/sabre/cvs/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
@@ -2286,8 +2291,8 @@
     UR_OUT("New Upreference!\n");
   ;
     break;}
-case 69:
-#line 1083 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 71:
+#line 1092 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {           // Function derived type?
     std::vector<const Type*> Params;
     for (std::list<llvm::PATypeHolder>::iterator I = yyvsp[-1].TypeList->begin(),
@@ -2301,15 +2306,15 @@
     delete yyvsp[-3].TypeVal;      // Delete the return type handle
   ;
     break;}
-case 70:
-#line 1095 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 72:
+#line 1104 "/Users/sabre/cvs/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 71:
-#line 1099 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 73:
+#line 1108 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {          // Packed array type?
      const llvm::Type* ElemTy = yyvsp[-1].TypeVal->get();
      if ((unsigned)yyvsp[-3].UInt64Val != yyvsp[-3].UInt64Val) {
@@ -2322,8 +2327,8 @@
      delete yyvsp[-1].TypeVal;
   ;
     break;}
-case 72:
-#line 1110 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 74:
+#line 1119 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {                        // Structure type?
     std::vector<const Type*> Elements;
     for (std::list<llvm::PATypeHolder>::iterator I = yyvsp[-1].TypeList->begin(),
@@ -2334,52 +2339,52 @@
     delete yyvsp[-1].TypeList;
   ;
     break;}
-case 73:
-#line 1119 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 75:
+#line 1128 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {                                  // Empty structure type?
     yyval.TypeVal = new PATypeHolder(StructType::get(std::vector<const Type*>()));
   ;
     break;}
-case 74:
-#line 1122 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 76:
+#line 1131 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {                             // Pointer type?
     yyval.TypeVal = new PATypeHolder(HandleUpRefs(PointerType::get(*yyvsp[-1].TypeVal)));
     delete yyvsp[-1].TypeVal;
   ;
     break;}
-case 75:
-#line 1130 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 77:
+#line 1139 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.TypeList = new std::list<PATypeHolder>();
     yyval.TypeList->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal;
   ;
     break;}
-case 76:
-#line 1134 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 78:
+#line 1143 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     (yyval.TypeList=yyvsp[-2].TypeList)->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal;
   ;
     break;}
-case 78:
-#line 1140 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 80:
+#line 1149 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     (yyval.TypeList=yyvsp[-2].TypeList)->push_back(Type::VoidTy);
   ;
     break;}
-case 79:
-#line 1143 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 81:
+#line 1152 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     (yyval.TypeList = new std::list<PATypeHolder>())->push_back(Type::VoidTy);
   ;
     break;}
-case 80:
-#line 1146 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 82:
+#line 1155 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.TypeList = new std::list<PATypeHolder>();
   ;
     break;}
-case 81:
-#line 1156 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 83:
+#line 1165 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { // Nonempty unsized arr
     const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-3].TypeVal->get());
     if (ATy == 0)
@@ -2406,8 +2411,8 @@
     delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
   ;
     break;}
-case 82:
-#line 1181 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 84:
+#line 1190 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-2].TypeVal->get());
     if (ATy == 0)
@@ -2422,8 +2427,8 @@
     delete yyvsp[-2].TypeVal;
   ;
     break;}
-case 83:
-#line 1194 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 85:
+#line 1203 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     const ArrayType *ATy = dyn_cast<ArrayType>(yyvsp[-2].TypeVal->get());
     if (ATy == 0)
@@ -2453,8 +2458,8 @@
     delete yyvsp[-2].TypeVal;
   ;
     break;}
-case 84:
-#line 1222 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 86:
+#line 1231 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { // Nonempty unsized arr
     const PackedType *PTy = dyn_cast<PackedType>(yyvsp[-3].TypeVal->get());
     if (PTy == 0)
@@ -2481,8 +2486,8 @@
     delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
   ;
     break;}
-case 85:
-#line 1247 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 87:
+#line 1256 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     const StructType *STy = dyn_cast<StructType>(yyvsp[-3].TypeVal->get());
     if (STy == 0)
@@ -2504,8 +2509,8 @@
     delete yyvsp[-3].TypeVal; delete yyvsp[-1].ConstVector;
   ;
     break;}
-case 86:
-#line 1267 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 88:
+#line 1276 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     const StructType *STy = dyn_cast<StructType>(yyvsp[-2].TypeVal->get());
     if (STy == 0)
@@ -2519,8 +2524,8 @@
     delete yyvsp[-2].TypeVal;
   ;
     break;}
-case 87:
-#line 1279 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 89:
+#line 1288 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     const PointerType *PTy = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
     if (PTy == 0)
@@ -2531,15 +2536,15 @@
     delete yyvsp[-1].TypeVal;
   ;
     break;}
-case 88:
-#line 1288 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 90:
+#line 1297 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ConstVal = UndefValue::get(yyvsp[-1].TypeVal->get());
     delete yyvsp[-1].TypeVal;
   ;
     break;}
-case 89:
-#line 1292 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 91:
+#line 1301 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     const PointerType *Ty = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
     if (Ty == 0)
@@ -2600,8 +2605,8 @@
     delete yyvsp[-1].TypeVal;            // Free the type handle
   ;
     break;}
-case 90:
-#line 1351 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 92:
+#line 1360 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (yyvsp[-1].TypeVal->get() != yyvsp[0].ConstVal->getType())
       ThrowException("Mismatched types for constant expression!");
@@ -2609,8 +2614,8 @@
     delete yyvsp[-1].TypeVal;
   ;
     break;}
-case 91:
-#line 1357 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 93:
+#line 1366 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     const Type *Ty = yyvsp[-1].TypeVal->get();
     if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty))
@@ -2619,44 +2624,44 @@
     delete yyvsp[-1].TypeVal;
   ;
     break;}
-case 92:
-#line 1365 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 94:
+#line 1374 "/Users/sabre/cvs/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 93:
-#line 1370 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 95:
+#line 1379 "/Users/sabre/cvs/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 94:
-#line 1375 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 96:
+#line 1384 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {                      // Boolean constants
     yyval.ConstVal = ConstantBool::True;
   ;
     break;}
-case 95:
-#line 1378 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 97:
+#line 1387 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {                     // Boolean constants
     yyval.ConstVal = ConstantBool::False;
   ;
     break;}
-case 96:
-#line 1381 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 98:
+#line 1390 "/Users/sabre/cvs/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 97:
-#line 1388 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 99:
+#line 1397 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (!yyvsp[-3].ConstVal->getType()->isFirstClassType())
       ThrowException("cast constant expression from a non-primitive type: '" +
@@ -2668,8 +2673,8 @@
     delete yyvsp[-1].TypeVal;
   ;
     break;}
-case 98:
-#line 1398 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 100:
+#line 1407 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (!isa<PointerType>(yyvsp[-2].ConstVal->getType()))
       ThrowException("GetElementPtr requires a pointer operand!");
@@ -2702,8 +2707,8 @@
     yyval.ConstVal = ConstantExpr::getGetElementPtr(yyvsp[-2].ConstVal, IdxVec);
   ;
     break;}
-case 99:
-#line 1429 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 101:
+#line 1438 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (yyvsp[-5].ConstVal->getType() != Type::BoolTy)
       ThrowException("Select condition must be of boolean type!");
@@ -2712,8 +2717,8 @@
     yyval.ConstVal = ConstantExpr::getSelect(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
   ;
     break;}
-case 100:
-#line 1436 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 102:
+#line 1445 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
       ThrowException("Binary operator types must match!");
@@ -2736,8 +2741,8 @@
     }
   ;
     break;}
-case 101:
-#line 1457 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 103:
+#line 1466 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType())
       ThrowException("Logical operator types must match!");
@@ -2746,16 +2751,16 @@
     yyval.ConstVal = ConstantExpr::get(yyvsp[-5].BinaryOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
   ;
     break;}
-case 102:
-#line 1464 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 104:
+#line 1473 "/Users/sabre/cvs/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 103:
-#line 1469 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 105:
+#line 1478 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (yyvsp[-1].ConstVal->getType() != Type::UByteTy)
       ThrowException("Shift count for shift constant must be unsigned byte!");
@@ -2764,55 +2769,55 @@
     yyval.ConstVal = ConstantExpr::get(yyvsp[-5].OtherOpVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal);
   ;
     break;}
-case 104:
-#line 1479 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 106:
+#line 1488 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     (yyval.ConstVector = yyvsp[-2].ConstVector)->push_back(yyvsp[0].ConstVal);
   ;
     break;}
-case 105:
-#line 1482 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 107:
+#line 1491 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ConstVector = new std::vector<Constant*>();
     yyval.ConstVector->push_back(yyvsp[0].ConstVal);
   ;
     break;}
-case 106:
-#line 1489 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 108:
+#line 1498 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.BoolVal = false; ;
     break;}
-case 107:
-#line 1489 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 109:
+#line 1498 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.BoolVal = true; ;
     break;}
-case 108:
-#line 1499 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 110:
+#line 1508 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
   yyval.ModuleVal = ParserResult = yyvsp[0].ModuleVal;
   CurModule.ModuleDone();
 ;
     break;}
-case 109:
-#line 1506 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 111:
+#line 1515 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ModuleVal = yyvsp[-1].ModuleVal;
     CurFun.FunctionDone();
   ;
     break;}
-case 110:
-#line 1510 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 112:
+#line 1519 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ModuleVal = yyvsp[-1].ModuleVal;
   ;
     break;}
-case 111:
-#line 1513 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 113:
+#line 1522 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ModuleVal = yyvsp[-1].ModuleVal;
   ;
     break;}
-case 112:
-#line 1516 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 114:
+#line 1525 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ModuleVal = CurModule.CurrentModule;
     // Emit an error if there are any unresolved types left.
@@ -2825,8 +2830,8 @@
     }
   ;
     break;}
-case 113:
-#line 1529 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 115:
+#line 1538 "/Users/sabre/cvs/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:
@@ -2848,56 +2853,56 @@
     delete yyvsp[0].TypeVal;
   ;
     break;}
-case 114:
-#line 1549 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 116:
+#line 1558 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {       // Function prototypes can be in const pool
   ;
     break;}
-case 115:
-#line 1551 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 117:
+#line 1560 "/Users/sabre/cvs/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);
+    if (yyvsp[-1].ConstVal == 0) ThrowException("Global value initializer is not a constant!");
+    ParseGlobalVariable(yyvsp[-4].StrVal, yyvsp[-3].Linkage, yyvsp[-2].BoolVal, yyvsp[-1].ConstVal->getType(), yyvsp[-1].ConstVal, yyvsp[0].UIntVal);
   ;
     break;}
-case 116:
-#line 1555 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 118:
+#line 1564 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
-    ParseGlobalVariable(yyvsp[-3].StrVal, GlobalValue::ExternalLinkage, yyvsp[-1].BoolVal, *yyvsp[0].TypeVal, 0);
-    delete yyvsp[0].TypeVal;
+    ParseGlobalVariable(yyvsp[-4].StrVal, GlobalValue::ExternalLinkage, yyvsp[-2].BoolVal, *yyvsp[-1].TypeVal, 0, yyvsp[0].UIntVal);
+    delete yyvsp[-1].TypeVal;
   ;
     break;}
-case 117:
-#line 1559 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 119:
+#line 1568 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { 
   ;
     break;}
-case 118:
-#line 1561 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 120:
+#line 1570 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
   ;
     break;}
-case 119:
-#line 1563 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 121:
+#line 1572 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { 
   ;
     break;}
-case 120:
-#line 1568 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 122:
+#line 1577 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.Endianness = Module::BigEndian; ;
     break;}
-case 121:
-#line 1569 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 123:
+#line 1578 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.Endianness = Module::LittleEndian; ;
     break;}
-case 122:
-#line 1571 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 124:
+#line 1580 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     CurModule.CurrentModule->setEndianness(yyvsp[0].Endianness);
   ;
     break;}
-case 123:
-#line 1574 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 125:
+#line 1583 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (yyvsp[0].UInt64Val == 32)
       CurModule.CurrentModule->setPointerSize(Module::Pointer32);
@@ -2907,110 +2912,112 @@
       ThrowException("Invalid pointer size: '" + utostr(yyvsp[0].UInt64Val) + "'!");
   ;
     break;}
-case 124:
-#line 1582 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 126:
+#line 1591 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     CurModule.CurrentModule->setTargetTriple(yyvsp[0].StrVal);
     free(yyvsp[0].StrVal);
   ;
     break;}
-case 126:
-#line 1589 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 128:
+#line 1598 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
           CurModule.CurrentModule->addLibrary(yyvsp[0].StrVal);
           free(yyvsp[0].StrVal);
         ;
     break;}
-case 127:
-#line 1593 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 129:
+#line 1602 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
           CurModule.CurrentModule->addLibrary(yyvsp[0].StrVal);
           free(yyvsp[0].StrVal);
         ;
     break;}
-case 128:
-#line 1597 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 130:
+#line 1606 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
         ;
     break;}
-case 132:
-#line 1606 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 134:
+#line 1615 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.StrVal = 0; ;
     break;}
-case 133:
-#line 1608 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 135:
+#line 1617 "/Users/sabre/cvs/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 134:
-#line 1614 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 136:
+#line 1623 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ArgList = yyvsp[-2].ArgList;
     yyvsp[-2].ArgList->push_back(*yyvsp[0].ArgVal);
     delete yyvsp[0].ArgVal;
   ;
     break;}
-case 135:
-#line 1619 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 137:
+#line 1628 "/Users/sabre/cvs/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 136:
-#line 1625 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 138:
+#line 1634 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ArgList = yyvsp[0].ArgList;
   ;
     break;}
-case 137:
-#line 1628 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 139:
+#line 1637 "/Users/sabre/cvs/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 138:
-#line 1633 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 140:
+#line 1642 "/Users/sabre/cvs/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 139:
-#line 1637 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 141:
+#line 1646 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ArgList = 0;
   ;
     break;}
-case 140:
-#line 1641 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 142:
+#line 1650 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
-  UnEscapeLexed(yyvsp[-3].StrVal);
-  std::string FunctionName(yyvsp[-3].StrVal);
-  free(yyvsp[-3].StrVal);  // Free strdup'd memory!
+  UnEscapeLexed(yyvsp[-4].StrVal);
+  std::string FunctionName(yyvsp[-4].StrVal);
+  free(yyvsp[-4].StrVal);  // Free strdup'd memory!
   
-  if (!(*yyvsp[-4].TypeVal)->isFirstClassType() && *yyvsp[-4].TypeVal != Type::VoidTy)
+  if (!(*yyvsp[-5].TypeVal)->isFirstClassType() && *yyvsp[-5].TypeVal != Type::VoidTy)
     ThrowException("LLVM functions cannot return aggregate types!");
+  if (yyvsp[0].UIntVal != 0 && !isPowerOf2_32(yyvsp[0].UIntVal))
+    ThrowException("Function alignment must be a power of two!");
 
   std::vector<const Type*> ParamTypeList;
-  if (yyvsp[-1].ArgList) {   // If there are arguments...
-    for (std::vector<std::pair<PATypeHolder*,char*> >::iterator I = yyvsp[-1].ArgList->begin();
-         I != yyvsp[-1].ArgList->end(); ++I)
+  if (yyvsp[-2].ArgList) {   // If there are arguments...
+    for (std::vector<std::pair<PATypeHolder*,char*> >::iterator I = yyvsp[-2].ArgList->begin();
+         I != yyvsp[-2].ArgList->end(); ++I)
       ParamTypeList.push_back(I->first->get());
   }
 
   bool isVarArg = ParamTypeList.size() && ParamTypeList.back() == Type::VoidTy;
   if (isVarArg) ParamTypeList.pop_back();
 
-  const FunctionType *FT = FunctionType::get(*yyvsp[-4].TypeVal, ParamTypeList, isVarArg);
+  const FunctionType *FT = FunctionType::get(*yyvsp[-5].TypeVal, ParamTypeList, isVarArg);
   const PointerType *PFT = PointerType::get(FT);
-  delete yyvsp[-4].TypeVal;
+  delete yyvsp[-5].TypeVal;
 
   ValID ID;
   if (!FunctionName.empty()) {
@@ -3047,31 +3054,32 @@
   }
 
   CurFun.FunctionStart(Fn);
-  Fn->setCallingConv(yyvsp[-5].UIntVal);
+  Fn->setCallingConv(yyvsp[-6].UIntVal);
+  Fn->setAlignment(yyvsp[0].UIntVal);
 
   // Add all of the arguments we parsed to the function...
-  if (yyvsp[-1].ArgList) {                     // Is null if empty...
+  if (yyvsp[-2].ArgList) {                     // Is null if empty...
     if (isVarArg) {  // Nuke the last entry
-      assert(yyvsp[-1].ArgList->back().first->get() == Type::VoidTy && yyvsp[-1].ArgList->back().second == 0&&
+      assert(yyvsp[-2].ArgList->back().first->get() == Type::VoidTy && yyvsp[-2].ArgList->back().second == 0&&
              "Not a varargs marker!");
-      delete yyvsp[-1].ArgList->back().first;
-      yyvsp[-1].ArgList->pop_back();  // Delete the last entry
+      delete yyvsp[-2].ArgList->back().first;
+      yyvsp[-2].ArgList->pop_back();  // Delete the last entry
     }
     Function::arg_iterator ArgIt = Fn->arg_begin();
-    for (std::vector<std::pair<PATypeHolder*,char*> >::iterator I = yyvsp[-1].ArgList->begin();
-         I != yyvsp[-1].ArgList->end(); ++I, ++ArgIt) {
+    for (std::vector<std::pair<PATypeHolder*,char*> >::iterator I = yyvsp[-2].ArgList->begin();
+         I != yyvsp[-2].ArgList->end(); ++I, ++ArgIt) {
       delete I->first;                          // Delete the typeholder...
 
       setValueName(ArgIt, I->second);           // Insert arg into symtab...
       InsertValue(ArgIt);
     }
 
-    delete yyvsp[-1].ArgList;                     // We're now done with the argument list
+    delete yyvsp[-2].ArgList;                     // We're now done with the argument list
   }
 ;
     break;}
-case 143:
-#line 1723 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 145:
+#line 1735 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
   yyval.FunctionVal = CurFun.CurrentFunction;
 
@@ -3080,67 +3088,67 @@
   yyval.FunctionVal->setLinkage(yyvsp[-2].Linkage);
 ;
     break;}
-case 146:
-#line 1733 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 148:
+#line 1745 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
   yyval.FunctionVal = yyvsp[-1].FunctionVal;
 ;
     break;}
-case 147:
-#line 1737 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 149:
+#line 1749 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { CurFun.isDeclare = true; ;
     break;}
-case 148:
-#line 1737 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 150:
+#line 1749 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
   yyval.FunctionVal = CurFun.CurrentFunction;
   CurFun.FunctionDone();
 ;
     break;}
-case 149:
-#line 1746 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 151:
+#line 1758 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {    // A reference to a direct constant
     yyval.ValIDVal = ValID::create(yyvsp[0].SInt64Val);
   ;
     break;}
-case 150:
-#line 1749 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 152:
+#line 1761 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ValIDVal = ValID::create(yyvsp[0].UInt64Val);
   ;
     break;}
-case 151:
-#line 1752 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 153:
+#line 1764 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {                     // Perhaps it's an FP constant?
     yyval.ValIDVal = ValID::create(yyvsp[0].FPVal);
   ;
     break;}
-case 152:
-#line 1755 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 154:
+#line 1767 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ValIDVal = ValID::create(ConstantBool::True);
   ;
     break;}
-case 153:
-#line 1758 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 155:
+#line 1770 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ValIDVal = ValID::create(ConstantBool::False);
   ;
     break;}
-case 154:
-#line 1761 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 156:
+#line 1773 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ValIDVal = ValID::createNull();
   ;
     break;}
-case 155:
-#line 1764 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 157:
+#line 1776 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ValIDVal = ValID::createUndef();
   ;
     break;}
-case 156:
-#line 1767 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 158:
+#line 1779 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { // Nonempty unsized packed vector
     const Type *ETy = (*yyvsp[-1].ConstVector)[0]->getType();
     int NumElements = yyvsp[-1].ConstVector->size(); 
@@ -3166,44 +3174,44 @@
     delete PTy; delete yyvsp[-1].ConstVector;
   ;
     break;}
-case 157:
-#line 1791 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 159:
+#line 1803 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ValIDVal = ValID::create(yyvsp[0].ConstVal);
   ;
     break;}
-case 158:
-#line 1798 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 160:
+#line 1810 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {  // Is it an integer reference...?
     yyval.ValIDVal = ValID::create(yyvsp[0].SIntVal);
   ;
     break;}
-case 159:
-#line 1801 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 161:
+#line 1813 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {                   // Is it a named reference...?
     yyval.ValIDVal = ValID::create(yyvsp[0].StrVal);
   ;
     break;}
-case 162:
-#line 1812 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 164:
+#line 1824 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ValueVal = getVal(*yyvsp[-1].TypeVal, yyvsp[0].ValIDVal); delete yyvsp[-1].TypeVal;
   ;
     break;}
-case 163:
-#line 1816 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 165:
+#line 1828 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.FunctionVal = yyvsp[-1].FunctionVal;
   ;
     break;}
-case 164:
-#line 1819 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 166:
+#line 1831 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { // Do not allow functions with 0 basic blocks   
     yyval.FunctionVal = yyvsp[-1].FunctionVal;
   ;
     break;}
-case 165:
-#line 1827 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 167:
+#line 1839 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     setValueName(yyvsp[0].TermInstVal, yyvsp[-1].StrVal);
     InsertValue(yyvsp[0].TermInstVal);
@@ -3213,15 +3221,15 @@
     yyval.BasicBlockVal = yyvsp[-2].BasicBlockVal;
   ;
     break;}
-case 166:
-#line 1836 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 168:
+#line 1848 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyvsp[-1].BasicBlockVal->getInstList().push_back(yyvsp[0].InstVal);
     yyval.BasicBlockVal = yyvsp[-1].BasicBlockVal;
   ;
     break;}
-case 167:
-#line 1840 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 169:
+#line 1852 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.BasicBlockVal = CurBB = getBBVal(ValID::create((int)CurFun.NextBBNum++), true);
 
@@ -3233,8 +3241,8 @@
     BBL.splice(BBL.end(), BBL, yyval.BasicBlockVal);
   ;
     break;}
-case 168:
-#line 1850 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 170:
+#line 1862 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.BasicBlockVal = CurBB = getBBVal(ValID::create(yyvsp[0].StrVal), true);
 
@@ -3246,32 +3254,32 @@
     BBL.splice(BBL.end(), BBL, yyval.BasicBlockVal);
   ;
     break;}
-case 169:
-#line 1861 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 171:
+#line 1873 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {              // Return with a result...
     yyval.TermInstVal = new ReturnInst(yyvsp[0].ValueVal);
   ;
     break;}
-case 170:
-#line 1864 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 172:
+#line 1876 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {                                       // Return with no result...
     yyval.TermInstVal = new ReturnInst();
   ;
     break;}
-case 171:
-#line 1867 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 173:
+#line 1879 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {                         // Unconditional Branch...
     yyval.TermInstVal = new BranchInst(getBBVal(yyvsp[0].ValIDVal));
   ;
     break;}
-case 172:
-#line 1870 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 174:
+#line 1882 "/Users/sabre/cvs/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 173:
-#line 1873 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 175:
+#line 1885 "/Users/sabre/cvs/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;
@@ -3287,15 +3295,15 @@
     delete yyvsp[-1].JumpTable;
   ;
     break;}
-case 174:
-#line 1887 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 176:
+#line 1899 "/Users/sabre/cvs/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 175:
-#line 1892 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 177:
+#line 1904 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     const PointerType *PFTy;
     const FunctionType *Ty;
@@ -3349,20 +3357,20 @@
     delete yyvsp[-7].ValueList;
   ;
     break;}
-case 176:
-#line 1944 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 178:
+#line 1956 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.TermInstVal = new UnwindInst();
   ;
     break;}
-case 177:
-#line 1947 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 179:
+#line 1959 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.TermInstVal = new UnreachableInst();
   ;
     break;}
-case 178:
-#line 1953 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 180:
+#line 1965 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.JumpTable = yyvsp[-5].JumpTable;
     Constant *V = cast<Constant>(getValNonImprovising(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal));
@@ -3372,8 +3380,8 @@
     yyval.JumpTable->push_back(std::make_pair(V, getBBVal(yyvsp[0].ValIDVal)));
   ;
     break;}
-case 179:
-#line 1961 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 181:
+#line 1973 "/Users/sabre/cvs/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));
@@ -3384,8 +3392,8 @@
     yyval.JumpTable->push_back(std::make_pair(V, getBBVal(yyvsp[0].ValIDVal)));
   ;
     break;}
-case 180:
-#line 1971 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 182:
+#line 1983 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
   // Is this definition named?? if so, assign the name...
   setValueName(yyvsp[0].InstVal, yyvsp[-1].StrVal);
@@ -3393,54 +3401,54 @@
   yyval.InstVal = yyvsp[0].InstVal;
 ;
     break;}
-case 181:
-#line 1978 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 183:
+#line 1990 "/Users/sabre/cvs/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 182:
-#line 1983 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 184:
+#line 1995 "/Users/sabre/cvs/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 183:
-#line 1990 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 185:
+#line 2002 "/Users/sabre/cvs/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 184:
-#line 1994 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 186:
+#line 2006 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.ValueList = yyvsp[-2].ValueList;
     yyvsp[-2].ValueList->push_back(yyvsp[0].ValueVal);
   ;
     break;}
-case 186:
-#line 2000 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 188:
+#line 2012 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { yyval.ValueList = 0; ;
     break;}
-case 187:
-#line 2002 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 189:
+#line 2014 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.BoolVal = true;
   ;
     break;}
-case 188:
-#line 2005 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 190:
+#line 2017 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.BoolVal = false;
   ;
     break;}
-case 189:
-#line 2011 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 191:
+#line 2023 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (!(*yyvsp[-3].TypeVal)->isInteger() && !(*yyvsp[-3].TypeVal)->isFloatingPoint() && 
         !isa<PackedType>((*yyvsp[-3].TypeVal).get()))
@@ -3454,8 +3462,8 @@
     delete yyvsp[-3].TypeVal;
   ;
     break;}
-case 190:
-#line 2023 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 192:
+#line 2035 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (!(*yyvsp[-3].TypeVal)->isIntegral())
       ThrowException("Logical operator requires integral operands!");
@@ -3465,8 +3473,8 @@
     delete yyvsp[-3].TypeVal;
   ;
     break;}
-case 191:
-#line 2031 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 193:
+#line 2043 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if(isa<PackedType>((*yyvsp[-3].TypeVal).get())) {
       ThrowException(
@@ -3478,8 +3486,8 @@
     delete yyvsp[-3].TypeVal;
   ;
     break;}
-case 192:
-#line 2041 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 194:
+#line 2053 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     std::cerr << "WARNING: Use of eliminated 'not' instruction:"
               << " Replacing with 'xor'.\n";
@@ -3493,8 +3501,8 @@
       ThrowException("Could not create a xor instruction!");
   ;
     break;}
-case 193:
-#line 2053 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 195:
+#line 2065 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (yyvsp[0].ValueVal->getType() != Type::UByteTy)
       ThrowException("Shift amount must be ubyte!");
@@ -3503,8 +3511,8 @@
     yyval.InstVal = new ShiftInst(yyvsp[-3].OtherOpVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
   ;
     break;}
-case 194:
-#line 2060 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 196:
+#line 2072 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (!yyvsp[0].TypeVal->get()->isFirstClassType())
       ThrowException("cast instruction to a non-primitive type: '" +
@@ -3513,8 +3521,8 @@
     delete yyvsp[0].TypeVal;
   ;
     break;}
-case 195:
-#line 2067 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 197:
+#line 2079 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (yyvsp[-4].ValueVal->getType() != Type::BoolTy)
       ThrowException("select condition must be boolean!");
@@ -3523,16 +3531,16 @@
     yyval.InstVal = new SelectInst(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal);
   ;
     break;}
-case 196:
-#line 2074 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 198:
+#line 2086 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     NewVarArgs = true;
     yyval.InstVal = new VAArgInst(yyvsp[-2].ValueVal, *yyvsp[0].TypeVal);
     delete yyvsp[0].TypeVal;
   ;
     break;}
-case 197:
-#line 2079 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 199:
+#line 2091 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     ObsoleteVarArgs = true;
     const Type* ArgTy = yyvsp[-2].ValueVal->getType();
@@ -3553,8 +3561,8 @@
     delete yyvsp[0].TypeVal;
   ;
     break;}
-case 198:
-#line 2098 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 200:
+#line 2110 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     ObsoleteVarArgs = true;
     const Type* ArgTy = yyvsp[-2].ValueVal->getType();
@@ -3578,8 +3586,8 @@
     delete yyvsp[0].TypeVal;
   ;
     break;}
-case 199:
-#line 2120 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 201:
+#line 2132 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     const Type *Ty = yyvsp[0].PHIList->front().first->getType();
     if (!Ty->isFirstClassType())
@@ -3595,8 +3603,8 @@
     delete yyvsp[0].PHIList;  // Free the list...
   ;
     break;}
-case 200:
-#line 2134 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 202:
+#line 2146 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     const PointerType *PFTy;
     const FunctionType *Ty;
@@ -3655,78 +3663,78 @@
     delete yyvsp[-1].ValueList;
   ;
     break;}
-case 201:
-#line 2191 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 203:
+#line 2203 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.InstVal = yyvsp[0].InstVal;
   ;
     break;}
-case 202:
-#line 2197 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 204:
+#line 2209 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { 
     yyval.ValueList = yyvsp[0].ValueList; 
   ;
     break;}
-case 203:
-#line 2199 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 205:
+#line 2211 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 { 
     yyval.ValueList = new std::vector<Value*>(); 
   ;
     break;}
-case 204:
-#line 2203 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 206:
+#line 2215 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.BoolVal = true;
   ;
     break;}
-case 205:
-#line 2206 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 207:
+#line 2218 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     yyval.BoolVal = false;
   ;
     break;}
-case 206:
-#line 2212 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 208:
+#line 2224 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
-  if (yyvsp[0].UIntVal & (yyvsp[0].UIntVal-1))
-    ThrowException("Alignment amount '" + utostr(yyvsp[0].UIntVal) +
-                   "' is not a power of 2!");
+    if (yyvsp[0].UIntVal != 0 && !isPowerOf2_32(yyvsp[0].UIntVal))
+      ThrowException("Alignment amount '" + utostr(yyvsp[0].UIntVal) +
+                     "' is not a power of 2!");
     yyval.InstVal = new MallocInst(*yyvsp[-1].TypeVal, 0, yyvsp[0].UIntVal);
     delete yyvsp[-1].TypeVal;
   ;
     break;}
-case 207:
-#line 2219 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 209:
+#line 2231 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
-    if (yyvsp[0].UIntVal & (yyvsp[0].UIntVal-1))
+    if (yyvsp[0].UIntVal != 0 && !isPowerOf2_32(yyvsp[0].UIntVal))
       ThrowException("Alignment amount '" + utostr(yyvsp[0].UIntVal) +
                      "' is not a power of 2!");
     yyval.InstVal = new MallocInst(*yyvsp[-4].TypeVal, getVal(yyvsp[-2].PrimType, yyvsp[-1].ValIDVal), yyvsp[0].UIntVal);
     delete yyvsp[-4].TypeVal;
   ;
     break;}
-case 208:
-#line 2226 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 210:
+#line 2238 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
-    if (yyvsp[0].UIntVal & (yyvsp[0].UIntVal-1))
+    if (yyvsp[0].UIntVal != 0 && !isPowerOf2_32(yyvsp[0].UIntVal))
       ThrowException("Alignment amount '" + utostr(yyvsp[0].UIntVal) +
                      "' is not a power of 2!");
     yyval.InstVal = new AllocaInst(*yyvsp[-1].TypeVal, 0, yyvsp[0].UIntVal);
     delete yyvsp[-1].TypeVal;
   ;
     break;}
-case 209:
-#line 2233 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 211:
+#line 2245 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
-    if (yyvsp[0].UIntVal & (yyvsp[0].UIntVal-1))
+    if (yyvsp[0].UIntVal != 0 && !isPowerOf2_32(yyvsp[0].UIntVal))
       ThrowException("Alignment amount '" + utostr(yyvsp[0].UIntVal) +
                      "' is not a power of 2!");
     yyval.InstVal = new AllocaInst(*yyvsp[-4].TypeVal, getVal(yyvsp[-2].PrimType, yyvsp[-1].ValIDVal), yyvsp[0].UIntVal);
     delete yyvsp[-4].TypeVal;
   ;
     break;}
-case 210:
-#line 2240 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 212:
+#line 2252 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (!isa<PointerType>(yyvsp[0].ValueVal->getType()))
       ThrowException("Trying to free nonpointer type " + 
@@ -3734,8 +3742,8 @@
     yyval.InstVal = new FreeInst(yyvsp[0].ValueVal);
   ;
     break;}
-case 211:
-#line 2247 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 213:
+#line 2259 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (!isa<PointerType>(yyvsp[-1].TypeVal->get()))
       ThrowException("Can't load from nonpointer type: " +
@@ -3747,8 +3755,8 @@
     delete yyvsp[-1].TypeVal;
   ;
     break;}
-case 212:
-#line 2257 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 214:
+#line 2269 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     const PointerType *PT = dyn_cast<PointerType>(yyvsp[-1].TypeVal->get());
     if (!PT)
@@ -3763,8 +3771,8 @@
     delete yyvsp[-1].TypeVal;
   ;
     break;}
-case 213:
-#line 2270 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+case 215:
+#line 2282 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
     if (!isa<PointerType>(yyvsp[-2].TypeVal->get()))
       ThrowException("getelementptr insn requires pointer operand!");
@@ -4009,7 +4017,7 @@
     }
   return 1;
 }
-#line 2293 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2305 "/Users/sabre/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 
 int yyerror(const char *ErrorMsg) {
   std::string where 






More information about the llvm-commits mailing list