diff --git a/tools/llvm-upgrade/UpgradeParser.cpp.cvs b/tools/llvm-upgrade/UpgradeParser.cpp.cvs index c44d6dda0a7..24eb84e6712 100644 --- a/tools/llvm-upgrade/UpgradeParser.cpp.cvs +++ b/tools/llvm-upgrade/UpgradeParser.cpp.cvs @@ -930,6 +930,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); @@ -937,6 +938,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 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(Ty)) + return STy->getElementType()->isInteger(); + + // Avoid type structure recursion + for (std::vector::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(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(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 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. @@ -965,16 +1017,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 @@ -1715,7 +1767,7 @@ using namespace llvm; #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 1339 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1391 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; @@ -1758,7 +1810,7 @@ typedef union YYSTYPE { llvm::Module::Endianness Endianness; } YYSTYPE; /* Line 196 of yacc.c. */ -#line 1762 "UpgradeParser.tab.c" +#line 1814 "UpgradeParser.tab.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -1770,7 +1822,7 @@ typedef union YYSTYPE { /* Line 219 of yacc.c. */ -#line 1774 "UpgradeParser.tab.c" +#line 1826 "UpgradeParser.tab.c" #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) # define YYSIZE_T __SIZE_TYPE__ @@ -2128,37 +2180,37 @@ static const short int yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short int 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 @@ -3560,7 +3612,7 @@ yyreduce: switch (yyn) { case 3: -#line 1480 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1532 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].UIntVal) > (uint32_t)INT32_MAX) // Outside of my range! error("Value too large for type"); @@ -3569,7 +3621,7 @@ yyreduce: break; case 5: -#line 1489 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1541 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].UInt64Val) > (uint64_t)INT64_MAX) // Outside of my range! error("Value too large for type"); @@ -3578,226 +3630,226 @@ yyreduce: break; case 26: -#line 1511 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1563 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_EQ; ;} break; case 27: -#line 1511 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1563 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_NE; ;} break; case 28: -#line 1512 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1564 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SLT; ;} break; case 29: -#line 1512 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1564 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SGT; ;} break; case 30: -#line 1513 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1565 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SLE; ;} break; case 31: -#line 1513 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1565 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SGE; ;} break; case 32: -#line 1514 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1566 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_ULT; ;} break; case 33: -#line 1514 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1566 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_UGT; ;} break; case 34: -#line 1515 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1567 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_ULE; ;} break; case 35: -#line 1515 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1567 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_UGE; ;} break; case 36: -#line 1519 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1571 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OEQ; ;} break; case 37: -#line 1519 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1571 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ONE; ;} break; case 38: -#line 1520 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1572 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OLT; ;} break; case 39: -#line 1520 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1572 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OGT; ;} break; case 40: -#line 1521 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1573 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OLE; ;} break; case 41: -#line 1521 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1573 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OGE; ;} break; case 42: -#line 1522 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1574 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ORD; ;} break; case 43: -#line 1522 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1574 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UNO; ;} break; case 44: -#line 1523 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1575 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UEQ; ;} break; case 45: -#line 1523 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1575 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UNE; ;} break; case 46: -#line 1524 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1576 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ULT; ;} break; case 47: -#line 1524 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1576 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UGT; ;} break; case 48: -#line 1525 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1577 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ULE; ;} break; case 49: -#line 1525 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1577 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UGE; ;} break; case 50: -#line 1526 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1578 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_TRUE; ;} break; case 51: -#line 1527 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1579 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_FALSE; ;} break; case 81: -#line 1558 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1610 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = (yyvsp[-1].StrVal); ;} break; case 82: -#line 1561 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1613 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = 0; ;} break; case 83: -#line 1566 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1618 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} break; case 84: -#line 1567 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1619 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} break; case 85: -#line 1568 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1620 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} break; case 86: -#line 1569 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1621 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;} break; case 87: -#line 1570 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1622 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} break; case 88: -#line 1571 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1623 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} break; case 89: -#line 1572 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1624 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} break; case 90: -#line 1573 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1625 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; case 91: -#line 1577 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1629 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = CallingConv::C; ;} break; case 92: -#line 1578 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1630 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = CallingConv::C; ;} break; case 93: -#line 1579 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1631 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = CallingConv::CSRet; ;} break; case 94: -#line 1580 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1632 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = CallingConv::Fast; ;} break; case 95: -#line 1581 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1633 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = CallingConv::Cold; ;} break; case 96: -#line 1582 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1634 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = CallingConv::X86_StdCall; ;} break; case 97: -#line 1583 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1635 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = CallingConv::X86_FastCall; ;} break; case 98: -#line 1584 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1636 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val)) error("Calling conv too large"); @@ -3806,12 +3858,12 @@ yyreduce: break; case 99: -#line 1594 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1646 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = 0; ;} break; case 100: -#line 1595 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1647 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = (yyvsp[0].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3820,12 +3872,12 @@ yyreduce: break; case 101: -#line 1603 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1655 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = 0; ;} break; case 102: -#line 1604 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1656 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = (yyvsp[0].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3834,7 +3886,7 @@ yyreduce: break; case 103: -#line 1612 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1664 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { for (unsigned i = 0, e = strlen((yyvsp[0].StrVal)); i != e; ++i) if ((yyvsp[0].StrVal)[i] == '"' || (yyvsp[0].StrVal)[i] == '\\') @@ -3844,27 +3896,27 @@ yyreduce: break; case 104: -#line 1621 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1673 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = 0; ;} break; case 105: -#line 1622 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1674 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = (yyvsp[0].StrVal); ;} break; case 106: -#line 1629 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1681 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" {;} break; case 107: -#line 1630 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1682 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" {;} break; case 108: -#line 1634 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1686 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurGV->setSection((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -3872,7 +3924,7 @@ yyreduce: break; case 109: -#line 1638 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1690 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val))) error("Alignment must be a power of two"); @@ -3882,7 +3934,7 @@ yyreduce: break; case 111: -#line 1655 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1707 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder((yyvsp[0].PrimType).T); (yyval.TypeVal).S = Signless; @@ -3890,7 +3942,7 @@ yyreduce: break; case 113: -#line 1663 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1715 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder((yyvsp[0].PrimType).T); (yyval.TypeVal).S = Signless; @@ -3898,7 +3950,7 @@ yyreduce: break; case 114: -#line 1670 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1722 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!UpRefs.empty()) error("Invalid upreference in type: " + (*(yyvsp[0].TypeVal).T)->getDescription()); @@ -3907,7 +3959,7 @@ yyreduce: break; case 127: -#line 1684 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1736 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder((yyvsp[0].PrimType).T); (yyval.TypeVal).S = (yyvsp[0].PrimType).S; @@ -3915,7 +3967,7 @@ yyreduce: break; case 128: -#line 1688 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1740 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder(OpaqueType::get()); (yyval.TypeVal).S = Signless; @@ -3923,7 +3975,7 @@ yyreduce: break; case 129: -#line 1692 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1744 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Named types are also simple types... const Type* tmp = getType((yyvsp[0].ValIDVal)); (yyval.TypeVal).T = new PATypeHolder(tmp); @@ -3932,7 +3984,7 @@ yyreduce: break; case 130: -#line 1697 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1749 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Type UpReference if ((yyvsp[0].UInt64Val) > (uint64_t)~0U) error("Value out of range"); @@ -3945,7 +3997,7 @@ yyreduce: break; case 131: -#line 1706 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1758 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Function derived type? std::vector Params; for (std::list::iterator I = (yyvsp[-1].TypeList)->begin(), @@ -3965,7 +4017,7 @@ yyreduce: break; case 132: -#line 1722 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1774 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Sized array type? (yyval.TypeVal).T = new PATypeHolder(HandleUpRefs(ArrayType::get((yyvsp[-1].TypeVal).T->get(), (unsigned)(yyvsp[-3].UInt64Val)))); @@ -3975,7 +4027,7 @@ yyreduce: break; case 133: -#line 1728 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1780 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Packed array type? const llvm::Type* ElemTy = (yyvsp[-1].TypeVal).T->get(); if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val)) @@ -3992,7 +4044,7 @@ yyreduce: break; case 134: -#line 1741 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1793 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Structure type? std::vector Elements; for (std::list::iterator I = (yyvsp[-1].TypeList)->begin(), @@ -4005,7 +4057,7 @@ yyreduce: break; case 135: -#line 1750 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1802 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Empty structure type? (yyval.TypeVal).T = new PATypeHolder(StructType::get(std::vector())); (yyval.TypeVal).S = Signless; @@ -4013,7 +4065,7 @@ yyreduce: break; case 136: -#line 1754 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1806 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Packed Structure type? std::vector Elements; for (std::list::iterator I = (yyvsp[-2].TypeList)->begin(), @@ -4028,7 +4080,7 @@ yyreduce: break; case 137: -#line 1765 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1817 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Empty packed structure type? (yyval.TypeVal).T = new PATypeHolder(StructType::get(std::vector(),true)); (yyval.TypeVal).S = Signless; @@ -4036,7 +4088,7 @@ yyreduce: break; case 138: -#line 1769 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1821 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Pointer type? if ((yyvsp[-1].TypeVal).T->get() == Type::LabelTy) error("Cannot form a pointer to a basic block"); @@ -4047,7 +4099,7 @@ yyreduce: break; case 139: -#line 1782 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1834 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeList) = new std::list(); (yyval.TypeList)->push_back((yyvsp[0].TypeVal)); @@ -4055,14 +4107,14 @@ yyreduce: break; case 140: -#line 1786 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1838 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back((yyvsp[0].TypeVal)); ;} break; case 142: -#line 1794 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1846 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { PATypeInfo VoidTI; VoidTI.T = new PATypeHolder(Type::VoidTy); @@ -4072,7 +4124,7 @@ yyreduce: break; case 143: -#line 1800 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1852 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeList) = new std::list(); PATypeInfo VoidTI; @@ -4083,14 +4135,14 @@ yyreduce: break; case 144: -#line 1807 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1859 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeList) = new std::list(); ;} break; case 145: -#line 1819 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1871 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr const ArrayType *ATy = dyn_cast((yyvsp[-3].TypeVal).T->get()); if (ATy == 0) @@ -4124,7 +4176,7 @@ yyreduce: break; case 146: -#line 1849 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1901 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const ArrayType *ATy = dyn_cast((yyvsp[-2].TypeVal).T->get()); if (ATy == 0) @@ -4141,7 +4193,7 @@ yyreduce: break; case 147: -#line 1862 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1914 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const ArrayType *ATy = dyn_cast((yyvsp[-2].TypeVal).T->get()); if (ATy == 0) @@ -4168,7 +4220,7 @@ yyreduce: break; case 148: -#line 1885 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1937 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr const PackedType *PTy = dyn_cast((yyvsp[-3].TypeVal).T->get()); if (PTy == 0) @@ -4200,7 +4252,7 @@ yyreduce: break; case 149: -#line 1913 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1965 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast((yyvsp[-3].TypeVal).T->get()); if (STy == 0) @@ -4226,7 +4278,7 @@ yyreduce: break; case 150: -#line 1935 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1987 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast((yyvsp[-2].TypeVal).T->get()); if (STy == 0) @@ -4241,7 +4293,7 @@ yyreduce: break; case 151: -#line 1946 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1998 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast((yyvsp[-5].TypeVal).T->get()); if (STy == 0) @@ -4267,7 +4319,7 @@ yyreduce: break; case 152: -#line 1968 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2020 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast((yyvsp[-4].TypeVal).T->get()); if (STy == 0) @@ -4282,7 +4334,7 @@ yyreduce: break; case 153: -#line 1979 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2031 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const PointerType *PTy = dyn_cast((yyvsp[-1].TypeVal).T->get()); if (PTy == 0) @@ -4295,7 +4347,7 @@ yyreduce: break; case 154: -#line 1988 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2040 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ConstVal).C = UndefValue::get((yyvsp[-1].TypeVal).T->get()); (yyval.ConstVal).S = (yyvsp[-1].TypeVal).S; @@ -4304,7 +4356,7 @@ yyreduce: break; case 155: -#line 1993 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2045 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const PointerType *Ty = dyn_cast((yyvsp[-1].TypeVal).T->get()); if (Ty == 0) @@ -4366,7 +4418,7 @@ yyreduce: break; case 156: -#line 2051 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2103 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[-1].TypeVal).T->get() != (yyvsp[0].ConstVal).C->getType()) error("Mismatched types for constant expression"); @@ -4377,7 +4429,7 @@ yyreduce: break; case 157: -#line 2058 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2110 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-1].TypeVal).T->get(); if (isa(Ty) || Ty == Type::LabelTy || isa(Ty)) @@ -4389,7 +4441,7 @@ yyreduce: break; case 158: -#line 2066 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2118 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // integral constants const Type *Ty = (yyvsp[-1].PrimType).T; if (!ConstantInt::isValueValidForType(Ty, (yyvsp[0].SInt64Val))) @@ -4400,7 +4452,7 @@ yyreduce: break; case 159: -#line 2073 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2125 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // integral constants const Type *Ty = (yyvsp[-1].PrimType).T; if (!ConstantInt::isValueValidForType(Ty, (yyvsp[0].UInt64Val))) @@ -4411,7 +4463,7 @@ yyreduce: break; case 160: -#line 2080 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2132 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.ConstVal).C = ConstantInt::get(Type::Int1Ty, true); (yyval.ConstVal).S = Unsigned; @@ -4419,7 +4471,7 @@ yyreduce: break; case 161: -#line 2084 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2136 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.ConstVal).C = ConstantInt::get(Type::Int1Ty, false); (yyval.ConstVal).S = Unsigned; @@ -4427,7 +4479,7 @@ yyreduce: break; case 162: -#line 2088 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2140 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Float & Double constants if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType).T, (yyvsp[0].FPVal))) error("Floating point constant invalid for type"); @@ -4437,7 +4489,7 @@ yyreduce: break; case 163: -#line 2097 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2149 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* SrcTy = (yyvsp[-3].ConstVal).C->getType(); const Type* DstTy = (yyvsp[-1].TypeVal).T->get(); @@ -4456,7 +4508,7 @@ yyreduce: break; case 164: -#line 2112 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2164 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-2].ConstVal).C->getType(); if (!isa(Ty)) @@ -4473,7 +4525,7 @@ yyreduce: break; case 165: -#line 2125 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2177 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-5].ConstVal).C->getType()->isInteger() || cast((yyvsp[-5].ConstVal).C->getType())->getBitWidth() != 1) @@ -4486,7 +4538,7 @@ yyreduce: break; case 166: -#line 2134 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2186 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-3].ConstVal).C->getType(); if (Ty != (yyvsp[-1].ConstVal).C->getType()) @@ -4518,7 +4570,7 @@ yyreduce: break; case 167: -#line 2162 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2214 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-3].ConstVal).C->getType(); if (Ty != (yyvsp[-1].ConstVal).C->getType()) @@ -4535,7 +4587,7 @@ yyreduce: break; case 168: -#line 2175 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2227 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-3].ConstVal).C->getType(); if (Ty != (yyvsp[-1].ConstVal).C->getType()) @@ -4548,7 +4600,7 @@ yyreduce: break; case 169: -#line 2184 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2236 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[-3].ConstVal).C->getType() != (yyvsp[-1].ConstVal).C->getType()) error("icmp operand types must match"); @@ -4558,7 +4610,7 @@ yyreduce: break; case 170: -#line 2190 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2242 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[-3].ConstVal).C->getType() != (yyvsp[-1].ConstVal).C->getType()) error("fcmp operand types must match"); @@ -4568,7 +4620,7 @@ yyreduce: break; case 171: -#line 2196 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2248 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-1].ConstVal).C->getType()->isInteger() || cast((yyvsp[-1].ConstVal).C->getType())->getBitWidth() != 8) @@ -4581,7 +4633,7 @@ yyreduce: break; case 172: -#line 2205 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2257 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C)) error("Invalid extractelement operands"); @@ -4591,7 +4643,7 @@ yyreduce: break; case 173: -#line 2211 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2263 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal).C, (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C)) error("Invalid insertelement operands"); @@ -4601,7 +4653,7 @@ yyreduce: break; case 174: -#line 2217 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2269 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal).C, (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C)) error("Invalid shufflevector operands"); @@ -4611,12 +4663,12 @@ yyreduce: break; case 175: -#line 2228 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2280 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { ((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal)); ;} break; case 176: -#line 2229 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2281 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ConstVector) = new std::vector(); (yyval.ConstVector)->push_back((yyvsp[0].ConstVal)); @@ -4624,17 +4676,17 @@ yyreduce: break; case 177: -#line 2238 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2290 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = false; ;} break; case 178: -#line 2239 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2291 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = true; ;} break; case 179: -#line 2251 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2303 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = ParserResult = (yyvsp[0].ModuleVal); CurModule.ModuleDone(); @@ -4642,27 +4694,27 @@ yyreduce: break; case 180: -#line 2260 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2312 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); CurFun.FunctionDone(); ;} break; case 181: -#line 2261 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2313 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); ;} break; case 182: -#line 2262 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2314 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = (yyvsp[-3].ModuleVal); ;} break; case 183: -#line 2263 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2315 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); ;} break; case 184: -#line 2264 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2316 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = CurModule.CurrentModule; // Emit an error if there are any unresolved types left. @@ -4678,7 +4730,7 @@ yyreduce: break; case 185: -#line 2280 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2332 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Eagerly resolve types. This is not an optimization, this is a // requirement that is due to the fact that we could have this: @@ -4702,19 +4754,19 @@ yyreduce: break; case 186: -#line 2300 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2352 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Function prototypes can be in const pool ;} break; case 187: -#line 2302 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2354 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Asm blocks can be in the const pool ;} break; case 188: -#line 2304 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2356 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].ConstVal).C == 0) error("Global value initializer is not a constant"); @@ -4723,14 +4775,14 @@ yyreduce: break; case 189: -#line 2308 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2360 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurGV = 0; ;} break; case 190: -#line 2311 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2363 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[0].TypeVal).T->get(); CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::ExternalLinkage, (yyvsp[-1].BoolVal), Ty, 0); @@ -4739,14 +4791,14 @@ yyreduce: break; case 191: -#line 2315 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2367 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurGV = 0; ;} break; case 192: -#line 2318 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2370 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[0].TypeVal).T->get(); CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::DLLImportLinkage, (yyvsp[-1].BoolVal), Ty, 0); @@ -4755,14 +4807,14 @@ yyreduce: break; case 193: -#line 2322 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2374 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurGV = 0; ;} break; case 194: -#line 2325 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2377 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[0].TypeVal).T->get(); CurGV = @@ -4772,32 +4824,32 @@ yyreduce: break; case 195: -#line 2330 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2382 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurGV = 0; ;} break; case 196: -#line 2333 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2385 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 197: -#line 2335 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2387 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 198: -#line 2337 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2389 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 199: -#line 2342 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2394 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm(); char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true); @@ -4812,24 +4864,24 @@ yyreduce: break; case 200: -#line 2356 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2408 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Endianness) = Module::BigEndian; ;} break; case 201: -#line 2357 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2409 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Endianness) = Module::LittleEndian; ;} break; case 202: -#line 2361 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2413 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurModule.setEndianness((yyvsp[0].Endianness)); ;} break; case 203: -#line 2364 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2416 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].UInt64Val) == 32) CurModule.setPointerSize(Module::Pointer32); @@ -4841,7 +4893,7 @@ yyreduce: break; case 204: -#line 2372 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2424 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4849,7 +4901,7 @@ yyreduce: break; case 205: -#line 2376 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2428 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4857,7 +4909,7 @@ yyreduce: break; case 207: -#line 2387 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2439 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4865,7 +4917,7 @@ yyreduce: break; case 208: -#line 2391 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2443 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4873,17 +4925,17 @@ yyreduce: break; case 209: -#line 2395 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2447 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 213: -#line 2408 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2460 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = 0; ;} break; case 214: -#line 2412 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2464 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[-1].TypeVal).T->get() == Type::VoidTy) error("void typed arguments are invalid"); @@ -4892,7 +4944,7 @@ yyreduce: break; case 215: -#line 2420 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2472 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = (yyvsp[-2].ArgList); (yyval.ArgList)->push_back(*(yyvsp[0].ArgVal)); @@ -4901,7 +4953,7 @@ yyreduce: break; case 216: -#line 2425 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2477 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = new std::vector >(); (yyval.ArgList)->push_back(*(yyvsp[0].ArgVal)); @@ -4910,12 +4962,12 @@ yyreduce: break; case 217: -#line 2433 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2485 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = (yyvsp[0].ArgList); ;} break; case 218: -#line 2434 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2486 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = (yyvsp[-2].ArgList); PATypeInfo VoidTI; @@ -4926,7 +4978,7 @@ yyreduce: break; case 219: -#line 2441 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2493 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = new std::vector >(); PATypeInfo VoidTI; @@ -4937,12 +4989,12 @@ yyreduce: break; case 220: -#line 2448 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2500 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = 0; ;} break; case 221: -#line 2452 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2504 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { UnEscapeLexed((yyvsp[-5].StrVal)); std::string FunctionName((yyvsp[-5].StrVal)); @@ -5049,7 +5101,7 @@ yyreduce: break; case 224: -#line 2562 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2614 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FunctionVal) = CurFun.CurrentFunction; @@ -5060,29 +5112,29 @@ yyreduce: break; case 227: -#line 2576 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2628 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); ;} break; case 229: -#line 2582 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2634 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurFun.Linkage = GlobalValue::DLLImportLinkage; ;} break; case 230: -#line 2583 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2635 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurFun.Linkage = GlobalValue::ExternalWeakLinkage; ;} break; case 231: -#line 2587 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2639 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurFun.isDeclare = true; ;} break; case 232: -#line 2587 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2639 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FunctionVal) = CurFun.CurrentFunction; CurFun.FunctionDone(); @@ -5091,57 +5143,57 @@ yyreduce: break; case 233: -#line 2599 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2651 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = false; ;} break; case 234: -#line 2600 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2652 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = true; ;} break; case 235: -#line 2605 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2657 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val)); ;} break; case 236: -#line 2606 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2658 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val)); ;} break; case 237: -#line 2607 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2659 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal)); ;} break; case 238: -#line 2608 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2660 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create(ConstantInt::get(Type::Int1Ty, true)); ;} break; case 239: -#line 2609 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2661 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create(ConstantInt::get(Type::Int1Ty, false)); ;} break; case 240: -#line 2610 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2662 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::createNull(); ;} break; case 241: -#line 2611 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2663 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::createUndef(); ;} break; case 242: -#line 2612 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2664 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::createZeroInit(); ;} break; case 243: -#line 2613 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2665 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized packed vector const Type *ETy = (*(yyvsp[-1].ConstVector))[0].C->getType(); int NumElements = (yyvsp[-1].ConstVector)->size(); @@ -5166,14 +5218,14 @@ yyreduce: break; case 244: -#line 2634 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2686 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal).C); ;} break; case 245: -#line 2637 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2689 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { char *End = UnEscapeLexed((yyvsp[-2].StrVal), true); std::string AsmStr = std::string((yyvsp[-2].StrVal), End); @@ -5186,17 +5238,17 @@ yyreduce: break; case 246: -#line 2652 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2704 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].SIntVal)); ;} break; case 247: -#line 2653 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2705 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].StrVal)); ;} break; case 250: -#line 2666 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2718 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-1].TypeVal).T->get(); (yyval.ValueVal).S = (yyvsp[-1].TypeVal).S; @@ -5206,21 +5258,21 @@ yyreduce: break; case 251: -#line 2675 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2727 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); ;} break; case 252: -#line 2678 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2730 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Do not allow functions with 0 basic blocks (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); ;} break; case 253: -#line 2687 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2739 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal)); InsertValue((yyvsp[0].TermInstVal)); @@ -5231,7 +5283,7 @@ yyreduce: break; case 254: -#line 2697 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2749 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].InstVal).I) (yyvsp[-1].BasicBlockVal)->getInstList().push_back((yyvsp[0].InstVal).I); @@ -5240,7 +5292,7 @@ yyreduce: break; case 255: -#line 2702 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2754 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BasicBlockVal) = CurBB = getBBVal(ValID::create((int)CurFun.NextBBNum++), true); // Make sure to move the basic block to the correct location in the @@ -5253,7 +5305,7 @@ yyreduce: break; case 256: -#line 2711 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2763 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BasicBlockVal) = CurBB = getBBVal(ValID::create((yyvsp[0].StrVal)), true); // Make sure to move the basic block to the correct location in the @@ -5266,21 +5318,21 @@ yyreduce: break; case 259: -#line 2725 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2777 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Return with a result... (yyval.TermInstVal) = new ReturnInst((yyvsp[0].ValueVal).V); ;} break; case 260: -#line 2728 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2780 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Return with no result... (yyval.TermInstVal) = new ReturnInst(); ;} break; case 261: -#line 2731 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2783 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Unconditional Branch... BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal)); (yyval.TermInstVal) = new BranchInst(tmpBB); @@ -5288,7 +5340,7 @@ yyreduce: break; case 262: -#line 2735 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2787 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { BasicBlock* tmpBBA = getBBVal((yyvsp[-3].ValIDVal)); BasicBlock* tmpBBB = getBBVal((yyvsp[0].ValIDVal)); @@ -5298,7 +5350,7 @@ yyreduce: break; case 263: -#line 2741 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2793 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { Value* tmpVal = getVal((yyvsp[-7].PrimType).T, (yyvsp[-6].ValIDVal)); BasicBlock* tmpBB = getBBVal((yyvsp[-3].ValIDVal)); @@ -5317,7 +5369,7 @@ yyreduce: break; case 264: -#line 2756 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2808 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { Value* tmpVal = getVal((yyvsp[-6].PrimType).T, (yyvsp[-5].ValIDVal)); BasicBlock* tmpBB = getBBVal((yyvsp[-2].ValIDVal)); @@ -5327,7 +5379,7 @@ yyreduce: break; case 265: -#line 2763 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2815 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const PointerType *PFTy; const FunctionType *Ty; @@ -5381,21 +5433,21 @@ yyreduce: break; case 266: -#line 2813 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2865 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TermInstVal) = new UnwindInst(); ;} break; case 267: -#line 2816 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2868 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TermInstVal) = new UnreachableInst(); ;} break; case 268: -#line 2822 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2874 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.JumpTable) = (yyvsp[-5].JumpTable); Constant *V = cast(getExistingValue((yyvsp[-4].PrimType).T, (yyvsp[-3].ValIDVal))); @@ -5409,7 +5461,7 @@ yyreduce: break; case 269: -#line 2832 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2884 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.JumpTable) = new std::vector >(); Constant *V = cast(getExistingValue((yyvsp[-4].PrimType).T, (yyvsp[-3].ValIDVal))); @@ -5423,7 +5475,7 @@ yyreduce: break; case 270: -#line 2845 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2897 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { bool omit = false; if ((yyvsp[-1].StrVal)) @@ -5455,7 +5507,7 @@ yyreduce: break; case 271: -#line 2874 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2926 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Used for PHI nodes (yyval.PHIList).P = new std::list >(); (yyval.PHIList).S = (yyvsp[-5].TypeVal).S; @@ -5467,7 +5519,7 @@ yyreduce: break; case 272: -#line 2882 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2934 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.PHIList) = (yyvsp[-6].PHIList); Value* tmpVal = getVal((yyvsp[-6].PHIList).P->front().first->getType(), (yyvsp[-3].ValIDVal)); @@ -5477,7 +5529,7 @@ yyreduce: break; case 273: -#line 2890 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2942 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Used for call statements, and memory insts... (yyval.ValueList) = new std::vector(); (yyval.ValueList)->push_back((yyvsp[0].ValueVal)); @@ -5485,7 +5537,7 @@ yyreduce: break; case 274: -#line 2894 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2946 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValueList) = (yyvsp[-2].ValueList); (yyvsp[-2].ValueList)->push_back((yyvsp[0].ValueVal)); @@ -5493,26 +5545,26 @@ yyreduce: break; case 276: -#line 2902 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2954 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValueList) = 0; ;} break; case 277: -#line 2906 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2958 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = true; ;} break; case 278: -#line 2909 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2961 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = false; ;} break; case 279: -#line 2915 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2967 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-3].TypeVal).T->get(); if (!Ty->isInteger() && !Ty->isFloatingPoint() && !isa(Ty)) @@ -5533,7 +5585,7 @@ yyreduce: break; case 280: -#line 2932 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2984 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-3].TypeVal).T->get(); if (!Ty->isInteger()) { @@ -5553,7 +5605,7 @@ yyreduce: break; case 281: -#line 2948 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3000 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-3].TypeVal).T->get(); if(isa(Ty)) @@ -5571,7 +5623,7 @@ yyreduce: break; case 282: -#line 2962 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3014 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-3].TypeVal).T->get(); if (isa(Ty)) @@ -5587,7 +5639,7 @@ yyreduce: break; case 283: -#line 2974 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3026 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-3].TypeVal).T->get(); if (isa(Ty)) @@ -5603,7 +5655,7 @@ yyreduce: break; case 284: -#line 2986 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3038 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { warning("Use of obsolete 'not' instruction: Replacing with 'xor"); const Type *Ty = (yyvsp[0].ValueVal).V->getType(); @@ -5618,7 +5670,7 @@ yyreduce: break; case 285: -#line 2997 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3049 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[0].ValueVal).V->getType()->isInteger() || cast((yyvsp[0].ValueVal).V->getType())->getBitWidth() != 8) @@ -5631,7 +5683,7 @@ yyreduce: break; case 286: -#line 3006 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3058 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *DstTy = (yyvsp[0].TypeVal).T->get(); if (!DstTy->isFirstClassType()) @@ -5644,7 +5696,7 @@ yyreduce: break; case 287: -#line 3015 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3067 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].ValueVal).V->getType()->isInteger() || cast((yyvsp[-4].ValueVal).V->getType())->getBitWidth() != 1) @@ -5657,7 +5709,7 @@ yyreduce: break; case 288: -#line 3024 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3076 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[0].TypeVal).T->get(); NewVarArgs = true; @@ -5668,7 +5720,7 @@ yyreduce: break; case 289: -#line 3031 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3083 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* ArgTy = (yyvsp[-2].ValueVal).V->getType(); const Type* DstTy = (yyvsp[0].TypeVal).T->get(); @@ -5693,7 +5745,7 @@ yyreduce: break; case 290: -#line 3052 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3104 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* ArgTy = (yyvsp[-2].ValueVal).V->getType(); const Type* DstTy = (yyvsp[0].TypeVal).T->get(); @@ -5721,7 +5773,7 @@ yyreduce: break; case 291: -#line 3076 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3128 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V)) error("Invalid extractelement operands"); @@ -5731,7 +5783,7 @@ yyreduce: break; case 292: -#line 3082 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3134 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal).V, (yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V)) error("Invalid insertelement operands"); @@ -5741,7 +5793,7 @@ yyreduce: break; case 293: -#line 3088 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3140 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal).V, (yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V)) error("Invalid shufflevector operands"); @@ -5751,7 +5803,7 @@ yyreduce: break; case 294: -#line 3094 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3146 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[0].PHIList).P->front().first->getType(); if (!Ty->isFirstClassType()) @@ -5771,7 +5823,7 @@ yyreduce: break; case 295: -#line 3110 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3162 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Handle the short call syntax @@ -5848,34 +5900,34 @@ yyreduce: break; case 296: -#line 3183 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3235 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.InstVal) = (yyvsp[0].InstVal); ;} break; case 297: -#line 3191 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3243 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValueList) = (yyvsp[0].ValueList); ;} break; case 298: -#line 3192 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3244 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValueList) = new std::vector(); ;} break; case 299: -#line 3196 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3248 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = true; ;} break; case 300: -#line 3197 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3249 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = false; ;} break; case 301: -#line 3201 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3253 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-1].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-1].TypeVal).S; @@ -5885,7 +5937,7 @@ yyreduce: break; case 302: -#line 3207 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3259 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-4].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-4].TypeVal).S; @@ -5895,7 +5947,7 @@ yyreduce: break; case 303: -#line 3213 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3265 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-1].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-1].TypeVal).S; @@ -5905,7 +5957,7 @@ yyreduce: break; case 304: -#line 3219 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3271 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-4].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-4].TypeVal).S; @@ -5915,7 +5967,7 @@ yyreduce: break; case 305: -#line 3225 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3277 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *PTy = (yyvsp[0].ValueVal).V->getType(); if (!isa(PTy)) @@ -5926,7 +5978,7 @@ yyreduce: break; case 306: -#line 3232 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3284 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-1].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-1].TypeVal).S; @@ -5942,7 +5994,7 @@ yyreduce: break; case 307: -#line 3244 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3296 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const PointerType *PTy = dyn_cast((yyvsp[-1].TypeVal).T->get()); if (!PTy) @@ -5960,7 +6012,7 @@ yyreduce: break; case 308: -#line 3258 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3310 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-2].TypeVal).T->get(); if (!isa(Ty)) @@ -5982,7 +6034,7 @@ yyreduce: } /* Line 1126 of yacc.c. */ -#line 5986 "UpgradeParser.tab.c" +#line 6038 "UpgradeParser.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -6250,7 +6302,7 @@ yyreturn: } -#line 3274 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3326 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" int yyerror(const char *ErrorMsg) { diff --git a/tools/llvm-upgrade/UpgradeParser.h.cvs b/tools/llvm-upgrade/UpgradeParser.h.cvs index e49d953b143..1a2e097acea 100644 --- a/tools/llvm-upgrade/UpgradeParser.h.cvs +++ b/tools/llvm-upgrade/UpgradeParser.h.cvs @@ -335,7 +335,7 @@ #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 1339 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1391 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; diff --git a/tools/llvm-upgrade/UpgradeParser.y.cvs b/tools/llvm-upgrade/UpgradeParser.y.cvs index 30d72711153..cec366df592 100644 --- a/tools/llvm-upgrade/UpgradeParser.y.cvs +++ b/tools/llvm-upgrade/UpgradeParser.y.cvs @@ -570,6 +570,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); @@ -577,6 +578,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 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(Ty)) + return STy->getElementType()->isInteger(); + + // Avoid type structure recursion + for (std::vector::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(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(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 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. @@ -605,16 +657,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