diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2007-01-28 15:25:24 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2007-01-28 15:25:24 +0000 |
commit | ce13b85e6cc2a954aa51284bf896ce8cf6e1869d (patch) | |
tree | 1b736cb1db9610ce50d732c8aec960b1e4220215 /tools/llvm-upgrade/UpgradeParser.cpp.cvs | |
parent | 34d6dea84935d865965b9fc63ef6d42192da0a51 (diff) |
Merge error at my side. Fixed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33601 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-upgrade/UpgradeParser.cpp.cvs')
-rw-r--r-- | tools/llvm-upgrade/UpgradeParser.cpp.cvs | 598 |
1 files changed, 325 insertions, 273 deletions
diff --git a/tools/llvm-upgrade/UpgradeParser.cpp.cvs b/tools/llvm-upgrade/UpgradeParser.cpp.cvs index a5d5f043e6..914a87d71a 100644 --- a/tools/llvm-upgrade/UpgradeParser.cpp.cvs +++ b/tools/llvm-upgrade/UpgradeParser.cpp.cvs @@ -940,6 +940,7 @@ static void ResolveTypeTo(char *Name, const Type *ToTy) { } } +/// @brief This just makes any name given to it unique, up to MAX_UINT times. static std::string makeNameUnique(const std::string& Name) { static unsigned UniqueNameCounter = 1; std::string Result(Name); @@ -947,6 +948,57 @@ static std::string makeNameUnique(const std::string& Name) { return Result; } +/// This is the implementation portion of TypeHasInteger. It traverses the +/// type given, avoiding recursive types, and returns true as soon as it finds +/// an integer type. If no integer type is found, it returns false. +static bool TypeHasIntegerI(const Type *Ty, std::vector<const Type*> Stack) { + // Handle some easy cases + if (Ty->isPrimitiveType() || (Ty->getTypeID() == Type::OpaqueTyID)) + return false; + if (Ty->isInteger()) + return true; + if (const SequentialType *STy = dyn_cast<SequentialType>(Ty)) + return STy->getElementType()->isInteger(); + + // Avoid type structure recursion + for (std::vector<const Type*>::iterator I = Stack.begin(), E = Stack.end(); + I != E; ++I) + if (Ty == *I) + return false; + + // Push us on the type stack + Stack.push_back(Ty); + + if (const FunctionType *FTy = dyn_cast<FunctionType>(Ty)) { + if (TypeHasIntegerI(FTy->getReturnType(), Stack)) + return true; + FunctionType::param_iterator I = FTy->param_begin(); + FunctionType::param_iterator E = FTy->param_end(); + for (; I != E; ++I) + if (TypeHasIntegerI(*I, Stack)) + return true; + return false; + } else if (const StructType *STy = dyn_cast<StructType>(Ty)) { + StructType::element_iterator I = STy->element_begin(); + StructType::element_iterator E = STy->element_end(); + for (; I != E; ++I) { + if (TypeHasIntegerI(*I, Stack)) + return true; + } + return false; + } + // There shouldn't be anything else, but its definitely not integer + assert(0 && "What type is this?"); + return false; +} + +/// This is the interface to TypeHasIntegerI. It just provides the type stack, +/// to avoid recursion, and then calls TypeHasIntegerI. +static inline bool TypeHasInteger(const Type *Ty) { + std::vector<const Type*> TyStack; + return TypeHasIntegerI(Ty, TyStack); +} + // setValueName - Set the specified value to the name given. The name may be // null potentially, in which case this is a noop. The string passed in is // assumed to be a malloc'd string buffer, and is free'd by this function. @@ -975,16 +1027,16 @@ static void setValueName(Value *V, char *NameStr) { } } if (Existing) { - if (Existing->getType() == V->getType()) { - // The type of the Existing value and the new one are the same. This - // is probably a type plane collapsing error. If the types involved - // are both integer, just rename it. Otherwise it - // is a redefinition error. - if (!Existing->getType()->isInteger()) { - error("Redefinition of value named '" + Name + "' in the '" + - V->getType()->getDescription() + "' type plane"); - return; - } + // An existing value of the same name was found. This might have happened + // because of the integer type planes collapsing in LLVM 2.0. + if (Existing->getType() == V->getType() && + !TypeHasInteger(Existing->getType())) { + // If the type does not contain any integers in them then this can't be + // a type plane collapsing issue. It truly is a redefinition and we + // should error out as the assembly is invalid. + error("Redefinition of value named '" + Name + "' of type '" + + V->getType()->getDescription() + "'"); + return; } // In LLVM 2.0 we don't allow names to be re-used for any values in a // function, regardless of Type. Previously re-use of names was okay as @@ -1726,7 +1778,7 @@ using namespace llvm; #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -#line 1339 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1391 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { llvm::Module *ModuleVal; llvm::Function *FunctionVal; @@ -1769,7 +1821,7 @@ typedef union YYSTYPE llvm::Module::Endianness Endianness; } /* Line 187 of yacc.c. */ -#line 1773 "UpgradeParser.tab.c" +#line 1825 "UpgradeParser.tab.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -1782,7 +1834,7 @@ typedef union YYSTYPE /* Line 216 of yacc.c. */ -#line 1786 "UpgradeParser.tab.c" +#line 1838 "UpgradeParser.tab.c" #ifdef short # undef short @@ -2204,37 +2256,37 @@ static const yytype_int16 yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 1479, 1479, 1480, 1488, 1489, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1503, 1503, 1503, - 1507, 1507, 1507, 1507, 1507, 1507, 1511, 1511, 1512, 1512, - 1513, 1513, 1514, 1514, 1515, 1515, 1519, 1519, 1520, 1520, - 1521, 1521, 1522, 1522, 1523, 1523, 1524, 1524, 1525, 1525, - 1526, 1527, 1530, 1530, 1530, 1530, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1535, 1535, 1535, 1535, 1535, 1535, 1541, - 1541, 1541, 1541, 1545, 1545, 1545, 1545, 1549, 1549, 1553, - 1553, 1558, 1561, 1566, 1567, 1568, 1569, 1570, 1571, 1572, - 1573, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1594, - 1595, 1603, 1604, 1612, 1621, 1622, 1629, 1630, 1634, 1638, - 1654, 1655, 1662, 1663, 1670, 1678, 1678, 1678, 1678, 1678, - 1678, 1678, 1679, 1679, 1679, 1679, 1679, 1684, 1688, 1692, - 1697, 1706, 1722, 1728, 1741, 1750, 1754, 1765, 1769, 1782, - 1786, 1793, 1794, 1800, 1807, 1819, 1849, 1862, 1885, 1913, - 1935, 1946, 1968, 1979, 1988, 1993, 2051, 2058, 2066, 2073, - 2080, 2084, 2088, 2097, 2112, 2125, 2134, 2162, 2175, 2184, - 2190, 2196, 2205, 2211, 2217, 2228, 2229, 2238, 2239, 2251, - 2260, 2261, 2262, 2263, 2264, 2280, 2300, 2302, 2304, 2304, - 2311, 2311, 2318, 2318, 2325, 2325, 2333, 2335, 2337, 2342, - 2356, 2357, 2361, 2364, 2372, 2376, 2383, 2387, 2391, 2395, - 2403, 2403, 2407, 2408, 2412, 2420, 2425, 2433, 2434, 2441, - 2448, 2452, 2558, 2558, 2562, 2572, 2572, 2576, 2580, 2582, - 2583, 2587, 2587, 2599, 2600, 2605, 2606, 2607, 2608, 2609, - 2610, 2611, 2612, 2613, 2634, 2637, 2652, 2653, 2658, 2658, - 2666, 2675, 2678, 2687, 2697, 2702, 2711, 2722, 2722, 2725, - 2728, 2731, 2735, 2741, 2756, 2762, 2813, 2816, 2822, 2832, - 2845, 2874, 2882, 2890, 2894, 2901, 2902, 2906, 2909, 2915, - 2932, 2948, 2962, 2974, 2986, 2997, 3006, 3015, 3024, 3031, - 3052, 3076, 3082, 3088, 3094, 3110, 3183, 3191, 3192, 3196, - 3197, 3201, 3207, 3213, 3219, 3225, 3232, 3244, 3258 + 0, 1531, 1531, 1532, 1540, 1541, 1551, 1551, 1551, 1551, + 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1555, 1555, 1555, + 1559, 1559, 1559, 1559, 1559, 1559, 1563, 1563, 1564, 1564, + 1565, 1565, 1566, 1566, 1567, 1567, 1571, 1571, 1572, 1572, + 1573, 1573, 1574, 1574, 1575, 1575, 1576, 1576, 1577, 1577, + 1578, 1579, 1582, 1582, 1582, 1582, 1586, 1586, 1586, 1586, + 1586, 1586, 1586, 1587, 1587, 1587, 1587, 1587, 1587, 1593, + 1593, 1593, 1593, 1597, 1597, 1597, 1597, 1601, 1601, 1605, + 1605, 1610, 1613, 1618, 1619, 1620, 1621, 1622, 1623, 1624, + 1625, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1646, + 1647, 1655, 1656, 1664, 1673, 1674, 1681, 1682, 1686, 1690, + 1706, 1707, 1714, 1715, 1722, 1730, 1730, 1730, 1730, 1730, + 1730, 1730, 1731, 1731, 1731, 1731, 1731, 1736, 1740, 1744, + 1749, 1758, 1774, 1780, 1793, 1802, 1806, 1817, 1821, 1834, + 1838, 1845, 1846, 1852, 1859, 1871, 1901, 1914, 1937, 1965, + 1987, 1998, 2020, 2031, 2040, 2045, 2103, 2110, 2118, 2125, + 2132, 2136, 2140, 2149, 2164, 2177, 2186, 2214, 2227, 2236, + 2242, 2248, 2257, 2263, 2269, 2280, 2281, 2290, 2291, 2303, + 2312, 2313, 2314, 2315, 2316, 2332, 2352, 2354, 2356, 2356, + 2363, 2363, 2370, 2370, 2377, 2377, 2385, 2387, 2389, 2394, + 2408, 2409, 2413, 2416, 2424, 2428, 2435, 2439, 2443, 2447, + 2455, 2455, 2459, 2460, 2464, 2472, 2477, 2485, 2486, 2493, + 2500, 2504, 2610, 2610, 2614, 2624, 2624, 2628, 2632, 2634, + 2635, 2639, 2639, 2651, 2652, 2657, 2658, 2659, 2660, 2661, + 2662, 2663, 2664, 2665, 2686, 2689, 2704, 2705, 2710, 2710, + 2718, 2727, 2730, 2739, 2749, 2754, 2763, 2774, 2774, 2777, + 2780, 2783, 2787, 2793, 2808, 2814, 2865, 2868, 2874, 2884, + 2897, 2926, 2934, 2942, 2946, 2953, 2954, 2958, 2961, 2967, + 2984, 3000, 3014, 3026, 3038, 3049, 3058, 3067, 3076, 3083, + 3104, 3128, 3134, 3140, 3146, 3162, 3235, 3243, 3244, 3248, + 3249, 3253, 3259, 3265, 3271, 3277, 3284, 3296, 3310 }; #endif @@ -3781,7 +3833,7 @@ yyreduce: switch (yyn) { case 3: -#line 1480 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1532 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[(1) - (1)].UIntVal) > (uint32_t)INT32_MAX) // Outside of my range! error("Value too large for type"); @@ -3790,7 +3842,7 @@ yyreduce: break; case 5: -#line 1489 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1541 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[(1) - (1)].UInt64Val) > (uint64_t)INT64_MAX) // Outside of my range! error("Value too large for type"); @@ -3799,226 +3851,226 @@ yyreduce: break; case 26: -#line 1511 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1563 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_EQ; ;} break; case 27: -#line 1511 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1563 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_NE; ;} break; case 28: -#line 1512 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1564 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SLT; ;} break; case 29: -#line 1512 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1564 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SGT; ;} break; case 30: -#line 1513 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1565 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SLE; ;} break; case 31: -#line 1513 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1565 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SGE; ;} break; case 32: -#line 1514 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1566 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_ULT; ;} break; case 33: -#line 1514 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1566 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_UGT; ;} break; case 34: -#line 1515 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1567 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_ULE; ;} break; case 35: -#line 1515 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1567 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_UGE; ;} break; case 36: -#line 1519 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1571 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OEQ; ;} break; case 37: -#line 1519 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1571 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ONE; ;} break; case 38: -#line 1520 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1572 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OLT; ;} break; case 39: -#line 1520 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1572 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OGT; ;} break; case 40: -#line 1521 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1573 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OLE; ;} break; case 41: -#line 1521 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1573 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OGE; ;} break; case 42: -#line 1522 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1574 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ORD; ;} break; case 43: -#line 1522 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1574 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UNO; ;} break; case 44: -#line 1523 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1575 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UEQ; ;} break; case 45: -#line 1523 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1575 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UNE; ;} break; case 46: -#line 1524 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1576 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ULT; ;} break; case 47: -#line 1524 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1576 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UGT; ;} break; case 48: -#line 1525 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1577 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ULE; ;} break; case 49: -#line 1525 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1577 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UGE; ;} break; case 50: -#line 1526 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1578 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_TRUE; ;} break; case 51: -#line 1527 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1579 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_FALSE; ;} break; case 81: -#line 1558 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1610 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal); ;} break; case 82: -#line 1561 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1613 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = 0; ;} break; case 83: -#line 1566 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1618 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} break; case 84: -#line 1567 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1619 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} break; case 85: -#line 1568 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1620 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} break; case 86: -#line 1569 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1621 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;} break; case 87: -#line 1570 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1622 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} break; case 88: -#line 1571 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1623 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} break; case 89: -#line 1572 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1624 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} break; case 90: -#line 1573 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1625 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; case 91: -#line 1577 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1629 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = CallingConv::C; ;} break; case 92: -#line 1578 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1630 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = CallingConv::C; ;} break; case 93: -#line 1579 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1631 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = CallingConv::C; ;} break; case 94: -#line 1580 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1632 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = CallingConv::Fast; ;} break; case 95: -#line 1581 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1633 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = CallingConv::Cold; ;} break; case 96: -#line 1582 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1634 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = CallingConv::X86_StdCall; ;} break; case 97: -#line 1583 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1635 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = CallingConv::X86_FastCall; ;} break; case 98: -#line 1584 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1636 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { if ((unsigned)(yyvsp[(2) - (2)].UInt64Val) != (yyvsp[(2) - (2)].UInt64Val)) error("Calling conv too large"); @@ -4027,12 +4079,12 @@ yyreduce: break; case 99: -#line 1594 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1646 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = 0; ;} break; case 100: -#line 1595 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1647 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = (yyvsp[(2) - (2)].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -4041,12 +4093,12 @@ yyreduce: break; case 101: -#line 1603 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1655 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = 0; ;} break; case 102: -#line 1604 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1656 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = (yyvsp[(3) - (3)].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -4055,7 +4107,7 @@ yyreduce: break; case 103: -#line 1612 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1664 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { for (unsigned i = 0, e = strlen((yyvsp[(2) - (2)].StrVal)); i != e; ++i) if ((yyvsp[(2) - (2)].StrVal)[i] == '"' || (yyvsp[(2) - (2)].StrVal)[i] == '\\') @@ -4065,27 +4117,27 @@ yyreduce: break; case 104: -#line 1621 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1673 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = 0; ;} break; case 105: -#line 1622 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1674 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = (yyvsp[(1) - (1)].StrVal); ;} break; case 106: -#line 1629 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1681 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" {;} break; case 107: -#line 1630 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1682 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" {;} break; case 108: -#line 1634 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1686 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { CurGV->setSection((yyvsp[(1) - (1)].StrVal)); free((yyvsp[(1) - (1)].StrVal)); @@ -4093,7 +4145,7 @@ yyreduce: break; case 109: -#line 1638 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1690 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[(2) - (2)].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[(2) - (2)].UInt64Val))) error("Alignment must be a power of two"); @@ -4103,7 +4155,7 @@ yyreduce: break; case 111: -#line 1655 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1707 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder((yyvsp[(1) - (1)].PrimType).T); (yyval.TypeVal).S = Signless; @@ -4111,7 +4163,7 @@ yyreduce: break; case 113: -#line 1663 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1715 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder((yyvsp[(1) - (1)].PrimType).T); (yyval.TypeVal).S = Signless; @@ -4119,7 +4171,7 @@ yyreduce: break; case 114: -#line 1670 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1722 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { if (!UpRefs.empty()) error("Invalid upreference in type: " + (*(yyvsp[(1) - (1)].TypeVal).T)->getDescription()); @@ -4128,7 +4180,7 @@ yyreduce: break; case 127: -#line 1684 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1736 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder((yyvsp[(1) - (1)].PrimType).T); (yyval.TypeVal).S = (yyvsp[(1) - (1)].PrimType).S; @@ -4136,7 +4188,7 @@ yyreduce: break; case 128: -#line 1688 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1740 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder(OpaqueType::get()); (yyval.TypeVal).S = Signless; @@ -4144,7 +4196,7 @@ yyreduce: break; case 129: -#line 1692 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1744 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Named types are also simple types... const Type* tmp = getType((yyvsp[(1) - (1)].ValIDVal)); (yyval.TypeVal).T = new PATypeHolder(tmp); @@ -4153,7 +4205,7 @@ yyreduce: break; case 130: -#line 1697 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1749 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Type UpReference if ((yyvsp[(2) - (2)].UInt64Val) > (uint64_t)~0U) error("Value out of range"); @@ -4166,7 +4218,7 @@ yyreduce: break; case 131: -#line 1706 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1758 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Function derived type? std::vector<const Type*> Params; for (std::list<llvm::PATypeInfo>::iterator I = (yyvsp[(3) - (4)].TypeList)->begin(), @@ -4186,7 +4238,7 @@ yyreduce: break; case 132: -#line 1722 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1774 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Sized array type? (yyval.TypeVal).T = new PATypeHolder(HandleUpRefs(ArrayType::get((yyvsp[(4) - (5)].TypeVal).T->get(), (unsigned)(yyvsp[(2) - (5)].UInt64Val)))); @@ -4196,7 +4248,7 @@ yyreduce: break; case 133: -#line 1728 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1780 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Packed array type? const llvm::Type* ElemTy = (yyvsp[(4) - (5)].TypeVal).T->get(); if ((unsigned)(yyvsp[(2) - (5)].UInt64Val) != (yyvsp[(2) - (5)].UInt64Val)) @@ -4213,7 +4265,7 @@ yyreduce: break; case 134: -#line 1741 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1793 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Structure type? std::vector<const Type*> Elements; for (std::list<llvm::PATypeInfo>::iterator I = (yyvsp[(2) - (3)].TypeList)->begin(), @@ -4226,7 +4278,7 @@ yyreduce: break; case 135: -#line 1750 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1802 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Empty structure type? (yyval.TypeVal).T = new PATypeHolder(StructType::get(std::vector<const Type*>())); (yyval.TypeVal).S = Signless; @@ -4234,7 +4286,7 @@ yyreduce: break; case 136: -#line 1754 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1806 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Packed Structure type? std::vector<const Type*> Elements; for (std::list<llvm::PATypeInfo>::iterator I = (yyvsp[(3) - (5)].TypeList)->begin(), @@ -4249,7 +4301,7 @@ yyreduce: break; case 137: -#line 1765 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1817 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Empty packed structure type? (yyval.TypeVal).T = new PATypeHolder(StructType::get(std::vector<const Type*>(),true)); (yyval.TypeVal).S = Signless; @@ -4257,7 +4309,7 @@ yyreduce: break; case 138: -#line 1769 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1821 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Pointer type? if ((yyvsp[(1) - (2)].TypeVal).T->get() == Type::LabelTy) error("Cannot form a pointer to a basic block"); @@ -4268,7 +4320,7 @@ yyreduce: break; case 139: -#line 1782 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1834 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeList) = new std::list<PATypeInfo>(); (yyval.TypeList)->push_back((yyvsp[(1) - (1)].TypeVal)); @@ -4276,14 +4328,14 @@ yyreduce: break; case 140: -#line 1786 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1838 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { ((yyval.TypeList)=(yyvsp[(1) - (3)].TypeList))->push_back((yyvsp[(3) - (3)].TypeVal)); ;} break; case 142: -#line 1794 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1846 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { PATypeInfo VoidTI; VoidTI.T = new PATypeHolder(Type::VoidTy); @@ -4293,7 +4345,7 @@ yyreduce: break; case 143: -#line 1800 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1852 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeList) = new std::list<PATypeInfo>(); PATypeInfo VoidTI; @@ -4304,14 +4356,14 @@ yyreduce: break; case 144: -#line 1807 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1859 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeList) = new std::list<PATypeInfo>(); ;} break; case 145: -#line 1819 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1871 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[(1) - (4)].TypeVal).T->get()); if (ATy == 0) @@ -4345,7 +4397,7 @@ yyreduce: break; case 146: -#line 1849 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1901 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[(1) - (3)].TypeVal).T->get()); if (ATy == 0) @@ -4362,7 +4414,7 @@ yyreduce: break; case 147: -#line 1862 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1914 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[(1) - (3)].TypeVal).T->get()); if (ATy == 0) @@ -4389,7 +4441,7 @@ yyreduce: break; case 148: -#line 1885 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1937 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr const PackedType *PTy = dyn_cast<PackedType>((yyvsp[(1) - (4)].TypeVal).T->get()); if (PTy == 0) @@ -4421,7 +4473,7 @@ yyreduce: break; case 149: -#line 1913 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1965 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (4)].TypeVal).T->get()); if (STy == 0) @@ -4447,7 +4499,7 @@ yyreduce: break; case 150: -#line 1935 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1987 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (3)].TypeVal).T->get()); if (STy == 0) @@ -4462,7 +4514,7 @@ yyreduce: break; case 151: -#line 1946 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 1998 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (6)].TypeVal).T->get()); if (STy == 0) @@ -4488,7 +4540,7 @@ yyreduce: break; case 152: -#line 1968 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 2020 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (5)].TypeVal).T->get()); if (STy == 0) @@ -4503,7 +4555,7 @@ yyreduce: break; case 153: -#line 1979 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 2031 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { const PointerType *PTy = dyn_cast<PointerType>((yyvsp[(1) - (2)].TypeVal).T->get()); if (PTy == 0) @@ -4516,7 +4568,7 @@ yyreduce: break; case 154: -#line 1988 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 2040 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ConstVal).C = UndefValue::get((yyvsp[(1) - (2)].TypeVal).T->get()); (yyval.ConstVal).S = (yyvsp[(1) - (2)].TypeVal).S; @@ -4525,7 +4577,7 @@ yyreduce: break; case 155: -#line 1993 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 2045 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { const PointerType *Ty = dyn_cast<PointerType>((yyvsp[(1) - (2)].TypeVal).T->get()); if (Ty == 0) @@ -4587,7 +4639,7 @@ yyreduce: break; case 156: -#line 2051 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 2103 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[(1) - (2)].TypeVal).T->get() != (yyvsp[(2) - (2)].ConstVal).C->getType()) error("Mismatched types for constant expression"); @@ -4598,7 +4650,7 @@ yyreduce: break; case 157: -#line 2058 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 2110 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[(1) - (2)].TypeVal).T->get(); if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty)) @@ -4610,7 +4662,7 @@ yyreduce: break; case 158: -#line 2066 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 2118 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // integral constants const Type *Ty = (yyvsp[(1) - (2)].PrimType).T; if (!ConstantInt::isValueValidForType(Ty, (yyvsp[(2) - (2)].SInt64Val))) @@ -4621,7 +4673,7 @@ yyreduce: break; case 159: -#line 2073 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 2125 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // integral constants const Type *Ty = (yyvsp[(1) - (2)].PrimType).T; if (!ConstantInt::isValueValidForType(Ty, (yyvsp[(2) - (2)].UInt64Val))) @@ -4632,7 +4684,7 @@ yyreduce: break; case 160: -#line 2080 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 2132 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.ConstVal).C = ConstantInt::get(Type::Int1Ty, true); (yyval.ConstVal).S = Unsigned; @@ -4640,7 +4692,7 @@ yyreduce: break; case 161: -#line 2084 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 2136 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.ConstVal).C = ConstantInt::get(Type::Int1Ty, false); (yyval.ConstVal).S = Unsigned; @@ -4648,7 +4700,7 @@ yyreduce: break; case 162: -#line 2088 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" +#line 2140 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" { // Float & Double constants if (!ConstantFP::isValueValidForType((yyvsp[(1) - (2)].PrimType).T, (yyvsp[(2) - (2)].FPVal))) error("Floating point constant invalid for type"); @@ -4658,7 +4710,7 @@ yyreduce: break; case 163: -#l |