aboutsummaryrefslogtreecommitdiff
path: root/lib/AsmParser/llvmAsmParser.cpp.cvs
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2006-11-28 07:29:44 +0000
committerReid Spencer <rspencer@reidspencer.com>2006-11-28 07:29:44 +0000
commit861d9d6863b53f8745aab80367c4563628e72fd8 (patch)
treee7e613d82d8e1b0f5b30ce4d47420a72beb58de4 /lib/AsmParser/llvmAsmParser.cpp.cvs
parentb78b908d4a8eb5f858fb86c45b2609ae778ae772 (diff)
Regenerate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31965 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AsmParser/llvmAsmParser.cpp.cvs')
-rw-r--r--lib/AsmParser/llvmAsmParser.cpp.cvs851
1 files changed, 450 insertions, 401 deletions
diff --git a/lib/AsmParser/llvmAsmParser.cpp.cvs b/lib/AsmParser/llvmAsmParser.cpp.cvs
index c5774e146b..ff15cd1085 100644
--- a/lib/AsmParser/llvmAsmParser.cpp.cvs
+++ b/lib/AsmParser/llvmAsmParser.cpp.cvs
@@ -316,7 +316,7 @@
/* Copy the first part of user declarations. */
-#line 14 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 14 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
#include "ParserInternals.h"
#include "llvm/CallingConv.h"
@@ -389,8 +389,8 @@ static struct PerModuleInfo {
Module *CurrentModule;
std::map<const Type *, ValueList> Values; // Module level numbered definitions
std::map<const Type *,ValueList> LateResolveValues;
- std::vector<TypeInfo> Types;
- std::map<ValID, TypeInfo> LateResolveTypes;
+ std::vector<PATypeHolder> Types;
+ std::map<ValID, PATypeHolder> LateResolveTypes;
/// PlaceHolderInfo - When temporary placeholder objects are created, remember
/// how they were referenced and on which line of the input they came from so
@@ -523,7 +523,7 @@ static const Type *getTypeVal(const ValID &D, bool DoNotImprovise = false) {
case ValID::NumberVal: // Is it a numbered definition?
// Module constants occupy the lowest numbered slots...
if ((unsigned)D.Num < CurModule.Types.size())
- return CurModule.Types[(unsigned)D.Num].type->get();
+ return CurModule.Types[(unsigned)D.Num];
break;
case ValID::NameVal: // Is it a named definition?
if (const Type *N = CurModule.CurrentModule->getTypeByName(D.Name)) {
@@ -553,16 +553,14 @@ static const Type *getTypeVal(const ValID &D, bool DoNotImprovise = false) {
}
}
- std::map<ValID, TypeInfo>::iterator I =CurModule.LateResolveTypes.find(D);
+ std::map<ValID, PATypeHolder>::iterator I =CurModule.LateResolveTypes.find(D);
if (I != CurModule.LateResolveTypes.end())
- return I->second.type->get();
+ return I->second;
- TypeInfo TI;
- TI.type = new PATypeHolder(OpaqueType::get());
- TI.signedness = isSignless;
- CurModule.LateResolveTypes.insert(std::make_pair(D, TI));
- return TI.type->get();
- }
+ Type *Typ = OpaqueType::get();
+ CurModule.LateResolveTypes.insert(std::make_pair(D, Typ));
+ return Typ;
+}
static Value *lookupInSymbolTable(const Type *Ty, const std::string &Name) {
SymbolTable &SymTab =
@@ -865,10 +863,10 @@ static void ResolveTypeTo(char *Name, const Type *ToTy) {
if (Name) D = ValID::create(Name);
else D = ValID::create((int)CurModule.Types.size());
- std::map<ValID, TypeInfo>::iterator I =
+ std::map<ValID, PATypeHolder>::iterator I =
CurModule.LateResolveTypes.find(D);
if (I != CurModule.LateResolveTypes.end()) {
- ((DerivedType*)I->second.type->get())->refineAbstractTypeTo(ToTy);
+ ((DerivedType*)I->second.get())->refineAbstractTypeTo(ToTy);
CurModule.LateResolveTypes.erase(I);
}
}
@@ -1362,7 +1360,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {
#endif
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 1040 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1038 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
typedef union YYSTYPE {
llvm::Module *ModuleVal;
llvm::Function *FunctionVal;
@@ -1370,19 +1368,17 @@ typedef union YYSTYPE {
llvm::BasicBlock *BasicBlockVal;
llvm::TerminatorInst *TermInstVal;
llvm::Instruction *InstVal;
- llvm::Constant *ConstVal;
-
- TypeInfo TypeVal;
- llvm::Value *ValueVal;
+ ConstInfo ConstVal;
+ TypeInfo TypeVal;
+ ValueInfo ValueVal;
std::vector<std::pair<TypeInfo,char*> >*ArgList;
- std::vector<llvm::Value*> *ValueList;
+ std::vector<ValueInfo> *ValueList;
std::list<TypeInfo> *TypeList;
// Represent the RHS of PHI node
- std::list<std::pair<llvm::Value*,
- llvm::BasicBlock*> > *PHIList;
+ std::list<std::pair<llvm::Value*, llvm::BasicBlock*> > *PHIList;
std::vector<std::pair<llvm::Constant*, llvm::BasicBlock*> > *JumpTable;
- std::vector<llvm::Constant*> *ConstVector;
+ std::vector<ConstInfo> *ConstVector;
llvm::GlobalValue::LinkageTypes Linkage;
int64_t SInt64Val;
@@ -1403,7 +1399,7 @@ typedef union YYSTYPE {
llvm::Module::Endianness Endianness;
} YYSTYPE;
/* Line 196 of yacc.c. */
-#line 1407 "llvmAsmParser.tab.c"
+#line 1403 "llvmAsmParser.tab.c"
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
@@ -1415,7 +1411,7 @@ typedef union YYSTYPE {
/* Line 219 of yacc.c. */
-#line 1419 "llvmAsmParser.tab.c"
+#line 1415 "llvmAsmParser.tab.c"
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
# define YYSIZE_T __SIZE_TYPE__
@@ -1755,33 +1751,33 @@ static const short int yyrhs[] =
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const unsigned short int yyrline[] =
{
- 0, 1168, 1168, 1169, 1177, 1178, 1188, 1188, 1188, 1188,
- 1188, 1188, 1188, 1188, 1188, 1189, 1189, 1189, 1190, 1190,
- 1190, 1190, 1190, 1190, 1191, 1191, 1191, 1191, 1191, 1191,
- 1192, 1192, 1192, 1192, 1192, 1192, 1193, 1193, 1193, 1197,
- 1197, 1197, 1197, 1198, 1198, 1198, 1198, 1199, 1199, 1200,
- 1200, 1203, 1207, 1212, 1213, 1214, 1215, 1216, 1217, 1218,
- 1219, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1237,
- 1238, 1244, 1245, 1253, 1261, 1262, 1267, 1268, 1269, 1274,
- 1288, 1288, 1292, 1292, 1297, 1308, 1308, 1308, 1308, 1308,
- 1308, 1308, 1309, 1309, 1309, 1309, 1309, 1309, 1310, 1315,
- 1319, 1328, 1337, 1352, 1359, 1373, 1384, 1389, 1401, 1406,
- 1412, 1413, 1419, 1425, 1436, 1462, 1476, 1506, 1532, 1553,
- 1566, 1576, 1581, 1642, 1649, 1658, 1664, 1670, 1674, 1678,
- 1686, 1712, 1744, 1752, 1779, 1790, 1796, 1807, 1813, 1819,
- 1828, 1832, 1840, 1840, 1850, 1858, 1863, 1867, 1871, 1875,
- 1890, 1912, 1915, 1918, 1918, 1926, 1926, 1935, 1935, 1944,
- 1944, 1954, 1957, 1960, 1964, 1977, 1978, 1980, 1984, 1993,
- 1997, 2002, 2004, 2009, 2014, 2023, 2023, 2024, 2024, 2026,
- 2033, 2039, 2046, 2050, 2058, 2066, 2071, 2165, 2165, 2167,
- 2175, 2175, 2177, 2182, 2183, 2184, 2186, 2186, 2196, 2200,
- 2205, 2209, 2213, 2217, 2221, 2225, 2229, 2233, 2237, 2257,
- 2261, 2275, 2279, 2285, 2285, 2291, 2296, 2300, 2309, 2320,
- 2329, 2341, 2354, 2358, 2362, 2367, 2376, 2395, 2404, 2460,
- 2464, 2471, 2482, 2495, 2504, 2513, 2523, 2527, 2534, 2534,
- 2536, 2540, 2545, 2567, 2582, 2596, 2609, 2620, 2646, 2654,
- 2660, 2680, 2703, 2709, 2715, 2721, 2736, 2796, 2803, 2806,
- 2811, 2815, 2822, 2827, 2833, 2838, 2844, 2852, 2864, 2879
+ 0, 1164, 1164, 1165, 1173, 1174, 1184, 1184, 1184, 1184,
+ 1184, 1184, 1184, 1184, 1184, 1185, 1185, 1185, 1186, 1186,
+ 1186, 1186, 1186, 1186, 1187, 1187, 1187, 1187, 1187, 1187,
+ 1188, 1188, 1188, 1188, 1188, 1188, 1189, 1189, 1189, 1193,
+ 1193, 1193, 1193, 1194, 1194, 1194, 1194, 1195, 1195, 1196,
+ 1196, 1199, 1203, 1208, 1209, 1210, 1211, 1212, 1213, 1214,
+ 1215, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1233,
+ 1234, 1240, 1241, 1249, 1257, 1258, 1263, 1264, 1265, 1270,
+ 1284, 1284, 1288, 1288, 1293, 1304, 1304, 1304, 1304, 1304,
+ 1304, 1304, 1305, 1305, 1305, 1305, 1305, 1305, 1306, 1311,
+ 1315, 1324, 1333, 1348, 1355, 1369, 1380, 1385, 1397, 1402,
+ 1408, 1409, 1415, 1421, 1432, 1463, 1478, 1509, 1539, 1564,
+ 1578, 1589, 1595, 1657, 1664, 1674, 1681, 1688, 1693, 1698,
+ 1707, 1733, 1755, 1764, 1793, 1805, 1812, 1824, 1831, 1838,
+ 1848, 1852, 1860, 1860, 1870, 1878, 1883, 1887, 1891, 1895,
+ 1910, 1932, 1935, 1938, 1938, 1946, 1946, 1955, 1955, 1964,
+ 1964, 1974, 1977, 1980, 1984, 1997, 1998, 2000, 2004, 2013,
+ 2017, 2022, 2024, 2029, 2034, 2043, 2043, 2044, 2044, 2046,
+ 2053, 2059, 2066, 2070, 2078, 2086, 2091, 2185, 2185, 2187,
+ 2195, 2195, 2197, 2202, 2203, 2204, 2206, 2206, 2216, 2220,
+ 2225, 2229, 2233, 2237, 2241, 2245, 2249, 2253, 2257, 2280,
+ 2284, 2298, 2302, 2308, 2308, 2314, 2321, 2325, 2334, 2345,
+ 2354, 2366, 2379, 2383, 2387, 2392, 2401, 2420, 2429, 2494,
+ 2498, 2505, 2516, 2529, 2538, 2547, 2557, 2561, 2568, 2571,
+ 2575, 2579, 2584, 2606, 2621, 2635, 2648, 2659, 2685, 2693,
+ 2699, 2719, 2742, 2748, 2754, 2760, 2775, 2848, 2855, 2858,
+ 2863, 2867, 2874, 2879, 2885, 2890, 2896, 2904, 2916, 2931
};
#endif
@@ -3088,7 +3084,7 @@ yyreduce:
switch (yyn)
{
case 3:
-#line 1169 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1165 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[0].UIntVal) > (uint32_t)INT32_MAX) // Outside of my range!
GEN_ERROR("Value too large for type!");
@@ -3098,7 +3094,7 @@ yyreduce:
break;
case 5:
-#line 1178 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1174 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[0].UInt64Val) > (uint64_t)INT64_MAX) // Outside of my range!
GEN_ERROR("Value too large for type!");
@@ -3108,7 +3104,7 @@ yyreduce:
break;
case 51:
-#line 1203 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1199 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
(yyval.StrVal) = (yyvsp[-1].StrVal);
CHECK_FOR_ERROR
@@ -3116,7 +3112,7 @@ yyreduce:
break;
case 52:
-#line 1207 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1203 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
(yyval.StrVal) = 0;
CHECK_FOR_ERROR
@@ -3124,82 +3120,82 @@ yyreduce:
break;
case 53:
-#line 1212 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1208 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
break;
case 54:
-#line 1213 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1209 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
break;
case 55:
-#line 1214 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1210 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
break;
case 56:
-#line 1215 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1211 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::AppendingLinkage; ;}
break;
case 57:
-#line 1216 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1212 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
break;
case 58:
-#line 1217 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1213 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
break;
case 59:
-#line 1218 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1214 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
break;
case 60:
-#line 1219 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1215 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
break;
case 61:
-#line 1221 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1217 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::C; ;}
break;
case 62:
-#line 1222 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1218 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::C; ;}
break;
case 63:
-#line 1223 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1219 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::CSRet; ;}
break;
case 64:
-#line 1224 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1220 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::Fast; ;}
break;
case 65:
-#line 1225 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1221 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::Cold; ;}
break;
case 66:
-#line 1226 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1222 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::X86_StdCall; ;}
break;
case 67:
-#line 1227 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1223 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = CallingConv::X86_FastCall; ;}
break;
case 68:
-#line 1228 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1224 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val))
GEN_ERROR("Calling conv too large!");
@@ -3209,12 +3205,12 @@ yyreduce:
break;
case 69:
-#line 1237 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1233 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = 0; ;}
break;
case 70:
-#line 1238 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1234 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
(yyval.UIntVal) = (yyvsp[0].UInt64Val);
if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
@@ -3224,12 +3220,12 @@ yyreduce:
break;
case 71:
-#line 1244 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1240 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.UIntVal) = 0; ;}
break;
case 72:
-#line 1245 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1241 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
(yyval.UIntVal) = (yyvsp[0].UInt64Val);
if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
@@ -3239,7 +3235,7 @@ yyreduce:
break;
case 73:
-#line 1253 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1249 "/proj/llvm/llvm-4/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] == '\\')
@@ -3250,27 +3246,27 @@ yyreduce:
break;
case 74:
-#line 1261 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1257 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.StrVal) = 0; ;}
break;
case 75:
-#line 1262 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1258 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ (yyval.StrVal) = (yyvsp[0].StrVal); ;}
break;
case 76:
-#line 1267 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1263 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{;}
break;
case 77:
-#line 1268 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1264 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{;}
break;
case 78:
-#line 1269 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1265 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
CurGV->setSection((yyvsp[0].StrVal));
free((yyvsp[0].StrVal));
@@ -3279,7 +3275,7 @@ yyreduce:
break;
case 79:
-#line 1274 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1270 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val)))
GEN_ERROR("Alignment must be a power of two!");
@@ -3289,7 +3285,7 @@ yyreduce:
break;
case 81:
-#line 1288 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1284 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeVal).type = new PATypeHolder((yyvsp[0].TypeVal).type->get());
(yyval.TypeVal).signedness = (yyvsp[0].TypeVal).signedness;
@@ -3297,7 +3293,7 @@ yyreduce:
break;
case 83:
-#line 1292 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1288 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeVal).type = new PATypeHolder((yyvsp[0].TypeVal).type->get());
(yyval.TypeVal).signedness = (yyvsp[0].TypeVal).signedness;
@@ -3305,7 +3301,7 @@ yyreduce:
break;
case 84:
-#line 1297 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1293 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
if (!UpRefs.empty())
GEN_ERROR("Invalid upreference in type: " +
@@ -3316,7 +3312,7 @@ yyreduce:
break;
case 98:
-#line 1310 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1306 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeVal).type = new PATypeHolder(OpaqueType::get());
(yyval.TypeVal).signedness = isSignless;
@@ -3325,7 +3321,7 @@ yyreduce:
break;
case 99:
-#line 1315 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1311 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeVal) = (yyvsp[0].TypeVal);
CHECK_FOR_ERROR
@@ -3333,7 +3329,7 @@ yyreduce:
break;
case 100:
-#line 1319 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1315 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ // Named types are also simple types...
const Type* tmp = getTypeVal((yyvsp[0].ValIDVal));
CHECK_FOR_ERROR
@@ -3343,7 +3339,7 @@ yyreduce:
break;
case 101:
-#line 1328 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1324 "/proj/llvm/llvm-4/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
@@ -3356,7 +3352,7 @@ yyreduce:
break;
case 102:
-#line 1337 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1333 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ // Function derived type?
std::vector<const Type*> Params;
for (std::list<TypeInfo>::iterator I = (yyvsp[-1].TypeList)->begin(),
@@ -3375,7 +3371,7 @@ yyreduce:
break;
case 103:
-#line 1352 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1348 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ // Sized array type?
(yyval.TypeVal).type = new PATypeHolder(HandleUpRefs(
ArrayType::get((yyvsp[-1].TypeVal).type->get(), (unsigned)(yyvsp[-3].UInt64Val))));
@@ -3386,7 +3382,7 @@ yyreduce:
break;
case 104:
-#line 1359 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1355 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ // Packed array type?
const llvm::Type* ElemTy = (yyvsp[-1].TypeVal).type->get();
if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val))
@@ -3404,12 +3400,12 @@ yyreduce:
break;
case 105:
-#line 1373 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1369 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ // Structure type?
std::vector<const Type*> Elements;
for (std::list<TypeInfo>::iterator I = (yyvsp[-1].TypeList)->begin(),
E = (yyvsp[-1].TypeList)->end(); I != E; ++I)
- Elements.push_back(I->type->get());
+ Elements.push_back((*I).type->get());
(yyval.TypeVal).type = new PATypeHolder(HandleUpRefs(StructType::get(Elements)));
(yyval.TypeVal).signedness = isSignless;
@@ -3419,7 +3415,7 @@ yyreduce:
break;
case 106:
-#line 1384 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1380 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ // Empty structure type?
(yyval.TypeVal).type = new PATypeHolder(StructType::get(std::vector<const Type*>()));
(yyval.TypeVal).signedness = isSignless;
@@ -3428,19 +3424,19 @@ yyreduce:
break;
case 107:
-#line 1389 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1385 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ // Pointer type?
if ((yyvsp[-1].TypeVal).type->get() == Type::LabelTy)
GEN_ERROR("Cannot form a pointer to a basic block");
(yyval.TypeVal).type = new PATypeHolder(HandleUpRefs(PointerType::get((yyvsp[-1].TypeVal).type->get())));
- (yyval.TypeVal).signedness = (yyvsp[-1].TypeVal).signedness;
+ (yyval.TypeVal).signedness = isSignless;
delete (yyvsp[-1].TypeVal).type;
CHECK_FOR_ERROR
;}
break;
case 108:
-#line 1401 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1397 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeList) = new std::list<TypeInfo>();
(yyval.TypeList)->push_back((yyvsp[0].TypeVal));
@@ -3449,7 +3445,7 @@ yyreduce:
break;
case 109:
-#line 1406 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1402 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back((yyvsp[0].TypeVal));
CHECK_FOR_ERROR
@@ -3457,7 +3453,7 @@ yyreduce:
break;
case 111:
-#line 1413 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1409 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
TypeInfo TI;
TI.type = new PATypeHolder(Type::VoidTy); TI.signedness = isSignless;
@@ -3467,7 +3463,7 @@ yyreduce:
break;
case 112:
-#line 1419 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1415 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
TypeInfo TI;
TI.type = new PATypeHolder(Type::VoidTy); TI.signedness = isSignless;
@@ -3477,7 +3473,7 @@ yyreduce:
break;
case 113:
-#line 1425 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1421 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
(yyval.TypeList) = new std::list<TypeInfo>();
CHECK_FOR_ERROR
@@ -3485,7 +3481,7 @@ yyreduce:
break;
case 114:
-#line 1436 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1432 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ // Nonempty unsized arr
const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-3].TypeVal).type->get());
if (ATy == 0)
@@ -3501,21 +3497,26 @@ yyreduce:
itostr(NumElements) + "!");
// Verify all elements are correct type!
+ std::vector<Constant*> elems;
for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) {
- if (ETy != (*(yyvsp[-1].ConstVector))[i]->getType())
+ if (ETy != (*(yyvsp[-1].ConstVector))[i].cnst->getType()) {
GEN_ERROR("Element #" + utostr(i) + " is not of type '" +
ETy->getDescription() +"' as required!\nIt is of type '"+
- (*(yyvsp[-1].ConstVector))[i]->getType()->getDescription() + "'.");
+ (*(yyvsp[-1].ConstVector))[i].cnst->getType()->getDescription() + "'.");
+ } else {
+ elems.push_back((*(yyvsp[-1].ConstVector))[i].cnst);
+ }
}
- (yyval.ConstVal) = ConstantArray::get(ATy, *(yyvsp[-1].ConstVector));
+ (yyval.ConstVal).cnst = ConstantArray::get(ATy, elems);
+ (yyval.ConstVal).signedness = isSignless;
delete (yyvsp[-3].TypeVal).type; delete (yyvsp[-1].ConstVector);
CHECK_FOR_ERROR
;}
break;
case 115:
-#line 1462 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1463 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal).type->get());
if (ATy == 0)
@@ -3526,14 +3527,15 @@ yyreduce:
if (NumElements != -1 && NumElements != 0)
GEN_ERROR("Type mismatch: constant sized array initialized with 0"
" arguments, but has size of " + itostr(NumElements) +"!");
- (yyval.ConstVal) = ConstantArray::get(ATy, std::vector<Constant*>());
+ (yyval.ConstVal).cnst = ConstantArray::get(ATy, std::vector<llvm::Constant*>());
+ (yyval.ConstVal).signedness = isSignless;
delete (yyvsp[-2].TypeVal).type;
CHECK_FOR_ERROR
;}
break;
case 116:
-#line 1476 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1478 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal).type->get());
if (ATy == 0)
@@ -3560,14 +3562,15 @@ yyreduce:
GEN_ERROR("Cannot build string arrays of non byte sized elements!");
}
free((yyvsp[0].StrVal));
- (yyval.ConstVal) = ConstantArray::get(ATy, Vals);
+ (yyval.ConstVal).cnst = ConstantArray::get(ATy, Vals);
+ (yyval.ConstVal).signedness = isSignless;
delete (yyvsp[-2].TypeVal).type;
CHECK_FOR_ERROR
;}
break;
case 117:
-#line 1506 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1509 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ // Nonempty unsized arr
const PackedType *PTy = dyn_cast<PackedType>((yyvsp[-3].TypeVal).type->get());
if (PTy == 0)
@@ -3583,21 +3586,25 @@ yyreduce:
itostr(NumElements) + "!");
// Verify all elements are correct type!
+ std::vector<Constant*> elems;
for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) {
- if (ETy != (*(yyvsp[-1].ConstVector))[i]->getType())
+ if (ETy != (*(yyvsp[-1].ConstVector))[i].cnst->getType()) {
GEN_ERROR("Element #" + utostr(i) + " is not of type '" +
ETy->getDescription() +"' as required!\nIt is of type '"+
- (*(yyvsp[-1].ConstVector))[i]->getType()->getDescription() + "'.");
+ (*(yyvsp[-1].ConstVector))[i].cnst->getType()->getDescription() + "'.");
+ } else
+ elems.push_back((*(yyvsp[-1].ConstVector))[i].cnst);
}
- (yyval.ConstVal) = ConstantPacked::get(PTy, *(yyvsp[-1].ConstVector));
+ (yyval.ConstVal).cnst = ConstantPacked::get(PTy, elems);
+ (yyval.ConstVal).signedness = isSignless;
delete (yyvsp[-3].TypeVal).type; delete (yyvsp[-1].ConstVector);
CHECK_FOR_ERROR
;}
break;
case 118:
-#line 1532 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1539 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
const StructType *STy = dyn_cast<StructType>((yyvsp[-3].TypeVal).type->get());
if (STy == 0)
@@ -3608,21 +3615,25 @@ yyreduce:
GEN_ERROR("Illegal number of initializers for structure type!");
// Check to ensure that constants are compatible with the type initializer!
+ std::vector<Constant*> elems;
for (unsigned i = 0, e = (yyvsp[-1].ConstVector)->size(); i != e; ++i)
- if ((*(yyvsp[-1].ConstVector))[i]->getType() != STy->getElementType(i))
+ if ((*(yyvsp[-1].ConstVector))[i].cnst->getType() != STy->getElementType(i)) {
GEN_ERROR("Expected type '" +
STy->getElementType(i)->getDescription() +
"' for element #" + utostr(i) +
" of structure initializer!");
+ } else
+ elems.push_back((*(yyvsp[-1].ConstVector))[i].cnst);
- (yyval.ConstVal) = ConstantStruct::get(STy, *(yyvsp[-1].ConstVector));
+ (yyval.ConstVal).cnst = ConstantStruct::get(STy, elems);
+ (yyval.ConstVal).signedness = isSignless;
delete (yyvsp[-3].TypeVal).type; delete (yyvsp[-1].ConstVector);
CHECK_FOR_ERROR
;}
break;
case 119:
-#line 1553 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1564 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
const StructType *STy = dyn_cast<StructType>((yyvsp[-2].TypeVal).type->get());
if (STy == 0)
@@ -3632,37 +3643,40 @@ yyreduce:
if (STy->getNumContainedTypes() != 0)
GEN_ERROR("Illegal number of initializers for structure type!");
- (yyval.ConstVal) = ConstantStruct::get(STy, std::vector<Constant*>());
+ (yyval.ConstVal).cnst = ConstantStruct::get(STy, std::vector<Constant*>());
+ (yyval.ConstVal).signedness = isSignless;
delete (yyvsp[-2].TypeVal).type;
CHECK_FOR_ERROR
;}
break;
case 120:
-#line 1566 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1578 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
const PointerType *PTy = dyn_cast<PointerType>((yyvsp[-1].TypeVal).type->get());
if (PTy == 0)
GEN_ERROR("Cannot make null pointer constant with type: '" +
(yyvsp[-1].TypeVal).type->get()->getDescription() + "'!");
- (yyval.ConstVal) = ConstantPointerNull::get(PTy);
+ (yyval.ConstVal).cnst = ConstantPointerNull::get(PTy);
+ (yyval.ConstVal).signedness = isSignless;
delete (yyvsp[-1].TypeVal).type;
CHECK_FOR_ERROR
;}
break;
case 121:
-#line 1576 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1589 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
- (yyval.ConstVal) = UndefValue::get((yyvsp[-1].TypeVal).type->get());
+ (yyval.ConstVal).cnst = UndefValue::get((yyvsp[-1].TypeVal).type->get());
+ (yyval.ConstVal).signedness = isSignless;
delete (yyvsp[-1].TypeVal).type;
CHECK_FOR_ERROR
;}
break;
case 122:
-#line 1581 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1595 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
const PointerType *Ty = dyn_cast<PointerType>((yyvsp[-1].TypeVal).type->get());
if (Ty == 0)
@@ -3720,16 +3734,17 @@ yyreduce:
}
}
- (yyval.ConstVal) = cast<GlobalValue>(V);
+ (yyval.ConstVal).cnst = cast<GlobalValue>(V);
+ (yyval.ConstVal).signedness = (yyvsp[-1].TypeVal).signedness;
delete (yyvsp[-1].TypeVal).type; // Free the type handle
CHECK_FOR_ERROR
;}
break;
case 123:
-#line 1642 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1657 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
- if ((yyvsp[-1].TypeVal).type->get() != (yyvsp[0].ConstVal)->getType())
+ if ((yyvsp[-1].TypeVal).type->get() != (yyvsp[0].ConstVal).cnst->getType())
GEN_ERROR("Mismatched types for constant expression!");
(yyval.ConstVal) = (yyvsp[0].ConstVal);
delete (yyvsp[-1].TypeVal).type;
@@ -3738,67 +3753,73 @@ yyreduce:
break;
case 124:
-#line 1649 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1664 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
const Type *Ty = (yyvsp[-1].TypeVal).type->get();
if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty))
GEN_ERROR("Cannot create a null initialized value of this type!");
- (yyval.ConstVal) = Constant::getNullValue(Ty);
+ (yyval.ConstVal).cnst = Constant::getNullValue(Ty);
+ (yyval.ConstVal).signedness = isSignless;
delete (yyvsp[-1].TypeVal).type;
CHECK_FOR_ERROR
;}
break;
case 125:
-#line 1658 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1674 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ // integral constants
if (!ConstantInt::isValueValidForType((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].SInt64Val)))
GEN_ERROR("Constant value doesn't fit in type!");
- (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].SInt64Val));
+ (yyval.ConstVal).cnst = ConstantInt::get((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].SInt64Val));
+ (yyval.ConstVal).signedness = (yyvsp[-1].TypeVal).signedness;
CHECK_FOR_ERROR
;}
break;
case 126:
-#line 1664 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1681 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ // integral constants
if (!ConstantInt::isValueValidForType((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].UInt64Val)))
GEN_ERROR("Constant value doesn't fit in type!");
- (yyval.ConstVal) = ConstantInt::get((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].UInt64Val));
+ (yyval.ConstVal).cnst = ConstantInt::get((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].UInt64Val));
+ (yyval.ConstVal).signedness = (yyvsp[-1].TypeVal).signedness;
CHECK_FOR_ERROR
;}
break;
case 127:
-#line 1670 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1688 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ // Boolean constants
- (yyval.ConstVal) = ConstantBool::getTrue();
+ (yyval.ConstVal).cnst = ConstantBool::getTrue();
+ (yyval.ConstVal).signedness = isSignless;
CHECK_FOR_ERROR
;}
break;
case 128:
-#line 1674 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1693 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ // Boolean constants
- (yyval.ConstVal) = ConstantBool::getFalse();
+ (yyval.ConstVal).cnst = ConstantBool::getFalse();
+ (yyval.ConstVal).signedness = isSignless;
CHECK_FOR_ERROR
;}
break;
case 129:
-#line 1678 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1698 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{ // Float & Double constants
if (!ConstantFP::isValueValidForType((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].FPVal)))
GEN_ERROR("Floating point constant invalid for type!!");
- (yyval.ConstVal) = ConstantFP::get((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].FPVal));
+ (yyval.ConstVal).cnst = ConstantFP::get((yyvsp[-1].TypeVal).type->get(), (yyvsp[0].FPVal));
+ (yyval.ConstVal).signedness = isSignless;
CHECK_FOR_ERROR
;}
break;
case 130:
-#line 1686 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1707 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
- Constant *Val = (yyvsp[-3].ConstVal);
+ Constant *Val = (yyvsp[-3].ConstVal).cnst;
const Type *Ty = (yyvsp[-1].TypeVal).type->get();
if (!Val->getType()->isFirstClassType())
GEN_ERROR("cast constant expression from a non-primitive type: '" +
@@ -3810,85 +3831,76 @@ yyreduce:
if (Ty == Type::BoolTy) {
// The previous definition of cast to bool was a compare against zero.
// We have to retain that semantic so we do it here.
- (yyval.ConstVal) = ConstantExpr::get(Instruction::SetNE, Val,
+ (yyval.ConstVal).cnst = ConstantExpr::get(Instruction::SetNE, Val,
Constant::getNullValue(Val->getType()));
} else if (Val->getType()->isFloatingPoint() && isa<PointerType>(Ty)) {
Constant *CE = ConstantExpr::getFPToUI(Val, Type::ULongTy);
- (yyval.ConstVal) = ConstantExpr::getIntToPtr(CE, Ty);
+ (yyval.ConstVal).cnst = ConstantExpr::getIntToPtr(CE, Ty);
} else {
- (yyval.ConstVal) = ConstantExpr::getCast(Val, Ty);
+ (yyval.ConstVal).cnst = ConstantExpr::getCast(Val, Ty);
}
} else {
- (yyval.ConstVal) = ConstantExpr::getCast((yyvsp[-5].CastOpVal).opcode, (yyvsp[-3].ConstVal), (yyvsp[-1].TypeVal).type->get());
+ (yyval.ConstVal).cnst = ConstantExpr::getCast((yyvsp[-5].CastOpVal).opcode, (yyvsp[-3].ConstVal).cnst, (yyvsp[-1].TypeVal).type->get());
}
delete (yyvsp[-1].TypeVal).type;
;}
break;
case 131:
-#line 1712 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
+#line 1733 "/proj/llvm/llvm-4/lib/AsmParser/llvmAsmParser.y"
{
- if (!isa<PointerType>((yyvsp[-2].ConstVal)->getType()))
+ if (!isa<PointerType>((yyvsp[-2].ConstVal).cnst->getType()))
GEN_ERROR("GetElementPtr requires a pointer operand!");
- // LLVM 1.2 and earlier used ubyte struct indices. Convert any ubyte struct
- // indices to uint struct indices for compatibility.
- generic_gep_type_iterator<std::vector<Value*>::iterator>
- GTI = gep_type_begin((yyvsp[-2].ConstVal)->getType(), (yyvsp[-1].ValueList)->begin(), (yyvsp[-1].ValueList)->end()),
- GTE = gep_type_end((yyvsp[-2].ConstVal)->getType(), (yyvsp[-1].ValueList)->begin(), (yyvsp[-1].ValueList)->end());
- for (unsigned i = 0, e = (yyvsp[-1].ValueList)->size(); i != e && GTI != GTE; ++i, ++GTI)
- if (isa<StructType&