From 718593b3f9a30114dbe798c3f7239ce713b75169 Mon Sep 17 00:00:00 2001 From: Kyle Butt Date: Wed, 12 Apr 2017 18:30:32 +0000 Subject: [PATCH] CodeGen: BlockPlacement: Add comment about DenseMap Safety. The use of a DenseMap in precomputeTriangleChains does not cause non-determinism, even though it is iterated over, as the only thing the iteration does is to insert entries into a new DenseMap, which is not iterated. Comment only change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300088 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/MachineBlockPlacement.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/CodeGen/MachineBlockPlacement.cpp b/lib/CodeGen/MachineBlockPlacement.cpp index e23f90be409..4cfc128a8c1 100644 --- a/lib/CodeGen/MachineBlockPlacement.cpp +++ b/lib/CodeGen/MachineBlockPlacement.cpp @@ -1165,6 +1165,9 @@ void MachineBlockPlacement::precomputeTriangleChains() { } } + // Iterating over a DenseMap is safe here, because the only thing in the body + // of the loop is inserting into another DenseMap (ComputedEdges). + // ComputedEdges is never iterated, so this doesn't lead to non-determinism. for (auto &ChainPair : TriangleChainMap) { TriangleChain &Chain = ChainPair.second; // Benchmarking has shown that due to branch correlation duplicating 2 or -- 2.11.0