mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-06 02:47:20 +00:00
ArgumentPromotion: Remove ancient workaround for a bug in the C backend.
Fun fact: The CBE learned how to deal with this situation before it was removed. llvm-svn: 164918
This commit is contained in:
parent
751f9472f2
commit
46b4cbd0a3
@ -592,14 +592,6 @@ CallGraphNode *ArgPromotion::DoPromotion(Function *F,
|
||||
|
||||
Type *RetTy = FTy->getReturnType();
|
||||
|
||||
// Work around LLVM bug PR56: the CWriter cannot emit varargs functions which
|
||||
// have zero fixed arguments.
|
||||
bool ExtraArgHack = false;
|
||||
if (Params.empty() && FTy->isVarArg()) {
|
||||
ExtraArgHack = true;
|
||||
Params.push_back(Type::getInt32Ty(F->getContext()));
|
||||
}
|
||||
|
||||
// Construct the new function type using the new arguments.
|
||||
FunctionType *NFTy = FunctionType::get(RetTy, Params, FTy->isVarArg());
|
||||
|
||||
@ -711,9 +703,6 @@ CallGraphNode *ArgPromotion::DoPromotion(Function *F,
|
||||
}
|
||||
}
|
||||
|
||||
if (ExtraArgHack)
|
||||
Args.push_back(Constant::getNullValue(Type::getInt32Ty(F->getContext())));
|
||||
|
||||
// Push any varargs arguments on the list.
|
||||
for (; AI != CS.arg_end(); ++AI, ++ArgIndex) {
|
||||
Args.push_back(*AI);
|
||||
@ -870,16 +859,9 @@ CallGraphNode *ArgPromotion::DoPromotion(Function *F,
|
||||
}
|
||||
|
||||
// Increment I2 past all of the arguments added for this promoted pointer.
|
||||
for (unsigned i = 0, e = ArgIndices.size(); i != e; ++i)
|
||||
++I2;
|
||||
std::advance(I2, ArgIndices.size());
|
||||
}
|
||||
|
||||
// Notify the alias analysis implementation that we inserted a new argument.
|
||||
if (ExtraArgHack)
|
||||
AA.copyValue(Constant::getNullValue(Type::getInt32Ty(F->getContext())),
|
||||
NF->arg_begin());
|
||||
|
||||
|
||||
// Tell the alias analysis that the old function is about to disappear.
|
||||
AA.replaceWithNewValue(F, NF);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user