[llvm-commits] [llvm] r45884 - in /llvm/trunk: lib/AsmParser/llvmAsmParser.y test/Assembler/2008-01-11-VarargAttrs.ll
Evan Cheng
evan.cheng at apple.com
Fri Jan 11 14:17:28 PST 2008
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 at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list