diff options
Diffstat (limited to 'lib/Lex/PPDirectives.cpp')
-rw-r--r-- | lib/Lex/PPDirectives.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/Lex/PPDirectives.cpp b/lib/Lex/PPDirectives.cpp index e19eb31335..163dbf413e 100644 --- a/lib/Lex/PPDirectives.cpp +++ b/lib/Lex/PPDirectives.cpp @@ -57,6 +57,19 @@ MacroInfo *Preprocessor::AllocateMacroInfo(SourceLocation L) { return MI; } +MacroInfo *Preprocessor::AllocateDeserializedMacroInfo(SourceLocation L, + unsigned SubModuleID) { + LLVM_STATIC_ASSERT(llvm::AlignOf<MacroInfo>::Alignment >= sizeof(SubModuleID), + "alignment for MacroInfo is less than the ID"); + MacroInfo *MI = + (MacroInfo*)BP.Allocate(sizeof(MacroInfo) + sizeof(SubModuleID), + llvm::AlignOf<MacroInfo>::Alignment); + new (MI) MacroInfo(L); + MI->FromASTFile = true; + MI->setOwningModuleID(SubModuleID); + return MI; +} + MacroDirective *Preprocessor::AllocateMacroDirective(MacroInfo *MI, SourceLocation Loc, bool isImported) { |