summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Yanok <ilya.yanok@gmail.com>2021-11-09 21:35:43 +0100
committerTom Stellard <tstellar@redhat.com>2022-01-07 11:26:25 -0800
commit0f915e755eae63df568e62b877dee558b97bbdc2 (patch)
tree6f6043ca3b895bfb7f6dd31ff0d2066a99d63b05
parent33f7aa65f5d77bdec6a528af65ff0fa9033370c2 (diff)
downloadllvm-0f915e755eae63df568e62b877dee558b97bbdc2.tar.gz
[RegAllocFast] Fix nondeterminism in debuginfo generation
Changes from commit 1db137b1859692ae33228c530d4df9f2431b2151 added iteration over hash map that can result in non-deterministic order. Fix that by using a SmallMapVector to preserve the order. Differential Revision: https://reviews.llvm.org/D113468 (cherry picked from commit 3c47c5ca13b8a502de3272e8105548715947b7a8)
-rw-r--r--llvm/lib/CodeGen/RegAllocFast.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/RegAllocFast.cpp b/llvm/lib/CodeGen/RegAllocFast.cpp
index 707161d5a8b0..68920e2e50df 100644
--- a/llvm/lib/CodeGen/RegAllocFast.cpp
+++ b/llvm/lib/CodeGen/RegAllocFast.cpp
@@ -15,6 +15,7 @@
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/IndexedMap.h"
+#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/SparseSet.h"
@@ -432,7 +433,7 @@ void RegAllocFast::spill(MachineBasicBlock::iterator Before, Register VirtReg,
// every definition of it, meaning we can switch all the DBG_VALUEs over
// to just reference the stack slot.
SmallVectorImpl<MachineOperand *> &LRIDbgOperands = LiveDbgValueMap[VirtReg];
- SmallDenseMap<MachineInstr *, SmallVector<const MachineOperand *>>
+ SmallMapVector<MachineInstr *, SmallVector<const MachineOperand *>, 2>
SpilledOperandsMap;
for (MachineOperand *MO : LRIDbgOperands)
SpilledOperandsMap[MO->getParent()].push_back(MO);