diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/AsmParser/llvmAsmParser.y | 18 | 
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");      } | 

