#include <list>
#include <utility>
+// The following is a gross hack. In order to rid the libAsmParser library of
+// exceptions, we have to have a way of getting the yyparse function to go into
+// an error situation. So, whenever we want an error to occur, the GenerateError
+// function (see bottom of file) sets TriggerError. Then, at the end of each
+// production in the grammer we use CHECK_FOR_ERROR which will invoke YYERROR
+// (a goto) to put YACC in error state. Furthermore, several calls to
+// GenerateError are made from inside productions and they must simulate the
+// previous exception behavior by exiting the production immediately. We have
+// replaced these with the GEN_ERROR macro which calls GeneratError and then
+// immediately invokes YYERROR. This would be so much cleaner if it was a
+// recursive descent parser.
static bool TriggerError = false;
#define CHECK_FOR_ERROR { if (TriggerError) { TriggerError = false; YYERROR; } }
-
#define GEN_ERROR(msg) { GenerateError(msg); YYERROR; }
int yyerror(const char *ErrorMsg); // Forward declarations to prevent "implicit
#endif
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 897 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 907 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
typedef union YYSTYPE {
llvm::Module *ModuleVal;
llvm::Function *FunctionVal;
llvm::Module::Endianness Endianness;
} YYSTYPE;
/* Line 196 of yacc.c. */
-#line 1220 "llvmAsmParser.tab.c"
+#line 1230 "llvmAsmParser.tab.c"
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
/* Line 219 of yacc.c. */
-#line 1232 "llvmAsmParser.tab.c"
+#line 1242 "llvmAsmParser.tab.c"
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
# define YYSIZE_T __SIZE_TYPE__
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const unsigned short int yyrline[] =
{
- 0, 1017, 1017, 1018, 1026, 1027, 1037, 1037, 1037, 1037,
- 1037, 1038, 1038, 1038, 1039, 1039, 1039, 1039, 1039, 1039,
- 1041, 1041, 1045, 1045, 1045, 1045, 1046, 1046, 1046, 1046,
- 1047, 1047, 1048, 1048, 1051, 1055, 1060, 1061, 1062, 1063,
- 1064, 1066, 1067, 1068, 1069, 1070, 1071, 1080, 1081, 1087,
- 1088, 1096, 1104, 1105, 1110, 1111, 1112, 1117, 1131, 1131,
- 1132, 1132, 1134, 1144, 1144, 1144, 1144, 1144, 1144, 1144,
- 1145, 1145, 1145, 1145, 1145, 1145, 1146, 1150, 1154, 1161,
- 1169, 1182, 1187, 1199, 1209, 1213, 1222, 1227, 1233, 1234,
- 1238, 1242, 1253, 1279, 1293, 1323, 1349, 1370, 1383, 1393,
- 1398, 1458, 1465, 1474, 1480, 1486, 1490, 1494, 1502, 1513,
- 1545, 1553, 1575, 1586, 1592, 1600, 1606, 1612, 1621, 1625,
- 1633, 1633, 1643, 1651, 1656, 1660, 1664, 1668, 1683, 1704,
- 1707, 1710, 1710, 1717, 1717, 1725, 1728, 1731, 1735, 1748,
- 1749, 1751, 1755, 1764, 1770, 1772, 1777, 1782, 1791, 1791,
- 1792, 1792, 1794, 1801, 1807, 1814, 1818, 1824, 1829, 1834,
- 1921, 1921, 1923, 1931, 1931, 1933, 1938, 1938, 1948, 1952,
- 1957, 1961, 1965, 1969, 1973, 1977, 1981, 1985, 1989, 2014,
- 2018, 2032, 2036, 2042, 2042, 2048, 2053, 2057, 2066, 2076,
- 2081, 2092, 2104, 2108, 2112, 2116, 2120, 2135, 2140, 2194,
- 2198, 2205, 2214, 2225, 2233, 2239, 2247, 2252, 2259, 2259,
- 2261, 2265, 2272, 2285, 2297, 2308, 2321, 2329, 2337, 2345,
- 2351, 2371, 2394, 2400, 2406, 2412, 2427, 2485, 2492, 2495,
- 2500, 2504, 2511, 2516, 2521, 2526, 2531, 2539, 2550, 2564
+ 0, 1027, 1027, 1028, 1036, 1037, 1047, 1047, 1047, 1047,
+ 1047, 1048, 1048, 1048, 1049, 1049, 1049, 1049, 1049, 1049,
+ 1051, 1051, 1055, 1055, 1055, 1055, 1056, 1056, 1056, 1056,
+ 1057, 1057, 1058, 1058, 1061, 1065, 1070, 1071, 1072, 1073,
+ 1074, 1076, 1077, 1078, 1079, 1080, 1081, 1090, 1091, 1097,
+ 1098, 1106, 1114, 1115, 1120, 1121, 1122, 1127, 1141, 1141,
+ 1142, 1142, 1144, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
+ 1155, 1155, 1155, 1155, 1155, 1155, 1156, 1160, 1164, 1171,
+ 1179, 1192, 1197, 1209, 1219, 1223, 1232, 1237, 1243, 1244,
+ 1248, 1252, 1263, 1289, 1303, 1333, 1359, 1380, 1393, 1403,
+ 1408, 1468, 1475, 1484, 1490, 1496, 1500, 1504, 1512, 1523,
+ 1555, 1563, 1585, 1596, 1602, 1610, 1616, 1622, 1631, 1635,
+ 1643, 1643, 1653, 1661, 1666, 1670, 1674, 1678, 1693, 1714,
+ 1717, 1720, 1720, 1727, 1727, 1735, 1738, 1741, 1745, 1758,
+ 1759, 1761, 1765, 1774, 1780, 1782, 1787, 1792, 1801, 1801,
+ 1802, 1802, 1804, 1811, 1817, 1824, 1828, 1834, 1839, 1844,
+ 1931, 1931, 1933, 1941, 1941, 1943, 1948, 1948, 1958, 1962,
+ 1967, 1971, 1975, 1979, 1983, 1987, 1991, 1995, 1999, 2024,
+ 2028, 2042, 2046, 2052, 2052, 2058, 2063, 2067, 2076, 2086,
+ 2091, 2102, 2114, 2118, 2122, 2126, 2130, 2145, 2150, 2204,
+ 2208, 2215, 2224, 2235, 2243, 2249, 2257, 2262, 2269, 2269,
+ 2271, 2275, 2282, 2295, 2307, 2318, 2331, 2339, 2347, 2355,
+ 2361, 2381, 2404, 2410, 2416, 2422, 2437, 2495, 2502, 2505,
+ 2510, 2514, 2521, 2526, 2531, 2536, 2541, 2549, 2560, 2574
};
#endif
switch (yyn)
{
case 3:
-#line 1018 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1028 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[0].UIntVal) > (uint32_t)INT32_MAX) // Outside of my range!
GEN_ERROR("Value too large for type!");
break;
case 5:
-#line 1027 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1037 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[0].UInt64Val) > (uint64_t)INT64_MAX) // Outside of my range!
GEN_ERROR("Value too large for type!");
break;
case 34:
-#line 1051 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1061 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.StrVal) = (yyvsp[-1].StrVal);
CHECK_FOR_ERROR
break;
case 35:
-#line 1055 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1065 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.StrVal) = 0;
CHECK_FOR_ERROR
break;
case 36:
-#line 1060 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1070 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
break;
case 37:
-#line 1061 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1071 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
break;
case 38:
-#line 1062 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1072 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
break;
case 39:
-#line 1063 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1073 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::AppendingLinkage; ;}
break;
case 40:
-#line 1064 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1074 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
break;
case 41:
-#line 1066 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1076 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::C; ;}
break;
case 42:
-#line 1067 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1077 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::C; ;}
break;
case 43:
-#line 1068 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1078 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::CSRet; ;}
break;
case 44:
-#line 1069 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1079 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::Fast; ;}
break;
case 45:
-#line 1070 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1080 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::Cold; ;}
break;
case 46:
-#line 1071 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1081 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val))
GEN_ERROR("Calling conv too large!");
break;
case 47:
-#line 1080 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1090 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = 0; ;}
break;
case 48:
-#line 1081 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1091 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.UIntVal) = (yyvsp[0].UInt64Val);
if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
break;
case 49:
-#line 1087 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1097 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = 0; ;}
break;
case 50:
-#line 1088 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1098 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.UIntVal) = (yyvsp[0].UInt64Val);
if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
break;
case 51:
-#line 1096 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1106 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
for (unsigned i = 0, e = strlen((yyvsp[0].StrVal)); i != e; ++i)
if ((yyvsp[0].StrVal)[i] == '"' || (yyvsp[0].StrVal)[i] == '\\')
break;
case 52:
-#line 1104 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1114 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.StrVal) = 0; ;}
break;
case 53:
-#line 1105 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1115 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.StrVal) = (yyvsp[0].StrVal); ;}
break;
case 54:
-#line 1110 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1120 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{;}
break;
case 55:
-#line 1111 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1121 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{;}
break;
case 56:
-#line 1112 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1122 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
CurGV->setSection((yyvsp[0].StrVal));
free((yyvsp[0].StrVal));
break;
case 57:
-#line 1117 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1127 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val)))
GEN_ERROR("Alignment must be a power of two!");
break;
case 59:
-#line 1131 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1141 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType)); ;}
break;
case 61:
-#line 1132 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1142 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType)); ;}
break;
case 62:
-#line 1134 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1144 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[0].TypeVal))->getDescription());
break;
case 76:
-#line 1146 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1156 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeVal) = new PATypeHolder(OpaqueType::get());
CHECK_FOR_ERROR
break;
case 77:
-#line 1150 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1160 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeVal) = new PATypeHolder((yyvsp[0].PrimType));
CHECK_FOR_ERROR
break;
case 78:
-#line 1154 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1164 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Named types are also simple types...
(yyval.TypeVal) = new PATypeHolder(getTypeVal((yyvsp[0].ValIDVal)));
CHECK_FOR_ERROR
break;
case 79:
-#line 1161 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1171 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Type UpReference
if ((yyvsp[0].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range!");
OpaqueType *OT = OpaqueType::get(); // Use temporary placeholder
break;
case 80:
-#line 1169 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1179 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Function derived type?
std::vector<const Type*> Params;
for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-1].TypeList)->begin(),
break;
case 81:
-#line 1182 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1192 "/proj/llvm/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 82:
-#line 1187 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1197 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Packed array type?
const llvm::Type* ElemTy = (yyvsp[-1].TypeVal)->get();
if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val))
break;
case 83:
-#line 1199 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1209 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Structure type?
std::vector<const Type*> Elements;
for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[-1].TypeList)->begin(),
break;
case 84:
-#line 1209 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1219 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Empty structure type?
(yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>()));
CHECK_FOR_ERROR
break;
case 85:
-#line 1213 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1223 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Pointer type?
(yyval.TypeVal) = new PATypeHolder(HandleUpRefs(PointerType::get(*(yyvsp[-1].TypeVal))));
delete (yyvsp[-1].TypeVal);
break;
case 86:
-#line 1222 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1232 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeList) = new std::list<PATypeHolder>();
(yyval.TypeList)->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal);
break;
case 87:
-#line 1227 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1237 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(*(yyvsp[0].TypeVal)); delete (yyvsp[0].TypeVal);
CHECK_FOR_ERROR
break;
case 89:
-#line 1234 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1244 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(Type::VoidTy);
CHECK_FOR_ERROR
break;
case 90:
-#line 1238 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1248 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
((yyval.TypeList) = new std::list<PATypeHolder>())->push_back(Type::VoidTy);
CHECK_FOR_ERROR
break;
case 91:
-#line 1242 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1252 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeList) = new std::list<PATypeHolder>();
CHECK_FOR_ERROR
break;
case 92:
-#line 1253 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1263 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Nonempty unsized arr
const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-3].TypeVal)->get());
if (ATy == 0)
break;
case 93:
-#line 1279 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1289 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal)->get());
if (ATy == 0)
break;
case 94:
-#line 1293 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1303 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal)->get());
if (ATy == 0)
break;
case 95:
-#line 1323 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1333 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Nonempty unsized arr
const PackedType *PTy = dyn_cast<PackedType>((yyvsp[-3].TypeVal)->get());
if (PTy == 0)
break;
case 96:
-#line 1349 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1359 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
const StructType *STy = dyn_cast<StructType>((yyvsp[-3].TypeVal)->get());
if (STy == 0)
break;
case 97:
-#line 1370 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1380 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
const StructType *STy = dyn_cast<StructType>((yyvsp[-2].TypeVal)->get());
if (STy == 0)
break;
case 98:
-#line 1383 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1393 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
const PointerType *PTy = dyn_cast<PointerType>((yyvsp[-1].TypeVal)->get());
if (PTy == 0)
break;
case 99:
-#line 1393 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1403 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ConstVal) = UndefValue::get((yyvsp[-1].TypeVal)->get());
delete (yyvsp[-1].TypeVal);
break;
case 100:
-#line 1398 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1408 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
const PointerType *Ty = dyn_cast<PointerType>((yyvsp[-1].TypeVal)->get());
if (Ty == 0)
break;
case 101:
-#line 1458 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1468 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[-1].TypeVal)->get() != (yyvsp[0].ConstVal)->getType())
GEN_ERROR("Mismatched types for constant expression!");
break;
case 102:
-#line 1465 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1475 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
const Type *Ty = (yyvsp[-1].TypeVal)->get();
if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty))
break;
case 103:
-#line 1474 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1484 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // integral constants
if (!ConstantSInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].SInt64Val)))
GEN_ERROR("Constant value doesn't fit in type!");
break;
case 104:
-#line 1480 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1490 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // integral constants
if (!ConstantUInt::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].UInt64Val)))
GEN_ERROR("Constant value doesn't fit in type!");
break;
case 105:
-#line 1486 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1496 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Boolean constants
(yyval.ConstVal) = ConstantBool::True;
CHECK_FOR_ERROR
break;
case 106:
-#line 1490 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1500 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Boolean constants
(yyval.ConstVal) = ConstantBool::False;
CHECK_FOR_ERROR
break;
case 107:
-#line 1494 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1504 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Float & Double constants
if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType), (yyvsp[0].FPVal)))
GEN_ERROR("Floating point constant invalid for type!!");
break;
case 108:
-#line 1502 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1512 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!(yyvsp[-3].ConstVal)->getType()->isFirstClassType())
GEN_ERROR("cast constant expression from a non-primitive type: '" +
break;
case 109:
-#line 1513 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1523 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!isa<PointerType>((yyvsp[-2].ConstVal)->getType()))
GEN_ERROR("GetElementPtr requires a pointer operand!");
break;
case 110:
-#line 1545 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1555 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[-5].ConstVal)->getType() != Type::BoolTy)
GEN_ERROR("Select condition must be of boolean type!");
break;
case 111:
-#line 1553 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1563 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
GEN_ERROR("Binary operator types must match!");
break;
case 112:
-#line 1575 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1585 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
GEN_ERROR("Logical operator types must match!");
break;
case 113:
-#line 1586 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1596 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[-3].ConstVal)->getType() != (yyvsp[-1].ConstVal)->getType())
GEN_ERROR("setcc operand types must match!");
break;
case 114:
-#line 1592 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1602 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[-1].ConstVal)->getType() != Type::UByteTy)
GEN_ERROR("Shift count for shift constant must be unsigned byte!");
break;
case 115:
-#line 1600 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1610 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
GEN_ERROR("Invalid extractelement operands!");
break;
case 116:
-#line 1606 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1616 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
GEN_ERROR("Invalid insertelement operands!");
break;
case 117:
-#line 1612 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1622 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal), (yyvsp[-3].ConstVal), (yyvsp[-1].ConstVal)))
GEN_ERROR("Invalid shufflevector operands!");
break;
case 118:
-#line 1621 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1631 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal));
CHECK_FOR_ERROR
break;
case 119:
-#line 1625 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1635 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ConstVector) = new std::vector<Constant*>();
(yyval.ConstVector)->push_back((yyvsp[0].ConstVal));
break;
case 120:
-#line 1633 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1643 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.BoolVal) = false; ;}
break;
case 121:
-#line 1633 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1643 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.BoolVal) = true; ;}
break;
case 122:
-#line 1643 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1653 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ModuleVal) = ParserResult = (yyvsp[0].ModuleVal);
CurModule.ModuleDone();
break;
case 123:
-#line 1651 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1661 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ModuleVal) = (yyvsp[-1].ModuleVal);
CurFun.FunctionDone();
break;
case 124:
-#line 1656 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1666 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ModuleVal) = (yyvsp[-1].ModuleVal);
CHECK_FOR_ERROR
break;
case 125:
-#line 1660 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1670 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ModuleVal) = (yyvsp[-3].ModuleVal);
CHECK_FOR_ERROR
break;
case 126:
-#line 1664 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1674 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ModuleVal) = (yyvsp[-1].ModuleVal);
CHECK_FOR_ERROR
break;
case 127:
-#line 1668 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1678 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ModuleVal) = CurModule.CurrentModule;
// Emit an error if there are any unresolved types left.
break;
case 128:
-#line 1683 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1693 "/proj/llvm/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:
break;
case 129:
-#line 1704 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1714 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Function prototypes can be in const pool
CHECK_FOR_ERROR
;}
break;
case 130:
-#line 1707 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1717 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Asm blocks can be in the const pool
CHECK_FOR_ERROR
;}
break;
case 131:
-#line 1710 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1720 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[0].ConstVal) == 0) GEN_ERROR("Global value initializer is not a constant!");
CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), (yyvsp[-2].Linkage), (yyvsp[-1].BoolVal), (yyvsp[0].ConstVal)->getType(), (yyvsp[0].ConstVal));
break;
case 132:
-#line 1713 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1723 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
CurGV = 0;
CHECK_FOR_ERROR
break;
case 133:
-#line 1717 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1727 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::ExternalLinkage,
(yyvsp[-1].BoolVal), *(yyvsp[0].TypeVal), 0);
break;
case 134:
-#line 1721 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1731 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
CurGV = 0;
CHECK_FOR_ERROR
break;
case 135:
-#line 1725 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1735 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
CHECK_FOR_ERROR
;}
break;
case 136:
-#line 1728 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1738 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
CHECK_FOR_ERROR
;}
break;
case 137:
-#line 1731 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1741 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
;}
break;
case 138:
-#line 1735 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1745 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm();
char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true);
break;
case 139:
-#line 1748 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1758 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Endianness) = Module::BigEndian; ;}
break;
case 140:
-#line 1749 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1759 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Endianness) = Module::LittleEndian; ;}
break;
case 141:
-#line 1751 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1761 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
CurModule.CurrentModule->setEndianness((yyvsp[0].Endianness));
CHECK_FOR_ERROR
break;
case 142:
-#line 1755 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1765 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[0].UInt64Val) == 32)
CurModule.CurrentModule->setPointerSize(Module::Pointer32);
break;
case 143:
-#line 1764 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1774 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal));
free((yyvsp[0].StrVal));
break;
case 145:
-#line 1772 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1782 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal));
free((yyvsp[0].StrVal));
break;
case 146:
-#line 1777 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1787 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal));
free((yyvsp[0].StrVal));
break;
case 147:
-#line 1782 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1792 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
CHECK_FOR_ERROR
;}
break;
case 151:
-#line 1792 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1802 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.StrVal) = 0; ;}
break;
case 152:
-#line 1794 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1804 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (*(yyvsp[-1].TypeVal) == Type::VoidTy)
GEN_ERROR("void typed arguments are invalid!");
break;
case 153:
-#line 1801 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1811 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ArgList) = (yyvsp[-2].ArgList);
(yyvsp[-2].ArgList)->push_back(*(yyvsp[0].ArgVal));
break;
case 154:
-#line 1807 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1817 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ArgList) = new std::vector<std::pair<PATypeHolder*,char*> >();
(yyval.ArgList)->push_back(*(yyvsp[0].ArgVal));
break;
case 155:
-#line 1814 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1824 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ArgList) = (yyvsp[0].ArgList);
CHECK_FOR_ERROR
break;
case 156:
-#line 1818 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1828 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ArgList) = (yyvsp[-2].ArgList);
(yyval.ArgList)->push_back(std::pair<PATypeHolder*,
break;
case 157:
-#line 1824 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1834 "/proj/llvm/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 158:
-#line 1829 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1839 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ArgList) = 0;
CHECK_FOR_ERROR
break;
case 159:
-#line 1835 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1845 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
UnEscapeLexed((yyvsp[-5].StrVal));
std::string FunctionName((yyvsp[-5].StrVal));
break;
case 162:
-#line 1923 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1933 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.FunctionVal) = CurFun.CurrentFunction;
break;
case 165:
-#line 1933 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1943 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
CHECK_FOR_ERROR
break;
case 166:
-#line 1938 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1948 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ CurFun.isDeclare = true; ;}
break;
case 167:
-#line 1938 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1948 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.FunctionVal) = CurFun.CurrentFunction;
CurFun.FunctionDone();
break;
case 168:
-#line 1948 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1958 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BoolVal) = false;
CHECK_FOR_ERROR
break;
case 169:
-#line 1952 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1962 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BoolVal) = true;
CHECK_FOR_ERROR
break;
case 170:
-#line 1957 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1967 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // A reference to a direct constant
(yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val));
CHECK_FOR_ERROR
break;
case 171:
-#line 1961 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1971 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val));
CHECK_FOR_ERROR
break;
case 172:
-#line 1965 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1975 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Perhaps it's an FP constant?
(yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal));
CHECK_FOR_ERROR
break;
case 173:
-#line 1969 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1979 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValIDVal) = ValID::create(ConstantBool::True);
CHECK_FOR_ERROR
break;
case 174:
-#line 1973 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1983 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValIDVal) = ValID::create(ConstantBool::False);
CHECK_FOR_ERROR
break;
case 175:
-#line 1977 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1987 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValIDVal) = ValID::createNull();
CHECK_FOR_ERROR
break;
case 176:
-#line 1981 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1991 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValIDVal) = ValID::createUndef();
CHECK_FOR_ERROR
break;
case 177:
-#line 1985 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1995 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // A vector zero constant.
(yyval.ValIDVal) = ValID::createZeroInit();
CHECK_FOR_ERROR
break;
case 178:
-#line 1989 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 1999 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Nonempty unsized packed vector
const Type *ETy = (*(yyvsp[-1].ConstVector))[0]->getType();
int NumElements = (yyvsp[-1].ConstVector)->size();
break;
case 179:
-#line 2014 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2024 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal));
CHECK_FOR_ERROR
break;
case 180:
-#line 2018 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2028 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
char *End = UnEscapeLexed((yyvsp[-2].StrVal), true);
std::string AsmStr = std::string((yyvsp[-2].StrVal), End);
break;
case 181:
-#line 2032 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2042 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Is it an integer reference...?
(yyval.ValIDVal) = ValID::create((yyvsp[0].SIntVal));
CHECK_FOR_ERROR
break;
case 182:
-#line 2036 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2046 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Is it a named reference...?
(yyval.ValIDVal) = ValID::create((yyvsp[0].StrVal));
CHECK_FOR_ERROR
break;
case 185:
-#line 2048 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2058 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValueVal) = getVal(*(yyvsp[-1].TypeVal), (yyvsp[0].ValIDVal)); delete (yyvsp[-1].TypeVal);
CHECK_FOR_ERROR
break;
case 186:
-#line 2053 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2063 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
CHECK_FOR_ERROR
break;
case 187:
-#line 2057 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2067 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Do not allow functions with 0 basic blocks
(yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
CHECK_FOR_ERROR
break;
case 188:
-#line 2066 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2076 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal));
InsertValue((yyvsp[0].TermInstVal));
break;
case 189:
-#line 2076 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2086 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyvsp[-1].BasicBlockVal)->getInstList().push_back((yyvsp[0].InstVal));
(yyval.BasicBlockVal) = (yyvsp[-1].BasicBlockVal);
break;
case 190:
-#line 2081 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2091 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BasicBlockVal) = CurBB = getBBVal(ValID::create((int)CurFun.NextBBNum++), true);
break;
case 191:
-#line 2092 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2102 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BasicBlockVal) = CurBB = getBBVal(ValID::create((yyvsp[0].StrVal)), true);
break;
case 192:
-#line 2104 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2114 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Return with a result...
(yyval.TermInstVal) = new ReturnInst((yyvsp[0].ValueVal));
CHECK_FOR_ERROR
break;
case 193:
-#line 2108 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2118 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Return with no result...
(yyval.TermInstVal) = new ReturnInst();
CHECK_FOR_ERROR
break;
case 194:
-#line 2112 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2122 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ // Unconditional Branch...
(yyval.TermInstVal) = new BranchInst(getBBVal((yyvsp[0].ValIDVal)));
CHECK_FOR_ERROR
break;
case 195:
-#line 2116 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2126 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TermInstVal) = new BranchInst(getBBVal((yyvsp[-3].ValIDVal)), getBBVal((yyvsp[0].ValIDVal)), getVal(Type::BoolTy, (yyvsp[-6].ValIDVal)));
CHECK_FOR_ERROR
break;
case 196:
-#line 2120 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2130 "/proj/llvm/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;
break;
case 197:
-#line 2135 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2145 "/proj/llvm/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 198:
-#line 2141 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2151 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
const PointerType *PFTy;
const FunctionType *Ty;
break;
case 199:
-#line 2194 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2204 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TermInstVal) = new UnwindInst();
CHECK_FOR_ERROR
break;
case 200:
-#line 2198 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2208 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TermInstVal) = new UnreachableInst();
CHECK_FOR_ERROR
break;
case 201:
-#line 2205 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2215 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.JumpTable) = (yyvsp[-5].JumpTable);
Constant *V = cast<Constant>(getValNonImprovising((yyvsp[-4].PrimType), (yyvsp[-3].ValIDVal)));
break;
case 202:
-#line 2214 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2224 "/proj/llvm/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)));
break;
case 203:
-#line 2225 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2235 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
// Is this definition named?? if so, assign the name...
setValueName((yyvsp[0].InstVal), (yyvsp[-1].StrVal));
break;
case 204:
-#line 2233 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2243 "/proj/llvm/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))));
break;
case 205:
-#line 2239 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2249 "/proj/llvm/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)),
break;
case 206:
-#line 2247 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2257 "/proj/llvm/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 207:
-#line 2252 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2262 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValueList) = (yyvsp[-2].ValueList);
(yyvsp[-2].ValueList)->push_back((yyvsp[0].ValueVal));
break;
case 209:
-#line 2259 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2269 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{ (yyval.ValueList) = 0; ;}
break;
case 210:
-#line 2261 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2271 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BoolVal) = true;
CHECK_FOR_ERROR
break;
case 211:
-#line 2265 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2275 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BoolVal) = false;
CHECK_FOR_ERROR
break;
case 212:
-#line 2272 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2282 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!(*(yyvsp[-3].TypeVal))->isInteger() && !(*(yyvsp[-3].TypeVal))->isFloatingPoint() &&
!isa<PackedType>((*(yyvsp[-3].TypeVal)).get()))
break;
case 213:
-#line 2285 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2295 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!(*(yyvsp[-3].TypeVal))->isIntegral()) {
if (!isa<PackedType>((yyvsp[-3].TypeVal)->get()) ||
break;
case 214:
-#line 2297 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2307 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if(isa<PackedType>((*(yyvsp[-3].TypeVal)).get())) {
GEN_ERROR(
break;
case 215:
-#line 2308 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2318 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
std::cerr << "WARNING: Use of eliminated 'not' instruction:"
<< " Replacing with 'xor'.\n";
break;
case 216:
-#line 2321 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2331 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[0].ValueVal)->getType() != Type::UByteTy)
GEN_ERROR("Shift amount must be ubyte!");
break;
case 217:
-#line 2329 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2339 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!(yyvsp[0].TypeVal)->get()->isFirstClassType())
GEN_ERROR("cast instruction to a non-primitive type: '" +
break;
case 218:
-#line 2337 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2347 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[-4].ValueVal)->getType() != Type::BoolTy)
GEN_ERROR("select condition must be boolean!");
break;
case 219:
-#line 2345 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2355 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
NewVarArgs = true;
(yyval.InstVal) = new VAArgInst((yyvsp[-2].ValueVal), *(yyvsp[0].TypeVal));
break;
case 220:
-#line 2351 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2361 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
ObsoleteVarArgs = true;
const Type* ArgTy = (yyvsp[-2].ValueVal)->getType();
break;
case 221:
-#line 2371 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2381 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
ObsoleteVarArgs = true;
const Type* ArgTy = (yyvsp[-2].ValueVal)->getType();
break;
case 222:
-#line 2394 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2404 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
GEN_ERROR("Invalid extractelement operands!");
break;
case 223:
-#line 2400 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2410 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
GEN_ERROR("Invalid insertelement operands!");
break;
case 224:
-#line 2406 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2416 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal), (yyvsp[-2].ValueVal), (yyvsp[0].ValueVal)))
GEN_ERROR("Invalid shufflevector operands!");
break;
case 225:
-#line 2412 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2422 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
const Type *Ty = (yyvsp[0].PHIList)->front().first->getType();
if (!Ty->isFirstClassType())
break;
case 226:
-#line 2427 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2437 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
const PointerType *PFTy;
const FunctionType *Ty;
break;
case 227:
-#line 2485 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2495 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.InstVal) = (yyvsp[0].InstVal);
CHECK_FOR_ERROR
break;
case 228:
-#line 2492 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2502 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValueList) = (yyvsp[0].ValueList);
CHECK_FOR_ERROR
break;
case 229:
-#line 2495 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2505 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.ValueList) = new std::vector<Value*>();
CHECK_FOR_ERROR
break;
case 230:
-#line 2500 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2510 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BoolVal) = true;
CHECK_FOR_ERROR
break;
case 231:
-#line 2504 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2514 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.BoolVal) = false;
CHECK_FOR_ERROR
break;
case 232:
-#line 2511 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2521 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.InstVal) = new MallocInst(*(yyvsp[-1].TypeVal), 0, (yyvsp[0].UIntVal));
delete (yyvsp[-1].TypeVal);
break;
case 233:
-#line 2516 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2526 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.InstVal) = new MallocInst(*(yyvsp[-4].TypeVal), getVal((yyvsp[-2].PrimType), (yyvsp[-1].ValIDVal)), (yyvsp[0].UIntVal));
delete (yyvsp[-4].TypeVal);
break;
case 234:
-#line 2521 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2531 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.InstVal) = new AllocaInst(*(yyvsp[-1].TypeVal), 0, (yyvsp[0].UIntVal));
delete (yyvsp[-1].TypeVal);
break;
case 235:
-#line 2526 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2536 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
(yyval.InstVal) = new AllocaInst(*(yyvsp[-4].TypeVal), getVal((yyvsp[-2].PrimType), (yyvsp[-1].ValIDVal)), (yyvsp[0].UIntVal));
delete (yyvsp[-4].TypeVal);
break;
case 236:
-#line 2531 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2541 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!isa<PointerType>((yyvsp[0].ValueVal)->getType()))
GEN_ERROR("Trying to free nonpointer type " +
break;
case 237:
-#line 2539 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2549 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!isa<PointerType>((yyvsp[-1].TypeVal)->get()))
GEN_ERROR("Can't load from nonpointer type: " +
break;
case 238:
-#line 2550 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2560 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
const PointerType *PT = dyn_cast<PointerType>((yyvsp[-1].TypeVal)->get());
if (!PT)
break;
case 239:
-#line 2564 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2574 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
{
if (!isa<PointerType>((yyvsp[-2].TypeVal)->get()))
GEN_ERROR("getelementptr insn requires pointer operand!");
}
/* Line 1126 of yacc.c. */
-#line 4976 "llvmAsmParser.tab.c"
+#line 4986 "llvmAsmParser.tab.c"
\f
yyvsp -= yylen;
yyssp -= yylen;
}
-#line 2588 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
+#line 2598 "/proj/llvm/llvm/lib/AsmParser/llvmAsmParser.y"
void llvm::GenerateError(const std::string &message, int LineNo) {