From 4fb517bea8489c69752946f87a0f64b424afb87a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 29 Jun 2006 06:34:53 +0000 Subject: [PATCH] Give tokens from the scratch buffer correct source locations. llvm-svn: 38591 --- clang/Lex/Preprocessor.cpp | 1 + clang/Lex/ScratchBuffer.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/clang/Lex/Preprocessor.cpp b/clang/Lex/Preprocessor.cpp index 0e01103884b0..e68fbcbfda60 100644 --- a/clang/Lex/Preprocessor.cpp +++ b/clang/Lex/Preprocessor.cpp @@ -531,6 +531,7 @@ void Preprocessor::ExpandBuiltinMacro(LexerToken &Tok, MacroInfo *MI) { Tok.SetKind(tok::numeric_constant); Tok.SetLength(Length); Tok.SetLocation(ScratchBuf->getToken(TmpBuffer, Length, Tok.getLocation())); + Tok.SetIdentifierInfo(0); Tok.ClearFlag(LexerToken::NeedsCleaning); return; } else { diff --git a/clang/Lex/ScratchBuffer.cpp b/clang/Lex/ScratchBuffer.cpp index 6b7ef95cd736..d0138530dbe2 100644 --- a/clang/Lex/ScratchBuffer.cpp +++ b/clang/Lex/ScratchBuffer.cpp @@ -39,13 +39,14 @@ SourceLocation ScratchBuffer::getToken(const char *Buf, unsigned Len, // Copy the token data into the buffer. memcpy(CurBuffer+BytesUsed, Buf, Len); + unsigned InstantiationFileID = + SourceMgr.createFileIDForMacroExp(SourceLoc, FileID); + // Create the initial SourceLocation. - SourceLocation Loc(FileID, BytesUsed); + SourceLocation Loc(InstantiationFileID, BytesUsed); assert(BytesUsed < (1 << SourceLocation::FilePosBits) && "Out of range file position!"); - // FIXME: Merge SourceLoc into it. - // Remember that we used these bytes. BytesUsed += Len;