[VM] Address uncovered issues, mark test as passing

Change-Id: Ie2c5eb055ce6138952af145ce6fdb972c057bd16
Reviewed-on: https://dart-review.googlesource.com/55780
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
diff --git a/runtime/vm/compiler/backend/flow_graph.cc b/runtime/vm/compiler/backend/flow_graph.cc
index 4cc0e2e..4aedb3c 100644
--- a/runtime/vm/compiler/backend/flow_graph.cc
+++ b/runtime/vm/compiler/backend/flow_graph.cc
@@ -1020,8 +1020,9 @@
 
       // Replace the argument descriptor slot with a special parameter.
       if (parsed_function().has_arg_desc_var()) {
-        Definition* defn = new SpecialParameterInstr(
-            SpecialParameterInstr::kArgDescriptor, Thread::kNoDeoptId);
+        Definition* defn =
+            new SpecialParameterInstr(SpecialParameterInstr::kArgDescriptor,
+                                      Thread::kNoDeoptId, graph_entry_);
         AllocateSSAIndexes(defn);
         AddToInitialDefinitions(defn);
         env[ArgumentDescriptorEnvIndex()] = defn;
@@ -1101,10 +1102,10 @@
       Definition* param = nullptr;
       if (raw_exception_var_envindex == i) {
         param = new SpecialParameterInstr(SpecialParameterInstr::kException,
-                                          Thread::kNoDeoptId);
+                                          Thread::kNoDeoptId, catch_entry);
       } else if (raw_stacktrace_var_envindex == i) {
         param = new SpecialParameterInstr(SpecialParameterInstr::kStackTrace,
-                                          Thread::kNoDeoptId);
+                                          Thread::kNoDeoptId, catch_entry);
       } else {
         param = new (zone()) ParameterInstr(i, block_entry);
       }
diff --git a/runtime/vm/compiler/backend/il.h b/runtime/vm/compiler/backend/il.h
index 9b33e12..875f806 100644
--- a/runtime/vm/compiler/backend/il.h
+++ b/runtime/vm/compiler/backend/il.h
@@ -3008,10 +3008,15 @@
     kStackTrace
   };
 
-  SpecialParameterInstr(SpecialParameterKind kind, intptr_t deopt_id)
-      : TemplateDefinition(deopt_id), kind_(kind) {}
+  SpecialParameterInstr(SpecialParameterKind kind,
+                        intptr_t deopt_id,
+                        BlockEntryInstr* block)
+      : TemplateDefinition(deopt_id), kind_(kind), block_(block) {}
 
   DECLARE_INSTRUCTION(SpecialParameter)
+
+  virtual BlockEntryInstr* GetBlock() { return block_; }
+
   virtual CompileType ComputeType() const;
 
   virtual bool ComputeCanDeoptimize() const { return false; }
@@ -3046,6 +3051,7 @@
 
  private:
   const SpecialParameterKind kind_;
+  BlockEntryInstr* block_;
   DISALLOW_COPY_AND_ASSIGN(SpecialParameterInstr);
 };
 
diff --git a/runtime/vm/compiler/backend/il_test.cc b/runtime/vm/compiler/backend/il_test.cc
index 4792e3c..8fb8da0 100644
--- a/runtime/vm/compiler/backend/il_test.cc
+++ b/runtime/vm/compiler/backend/il_test.cc
@@ -13,9 +13,10 @@
   EXPECT(target_instr->IsBlockEntry());
   EXPECT(!target_instr->IsDefinition());
   SpecialParameterInstr* context = new SpecialParameterInstr(
-      SpecialParameterInstr::kContext, Thread::kNoDeoptId);
+      SpecialParameterInstr::kContext, Thread::kNoDeoptId, target_instr);
   EXPECT(context->IsDefinition());
   EXPECT(!context->IsBlockEntry());
+  EXPECT(context->GetBlock() == target_instr);
 }
 
 TEST_CASE(OptimizationTests) {
diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status
index 7927e90..929306a 100644
--- a/tests/language_2/language_2_kernel.status
+++ b/tests/language_2/language_2_kernel.status
@@ -434,9 +434,6 @@
 void_type_usage_test/paren_void_init: MissingCompileTimeError # Issue 32804
 void_type_usage_test/paren_while: MissingCompileTimeError # Issue 32804
 
-[ $arch == simarm && $compiler == dartkp && $strong ]
-await_test: RuntimeError
-
 [ $arch != simarm && $arch != simarm64 && $arch != simdbc64 && $compiler == dartk && $runtime == vm && $strong ]
 export_ambiguous_main_test: Crash # Issue 32618