aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/VirtualFileSystem.cpp
diff options
context:
space:
mode:
authorFangrui Song <i@maskray.me>2023-07-19 22:25:40 -0700
committerFangrui Song <i@maskray.me>2023-07-19 22:25:40 -0700
commit75d71800aa384ee58663d892c325572f5588df2a (patch)
treea14865abf12386347cde49f5f56383823baa767d /llvm/lib/Support/VirtualFileSystem.cpp
parent721571b21fcf7d2a0db166783debf341d41dab07 (diff)
downloadllvm-75d71800aa384ee58663d892c325572f5588df2a.zip
llvm-75d71800aa384ee58663d892c325572f5588df2a.tar.gz
llvm-75d71800aa384ee58663d892c325572f5588df2a.tar.bz2
[VirtualFileSystem] Use map to stabilize iteration order
StringMap iteration order is not guaranteed to be deterministic (https://llvm.org/docs/ProgrammersManual.html#llvm-adt-stringmap-h). Tested by `TEST_F(InMemoryFileSystemTest, DirectoryIteration)`.
Diffstat (limited to 'llvm/lib/Support/VirtualFileSystem.cpp')
-rw-r--r--llvm/lib/Support/VirtualFileSystem.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Support/VirtualFileSystem.cpp b/llvm/lib/Support/VirtualFileSystem.cpp
index acb0df2..9c1c990 100644
--- a/llvm/lib/Support/VirtualFileSystem.cpp
+++ b/llvm/lib/Support/VirtualFileSystem.cpp
@@ -43,6 +43,7 @@
#include <cstdint>
#include <iterator>
#include <limits>
+#include <map>
#include <memory>
#include <optional>
#include <string>
@@ -725,7 +726,7 @@ public:
class InMemoryDirectory : public InMemoryNode {
Status Stat;
- llvm::StringMap<std::unique_ptr<InMemoryNode>> Entries;
+ std::map<std::string, std::unique_ptr<InMemoryNode>> Entries;
public:
InMemoryDirectory(Status Stat)
@@ -741,7 +742,7 @@ public:
UniqueID getUniqueID() const { return Stat.getUniqueID(); }
InMemoryNode *getChild(StringRef Name) const {
- auto I = Entries.find(Name);
+ auto I = Entries.find(Name.str());
if (I != Entries.end())
return I->second.get();
return nullptr;