summaryrefslogtreecommitdiff
path: root/user/llvm14/scc-insertion.patch
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2022-05-30 04:21:20 -0500
committerZach van Rijn <me@zv.io>2022-10-21 18:34:01 -0500
commit2dc2dec8cf042aee5ab1956244fab817ec8b7856 (patch)
tree17b1dae6217aef5fc7737b4548901735f9e05fd7 /user/llvm14/scc-insertion.patch
parent570f4208b96fcc17d704c8df061b3a9550eb6274 (diff)
downloadpackages-2dc2dec8cf042aee5ab1956244fab817ec8b7856.tar.gz
packages-2dc2dec8cf042aee5ab1956244fab817ec8b7856.tar.bz2
packages-2dc2dec8cf042aee5ab1956244fab817ec8b7856.tar.xz
packages-2dc2dec8cf042aee5ab1956244fab817ec8b7856.zip
user/llvm14: New package
Diffstat (limited to 'user/llvm14/scc-insertion.patch')
-rw-r--r--user/llvm14/scc-insertion.patch33
1 files changed, 33 insertions, 0 deletions
diff --git a/user/llvm14/scc-insertion.patch b/user/llvm14/scc-insertion.patch
new file mode 100644
index 000000000..b2d7d511a
--- /dev/null
+++ b/user/llvm14/scc-insertion.patch
@@ -0,0 +1,33 @@
+From f7e9f4f4c50245d10ca9869a9f8f3d431dfb6948 Mon Sep 17 00:00:00 2001
+From: Warren Ristow <warren_ristow@playstation.sony.com>
+Date: Tue, 14 Jan 2020 10:30:24 -0800
+Subject: [PATCH] SCC: Allow ReplaceNode to safely support insertion
+
+If scc_iterator::ReplaceNode is inserting a new entry in the map,
+rather than replacing an existing entry, the possibility of growing
+the map could cause a failure. This change safely implements the
+insertion.
+
+Reviewed By: probinson
+
+Differential Revision: https://reviews.llvm.org/D72469
+---
+ include/llvm/ADT/SCCIterator.h | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/include/llvm/ADT/SCCIterator.h b/include/llvm/ADT/SCCIterator.h
+index eb1a5d0938cf..1e642b9f75d3 100644
+--- a/include/llvm/ADT/SCCIterator.h
++++ b/include/llvm/ADT/SCCIterator.h
+@@ -134,7 +134,10 @@ class scc_iterator : public iterator_facade_base<
+ /// has been deleted, and \c New is to be used in its place.
+ void ReplaceNode(NodeRef Old, NodeRef New) {
+ assert(nodeVisitNumbers.count(Old) && "Old not in scc_iterator?");
+- nodeVisitNumbers[New] = nodeVisitNumbers[Old];
++ // Do the assignment in two steps, in case 'New' is not yet in the map, and
++ // inserting it causes the map to grow.
++ auto tempVal = nodeVisitNumbers[Old];
++ nodeVisitNumbers[New] = tempVal;
+ nodeVisitNumbers.erase(Old);
+ }
+ };