diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-09-19 20:40:08 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-09-19 20:40:08 +0000 |
commit | 5a4374812c56aa60672e291b07e14d3696bbb5a6 (patch) | |
tree | 34f30e975584e8c3cee957765eb363165ed9b8d4 | |
parent | aa6edaeb35e02a07bd4840c0159900754f083ce5 (diff) |
Make ASTReader/ASTWriter friends of SourceLocation. They already
depend on internal knowledge of SourceLocation.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140056 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Basic/SourceLocation.h | 2 | ||||
-rw-r--r-- | include/clang/Serialization/ASTReader.h | 12 |
2 files changed, 6 insertions, 8 deletions
diff --git a/include/clang/Basic/SourceLocation.h b/include/clang/Basic/SourceLocation.h index f3b5f26649..51734ef748 100644 --- a/include/clang/Basic/SourceLocation.h +++ b/include/clang/Basic/SourceLocation.h @@ -84,6 +84,8 @@ private: class SourceLocation { unsigned ID; friend class SourceManager; + friend class ASTReader; + friend class ASTWriter; enum { MacroIDBit = 1U << 31 }; diff --git a/include/clang/Serialization/ASTReader.h b/include/clang/Serialization/ASTReader.h index ce980f775b..1a4603d53a 100644 --- a/include/clang/Serialization/ASTReader.h +++ b/include/clang/Serialization/ASTReader.h @@ -1143,15 +1143,11 @@ public: /// \brief Read a source location from raw form. SourceLocation ReadSourceLocation(Module &Module, unsigned Raw) const { - unsigned Flag = Raw & (1U << 31); - unsigned Offset = Raw & ~(1U << 31); - assert(Module.SLocRemap.find(Offset) != Module.SLocRemap.end() && + SourceLocation Loc = SourceLocation::getFromRawEncoding(Raw); + assert(Module.SLocRemap.find(Loc.getOffset()) != Module.SLocRemap.end() && "Cannot find offset to remap."); - int Remap = Module.SLocRemap.find(Offset)->second; - Offset += Remap; - assert((Offset & (1U << 31)) == 0 && - "Bad offset in reading source location"); - return SourceLocation::getFromRawEncoding(Offset | Flag); + int Remap = Module.SLocRemap.find(Loc.getOffset())->second; + return Loc.getFileLocWithOffset(Remap); } /// \brief Read a source location. |