| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
|
|
|
| |
* fix wasm-reduce when out-of-tree: do not use a hardcoded bin/wasm-opt, instead add a Path namespace with utilities to get the proper path, and use BINARYEN_ROOT which our test setup code ensures
|
|
|
| |
* Also other function utilities in C and JS APIs
|
| |
|
|
|
|
| |
* fix a code-folding bug where when merging function-level tails, we moved code out of where it could reach a break target - we must not move code if it has a break target not enclosed in itself. the EffectAnalyzer already had the functionality for that, move the code around a little there to make that clearer too
|
|
|
|
|
| |
* flatten tee_local in flatten, as it leads to more-optimizable code (tee_local, when nested, can introduce side effects in bad places).
* also fix some test stuff from recent merges
|
|
|
|
| |
* fix if copying - we should preserve the forced explicit type if there is one, and not just infer it from the arms. this adds a builder method for makeIf that receives a type to apply to the if, and for blocks a method that makes a block from a list, also with a variant with a provided type
|
| |
|
| |
|
|
|
|
|
|
| |
* add i64_atomics_* support to asm2wasm
* OptimizeInstructions: atomic loads can't be signed
|
| |
|
| |
|
|
|
|
| |
Function type gets its own element rather than being a part of the call_indirect
(see WebAssembly/spec#599)
|
|
|
| |
Now also includes a test.
|
| |
|
|
|
|
| |
* add fuzz-pass option, which picks random passes to fuzz in each wasm-opt invocation
|
| |
|
|
|
|
|
|
| |
* Fixed use of undefined 'types' array in BinaryenAddGlobal tracing
* also fix use of 'expressions'
|
|
|
|
| |
* fix relooper bug, ensure function body has right type, as relooper output does not flow stuff out, but wasm functions with a result do expect a flow value, so none is not an option. in other words, as the docs say, a relooper block must end with a terminator (return, unreachable, break, etc.) and not flow out.
|
|
|
|
|
|
| |
* Added BinaryenAtomicRMW incl. ops to binaryen-c
* AtomicCmpxchg, AtomicWait, AtomicWake
|
|
|
|
| |
flags (#1277)
|
|
|
|
| |
binaryen-c (#1270)
|
|
|
| |
Do not print the entire and possibly very large module when validation fails. Leave printing to tools using the validator, instead of always doing it in the validator where it can't be overridden.
|
|
|
|
| |
* fix wasm2asm in binaryen.js, the function locals may not all have names, so add them as necessary
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This enum describes which wasm features the IR is expected to include. The
validator should reject operations which require excluded features, and passes
should avoid producing IR which requires excluded features.
This makes it easier to catch possible errors in Binaryen producers (e.g.
emscripten). Asm2wasm has a flag to enable or disable atomics. Other
tools currently just accept all features (as, dis and opt are just for
inspecting or modifying existing modules, so it would be annoying to have to use
flags with those tools and I expect the risk of accidentally introducing
atomics to be low).
|
|
|
| |
The IR is indeed a tree, but not an "abstract syntax tree" since there is no language for which it is the syntax (except in the most trivial and meaningless sense).
|
|
|
|
|
| |
Generalize constant emitting in fuzzer, using +-1 and *+-1 effects to create more constants in a convenient way.
Also workaround for a gcc-7.2/windows issue that we don't fully understand, but removing the 1, -1 from those pick() calls avoids the bug.
|
|
|
|
| |
And add a visitor which must override all its elements, so this never happens again
|
| |
|
|
|
| |
|passOptions| in wasm-ctor-eval.cpp causes a compile failure, -Wunused-variable on the clang build.
|
| |
|
| |
|
| |
|
|
|
|
| |
complaining about out-of-range values (#1233)
|
| |
|
|
|
|
|
|
|
|
| |
* avoid returning a PassRunner just for OptimizationOptions, it would need a more careful design with a copy constructor. instead, just simplify the API to do the thing we need, which is run the passes
* disallow copy constructor
* delete copy operator too
|
|
|
|
| |
los of extra inefficient variables. this is more similar to the output we had before the flatten rewrite (#1229)
|
|
|
|
| |
other similar APIs) and fix some ctor-evalling handling of imports, which was incorrect - we need to create fake globals when importing globals, not later, which is too late for initialized globals from imports (#1226)
|
|
|
|
| |
now that the type system has a proper unreachable, we don't need obviouslyDoesNotFlowOut
|
|
|
|
|
|
|
|
| |
* Fixed parseFile() skipping every other line
Was caused by "s = strchr(s, '\n')"
Also replaced recordFile() by parseFile() as they do exactly the same
* Added parseFile() to process() in s2wasm.h
|
|
|
|
| |
them around, causing us to zero out the wrong thing in another place and ensuing hilarity (#1212)
|
|
|
|
| |
we are moving code out of the br_if's condition - the value executes before (#1213)
|
|
|
|
| |
blocks (#1214)
|
| |
|
| |
|
|
|
|
| |
effect up. also add set_global support in dce (#1218)
|
| |
|
|
|
|
| |
may be unreachable (#1216)
|