[llvm-commits] CVS: llvm/lib/AsmParser/llvmAsmParser.cpp.cvs llvmAsmParser.h.cvs llvmAsmParser.y llvmAsmParser.y.cvs
Reid Spencer
reid at x10sys.com
Fri Aug 18 10:33:09 PDT 2006
Changes in directory llvm/lib/AsmParser:
llvmAsmParser.cpp.cvs updated: 1.8 -> 1.9
llvmAsmParser.h.cvs updated: 1.4 -> 1.5
llvmAsmParser.y updated: 1.256 -> 1.257
llvmAsmParser.y.cvs updated: 1.8 -> 1.9
---
Log message:
Add a comment about the mechanisms used to rid AsmParser of exceptions.
---
Diffs of the changes: (+244 -214)
llvmAsmParser.cpp.cvs | 432 +++++++++++++++++++++++++-------------------------
llvmAsmParser.h.cvs | 2
llvmAsmParser.y | 12 +
llvmAsmParser.y.cvs | 12 +
4 files changed, 244 insertions(+), 214 deletions(-)
Index: llvm/lib/AsmParser/llvmAsmParser.cpp.cvs
diff -u llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.8 llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.9
--- llvm/lib/AsmParser/llvmAsmParser.cpp.cvs:1.8 Fri Aug 18 03:43:06 2006
+++ llvm/lib/AsmParser/llvmAsmParser.cpp.cvs Fri Aug 18 12:32:55 2006
@@ -289,9 +289,19 @@
#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
@@ -1175,7 +1185,7 @@
#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;
@@ -1216,7 +1226,7 @@
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
@@ -1228,7 +1238,7 @@
/* 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__
@@ -1556,30 +1566,30 @@
/* 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
@@ -2833,7 +2843,7 @@
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!");
@@ -2843,7 +2853,7 @@
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!");
@@ -2853,7 +2863,7 @@
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
@@ -2861,7 +2871,7 @@
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
@@ -2869,57 +2879,57 @@
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!");
@@ -2929,12 +2939,12 @@
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)))
@@ -2944,12 +2954,12 @@
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)))
@@ -2959,7 +2969,7 @@
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] == '\\')
@@ -2970,27 +2980,27 @@
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));
@@ -2999,7 +3009,7 @@
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!");
@@ -3009,17 +3019,17 @@
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());
@@ -3029,7 +3039,7 @@
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
@@ -3037,7 +3047,7 @@
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
@@ -3045,7 +3055,7 @@
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
@@ -3053,7 +3063,7 @@
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
@@ -3065,7 +3075,7 @@
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(),
@@ -3082,7 +3092,7 @@
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);
@@ -3091,7 +3101,7 @@
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))
@@ -3107,7 +3117,7 @@
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(),
@@ -3121,7 +3131,7 @@
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
@@ -3129,7 +3139,7 @@
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);
@@ -3138,7 +3148,7 @@
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);
@@ -3147,7 +3157,7 @@
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
@@ -3155,7 +3165,7 @@
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
@@ -3163,7 +3173,7 @@
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
@@ -3171,7 +3181,7 @@
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
@@ -3179,7 +3189,7 @@
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)
@@ -3209,7 +3219,7 @@
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)
@@ -3227,7 +3237,7 @@
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)
@@ -3261,7 +3271,7 @@
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)
@@ -3291,7 +3301,7 @@
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)
@@ -3316,7 +3326,7 @@
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)
@@ -3333,7 +3343,7 @@
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)
@@ -3347,7 +3357,7 @@
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);
@@ -3356,7 +3366,7 @@
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)
@@ -3420,7 +3430,7 @@
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!");
@@ -3431,7 +3441,7 @@
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))
@@ -3443,7 +3453,7 @@
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!");
@@ -3453,7 +3463,7 @@
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!");
@@ -3463,7 +3473,7 @@
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
@@ -3471,7 +3481,7 @@
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
@@ -3479,7 +3489,7 @@
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!!");
@@ -3489,7 +3499,7 @@
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: '" +
@@ -3504,7 +3514,7 @@
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!");
@@ -3540,7 +3550,7 @@
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!");
@@ -3552,7 +3562,7 @@
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!");
@@ -3578,7 +3588,7 @@
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!");
@@ -3593,7 +3603,7 @@
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!");
@@ -3603,7 +3613,7 @@
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!");
@@ -3615,7 +3625,7 @@
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!");
@@ -3625,7 +3635,7 @@
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!");
@@ -3635,7 +3645,7 @@
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!");
@@ -3645,7 +3655,7 @@
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
@@ -3653,7 +3663,7 @@
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));
@@ -3662,17 +3672,17 @@
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();
@@ -3681,7 +3691,7 @@
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();
@@ -3690,7 +3700,7 @@
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
@@ -3698,7 +3708,7 @@
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
@@ -3706,7 +3716,7 @@
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
@@ -3714,7 +3724,7 @@
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.
@@ -3731,7 +3741,7 @@
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:
@@ -3756,21 +3766,21 @@
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));
@@ -3778,7 +3788,7 @@
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
@@ -3786,7 +3796,7 @@
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);
@@ -3795,7 +3805,7 @@
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
@@ -3803,27 +3813,27 @@
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);
@@ -3839,17 +3849,17 @@
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
@@ -3857,7 +3867,7 @@
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);
@@ -3870,7 +3880,7 @@
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));
@@ -3879,7 +3889,7 @@
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));
@@ -3888,7 +3898,7 @@
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));
@@ -3897,19 +3907,19 @@
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!");
@@ -3919,7 +3929,7 @@
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));
@@ -3929,7 +3939,7 @@
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));
@@ -3939,7 +3949,7 @@
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
@@ -3947,7 +3957,7 @@
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*,
@@ -3957,7 +3967,7 @@
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));
@@ -3966,7 +3976,7 @@
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
@@ -3974,7 +3984,7 @@
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));
@@ -4063,7 +4073,7 @@
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;
@@ -4074,7 +4084,7 @@
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
@@ -4082,12 +4092,12 @@
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();
@@ -4096,7 +4106,7 @@
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
@@ -4104,7 +4114,7 @@
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
@@ -4112,7 +4122,7 @@
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
@@ -4120,7 +4130,7 @@
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
@@ -4128,7 +4138,7 @@
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
@@ -4136,7 +4146,7 @@
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
@@ -4144,7 +4154,7 @@
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
@@ -4152,7 +4162,7 @@
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
@@ -4160,7 +4170,7 @@
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
@@ -4168,7 +4178,7 @@
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
@@ -4176,7 +4186,7 @@
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();
@@ -4205,7 +4215,7 @@
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
@@ -4213,7 +4223,7 @@
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);
@@ -4227,7 +4237,7 @@
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
@@ -4235,7 +4245,7 @@
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
@@ -4243,7 +4253,7 @@
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
@@ -4251,7 +4261,7 @@
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
@@ -4259,7 +4269,7 @@
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
@@ -4267,7 +4277,7 @@
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));
@@ -4280,7 +4290,7 @@
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);
@@ -4289,7 +4299,7 @@
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);
@@ -4304,7 +4314,7 @@
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);
@@ -4319,7 +4329,7 @@
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
@@ -4327,7 +4337,7 @@
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
@@ -4335,7 +4345,7 @@
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
@@ -4343,7 +4353,7 @@
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
@@ -4351,7 +4361,7 @@
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;
@@ -4370,7 +4380,7 @@
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;
@@ -4379,7 +4389,7 @@
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;
@@ -4436,7 +4446,7 @@
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
@@ -4444,7 +4454,7 @@
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
@@ -4452,7 +4462,7 @@
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)));
@@ -4465,7 +4475,7 @@
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)));
@@ -4479,7 +4489,7 @@
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));
@@ -4490,7 +4500,7 @@
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))));
@@ -4500,7 +4510,7 @@
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)),
@@ -4510,7 +4520,7 @@
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));
@@ -4519,7 +4529,7 @@
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));
@@ -4528,12 +4538,12 @@
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
@@ -4541,7 +4551,7 @@
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
@@ -4549,7 +4559,7 @@
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()))
@@ -4566,7 +4576,7 @@
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()) ||
@@ -4582,7 +4592,7 @@
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(
@@ -4597,7 +4607,7 @@
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";
@@ -4614,7 +4624,7 @@
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!");
@@ -4626,7 +4636,7 @@
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: '" +
@@ -4638,7 +4648,7 @@
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!");
@@ -4650,7 +4660,7 @@
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));
@@ -4660,7 +4670,7 @@
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();
@@ -4684,7 +4694,7 @@
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();
@@ -4711,7 +4721,7 @@
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!");
@@ -4721,7 +4731,7 @@
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!");
@@ -4731,7 +4741,7 @@
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!");
@@ -4741,7 +4751,7 @@
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())
@@ -4760,7 +4770,7 @@
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;
@@ -4822,7 +4832,7 @@
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
@@ -4830,7 +4840,7 @@
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
@@ -4838,7 +4848,7 @@
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
@@ -4846,7 +4856,7 @@
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
@@ -4854,7 +4864,7 @@
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
@@ -4862,7 +4872,7 @@
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);
@@ -4871,7 +4881,7 @@
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);
@@ -4880,7 +4890,7 @@
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);
@@ -4889,7 +4899,7 @@
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);
@@ -4898,7 +4908,7 @@
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 " +
@@ -4909,7 +4919,7 @@
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: " +
@@ -4924,7 +4934,7 @@
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)
@@ -4942,7 +4952,7 @@
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!");
@@ -4972,7 +4982,7 @@
}
/* Line 1126 of yacc.c. */
-#line 4976 "llvmAsmParser.tab.c"
+#line 4986 "llvmAsmParser.tab.c"
yyvsp -= yylen;
yyssp -= yylen;
@@ -5240,7 +5250,7 @@
}
-#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) {
Index: llvm/lib/AsmParser/llvmAsmParser.h.cvs
diff -u llvm/lib/AsmParser/llvmAsmParser.h.cvs:1.4 llvm/lib/AsmParser/llvmAsmParser.h.cvs:1.5
--- llvm/lib/AsmParser/llvmAsmParser.h.cvs:1.4 Fri Aug 18 03:43:06 2006
+++ llvm/lib/AsmParser/llvmAsmParser.h.cvs Fri Aug 18 12:32:55 2006
@@ -237,7 +237,7 @@
#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;
Index: llvm/lib/AsmParser/llvmAsmParser.y
diff -u llvm/lib/AsmParser/llvmAsmParser.y:1.256 llvm/lib/AsmParser/llvmAsmParser.y:1.257
--- llvm/lib/AsmParser/llvmAsmParser.y:1.256 Fri Aug 18 03:43:06 2006
+++ llvm/lib/AsmParser/llvmAsmParser.y Fri Aug 18 12:32:55 2006
@@ -27,9 +27,19 @@
#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
Index: llvm/lib/AsmParser/llvmAsmParser.y.cvs
diff -u llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.8 llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.9
--- llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.8 Fri Aug 18 03:43:06 2006
+++ llvm/lib/AsmParser/llvmAsmParser.y.cvs Fri Aug 18 12:32:55 2006
@@ -27,9 +27,19 @@
#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
More information about the llvm-commits
mailing list