From 0d9fe61c7bbcc47c4a0a51e3cefe94bbbdfd4ff6 Mon Sep 17 00:00:00 2001 From: Heejin Ahn Date: Tue, 27 Jan 2026 08:19:45 +0000 Subject: [PATCH 1/5] [wasm-split] Allow empty string for options We weren't able to give empty strings as options like `--import-namespace=` or `--import-namespace=""` so far because 1. When `command-line.cpp` parses `--option=`, it parses the next option as its value. For example, if we have `wasm-split ... --import-namespace -o output.wasm`, it parses `-o` as the value for `--import-namespace`. 2. Even if we fix 1, many places in `wasm-split.cpp` checks for `if (options.optionName.size())` so the option with size 0 cannot be processed. This fixes them and allow `--import-namespace` and other similar options take an empty string for a value. Since #7966 changed the default primary export namespace to `primary`, acx_gallery failed to run (which I realized it only recently) and giving it `--import-namespace=""` didn't work because of the above reasons. --- src/support/command-line.cpp | 4 +- src/tools/wasm-split/split-options.cpp | 9 +- src/tools/wasm-split/split-options.h | 4 + src/tools/wasm-split/wasm-split.cpp | 10 +- ...ment-in-secondary-memory-custom-names.wast | 10 ++ test/lit/wasm-split/multi-split-options.wast | 144 ++++++++++++++++++ 6 files changed, 174 insertions(+), 7 deletions(-) diff --git a/src/support/command-line.cpp b/src/support/command-line.cpp index a80deaac123..30db3f4377d 100644 --- a/src/support/command-line.cpp +++ b/src/support/command-line.cpp @@ -231,10 +231,12 @@ void Options::parse(int argc, const char* argv[]) { // Non-positional. std::string argument; + bool explicitArg = false; auto equal = currentOption.find_first_of('='); if (equal != std::string::npos) { argument = currentOption.substr(equal + 1); currentOption = currentOption.substr(0, equal); + explicitArg = true; } Option* option = nullptr; for (auto& o : options) { @@ -262,7 +264,7 @@ void Options::parse(int argc, const char* argv[]) { } [[fallthrough]]; case Arguments::N: - if (!argument.size()) { + if (!argument.size() && !explicitArg) { if (i + 1 == e) { std::cerr << "Couldn't find expected argument for '" << currentOption << "'\n"; diff --git a/src/tools/wasm-split/split-options.cpp b/src/tools/wasm-split/split-options.cpp index bcd7b1aa814..f1cb171cdca 100644 --- a/src/tools/wasm-split/split-options.cpp +++ b/src/tools/wasm-split/split-options.cpp @@ -235,6 +235,7 @@ WasmSplitOptions::WasmSplitOptions() Options::Arguments::One, [&](Options* o, const std::string& argument) { importNamespace = argument; + hasImportNamespace = true; }) .add("--placeholder-namespace-prefix", "", @@ -246,6 +247,7 @@ WasmSplitOptions::WasmSplitOptions() Options::Arguments::One, [&](Options* o, const std::string& argument) { placeholderNamespacePrefix = argument; + hasPlaceholderNamespacePrefix = true; }) .add("--placeholder-namespace", "", @@ -255,6 +257,7 @@ WasmSplitOptions::WasmSplitOptions() Options::Arguments::One, [&](Options* o, const std::string& argument) { placeholderNamespacePrefix = argument; + hasPlaceholderNamespacePrefix = true; }) .add("--jspi", "", @@ -272,7 +275,10 @@ WasmSplitOptions::WasmSplitOptions() WasmSplitOption, {Mode::Split, Mode::MultiSplit}, Options::Arguments::One, - [&](Options* o, const std::string& argument) { exportPrefix = argument; }) + [&](Options* o, const std::string& argument) { + exportPrefix = argument; + hasExportPrefix = true; + }) .add("--profile-export", "", "The export name of the function the embedder calls to write the " @@ -319,6 +325,7 @@ WasmSplitOptions::WasmSplitOptions() Options::Arguments::One, [&](Options* o, const std::string& argument) { secondaryMemoryName = argument; + hasSecondaryMemoryName = true; }) .add( "--emit-module-names", diff --git a/src/tools/wasm-split/split-options.h b/src/tools/wasm-split/split-options.h index 52b59d0c646..ddbc80b181d 100644 --- a/src/tools/wasm-split/split-options.h +++ b/src/tools/wasm-split/split-options.h @@ -67,9 +67,13 @@ struct WasmSplitOptions : ToolOptions { std::string secondaryOutput; std::string importNamespace; + bool hasImportNamespace = false; std::string placeholderNamespacePrefix; + bool hasPlaceholderNamespacePrefix = false; std::string secondaryMemoryName; + bool hasSecondaryMemoryName = false; std::string exportPrefix; + bool hasExportPrefix = false; std::string manifestFile; std::string outPrefix; diff --git a/src/tools/wasm-split/wasm-split.cpp b/src/tools/wasm-split/wasm-split.cpp index b2e65399774..6181dcd0406 100644 --- a/src/tools/wasm-split/wasm-split.cpp +++ b/src/tools/wasm-split/wasm-split.cpp @@ -115,10 +115,10 @@ void instrumentModule(const WasmSplitOptions& options) { uint64_t moduleHash = hashFile(options.inputFiles[0]); InstrumenterConfig config; - if (options.importNamespace.size()) { + if (options.hasImportNamespace) { config.importNamespace = options.importNamespace; } - if (options.secondaryMemoryName.size()) { + if (options.hasSecondaryMemoryName) { config.secondaryMemoryName = options.secondaryMemoryName; } config.storageKind = options.storageKind; @@ -226,13 +226,13 @@ void setCommonSplitConfigs(ModuleSplitting::Config& config, const WasmSplitOptions& options) { config.usePlaceholders = options.usePlaceholders; config.minimizeNewExportNames = !options.passOptions.debugInfo; - if (options.importNamespace.size()) { + if (options.hasImportNamespace) { config.importNamespace = options.importNamespace; } - if (options.exportPrefix.size()) { + if (options.hasExportPrefix) { config.newExportPrefix = options.exportPrefix; } - if (options.placeholderNamespacePrefix.size()) { + if (options.hasPlaceholderNamespacePrefix) { config.placeholderNamespacePrefix = options.placeholderNamespacePrefix; } } diff --git a/test/lit/wasm-split/instrument-in-secondary-memory-custom-names.wast b/test/lit/wasm-split/instrument-in-secondary-memory-custom-names.wast index a211e5d8a5d..b6cbee20d02 100644 --- a/test/lit/wasm-split/instrument-in-secondary-memory-custom-names.wast +++ b/test/lit/wasm-split/instrument-in-secondary-memory-custom-names.wast @@ -1,5 +1,7 @@ ;; RUN: wasm-split %s --instrument --in-secondary-memory --import-namespace=custom_env --secondary-memory-name=custom_name -all -S -o - | filecheck %s +;; RUN: wasm-split %s --instrument --in-secondary-memory --import-namespace= --secondary-memory-name= -all -S -o - | filecheck %s --check-prefix=EMPTY + ;; Check that the output round trips and validates as well ;; RUN: wasm-split %s --instrument --in-secondary-memory -all -g -o %t.wasm ;; RUN: wasm-opt -all %t.wasm -S -o - @@ -29,3 +31,11 @@ ;; CHECK: (i32.atomic.store8 $custom_name ;; CHECK: (i32.atomic.store8 $custom_name offset=1 ;; CHECK: (i32.atomic.load8_u $custom_name + +;; Do the checks for an empty import namespace and empty secondary memory name +;; as well; +;; EMPTY: (import "" "" (memory $"" 1 1 shared)) + +;; EMPTY: (i32.atomic.store8 $"" +;; EMPTY: (i32.atomic.store8 $"" offset=1 +;; EMPTY: (i32.atomic.load8_u $"" diff --git a/test/lit/wasm-split/multi-split-options.wast b/test/lit/wasm-split/multi-split-options.wast index b2286c27771..74fec290394 100644 --- a/test/lit/wasm-split/multi-split-options.wast +++ b/test/lit/wasm-split/multi-split-options.wast @@ -12,6 +12,13 @@ ;; RUN: wasm-split -all -g --multi-split %s --manifest %S/multi-split.wast.manifest --out-prefix=%t --placeholder-namespace=placeholder_env -o %t.wasm ;; RUN: wasm-dis %t.wasm | filecheck %s --check-prefix=PRIMARY-PLACEHOLDER-NAMESPACE +;; Check if empty strings work for options. +;; RUN: wasm-split -all -g --multi-split %s --manifest %S/multi-split.wast.manifest --out-prefix=%t --import-namespace= --placeholder-namespace= --export-prefix= -o %t.wasm +;; RUN: wasm-dis %t.wasm | filecheck %s --check-prefix=PRIMARY-EMPTY +;; RUN: wasm-dis %t1.wasm | filecheck %s --check-prefix=MOD1-EMPTY +;; RUN: wasm-dis %t2.wasm | filecheck %s --check-prefix=MOD2-EMPTY +;; RUN: wasm-dis %t3.wasm | filecheck %s --check-prefix=MOD3-EMPTY + (module ;; PRIMARY-OPTIONS: (type $ret-i64 (func (result i64))) @@ -23,6 +30,11 @@ ;; PRIMARY-PLACEHOLDER-NAMESPACE: (type $ret-f32 (func (result f32))) ;; PRIMARY-PLACEHOLDER-NAMESPACE: (type $ret-i32 (func (result i32))) + ;; PRIMARY-EMPTY: (type $ret-i64 (func (result i64))) + + ;; PRIMARY-EMPTY: (type $ret-f32 (func (result f32))) + + ;; PRIMARY-EMPTY: (type $ret-i32 (func (result i32))) (type $ret-i32 (func (result i32))) (type $ret-i64 (func (result i64))) (type $ret-f32 (func (result f32))) @@ -59,6 +71,38 @@ ;; MOD1-OPTIONS-NEXT: ) ;; MOD1-OPTIONS-NEXT: (i32.const 0) ;; MOD1-OPTIONS-NEXT: ) + ;; MOD1-EMPTY: (type $0 (func (result i64))) + + ;; MOD1-EMPTY: (type $1 (func (result f32))) + + ;; MOD1-EMPTY: (type $2 (func (result i32))) + + ;; MOD1-EMPTY: (import "" "table" (table $timport$0 3 funcref)) + + ;; MOD1-EMPTY: (import "" "trampoline_B" (func $trampoline_B (exact (result i64)))) + + ;; MOD1-EMPTY: (import "" "trampoline_C" (func $trampoline_C (exact (result f32)))) + + ;; MOD1-EMPTY: (elem $0 (i32.const 2) $A) + + ;; MOD1-EMPTY: (func $A (result i32) + ;; MOD1-EMPTY-NEXT: (drop + ;; MOD1-EMPTY-NEXT: (call_ref $2 + ;; MOD1-EMPTY-NEXT: (ref.func $A) + ;; MOD1-EMPTY-NEXT: ) + ;; MOD1-EMPTY-NEXT: ) + ;; MOD1-EMPTY-NEXT: (drop + ;; MOD1-EMPTY-NEXT: (call_ref $0 + ;; MOD1-EMPTY-NEXT: (ref.func $trampoline_B) + ;; MOD1-EMPTY-NEXT: ) + ;; MOD1-EMPTY-NEXT: ) + ;; MOD1-EMPTY-NEXT: (drop + ;; MOD1-EMPTY-NEXT: (call_ref $1 + ;; MOD1-EMPTY-NEXT: (ref.func $trampoline_C) + ;; MOD1-EMPTY-NEXT: ) + ;; MOD1-EMPTY-NEXT: ) + ;; MOD1-EMPTY-NEXT: (i32.const 0) + ;; MOD1-EMPTY-NEXT: ) (func $A (type $ret-i32) (result i32) (drop (call_ref $ret-i32 @@ -110,6 +154,38 @@ ;; MOD2-OPTIONS-NEXT: ) ;; MOD2-OPTIONS-NEXT: (i64.const 0) ;; MOD2-OPTIONS-NEXT: ) + ;; MOD2-EMPTY: (type $0 (func (result i32))) + + ;; MOD2-EMPTY: (type $1 (func (result f32))) + + ;; MOD2-EMPTY: (type $2 (func (result i64))) + + ;; MOD2-EMPTY: (import "" "table" (table $timport$0 3 funcref)) + + ;; MOD2-EMPTY: (import "" "trampoline_A" (func $trampoline_A (exact (result i32)))) + + ;; MOD2-EMPTY: (import "" "trampoline_C" (func $trampoline_C (exact (result f32)))) + + ;; MOD2-EMPTY: (elem $0 (i32.const 0) $B) + + ;; MOD2-EMPTY: (func $B (result i64) + ;; MOD2-EMPTY-NEXT: (drop + ;; MOD2-EMPTY-NEXT: (call_ref $0 + ;; MOD2-EMPTY-NEXT: (ref.func $trampoline_A) + ;; MOD2-EMPTY-NEXT: ) + ;; MOD2-EMPTY-NEXT: ) + ;; MOD2-EMPTY-NEXT: (drop + ;; MOD2-EMPTY-NEXT: (call_ref $2 + ;; MOD2-EMPTY-NEXT: (ref.func $B) + ;; MOD2-EMPTY-NEXT: ) + ;; MOD2-EMPTY-NEXT: ) + ;; MOD2-EMPTY-NEXT: (drop + ;; MOD2-EMPTY-NEXT: (call_ref $1 + ;; MOD2-EMPTY-NEXT: (ref.func $trampoline_C) + ;; MOD2-EMPTY-NEXT: ) + ;; MOD2-EMPTY-NEXT: ) + ;; MOD2-EMPTY-NEXT: (i64.const 0) + ;; MOD2-EMPTY-NEXT: ) (func $B (type $ret-i64) (result i64) (drop (call_ref $ret-i32 @@ -161,6 +237,38 @@ ;; MOD3-OPTIONS-NEXT: ) ;; MOD3-OPTIONS-NEXT: (f32.const 0) ;; MOD3-OPTIONS-NEXT: ) + ;; MOD3-EMPTY: (type $0 (func (result i32))) + + ;; MOD3-EMPTY: (type $1 (func (result i64))) + + ;; MOD3-EMPTY: (type $2 (func (result f32))) + + ;; MOD3-EMPTY: (import "" "table" (table $timport$0 3 funcref)) + + ;; MOD3-EMPTY: (import "" "trampoline_A" (func $trampoline_A (exact (result i32)))) + + ;; MOD3-EMPTY: (import "" "trampoline_B" (func $trampoline_B (exact (result i64)))) + + ;; MOD3-EMPTY: (elem $0 (i32.const 1) $C) + + ;; MOD3-EMPTY: (func $C (result f32) + ;; MOD3-EMPTY-NEXT: (drop + ;; MOD3-EMPTY-NEXT: (call_ref $0 + ;; MOD3-EMPTY-NEXT: (ref.func $trampoline_A) + ;; MOD3-EMPTY-NEXT: ) + ;; MOD3-EMPTY-NEXT: ) + ;; MOD3-EMPTY-NEXT: (drop + ;; MOD3-EMPTY-NEXT: (call_ref $1 + ;; MOD3-EMPTY-NEXT: (ref.func $trampoline_B) + ;; MOD3-EMPTY-NEXT: ) + ;; MOD3-EMPTY-NEXT: ) + ;; MOD3-EMPTY-NEXT: (drop + ;; MOD3-EMPTY-NEXT: (call_ref $2 + ;; MOD3-EMPTY-NEXT: (ref.func $C) + ;; MOD3-EMPTY-NEXT: ) + ;; MOD3-EMPTY-NEXT: ) + ;; MOD3-EMPTY-NEXT: (f32.const 0) + ;; MOD3-EMPTY-NEXT: ) (func $C (type $ret-f32) (result f32) (drop (call_ref $ret-i32 @@ -245,3 +353,39 @@ ;; PRIMARY-PLACEHOLDER-NAMESPACE-NEXT: (i32.const 2) ;; PRIMARY-PLACEHOLDER-NAMESPACE-NEXT: ) ;; PRIMARY-PLACEHOLDER-NAMESPACE-NEXT: ) + +;; PRIMARY-EMPTY: (import ".2" "0" (func $placeholder_0 (result i64))) + +;; PRIMARY-EMPTY: (import ".3" "1" (func $placeholder_1 (result f32))) + +;; PRIMARY-EMPTY: (import ".1" "2" (func $placeholder_2 (result i32))) + +;; PRIMARY-EMPTY: (table $0 3 funcref) + +;; PRIMARY-EMPTY: (elem $0 (i32.const 0) $placeholder_0 $placeholder_1 $placeholder_2) + +;; PRIMARY-EMPTY: (export "trampoline_B" (func $trampoline_B)) + +;; PRIMARY-EMPTY: (export "trampoline_C" (func $trampoline_C)) + +;; PRIMARY-EMPTY: (export "trampoline_A" (func $trampoline_A)) + +;; PRIMARY-EMPTY: (export "table" (table $0)) + +;; PRIMARY-EMPTY: (func $trampoline_B (result i64) +;; PRIMARY-EMPTY-NEXT: (call_indirect (type $ret-i64) +;; PRIMARY-EMPTY-NEXT: (i32.const 0) +;; PRIMARY-EMPTY-NEXT: ) +;; PRIMARY-EMPTY-NEXT: ) + +;; PRIMARY-EMPTY: (func $trampoline_C (result f32) +;; PRIMARY-EMPTY-NEXT: (call_indirect (type $ret-f32) +;; PRIMARY-EMPTY-NEXT: (i32.const 1) +;; PRIMARY-EMPTY-NEXT: ) +;; PRIMARY-EMPTY-NEXT: ) + +;; PRIMARY-EMPTY: (func $trampoline_A (result i32) +;; PRIMARY-EMPTY-NEXT: (call_indirect (type $ret-i32) +;; PRIMARY-EMPTY-NEXT: (i32.const 2) +;; PRIMARY-EMPTY-NEXT: ) +;; PRIMARY-EMPTY-NEXT: ) From c3385b9615a7498fdd4e530e13e0132a4fa57884 Mon Sep 17 00:00:00 2001 From: Heejin Ahn Date: Tue, 27 Jan 2026 22:48:41 +0000 Subject: [PATCH 2/5] clang-format --- src/tools/wasm-split/split-options.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/tools/wasm-split/split-options.cpp b/src/tools/wasm-split/split-options.cpp index f1cb171cdca..0295c72358a 100644 --- a/src/tools/wasm-split/split-options.cpp +++ b/src/tools/wasm-split/split-options.cpp @@ -267,18 +267,17 @@ WasmSplitOptions::WasmSplitOptions() {Mode::Split}, Options::Arguments::Zero, [&](Options* o, const std::string& argument) { jspi = true; }) - .add( - "--export-prefix", - "", - "An identifying prefix to prepend to new export names created " - "by module splitting.", - WasmSplitOption, - {Mode::Split, Mode::MultiSplit}, - Options::Arguments::One, - [&](Options* o, const std::string& argument) { - exportPrefix = argument; - hasExportPrefix = true; - }) + .add("--export-prefix", + "", + "An identifying prefix to prepend to new export names created " + "by module splitting.", + WasmSplitOption, + {Mode::Split, Mode::MultiSplit}, + Options::Arguments::One, + [&](Options* o, const std::string& argument) { + exportPrefix = argument; + hasExportPrefix = true; + }) .add("--profile-export", "", "The export name of the function the embedder calls to write the " From 5c4a57c54d4e29b104840bfdb31c425e716a89df Mon Sep 17 00:00:00 2001 From: Heejin Ahn Date: Tue, 27 Jan 2026 22:53:44 +0000 Subject: [PATCH 3/5] Use std::optional --- src/tools/wasm-split/split-options.cpp | 5 ----- src/tools/wasm-split/split-options.h | 13 +++++-------- src/tools/wasm-split/wasm-split.cpp | 20 ++++++++++---------- 3 files changed, 15 insertions(+), 23 deletions(-) diff --git a/src/tools/wasm-split/split-options.cpp b/src/tools/wasm-split/split-options.cpp index 0295c72358a..5179461b0d8 100644 --- a/src/tools/wasm-split/split-options.cpp +++ b/src/tools/wasm-split/split-options.cpp @@ -235,7 +235,6 @@ WasmSplitOptions::WasmSplitOptions() Options::Arguments::One, [&](Options* o, const std::string& argument) { importNamespace = argument; - hasImportNamespace = true; }) .add("--placeholder-namespace-prefix", "", @@ -247,7 +246,6 @@ WasmSplitOptions::WasmSplitOptions() Options::Arguments::One, [&](Options* o, const std::string& argument) { placeholderNamespacePrefix = argument; - hasPlaceholderNamespacePrefix = true; }) .add("--placeholder-namespace", "", @@ -257,7 +255,6 @@ WasmSplitOptions::WasmSplitOptions() Options::Arguments::One, [&](Options* o, const std::string& argument) { placeholderNamespacePrefix = argument; - hasPlaceholderNamespacePrefix = true; }) .add("--jspi", "", @@ -276,7 +273,6 @@ WasmSplitOptions::WasmSplitOptions() Options::Arguments::One, [&](Options* o, const std::string& argument) { exportPrefix = argument; - hasExportPrefix = true; }) .add("--profile-export", "", @@ -324,7 +320,6 @@ WasmSplitOptions::WasmSplitOptions() Options::Arguments::One, [&](Options* o, const std::string& argument) { secondaryMemoryName = argument; - hasSecondaryMemoryName = true; }) .add( "--emit-module-names", diff --git a/src/tools/wasm-split/split-options.h b/src/tools/wasm-split/split-options.h index ddbc80b181d..c9b47b6f026 100644 --- a/src/tools/wasm-split/split-options.h +++ b/src/tools/wasm-split/split-options.h @@ -18,6 +18,7 @@ #define wasm_tools_wasm_split_options_h #include "tools/tool-options.h" +#include namespace wasm { @@ -66,14 +67,10 @@ struct WasmSplitOptions : ToolOptions { std::string primaryOutput; std::string secondaryOutput; - std::string importNamespace; - bool hasImportNamespace = false; - std::string placeholderNamespacePrefix; - bool hasPlaceholderNamespacePrefix = false; - std::string secondaryMemoryName; - bool hasSecondaryMemoryName = false; - std::string exportPrefix; - bool hasExportPrefix = false; + std::optional importNamespace; + std::optional placeholderNamespacePrefix; + std::optional secondaryMemoryName; + std::optional exportPrefix; std::string manifestFile; std::string outPrefix; diff --git a/src/tools/wasm-split/wasm-split.cpp b/src/tools/wasm-split/wasm-split.cpp index 6181dcd0406..7171cc6a878 100644 --- a/src/tools/wasm-split/wasm-split.cpp +++ b/src/tools/wasm-split/wasm-split.cpp @@ -115,11 +115,11 @@ void instrumentModule(const WasmSplitOptions& options) { uint64_t moduleHash = hashFile(options.inputFiles[0]); InstrumenterConfig config; - if (options.hasImportNamespace) { - config.importNamespace = options.importNamespace; + if (options.importNamespace) { + config.importNamespace = *options.importNamespace; } - if (options.hasSecondaryMemoryName) { - config.secondaryMemoryName = options.secondaryMemoryName; + if (options.secondaryMemoryName) { + config.secondaryMemoryName = *options.secondaryMemoryName; } config.storageKind = options.storageKind; config.profileExport = options.profileExport; @@ -226,14 +226,14 @@ void setCommonSplitConfigs(ModuleSplitting::Config& config, const WasmSplitOptions& options) { config.usePlaceholders = options.usePlaceholders; config.minimizeNewExportNames = !options.passOptions.debugInfo; - if (options.hasImportNamespace) { - config.importNamespace = options.importNamespace; + if (options.importNamespace) { + config.importNamespace = *options.importNamespace; } - if (options.hasExportPrefix) { - config.newExportPrefix = options.exportPrefix; + if (options.exportPrefix) { + config.newExportPrefix = *options.exportPrefix; } - if (options.hasPlaceholderNamespacePrefix) { - config.placeholderNamespacePrefix = options.placeholderNamespacePrefix; + if (options.placeholderNamespacePrefix) { + config.placeholderNamespacePrefix = *options.placeholderNamespacePrefix; } } From 051ca2b47515934f91a76c11994bacebd17edf92 Mon Sep 17 00:00:00 2001 From: Heejin Ahn Date: Tue, 27 Jan 2026 22:53:56 +0000 Subject: [PATCH 4/5] clang-format --- src/tools/wasm-split/split-options.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/tools/wasm-split/split-options.cpp b/src/tools/wasm-split/split-options.cpp index 5179461b0d8..bcd7b1aa814 100644 --- a/src/tools/wasm-split/split-options.cpp +++ b/src/tools/wasm-split/split-options.cpp @@ -264,16 +264,15 @@ WasmSplitOptions::WasmSplitOptions() {Mode::Split}, Options::Arguments::Zero, [&](Options* o, const std::string& argument) { jspi = true; }) - .add("--export-prefix", - "", - "An identifying prefix to prepend to new export names created " - "by module splitting.", - WasmSplitOption, - {Mode::Split, Mode::MultiSplit}, - Options::Arguments::One, - [&](Options* o, const std::string& argument) { - exportPrefix = argument; - }) + .add( + "--export-prefix", + "", + "An identifying prefix to prepend to new export names created " + "by module splitting.", + WasmSplitOption, + {Mode::Split, Mode::MultiSplit}, + Options::Arguments::One, + [&](Options* o, const std::string& argument) { exportPrefix = argument; }) .add("--profile-export", "", "The export name of the function the embedder calls to write the " From 1fa588e7e48ab84e17e9b11eca580fe8d29b64c6 Mon Sep 17 00:00:00 2001 From: Heejin Ahn Date: Wed, 28 Jan 2026 01:03:32 +0000 Subject: [PATCH 5/5] Hoist system include --- src/tools/wasm-split/split-options.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tools/wasm-split/split-options.h b/src/tools/wasm-split/split-options.h index c9b47b6f026..fa54103542f 100644 --- a/src/tools/wasm-split/split-options.h +++ b/src/tools/wasm-split/split-options.h @@ -17,9 +17,10 @@ #ifndef wasm_tools_wasm_split_options_h #define wasm_tools_wasm_split_options_h -#include "tools/tool-options.h" #include +#include "tools/tool-options.h" + namespace wasm { const std::string DEFAULT_PROFILE_EXPORT("__write_profile");