diff options
| -rw-r--r-- | clang/include/clang/Lex/MacroInfo.h | 11 | ||||
| -rw-r--r-- | clang/lib/Lex/PPDirectives.cpp | 6 | ||||
| -rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 3 |
3 files changed, 9 insertions, 11 deletions
diff --git a/clang/include/clang/Lex/MacroInfo.h b/clang/include/clang/Lex/MacroInfo.h index 8b82a5bc931..320645e2380 100644 --- a/clang/include/clang/Lex/MacroInfo.h +++ b/clang/include/clang/Lex/MacroInfo.h @@ -158,17 +158,16 @@ public: /// \brief Set the specified list of identifiers as the argument list for /// this macro. - void setArgumentList(IdentifierInfo *const *List, unsigned NumArgs, + void setArgumentList(ArrayRef<IdentifierInfo *> List, llvm::BumpPtrAllocator &PPAllocator) { assert(ArgumentList == nullptr && NumArguments == 0 && "Argument list already set!"); - if (NumArgs == 0) + if (List.empty()) return; - NumArguments = NumArgs; - ArgumentList = PPAllocator.Allocate<IdentifierInfo *>(NumArgs); - for (unsigned i = 0; i != NumArgs; ++i) - ArgumentList[i] = List[i]; + NumArguments = List.size(); + ArgumentList = PPAllocator.Allocate<IdentifierInfo *>(List.size()); + std::copy(List.begin(), List.end(), ArgumentList); } /// Arguments - The list of arguments for a function-like macro. This can be diff --git a/clang/lib/Lex/PPDirectives.cpp b/clang/lib/Lex/PPDirectives.cpp index cba00a40ce6..fd16168203a 100644 --- a/clang/lib/Lex/PPDirectives.cpp +++ b/clang/lib/Lex/PPDirectives.cpp @@ -1951,7 +1951,7 @@ bool Preprocessor::ReadMacroDefinitionArgList(MacroInfo *MI, Token &Tok) { // Add the __VA_ARGS__ identifier as an argument. Arguments.push_back(Ident__VA_ARGS__); MI->setIsC99Varargs(); - MI->setArgumentList(&Arguments[0], Arguments.size(), BP); + MI->setArgumentList(Arguments, BP); return false; case tok::eod: // #define X( Diag(Tok, diag::err_pp_missing_rparen_in_macro_def); @@ -1985,7 +1985,7 @@ bool Preprocessor::ReadMacroDefinitionArgList(MacroInfo *MI, Token &Tok) { Diag(Tok, diag::err_pp_expected_comma_in_arg_list); return true; case tok::r_paren: // #define X(A) - MI->setArgumentList(&Arguments[0], Arguments.size(), BP); + MI->setArgumentList(Arguments, BP); return false; case tok::comma: // #define X(A, break; @@ -2001,7 +2001,7 @@ bool Preprocessor::ReadMacroDefinitionArgList(MacroInfo *MI, Token &Tok) { } MI->setIsGNUVarargs(); - MI->setArgumentList(&Arguments[0], Arguments.size(), BP); + MI->setArgumentList(Arguments, BP); return false; } } diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 59347de9c17..4838a43e033 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -1450,8 +1450,7 @@ MacroInfo *ASTReader::ReadMacroRecord(ModuleFile &F, uint64_t Offset) { if (isC99VarArgs) MI->setIsC99Varargs(); if (isGNUVarArgs) MI->setIsGNUVarargs(); if (hasCommaPasting) MI->setHasCommaPasting(); - MI->setArgumentList(MacroArgs.data(), MacroArgs.size(), - PP.getPreprocessorAllocator()); + MI->setArgumentList(MacroArgs, PP.getPreprocessorAllocator()); } // Remember that we saw this macro last so that we add the tokens that |

