aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFangrui Song <i@maskray.me>2024-06-19 17:51:32 -0700
committerFangrui Song <i@maskray.me>2024-06-19 17:51:32 -0700
commitf8f4235612b9668bbcbb6a58634fcb756794045e (patch)
treecda02fc55b98d67539ed8eaca8b5e8dba4d282c4
parentfa00e8bb6a14d39e273f85a77308923ad28329f0 (diff)
downloadllvm-f8f4235612b9668bbcbb6a58634fcb756794045e.zip
llvm-f8f4235612b9668bbcbb6a58634fcb756794045e.tar.gz
llvm-f8f4235612b9668bbcbb6a58634fcb756794045e.tar.bz2
[JITLink] Use MapVector to stabilize iteration order
Otherwise LinkGraph::dump output could change (llvm/test/ExecutionEngine/JITLink/x86-64/COFF_pdata_strip.s) when llvm::hash_value(StringRef) changes.
-rw-r--r--llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h b/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h
index 4ce0c8d..8fe53760 100644
--- a/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h
+++ b/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h
@@ -15,6 +15,7 @@
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
+#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/FunctionExtras.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h"
@@ -847,7 +848,7 @@ private:
class LinkGraph {
private:
- using SectionMap = DenseMap<StringRef, std::unique_ptr<Section>>;
+ using SectionMap = MapVector<StringRef, std::unique_ptr<Section>>;
using ExternalSymbolMap = StringMap<Symbol *>;
using AbsoluteSymbolSet = DenseSet<Symbol *>;
using BlockSet = DenseSet<Block *>;
@@ -1543,7 +1544,7 @@ private:
unsigned PointerSize;
llvm::endianness Endianness;
GetEdgeKindNameFunction GetEdgeKindName = nullptr;
- DenseMap<StringRef, std::unique_ptr<Section>> Sections;
+ MapVector<StringRef, std::unique_ptr<Section>> Sections;
ExternalSymbolMap ExternalSymbols;
AbsoluteSymbolSet AbsoluteSymbols;
orc::shared::AllocActions AAs;