diff options
| author | Duncan Sands <baldrick@free.fr> | 2008-01-11 21:23:39 +0000 |
|---|---|---|
| committer | Duncan Sands <baldrick@free.fr> | 2008-01-11 21:23:39 +0000 |
| commit | 6c3314b3a48e3c7af2ef19c89e534926a92eccb2 (patch) | |
| tree | 1c84cb52e66a517aaede7bf3712d53e4022e12b1 /lib | |
| parent | abc582439f2062fa6b2bacc09af61dd8d033e462 (diff) | |
| download | external_llvm-6c3314b3a48e3c7af2ef19c89e534926a92eccb2.zip external_llvm-6c3314b3a48e3c7af2ef19c89e534926a92eccb2.tar.gz external_llvm-6c3314b3a48e3c7af2ef19c89e534926a92eccb2.tar.bz2 | |
If there are attributes on the varargs part of a
call, don't discard them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45884 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/AsmParser/llvmAsmParser.y | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index 9f12b3e..9674bba 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -2675,8 +2675,15 @@ BBTerminatorInst : RET ResolvedVal { // Return with a result... 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 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { } 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"); } |
