diff options
author | Fangrui Song <i@maskray.me> | 2023-07-19 22:25:40 -0700 |
---|---|---|
committer | Fangrui Song <i@maskray.me> | 2023-07-19 22:25:40 -0700 |
commit | 75d71800aa384ee58663d892c325572f5588df2a (patch) | |
tree | a14865abf12386347cde49f5f56383823baa767d /llvm/lib/Support/VirtualFileSystem.cpp | |
parent | 721571b21fcf7d2a0db166783debf341d41dab07 (diff) | |
download | llvm-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.cpp | 5 |
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; |