DAE bug fix. Don't lose parameter attributes on vararg arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46113 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng 2008-01-17 04:18:54 +00:00
parent 3de01e10ae
commit b2fc2a330a

View File

@ -590,15 +590,19 @@ void DAE::RemoveDeadArgumentsFromFunction(Function *F) {
ParamAttrsVec.push_back(ParamAttrsWithIndex::get(Args.size(), Attrs));
}
// Reconstruct the ParamAttrsList based on the vector we constructed.
PAL = ParamAttrsList::get(ParamAttrsVec);
if (ExtraArgHack)
Args.push_back(UndefValue::get(Type::Int32Ty));
// Push any varargs arguments on the list
for (; AI != CS.arg_end(); ++AI)
// Push any varargs arguments on the list. Don't forget their attributes.
for (; AI != CS.arg_end(); ++AI) {
Args.push_back(*AI);
uint16_t Attrs = PAL ? PAL->getParamAttrs(index++) : 0;
if (Attrs)
ParamAttrsVec.push_back(ParamAttrsWithIndex::get(Args.size(), Attrs));
}
// Reconstruct the ParamAttrsList based on the vector we constructed.
PAL = ParamAttrsList::get(ParamAttrsVec);
Instruction *New;
if (InvokeInst *II = dyn_cast<InvokeInst>(Call)) {