| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Loops are modeled in Binaryen IR as having a Block as a body. The block
is added to module walkers and validated like a normal block.
In s2wasm when we add the blocks, we need to make sure that the type of
the loop body matches the type of the loop itself, or we run into
issues.
|
| |
|
|
|
| |
Push code forward, potentially letting it not execute
|
|
|
| |
When we have expensive | expensive, and both are boolean, then we can execute one of them conditionally if it doesn't have side effects.
|
|
|
|
|
|
| |
* asm.js corrections to unit.asm.js test
* optimize out bool&1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Update s2wasm for reordered call_indirect
https://reviews.llvm.org/D25708 fixed call_indirect for 0xc by
reordering the operands. s2wasm needs to be aware of that too.
* Update llvm_autogenerated tests
* Update torture-s tests
* run auto_update_tests
* update handwritten dot_s test that had call_indirect with args
|
| |
|
|
|
|
|
|
|
|
| |
* add a coalesce-locals test for costly backedges
* add script to strip local names out, for convenient diffing
* prioritize backedge copies
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add support for i64.store[N]
Previously storing i64 in the interpreter assumed an 8byte store. Stores
like i64.store8 would then use the special-case i64 storing code, when
they could just use the i32.store8 code.
* Add printf test for interpreter
* Update wasm.js
|
|
|
|
| |
* add PassOptions structure, and use it for new -Os param to wasm-opt
|
| |
|
|
|
|
| |
coalesce-locals, making it much faster (#783)
|
| |
|
|
|
|
| |
operation masks itself
|
|\
| |
| | |
Add remove-unused-functions to default passes
|
| | |
|
|/
|
|
|
| |
The emscripten JS module code creates the memory using the native wasm
APIs, and imports that into the wasm module.
|
|
|
|
|
|
|
|
| |
* Do not use exported memory as a root set of RemoveUnusedFunctions pass
RemoveUnusedFunctions pass of wasm-opt fails when the memory is exported.
That's due to a wrong root set handling on the exported symbols.
This CL fixes the failure by ignoring non-function exported symbol.
|
|\
| |
| | |
Fix simplify-locals when adding a value to a br_if
|
| |
| |
| |
| | |
must be dropped
|
|/ |
|
| |
|
|
|
|
| |
landed in upstream (#754)
|
| |
|
|
|
|
| |
specified (#760)
|
| |
|
| |
|
| |
|
|
|
| |
Previously the Print pass searched the imports for a table import and skipped printing a local table declaration if found. Instead this refactors to make importation explicit, and also create importation records (previously we were inconsistent about whether such records were created in the IR depending on the wast syntax).
|
|
|
|
| |
anyhow, and it just adds overhead to not ignore it
|
|
|
|
|
|
|
|
| |
In wast files, the spec and WABT require imports to appear before any
non-import definitions (see also
https://github.com/WebAssembly/wabt/issues/152). This patch re-orders
visitModule in the wast printer to meet this requirement, and more or
less match the order of the binary sections. Also remove extraneous
whitespace around table definitions.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* Support block signatures in s2wasm's .s format
* Autogenerate tests
* update cfg-stackify tests
* Remove conflict files
|
|
|
|
| |
Corresponds to LLVM change https://reviews.llvm.org/D25122, r283502
|
|
|
|
| |
Corresponds to LLVM change https://reviews.llvm.org/D25122
|
|
|
|
| |
Use the command-line instead.
Also update the blacklist to handle new tests.
|
|
|
|
|
| |
* fix a dce bug where it is invalid to truncate a block if it leaves a final element with a bad type (wasm doesn't always allow removing unreachable code)
* add wast pass fuzzer
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* Update i64 stores for 0xc
* Update autogenerated LLVM tests
* Update known torture test failures
* Add i64.store32 test to unit.wast
|
|
|
|
| |
isn't a default (#734)
|
| |
|
| |
|
|
|
|
|
|
| |
* wasm-only loads and stores
* wasm-only 32-bit bitcasts
|
|
|
|
|
|
|
|
|
|
|
|
| |
* support i64 intrinsics from fastcomp, adding --wasm-only flag
* refactor callImport logic in asm2wasm to avoid recomputing wasm types again
* legalize illegal i64 params in exports and imports
* do safe i64 binary ops depending on precision
* fix addVar, only assert on names if we are using a name
|
|
|
|
|
|
|
| |
Previously a table was only created if there were any address-taken
functions. New module validation rules require the existence of
a table for any call-indirects to validate (even if they are dead and
never called). However this use case seems common enough that we might
want to make it continue to work. So the linker now always creates an empty table segment (indicating an empty table).
|
| |
|