summaryrefslogtreecommitdiff
path: root/src/passes/MergeBlocks.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Address review feedback for #1014 (#1016)Alon Zakai2017-05-181-2/+2
| | | | | | * address review feedback for #1014
* Validate finalization (#1014)Alon Zakai2017-05-181-2/+19
| | | | | | | * validate that types are properly finalized, when in pass-debug mode (BINARYEN_PASS_DEBUG env var): check after each pass is run that the type of each node is equal to the proper type (when finalizing it, i.e., fully recomputing the type). * fix many fuzz bugs found by that. * in particular, fix dce bugs with type changes not being fully updated during code removal. add a new TypeUpdater helper class that lets a pass update types efficiently, by the helper tracking deps between blocks and branches etc., and updating/propagating type changes only as necessary.
* Default Walker subclasses to using Visitor<SubType> (#921)jgravelle-google2017-02-231-3/+3
| | | | Most module walkers use PostWalker<T, Visitor<T>>, let that pattern be expressed as simply PostWalker<T>
* Improve handling of implicit traps (#898)Alon Zakai2017-02-061-5/+5
| | | | | | | | * 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
* use MixedArena in asm.js astAlon Zakai (kripken)2017-01-311-1/+1
|
* fix a reordering bug in merge-blocks (#846)Alon Zakai2016-11-251-2/+6
|
* optimize child blocks in merge-blocks when we drop values in them, they may ↵Alon Zakai2016-10-291-60/+73
| | | | have new subchild blocks
* fix break value removal in merge-blocks: a br_if's type changes without a ↵Alon Zakai2016-10-291-1/+10
| | | | value, so finalize the node, and remove the drop
* handle the case of a br_if whose value is used in merge-blocksAlon Zakai2016-10-291-14/+38
|
* move drop into blocks, dropping all the breaks as well, when possibleAlon Zakai2016-09-071-8/+58
|
* add drop and tee expressionsAlon Zakai2016-09-071-0/+19
|
* Add initialization functions for passes to avoid missing pass registration ↵Jukka Jylänki2016-06-211-1/+3
| | | | due to linker dead code elimination. Fixes #577.
* move function parallelism to pass and pass runner, which allows more ↵Alon Zakai2016-06-031-1/+3
| | | | efficient parallel execution (#564)
* fix a merge-blocks bug where we merged named blocksAlon Zakai2016-05-251-1/+1
|
* move blocks outside in merge-blocks so that they can be merged laterAlon Zakai2016-05-241-0/+124
|
* add an ArenaVector for internal array allocations in expression nodesAlon Zakai2016-04-261-1/+1
|
* create a UnifiedExpressionVisitor for passes that want a single visitor ↵Alon Zakai2016-04-181-1/+1
| | | | function, to avoid confusion with having both visit* and visitExpression in a single pass (#357)
* Function parallelism (#343)Alon Zakai2016-04-151-0/+2
| | | | * allow traversals to mark themselves as function-parallel, in which case we run them using a thread pool. also mark some thread-safety risks (interned strings, arena allocators) with assertions they modify only on the main thread
* dyn_cast => dynCastAlon Zakai2016-04-111-1/+1
|
* De-recurse traversals (#333)Alon Zakai2016-04-111-1/+1
| | | | | | | | | | | | * refactor core walking to not recurse * add a simplify-locals test * reuse parent's non-branchey scan logic in SimpleExecutionWalker, reduce code duplication * update wasm.js * rename things following comments
* Some cleanup.Michael Bebenita2016-01-141-1/+1
|
* Use LLVM style static polymorphism for WasmVisitors.Michael Bebenita2016-01-131-2/+2
|
* A more generic compiler pass system.Michael Bebenita2016-01-131-1/+1
|
* MergeBlocks #32Alon Zakai2016-01-051-0/+56