| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
Minus multi-memory which we don't support yet.
Improve validator.
Fix some minor validation issues in our tests.
|
|
|
|
|
|
|
|
|
| |
This allows
wasm-opt --pass-arg=KEY:VALUE
where KEY and VALUE are strings. It is then added to passOptions.arguments, where passes can read it.
This is used in ExtractFunction instead of an env var.
|
|\
| |
| | |
They are nondeterministic between VMs, so disable VM comparisons in that case.
|
| | |
|
| |\ |
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* wip [ci skip]
* works
* test output
* test update
* js build
* better location for running directize
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Convert PIC code generated by llvm to work with the current emscripten
ABI for dynamic linking:
- Convert mutable global imports from GOT.mem and GOT.func into
internal globals.
- Initialize these globals on started up in g$foo and f$foo imported functions
to calculate addresses at runtime.
Also:
- Add a test case for linking and finalizing a shared library
- Allow __stack_pointer global to be non-existent as can be case for
a shared library.
- Allow __stack_pointer global to be an import, as can be the case for
a shared library.
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This commit tweaks the AppVeyor configuration to publish 64 and 32-bit
artifacts as part of the normal release builds. Configuration was also
added to be sure to compile code with `/MT` on MSVC to ensure that the
released artifacts depend on as few DLLs as possible, hopefully making
them as portable as possible.
cc #1695
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This renames the following:
- `i32.wait` -> `i32.atomic.wait`
- `i64.wait` -> `i64.atomic.wait`
- `wake` -> `atomic.notify`
to match the spec.
|
| | | |
|
| | |
| | |
| | | |
Not an actual problem, but hits an assertion in D_GLIBCXX_DEBUG, and is likely UB.
|
| | |
| | |
| | | |
It is not very useful.
|
| | |
| | |
| | |
| | | |
(Legacy)RandomAccessIterator concept (#1962)
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
Moves the feature validation unit test file to a new directory,
'unit', and adds new tests for SIMD and sign-ext. Adds validation for
v128 globals and v128.const.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This adds an ssa-nomerge pass, which like ssa creates new local indexes for each set, but it does not alter indexes that have merges (in practice adding indexes to merges can lead to more copies in the end.)
This also stops adding a new local index for a set that is already in "ssa form", that is, has only one set (aside from the zero initialization which wasm mandates, but for an "ssa form" index, that must not be used).
This then enables ssa-nomerge in -O3 and -Os. This doesn't help much on well-optimized code like from the wasm backend (but it does sometimes - 0.5% code size improvement on Box2D), but on AssemblyScript for example it can remove a copy in the n-body benchmark as can be seen in the test updates here.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
A propagated constant can be helpful in the various patterns in optimize instructions.
Testcase shows an example of this in action - we can optimize out a load offset for a constant, but if we propagated it afterwards, we would miss that.
In general these two passes can help each other, so maybe they should be combined and run multiple iterations, but that's what --converge is for. Meanwhile this change improves us on what seems to be the more common case - guessed at by it being what I noticed in practice, and when I run the fuzzer, I see only this type of case.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Accidentally introduced in #1698, it looks like the
`MACOSX_DEPLOYMENT_TARGET` can't be set so low to 10.7 because it causes
build errors. After some [investigation] it looks like the minimum
currently required is 10.9, so this commit changes the OSX deployment
target to 10.9 in an effort to be compatible with as many OSX
installations as possible.
[investigation]: https://travis-ci.org/WebAssembly/binaryen/builds/509462566
|
| | |
| | |
| | |
| | |
| | | |
- Move auto_update_tests.py code into respective scripts
- Use shared argument parsing in generate_lld_tests.py
- Use wasm-ld rather than passing -flavor
|
| |/
|/| |
|
| |
| |
| |
| |
| |
| | |
unittest is Python's standard testing framework, so this change allows
arbitrary tests to be written without introducing any new dependencies
or code in check.py. A new test that was not possible to write before
is also included. It is the first of many.
|
| |
| |
| |
| |
| | |
Recreate it using --extract-function which turns unwanted functions into exports. This avoids weirdness with them having empty function bodies and the inliner taking advantage of that.
Also uses updated LLVM, which no longer has incorrectly identified irreducible control flow here.
|
| |
| |
| |
| | |
Also, always output high level metrics even when zero.
|
| |
| |
| |
| |
| | |
Parse the formats allowed by the spec proposal and emit the i32x4
canonical format.
|
| |
| |
| |
| |
| |
| | |
Refactors features into a new wasm-features.h file and updates the
validator to check that all types are allowed. Currently this is only
relevant for the v128 SIMD type, but new types will be added in the
future. The test for this change is in #1948.
|
| |
| |
| |
| | |
This is necessary to write tests that don't require temporary files,
such as in #1948, and is generally useful.
|
| | |
|
| |
| |
| |
| |
| |
| | |
With this we can write stuff like:
const wasm::Expression* p;
const wasm::Binary* q = p->cast<wasm::Binary>();
|
| |
| |
| | |
fixes #1695
|
| |
| |
| | |
Removed semicolons that cause errors when compiling with -pedantic-errors.
|
| | |
|
| |
| |
| | |
And run it in wasm-emscripten-finalize. This will prevent the emscripten output from changing when the target features section lands in LLVM.
|
| |
| |
| |
| | |
unconditionally erasing it in all --strip passes (#1939)
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
(#1944)
We expect the stack pointer to be of a certain type. This fixes
a segfault we are seeing when passed a binary which doesn't quite
meet our expectations.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
This PR adds
void BinaryenConstGetValueV128(BinaryenExpressionRef expr, uint8_t* out);
to the C-API and uses it in Binaryen.getExpressionInfo in the JS-API.
|
|/
|
|
| |
We now implement addFunction by creating a wasm module to wrap
that JS function and simply adding it to the table.
|
| |
|
|
|
|
|
|
|
| |
That caused it to miss switch targets, and a code-folding bug.
Fixes #1838
Sadly the fuzzer didn't find this because code folding looks for very particular code patterns that are unlikely to be emitted randomly.
|
|
|
|
| |
Noramlly --help is considered normal output not error output. For
example its normally to pipe the output of --help to a pager.
|
| |
|
|
|
|
| |
that one var by reusing a param
|