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) | |
[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 acb0df2b15f5..9c1c9905fa29 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; |
