Thanks Duncan! Evan On Jan 11, 2008, at 1:23 PM, Duncan Sands wrote:
> Author: baldrick > Date: Fri Jan 11 15:23:39 2008 > New Revision: 45884 > > URL: http://llvm.org/viewvc/llvm-project?rev=45884&view=rev > Log: > If there are attributes on the varargs part of a > call, don't discard them. > > Added: > llvm/trunk/test/Assembler/2008-01-11-VarargAttrs.ll > Modified: > llvm/trunk/lib/AsmParser/llvmAsmParser.y > > Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.y > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/ > llvmAsmParser.y?rev=45884&r1=45883&r2=45884&view=diff > > ====================================================================== > ======== > --- llvm/trunk/lib/AsmParser/llvmAsmParser.y (original) > +++ llvm/trunk/lib/AsmParser/llvmAsmParser.y Fri Jan 11 15:23:39 2008 > @@ -2675,8 +2675,15 @@ > > if (Ty->isVarArg()) { > if (I == E) > - for (; ArgI != ArgE; ++ArgI) > + for (; ArgI != ArgE; ++ArgI, ++index) { > Args.push_back(ArgI->Val); // push the remaining varargs > + if (ArgI->Attrs != ParamAttr::None) { > + ParamAttrsWithIndex PAWI; > + PAWI.index = index; > + PAWI.attrs = ArgI->Attrs; > + Attrs.push_back(PAWI); > + } > + } > } else if (I != E || ArgI != ArgE) > GEN_ERROR("Invalid number of parameters detected"); > } > @@ -3006,8 +3013,15 @@ > } > if (Ty->isVarArg()) { > if (I == E) > - for (; ArgI != ArgE; ++ArgI) > + for (; ArgI != ArgE; ++ArgI, ++index) { > Args.push_back(ArgI->Val); // push the remaining varargs > + if (ArgI->Attrs != ParamAttr::None) { > + ParamAttrsWithIndex PAWI; > + PAWI.index = index; > + PAWI.attrs = ArgI->Attrs; > + Attrs.push_back(PAWI); > + } > + } > } else if (I != E || ArgI != ArgE) > GEN_ERROR("Invalid number of parameters detected"); > } > > Added: llvm/trunk/test/Assembler/2008-01-11-VarargAttrs.ll > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/ > 2008-01-11-VarargAttrs.ll?rev=45884&view=auto > > ====================================================================== > ======== > --- llvm/trunk/test/Assembler/2008-01-11-VarargAttrs.ll (added) > +++ llvm/trunk/test/Assembler/2008-01-11-VarargAttrs.ll Fri Jan 11 > 15:23:39 2008 > @@ -0,0 +1,10 @@ > +; RUN: llvm-as < %s | llvm-dis | grep byval | count 2 > + > + %struct = type { } > + > +declare void @foo(...) > + > +define void @bar() { > + call void (...)* @foo(%struct* byval null, %struct* byval null ) > + ret void > +} > > > _______________________________________________ > llvm-commits mailing list > llvm-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits