diff --git a/runtime/vm/compiler/backend/flow_graph.cc b/runtime/vm/compiler/backend/flow_graph.cc
index ead29a0..2d890b4 100644
--- a/runtime/vm/compiler/backend/flow_graph.cc
+++ b/runtime/vm/compiler/backend/flow_graph.cc
@@ -1613,6 +1613,10 @@
     return;
   }
 
+  // Current_context_var is never pruned, it is artificially kept alive, so
+  // it should not be checked here.
+  const intptr_t current_context_var_index = CurrentContextEnvIndex();
+
   for (intptr_t i = 0, n = preorder().length(); i < n; ++i) {
     BlockEntryInstr* block_entry = preorder()[i];
     Instruction* last_instruction = block_entry->last_instruction();
@@ -1624,7 +1628,7 @@
       if (successor->phis() != NULL) {
         for (intptr_t j = 0; j < successor->phis()->length(); ++j) {
           PhiInstr* phi = (*successor->phis())[j];
-          if (phi == nullptr) {
+          if (phi == nullptr && j != current_context_var_index) {
             // We have no phi node for the this variable.
             // Double check we do not have a different value in our env.
             // If we do, we would have needed a phi-node in the successsor.
diff --git a/runtime/vm/compiler/backend/flow_graph.h b/runtime/vm/compiler/backend/flow_graph.h
index dbbd124..4e72259 100644
--- a/runtime/vm/compiler/backend/flow_graph.h
+++ b/runtime/vm/compiler/backend/flow_graph.h
@@ -651,8 +651,8 @@
   const GrowableArray<BlockEntryInstr*>& postorder_;
 
   // Live-out sets for each block.  They contain indices of variables
-  // that are live out from this block: that is values that were either
-  // defined in this block or live into it and that are used in some
+  // that are live out from this block. That is values that were (1) either
+  // defined in this block or live into it, and (2) that are used in some
   // successor block.
   GrowableArray<BitVector*> live_out_;
 
diff --git a/tests/language/vm/regress_45855_test.dart b/tests/language/vm/regress_45855_test.dart
new file mode 100644
index 0000000..14200e4
--- /dev/null
+++ b/tests/language/vm/regress_45855_test.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+//
+// VMOptions=--optimization-counter-threshold=100 --deterministic
+//
+// The Dart Project Fuzz Tester (1.89).
+// Program generated as:
+//   dart dartfuzz.dart --seed 928581289 --no-fp --ffi --no-flat
+//
+// Minimized.
+
+@pragma('vm:never-inline')
+void main2(bool? boolParam) {
+  for (int i = 0; i < 200; i++) {
+    final bool1 = boolParam ?? false;
+    if (bool1) {
+      () {
+        // Force creating a new current context.
+        i.toString();
+      };
+      // Force having multiple paths to the exit, popping the current context.
+      break;
+    }
+  }
+}
+
+void main() {
+  // Test OSR.
+  main2(null);
+
+  // Test non-OSR.
+  main2(null);
+}
diff --git a/tests/language_2/vm/regress_45855_test.dart b/tests/language_2/vm/regress_45855_test.dart
new file mode 100644
index 0000000..b99676e
--- /dev/null
+++ b/tests/language_2/vm/regress_45855_test.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+//
+// VMOptions=--optimization-counter-threshold=100 --deterministic
+//
+// The Dart Project Fuzz Tester (1.89).
+// Program generated as:
+//   dart dartfuzz.dart --seed 928581289 --no-fp --ffi --no-flat
+//
+// Minimized.
+
+@pragma('vm:never-inline')
+void main2(bool boolParam) {
+  for (int i = 0; i < 200; i++) {
+    final bool1 = boolParam ?? false;
+    if (bool1) {
+      () {
+        // Force creating a new current context.
+        i.toString();
+      };
+      // Force having multiple paths to the exit, popping the current context.
+      break;
+    }
+  }
+}
+
+void main() {
+  // Test OSR.
+  main2(null);
+
+  // Test non-OSR.
+  main2(null);
+}
diff --git a/tools/VERSION b/tools/VERSION
index 134fd10..43fcd00 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 69
+PRERELEASE 70
 PRERELEASE_PATCH 0
\ No newline at end of file
