[tor-commits] [tor-browser-build/master] Bug 40004: Adapt Rust project for Firefox 78 ESR
sysrqb at torproject.org
sysrqb at torproject.org
Fri Jul 17 03:48:22 UTC 2020
commit d78cf48aa087db33bdf7a16c833a06d49551093e
Author: Georg Koppen <gk at torproject.org>
Date: Sun Jun 14 11:02:03 2020 +0000
Bug 40004: Adapt Rust project for Firefox 78 ESR
---
projects/rust/42574.patch | 236 ----------------------------------------------
projects/rust/build | 1 -
projects/rust/config | 5 +-
3 files changed, 2 insertions(+), 240 deletions(-)
diff --git a/projects/rust/42574.patch b/projects/rust/42574.patch
deleted file mode 100644
index 285d254..0000000
--- a/projects/rust/42574.patch
+++ /dev/null
@@ -1,236 +0,0 @@
-From 3757213db371dcea53cae357cf9c56d1b0604f98 Mon Sep 17 00:00:00 2001
-From: Alina Sbirlea <asbirlea at google.com>
-Date: Fri, 12 Jul 2019 22:30:30 +0000
-Subject: [PATCH] [MemorySSA] Use SetVector to avoid nondeterminism.
-
-Summary:
-Use a SetVector for DeadBlockSet.
-Resolves PR42574.
-
-Reviewers: george.burgess.iv, uabelho, dblaikie
-
-Subscribers: jlebar, Prazek, mgrang, llvm-commits
-
-Tags: #llvm
-
-Differential Revision: https://reviews.llvm.org/D64601
-
-llvm-svn: 365970
-
-diff --git a/llvm/include/llvm/Analysis/MemorySSAUpdater.h b/llvm/include/llvm/Analysis/MemorySSAUpdater.h
-index 169d5bd9fa8..276620bd445 100644
---- a/llvm/include/llvm/Analysis/MemorySSAUpdater.h
-+++ b/llvm/include/llvm/Analysis/MemorySSAUpdater.h
-@@ -32,6 +32,7 @@
- #ifndef LLVM_ANALYSIS_MEMORYSSAUPDATER_H
- #define LLVM_ANALYSIS_MEMORYSSAUPDATER_H
-
-+#include "llvm/ADT/SetVector.h"
- #include "llvm/ADT/SmallPtrSet.h"
- #include "llvm/ADT/SmallSet.h"
- #include "llvm/ADT/SmallVector.h"
-@@ -239,7 +240,7 @@ public:
- /// Deleted blocks still have successor info, but their predecessor edges and
- /// Phi nodes may already be updated. Instructions in DeadBlocks should be
- /// deleted after this call.
-- void removeBlocks(const SmallPtrSetImpl<BasicBlock *> &DeadBlocks);
-+ void removeBlocks(const SmallSetVector<BasicBlock *, 8> &DeadBlocks);
-
- /// Get handle on MemorySSA.
- MemorySSA* getMemorySSA() const { return MSSA; }
-diff --git a/llvm/lib/Analysis/MemorySSAUpdater.cpp b/llvm/lib/Analysis/MemorySSAUpdater.cpp
-index 6c817d20368..a6c7142a697 100644
---- a/llvm/lib/Analysis/MemorySSAUpdater.cpp
-+++ b/llvm/lib/Analysis/MemorySSAUpdater.cpp
-@@ -1101,7 +1101,7 @@ void MemorySSAUpdater::removeMemoryAccess(MemoryAccess *MA) {
- }
-
- void MemorySSAUpdater::removeBlocks(
-- const SmallPtrSetImpl<BasicBlock *> &DeadBlocks) {
-+ const SmallSetVector<BasicBlock *, 8> &DeadBlocks) {
- // First delete all uses of BB in MemoryPhis.
- for (BasicBlock *BB : DeadBlocks) {
- Instruction *TI = BB->getTerminator();
-diff --git a/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp b/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
-index 2e5927f9a06..f464df26a02 100644
---- a/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
-+++ b/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
-@@ -388,8 +388,8 @@ private:
- void deleteDeadLoopBlocks() {
- DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Eager);
- if (MSSAU) {
-- SmallPtrSet<BasicBlock *, 8> DeadLoopBlocksSet(DeadLoopBlocks.begin(),
-- DeadLoopBlocks.end());
-+ SmallSetVector<BasicBlock *, 8> DeadLoopBlocksSet(DeadLoopBlocks.begin(),
-+ DeadLoopBlocks.end());
- MSSAU->removeBlocks(DeadLoopBlocksSet);
- }
- for (auto *BB : DeadLoopBlocks) {
-diff --git a/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp b/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
-index 5a67178cef3..814cf814989 100644
---- a/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
-+++ b/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
-@@ -1436,8 +1436,8 @@ deleteDeadClonedBlocks(Loop &L, ArrayRef<BasicBlock *> ExitBlocks,
-
- // Remove all MemorySSA in the dead blocks
- if (MSSAU) {
-- SmallPtrSet<BasicBlock *, 16> DeadBlockSet(DeadBlocks.begin(),
-- DeadBlocks.end());
-+ SmallSetVector<BasicBlock *, 8> DeadBlockSet(DeadBlocks.begin(),
-+ DeadBlocks.end());
- MSSAU->removeBlocks(DeadBlockSet);
- }
-
-@@ -1455,7 +1455,7 @@ static void deleteDeadBlocksFromLoop(Loop &L,
- MemorySSAUpdater *MSSAU) {
- // Find all the dead blocks tied to this loop, and remove them from their
- // successors.
-- SmallPtrSet<BasicBlock *, 16> DeadBlockSet;
-+ SmallSetVector<BasicBlock *, 8> DeadBlockSet;
-
- // Start with loop/exit blocks and get a transitive closure of reachable dead
- // blocks.
-diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp
-index 499e611acb5..83dabcd7952 100644
---- a/llvm/lib/Transforms/Utils/Local.cpp
-+++ b/llvm/lib/Transforms/Utils/Local.cpp
-@@ -2211,7 +2211,7 @@ bool llvm::removeUnreachableBlocks(Function &F, LazyValueInfo *LVI,
- assert(Reachable.size() < F.size());
- NumRemoved += F.size()-Reachable.size();
-
-- SmallPtrSet<BasicBlock *, 16> DeadBlockSet;
-+ SmallSetVector<BasicBlock *, 8> DeadBlockSet;
- for (Function::iterator I = ++F.begin(), E = F.end(); I != E; ++I) {
- auto *BB = &*I;
- if (Reachable.count(BB))
-diff --git a/llvm/test/Analysis/MemorySSA/nondeterminism.ll b/llvm/test/Analysis/MemorySSA/nondeterminism.ll
-new file mode 100644
-index 00000000000..0bb3df30b58
---- /dev/null
-+++ b/llvm/test/Analysis/MemorySSA/nondeterminism.ll
-@@ -0,0 +1,122 @@
-+; RUN: opt -simplifycfg -enable-mssa-loop-dependency -S --preserve-ll-uselistorder %s | FileCheck %s
-+; REQUIRES: x86-registered-target
-+; CHECK-LABEL: @n
-+; CHECK: uselistorder i16 0, { 3, 2, 4, 1, 5, 0, 6 }
-+
-+; Note: test was added in an effort to ensure determinism when updating memoryssa. See PR42574.
-+; If the uselistorder check becomes no longer relevant, the test can be disabled or removed.
-+
-+%rec9 = type { i16, i32, i32 }
-+
-+ at a = global [1 x [1 x %rec9]] zeroinitializer
-+
-+define i16 @n() {
-+ br label %..split_crit_edge
-+
-+..split_crit_edge: ; preds = %0
-+ br label %.split
-+
-+bb4.us4: ; preds = %bb2.split.us32, %bb6.us28
-+ %i.4.01.us5 = phi i16 [ %_tmp49.us30, %bb6.us28 ]
-+ br label %g.exit4.us21
-+
-+bb1.i.us14: ; preds = %bb4.us4
-+ br label %g.exit4.us21
-+
-+g.exit4.us21: ; preds = %bb1.i.us14, %g.exit4.critedge.us9
-+ %i.4.02.us22 = phi i16 [ %i.4.01.us5, %bb4.us4 ], [ %i.4.01.us5, %bb1.i.us14 ]
-+ br label %bb6.us28
-+
-+bb5.us26: ; preds = %g.exit4.us21
-+ br label %bb6.us28
-+
-+bb6.us28: ; preds = %bb5.us26, %g.exit4.us21
-+ %i.4.03.us29 = phi i16 [ %i.4.02.us22, %bb5.us26 ], [ %i.4.02.us22, %g.exit4.us21 ]
-+ %_tmp49.us30 = add nuw nsw i16 %i.4.03.us29, 1
-+ br label %bb4.us4
-+
-+bb4.us.us: ; preds = %bb2.split.us.us, %bb6.us.us
-+ %i.4.01.us.us = phi i16 [ %_tmp49.us.us, %bb6.us.us ]
-+ br label %bb1.i.us.us
-+
-+bb1.i.us.us: ; preds = %bb4.us.us
-+ br label %g.exit4.us.us
-+
-+g.exit4.us.us: ; preds = %bb1.i.us.us, %g.exit4.critedge.us.us
-+ %i.4.02.us.us = phi i16 [ %i.4.01.us.us, %bb1.i.us.us ]
-+ br label %bb5.us.us
-+
-+bb5.us.us: ; preds = %g.exit4.us.us
-+ br label %bb6.us.us
-+
-+bb6.us.us: ; preds = %bb5.us.us, %g.exit4.us.us
-+ %i.4.03.us.us = phi i16 [ %i.4.02.us.us, %bb5.us.us ]
-+ %_tmp49.us.us = add nuw nsw i16 %i.4.03.us.us, 1
-+ br label %bb4.us.us
-+
-+
-+.split: ; preds = %..split_crit_edge
-+ br label %bb2
-+
-+bb2: ; preds = %.split, %bb7
-+ %h.3.0 = phi i16 [ undef, %.split ], [ %_tmp53, %bb7 ]
-+ br label %bb2.bb2.split_crit_edge
-+
-+bb2.bb2.split_crit_edge: ; preds = %bb2
-+ br label %bb2.split
-+
-+bb2.split.us: ; preds = %bb2
-+ br label %bb4.us
-+
-+bb4.us: ; preds = %bb6.us, %bb2.split.us
-+ %i.4.01.us = phi i16 [ 0, %bb2.split.us ]
-+ br label %bb1.i.us
-+
-+g.exit4.critedge.us: ; preds = %bb4.us
-+ br label %g.exit4.us
-+
-+bb1.i.us: ; preds = %bb4.us
-+ br label %g.exit4.us
-+
-+g.exit4.us: ; preds = %bb1.i.us, %g.exit4.critedge.us
-+ %i.4.02.us = phi i16 [ %i.4.01.us, %g.exit4.critedge.us ], [ %i.4.01.us, %bb1.i.us ]
-+ br label %bb5.us
-+
-+bb5.us: ; preds = %g.exit4.us
-+ br label %bb7
-+
-+bb2.split: ; preds = %bb2.bb2.split_crit_edge
-+ br label %bb4
-+
-+bb4: ; preds = %bb2.split, %bb6
-+ %i.4.01 = phi i16 [ 0, %bb2.split ]
-+ %_tmp16 = getelementptr [1 x [1 x %rec9]], [1 x [1 x %rec9]]* @a, i16 0, i16 %h.3.0, i16 %i.4.01, i32 0
-+ %_tmp17 = load i16, i16* %_tmp16, align 1
-+ br label %g.exit4.critedge
-+
-+bb1.i: ; preds = %bb4
-+ br label %g.exit4
-+
-+g.exit4.critedge: ; preds = %bb4
-+ %_tmp28.c = getelementptr [1 x [1 x %rec9]], [1 x [1 x %rec9]]* @a, i16 0, i16 %h.3.0, i16 %i.4.01, i32 1
-+ %_tmp29.c = load i32, i32* %_tmp28.c, align 1
-+ %_tmp30.c = trunc i32 %_tmp29.c to i16
-+ br label %g.exit4
-+
-+g.exit4: ; preds = %g.exit4.critedge, %bb1.i
-+ %i.4.02 = phi i16 [ %i.4.01, %g.exit4.critedge ], [ %i.4.01, %bb1.i ]
-+ %_tmp41 = getelementptr [1 x [1 x %rec9]], [1 x [1 x %rec9]]* @a, i16 0, i16 %h.3.0, i16 %i.4.02, i32 2
-+ br label %bb6
-+
-+bb5: ; preds = %g.exit4
-+ br label %bb6
-+
-+bb6: ; preds = %bb5, %g.exit4
-+ %i.4.03 = phi i16 [ %i.4.02, %bb5 ], [ %i.4.02, %g.exit4 ]
-+ %_tmp49 = add nuw nsw i16 %i.4.03, 1
-+ br label %bb7
-+
-+bb7: ; preds = %bb7.us-lcssa.us, %bb7.us-lcssa
-+ %_tmp53 = add nsw i16 %h.3.0, 1
-+ br label %bb2
-+}
---
-2.24.0
-
diff --git a/projects/rust/build b/projects/rust/build
index 8b45e3f..a8f886b 100644
--- a/projects/rust/build
+++ b/projects/rust/build
@@ -54,7 +54,6 @@ cd /var/tmp/build/rustc-[% c('version') %]-src
# LLVM has reproducibility issues when optimizing bitcode, which we need to
# patch. See: #32053 for more details.
cd src/llvm-project
-patch -p1 < $rootdir/42574.patch
patch -p1 < $rootdir/43909.patch
cd ../../
diff --git a/projects/rust/config b/projects/rust/config
index 13aad3e..3ffcd58 100644
--- a/projects/rust/config
+++ b/projects/rust/config
@@ -5,8 +5,8 @@ version: '[% c("input_file_var/rust_version") %]'
# those values can be changed from the input_files section of other
# projects. See projects/lucetc/config and bug 32436.
input_file_var:
- rust_version: 1.34.2
- prev_version: 1.33.0
+ rust_version: 1.41.1
+ prev_version: 1.40.0
var:
prev_version: '[% c("input_file_var/prev_version") %]'
@@ -112,5 +112,4 @@ input_files:
gpg_keyring: rust.gpg
- filename: unwind.patch
enable: '[% c("var/windows-i686") %]'
- - filename: 42574.patch
- filename: 43909.patch
More information about the tor-commits
mailing list