Introduce SourceManager::PredefinesFileID, to allow each checking of whether
a source location came from the predefines buffer. llvm-svn: 174190
This commit is contained in:
parent
4985b8766e
commit
22c22f5f9a
|
@ -348,6 +348,9 @@ class Preprocessor : public RefCountedBase<Preprocessor> {
|
||||||
/// should use from the command line etc.
|
/// should use from the command line etc.
|
||||||
std::string Predefines;
|
std::string Predefines;
|
||||||
|
|
||||||
|
/// \brief The file ID for the preprocessor predefines.
|
||||||
|
FileID PredefinesFileID;
|
||||||
|
|
||||||
/// TokenLexerCache - Cache macro expanders to reduce malloc traffic.
|
/// TokenLexerCache - Cache macro expanders to reduce malloc traffic.
|
||||||
enum { TokenLexerCacheSize = 8 };
|
enum { TokenLexerCacheSize = 8 };
|
||||||
unsigned NumCachedTokenLexers;
|
unsigned NumCachedTokenLexers;
|
||||||
|
@ -503,6 +506,9 @@ public:
|
||||||
/// expansions going on at the time.
|
/// expansions going on at the time.
|
||||||
PreprocessorLexer *getCurrentFileLexer() const;
|
PreprocessorLexer *getCurrentFileLexer() const;
|
||||||
|
|
||||||
|
/// \brief Returns the file ID for the preprocessor predefines.
|
||||||
|
FileID getPredefinesFileID() { return PredefinesFileID; }
|
||||||
|
|
||||||
/// getPPCallbacks/addPPCallbacks - Accessors for preprocessor callbacks.
|
/// getPPCallbacks/addPPCallbacks - Accessors for preprocessor callbacks.
|
||||||
/// Note that this class takes ownership of any PPCallbacks object given to
|
/// Note that this class takes ownership of any PPCallbacks object given to
|
||||||
/// it.
|
/// it.
|
||||||
|
@ -1357,6 +1363,12 @@ private:
|
||||||
/// start getting tokens from it using the PTH cache.
|
/// start getting tokens from it using the PTH cache.
|
||||||
void EnterSourceFileWithPTH(PTHLexer *PL, const DirectoryLookup *Dir);
|
void EnterSourceFileWithPTH(PTHLexer *PL, const DirectoryLookup *Dir);
|
||||||
|
|
||||||
|
/// \brief Set the file ID for the preprocessor predefines.
|
||||||
|
void setPredefinesFileID(FileID FID) {
|
||||||
|
assert(PredefinesFileID.isInvalid() && "PredefinesFileID already set!");
|
||||||
|
PredefinesFileID = FID;
|
||||||
|
}
|
||||||
|
|
||||||
/// IsFileLexer - Returns true if we are lexing from a file and not a
|
/// IsFileLexer - Returns true if we are lexing from a file and not a
|
||||||
/// pragma or a macro.
|
/// pragma or a macro.
|
||||||
static bool IsFileLexer(const Lexer* L, const PreprocessorLexer* P) {
|
static bool IsFileLexer(const Lexer* L, const PreprocessorLexer* P) {
|
||||||
|
|
|
@ -483,6 +483,7 @@ void Preprocessor::EnterMainSourceFile() {
|
||||||
assert(SB && "Cannot create predefined source buffer");
|
assert(SB && "Cannot create predefined source buffer");
|
||||||
FileID FID = SourceMgr.createFileIDForMemBuffer(SB);
|
FileID FID = SourceMgr.createFileIDForMemBuffer(SB);
|
||||||
assert(!FID.isInvalid() && "Could not create FileID for predefines?");
|
assert(!FID.isInvalid() && "Could not create FileID for predefines?");
|
||||||
|
setPredefinesFileID(FID);
|
||||||
|
|
||||||
// Start parsing the predefines.
|
// Start parsing the predefines.
|
||||||
EnterSourceFile(FID, 0, SourceLocation());
|
EnterSourceFile(FID, 0, SourceLocation());
|
||||||
|
|
Loading…
Reference in New Issue