summaryrefslogtreecommitdiff
path: root/test/passes/optimize-instructions_optimize-level=2_ignore-implicit-traps.txt
Commit message (Collapse)AuthorAgeFilesLines
* memory.copy: use nop reductions only for ignoreImplicitTraps (#3074)Max Graey2020-08-241-362/+0
| | | | | | | | | According to changes in spec: WebAssembly/bulk-memory-operations#124 WebAssembly/bulk-memory-operations#145 we unfortunately can't fold to nop even for memory.copy(x, y, 0). So this PR revert all reductions to nop but do this only under ignoreImplicitTraps flag
* Remove function index printing (#2742)Thomas Lively2020-04-091-6/+6
| | | | | | | | `BinaryIndexes` was only used in two places (Print.cpp and wasm-binary.h), so it didn't seem to be a great fit for module-utils.h. This change moves it to wasm-binary.h and removes its usage in Print.cpp. This means that function indexes are no longer printed, but those were of limited utility and were the source of annoying noise when updating tests, anyway.
* Remove FunctionType (#2510)Thomas Lively2019-12-111-8/+8
| | | | | | | | | | | | | | | | | Function signatures were previously redundantly stored on Function objects as well as on FunctionType objects. These two signature representations had to always be kept in sync, which was error-prone and needlessly complex. This PR takes advantage of the new ability of Type to represent multiple value types by consolidating function signatures as a pair of Types (params and results) stored on the Function object. Since there are no longer module-global named function types, significant changes had to be made to the printing and emitting of function types, as well as their parsing and manipulation in various passes. The C and JS APIs and their tests also had to be updated to remove named function types.
* Refactor type and function parsing (#2143)Heejin Ahn2019-05-241-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - Refactored & fixed typeuse parsing rules so now the rules more closely follow the spec. There have been multiple parsing rules that were different in subtle ways, which are supposed to be the same according to the spec. - Duplicate types, i.e., types with the same signature, in the type section are allowed as long as they don't have the same given name. If a name is given, we use it; if type name is not given, we generate one in the form of `$FUNCSIG$` + signature string. If the same generated name already exists in the type section, we append `_` at the end. This causes most of the changes in the autogenerated type names in test outputs. - A typeuse has to be in the order of (type) -> (param) -> (result), if more than one of them exist. In case of function definitions, (local) has to be after all of these. Fixed some test cases that violate this rule. - When only (param)/(result) are given, its type will be the type with the smallest existing type index whose parameter and result are the same. If there's no such type, a new type will be created and inserted. - Added a test case `duplicate_types.wast` to test type namings for duplicate types. - Refactored `parseFunction` function. - Add more overrides to helper functions: `getSig` and `ensureFunctionType`.
* Massive renaming (#1855)Thomas Lively2019-01-071-62/+62
| | | | | | Automated renaming according to https://github.com/WebAssembly/spec/issues/884#issuecomment-426433329.
* Stricter Canonicalization (#1774)Alon Zakai2018-11-271-3/+3
| | | In OptimizeInstructions we canonicalized a const on the right side. This PR adds further canonicalization, of a get to the right, and of sorting by binary and unary op ids. This guarantees fixed orders for small combinations of instructions that can then be pattern-matched in a simple way in future PRs.
* Emit binary function index in comment in text format, for convenience (#1232)Alon Zakai2017-10-201-6/+6
|
* Return to more structured type rules for block and if (#1148)Alon Zakai2017-09-051-0/+38
| | | | | | | | * if a block has a concrete final element (or a break with a value), then even if it has an unreachable child, keep it with that concrete type. this means we no longe allow the silly case of a block with an unreachable in the middle and a concrete as the final element while the block is unreachable - after this change, the block would have the type of the final element * if an if has a concrete element in one arm, make it have that type as a result, even if the if condition is unreachable, to parallel block * make type rules for brs and switches simpler, ignore whether they are reachable or not. whether they are dead code should not affect how they influence other types in our IR.
* do not swap elements in conditionalizeExpensiveOnBitwise if they invalidate ↵Alon Zakai (kripken)2017-07-291-0/+70
| | | | each other - it is not enough to check side effects, we must check the interaction as well
* Support new result syntax for if/loop/block (#1047)Sam Clegg2017-06-121-5/+5
| | | | | | Support both syntax formats in input since the old spec tests still need to be parsable.
* use a single space for pretty printing of wasts, so massive wasts are less ↵Alon Zakai2017-03-091-221/+221
| | | | unruly (#928)
* optimize out add/sub of 0Alon Zakai (kripken)2017-02-161-8/+2
|
* Improve handling of implicit traps (#898)Alon Zakai2017-02-061-0/+260
* add --ignore-implicit-traps option, and by default do not ignore them, to properly preserve semantics * implicit traps can be reordered, but are side effects and should not be removed * add testing for --ignore-implicit-traps