Skip to content

Commit 3d75c7c

Browse files
authored
[CodeLayout] Fixing initialization of empty ranges (#68917)
Fixing libc++'s consistency checks, by eliminating ranges of singular iterators.
1 parent 05bde3c commit 3d75c7c

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

llvm/lib/Transforms/Utils/CodeLayout.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -476,13 +476,16 @@ void ChainT::mergeEdges(ChainT *Other) {
476476
}
477477

478478
using NodeIter = std::vector<NodeT *>::const_iterator;
479+
static std::vector<NodeT *> EmptyList;
479480

480481
/// A wrapper around three concatenated vectors (chains) of nodes; it is used
481482
/// to avoid extra instantiation of the vectors.
482483
struct MergedNodesT {
483-
MergedNodesT(NodeIter Begin1, NodeIter End1, NodeIter Begin2 = NodeIter(),
484-
NodeIter End2 = NodeIter(), NodeIter Begin3 = NodeIter(),
485-
NodeIter End3 = NodeIter())
484+
MergedNodesT(NodeIter Begin1, NodeIter End1,
485+
NodeIter Begin2 = EmptyList.begin(),
486+
NodeIter End2 = EmptyList.end(),
487+
NodeIter Begin3 = EmptyList.begin(),
488+
NodeIter End3 = EmptyList.end())
486489
: Begin1(Begin1), End1(End1), Begin2(Begin2), End2(End2), Begin3(Begin3),
487490
End3(End3) {}
488491

0 commit comments

Comments
 (0)