summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2008-01-11 21:23:39 +0000
committerDuncan Sands <baldrick@free.fr>2008-01-11 21:23:39 +0000
commit7e46c50c6a10c181a3da479fa2ffbf7e4e37b6bf (patch)
tree8fe6f7c6d6ecc22ba9b40575db1505fca7f7d089 /llvm/lib
parenta8f67e04bdb2c7b38fa0939a625049f049b914bc (diff)
downloadbcm5719-llvm-7e46c50c6a10c181a3da479fa2ffbf7e4e37b6bf.tar.gz
bcm5719-llvm-7e46c50c6a10c181a3da479fa2ffbf7e4e37b6bf.zip
If there are attributes on the varargs part of a
call, don't discard them. llvm-svn: 45884
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/AsmParser/llvmAsmParser.y18
1 files changed, 16 insertions, 2 deletions
diff --git a/llvm/lib/AsmParser/llvmAsmParser.y b/llvm/lib/AsmParser/llvmAsmParser.y
index 9f12b3eaa39..9674bba4d53 100644
--- a/llvm/lib/AsmParser/llvmAsmParser.y
+++ b/llvm/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");
}
OpenPOWER on IntegriCloud