mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 05:29:24 +00:00
Small fixes for supporting dll* linkage types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30441 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7ed96abc09
commit
93c2b37340
@ -1675,15 +1675,15 @@ static const yytype_uint16 yyrline[] =
|
||||
1688, 1703, 1724, 1727, 1730, 1730, 1737, 1737, 1745, 1745,
|
||||
1753, 1753, 1761, 1764, 1767, 1771, 1784, 1785, 1787, 1791,
|
||||
1800, 1806, 1808, 1813, 1818, 1827, 1827, 1828, 1828, 1830,
|
||||
1837, 1843, 1850, 1854, 1860, 1865, 1870, 1965, 1965, 1967,
|
||||
1975, 1975, 1977, 1982, 1983, 1984, 1986, 1986, 1996, 2000,
|
||||
2005, 2009, 2013, 2017, 2021, 2025, 2029, 2033, 2037, 2062,
|
||||
2066, 2080, 2084, 2090, 2090, 2096, 2101, 2105, 2114, 2124,
|
||||
2129, 2140, 2152, 2156, 2160, 2164, 2168, 2183, 2188, 2242,
|
||||
2246, 2253, 2262, 2273, 2281, 2287, 2295, 2300, 2307, 2307,
|
||||
2309, 2313, 2320, 2333, 2345, 2356, 2369, 2377, 2385, 2393,
|
||||
2399, 2419, 2442, 2448, 2454, 2460, 2475, 2533, 2540, 2543,
|
||||
2548, 2552, 2559, 2564, 2569, 2574, 2579, 2587, 2598, 2612
|
||||
1837, 1843, 1850, 1854, 1860, 1865, 1870, 1964, 1964, 1966,
|
||||
1974, 1974, 1976, 1981, 1982, 1983, 1985, 1985, 1995, 1999,
|
||||
2004, 2008, 2012, 2016, 2020, 2024, 2028, 2032, 2036, 2061,
|
||||
2065, 2079, 2083, 2089, 2089, 2095, 2100, 2104, 2113, 2123,
|
||||
2128, 2139, 2151, 2155, 2159, 2163, 2167, 2182, 2187, 2241,
|
||||
2245, 2252, 2261, 2272, 2280, 2286, 2294, 2299, 2306, 2306,
|
||||
2308, 2312, 2319, 2332, 2344, 2355, 2368, 2376, 2384, 2392,
|
||||
2398, 2418, 2441, 2447, 2453, 2459, 2474, 2532, 2539, 2542,
|
||||
2547, 2551, 2558, 2563, 2568, 2573, 2578, 2586, 2597, 2611
|
||||
};
|
||||
#endif
|
||||
|
||||
@ -4344,22 +4344,21 @@ yyreduce:
|
||||
for (Function::arg_iterator AI = Fn->arg_begin(), AE = Fn->arg_end();
|
||||
AI != AE; ++AI)
|
||||
AI->setName("");
|
||||
|
||||
if (CurFun.isDeclare) {
|
||||
Fn->setLinkage(CurFun.Linkage);
|
||||
}
|
||||
} else { // Not already defined?
|
||||
Fn = new Function(FT, GlobalValue::ExternalLinkage, FunctionName,
|
||||
CurModule.CurrentModule);
|
||||
|
||||
if (CurFun.isDeclare) {
|
||||
Fn->setLinkage(CurFun.Linkage);
|
||||
}
|
||||
|
||||
InsertValue(Fn, CurModule.Values);
|
||||
}
|
||||
|
||||
CurFun.FunctionStart(Fn);
|
||||
|
||||
if (CurFun.isDeclare) {
|
||||
// If we have declaration, always overwrite linkage. This will allow us to
|
||||
// correctly handle cases, when pointer to function is passed as argument to
|
||||
// another function.
|
||||
Fn->setLinkage(CurFun.Linkage);
|
||||
}
|
||||
Fn->setCallingConv((yyvsp[(1) - (8)].UIntVal));
|
||||
Fn->setAlignment((yyvsp[(8) - (8)].UIntVal));
|
||||
if ((yyvsp[(7) - (8)].StrVal)) {
|
||||
@ -4391,7 +4390,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 169:
|
||||
#line 1967 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 1966 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.FunctionVal) = CurFun.CurrentFunction;
|
||||
|
||||
@ -4402,7 +4401,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 172:
|
||||
#line 1977 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 1976 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
|
||||
CHECK_FOR_ERROR
|
||||
@ -4410,22 +4409,22 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 174:
|
||||
#line 1983 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 1982 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ CurFun.Linkage = GlobalValue::DLLImportLinkage ;}
|
||||
break;
|
||||
|
||||
case 175:
|
||||
#line 1984 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 1983 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ CurFun.Linkage = GlobalValue::DLLImportLinkage ;}
|
||||
break;
|
||||
|
||||
case 176:
|
||||
#line 1986 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 1985 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ CurFun.isDeclare = true; ;}
|
||||
break;
|
||||
|
||||
case 177:
|
||||
#line 1986 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 1985 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.FunctionVal) = CurFun.CurrentFunction;
|
||||
CurFun.FunctionDone();
|
||||
@ -4434,7 +4433,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 178:
|
||||
#line 1996 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 1995 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.BoolVal) = false;
|
||||
CHECK_FOR_ERROR
|
||||
@ -4442,7 +4441,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 179:
|
||||
#line 2000 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 1999 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.BoolVal) = true;
|
||||
CHECK_FOR_ERROR
|
||||
@ -4450,7 +4449,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 180:
|
||||
#line 2005 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2004 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ // A reference to a direct constant
|
||||
(yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].SInt64Val));
|
||||
CHECK_FOR_ERROR
|
||||
@ -4458,7 +4457,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 181:
|
||||
#line 2009 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2008 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].UInt64Val));
|
||||
CHECK_FOR_ERROR
|
||||
@ -4466,7 +4465,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 182:
|
||||
#line 2013 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2012 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ // Perhaps it's an FP constant?
|
||||
(yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].FPVal));
|
||||
CHECK_FOR_ERROR
|
||||
@ -4474,7 +4473,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 183:
|
||||
#line 2017 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2016 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.ValIDVal) = ValID::create(ConstantBool::True);
|
||||
CHECK_FOR_ERROR
|
||||
@ -4482,7 +4481,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 184:
|
||||
#line 2021 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2020 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.ValIDVal) = ValID::create(ConstantBool::False);
|
||||
CHECK_FOR_ERROR
|
||||
@ -4490,7 +4489,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 185:
|
||||
#line 2025 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2024 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.ValIDVal) = ValID::createNull();
|
||||
CHECK_FOR_ERROR
|
||||
@ -4498,7 +4497,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 186:
|
||||
#line 2029 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2028 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.ValIDVal) = ValID::createUndef();
|
||||
CHECK_FOR_ERROR
|
||||
@ -4506,7 +4505,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 187:
|
||||
#line 2033 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2032 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ // A vector zero constant.
|
||||
(yyval.ValIDVal) = ValID::createZeroInit();
|
||||
CHECK_FOR_ERROR
|
||||
@ -4514,7 +4513,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 188:
|
||||
#line 2037 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2036 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ // Nonempty unsized packed vector
|
||||
const Type *ETy = (*(yyvsp[(2) - (3)].ConstVector))[0]->getType();
|
||||
int NumElements = (yyvsp[(2) - (3)].ConstVector)->size();
|
||||
@ -4543,7 +4542,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 189:
|
||||
#line 2062 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2061 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].ConstVal));
|
||||
CHECK_FOR_ERROR
|
||||
@ -4551,7 +4550,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 190:
|
||||
#line 2066 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2065 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
char *End = UnEscapeLexed((yyvsp[(3) - (5)].StrVal), true);
|
||||
std::string AsmStr = std::string((yyvsp[(3) - (5)].StrVal), End);
|
||||
@ -4565,7 +4564,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 191:
|
||||
#line 2080 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2079 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ // Is it an integer reference...?
|
||||
(yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].SIntVal));
|
||||
CHECK_FOR_ERROR
|
||||
@ -4573,7 +4572,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 192:
|
||||
#line 2084 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2083 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ // Is it a named reference...?
|
||||
(yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].StrVal));
|
||||
CHECK_FOR_ERROR
|
||||
@ -4581,7 +4580,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 195:
|
||||
#line 2096 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2095 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.ValueVal) = getVal(*(yyvsp[(1) - (2)].TypeVal), (yyvsp[(2) - (2)].ValIDVal)); delete (yyvsp[(1) - (2)].TypeVal);
|
||||
CHECK_FOR_ERROR
|
||||
@ -4589,7 +4588,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 196:
|
||||
#line 2101 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2100 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
|
||||
CHECK_FOR_ERROR
|
||||
@ -4597,7 +4596,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 197:
|
||||
#line 2105 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2104 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ // Do not allow functions with 0 basic blocks
|
||||
(yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
|
||||
CHECK_FOR_ERROR
|
||||
@ -4605,7 +4604,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 198:
|
||||
#line 2114 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2113 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
setValueName((yyvsp[(3) - (3)].TermInstVal), (yyvsp[(2) - (3)].StrVal));
|
||||
InsertValue((yyvsp[(3) - (3)].TermInstVal));
|
||||
@ -4618,7 +4617,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 199:
|
||||
#line 2124 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2123 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyvsp[(1) - (2)].BasicBlockVal)->getInstList().push_back((yyvsp[(2) - (2)].InstVal));
|
||||
(yyval.BasicBlockVal) = (yyvsp[(1) - (2)].BasicBlockVal);
|
||||
@ -4627,7 +4626,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 200:
|
||||
#line 2129 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2128 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.BasicBlockVal) = CurBB = getBBVal(ValID::create((int)CurFun.NextBBNum++), true);
|
||||
|
||||
@ -4642,7 +4641,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 201:
|
||||
#line 2140 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2139 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.BasicBlockVal) = CurBB = getBBVal(ValID::create((yyvsp[(1) - (1)].StrVal)), true);
|
||||
|
||||
@ -4657,7 +4656,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 202:
|
||||
#line 2152 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2151 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ // Return with a result...
|
||||
(yyval.TermInstVal) = new ReturnInst((yyvsp[(2) - (2)].ValueVal));
|
||||
CHECK_FOR_ERROR
|
||||
@ -4665,7 +4664,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 203:
|
||||
#line 2156 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2155 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ // Return with no result...
|
||||
(yyval.TermInstVal) = new ReturnInst();
|
||||
CHECK_FOR_ERROR
|
||||
@ -4673,7 +4672,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 204:
|
||||
#line 2160 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2159 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ // Unconditional Branch...
|
||||
(yyval.TermInstVal) = new BranchInst(getBBVal((yyvsp[(3) - (3)].ValIDVal)));
|
||||
CHECK_FOR_ERROR
|
||||
@ -4681,7 +4680,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 205:
|
||||
#line 2164 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2163 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.TermInstVal) = new BranchInst(getBBVal((yyvsp[(6) - (9)].ValIDVal)), getBBVal((yyvsp[(9) - (9)].ValIDVal)), getVal(Type::BoolTy, (yyvsp[(3) - (9)].ValIDVal)));
|
||||
CHECK_FOR_ERROR
|
||||
@ -4689,7 +4688,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 206:
|
||||
#line 2168 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2167 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
SwitchInst *S = new SwitchInst(getVal((yyvsp[(2) - (9)].PrimType), (yyvsp[(3) - (9)].ValIDVal)), getBBVal((yyvsp[(6) - (9)].ValIDVal)), (yyvsp[(8) - (9)].JumpTable)->size());
|
||||
(yyval.TermInstVal) = S;
|
||||
@ -4708,7 +4707,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 207:
|
||||
#line 2183 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2182 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
SwitchInst *S = new SwitchInst(getVal((yyvsp[(2) - (8)].PrimType), (yyvsp[(3) - (8)].ValIDVal)), getBBVal((yyvsp[(6) - (8)].ValIDVal)), 0);
|
||||
(yyval.TermInstVal) = S;
|
||||
@ -4717,7 +4716,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 208:
|
||||
#line 2189 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2188 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
const PointerType *PFTy;
|
||||
const FunctionType *Ty;
|
||||
@ -4774,7 +4773,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 209:
|
||||
#line 2242 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2241 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.TermInstVal) = new UnwindInst();
|
||||
CHECK_FOR_ERROR
|
||||
@ -4782,7 +4781,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 210:
|
||||
#line 2246 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2245 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.TermInstVal) = new UnreachableInst();
|
||||
CHECK_FOR_ERROR
|
||||
@ -4790,7 +4789,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 211:
|
||||
#line 2253 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2252 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.JumpTable) = (yyvsp[(1) - (6)].JumpTable);
|
||||
Constant *V = cast<Constant>(getValNonImprovising((yyvsp[(2) - (6)].PrimType), (yyvsp[(3) - (6)].ValIDVal)));
|
||||
@ -4803,7 +4802,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 212:
|
||||
#line 2262 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2261 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >();
|
||||
Constant *V = cast<Constant>(getValNonImprovising((yyvsp[(1) - (5)].PrimType), (yyvsp[(2) - (5)].ValIDVal)));
|
||||
@ -4817,7 +4816,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 213:
|
||||
#line 2273 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2272 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
// Is this definition named?? if so, assign the name...
|
||||
setValueName((yyvsp[(2) - (2)].InstVal), (yyvsp[(1) - (2)].StrVal));
|
||||
@ -4828,7 +4827,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 214:
|
||||
#line 2281 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2280 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ // Used for PHI nodes
|
||||
(yyval.PHIList) = new std::list<std::pair<Value*, BasicBlock*> >();
|
||||
(yyval.PHIList)->push_back(std::make_pair(getVal(*(yyvsp[(1) - (6)].TypeVal), (yyvsp[(3) - (6)].ValIDVal)), getBBVal((yyvsp[(5) - (6)].ValIDVal))));
|
||||
@ -4838,7 +4837,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 215:
|
||||
#line 2287 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2286 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.PHIList) = (yyvsp[(1) - (7)].PHIList);
|
||||
(yyvsp[(1) - (7)].PHIList)->push_back(std::make_pair(getVal((yyvsp[(1) - (7)].PHIList)->front().first->getType(), (yyvsp[(4) - (7)].ValIDVal)),
|
||||
@ -4848,7 +4847,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 216:
|
||||
#line 2295 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2294 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ // Used for call statements, and memory insts...
|
||||
(yyval.ValueList) = new std::vector<Value*>();
|
||||
(yyval.ValueList)->push_back((yyvsp[(1) - (1)].ValueVal));
|
||||
@ -4857,7 +4856,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 217:
|
||||
#line 2300 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2299 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.ValueList) = (yyvsp[(1) - (3)].ValueList);
|
||||
(yyvsp[(1) - (3)].ValueList)->push_back((yyvsp[(3) - (3)].ValueVal));
|
||||
@ -4866,12 +4865,12 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 219:
|
||||
#line 2307 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2306 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{ (yyval.ValueList) = 0; ;}
|
||||
break;
|
||||
|
||||
case 220:
|
||||
#line 2309 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2308 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.BoolVal) = true;
|
||||
CHECK_FOR_ERROR
|
||||
@ -4879,7 +4878,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 221:
|
||||
#line 2313 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2312 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.BoolVal) = false;
|
||||
CHECK_FOR_ERROR
|
||||
@ -4887,7 +4886,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 222:
|
||||
#line 2320 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2319 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
if (!(*(yyvsp[(2) - (5)].TypeVal))->isInteger() && !(*(yyvsp[(2) - (5)].TypeVal))->isFloatingPoint() &&
|
||||
!isa<PackedType>((*(yyvsp[(2) - (5)].TypeVal)).get()))
|
||||
@ -4904,7 +4903,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 223:
|
||||
#line 2333 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2332 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
if (!(*(yyvsp[(2) - (5)].TypeVal))->isIntegral()) {
|
||||
if (!isa<PackedType>((yyvsp[(2) - (5)].TypeVal)->get()) ||
|
||||
@ -4920,7 +4919,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 224:
|
||||
#line 2345 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2344 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
if(isa<PackedType>((*(yyvsp[(2) - (5)].TypeVal)).get())) {
|
||||
GEN_ERROR(
|
||||
@ -4935,7 +4934,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 225:
|
||||
#line 2356 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2355 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
std::cerr << "WARNING: Use of eliminated 'not' instruction:"
|
||||
<< " Replacing with 'xor'.\n";
|
||||
@ -4952,7 +4951,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 226:
|
||||
#line 2369 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2368 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
if ((yyvsp[(4) - (4)].ValueVal)->getType() != Type::UByteTy)
|
||||
GEN_ERROR("Shift amount must be ubyte!");
|
||||
@ -4964,7 +4963,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 227:
|
||||
#line 2377 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2376 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
if (!(yyvsp[(4) - (4)].TypeVal)->get()->isFirstClassType())
|
||||
GEN_ERROR("cast instruction to a non-primitive type: '" +
|
||||
@ -4976,7 +4975,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 228:
|
||||
#line 2385 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2384 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
if ((yyvsp[(2) - (6)].ValueVal)->getType() != Type::BoolTy)
|
||||
GEN_ERROR("select condition must be boolean!");
|
||||
@ -4988,7 +4987,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 229:
|
||||
#line 2393 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2392 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
NewVarArgs = true;
|
||||
(yyval.InstVal) = new VAArgInst((yyvsp[(2) - (4)].ValueVal), *(yyvsp[(4) - (4)].TypeVal));
|
||||
@ -4998,7 +4997,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 230:
|
||||
#line 2399 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2398 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
ObsoleteVarArgs = true;
|
||||
const Type* ArgTy = (yyvsp[(2) - (4)].ValueVal)->getType();
|
||||
@ -5022,7 +5021,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 231:
|
||||
#line 2419 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2418 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
ObsoleteVarArgs = true;
|
||||
const Type* ArgTy = (yyvsp[(2) - (4)].ValueVal)->getType();
|
||||
@ -5049,7 +5048,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 232:
|
||||
#line 2442 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2441 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
if (!ExtractElementInst::isValidOperands((yyvsp[(2) - (4)].ValueVal), (yyvsp[(4) - (4)].ValueVal)))
|
||||
GEN_ERROR("Invalid extractelement operands!");
|
||||
@ -5059,7 +5058,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 233:
|
||||
#line 2448 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2447 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
if (!InsertElementInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)))
|
||||
GEN_ERROR("Invalid insertelement operands!");
|
||||
@ -5069,7 +5068,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 234:
|
||||
#line 2454 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2453 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
if (!ShuffleVectorInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal)))
|
||||
GEN_ERROR("Invalid shufflevector operands!");
|
||||
@ -5079,7 +5078,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 235:
|
||||
#line 2460 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2459 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
const Type *Ty = (yyvsp[(2) - (2)].PHIList)->front().first->getType();
|
||||
if (!Ty->isFirstClassType())
|
||||
@ -5098,7 +5097,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 236:
|
||||
#line 2475 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2474 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
const PointerType *PFTy;
|
||||
const FunctionType *Ty;
|
||||
@ -5160,7 +5159,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 237:
|
||||
#line 2533 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2532 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.InstVal) = (yyvsp[(1) - (1)].InstVal);
|
||||
CHECK_FOR_ERROR
|
||||
@ -5168,7 +5167,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 238:
|
||||
#line 2540 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2539 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.ValueList) = (yyvsp[(2) - (2)].ValueList);
|
||||
CHECK_FOR_ERROR
|
||||
@ -5176,7 +5175,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 239:
|
||||
#line 2543 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2542 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.ValueList) = new std::vector<Value*>();
|
||||
CHECK_FOR_ERROR
|
||||
@ -5184,7 +5183,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 240:
|
||||
#line 2548 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2547 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.BoolVal) = true;
|
||||
CHECK_FOR_ERROR
|
||||
@ -5192,7 +5191,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 241:
|
||||
#line 2552 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2551 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.BoolVal) = false;
|
||||
CHECK_FOR_ERROR
|
||||
@ -5200,7 +5199,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 242:
|
||||
#line 2559 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2558 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.InstVal) = new MallocInst(*(yyvsp[(2) - (3)].TypeVal), 0, (yyvsp[(3) - (3)].UIntVal));
|
||||
delete (yyvsp[(2) - (3)].TypeVal);
|
||||
@ -5209,7 +5208,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 243:
|
||||
#line 2564 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2563 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.InstVal) = new MallocInst(*(yyvsp[(2) - (6)].TypeVal), getVal((yyvsp[(4) - (6)].PrimType), (yyvsp[(5) - (6)].ValIDVal)), (yyvsp[(6) - (6)].UIntVal));
|
||||
delete (yyvsp[(2) - (6)].TypeVal);
|
||||
@ -5218,7 +5217,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 244:
|
||||
#line 2569 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2568 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.InstVal) = new AllocaInst(*(yyvsp[(2) - (3)].TypeVal), 0, (yyvsp[(3) - (3)].UIntVal));
|
||||
delete (yyvsp[(2) - (3)].TypeVal);
|
||||
@ -5227,7 +5226,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 245:
|
||||
#line 2574 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2573 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
(yyval.InstVal) = new AllocaInst(*(yyvsp[(2) - (6)].TypeVal), getVal((yyvsp[(4) - (6)].PrimType), (yyvsp[(5) - (6)].ValIDVal)), (yyvsp[(6) - (6)].UIntVal));
|
||||
delete (yyvsp[(2) - (6)].TypeVal);
|
||||
@ -5236,7 +5235,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 246:
|
||||
#line 2579 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2578 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
if (!isa<PointerType>((yyvsp[(2) - (2)].ValueVal)->getType()))
|
||||
GEN_ERROR("Trying to free nonpointer type " +
|
||||
@ -5247,7 +5246,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 247:
|
||||
#line 2587 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2586 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
if (!isa<PointerType>((yyvsp[(3) - (4)].TypeVal)->get()))
|
||||
GEN_ERROR("Can't load from nonpointer type: " +
|
||||
@ -5262,7 +5261,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 248:
|
||||
#line 2598 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2597 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
const PointerType *PT = dyn_cast<PointerType>((yyvsp[(5) - (6)].TypeVal)->get());
|
||||
if (!PT)
|
||||
@ -5280,7 +5279,7 @@ yyreduce:
|
||||
break;
|
||||
|
||||
case 249:
|
||||
#line 2612 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2611 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
{
|
||||
if (!isa<PointerType>((yyvsp[(2) - (4)].TypeVal)->get()))
|
||||
GEN_ERROR("getelementptr insn requires pointer operand!");
|
||||
@ -5307,7 +5306,7 @@ yyreduce:
|
||||
|
||||
|
||||
/* Line 1267 of yacc.c. */
|
||||
#line 5311 "llvmAsmParser.tab.c"
|
||||
#line 5310 "llvmAsmParser.tab.c"
|
||||
default: break;
|
||||
}
|
||||
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
|
||||
@ -5520,7 +5519,7 @@ yyreturn:
|
||||
}
|
||||
|
||||
|
||||
#line 2636 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
#line 2635 "/home/asl/proj/llvm/src/lib/AsmParser/llvmAsmParser.y"
|
||||
|
||||
|
||||
void llvm::GenerateError(const std::string &message, int LineNo) {
|
||||
|
@ -1917,22 +1917,21 @@ FunctionHeaderH : OptCallingConv TypesV Name '(' ArgList ')'
|
||||
for (Function::arg_iterator AI = Fn->arg_begin(), AE = Fn->arg_end();
|
||||
AI != AE; ++AI)
|
||||
AI->setName("");
|
||||
|
||||
if (CurFun.isDeclare) {
|
||||
Fn->setLinkage(CurFun.Linkage);
|
||||
}
|
||||
} else { // Not already defined?
|
||||
Fn = new Function(FT, GlobalValue::ExternalLinkage, FunctionName,
|
||||
CurModule.CurrentModule);
|
||||
|
||||
if (CurFun.isDeclare) {
|
||||
Fn->setLinkage(CurFun.Linkage);
|
||||
}
|
||||
|
||||
InsertValue(Fn, CurModule.Values);
|
||||
}
|
||||
|
||||
CurFun.FunctionStart(Fn);
|
||||
|
||||
if (CurFun.isDeclare) {
|
||||
// If we have declaration, always overwrite linkage. This will allow us to
|
||||
// correctly handle cases, when pointer to function is passed as argument to
|
||||
// another function.
|
||||
Fn->setLinkage(CurFun.Linkage);
|
||||
}
|
||||
Fn->setCallingConv($1);
|
||||
Fn->setAlignment($8);
|
||||
if ($7) {
|
||||
|
@ -1917,22 +1917,21 @@ FunctionHeaderH : OptCallingConv TypesV Name '(' ArgList ')'
|
||||
for (Function::arg_iterator AI = Fn->arg_begin(), AE = Fn->arg_end();
|
||||
AI != AE; ++AI)
|
||||
AI->setName("");
|
||||
|
||||
if (CurFun.isDeclare) {
|
||||
Fn->setLinkage(CurFun.Linkage);
|
||||
}
|
||||
} else { // Not already defined?
|
||||
Fn = new Function(FT, GlobalValue::ExternalLinkage, FunctionName,
|
||||
CurModule.CurrentModule);
|
||||
|
||||
if (CurFun.isDeclare) {
|
||||
Fn->setLinkage(CurFun.Linkage);
|
||||
}
|
||||
|
||||
InsertValue(Fn, CurModule.Values);
|
||||
}
|
||||
|
||||
CurFun.FunctionStart(Fn);
|
||||
|
||||
if (CurFun.isDeclare) {
|
||||
// If we have declaration, always overwrite linkage. This will allow us to
|
||||
// correctly handle cases, when pointer to function is passed as argument to
|
||||
// another function.
|
||||
Fn->setLinkage(CurFun.Linkage);
|
||||
}
|
||||
Fn->setCallingConv($1);
|
||||
Fn->setAlignment($8);
|
||||
if ($7) {
|
||||
|
@ -204,6 +204,7 @@ public:
|
||||
if (os) {
|
||||
*os << " Function Decl: ";
|
||||
WriteTypeSymbolic(*os,Func->getType(),M);
|
||||
*os <<", Linkage=" << Func->getLinkage();
|
||||
*os << "\n";
|
||||
}
|
||||
}
|
||||
|
@ -1964,13 +1964,13 @@ static bool DarwinGVRequiresExtraLoad(GlobalValue *GV) {
|
||||
(GV->isExternal() && !GV->hasNotBeenReadFromBytecode()));
|
||||
}
|
||||
|
||||
/// WinndowsGVRequiresExtraLoad - true if accessing the GV requires an extra
|
||||
/// WindowsGVRequiresExtraLoad - true if accessing the GV requires an extra
|
||||
/// load. For Windows, dllimported variables (not functions!) are indirect,
|
||||
/// loading the value at address GV rather then the value of GV itself. This
|
||||
/// means that the GlobalAddress must be in the base or index register of the
|
||||
/// address, not the GV offset field.
|
||||
static bool WindowsGVRequiresExtraLoad(GlobalValue *GV) {
|
||||
return (isa<GlobalVariable>((Value*)GV) && GV->hasDLLImportLinkage());
|
||||
return (GV->hasDLLImportLinkage());
|
||||
}
|
||||
|
||||
/// isUndefOrInRange - Op is either an undef node or a ConstantSDNode. Return
|
||||
|
Loading…
Reference in New Issue
Block a user