diff --git a/lib/AsmParser/llvmAsmParser.cpp.cvs b/lib/AsmParser/llvmAsmParser.cpp.cvs
index 04ea826..581cd7c 100644
--- a/lib/AsmParser/llvmAsmParser.cpp.cvs
+++ b/lib/AsmParser/llvmAsmParser.cpp.cvs
@@ -1091,6 +1091,7 @@
     ((DerivedType*)I->second.get())->refineAbstractTypeTo(ToTy);
     CurModule.LateResolveTypes.erase(I);
   }
+  D.destroy();
 }
 
 // setValueName - Set the specified value to the name given.  The name may be
@@ -1166,9 +1167,12 @@
     GV->setConstant(isConstantGlobal);
     GV->setThreadLocal(IsThreadLocal);
     InsertValue(GV, CurModule.Values);
+    ID.destroy();
     return GV;
   }
 
+  ID.destroy();
+
   // If this global has a name
   if (!Name.empty()) {
     // if the global we're parsing has an initializer (is a definition) and
@@ -1371,7 +1375,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 970 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 974 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
@@ -1420,7 +1424,7 @@
   llvm::FCmpInst::Predicate         FPredicate;
 }
 /* Line 187 of yacc.c.  */
-#line 1424 "llvmAsmParser.tab.c"
+#line 1428 "llvmAsmParser.tab.c"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -1433,7 +1437,7 @@
 
 
 /* Line 216 of yacc.c.  */
-#line 1437 "llvmAsmParser.tab.c"
+#line 1441 "llvmAsmParser.tab.c"
 
 #ifdef short
 # undef short
@@ -1879,42 +1883,42 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,  1136,  1136,  1136,  1136,  1136,  1136,  1136,  1136,  1136,
-    1136,  1137,  1137,  1137,  1137,  1137,  1137,  1138,  1138,  1138,
-    1138,  1138,  1138,  1139,  1139,  1139,  1139,  1139,  1139,  1142,
-    1142,  1143,  1143,  1144,  1144,  1145,  1145,  1146,  1146,  1150,
-    1150,  1151,  1151,  1152,  1152,  1153,  1153,  1154,  1154,  1155,
-    1155,  1156,  1156,  1157,  1158,  1163,  1164,  1164,  1164,  1164,
-    1164,  1166,  1166,  1166,  1167,  1167,  1169,  1170,  1174,  1178,
-    1183,  1189,  1189,  1191,  1192,  1197,  1203,  1204,  1205,  1206,
-    1207,  1208,  1212,  1213,  1214,  1218,  1219,  1220,  1221,  1225,
-    1226,  1227,  1231,  1232,  1233,  1234,  1235,  1239,  1240,  1241,
-    1244,  1245,  1246,  1247,  1248,  1249,  1250,  1257,  1258,  1259,
-    1260,  1261,  1262,  1263,  1264,  1265,  1266,  1270,  1271,  1276,
-    1277,  1278,  1281,  1282,  1288,  1289,  1290,  1291,  1292,  1293,
-    1294,  1295,  1296,  1297,  1300,  1301,  1307,  1308,  1315,  1316,
-    1322,  1323,  1332,  1340,  1341,  1346,  1347,  1348,  1353,  1366,
-    1366,  1366,  1366,  1366,  1366,  1366,  1369,  1373,  1377,  1384,
-    1389,  1397,  1426,  1451,  1456,  1466,  1476,  1480,  1490,  1497,
-    1506,  1513,  1518,  1523,  1530,  1531,  1538,  1545,  1553,  1559,
-    1571,  1599,  1615,  1642,  1670,  1696,  1716,  1742,  1762,  1774,
-    1781,  1847,  1857,  1867,  1873,  1883,  1889,  1899,  1905,  1911,
-    1924,  1936,  1957,  1965,  1971,  1982,  1987,  1992,  1997,  2002,
-    2008,  2014,  2020,  2028,  2039,  2043,  2051,  2051,  2054,  2054,
-    2057,  2069,  2090,  2095,  2103,  2104,  2108,  2108,  2112,  2112,
-    2115,  2118,  2142,  2154,  2153,  2165,  2164,  2174,  2173,  2184,
-    2224,  2227,  2233,  2243,  2247,  2252,  2254,  2259,  2264,  2273,
-    2283,  2294,  2298,  2307,  2316,  2321,  2470,  2470,  2472,  2481,
-    2481,  2483,  2488,  2500,  2504,  2509,  2513,  2517,  2522,  2527,
-    2531,  2535,  2539,  2543,  2547,  2551,  2573,  2595,  2601,  2614,
-    2626,  2631,  2643,  2649,  2653,  2663,  2667,  2671,  2676,  2683,
-    2683,  2689,  2698,  2703,  2708,  2712,  2721,  2730,  2743,  2752,
-    2756,  2764,  2784,  2788,  2793,  2804,  2823,  2832,  2936,  2940,
-    2947,  2958,  2971,  2980,  2993,  3004,  3014,  3025,  3033,  3043,
-    3050,  3053,  3054,  3062,  3068,  3077,  3081,  3086,  3102,  3119,
-    3131,  3143,  3157,  3171,  3183,  3204,  3211,  3217,  3223,  3229,
-    3244,  3354,  3359,  3363,  3370,  3377,  3387,  3394,  3404,  3412,
-    3426,  3443,  3457,  3472,  3487
+       0,  1140,  1140,  1140,  1140,  1140,  1140,  1140,  1140,  1140,
+    1140,  1141,  1141,  1141,  1141,  1141,  1141,  1142,  1142,  1142,
+    1142,  1142,  1142,  1143,  1143,  1143,  1143,  1143,  1143,  1146,
+    1146,  1147,  1147,  1148,  1148,  1149,  1149,  1150,  1150,  1154,
+    1154,  1155,  1155,  1156,  1156,  1157,  1157,  1158,  1158,  1159,
+    1159,  1160,  1160,  1161,  1162,  1167,  1168,  1168,  1168,  1168,
+    1168,  1170,  1170,  1170,  1171,  1171,  1173,  1174,  1178,  1182,
+    1187,  1193,  1193,  1195,  1196,  1201,  1207,  1208,  1209,  1210,
+    1211,  1212,  1216,  1217,  1218,  1222,  1223,  1224,  1225,  1229,
+    1230,  1231,  1235,  1236,  1237,  1238,  1239,  1243,  1244,  1245,
+    1248,  1249,  1250,  1251,  1252,  1253,  1254,  1261,  1262,  1263,
+    1264,  1265,  1266,  1267,  1268,  1269,  1270,  1274,  1275,  1280,
+    1281,  1282,  1285,  1286,  1292,  1293,  1294,  1295,  1296,  1297,
+    1298,  1299,  1300,  1301,  1304,  1305,  1311,  1312,  1319,  1320,
+    1326,  1327,  1336,  1344,  1345,  1350,  1351,  1352,  1357,  1370,
+    1370,  1370,  1370,  1370,  1370,  1370,  1373,  1377,  1381,  1388,
+    1393,  1401,  1430,  1455,  1460,  1470,  1480,  1484,  1494,  1501,
+    1510,  1517,  1522,  1527,  1534,  1535,  1542,  1549,  1557,  1563,
+    1575,  1603,  1619,  1646,  1674,  1700,  1720,  1746,  1766,  1778,
+    1785,  1851,  1861,  1871,  1877,  1887,  1893,  1903,  1909,  1915,
+    1928,  1940,  1961,  1969,  1975,  1986,  1991,  1996,  2001,  2006,
+    2012,  2018,  2024,  2032,  2043,  2047,  2055,  2055,  2058,  2058,
+    2061,  2073,  2094,  2099,  2107,  2108,  2112,  2112,  2116,  2116,
+    2119,  2122,  2146,  2158,  2157,  2169,  2168,  2178,  2177,  2188,
+    2228,  2231,  2237,  2247,  2251,  2256,  2258,  2263,  2268,  2277,
+    2287,  2298,  2302,  2311,  2320,  2325,  2474,  2474,  2476,  2485,
+    2485,  2487,  2492,  2504,  2508,  2513,  2517,  2521,  2526,  2531,
+    2535,  2539,  2543,  2547,  2551,  2555,  2577,  2599,  2605,  2618,
+    2630,  2635,  2647,  2653,  2657,  2667,  2671,  2675,  2680,  2687,
+    2687,  2693,  2702,  2707,  2712,  2716,  2725,  2734,  2747,  2756,
+    2760,  2768,  2788,  2792,  2797,  2808,  2827,  2836,  2940,  2944,
+    2951,  2962,  2975,  2984,  2997,  3008,  3018,  3029,  3037,  3047,
+    3054,  3057,  3058,  3066,  3072,  3081,  3085,  3090,  3106,  3123,
+    3135,  3147,  3161,  3175,  3187,  3208,  3215,  3221,  3227,  3233,
+    3248,  3358,  3363,  3367,  3374,  3381,  3391,  3398,  3408,  3416,
+    3430,  3447,  3461,  3476,  3491
 };
 #endif
 
@@ -3657,152 +3661,152 @@
   switch (yyn)
     {
         case 29:
-#line 1142 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1146 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;}
     break;
 
   case 30:
-#line 1142 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1146 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;}
     break;
 
   case 31:
-#line 1143 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1147 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;}
     break;
 
   case 32:
-#line 1143 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1147 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;}
     break;
 
   case 33:
-#line 1144 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1148 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;}
     break;
 
   case 34:
-#line 1144 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1148 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;}
     break;
 
   case 35:
-#line 1145 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1149 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;}
     break;
 
   case 36:
-#line 1145 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1149 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;}
     break;
 
   case 37:
-#line 1146 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1150 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;}
     break;
 
   case 38:
-#line 1146 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1150 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;}
     break;
 
   case 39:
-#line 1150 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1154 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;}
     break;
 
   case 40:
-#line 1150 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1154 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;}
     break;
 
   case 41:
-#line 1151 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1155 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;}
     break;
 
   case 42:
-#line 1151 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1155 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;}
     break;
 
   case 43:
-#line 1152 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1156 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;}
     break;
 
   case 44:
-#line 1152 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1156 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;}
     break;
 
   case 45:
-#line 1153 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1157 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;}
     break;
 
   case 46:
-#line 1153 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1157 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;}
     break;
 
   case 47:
-#line 1154 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1158 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;}
     break;
 
   case 48:
-#line 1154 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1158 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;}
     break;
 
   case 49:
-#line 1155 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1159 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;}
     break;
 
   case 50:
-#line 1155 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1159 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;}
     break;
 
   case 51:
-#line 1156 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1160 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;}
     break;
 
   case 52:
-#line 1156 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1160 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;}
     break;
 
   case 53:
-#line 1157 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1161 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;}
     break;
 
   case 54:
-#line 1158 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1162 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;}
     break;
 
   case 65:
-#line 1167 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1171 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = 0; ;}
     break;
 
   case 66:
-#line 1169 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1173 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal)=(yyvsp[(3) - (4)].UInt64Val); ;}
     break;
 
   case 67:
-#line 1170 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1174 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal)=0; ;}
     break;
 
   case 68:
-#line 1174 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1178 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal);
     CHECK_FOR_ERROR
@@ -3810,7 +3814,7 @@
     break;
 
   case 69:
-#line 1178 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1182 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = 0;
     CHECK_FOR_ERROR
@@ -3818,7 +3822,7 @@
     break;
 
   case 70:
-#line 1183 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1187 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.UIntVal) = (yyvsp[(1) - (2)].UIntVal);
   CHECK_FOR_ERROR
@@ -3826,7 +3830,7 @@
     break;
 
   case 74:
-#line 1192 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1196 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = 0;
     CHECK_FOR_ERROR
@@ -3834,7 +3838,7 @@
     break;
 
   case 75:
-#line 1197 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1201 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal);
     CHECK_FOR_ERROR
@@ -3842,157 +3846,157 @@
     break;
 
   case 76:
-#line 1203 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1207 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 77:
-#line 1204 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1208 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 78:
-#line 1205 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1209 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
     break;
 
   case 79:
-#line 1206 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1210 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;}
     break;
 
   case 80:
-#line 1207 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1211 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
     break;
 
   case 81:
-#line 1208 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1212 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::CommonLinkage; ;}
     break;
 
   case 82:
-#line 1212 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1216 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
     break;
 
   case 83:
-#line 1213 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1217 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
     break;
 
   case 84:
-#line 1214 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1218 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 85:
-#line 1218 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1222 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::DefaultVisibility;   ;}
     break;
 
   case 86:
-#line 1219 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1223 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::DefaultVisibility;   ;}
     break;
 
   case 87:
-#line 1220 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1224 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::HiddenVisibility;    ;}
     break;
 
   case 88:
-#line 1221 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1225 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Visibility) = GlobalValue::ProtectedVisibility; ;}
     break;
 
   case 89:
-#line 1225 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1229 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 90:
-#line 1226 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1230 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
     break;
 
   case 91:
-#line 1227 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1231 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
     break;
 
   case 92:
-#line 1231 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1235 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 93:
-#line 1232 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1236 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 94:
-#line 1233 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1237 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
     break;
 
   case 95:
-#line 1234 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1238 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 96:
-#line 1235 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1239 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
     break;
 
   case 97:
-#line 1239 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1243 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
     break;
 
   case 98:
-#line 1240 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1244 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
     break;
 
   case 99:
-#line 1241 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1245 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
     break;
 
   case 100:
-#line 1244 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1248 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::C; ;}
     break;
 
   case 101:
-#line 1245 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1249 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::C; ;}
     break;
 
   case 102:
-#line 1246 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1250 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::Fast; ;}
     break;
 
   case 103:
-#line 1247 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1251 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::Cold; ;}
     break;
 
   case 104:
-#line 1248 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1252 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::X86_StdCall; ;}
     break;
 
   case 105:
-#line 1249 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1253 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = CallingConv::X86_FastCall; ;}
     break;
 
   case 106:
-#line 1250 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1254 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
                    if ((unsigned)(yyvsp[(2) - (2)].UInt64Val) != (yyvsp[(2) - (2)].UInt64Val))
                      GEN_ERROR("Calling conv too large");
@@ -4002,176 +4006,176 @@
     break;
 
   case 107:
-#line 1257 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1261 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::ZExt;      ;}
     break;
 
   case 108:
-#line 1258 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1262 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::ZExt;      ;}
     break;
 
   case 109:
-#line 1259 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1263 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::SExt;      ;}
     break;
 
   case 110:
-#line 1260 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1264 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::SExt;      ;}
     break;
 
   case 111:
-#line 1261 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1265 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::InReg;     ;}
     break;
 
   case 112:
-#line 1262 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1266 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::StructRet; ;}
     break;
 
   case 113:
-#line 1263 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1267 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::NoAlias;   ;}
     break;
 
   case 114:
-#line 1264 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1268 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::ByVal;     ;}
     break;
 
   case 115:
-#line 1265 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1269 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::Nest;      ;}
     break;
 
   case 116:
-#line 1266 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1270 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) =
                           Attribute::constructAlignmentFromInt((yyvsp[(2) - (2)].UInt64Val));    ;}
     break;
 
   case 117:
-#line 1270 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1274 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::None; ;}
     break;
 
   case 118:
-#line 1271 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1275 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
                 (yyval.Attributes) = (yyvsp[(1) - (2)].Attributes) | (yyvsp[(2) - (2)].Attributes);
               ;}
     break;
 
   case 119:
-#line 1276 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1280 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::InReg;     ;}
     break;
 
   case 120:
-#line 1277 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1281 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::ZExt;     ;}
     break;
 
   case 121:
-#line 1278 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1282 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::SExt;     ;}
     break;
 
   case 122:
-#line 1281 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1285 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::None; ;}
     break;
 
   case 123:
-#line 1282 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1286 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
                (yyval.Attributes) = (yyvsp[(1) - (2)].Attributes) | (yyvsp[(2) - (2)].Attributes);
              ;}
     break;
 
   case 124:
-#line 1288 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1292 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::NoReturn; ;}
     break;
 
   case 125:
-#line 1289 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1293 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::NoUnwind; ;}
     break;
 
   case 126:
-#line 1290 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1294 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::InReg;     ;}
     break;
 
   case 127:
-#line 1291 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1295 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::ZExt;     ;}
     break;
 
   case 128:
-#line 1292 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1296 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::SExt;     ;}
     break;
 
   case 129:
-#line 1293 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1297 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::ReadNone; ;}
     break;
 
   case 130:
-#line 1294 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1298 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::ReadOnly; ;}
     break;
 
   case 131:
-#line 1295 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1299 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::NoInline ;}
     break;
 
   case 132:
-#line 1296 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1300 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::AlwaysInline ;}
     break;
 
   case 133:
-#line 1297 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1301 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::OptimizeForSize ;}
     break;
 
   case 134:
-#line 1300 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1304 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.Attributes) = Attribute::None; ;}
     break;
 
   case 135:
-#line 1301 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1305 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
                 (yyval.Attributes) = (yyvsp[(1) - (2)].Attributes) | (yyvsp[(2) - (2)].Attributes);
               ;}
     break;
 
   case 136:
-#line 1307 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1311 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = 0; ;}
     break;
 
   case 137:
-#line 1308 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1312 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
                 (yyval.StrVal) = (yyvsp[(2) - (2)].StrVal);
               ;}
     break;
 
   case 138:
-#line 1315 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1319 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = 0; ;}
     break;
 
   case 139:
-#line 1316 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1320 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.UIntVal) = (yyvsp[(2) - (2)].UInt64Val);
   if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
@@ -4181,12 +4185,12 @@
     break;
 
   case 140:
-#line 1322 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1326 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.UIntVal) = 0; ;}
     break;
 
   case 141:
-#line 1323 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1327 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.UIntVal) = (yyvsp[(3) - (3)].UInt64Val);
   if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
@@ -4196,7 +4200,7 @@
     break;
 
   case 142:
-#line 1332 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1336 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   for (unsigned i = 0, e = (yyvsp[(2) - (2)].StrVal)->length(); i != e; ++i)
     if ((*(yyvsp[(2) - (2)].StrVal))[i] == '"' || (*(yyvsp[(2) - (2)].StrVal))[i] == '\\')
@@ -4207,27 +4211,27 @@
     break;
 
   case 143:
-#line 1340 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1344 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = 0; ;}
     break;
 
   case 144:
-#line 1341 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1345 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.StrVal) = (yyvsp[(1) - (1)].StrVal); ;}
     break;
 
   case 145:
-#line 1346 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1350 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {;}
     break;
 
   case 146:
-#line 1347 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1351 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {;}
     break;
 
   case 147:
-#line 1348 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1352 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV->setSection(*(yyvsp[(1) - (1)].StrVal));
     delete (yyvsp[(1) - (1)].StrVal);
@@ -4236,7 +4240,7 @@
     break;
 
   case 148:
-#line 1353 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1357 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(2) - (2)].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[(2) - (2)].UInt64Val)))
       GEN_ERROR("Alignment must be a power of two");
@@ -4246,7 +4250,7 @@
     break;
 
   case 156:
-#line 1369 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1373 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeVal) = new PATypeHolder(OpaqueType::get());
     CHECK_FOR_ERROR
@@ -4254,7 +4258,7 @@
     break;
 
   case 157:
-#line 1373 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1377 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeVal) = new PATypeHolder((yyvsp[(1) - (1)].PrimType));
     CHECK_FOR_ERROR
@@ -4262,7 +4266,7 @@
     break;
 
   case 158:
-#line 1377 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1381 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {                             // Pointer type?
     if (*(yyvsp[(1) - (3)].TypeVal) == Type::LabelTy)
       GEN_ERROR("Cannot form a pointer to a basic block");
@@ -4273,7 +4277,7 @@
     break;
 
   case 159:
-#line 1384 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1388 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {            // Named types are also simple types...
     const Type* tmp = getTypeVal((yyvsp[(1) - (1)].ValIDVal));
     CHECK_FOR_ERROR
@@ -4282,7 +4286,7 @@
     break;
 
   case 160:
-#line 1389 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1393 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {                   // Type UpReference
     if ((yyvsp[(2) - (2)].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range");
     OpaqueType *OT = OpaqueType::get();        // Use temporary placeholder
@@ -4294,7 +4298,7 @@
     break;
 
   case 161:
-#line 1397 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1401 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // Allow but ignore attributes on function types; this permits auto-upgrade.
     // FIXME: remove in LLVM 3.0.
@@ -4327,7 +4331,7 @@
     break;
 
   case 162:
-#line 1426 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1430 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // Allow but ignore attributes on function types; this permits auto-upgrade.
     // FIXME: remove in LLVM 3.0.
@@ -4355,7 +4359,7 @@
     break;
 
   case 163:
-#line 1451 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1455 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {          // Sized array type?
     (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(ArrayType::get(*(yyvsp[(4) - (5)].TypeVal), (yyvsp[(2) - (5)].UInt64Val))));
     delete (yyvsp[(4) - (5)].TypeVal);
@@ -4364,7 +4368,7 @@
     break;
 
   case 164:
-#line 1456 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1460 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {          // Vector type?
      const llvm::Type* ElemTy = (yyvsp[(4) - (5)].TypeVal)->get();
      if ((unsigned)(yyvsp[(2) - (5)].UInt64Val) != (yyvsp[(2) - (5)].UInt64Val))
@@ -4378,7 +4382,7 @@
     break;
 
   case 165:
-#line 1466 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1470 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {                        // Structure type?
     std::vector<const Type*> Elements;
     for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[(2) - (3)].TypeList)->begin(),
@@ -4392,7 +4396,7 @@
     break;
 
   case 166:
-#line 1476 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1480 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {                                  // Empty structure type?
     (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>()));
     CHECK_FOR_ERROR
@@ -4400,7 +4404,7 @@
     break;
 
   case 167:
-#line 1480 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1484 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     std::vector<const Type*> Elements;
     for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[(3) - (5)].TypeList)->begin(),
@@ -4414,7 +4418,7 @@
     break;
 
   case 168:
-#line 1490 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1494 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {                         // Empty structure type?
     (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>(), true));
     CHECK_FOR_ERROR
@@ -4422,7 +4426,7 @@
     break;
 
   case 169:
-#line 1497 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1501 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // Allow but ignore attributes on function types; this permits auto-upgrade.
     // FIXME: remove in LLVM 3.0.
@@ -4432,7 +4436,7 @@
     break;
 
   case 170:
-#line 1506 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1510 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (1)].TypeVal))->getDescription());
@@ -4443,14 +4447,14 @@
     break;
 
   case 171:
-#line 1513 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1517 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeVal) = new PATypeHolder(Type::VoidTy);
   ;}
     break;
 
   case 172:
-#line 1518 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1522 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
     (yyval.TypeWithAttrsList)->push_back((yyvsp[(1) - (1)].TypeWithAttrs));
@@ -4459,7 +4463,7 @@
     break;
 
   case 173:
-#line 1523 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1527 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     ((yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList))->push_back((yyvsp[(3) - (3)].TypeWithAttrs));
     CHECK_FOR_ERROR
@@ -4467,7 +4471,7 @@
     break;
 
   case 175:
-#line 1531 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1535 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList);
     TypeWithAttrs TWA; TWA.Attrs = Attribute::None;
@@ -4478,7 +4482,7 @@
     break;
 
   case 176:
-#line 1538 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1542 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList;
     TypeWithAttrs TWA; TWA.Attrs = Attribute::None;
@@ -4489,7 +4493,7 @@
     break;
 
   case 177:
-#line 1545 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1549 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeWithAttrsList) = new TypeWithAttrsList();
     CHECK_FOR_ERROR
@@ -4497,7 +4501,7 @@
     break;
 
   case 178:
-#line 1553 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1557 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TypeList) = new std::list<PATypeHolder>();
     (yyval.TypeList)->push_back(*(yyvsp[(1) - (1)].TypeVal));
@@ -4507,7 +4511,7 @@
     break;
 
   case 179:
-#line 1559 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1563 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     ((yyval.TypeList)=(yyvsp[(1) - (3)].TypeList))->push_back(*(yyvsp[(3) - (3)].TypeVal));
     delete (yyvsp[(3) - (3)].TypeVal);
@@ -4516,7 +4520,7 @@
     break;
 
   case 180:
-#line 1571 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1575 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized arr
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription());
@@ -4548,7 +4552,7 @@
     break;
 
   case 181:
-#line 1599 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1603 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
@@ -4568,7 +4572,7 @@
     break;
 
   case 182:
-#line 1615 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1619 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
@@ -4599,7 +4603,7 @@
     break;
 
   case 183:
-#line 1642 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1646 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized arr
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription());
@@ -4631,7 +4635,7 @@
     break;
 
   case 184:
-#line 1670 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1674 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (4)].TypeVal)->get());
     if (STy == 0)
@@ -4661,7 +4665,7 @@
     break;
 
   case 185:
-#line 1696 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1700 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
@@ -4685,7 +4689,7 @@
     break;
 
   case 186:
-#line 1716 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1720 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (6)].TypeVal)->get());
     if (STy == 0)
@@ -4715,7 +4719,7 @@
     break;
 
   case 187:
-#line 1742 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1746 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (5)].TypeVal))->getDescription());
@@ -4739,7 +4743,7 @@
     break;
 
   case 188:
-#line 1762 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1766 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4755,7 +4759,7 @@
     break;
 
   case 189:
-#line 1774 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1778 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4766,7 +4770,7 @@
     break;
 
   case 190:
-#line 1781 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1785 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4836,7 +4840,7 @@
     break;
 
   case 191:
-#line 1847 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1851 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4850,7 +4854,7 @@
     break;
 
   case 192:
-#line 1857 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1861 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -4864,7 +4868,7 @@
     break;
 
   case 193:
-#line 1867 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1871 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {      // integral constants
     if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].SInt64Val)))
       GEN_ERROR("Constant value doesn't fit in type");
@@ -4874,7 +4878,7 @@
     break;
 
   case 194:
-#line 1873 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1877 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {      // arbitrary precision integer constants
     uint32_t BitWidth = cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth();
     if ((yyvsp[(2) - (2)].APIntVal)->getBitWidth() > BitWidth) {
@@ -4888,7 +4892,7 @@
     break;
 
   case 195:
-#line 1883 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1887 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {      // integral constants
     if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].UInt64Val)))
       GEN_ERROR("Constant value doesn't fit in type");
@@ -4898,7 +4902,7 @@
     break;
 
   case 196:
-#line 1889 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1893 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {      // arbitrary precision integer constants
     uint32_t BitWidth = cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth();
     if ((yyvsp[(2) - (2)].APIntVal)->getBitWidth() > BitWidth) {
@@ -4912,7 +4916,7 @@
     break;
 
   case 197:
-#line 1899 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1903 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {                      // Boolean constants
     if (cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth() != 1)
       GEN_ERROR("Constant true must have type i1");
@@ -4922,7 +4926,7 @@
     break;
 
   case 198:
-#line 1905 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1909 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {                     // Boolean constants
     if (cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth() != 1)
       GEN_ERROR("Constant false must have type i1");
@@ -4932,7 +4936,7 @@
     break;
 
   case 199:
-#line 1911 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1915 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {                   // Floating point constants
     if (!ConstantFP::isValueValidForType((yyvsp[(1) - (2)].PrimType), *(yyvsp[(2) - (2)].FPVal)))
       GEN_ERROR("Floating point constant invalid for type");
@@ -4947,7 +4951,7 @@
     break;
 
   case 200:
-#line 1924 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1928 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (6)].TypeVal))->getDescription());
@@ -4963,7 +4967,7 @@
     break;
 
   case 201:
-#line 1936 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1940 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!isa<PointerType>((yyvsp[(3) - (5)].ConstVal)->getType()))
       GEN_ERROR("GetElementPtr requires a pointer operand");
@@ -4988,7 +4992,7 @@
     break;
 
   case 202:
-#line 1957 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1961 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(3) - (8)].ConstVal)->getType() != Type::Int1Ty)
       GEN_ERROR("Select condition must be of boolean type");
@@ -5000,7 +5004,7 @@
     break;
 
   case 203:
-#line 1965 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1969 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType())
       GEN_ERROR("Binary operator types must match");
@@ -5010,7 +5014,7 @@
     break;
 
   case 204:
-#line 1971 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1975 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType())
       GEN_ERROR("Logical operator types must match");
@@ -5025,7 +5029,7 @@
     break;
 
   case 205:
-#line 1982 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1986 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
       GEN_ERROR("icmp operand types must match");
@@ -5034,7 +5038,7 @@
     break;
 
   case 206:
-#line 1987 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1991 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
       GEN_ERROR("fcmp operand types must match");
@@ -5043,7 +5047,7 @@
     break;
 
   case 207:
-#line 1992 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1996 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
       GEN_ERROR("vicmp operand types must match");
@@ -5052,7 +5056,7 @@
     break;
 
   case 208:
-#line 1997 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2001 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType())
       GEN_ERROR("vfcmp operand types must match");
@@ -5061,7 +5065,7 @@
     break;
 
   case 209:
-#line 2002 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2006 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ExtractElementInst::isValidOperands((yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal)))
       GEN_ERROR("Invalid extractelement operands");
@@ -5071,7 +5075,7 @@
     break;
 
   case 210:
-#line 2008 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2012 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!InsertElementInst::isValidOperands((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal)))
       GEN_ERROR("Invalid insertelement operands");
@@ -5081,7 +5085,7 @@
     break;
 
   case 211:
-#line 2014 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2018 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ShuffleVectorInst::isValidOperands((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal)))
       GEN_ERROR("Invalid shufflevector operands");
@@ -5091,7 +5095,7 @@
     break;
 
   case 212:
-#line 2020 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2024 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!isa<StructType>((yyvsp[(3) - (5)].ConstVal)->getType()) && !isa<ArrayType>((yyvsp[(3) - (5)].ConstVal)->getType()))
       GEN_ERROR("ExtractValue requires an aggregate operand");
@@ -5103,7 +5107,7 @@
     break;
 
   case 213:
-#line 2028 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2032 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!isa<StructType>((yyvsp[(3) - (7)].ConstVal)->getType()) && !isa<ArrayType>((yyvsp[(3) - (7)].ConstVal)->getType()))
       GEN_ERROR("InsertValue requires an aggregate operand");
@@ -5115,7 +5119,7 @@
     break;
 
   case 214:
-#line 2039 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2043 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     ((yyval.ConstVector) = (yyvsp[(1) - (3)].ConstVector))->push_back((yyvsp[(3) - (3)].ConstVal));
     CHECK_FOR_ERROR
@@ -5123,7 +5127,7 @@
     break;
 
   case 215:
-#line 2043 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2047 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ConstVector) = new std::vector<Constant*>();
     (yyval.ConstVector)->push_back((yyvsp[(1) - (1)].ConstVal));
@@ -5132,27 +5136,27 @@
     break;
 
   case 216:
-#line 2051 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2055 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = false; ;}
     break;
 
   case 217:
-#line 2051 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2055 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = true; ;}
     break;
 
   case 218:
-#line 2054 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2058 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = true; ;}
     break;
 
   case 219:
-#line 2054 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2058 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.BoolVal) = false; ;}
     break;
 
   case 220:
-#line 2057 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2061 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     const Type* VTy = (yyvsp[(1) - (2)].TypeVal)->get();
     Value *V = getVal(VTy, (yyvsp[(2) - (2)].ValIDVal));
@@ -5168,7 +5172,7 @@
     break;
 
   case 221:
-#line 2069 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2073 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     Constant *Val = (yyvsp[(3) - (6)].ConstVal);
     const Type *DestTy = (yyvsp[(5) - (6)].TypeVal)->get();
@@ -5184,7 +5188,7 @@
     break;
 
   case 222:
-#line 2090 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2094 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
     CurModule.ModuleDone();
@@ -5193,7 +5197,7 @@
     break;
 
   case 223:
-#line 2095 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2099 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule;
     CurModule.ModuleDone();
@@ -5202,12 +5206,12 @@
     break;
 
   case 226:
-#line 2108 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2112 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { CurFun.isDeclare = false; ;}
     break;
 
   case 227:
-#line 2108 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2112 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurFun.FunctionDone();
     CHECK_FOR_ERROR
@@ -5215,26 +5219,26 @@
     break;
 
   case 228:
-#line 2112 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2116 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { CurFun.isDeclare = true; ;}
     break;
 
   case 229:
-#line 2112 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2116 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 230:
-#line 2115 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2119 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 231:
-#line 2118 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2122 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (3)].TypeVal))->getDescription());
@@ -5262,7 +5266,7 @@
     break;
 
   case 232:
-#line 2142 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2146 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     ResolveTypeTo((yyvsp[(1) - (3)].StrVal), (yyvsp[(3) - (3)].PrimType));
 
@@ -5277,7 +5281,7 @@
     break;
 
   case 233:
-#line 2154 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2158 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     /* "Externally Visible" Linkage */
     if ((yyvsp[(5) - (6)].ConstVal) == 0)
@@ -5289,14 +5293,14 @@
     break;
 
   case 234:
-#line 2161 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2165 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV = 0;
   ;}
     break;
 
   case 235:
-#line 2165 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2169 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if ((yyvsp[(6) - (7)].ConstVal) == 0)
       GEN_ERROR("Global value initializer is not a constant");
@@ -5306,14 +5310,14 @@
     break;
 
   case 236:
-#line 2170 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2174 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV = 0;
   ;}
     break;
 
   case 237:
-#line 2174 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2178 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(6) - (7)].TypeVal))->getDescription());
@@ -5324,7 +5328,7 @@
     break;
 
   case 238:
-#line 2180 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2184 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurGV = 0;
     CHECK_FOR_ERROR
@@ -5332,7 +5336,7 @@
     break;
 
   case 239:
-#line 2184 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2188 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     std::string Name;
     if ((yyvsp[(1) - (5)].StrVal)) {
@@ -5376,21 +5380,21 @@
     break;
 
   case 240:
-#line 2224 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2228 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 241:
-#line 2227 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2231 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
   ;}
     break;
 
   case 242:
-#line 2233 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2237 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm();
   if (AsmSoFar.empty())
@@ -5403,7 +5407,7 @@
     break;
 
   case 243:
-#line 2243 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2247 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurModule.CurrentModule->setTargetTriple(*(yyvsp[(3) - (3)].StrVal));
     delete (yyvsp[(3) - (3)].StrVal);
@@ -5411,7 +5415,7 @@
     break;
 
   case 244:
-#line 2247 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2251 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurModule.CurrentModule->setDataLayout(*(yyvsp[(3) - (3)].StrVal));
     delete (yyvsp[(3) - (3)].StrVal);
@@ -5419,7 +5423,7 @@
     break;
 
   case 246:
-#line 2254 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2258 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
           CurModule.CurrentModule->addLibrary(*(yyvsp[(3) - (3)].StrVal));
           delete (yyvsp[(3) - (3)].StrVal);
@@ -5428,7 +5432,7 @@
     break;
 
   case 247:
-#line 2259 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2263 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
           CurModule.CurrentModule->addLibrary(*(yyvsp[(1) - (1)].StrVal));
           delete (yyvsp[(1) - (1)].StrVal);
@@ -5437,14 +5441,14 @@
     break;
 
   case 248:
-#line 2264 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2268 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
           CHECK_FOR_ERROR
         ;}
     break;
 
   case 249:
-#line 2273 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2277 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
@@ -5458,7 +5462,7 @@
     break;
 
   case 250:
-#line 2283 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2287 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription());
@@ -5472,7 +5476,7 @@
     break;
 
   case 251:
-#line 2294 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2298 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = (yyvsp[(1) - (1)].ArgList);
     CHECK_FOR_ERROR
@@ -5480,7 +5484,7 @@
     break;
 
   case 252:
-#line 2298 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2302 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = (yyvsp[(1) - (3)].ArgList);
     struct ArgListEntry E;
@@ -5493,7 +5497,7 @@
     break;
 
   case 253:
-#line 2307 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2311 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = new ArgListType;
     struct ArgListEntry E;
@@ -5506,7 +5510,7 @@
     break;
 
   case 254:
-#line 2316 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2320 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ArgList) = 0;
     CHECK_FOR_ERROR
@@ -5514,7 +5518,7 @@
     break;
 
   case 255:
-#line 2322 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2326 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   std::string FunctionName(*(yyvsp[(4) - (11)].StrVal));
   delete (yyvsp[(4) - (11)].StrVal);  // Free strdup'd memory!
@@ -5665,7 +5669,7 @@
     break;
 
   case 258:
-#line 2472 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2476 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.FunctionVal) = CurFun.CurrentFunction;
 
@@ -5677,7 +5681,7 @@
     break;
 
   case 261:
-#line 2483 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2487 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
   CHECK_FOR_ERROR
@@ -5685,7 +5689,7 @@
     break;
 
   case 262:
-#line 2488 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2492 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CurFun.CurrentFunction->setLinkage((yyvsp[(1) - (3)].Linkage));
     CurFun.CurrentFunction->setVisibility((yyvsp[(2) - (3)].Visibility));
@@ -5696,7 +5700,7 @@
     break;
 
   case 263:
-#line 2500 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2504 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
@@ -5704,7 +5708,7 @@
     break;
 
   case 264:
-#line 2504 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2508 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
@@ -5712,7 +5716,7 @@
     break;
 
   case 265:
-#line 2509 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2513 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {    // A reference to a direct constant
     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].SInt64Val));
     CHECK_FOR_ERROR
@@ -5720,7 +5724,7 @@
     break;
 
   case 266:
-#line 2513 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2517 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].UInt64Val));
     CHECK_FOR_ERROR
@@ -5728,7 +5732,7 @@
     break;
 
   case 267:
-#line 2517 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2521 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {      // arbitrary precision integer constants
     (yyval.ValIDVal) = ValID::create(*(yyvsp[(1) - (1)].APIntVal), true);
     delete (yyvsp[(1) - (1)].APIntVal);
@@ -5737,7 +5741,7 @@
     break;
 
   case 268:
-#line 2522 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2526 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {      // arbitrary precision integer constants
     (yyval.ValIDVal) = ValID::create(*(yyvsp[(1) - (1)].APIntVal), false);
     delete (yyvsp[(1) - (1)].APIntVal);
@@ -5746,7 +5750,7 @@
     break;
 
   case 269:
-#line 2527 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2531 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {                     // Perhaps it's an FP constant?
     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].FPVal));
     CHECK_FOR_ERROR
@@ -5754,7 +5758,7 @@
     break;
 
   case 270:
-#line 2531 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2535 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create(ConstantInt::getTrue());
     CHECK_FOR_ERROR
@@ -5762,7 +5766,7 @@
     break;
 
   case 271:
-#line 2535 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2539 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create(ConstantInt::getFalse());
     CHECK_FOR_ERROR
@@ -5770,7 +5774,7 @@
     break;
 
   case 272:
-#line 2539 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2543 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createNull();
     CHECK_FOR_ERROR
@@ -5778,7 +5782,7 @@
     break;
 
   case 273:
-#line 2543 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2547 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createUndef();
     CHECK_FOR_ERROR
@@ -5786,7 +5790,7 @@
     break;
 
   case 274:
-#line 2547 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2551 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {     // A vector zero constant.
     (yyval.ValIDVal) = ValID::createZeroInit();
     CHECK_FOR_ERROR
@@ -5794,7 +5798,7 @@
     break;
 
   case 275:
-#line 2551 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2555 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized packed vector
     const Type *ETy = (*(yyvsp[(2) - (3)].ConstVector))[0]->getType();
     unsigned NumElements = (yyvsp[(2) - (3)].ConstVector)->size();
@@ -5820,7 +5824,7 @@
     break;
 
   case 276:
-#line 2573 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2577 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Nonempty unsized arr
     const Type *ETy = (*(yyvsp[(2) - (3)].ConstVector))[0]->getType();
     uint64_t NumElements = (yyvsp[(2) - (3)].ConstVector)->size();
@@ -5846,7 +5850,7 @@
     break;
 
   case 277:
-#line 2595 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2599 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // Use undef instead of an array because it's inconvenient to determine
     // the element type at this point, there being no elements to examine.
@@ -5856,7 +5860,7 @@
     break;
 
   case 278:
-#line 2601 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2605 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     uint64_t NumElements = (yyvsp[(2) - (2)].StrVal)->length();
     const Type *ETy = Type::Int8Ty;
@@ -5873,7 +5877,7 @@
     break;
 
   case 279:
-#line 2614 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2618 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     std::vector<const Type*> Elements((yyvsp[(2) - (3)].ConstVector)->size());
     for (unsigned i = 0, e = (yyvsp[(2) - (3)].ConstVector)->size(); i != e; ++i)
@@ -5889,7 +5893,7 @@
     break;
 
   case 280:
-#line 2626 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2630 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     const StructType *STy = StructType::get(std::vector<const Type*>());
     (yyval.ValIDVal) = ValID::create(ConstantStruct::get(STy, std::vector<Constant*>()));
@@ -5898,7 +5902,7 @@
     break;
 
   case 281:
-#line 2631 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2635 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     std::vector<const Type*> Elements((yyvsp[(3) - (5)].ConstVector)->size());
     for (unsigned i = 0, e = (yyvsp[(3) - (5)].ConstVector)->size(); i != e; ++i)
@@ -5914,7 +5918,7 @@
     break;
 
   case 282:
-#line 2643 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2647 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     const StructType *STy = StructType::get(std::vector<const Type*>(),
                                             /*isPacked=*/true);
@@ -5924,7 +5928,7 @@
     break;
 
   case 283:
-#line 2649 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2653 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].ConstVal));
     CHECK_FOR_ERROR
@@ -5932,7 +5936,7 @@
     break;
 
   case 284:
-#line 2653 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2657 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createInlineAsm(*(yyvsp[(3) - (5)].StrVal), *(yyvsp[(5) - (5)].StrVal), (yyvsp[(2) - (5)].BoolVal));
     delete (yyvsp[(3) - (5)].StrVal);
@@ -5942,7 +5946,7 @@
     break;
 
   case 285:
-#line 2663 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2667 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {  // Is it an integer reference...?
     (yyval.ValIDVal) = ValID::createLocalID((yyvsp[(1) - (1)].UIntVal));
     CHECK_FOR_ERROR
@@ -5950,7 +5954,7 @@
     break;
 
   case 286:
-#line 2667 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2671 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValIDVal) = ValID::createGlobalID((yyvsp[(1) - (1)].UIntVal));
     CHECK_FOR_ERROR
@@ -5958,7 +5962,7 @@
     break;
 
   case 287:
-#line 2671 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2675 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {                   // Is it a named reference...?
     (yyval.ValIDVal) = ValID::createLocalName(*(yyvsp[(1) - (1)].StrVal));
     delete (yyvsp[(1) - (1)].StrVal);
@@ -5967,7 +5971,7 @@
     break;
 
   case 288:
-#line 2676 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2680 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {                   // Is it a named reference...?
     (yyval.ValIDVal) = ValID::createGlobalName(*(yyvsp[(1) - (1)].StrVal));
     delete (yyvsp[(1) - (1)].StrVal);
@@ -5976,7 +5980,7 @@
     break;
 
   case 291:
-#line 2689 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2693 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription());
@@ -5987,7 +5991,7 @@
     break;
 
   case 292:
-#line 2698 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2702 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValueList) = new std::vector<Value *>();
     (yyval.ValueList)->push_back((yyvsp[(1) - (1)].ValueVal));
@@ -5996,7 +6000,7 @@
     break;
 
   case 293:
-#line 2703 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2707 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     ((yyval.ValueList)=(yyvsp[(1) - (3)].ValueList))->push_back((yyvsp[(3) - (3)].ValueVal));
     CHECK_FOR_ERROR
@@ -6004,7 +6008,7 @@
     break;
 
   case 294:
-#line 2708 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2712 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
     CHECK_FOR_ERROR
@@ -6012,7 +6016,7 @@
     break;
 
   case 295:
-#line 2712 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2716 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Do not allow functions with 0 basic blocks
     (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
     CHECK_FOR_ERROR
@@ -6020,7 +6024,7 @@
     break;
 
   case 296:
-#line 2721 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2725 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     setValueName((yyvsp[(3) - (3)].TermInstVal), (yyvsp[(2) - (3)].StrVal));
     CHECK_FOR_ERROR
@@ -6032,7 +6036,7 @@
     break;
 
   case 297:
-#line 2730 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2734 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
   CHECK_FOR_ERROR
   int ValNum = InsertValue((yyvsp[(3) - (3)].TermInstVal));
@@ -6047,7 +6051,7 @@
     break;
 
   case 298:
-#line 2743 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2747 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (CastInst *CI1 = dyn_cast<CastInst>((yyvsp[(2) - (2)].InstVal)))
       if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0)))
@@ -6060,7 +6064,7 @@
     break;
 
   case 299:
-#line 2752 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2756 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {          // Empty space between instruction lists
     (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalID(CurFun.NextValNum));
     CHECK_FOR_ERROR
@@ -6068,7 +6072,7 @@
     break;
 
   case 300:
-#line 2756 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2760 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {             // Labelled (named) basic block
     (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalName(*(yyvsp[(1) - (1)].StrVal)));
     delete (yyvsp[(1) - (1)].StrVal);
@@ -6078,7 +6082,7 @@
     break;
 
   case 301:
-#line 2764 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2768 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { // Return with a result...
     ValueList &VL = *(yyvsp[(2) - (2)].ValueList);
     assert(!VL.empty() && "Invalid ret operands!");
@@ -6102,7 +6106,7 @@
     break;
 
   case 302:
-#line 2784 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2788 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {                                    // Return with no result...
     (yyval.TermInstVal) = ReturnInst::Create();
     CHECK_FOR_ERROR
@@ -6110,7 +6114,7 @@
     break;
 
   case 303:
-#line 2788 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2792 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {                           // Unconditional Branch...
     BasicBlock* tmpBB = getBBVal((yyvsp[(3) - (3)].ValIDVal));
     CHECK_FOR_ERROR
@@ -6119,7 +6123,7 @@
     break;
 
   case 304:
-#line 2793 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2797 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (cast<IntegerType>((yyvsp[(2) - (9)].PrimType))->getBitWidth() != 1)
       GEN_ERROR("Branch condition must have type i1");
@@ -6134,7 +6138,7 @@
     break;
 
   case 305:
-#line 2804 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2808 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     Value* tmpVal = getVal((yyvsp[(2) - (9)].PrimType), (yyvsp[(3) - (9)].ValIDVal));
     CHECK_FOR_ERROR
@@ -6157,7 +6161,7 @@
     break;
 
   case 306:
-#line 2823 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2827 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     Value* tmpVal = getVal((yyvsp[(2) - (8)].PrimType), (yyvsp[(3) - (8)].ValIDVal));
     CHECK_FOR_ERROR
@@ -6170,7 +6174,7 @@
     break;
 
   case 307:
-#line 2833 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2837 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
 
     // Handle the short syntax
@@ -6277,7 +6281,7 @@
     break;
 
   case 308:
-#line 2936 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2940 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TermInstVal) = new UnwindInst();
     CHECK_FOR_ERROR
@@ -6285,7 +6289,7 @@
     break;
 
   case 309:
-#line 2940 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2944 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.TermInstVal) = new UnreachableInst();
     CHECK_FOR_ERROR
@@ -6293,7 +6297,7 @@
     break;
 
   case 310:
-#line 2947 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2951 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.JumpTable) = (yyvsp[(1) - (6)].JumpTable);
     Constant *V = cast<Constant>(getExistingVal((yyvsp[(2) - (6)].PrimType), (yyvsp[(3) - (6)].ValIDVal)));
@@ -6308,7 +6312,7 @@
     break;
 
   case 311:
-#line 2958 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2962 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >();
     Constant *V = cast<Constant>(getExistingVal((yyvsp[(1) - (5)].PrimType), (yyvsp[(2) - (5)].ValIDVal)));
@@ -6324,7 +6328,7 @@
     break;
 
   case 312:
-#line 2971 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2975 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // Is this definition named?? if so, assign the name...
     setValueName((yyvsp[(2) - (2)].InstVal), (yyvsp[(1) - (2)].StrVal));
@@ -6336,7 +6340,7 @@
     break;
 
   case 313:
-#line 2980 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2984 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     CHECK_FOR_ERROR
     int ValNum = InsertValue((yyvsp[(2) - (2)].InstVal));
@@ -6351,7 +6355,7 @@
     break;
 
   case 314:
-#line 2993 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2997 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {    // Used for PHI nodes
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (6)].TypeVal))->getDescription());
@@ -6366,7 +6370,7 @@
     break;
 
   case 315:
-#line 3004 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3008 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.PHIList) = (yyvsp[(1) - (7)].PHIList);
     Value* tmpVal = getVal((yyvsp[(1) - (7)].PHIList)->front().first->getType(), (yyvsp[(4) - (7)].ValIDVal));
@@ -6378,7 +6382,7 @@
     break;
 
   case 316:
-#line 3014 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3018 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // FIXME: Remove trailing OptAttributes in LLVM 3.0, it was a mistake in 2.0
     if (!UpRefs.empty())
@@ -6393,7 +6397,7 @@
     break;
 
   case 317:
-#line 3025 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3029 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // FIXME: Remove trailing OptAttributes in LLVM 3.0, it was a mistake in 2.0
     // Labels are only valid in ASMs
@@ -6405,7 +6409,7 @@
     break;
 
   case 318:
-#line 3033 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3037 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // FIXME: Remove trailing OptAttributes in LLVM 3.0, it was a mistake in 2.0
     if (!UpRefs.empty())
@@ -6419,7 +6423,7 @@
     break;
 
   case 319:
-#line 3043 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3047 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     // FIXME: Remove trailing OptAttributes in LLVM 3.0, it was a mistake in 2.0
     (yyval.ParamList) = (yyvsp[(1) - (6)].ParamList);
@@ -6430,17 +6434,17 @@
     break;
 
   case 320:
-#line 3050 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3054 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ParamList) = new ParamList(); ;}
     break;
 
   case 321:
-#line 3053 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3057 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     { (yyval.ValueList) = new std::vector<Value*>(); ;}
     break;
 
   case 322:
-#line 3054 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3058 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ValueList) = (yyvsp[(1) - (3)].ValueList);
     (yyval.ValueList)->push_back((yyvsp[(3) - (3)].ValueVal));
@@ -6449,7 +6453,7 @@
     break;
 
   case 323:
-#line 3062 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3066 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ConstantList) = new std::vector<unsigned>();
     if ((unsigned)(yyvsp[(2) - (2)].UInt64Val) != (yyvsp[(2) - (2)].UInt64Val))
@@ -6459,7 +6463,7 @@
     break;
 
   case 324:
-#line 3068 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3072 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.ConstantList) = (yyvsp[(1) - (3)].ConstantList);
     if ((unsigned)(yyvsp[(3) - (3)].UInt64Val) != (yyvsp[(3) - (3)].UInt64Val))
@@ -6470,7 +6474,7 @@
     break;
 
   case 325:
-#line 3077 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3081 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
@@ -6478,7 +6482,7 @@
     break;
 
   case 326:
-#line 3081 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3085 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
@@ -6486,7 +6490,7 @@
     break;
 
   case 327:
-#line 3086 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3090 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription());
@@ -6506,7 +6510,7 @@
     break;
 
   case 328:
-#line 3102 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3106 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription());
@@ -6527,7 +6531,7 @@
     break;
 
   case 329:
-#line 3119 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3123 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
@@ -6543,7 +6547,7 @@
     break;
 
   case 330:
-#line 3131 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3135 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
@@ -6559,7 +6563,7 @@
     break;
 
   case 331:
-#line 3143 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3147 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
@@ -6577,7 +6581,7 @@
     break;
 
   case 332:
-#line 3157 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3161 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription());
@@ -6595,7 +6599,7 @@
     break;
 
   case 333:
-#line 3171 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3175 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription());
@@ -6611,7 +6615,7 @@
     break;
 
   case 334:
-#line 3183 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3187 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (isa<VectorType>((yyvsp[(2) - (6)].ValueVal)->getType())) {
       // vector select
@@ -6636,7 +6640,7 @@
     break;
 
   case 335:
-#line 3204 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3208 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription());
@@ -6647,7 +6651,7 @@
     break;
 
   case 336:
-#line 3211 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3215 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ExtractElementInst::isValidOperands((yyvsp[(2) - (4)].ValueVal), (yyvsp[(4) - (4)].ValueVal)))
       GEN_ERROR("Invalid extractelement operands");
@@ -6657,7 +6661,7 @@
     break;
 
   case 337:
-#line 3217 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3221 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!InsertElementInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)))
       GEN_ERROR("Invalid insertelement operands");
@@ -6667,7 +6671,7 @@
     break;
 
   case 338:
-#line 3223 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3227 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!ShuffleVectorInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)))
       GEN_ERROR("Invalid shufflevector operands");
@@ -6677,7 +6681,7 @@
     break;
 
   case 339:
-#line 3229 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3233 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     const Type *Ty = (yyvsp[(2) - (2)].PHIList)->front().first->getType();
     if (!Ty->isFirstClassType())
@@ -6696,7 +6700,7 @@
     break;
 
   case 340:
-#line 3245 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3249 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
 
     // Handle the short syntax
@@ -6809,7 +6813,7 @@
     break;
 
   case 341:
-#line 3354 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3358 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.InstVal) = (yyvsp[(1) - (1)].InstVal);
     CHECK_FOR_ERROR
@@ -6817,7 +6821,7 @@
     break;
 
   case 342:
-#line 3359 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3363 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = true;
     CHECK_FOR_ERROR
@@ -6825,7 +6829,7 @@
     break;
 
   case 343:
-#line 3363 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3367 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     (yyval.BoolVal) = false;
     CHECK_FOR_ERROR
@@ -6833,7 +6837,7 @@
     break;
 
   case 344:
-#line 3370 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3374 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (3)].TypeVal))->getDescription());
@@ -6844,7 +6848,7 @@
     break;
 
   case 345:
-#line 3377 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3381 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription());
@@ -6858,7 +6862,7 @@
     break;
 
   case 346:
-#line 3387 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3391 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (3)].TypeVal))->getDescription());
@@ -6869,7 +6873,7 @@
     break;
 
   case 347:
-#line 3394 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3398 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription());
@@ -6883,7 +6887,7 @@
     break;
 
   case 348:
-#line 3404 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3408 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!isa<PointerType>((yyvsp[(2) - (2)].ValueVal)->getType()))
       GEN_ERROR("Trying to free nonpointer type " +
@@ -6894,7 +6898,7 @@
     break;
 
   case 349:
-#line 3412 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3416 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription());
@@ -6912,7 +6916,7 @@
     break;
 
   case 350:
-#line 3426 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3430 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (7)].TypeVal))->getDescription());
@@ -6933,7 +6937,7 @@
     break;
 
   case 351:
-#line 3443 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3447 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription());
@@ -6951,7 +6955,7 @@
     break;
 
   case 352:
-#line 3457 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3461 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (4)].TypeVal))->getDescription());
@@ -6970,7 +6974,7 @@
     break;
 
   case 353:
-#line 3472 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3476 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (4)].TypeVal))->getDescription());
@@ -6989,7 +6993,7 @@
     break;
 
   case 354:
-#line 3487 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3491 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
     {
     if (!UpRefs.empty())
       GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (7)].TypeVal))->getDescription());
@@ -7011,7 +7015,7 @@
 
 
 /* Line 1267 of yacc.c.  */
-#line 7015 "llvmAsmParser.tab.c"
+#line 7019 "llvmAsmParser.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -7225,7 +7229,7 @@
 }
 
 
-#line 3506 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 3510 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 
 
 // common code from the two 'RunVMAsmParser' functions
diff --git a/lib/AsmParser/llvmAsmParser.h.cvs b/lib/AsmParser/llvmAsmParser.h.cvs
index 885cbee..30518ab 100644
--- a/lib/AsmParser/llvmAsmParser.h.cvs
+++ b/lib/AsmParser/llvmAsmParser.h.cvs
@@ -360,7 +360,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 970 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 974 "/cvs/llvm/lib/AsmParser/llvmAsmParser.y"
 {
   llvm::Module                           *ModuleVal;
   llvm::Function                         *FunctionVal;
diff --git a/lib/AsmParser/llvmAsmParser.y.cvs b/lib/AsmParser/llvmAsmParser.y.cvs
index 1a84584..608ed72 100644
--- a/lib/AsmParser/llvmAsmParser.y.cvs
+++ b/lib/AsmParser/llvmAsmParser.y.cvs
@@ -707,6 +707,7 @@
     ((DerivedType*)I->second.get())->refineAbstractTypeTo(ToTy);
     CurModule.LateResolveTypes.erase(I);
   }
+  D.destroy();
 }
 
 // setValueName - Set the specified value to the name given.  The name may be
@@ -782,9 +783,12 @@
     GV->setConstant(isConstantGlobal);
     GV->setThreadLocal(IsThreadLocal);
     InsertValue(GV, CurModule.Values);
+    ID.destroy();
     return GV;
   }
 
+  ID.destroy();
+
   // If this global has a name
   if (!Name.empty()) {
     // if the global we're parsing has an initializer (is a definition) and
