diff options
author | dim <dim@FreeBSD.org> | 2013-12-22 00:07:40 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2013-12-22 00:07:40 +0000 |
commit | 952eddef9aff85b1e92626e89baaf7a360e2ac85 (patch) | |
tree | df8df0b0067b381eab470a3b8f28d14a552a6340 /tools/libclang/Indexing.cpp | |
parent | ea266cad53e3d49771fa38103913d3ec7a166694 (diff) | |
download | FreeBSD-src-952eddef9aff85b1e92626e89baaf7a360e2ac85.zip FreeBSD-src-952eddef9aff85b1e92626e89baaf7a360e2ac85.tar.gz |
Vendor import of clang release_34 branch r197841 (effectively, 3.4 RC3):
https://llvm.org/svn/llvm-project/cfe/branches/release_34@197841
Diffstat (limited to 'tools/libclang/Indexing.cpp')
-rw-r--r-- | tools/libclang/Indexing.cpp | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/tools/libclang/Indexing.cpp b/tools/libclang/Indexing.cpp index 15786ac..99fcdb6 100644 --- a/tools/libclang/Indexing.cpp +++ b/tools/libclang/Indexing.cpp @@ -31,6 +31,7 @@ #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Mutex.h" #include "llvm/Support/MutexGuard.h" +#include <cstdio> using namespace clang; using namespace cxtu; @@ -88,25 +89,23 @@ public: /// #3 is identified as the location of "#ifdef CAKE" /// class PPRegion { - ino_t ino; + llvm::sys::fs::UniqueID UniqueID; time_t ModTime; - dev_t dev; unsigned Offset; public: - PPRegion() : ino(), ModTime(), dev(), Offset() {} - PPRegion(dev_t dev, ino_t ino, unsigned offset, time_t modTime) - : ino(ino), ModTime(modTime), dev(dev), Offset(offset) {} + PPRegion() : UniqueID(0, 0), ModTime(), Offset() {} + PPRegion(llvm::sys::fs::UniqueID UniqueID, unsigned offset, time_t modTime) + : UniqueID(UniqueID), ModTime(modTime), Offset(offset) {} - ino_t getIno() const { return ino; } - dev_t getDev() const { return dev; } + const llvm::sys::fs::UniqueID &getUniqueID() const { return UniqueID; } unsigned getOffset() const { return Offset; } time_t getModTime() const { return ModTime; } bool isInvalid() const { return *this == PPRegion(); } friend bool operator==(const PPRegion &lhs, const PPRegion &rhs) { - return lhs.dev == rhs.dev && lhs.ino == rhs.ino && - lhs.Offset == rhs.Offset && lhs.ModTime == rhs.ModTime; + return lhs.UniqueID == rhs.UniqueID && lhs.Offset == rhs.Offset && + lhs.ModTime == rhs.ModTime; } }; @@ -122,16 +121,17 @@ namespace llvm { template <> struct DenseMapInfo<PPRegion> { static inline PPRegion getEmptyKey() { - return PPRegion(0, 0, unsigned(-1), 0); + return PPRegion(llvm::sys::fs::UniqueID(0, 0), unsigned(-1), 0); } static inline PPRegion getTombstoneKey() { - return PPRegion(0, 0, unsigned(-2), 0); + return PPRegion(llvm::sys::fs::UniqueID(0, 0), unsigned(-2), 0); } static unsigned getHashValue(const PPRegion &S) { llvm::FoldingSetNodeID ID; - ID.AddInteger(S.getIno()); - ID.AddInteger(S.getDev()); + const llvm::sys::fs::UniqueID &UniqueID = S.getUniqueID(); + ID.AddInteger(UniqueID.getFile()); + ID.AddInteger(UniqueID.getDevice()); ID.AddInteger(S.getOffset()); ID.AddInteger(S.getModTime()); return ID.ComputeHash(); @@ -208,9 +208,10 @@ private: PPRegion getRegion(SourceLocation Loc, FileID FID, const FileEntry *FE) { SourceLocation RegionLoc = PPRec.findConditionalDirectiveRegionLoc(Loc); if (RegionLoc.isInvalid()) { - if (isParsedOnceInclude(FE)) - return PPRegion(FE->getDevice(), FE->getInode(), 0, - FE->getModificationTime()); + if (isParsedOnceInclude(FE)) { + const llvm::sys::fs::UniqueID &ID = FE->getUniqueID(); + return PPRegion(ID, 0, FE->getModificationTime()); + } return PPRegion(); } @@ -221,14 +222,15 @@ private: llvm::tie(RegionFID, RegionOffset) = SM.getDecomposedLoc(RegionLoc); if (RegionFID != FID) { - if (isParsedOnceInclude(FE)) - return PPRegion(FE->getDevice(), FE->getInode(), 0, - FE->getModificationTime()); + if (isParsedOnceInclude(FE)) { + const llvm::sys::fs::UniqueID &ID = FE->getUniqueID(); + return PPRegion(ID, 0, FE->getModificationTime()); + } return PPRegion(); } - return PPRegion(FE->getDevice(), FE->getInode(), RegionOffset, - FE->getModificationTime()); + const llvm::sys::fs::UniqueID &ID = FE->getUniqueID(); + return PPRegion(ID, RegionOffset, FE->getModificationTime()); } bool isParsedOnceInclude(const FileEntry *FE) { |