diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Lex/PPDirectives.cpp | 12 | ||||
-rw-r--r-- | clang/lib/Lex/Preprocessor.cpp | 1 |
2 files changed, 5 insertions, 8 deletions
diff --git a/clang/lib/Lex/PPDirectives.cpp b/clang/lib/Lex/PPDirectives.cpp index 5a100995b8a..e6b2f8464d6 100644 --- a/clang/lib/Lex/PPDirectives.cpp +++ b/clang/lib/Lex/PPDirectives.cpp @@ -40,7 +40,7 @@ MacroInfo *Preprocessor::AllocateMacroInfo(SourceLocation L) { /// be reused for allocating new MacroInfo objects. void Preprocessor::ReleaseMacroInfo(MacroInfo* MI) { MICache.push_back(MI); - MI->Destroy(); + MI->FreeArgumentList(); } @@ -1097,10 +1097,8 @@ bool Preprocessor::ReadMacroDefinitionArgList(MacroInfo *MI) { switch (Tok.getKind()) { case tok::r_paren: // Found the end of the argument list. - if (Arguments.empty()) { // #define FOO() - MI->setArgumentList(Arguments.begin(), Arguments.end()); + if (Arguments.empty()) // #define FOO() return false; - } // Otherwise we have #define FOO(A,) Diag(Tok, diag::err_pp_expected_ident_in_arg_list); return true; @@ -1117,7 +1115,7 @@ bool Preprocessor::ReadMacroDefinitionArgList(MacroInfo *MI) { // Add the __VA_ARGS__ identifier as an argument. Arguments.push_back(Ident__VA_ARGS__); MI->setIsC99Varargs(); - MI->setArgumentList(Arguments.begin(), Arguments.end()); + MI->setArgumentList(&Arguments[0], Arguments.size()); return false; case tok::eom: // #define X( Diag(Tok, diag::err_pp_missing_rparen_in_macro_def); @@ -1151,7 +1149,7 @@ bool Preprocessor::ReadMacroDefinitionArgList(MacroInfo *MI) { Diag(Tok, diag::err_pp_expected_comma_in_arg_list); return true; case tok::r_paren: // #define X(A) - MI->setArgumentList(Arguments.begin(), Arguments.end()); + MI->setArgumentList(&Arguments[0], Arguments.size()); return false; case tok::comma: // #define X(A, break; @@ -1167,7 +1165,7 @@ bool Preprocessor::ReadMacroDefinitionArgList(MacroInfo *MI) { } MI->setIsGNUVarargs(); - MI->setArgumentList(Arguments.begin(), Arguments.end()); + MI->setArgumentList(&Arguments[0], Arguments.size()); return false; } } diff --git a/clang/lib/Lex/Preprocessor.cpp b/clang/lib/Lex/Preprocessor.cpp index 7b34cb65e36..a85b5db6d60 100644 --- a/clang/lib/Lex/Preprocessor.cpp +++ b/clang/lib/Lex/Preprocessor.cpp @@ -102,7 +102,6 @@ Preprocessor::~Preprocessor() { // destroyed. We still need to run the dstor, however, to free // memory alocated by MacroInfo. I->second->Destroy(); - I->second->~MacroInfo(); I->first->setHasMacroDefinition(false); } |