diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index d7f9f6b..feb13b1 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -610,12 +610,12 @@
     default_warning_flags += [
       "-Wno-tautological-constant-compare",
       "-Wno-unused-but-set-variable",  # icu
+      "-Wno-unused-but-set-parameter",  # binaryen
       "-Wno-deprecated-non-prototype",  # zlib
     ]
   } else {
-    default_warning_flags += [
-      "-Wno-ignored-qualifiers",  # Warnings in BoringSSL headers
-    ]
+    default_warning_flags +=
+        [ "-Wno-ignored-qualifiers" ]  # Warnings in BoringSSL headers
   }
 
   if (is_mac) {
@@ -729,15 +729,6 @@
   }
 }
 
-config("enable_exceptions") {
-  if (is_win) {
-    cflags_cc = [ "/EHsc" ]
-    defines = [ "_HAS_EXCEPTIONS=1" ]
-  } else if (is_clang) {
-    cflags_cc = [ "-fexceptions" ]
-  }
-}
-
 # Optimization -----------------------------------------------------------------
 #
 # Note that BUILDCONFIG.gn sets up a variable "default_optimization_config"
diff --git a/build/toolchain/win/tool_wrapper.py b/build/toolchain/win/tool_wrapper.py
index 3f52ee0..652a879 100644
--- a/build/toolchain/win/tool_wrapper.py
+++ b/build/toolchain/win/tool_wrapper.py
@@ -8,7 +8,6 @@
 """
 
 import os
-import pathlib
 import re
 import shutil
 import subprocess
@@ -150,28 +149,7 @@
                     not line.startswith('Generating code') and
                     not line.startswith('Finished generating code')):
                 print(line)
-        link_result = link.wait()
-
-        if link_result != 0:
-            return link_result
-
-        # The toolchain configuration in gn always expects a .lib file to be
-        # included in the output of the link step. However, this only happens
-        # when the output has exports, and that is not always the case. In
-        # order to satisfy the expected outputs, we create a dummy .lib file
-        # in cases where the link step didn't actually create one.
-        for arg in args:
-            m = _LINK_EXE_OUT_ARG.match(arg)
-            if m:
-                output_filename = m.group('out')
-                (basename, extension) = os.path.splitext(output_filename)
-                if extension == '.exe':
-                    lib_path = pathlib.Path(basename + ".lib")
-                    if not os.path.exists(lib_path):
-                        lib_path.touch()
-                    break
-
-        return link_result
+        return link.wait()
 
     def ExecMidlWrapper(self, arch, outdir, tlb, h, dlldata, iid, proxy, idl,
                         *flags):
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 1756235..61874d8 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -27,7 +27,6 @@
   dart_precompiled_runtime_stripped_binary = "dart_precompiled_runtime_product"
   gen_snapshot_stripped_binary = "gen_snapshot_product"
   analyze_snapshot_binary = "analyze_snapshot"
-  wasm_opt_stripped_binary = "wasm-opt"
 }
 
 # The directory layout of the SDK is as follows:
@@ -519,16 +518,6 @@
       [ "$root_out_dir/$dart_sdk_output/bin/snapshots/{{source_file_part}}" ]
 }
 
-copy("copy_wasm_opt") {
-  visibility = [ ":create_full_sdk" ]
-  deps = [
-    ":copy_libraries",
-    "../third_party/binaryen:wasm-opt",
-  ]
-  sources = [ "$root_out_dir/${wasm_opt_stripped_binary}${executable_suffix}" ]
-  outputs = [ "$root_out_dir/$dart_sdk_output/bin/utils/{{source_file_part}}" ]
-}
-
 # Copies DDC's SDK full and outline .dill files to lib/_internal.
 copy("copy_dev_compiler_dills") {
   visibility = [ ":copy_dev_compiler_sdk" ]
@@ -766,7 +755,6 @@
     public_deps += [
       ":copy_dart2wasm_platform",
       ":copy_dart2wasm_snapshot",
-      ":copy_wasm_opt",
     ]
   }
 }
diff --git a/third_party/binaryen/BUILD.gn b/third_party/binaryen/BUILD.gn
index 828f77f..139d9f8 100644
--- a/third_party/binaryen/BUILD.gn
+++ b/third_party/binaryen/BUILD.gn
@@ -4,14 +4,6 @@
 
 import("../../sdk_args.gni")
 
-config("binaryen_warnings") {
-  if (is_clang) {
-    cflags = [ "-Wno-unused-but-set-parameter" ]
-  } else if (!is_win) {
-    cflags = [ "-Wno-unused-variable" ]
-  }
-}
-
 action("generate_needed_files") {
   script = "generate_needed_files.py"
 
@@ -67,11 +59,6 @@
 
   # Ensure generated config.h file is include path.
   include_dirs += [ "$target_gen_dir" ]
-
-  configs += [
-    "//build/config/compiler:enable_exceptions",
-    ":binaryen_warnings",
-  ]
 }
 
 template("wasm_tool") {
@@ -85,11 +72,6 @@
     include_dirs = [ "src/src" ]
     deps = [ ":binaryen_sources" ]
     forward_variables_from(invoker, "*")
-
-    configs += [
-      "//build/config/compiler:enable_exceptions",
-      ":binaryen_warnings",
-    ]
   }
 }
 
diff --git a/tools/gn.py b/tools/gn.py
index c8bac2f..be46581 100755
--- a/tools/gn.py
+++ b/tools/gn.py
@@ -300,7 +300,6 @@
         gn_args['gen_snapshot_stripped_binary'] = (
             'exe.stripped/gen_snapshot_product')
         gn_args['analyze_snapshot_binary'] = ('exe.stripped/analyze_snapshot')
-        gn_args['wasm_opt_stripped_binary'] = 'exe.stripped/wasm-opt'
 
     # Setup the user-defined sysroot.
     if UseSysroot(args, gn_args):
