diff --git a/tools/llvm-upgrade/UpgradeParser.cpp.cvs b/tools/llvm-upgrade/UpgradeParser.cpp.cvs index d1895a91b24..3ac45504cb3 100644 --- a/tools/llvm-upgrade/UpgradeParser.cpp.cvs +++ b/tools/llvm-upgrade/UpgradeParser.cpp.cvs @@ -865,6 +865,25 @@ static BasicBlock *getBBVal(const ValID &ID, bool isDefinition = false) { // and back patchs after we are done. // +/// This function determines if two function types differ only in their use of +/// the sret parameter attribute in the first argument. If they are identical +/// in all other respects, it returns true. Otherwise, it returns false. +bool FuncTysDifferOnlyBySRet(const FunctionType *F1, + const FunctionType *F2) { + if (F1->getReturnType() != F2->getReturnType() || + F1->getNumParams() != F2->getNumParams() || + F1->getParamAttrs(0) != F2->getParamAttrs(0)) + return false; + unsigned SRetMask = ~unsigned(FunctionType::StructRetAttribute); + for (unsigned i = 0; i < F1->getNumParams(); ++i) { + if (F1->getParamType(i) != F2->getParamType(i) || + unsigned(F1->getParamAttrs(i+1)) & SRetMask != + unsigned(F2->getParamAttrs(i+1)) & SRetMask) + return false; + } + return true; +} + // ResolveDefinitions - If we could not resolve some defs at parsing // time (forward branches, phi functions for loops, etc...) resolve the // defs now... @@ -897,10 +916,26 @@ ResolveDefinitions(std::map<const Type*,ValueList> &LateResolvers, InsertValue(V, *FutureLateResolvers); } else { if (DID.Type == ValID::NameVal) { - error("Reference to an invalid definition: '" +DID.getName()+ - "' of type '" + V->getType()->getDescription() + "'", - PHI->second.second); - return; + // The upgrade of csretcc to sret param attribute may have caused a + // function to not be found because the param attribute changed the + // type of the called function. Detect this situation and insert a + // cast as necessary. + bool fixed = false; + if (const PointerType *PTy = dyn_cast<PointerType>(V->getType())) + if (const FunctionType *FTy = + dyn_cast<FunctionType>(PTy->getElementType())) + if (Function *OtherF = + CurModule.CurrentModule->getNamedFunction(DID.getName())) + if (FuncTysDifferOnlyBySRet(FTy,OtherF->getFunctionType())) { + V->replaceAllUsesWith(ConstantExpr::getBitCast(OtherF, PTy)); + fixed = true; + } + if (!fixed) { + error("Reference to an invalid definition: '" +DID.getName()+ + "' of type '" + V->getType()->getDescription() + "'", + PHI->second.second); + return; + } } else { error("Reference to an invalid definition: #" + itostr(DID.Num) + " of type '" + @@ -1781,7 +1816,7 @@ using namespace llvm; #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 1405 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1440 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE { llvm::Module *ModuleVal; llvm::Function *FunctionVal; @@ -1824,7 +1859,7 @@ typedef union YYSTYPE { llvm::Module::Endianness Endianness; } YYSTYPE; /* Line 196 of yacc.c. */ -#line 1828 "UpgradeParser.tab.c" +#line 1863 "UpgradeParser.tab.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -1836,7 +1871,7 @@ typedef union YYSTYPE { /* Line 219 of yacc.c. */ -#line 1840 "UpgradeParser.tab.c" +#line 1875 "UpgradeParser.tab.c" #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) # define YYSIZE_T __SIZE_TYPE__ @@ -2194,37 +2229,37 @@ static const short int yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short int yyrline[] = { - 0, 1545, 1545, 1546, 1554, 1555, 1565, 1565, 1565, 1565, - 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1569, 1569, 1569, - 1573, 1573, 1573, 1573, 1573, 1573, 1577, 1577, 1578, 1578, - 1579, 1579, 1580, 1580, 1581, 1581, 1585, 1585, 1586, 1586, - 1587, 1587, 1588, 1588, 1589, 1589, 1590, 1590, 1591, 1591, - 1592, 1593, 1596, 1596, 1596, 1596, 1600, 1600, 1600, 1600, - 1600, 1600, 1600, 1601, 1601, 1601, 1601, 1601, 1601, 1607, - 1607, 1607, 1607, 1611, 1611, 1611, 1611, 1615, 1615, 1619, - 1619, 1624, 1627, 1632, 1633, 1634, 1635, 1636, 1637, 1638, - 1639, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1660, - 1661, 1669, 1670, 1678, 1687, 1688, 1695, 1696, 1700, 1704, - 1720, 1721, 1728, 1729, 1736, 1744, 1744, 1744, 1744, 1744, - 1744, 1744, 1745, 1745, 1745, 1745, 1745, 1750, 1754, 1758, - 1763, 1772, 1793, 1799, 1812, 1821, 1825, 1836, 1840, 1853, - 1857, 1864, 1865, 1871, 1878, 1890, 1920, 1933, 1956, 1984, - 2006, 2017, 2039, 2050, 2059, 2064, 2122, 2129, 2137, 2144, - 2151, 2155, 2159, 2168, 2183, 2196, 2205, 2233, 2246, 2255, - 2261, 2267, 2276, 2282, 2288, 2299, 2300, 2309, 2310, 2322, - 2331, 2332, 2333, 2334, 2335, 2351, 2371, 2373, 2375, 2375, - 2382, 2382, 2389, 2389, 2396, 2396, 2404, 2406, 2408, 2413, - 2427, 2428, 2432, 2435, 2443, 2447, 2454, 2458, 2462, 2466, - 2474, 2474, 2478, 2479, 2483, 2491, 2496, 2504, 2505, 2512, - 2519, 2523, 2638, 2638, 2642, 2652, 2652, 2656, 2660, 2662, - 2663, 2667, 2667, 2679, 2680, 2685, 2686, 2687, 2688, 2689, - 2690, 2691, 2692, 2693, 2714, 2717, 2732, 2733, 2738, 2738, - 2746, 2755, 2758, 2767, 2777, 2782, 2791, 2802, 2802, 2805, - 2808, 2811, 2815, 2821, 2836, 2842, 2898, 2901, 2907, 2917, - 2930, 2959, 2967, 2975, 2979, 2986, 2987, 2991, 2994, 3000, - 3017, 3033, 3047, 3059, 3071, 3082, 3091, 3100, 3109, 3116, - 3137, 3161, 3167, 3173, 3179, 3195, 3273, 3281, 3282, 3286, - 3287, 3291, 3297, 3303, 3309, 3315, 3322, 3334, 3348 + 0, 1580, 1580, 1581, 1589, 1590, 1600, 1600, 1600, 1600, + 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1604, 1604, 1604, + 1608, 1608, 1608, 1608, 1608, 1608, 1612, 1612, 1613, 1613, + 1614, 1614, 1615, 1615, 1616, 1616, 1620, 1620, 1621, 1621, + 1622, 1622, 1623, 1623, 1624, 1624, 1625, 1625, 1626, 1626, + 1627, 1628, 1631, 1631, 1631, 1631, 1635, 1635, 1635, 1635, + 1635, 1635, 1635, 1636, 1636, 1636, 1636, 1636, 1636, 1642, + 1642, 1642, 1642, 1646, 1646, 1646, 1646, 1650, 1650, 1654, + 1654, 1659, 1662, 1667, 1668, 1669, 1670, 1671, 1672, 1673, + 1674, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1695, + 1696, 1704, 1705, 1713, 1722, 1723, 1730, 1731, 1735, 1739, + 1755, 1756, 1763, 1764, 1771, 1779, 1779, 1779, 1779, 1779, + 1779, 1779, 1780, 1780, 1780, 1780, 1780, 1785, 1789, 1793, + 1798, 1807, 1828, 1834, 1847, 1856, 1860, 1871, 1875, 1888, + 1892, 1899, 1900, 1906, 1913, 1925, 1955, 1968, 1991, 2019, + 2041, 2052, 2074, 2085, 2094, 2099, 2157, 2164, 2172, 2179, + 2186, 2190, 2194, 2203, 2218, 2231, 2240, 2268, 2281, 2290, + 2296, 2302, 2311, 2317, 2323, 2334, 2335, 2344, 2345, 2357, + 2366, 2367, 2368, 2369, 2370, 2386, 2406, 2408, 2410, 2410, + 2417, 2417, 2424, 2424, 2431, 2431, 2439, 2441, 2443, 2448, + 2462, 2463, 2467, 2470, 2478, 2482, 2489, 2493, 2497, 2501, + 2509, 2509, 2513, 2514, 2518, 2526, 2531, 2539, 2540, 2547, + 2554, 2558, 2673, 2673, 2677, 2687, 2687, 2691, 2695, 2697, + 2698, 2702, 2702, 2714, 2715, 2720, 2721, 2722, 2723, 2724, + 2725, 2726, 2727, 2728, 2749, 2752, 2767, 2768, 2773, 2773, + 2781, 2790, 2793, 2802, 2812, 2817, 2826, 2837, 2837, 2840, + 2843, 2846, 2850, 2856, 2871, 2877, 2933, 2936, 2942, 2952, + 2965, 2994, 3002, 3010, 3014, 3021, 3022, 3026, 3029, 3035, + 3052, 3068, 3082, 3094, 3106, 3117, 3126, 3135, 3144, 3151, + 3172, 3196, 3202, 3208, 3214, 3230, 3308, 3316, 3317, 3321, + 3322, 3326, 3332, 3338, 3344, 3350, 3357, 3369, 3383 }; #endif @@ -3626,7 +3661,7 @@ yyreduce: switch (yyn) { case 3: -#line 1546 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1581 "/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"); @@ -3635,7 +3670,7 @@ yyreduce: break; case 5: -#line 1555 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1590 "/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"); @@ -3644,226 +3679,226 @@ yyreduce: break; case 26: -#line 1577 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1612 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_EQ; ;} break; case 27: -#line 1577 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1612 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_NE; ;} break; case 28: -#line 1578 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1613 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SLT; ;} break; case 29: -#line 1578 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1613 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SGT; ;} break; case 30: -#line 1579 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1614 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SLE; ;} break; case 31: -#line 1579 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1614 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_SGE; ;} break; case 32: -#line 1580 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1615 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_ULT; ;} break; case 33: -#line 1580 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1615 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_UGT; ;} break; case 34: -#line 1581 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1616 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_ULE; ;} break; case 35: -#line 1581 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1616 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.IPred) = ICmpInst::ICMP_UGE; ;} break; case 36: -#line 1585 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1620 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OEQ; ;} break; case 37: -#line 1585 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1620 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ONE; ;} break; case 38: -#line 1586 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1621 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OLT; ;} break; case 39: -#line 1586 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1621 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OGT; ;} break; case 40: -#line 1587 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1622 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OLE; ;} break; case 41: -#line 1587 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1622 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_OGE; ;} break; case 42: -#line 1588 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1623 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ORD; ;} break; case 43: -#line 1588 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1623 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UNO; ;} break; case 44: -#line 1589 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1624 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UEQ; ;} break; case 45: -#line 1589 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1624 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UNE; ;} break; case 46: -#line 1590 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1625 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ULT; ;} break; case 47: -#line 1590 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1625 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UGT; ;} break; case 48: -#line 1591 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1626 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_ULE; ;} break; case 49: -#line 1591 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1626 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_UGE; ;} break; case 50: -#line 1592 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1627 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_TRUE; ;} break; case 51: -#line 1593 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1628 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FPred) = FCmpInst::FCMP_FALSE; ;} break; case 81: -#line 1624 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1659 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = (yyvsp[-1].StrVal); ;} break; case 82: -#line 1627 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1662 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = 0; ;} break; case 83: -#line 1632 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1667 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} break; case 84: -#line 1633 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1668 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} break; case 85: -#line 1634 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1669 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} break; case 86: -#line 1635 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1670 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;} break; case 87: -#line 1636 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1671 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} break; case 88: -#line 1637 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1672 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} break; case 89: -#line 1638 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1673 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} break; case 90: -#line 1639 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1674 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; case 91: -#line 1643 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1678 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurFun.LastCC = (yyval.UIntVal) = OldCallingConv::C; ;} break; case 92: -#line 1644 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1679 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurFun.LastCC = (yyval.UIntVal) = OldCallingConv::C; ;} break; case 93: -#line 1645 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1680 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurFun.LastCC = (yyval.UIntVal) = OldCallingConv::CSRet; ;} break; case 94: -#line 1646 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1681 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurFun.LastCC = (yyval.UIntVal) = OldCallingConv::Fast; ;} break; case 95: -#line 1647 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1682 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurFun.LastCC = (yyval.UIntVal) = OldCallingConv::Cold; ;} break; case 96: -#line 1648 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1683 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurFun.LastCC = (yyval.UIntVal) = OldCallingConv::X86_StdCall; ;} break; case 97: -#line 1649 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1684 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurFun.LastCC = (yyval.UIntVal) = OldCallingConv::X86_FastCall; ;} break; case 98: -#line 1650 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1685 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val)) error("Calling conv too large"); @@ -3872,12 +3907,12 @@ yyreduce: break; case 99: -#line 1660 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1695 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = 0; ;} break; case 100: -#line 1661 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1696 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = (yyvsp[0].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3886,12 +3921,12 @@ yyreduce: break; case 101: -#line 1669 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1704 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = 0; ;} break; case 102: -#line 1670 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1705 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.UIntVal) = (yyvsp[0].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3900,7 +3935,7 @@ yyreduce: break; case 103: -#line 1678 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1713 "/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] == '\\') @@ -3910,27 +3945,27 @@ yyreduce: break; case 104: -#line 1687 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1722 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = 0; ;} break; case 105: -#line 1688 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1723 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = (yyvsp[0].StrVal); ;} break; case 106: -#line 1695 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1730 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" {;} break; case 107: -#line 1696 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1731 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" {;} break; case 108: -#line 1700 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1735 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurGV->setSection((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -3938,7 +3973,7 @@ yyreduce: break; case 109: -#line 1704 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1739 "/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"); @@ -3948,7 +3983,7 @@ yyreduce: break; case 111: -#line 1721 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1756 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder((yyvsp[0].PrimType).T); (yyval.TypeVal).S = Signless; @@ -3956,7 +3991,7 @@ yyreduce: break; case 113: -#line 1729 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1764 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder((yyvsp[0].PrimType).T); (yyval.TypeVal).S = Signless; @@ -3964,7 +3999,7 @@ yyreduce: break; case 114: -#line 1736 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1771 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!UpRefs.empty()) error("Invalid upreference in type: " + (*(yyvsp[0].TypeVal).T)->getDescription()); @@ -3973,7 +4008,7 @@ yyreduce: break; case 127: -#line 1750 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1785 "/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; @@ -3981,7 +4016,7 @@ yyreduce: break; case 128: -#line 1754 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1789 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeVal).T = new PATypeHolder(OpaqueType::get()); (yyval.TypeVal).S = Signless; @@ -3989,7 +4024,7 @@ yyreduce: break; case 129: -#line 1758 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1793 "/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); @@ -3998,7 +4033,7 @@ yyreduce: break; case 130: -#line 1763 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1798 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Type UpReference if ((yyvsp[0].UInt64Val) > (uint64_t)~0U) error("Value out of range"); @@ -4011,7 +4046,7 @@ yyreduce: break; case 131: -#line 1772 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1807 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Function derived type? std::vector<const Type*> Params; for (std::list<llvm::PATypeInfo>::iterator I = (yyvsp[-1].TypeList)->begin(), @@ -4036,7 +4071,7 @@ yyreduce: break; case 132: -#line 1793 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1828 "/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)))); @@ -4046,7 +4081,7 @@ yyreduce: break; case 133: -#line 1799 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1834 "/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)) @@ -4063,7 +4098,7 @@ yyreduce: break; case 134: -#line 1812 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1847 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Structure type? std::vector<const Type*> Elements; for (std::list<llvm::PATypeInfo>::iterator I = (yyvsp[-1].TypeList)->begin(), @@ -4076,7 +4111,7 @@ yyreduce: break; case 135: -#line 1821 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1856 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Empty structure type? (yyval.TypeVal).T = new PATypeHolder(StructType::get(std::vector<const Type*>())); (yyval.TypeVal).S = Signless; @@ -4084,7 +4119,7 @@ yyreduce: break; case 136: -#line 1825 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1860 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Packed Structure type? std::vector<const Type*> Elements; for (std::list<llvm::PATypeInfo>::iterator I = (yyvsp[-2].TypeList)->begin(), @@ -4099,7 +4134,7 @@ yyreduce: break; case 137: -#line 1836 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1871 "/proj/llvm/llvm-1/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; @@ -4107,7 +4142,7 @@ yyreduce: break; case 138: -#line 1840 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1875 "/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"); @@ -4118,7 +4153,7 @@ yyreduce: break; case 139: -#line 1853 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1888 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeList) = new std::list<PATypeInfo>(); (yyval.TypeList)->push_back((yyvsp[0].TypeVal)); @@ -4126,14 +4161,14 @@ yyreduce: break; case 140: -#line 1857 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1892 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back((yyvsp[0].TypeVal)); ;} break; case 142: -#line 1865 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1900 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { PATypeInfo VoidTI; VoidTI.T = new PATypeHolder(Type::VoidTy); @@ -4143,7 +4178,7 @@ yyreduce: break; case 143: -#line 1871 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1906 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeList) = new std::list<PATypeInfo>(); PATypeInfo VoidTI; @@ -4154,14 +4189,14 @@ yyreduce: break; case 144: -#line 1878 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1913 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TypeList) = new std::list<PATypeInfo>(); ;} break; case 145: -#line 1890 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1925 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-3].TypeVal).T->get()); if (ATy == 0) @@ -4195,7 +4230,7 @@ yyreduce: break; case 146: -#line 1920 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1955 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal).T->get()); if (ATy == 0) @@ -4212,7 +4247,7 @@ yyreduce: break; case 147: -#line 1933 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1968 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal).T->get()); if (ATy == 0) @@ -4239,7 +4274,7 @@ yyreduce: break; case 148: -#line 1956 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1991 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Nonempty unsized arr const PackedType *PTy = dyn_cast<PackedType>((yyvsp[-3].TypeVal).T->get()); if (PTy == 0) @@ -4271,7 +4306,7 @@ yyreduce: break; case 149: -#line 1984 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2019 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast<StructType>((yyvsp[-3].TypeVal).T->get()); if (STy == 0) @@ -4297,7 +4332,7 @@ yyreduce: break; case 150: -#line 2006 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2041 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast<StructType>((yyvsp[-2].TypeVal).T->get()); if (STy == 0) @@ -4312,7 +4347,7 @@ yyreduce: break; case 151: -#line 2017 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2052 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast<StructType>((yyvsp[-5].TypeVal).T->get()); if (STy == 0) @@ -4338,7 +4373,7 @@ yyreduce: break; case 152: -#line 2039 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2074 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const StructType *STy = dyn_cast<StructType>((yyvsp[-4].TypeVal).T->get()); if (STy == 0) @@ -4353,7 +4388,7 @@ yyreduce: break; case 153: -#line 2050 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2085 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const PointerType *PTy = dyn_cast<PointerType>((yyvsp[-1].TypeVal).T->get()); if (PTy == 0) @@ -4366,7 +4401,7 @@ yyreduce: break; case 154: -#line 2059 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2094 "/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; @@ -4375,7 +4410,7 @@ yyreduce: break; case 155: -#line 2064 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2099 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const PointerType *Ty = dyn_cast<PointerType>((yyvsp[-1].TypeVal).T->get()); if (Ty == 0) @@ -4437,7 +4472,7 @@ yyreduce: break; case 156: -#line 2122 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2157 "/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"); @@ -4448,7 +4483,7 @@ yyreduce: break; case 157: -#line 2129 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2164 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-1].TypeVal).T->get(); if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty)) @@ -4460,7 +4495,7 @@ yyreduce: break; case 158: -#line 2137 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2172 "/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))) @@ -4471,7 +4506,7 @@ yyreduce: break; case 159: -#line 2144 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2179 "/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))) @@ -4482,7 +4517,7 @@ yyreduce: break; case 160: -#line 2151 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2186 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.ConstVal).C = ConstantInt::get(Type::Int1Ty, true); (yyval.ConstVal).S = Unsigned; @@ -4490,7 +4525,7 @@ yyreduce: break; case 161: -#line 2155 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2190 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Boolean constants (yyval.ConstVal).C = ConstantInt::get(Type::Int1Ty, false); (yyval.ConstVal).S = Unsigned; @@ -4498,7 +4533,7 @@ yyreduce: break; case 162: -#line 2159 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2194 "/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"); @@ -4508,7 +4543,7 @@ yyreduce: break; case 163: -#line 2168 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2203 "/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(); @@ -4527,7 +4562,7 @@ yyreduce: break; case 164: -#line 2183 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2218 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-2].ConstVal).C->getType(); if (!isa<PointerType>(Ty)) @@ -4544,7 +4579,7 @@ yyreduce: break; case 165: -#line 2196 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2231 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-5].ConstVal).C->getType()->isInteger() || cast<IntegerType>((yyvsp[-5].ConstVal).C->getType())->getBitWidth() != 1) @@ -4557,7 +4592,7 @@ yyreduce: break; case 166: -#line 2205 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2240 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-3].ConstVal).C->getType(); if (Ty != (yyvsp[-1].ConstVal).C->getType()) @@ -4589,7 +4624,7 @@ yyreduce: break; case 167: -#line 2233 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2268 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-3].ConstVal).C->getType(); if (Ty != (yyvsp[-1].ConstVal).C->getType()) @@ -4606,7 +4641,7 @@ yyreduce: break; case 168: -#line 2246 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2281 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-3].ConstVal).C->getType(); if (Ty != (yyvsp[-1].ConstVal).C->getType()) @@ -4619,7 +4654,7 @@ yyreduce: break; case 169: -#line 2255 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2290 "/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"); @@ -4629,7 +4664,7 @@ yyreduce: break; case 170: -#line 2261 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2296 "/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"); @@ -4639,7 +4674,7 @@ yyreduce: break; case 171: -#line 2267 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2302 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-1].ConstVal).C->getType()->isInteger() || cast<IntegerType>((yyvsp[-1].ConstVal).C->getType())->getBitWidth() != 8) @@ -4652,7 +4687,7 @@ yyreduce: break; case 172: -#line 2276 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2311 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C)) error("Invalid extractelement operands"); @@ -4662,7 +4697,7 @@ yyreduce: break; case 173: -#line 2282 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2317 "/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"); @@ -4672,7 +4707,7 @@ yyreduce: break; case 174: -#line 2288 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2323 "/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"); @@ -4682,12 +4717,12 @@ yyreduce: break; case 175: -#line 2299 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2334 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { ((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal)); ;} break; case 176: -#line 2300 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2335 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ConstVector) = new std::vector<ConstInfo>(); (yyval.ConstVector)->push_back((yyvsp[0].ConstVal)); @@ -4695,17 +4730,17 @@ yyreduce: break; case 177: -#line 2309 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2344 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = false; ;} break; case 178: -#line 2310 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2345 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = true; ;} break; case 179: -#line 2322 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2357 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = ParserResult = (yyvsp[0].ModuleVal); CurModule.ModuleDone(); @@ -4713,27 +4748,27 @@ yyreduce: break; case 180: -#line 2331 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2366 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); CurFun.FunctionDone(); ;} break; case 181: -#line 2332 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2367 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); ;} break; case 182: -#line 2333 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2368 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = (yyvsp[-3].ModuleVal); ;} break; case 183: -#line 2334 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2369 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); ;} break; case 184: -#line 2335 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2370 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ModuleVal) = CurModule.CurrentModule; // Emit an error if there are any unresolved types left. @@ -4749,7 +4784,7 @@ yyreduce: break; case 185: -#line 2351 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2386 "/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: @@ -4773,19 +4808,19 @@ yyreduce: break; case 186: -#line 2371 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2406 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Function prototypes can be in const pool ;} break; case 187: -#line 2373 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2408 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Asm blocks can be in the const pool ;} break; case 188: -#line 2375 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2410 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].ConstVal).C == 0) error("Global value initializer is not a constant"); @@ -4794,14 +4829,14 @@ yyreduce: break; case 189: -#line 2379 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2414 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurGV = 0; ;} break; case 190: -#line 2382 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2417 "/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); @@ -4810,14 +4845,14 @@ yyreduce: break; case 191: -#line 2386 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2421 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurGV = 0; ;} break; case 192: -#line 2389 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2424 "/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); @@ -4826,14 +4861,14 @@ yyreduce: break; case 193: -#line 2393 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2428 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurGV = 0; ;} break; case 194: -#line 2396 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2431 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[0].TypeVal).T->get(); CurGV = @@ -4843,32 +4878,32 @@ yyreduce: break; case 195: -#line 2401 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2436 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurGV = 0; ;} break; case 196: -#line 2404 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2439 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 197: -#line 2406 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2441 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 198: -#line 2408 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2443 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 199: -#line 2413 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2448 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm(); char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true); @@ -4883,24 +4918,24 @@ yyreduce: break; case 200: -#line 2427 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2462 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Endianness) = Module::BigEndian; ;} break; case 201: -#line 2428 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2463 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.Endianness) = Module::LittleEndian; ;} break; case 202: -#line 2432 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2467 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurModule.setEndianness((yyvsp[0].Endianness)); ;} break; case 203: -#line 2435 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2470 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].UInt64Val) == 32) CurModule.setPointerSize(Module::Pointer32); @@ -4912,7 +4947,7 @@ yyreduce: break; case 204: -#line 2443 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2478 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4920,7 +4955,7 @@ yyreduce: break; case 205: -#line 2447 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2482 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4928,7 +4963,7 @@ yyreduce: break; case 207: -#line 2458 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2493 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4936,7 +4971,7 @@ yyreduce: break; case 208: -#line 2462 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2497 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal)); free((yyvsp[0].StrVal)); @@ -4944,17 +4979,17 @@ yyreduce: break; case 209: -#line 2466 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2501 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { ;} break; case 213: -#line 2479 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2514 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.StrVal) = 0; ;} break; case 214: -#line 2483 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2518 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[-1].TypeVal).T->get() == Type::VoidTy) error("void typed arguments are invalid"); @@ -4963,7 +4998,7 @@ yyreduce: break; case 215: -#line 2491 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2526 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = (yyvsp[-2].ArgList); (yyval.ArgList)->push_back(*(yyvsp[0].ArgVal)); @@ -4972,7 +5007,7 @@ yyreduce: break; case 216: -#line 2496 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2531 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = new std::vector<std::pair<PATypeInfo,char*> >(); (yyval.ArgList)->push_back(*(yyvsp[0].ArgVal)); @@ -4981,12 +5016,12 @@ yyreduce: break; case 217: -#line 2504 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2539 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = (yyvsp[0].ArgList); ;} break; case 218: -#line 2505 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2540 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = (yyvsp[-2].ArgList); PATypeInfo VoidTI; @@ -4997,7 +5032,7 @@ yyreduce: break; case 219: -#line 2512 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2547 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = new std::vector<std::pair<PATypeInfo,char*> >(); PATypeInfo VoidTI; @@ -5008,12 +5043,12 @@ yyreduce: break; case 220: -#line 2519 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2554 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ArgList) = 0; ;} break; case 221: -#line 2523 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2558 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { UnEscapeLexed((yyvsp[-5].StrVal)); std::string FunctionName((yyvsp[-5].StrVal)); @@ -5129,7 +5164,7 @@ yyreduce: break; case 224: -#line 2642 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2677 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FunctionVal) = CurFun.CurrentFunction; @@ -5140,29 +5175,29 @@ yyreduce: break; case 227: -#line 2656 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2691 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); ;} break; case 229: -#line 2662 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2697 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurFun.Linkage = GlobalValue::DLLImportLinkage; ;} break; case 230: -#line 2663 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2698 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurFun.Linkage = GlobalValue::ExternalWeakLinkage; ;} break; case 231: -#line 2667 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2702 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { CurFun.isDeclare = true; ;} break; case 232: -#line 2667 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2702 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FunctionVal) = CurFun.CurrentFunction; CurFun.FunctionDone(); @@ -5171,57 +5206,57 @@ yyreduce: break; case 233: -#line 2679 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2714 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = false; ;} break; case 234: -#line 2680 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2715 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = true; ;} break; case 235: -#line 2685 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2720 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val)); ;} break; case 236: -#line 2686 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2721 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val)); ;} break; case 237: -#line 2687 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2722 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal)); ;} break; case 238: -#line 2688 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2723 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create(ConstantInt::get(Type::Int1Ty, true)); ;} break; case 239: -#line 2689 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2724 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create(ConstantInt::get(Type::Int1Ty, false)); ;} break; case 240: -#line 2690 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2725 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::createNull(); ;} break; case 241: -#line 2691 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2726 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::createUndef(); ;} break; case 242: -#line 2692 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2727 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::createZeroInit(); ;} break; case 243: -#line 2693 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2728 "/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(); @@ -5246,14 +5281,14 @@ yyreduce: break; case 244: -#line 2714 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2749 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal).C); ;} break; case 245: -#line 2717 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2752 "/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); @@ -5266,17 +5301,17 @@ yyreduce: break; case 246: -#line 2732 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2767 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].SIntVal)); ;} break; case 247: -#line 2733 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2768 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[0].StrVal)); ;} break; case 250: -#line 2746 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2781 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-1].TypeVal).T->get(); (yyval.ValueVal).S = (yyvsp[-1].TypeVal).S; @@ -5286,21 +5321,21 @@ yyreduce: break; case 251: -#line 2755 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2790 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.FunctionVal) = (yyvsp[-1].FunctionVal); ;} break; case 252: -#line 2758 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2793 "/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 2767 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2802 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { setValueName((yyvsp[0].TermInstVal), (yyvsp[-1].StrVal)); InsertValue((yyvsp[0].TermInstVal)); @@ -5311,7 +5346,7 @@ yyreduce: break; case 254: -#line 2777 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2812 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if ((yyvsp[0].InstVal).I) (yyvsp[-1].BasicBlockVal)->getInstList().push_back((yyvsp[0].InstVal).I); @@ -5320,7 +5355,7 @@ yyreduce: break; case 255: -#line 2782 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2817 "/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 @@ -5333,7 +5368,7 @@ yyreduce: break; case 256: -#line 2791 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2826 "/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 @@ -5346,21 +5381,21 @@ yyreduce: break; case 259: -#line 2805 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2840 "/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 2808 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2843 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Return with no result... (yyval.TermInstVal) = new ReturnInst(); ;} break; case 261: -#line 2811 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2846 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Unconditional Branch... BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal)); (yyval.TermInstVal) = new BranchInst(tmpBB); @@ -5368,7 +5403,7 @@ yyreduce: break; case 262: -#line 2815 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2850 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { BasicBlock* tmpBBA = getBBVal((yyvsp[-3].ValIDVal)); BasicBlock* tmpBBB = getBBVal((yyvsp[0].ValIDVal)); @@ -5378,7 +5413,7 @@ yyreduce: break; case 263: -#line 2821 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2856 "/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)); @@ -5397,7 +5432,7 @@ yyreduce: break; case 264: -#line 2836 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2871 "/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)); @@ -5407,7 +5442,7 @@ yyreduce: break; case 265: -#line 2843 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2878 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const PointerType *PFTy; const FunctionType *Ty; @@ -5466,21 +5501,21 @@ yyreduce: break; case 266: -#line 2898 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2933 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TermInstVal) = new UnwindInst(); ;} break; case 267: -#line 2901 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2936 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.TermInstVal) = new UnreachableInst(); ;} break; case 268: -#line 2907 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2942 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.JumpTable) = (yyvsp[-5].JumpTable); Constant *V = cast<Constant>(getExistingValue((yyvsp[-4].PrimType).T, (yyvsp[-3].ValIDVal))); @@ -5494,7 +5529,7 @@ yyreduce: break; case 269: -#line 2917 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2952 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >(); Constant *V = cast<Constant>(getExistingValue((yyvsp[-4].PrimType).T, (yyvsp[-3].ValIDVal))); @@ -5508,7 +5543,7 @@ yyreduce: break; case 270: -#line 2930 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2965 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { bool omit = false; if ((yyvsp[-1].StrVal)) @@ -5540,7 +5575,7 @@ yyreduce: break; case 271: -#line 2959 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 2994 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Used for PHI nodes (yyval.PHIList).P = new std::list<std::pair<Value*, BasicBlock*> >(); (yyval.PHIList).S = (yyvsp[-5].TypeVal).S; @@ -5552,7 +5587,7 @@ yyreduce: break; case 272: -#line 2967 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3002 "/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)); @@ -5562,7 +5597,7 @@ yyreduce: break; case 273: -#line 2975 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3010 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Used for call statements, and memory insts... (yyval.ValueList) = new std::vector<ValueInfo>(); (yyval.ValueList)->push_back((yyvsp[0].ValueVal)); @@ -5570,7 +5605,7 @@ yyreduce: break; case 274: -#line 2979 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3014 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValueList) = (yyvsp[-2].ValueList); (yyvsp[-2].ValueList)->push_back((yyvsp[0].ValueVal)); @@ -5578,26 +5613,26 @@ yyreduce: break; case 276: -#line 2987 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3022 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValueList) = 0; ;} break; case 277: -#line 2991 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3026 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = true; ;} break; case 278: -#line 2994 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3029 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = false; ;} break; case 279: -#line 3000 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3035 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-3].TypeVal).T->get(); if (!Ty->isInteger() && !Ty->isFloatingPoint() && !isa<PackedType>(Ty)) @@ -5618,7 +5653,7 @@ yyreduce: break; case 280: -#line 3017 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3052 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-3].TypeVal).T->get(); if (!Ty->isInteger()) { @@ -5638,7 +5673,7 @@ yyreduce: break; case 281: -#line 3033 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3068 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-3].TypeVal).T->get(); if(isa<PackedType>(Ty)) @@ -5656,7 +5691,7 @@ yyreduce: break; case 282: -#line 3047 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3082 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-3].TypeVal).T->get(); if (isa<PackedType>(Ty)) @@ -5672,7 +5707,7 @@ yyreduce: break; case 283: -#line 3059 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3094 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-3].TypeVal).T->get(); if (isa<PackedType>(Ty)) @@ -5688,7 +5723,7 @@ yyreduce: break; case 284: -#line 3071 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3106 "/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(); @@ -5703,7 +5738,7 @@ yyreduce: break; case 285: -#line 3082 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3117 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[0].ValueVal).V->getType()->isInteger() || cast<IntegerType>((yyvsp[0].ValueVal).V->getType())->getBitWidth() != 8) @@ -5716,7 +5751,7 @@ yyreduce: break; case 286: -#line 3091 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3126 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *DstTy = (yyvsp[0].TypeVal).T->get(); if (!DstTy->isFirstClassType()) @@ -5729,7 +5764,7 @@ yyreduce: break; case 287: -#line 3100 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3135 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!(yyvsp[-4].ValueVal).V->getType()->isInteger() || cast<IntegerType>((yyvsp[-4].ValueVal).V->getType())->getBitWidth() != 1) @@ -5742,7 +5777,7 @@ yyreduce: break; case 288: -#line 3109 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3144 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[0].TypeVal).T->get(); NewVarArgs = true; @@ -5753,7 +5788,7 @@ yyreduce: break; case 289: -#line 3116 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3151 "/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(); @@ -5778,7 +5813,7 @@ yyreduce: break; case 290: -#line 3137 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3172 "/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(); @@ -5806,7 +5841,7 @@ yyreduce: break; case 291: -#line 3161 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3196 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V)) error("Invalid extractelement operands"); @@ -5816,7 +5851,7 @@ yyreduce: break; case 292: -#line 3167 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3202 "/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"); @@ -5826,7 +5861,7 @@ yyreduce: break; case 293: -#line 3173 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3208 "/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"); @@ -5836,7 +5871,7 @@ yyreduce: break; case 294: -#line 3179 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3214 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[0].PHIList).P->front().first->getType(); if (!Ty->isFirstClassType()) @@ -5856,7 +5891,7 @@ yyreduce: break; case 295: -#line 3195 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3230 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { // Handle the short call syntax @@ -5938,34 +5973,34 @@ yyreduce: break; case 296: -#line 3273 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3308 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.InstVal) = (yyvsp[0].InstVal); ;} break; case 297: -#line 3281 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3316 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValueList) = (yyvsp[0].ValueList); ;} break; case 298: -#line 3282 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3317 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.ValueList) = new std::vector<ValueInfo>(); ;} break; case 299: -#line 3286 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3321 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = true; ;} break; case 300: -#line 3287 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3322 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { (yyval.BoolVal) = false; ;} break; case 301: -#line 3291 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3326 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-1].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-1].TypeVal).S; @@ -5975,7 +6010,7 @@ yyreduce: break; case 302: -#line 3297 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3332 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-4].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-4].TypeVal).S; @@ -5985,7 +6020,7 @@ yyreduce: break; case 303: -#line 3303 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3338 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-1].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-1].TypeVal).S; @@ -5995,7 +6030,7 @@ yyreduce: break; case 304: -#line 3309 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3344 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *Ty = (yyvsp[-4].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-4].TypeVal).S; @@ -6005,7 +6040,7 @@ yyreduce: break; case 305: -#line 3315 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3350 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type *PTy = (yyvsp[0].ValueVal).V->getType(); if (!isa<PointerType>(PTy)) @@ -6016,7 +6051,7 @@ yyreduce: break; case 306: -#line 3322 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3357 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-1].TypeVal).T->get(); (yyval.InstVal).S = (yyvsp[-1].TypeVal).S; @@ -6032,7 +6067,7 @@ yyreduce: break; case 307: -#line 3334 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3369 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const PointerType *PTy = dyn_cast<PointerType>((yyvsp[-1].TypeVal).T->get()); if (!PTy) @@ -6050,7 +6085,7 @@ yyreduce: break; case 308: -#line 3348 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3383 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" { const Type* Ty = (yyvsp[-2].TypeVal).T->get(); if (!isa<PointerType>(Ty)) @@ -6072,7 +6107,7 @@ yyreduce: } /* Line 1126 of yacc.c. */ -#line 6076 "UpgradeParser.tab.c" +#line 6111 "UpgradeParser.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -6340,7 +6375,7 @@ yyreturn: } -#line 3364 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 3399 "/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 ce034f01221..331d5ae115e 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 1405 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y" +#line 1440 "/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 64a20d167cd..a5079d43e1e 100644 --- a/tools/llvm-upgrade/UpgradeParser.y.cvs +++ b/tools/llvm-upgrade/UpgradeParser.y.cvs @@ -505,6 +505,25 @@ static BasicBlock *getBBVal(const ValID &ID, bool isDefinition = false) { // and back patchs after we are done. // +/// This function determines if two function types differ only in their use of +/// the sret parameter attribute in the first argument. If they are identical +/// in all other respects, it returns true. Otherwise, it returns false. +bool FuncTysDifferOnlyBySRet(const FunctionType *F1, + const FunctionType *F2) { + if (F1->getReturnType() != F2->getReturnType() || + F1->getNumParams() != F2->getNumParams() || + F1->getParamAttrs(0) != F2->getParamAttrs(0)) + return false; + unsigned SRetMask = ~unsigned(FunctionType::StructRetAttribute); + for (unsigned i = 0; i < F1->getNumParams(); ++i) { + if (F1->getParamType(i) != F2->getParamType(i) || + unsigned(F1->getParamAttrs(i+1)) & SRetMask != + unsigned(F2->getParamAttrs(i+1)) & SRetMask) + return false; + } + return true; +} + // ResolveDefinitions - If we could not resolve some defs at parsing // time (forward branches, phi functions for loops, etc...) resolve the // defs now... @@ -537,10 +556,26 @@ ResolveDefinitions(std::map<const Type*,ValueList> &LateResolvers, InsertValue(V, *FutureLateResolvers); } else { if (DID.Type == ValID::NameVal) { - error("Reference to an invalid definition: '" +DID.getName()+ - "' of type '" + V->getType()->getDescription() + "'", - PHI->second.second); - return; + // The upgrade of csretcc to sret param attribute may have caused a + // function to not be found because the param attribute changed the + // type of the called function. Detect this situation and insert a + // cast as necessary. + bool fixed = false; + if (const PointerType *PTy = dyn_cast<PointerType>(V->getType())) + if (const FunctionType *FTy = + dyn_cast<FunctionType>(PTy->getElementType())) + if (Function *OtherF = + CurModule.CurrentModule->getNamedFunction(DID.getName())) + if (FuncTysDifferOnlyBySRet(FTy,OtherF->getFunctionType())) { + V->replaceAllUsesWith(ConstantExpr::getBitCast(OtherF, PTy)); + fixed = true; + } + if (!fixed) { + error("Reference to an invalid definition: '" +DID.getName()+ + "' of type '" + V->getType()->getDescription() + "'", + PHI->second.second); + return; + } } else { error("Reference to an invalid definition: #" + itostr(DID.Num) + " of type '" +