mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Implement support for varargs functions without any fixed
parameters in the CBE by implicitly adding a fixed argument. This allows eliminating a work-around from DAE. Patch by Sylvere Teissier! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100944 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -694,18 +694,6 @@ bool DAE::RemoveDeadStuffFromFunction(Function *F) {
|
||||
AttrListPtr NewPAL = AttrListPtr::get(AttributesVec.begin(),
|
||||
AttributesVec.end());
|
||||
|
||||
// Work around LLVM bug PR56: the CWriter cannot emit varargs functions which
|
||||
// have zero fixed arguments.
|
||||
//
|
||||
// Note that we apply this hack for a vararg fuction that does not have any
|
||||
// arguments anymore, but did have them before (so don't bother fixing
|
||||
// functions that were already broken wrt CWriter).
|
||||
bool ExtraArgHack = false;
|
||||
if (Params.empty() && FTy->isVarArg() && FTy->getNumParams() != 0) {
|
||||
ExtraArgHack = true;
|
||||
Params.push_back(Type::getInt32Ty(F->getContext()));
|
||||
}
|
||||
|
||||
// Create the new function type based on the recomputed parameters.
|
||||
FunctionType *NFTy = FunctionType::get(NRetTy, Params, FTy->isVarArg());
|
||||
|
||||
@@ -755,9 +743,6 @@ bool DAE::RemoveDeadStuffFromFunction(Function *F) {
|
||||
AttributesVec.push_back(AttributeWithIndex::get(Args.size(), Attrs));
|
||||
}
|
||||
|
||||
if (ExtraArgHack)
|
||||
Args.push_back(UndefValue::get(Type::getInt32Ty(F->getContext())));
|
||||
|
||||
// Push any varargs arguments on the list. Don't forget their attributes.
|
||||
for (CallSite::arg_iterator E = CS.arg_end(); I != E; ++I, ++i) {
|
||||
Args.push_back(*I);
|
||||
|
Reference in New Issue
Block a user