]> granicus.if.org Git - clang/commitdiff
Allow force updating the NumCreatedFIDsForFileID.
authorVassil Vassilev <v.g.vassilev@gmail.com>
Tue, 20 Nov 2018 13:53:20 +0000 (13:53 +0000)
committerVassil Vassilev <v.g.vassilev@gmail.com>
Tue, 20 Nov 2018 13:53:20 +0000 (13:53 +0000)
Our internal clients implement parsing cache based on FileID. In order for the
Preprocessor to reenter the cached FileID it needs to reset its
NumCreatedFIDsForFileID.

Differential Revision: https://reviews.llvm.org/D51295

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@347304 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/SourceManager.h

index 914225a5c234a818e38ceac74109ac2bce6b0abd..dcc4a37e239cd4a0253e2eea8b8a332bfa935792 100644 (file)
@@ -1024,13 +1024,14 @@ public:
 
   /// Set the number of FileIDs (files and macros) that were created
   /// during preprocessing of \p FID, including it.
-  void setNumCreatedFIDsForFileID(FileID FID, unsigned NumFIDs) const {
+  void setNumCreatedFIDsForFileID(FileID FID, unsigned NumFIDs,
+                                  bool Force = false) const {
     bool Invalid = false;
     const SrcMgr::SLocEntry &Entry = getSLocEntry(FID, &Invalid);
     if (Invalid || !Entry.isFile())
       return;
 
-    assert(Entry.getFile().NumCreatedFIDs == 0 && "Already set!");
+    assert((Force || Entry.getFile().NumCreatedFIDs == 0) && "Already set!");
     const_cast<SrcMgr::FileInfo &>(Entry.getFile()).NumCreatedFIDs = NumFIDs;
   }