summaryrefslogtreecommitdiffstats
path: root/tools/libclang/Indexing.cpp
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2013-12-22 00:07:40 +0000
committerdim <dim@FreeBSD.org>2013-12-22 00:07:40 +0000
commit952eddef9aff85b1e92626e89baaf7a360e2ac85 (patch)
treedf8df0b0067b381eab470a3b8f28d14a552a6340 /tools/libclang/Indexing.cpp
parentea266cad53e3d49771fa38103913d3ec7a166694 (diff)
downloadFreeBSD-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.cpp44
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) {
OpenPOWER on IntegriCloud