diff --git a/BUILD.gn b/BUILD.gn
index 6295280..4b587be 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -60,9 +60,9 @@
     ]
   }
 
-  # We do not support AOT on ia32 and should therefore cannot provide native
+  # We do not support AOT on ia32 and should therefore not provide native
   # snapshot tooling.
-  if (dart_target_arch != "ia32") {
+  if (dart_target_arch != "ia32" && dart_target_arch != "x86") {
     if (dart_runtime_mode == "release") {
       deps += [ "runtime/bin:analyze_snapshot_product" ]
     } else {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_super_parameters.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_super_parameters.dart
index dc3eb6f..7f84f01 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_super_parameters.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_super_parameters.dart
@@ -139,7 +139,8 @@
       }
 
       // Remove the corresponding arguments.
-      if (argumentsToDelete.length == arguments.length) {
+      if (argumentsToDelete.length == arguments.length &&
+          superInvocation.constructorName == null) {
         var initializers = constructor.initializers;
         SourceRange initializerRange;
         if (initializers.length == 1) {
diff --git a/pkg/analysis_server/test/src/services/correction/assist/convert_to_super_parameters_test.dart b/pkg/analysis_server/test/src/services/correction/assist/convert_to_super_parameters_test.dart
index b3652ca..fc7046b 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/convert_to_super_parameters_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/convert_to_super_parameters_test.dart
@@ -454,6 +454,25 @@
 ''');
   }
 
+  Future<void> test_namedConstructor() async {
+    await resolveTestCode('''
+class A {
+  A.m({int? x});
+}
+class B extends A {
+  B.m({int? x}) : super.m(x: x);
+}
+''');
+    await assertHasAssistAt('B.m', '''
+class A {
+  A.m({int? x});
+}
+class B extends A {
+  B.m({super.x}) : super.m();
+}
+''');
+  }
+
   Future<void> test_positional_first() async {
     await resolveTestCode('''
 class A {
diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
index 04e73a2..7f0bd21 100644
--- a/runtime/bin/BUILD.gn
+++ b/runtime/bin/BUILD.gn
@@ -940,7 +940,7 @@
     "..:dart_maybe_product_config",
   ]
 
-  if (dart_target_arch != "ia32") {
+  if (dart_target_arch != "ia32" && dart_target_arch != "x86") {
     configs += [ "..:dart_precompiler_config" ]
   }
 
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 1241607..281ad47 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -753,8 +753,9 @@
   ]
 
   # We do not support AOT on ia32 and should therefore not add the
-  # dart native compilation files (since there is no AOT compiler/runtime available)
-  if (dart_target_arch != "ia32") {
+  # dart native compilation files since there is no AOT compiler/runtime
+  # available.
+  if (dart_target_arch != "ia32" && dart_target_arch != "x86") {
     public_deps += [ ":group_dart2native" ]
   }
 }
diff --git a/tools/VERSION b/tools/VERSION
index 5aeac38..4f4bab0 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 206
+PRERELEASE 207
 PRERELEASE_PATCH 0
\ No newline at end of file
