Provided by: binaryen_120-3_amd64 bug

NAME

       wasm2js - manual page for wasm2js 120

DESCRIPTION

       ================================================================================ wasm2js INFILE

       Transform                   .wasm/.wat                  files                  to                  asm.js
       ================================================================================

       wasm2js options: ----------------

       --output,-o
              Output file (stdout if not specified)

       --allow-asserts
              Allow compilation of .wast testing asserts

       --pedantic
              Emulate WebAssembly trapping behavior

       --emscripten
              Emulate the glue in emscripten-compatible form (and not ES6 module form)

       --deterministic
              Replace WebAssembly trapping behavior deterministically (the default is to  not  care  about  what
              would trap in wasm, like a load out of bounds or integer divide by zero; with this flag, we try to
              be  deterministic  at least in what happens, which might or might not be to trap like wasm, but at
              least should not vary)

       --symbols-file
              Emit a symbols file that maps function indexes to their original names

       Optimization passes: --------------------

       --abstract-type-refining
              refine and merge abstract (never-created) types

       --alignment-lowering
              lower unaligned loads and stores to smaller aligned ones

       --asyncify
              async/await style transform, allowing pausing and resuming

       --avoid-reinterprets
              Tries to avoid reinterpret operations via more loads

       --cfp  propagate constant struct field values

       --cfp-reftest
              propagate constant struct field values, using ref.test

       --coalesce-locals
              reduce # of locals by coalescing

       --coalesce-locals-learning
              reduce # of locals by coalescing and learning

       --code-folding
              fold code, merging duplicates

       --code-pushing
              push code forward, potentially making it not always execute

       --const-hoisting
              hoist repeated constants to a local

       --dae  removes arguments to calls in an lto-like manner

       --dae-optimizing
              removes arguments to calls in an lto-like manner, and optimizes where we removed

       --dce  removes unreachable code

       --dealign
              forces all loads and stores to have alignment 1

       --denan
              instrument the wasm to convert NaNs into 0 at runtime

       --dfo  optimizes using the DataFlow SSA IR

       --directize
              turns indirect calls into direct ones

       --discard-global-effects
              discards global effect info

       --duplicate-function-elimination
              removes duplicate functions

       --duplicate-import-elimination
              removes duplicate imports

       --dwarfdump
              dump DWARF debug info sections from the read binary

       --emit-target-features
              emit the target features section in the output

       --extract-function
              leaves just one function (useful for debugging)

       --extract-function-index
              leaves just one function selected by index

       --flatten
              flattens out code, removing nesting

       --fpcast-emu
              emulates function pointer casts, allowing incorrect indirect calls to (sometimes) work

       --func-metrics
              reports function metrics

       --generate-dyncalls
              generate dynCall fuctions used by emscripten ABI

       --generate-global-effects
              generate global effect info (helps later passes)

       --generate-i64-dyncalls
              generate dynCall functions used by emscripten ABI, but  only  for  functions  with  i64  in  their
              signature (which cannot be invoked via the wasm table without JavaScript BigInt support).

       --global-refining
              refine the types of globals

       --gsi  globally optimize struct values

       --gto  globally optimize GC types

       --gufa Grand  Unified Flow Analysis: optimize the entire program using information about what content can
              actually appear in each location

       --gufa-cast-all
              GUFA plus add casts for all inferences

       --gufa-optimizing
              GUFA plus local optimizations in functions we modified

       --heap-store-optimization
              optimize heap (GC) stores

       --heap2local
              replace GC allocations with locals

       --i64-to-i32-lowering
              lower all uses of i64s to use i32s instead

       --inline-main
              inline __original_main into main

       --inlining
              inline functions (you probably want inlining-optimizing)

       --inlining-optimizing
              inline functions and optimizes where we inlined

       --instrument-locals
              instrument the build with code to intercept all loads and stores

       --instrument-memory
              instrument the build with code to intercept all loads and stores

       --intrinsic-lowering
              lower away binaryen intrinsics

       --jspi wrap imports and exports for JavaScript promise integration

       --legalize-and-prune-js-interface
              legalizes the import/export boundary and prunes when needed

       --legalize-js-interface
              legalizes i64 types on the import/export boundary

       --licm loop invariant code motion

       --limit-segments
              attempt to merge segments to fit within web limits

       --local-cse
              common subexpression elimination inside basic blocks

       --local-subtyping
              apply more specific subtypes to locals where possible

       --log-execution
              instrument the build with logging of where execution goes

       --memory-packing
              packs memory into separate segments, skipping zeros

       --memory64-lowering
              lower loads and stores to a 64-bit memory to instead use a 32-bit one

       --merge-blocks
              merges blocks to their parents

       --merge-j2cl-itables
              Merges itable structures into vtables to make types more compact

       --merge-locals
              merges locals when beneficial

       --merge-similar-functions
              merges similar functions when benefical

       --metrics
              reports metrics (with an optional title, --metrics[=TITLE])

       --minify-imports
              minifies import names (only those, and not export names), and emits a mapping to the minified ones

       --minify-imports-and-exports
              minifies both import and export names, and emits a mapping to the minified ones

       --minify-imports-and-exports-and-modules
              minifies both import and export names, and emits a mapping to the minified ones, and minifies  the
              modules as well

       --minimize-rec-groups
              Split types into minimal recursion groups

       --mod-asyncify-always-and-only-unwind
              apply the assumption that asyncify imports always unwind, and we never rewind

       --mod-asyncify-never-unwind
              apply the assumption that asyncify never unwinds

       --monomorphize
              creates specialized versions of functions

       --monomorphize-always
              creates specialized versions of functions (even if unhelpful)

       --multi-memory-lowering
              combines multiple memories into a single memory

       --multi-memory-lowering-with-bounds-checks
              combines  multiple memories into a single memory, trapping if the read or write is larger than the
              length of the memory's data

       --name-types
              (re)name all heap types

       --nm   name list

       --no-full-inline
              mark functions as no-inline (for full inlining only)

       --no-inline
              mark functions as no-inline

       --no-partial-inline
              mark functions as no-inline (for partial inlining only)

       --once-reduction
              reduces calls to code that only runs once

       --optimize-added-constants
              optimizes added constants into load/store offsets

       --optimize-added-constants-propagate
              optimizes added constants into load/store offsets, propagating them across locals too

       --optimize-casts
              eliminate and reuse casts

       --optimize-for-js
              early optimize of the instruction combinations for js

       --optimize-instructions
              optimizes instruction combinations

       --optimize-j2cl
              optimizes J2CL specific constructs.

       --outlining
              outline instructions

       --pick-load-signs
              pick load signs based on their uses

       --poppify
              Tranform Binaryen IR into Poppy IR

       --post-emscripten
              miscellaneous optimizations for Emscripten-generated code

       --precompute
              computes compile-time evaluatable expressions

       --precompute-propagate
              computes compile-time evaluatable expressions and propagates them through locals

       --print
              print in s-expression format

       --print-call-graph
              print call graph

       --print-features
              print options for enabled features

       --print-full
              print in full s-expression format

       --print-function-map
              print a map of function indexes to names

       --print-minified
              print in minified s-expression format

       --propagate-debug-locs
              propagate debug location from parents or previous siblings to child nodes

       --propagate-globals-globally
              propagate global values to other globals (useful for tests)

       --remove-imports
              removes imports and replaces them with nops

       --remove-memory
              removes memory segments

       --remove-non-js-ops
              removes operations incompatible with js

       --remove-unused-brs
              removes breaks from locations that are not needed

       --remove-unused-module-elements
              removes unused module elements

       --remove-unused-names
              removes names from locations that are never branched to

       --remove-unused-nonfunction-module-elements
              removes unused module elements that are not functions

       --remove-unused-types
              remove unused private GC types

       --reorder-functions
              sorts functions by access frequency

       --reorder-functions-by-name
              sorts functions by name (useful for debugging)

       --reorder-globals
              sorts globals by access frequency

       --reorder-locals
              sorts locals by access frequency

       --rereloop
              re-optimize control flow using the relooper algorithm

       --roundtrip
              write the module to binary, then read it

       --rse  remove redundant local.sets

       --safe-heap
              instrument loads and stores to check for invalid behavior

       --separate-data-segments
              write data segments to a file and strip them from the module

       --set-globals
              sets specified globals to specified values

       --signature-pruning
              remove params from function signature types where possible

       --signature-refining
              apply more specific subtypes to signature types where possible

       --signext-lowering
              lower sign-ext operations to wasm mvp and disable the sign extension feature

       --simplify-globals
              miscellaneous globals-related optimizations

       --simplify-globals-optimizing
              miscellaneous globals-related optimizations, and optimizes  where  we  replaced  global.gets  with
              constants

       --simplify-locals
              miscellaneous locals-related optimizations

       --simplify-locals-nonesting
              miscellaneous locals-related optimizations (no nesting at all; preserves flatness)

       --simplify-locals-nostructure
              miscellaneous locals-related optimizations (no structure)

       --simplify-locals-notee
              miscellaneous locals-related optimizations (no tees)

       --simplify-locals-notee-nostructure
              miscellaneous locals-related optimizations (no tees or structure)

       --souperify
              emit Souper IR in text form

       --souperify-single-use
              emit Souper IR in text form (single-use nodes only)

       --spill-pointers
              spill pointers to the C stack (useful for Boehm-style GC)

       --ssa  ssa-ify variables so that they have a single assignment

       --ssa-nomerge
              ssa-ify variables so that they have a single assignment, ignoring merges

       --stack-check
              enforce limits on llvm's __stack_pointer global

       --string-gathering
              gathers wasm strings to globals

       --string-lowering
              lowers wasm strings and operations to imports

       --string-lowering-magic-imports
              same as string-lowering, but encodes well-formed strings as magic imports

       --string-lowering-magic-imports-assert
              same as string-lowering-magic-imports, but raise a fatal error if there are invalid strings

       --strip
              deprecated; same as strip-debug

       --strip-debug
              strip debug info (including the names section)

       --strip-dwarf
              strip dwarf debug info

       --strip-eh
              strip EH instructions

       --strip-producers
              strip the wasm producers section

       --strip-target-features
              strip the wasm target features section

       --stub-unsupported-js
              stub out unsupported JS operations

       --symbolmap
              (alias for print-function-map)

       --table64-lowering
              lower 64-bit tables 32-bit ones

       --trace-calls
              instrument the build with code to intercept specific function calls

       --translate-to-exnref
              translate old Phase 3 EH instructions to new ones with exnref

       --translate-to-new-eh
              deprecated; same as translate-to-exnref

       --trap-mode-clamp
              replace trapping operations with clamping semantics

       --trap-mode-js
              replace trapping operations with js semantics

       --tuple-optimization
              optimize trivial tuples away

       --type-finalizing
              mark all leaf types as final

       --type-merging
              merge types to their supertypes where possible

       --type-refining
              apply more specific subtypes to type fields where possible

       --type-ssa
              create new nominal types to help other optimizations

       --type-unfinalizing
              mark all types as non-final (open)

       --unsubtyping
              removes unnecessary subtyping relationships

       --untee
              removes local.tees, replacing them with sets and gets

       --vacuum
              removes obviously unneeded code

       Optimization options: ---------------------

       -O     execute default optimization passes (equivalent to -Os)

       -O0    execute no optimization passes

       -O1    execute -O1 optimization passes (quick&useful opts, useful for iteration builds)

       -O2    execute -O2 optimization passes (most opts, generally gets most perf)

       -O3    execute -O3 optimization passes (spends potentially a lot of time optimizing)

       -O4    execute  -O4  optimization passes (also flatten the IR, which can take a lot more time and memory,
              but is useful on more nested / complex / less-optimized input)

       -Os    execute default optimization passes, focusing on code size

       -Oz    execute default optimization passes, super-focusing on code size

       --optimize-level,-ol
              How much to focus on optimizing code

       --shrink-level,-s
              How much to focus on shrinking code size

       --debuginfo,-g
              Emit names section in wasm binary (or full debuginfo in wast)

       --always-inline-max-function-size,-aimfs
              Max size of functions that are always inlined (default 2, which is safe for use with -Os builds)

       --flexible-inline-max-function-size,-fimfs
              Max size of functions that are  inlined  when  lightweight  (no  loops  or  function  calls)  when
              optimizing aggressively for speed (-O3). Default: 20

       --one-caller-inline-max-function-size,-ocimfs Max size of functions that are
              inlined when there is only one caller (default -1, which means all such functions are inlined)

       --inline-functions-with-loops,-ifwl
              Allow inlining functions with loops

       --partial-inlining-ifs,-pii
              Number of ifs allowed in partial inlining (zero means partial inlining is disabled) (default: 0)

       --ignore-implicit-traps,-iit
              Optimize under the helpful assumption that no surprising traps occur (from load, div/mod, etc.)

       --traps-never-happen,-tnh
              Optimize  under  the  helpful  assumption  that no trap is reached at runtime (from load, div/mod,
              etc.)

       --low-memory-unused,-lmu
              Optimize under the helpful assumption that the low 1K of memory is not used by the application

       --fast-math,-ffm
              Optimize floats without handling corner cases of NaNs and rounding

       --zero-filled-memory,-uim
              Assume that an imported memory will be zero-initialized

       --skip-pass,-sp
              Skip a pass (do not run it)

       Tool options: -------------

       --mvp-features,-mvp
              Disable all non-MVP features

       --all-features,-all
              Enable all features

       --detect-features
              (deprecated - this flag does nothing)

       --quiet,-q
              Emit less verbose output and hide trivial warnings.

       --experimental-poppy
              Parse wast files as Poppy IR for testing purposes.

       --enable-sign-ext
              Enable sign extension operations

       --disable-sign-ext
              Disable sign extension operations

       --enable-threads
              Enable atomic operations

       --disable-threads
              Disable atomic operations

       --enable-mutable-globals
              Enable mutable globals

       --disable-mutable-globals
              Disable mutable globals

       --enable-nontrapping-float-to-int
              Enable nontrapping float-to-int operations

       --disable-nontrapping-float-to-int
              Disable nontrapping float-to-int operations

       --enable-simd
              Enable SIMD operations and types

       --disable-simd
              Disable SIMD operations and types

       --enable-bulk-memory
              Enable bulk memory operations

       --disable-bulk-memory
              Disable bulk memory operations

       --enable-exception-handling
              Enable exception handling operations

       --disable-exception-handling
              Disable exception handling operations

       --enable-tail-call
              Enable tail call operations

       --disable-tail-call
              Disable tail call operations

       --enable-reference-types
              Enable reference types

       --disable-reference-types
              Disable reference types

       --enable-multivalue
              Enable multivalue functions

       --disable-multivalue
              Disable multivalue functions

       --enable-gc
              Enable garbage collection

       --disable-gc
              Disable garbage collection

       --enable-memory64
              Enable memory64

       --disable-memory64
              Disable memory64

       --enable-relaxed-simd
              Enable relaxed SIMD

       --disable-relaxed-simd
              Disable relaxed SIMD

       --enable-extended-const
              Enable extended const expressions

       --disable-extended-const
              Disable extended const expressions

       --enable-strings
              Enable strings

       --disable-strings
              Disable strings

       --enable-multimemory
              Enable multimemory

       --disable-multimemory
              Disable multimemory

       --enable-typed-continuations
              Enable typed continuations

       --disable-typed-continuations
              Disable typed continuations

       --enable-shared-everything
              Enable shared-everything threads

       --disable-shared-everything
              Disable shared-everything threads

       --enable-fp16
              Enable float 16 operations

       --disable-fp16
              Disable float 16 operations

       --enable-typed-function-references
              Deprecated compatibility flag

       --disable-typed-function-references
              Deprecated compatibility flag

       --no-validation,-n
              Disables validation, assumes inputs are correct

       --pass-arg,-pa
              An argument passed along to optimization passes being run.  Must be in the form KEY@VALUE.  If KEY
              is the name of a pass then it applies to the closest instance of that pass before us.  If  KEY  is
              not the name of a pass then it is a global option that applies to all pass instances that read it.

       --closed-world,-cw
              Assume  code  outside  of the module does not inspect or interact with GC and function references,
              even if they are passed out. The outside may hold on to them  and  pass  them  back  in,  but  not
              inspect their contents or call them.

       --preserve-type-order
              Preserve the order of types from the input (useful for debugging and testing)

       --generate-stack-ir
              generate StackIR during writing

       --optimize-stack-ir
              optimize StackIR during writing

       --print-stack-ir
              print StackIR during writing

       --no-stack-ir
              do not use StackIR (even when it is the default)

       General options: ----------------

       --version
              Output version information and exit

       --help,-h
              Show this help message and exit

       --debug,-d
              Print debug information to stderr

wasm2js 120                                       February 2025                                       WASM2JS(1)