summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Langmuir <blangmuir@apple.com>2014-02-27 17:23:33 +0000
committerBen Langmuir <blangmuir@apple.com>2014-02-27 17:23:33 +0000
commitc8a71468b7a662f3926d5b0df2e8509013977d65 (patch)
tree3251642f3c9ffb3e3670e364e770e28d84f975a4
parent955fe6f6eda9a740dbaadb7a67a2fa48ceb88049 (diff)
downloadbcm5719-llvm-c8a71468b7a662f3926d5b0df2e8509013977d65.tar.gz
bcm5719-llvm-c8a71468b7a662f3926d5b0df2e8509013977d65.zip
Split FileEntry name vs. isValid
This is a small bit of refactoring in preparation for FileEntry owning the storage for its own name. llvm-svn: 202412
-rw-r--r--clang/include/clang/Basic/FileManager.h8
-rw-r--r--clang/lib/Basic/FileManager.cpp5
-rw-r--r--clang/lib/Frontend/LogDiagnosticPrinter.cpp4
-rw-r--r--clang/lib/Frontend/TextDiagnostic.cpp2
4 files changed, 12 insertions, 7 deletions
diff --git a/clang/include/clang/Basic/FileManager.h b/clang/include/clang/Basic/FileManager.h
index 6e345b20b39..bd85318e2ff 100644
--- a/clang/include/clang/Basic/FileManager.h
+++ b/clang/include/clang/Basic/FileManager.h
@@ -66,6 +66,7 @@ class FileEntry {
llvm::sys::fs::UniqueID UniqueID;
bool IsNamedPipe;
bool InPCH;
+ bool IsValid; // Is this \c FileEntry initialized and valid?
/// \brief The open file, if it is owned by the \p FileEntry.
mutable OwningPtr<vfs::File> File;
@@ -77,11 +78,13 @@ class FileEntry {
public:
FileEntry(llvm::sys::fs::UniqueID UniqueID, bool IsNamedPipe, bool InPCH)
- : Name(0), UniqueID(UniqueID), IsNamedPipe(IsNamedPipe), InPCH(InPCH)
+ : Name(0), UniqueID(UniqueID), IsNamedPipe(IsNamedPipe), InPCH(InPCH),
+ IsValid(false)
{}
// Add a default constructor for use with llvm::StringMap
FileEntry()
- : Name(0), UniqueID(0, 0), IsNamedPipe(false), InPCH(false)
+ : Name(0), UniqueID(0, 0), IsNamedPipe(false), InPCH(false),
+ IsValid(false)
{}
FileEntry(const FileEntry &FE) {
@@ -95,6 +98,7 @@ public:
}
const char *getName() const { return Name; }
+ bool isValid() const { return IsValid; }
off_t getSize() const { return Size; }
unsigned getUID() const { return UID; }
const llvm::sys::fs::UniqueID &getUniqueID() const { return UniqueID; }
diff --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp
index efc08aac96d..d019686b772 100644
--- a/clang/lib/Basic/FileManager.cpp
+++ b/clang/lib/Basic/FileManager.cpp
@@ -314,7 +314,7 @@ const FileEntry *FileManager::getFile(StringRef Filename, bool openFile,
UniqueRealFiles.getFile(Data.UniqueID, Data.IsNamedPipe, Data.InPCH);
NamedFileEnt.setValue(&UFE);
- if (UFE.getName()) { // Already have an entry with this inode, return it.
+ if (UFE.isValid()) { // Already have an entry with this inode, return it.
// If the stat process opened the file, close it to avoid a FD leak.
if (F)
delete F;
@@ -331,6 +331,7 @@ const FileEntry *FileManager::getFile(StringRef Filename, bool openFile,
UFE.Dir = DirInfo;
UFE.UID = NextFileUID++;
UFE.File.reset(F);
+ UFE.IsValid = true;
return &UFE;
}
@@ -380,7 +381,7 @@ FileManager::getVirtualFile(StringRef Filename, off_t Size,
UFE->closeFile();
// If we already have an entry with this inode, return it.
- if (UFE->getName())
+ if (UFE->isValid())
return UFE;
}
diff --git a/clang/lib/Frontend/LogDiagnosticPrinter.cpp b/clang/lib/Frontend/LogDiagnosticPrinter.cpp
index 2189b8658ed..6e09a8180c9 100644
--- a/clang/lib/Frontend/LogDiagnosticPrinter.cpp
+++ b/clang/lib/Frontend/LogDiagnosticPrinter.cpp
@@ -130,7 +130,7 @@ void LogDiagnosticPrinter::HandleDiagnostic(DiagnosticsEngine::Level Level,
FileID FID = SM.getMainFileID();
if (!FID.isInvalid()) {
const FileEntry *FE = SM.getFileEntryForID(FID);
- if (FE && FE->getName())
+ if (FE && FE->isValid())
MainFilename = FE->getName();
}
}
@@ -157,7 +157,7 @@ void LogDiagnosticPrinter::HandleDiagnostic(DiagnosticsEngine::Level Level,
FileID FID = SM.getFileID(Info.getLocation());
if (!FID.isInvalid()) {
const FileEntry *FE = SM.getFileEntryForID(FID);
- if (FE && FE->getName())
+ if (FE && FE->isValid())
DE.Filename = FE->getName();
}
} else {
diff --git a/clang/lib/Frontend/TextDiagnostic.cpp b/clang/lib/Frontend/TextDiagnostic.cpp
index a2dc9537bc0..79f05c6ecd5 100644
--- a/clang/lib/Frontend/TextDiagnostic.cpp
+++ b/clang/lib/Frontend/TextDiagnostic.cpp
@@ -787,7 +787,7 @@ void TextDiagnostic::emitDiagnosticLoc(SourceLocation Loc, PresumedLoc PLoc,
FileID FID = SM.getFileID(Loc);
if (!FID.isInvalid()) {
const FileEntry* FE = SM.getFileEntryForID(FID);
- if (FE && FE->getName()) {
+ if (FE && FE->isValid()) {
OS << FE->getName();
if (FE->isInPCH())
OS << " (in PCH)";
OpenPOWER on IntegriCloud