#
117296c0 |
| 01-Oct-2016 |
Mehdi Amini <mehdi.amini@apple.com> |
Use StringRef in Pass/PassManager APIs (NFC)
llvm-svn: 283004
|
#
ef0a45aa |
| 05-Sep-2016 |
Benjamin Kramer <benny.kra@googlemail.com> |
[WebAssembly] Unbreak the build.
Not sure why ADL isn't working here.
llvm-svn: 280656
|
Revision tags: llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2, llvmorg-3.9.0-rc1 |
|
#
500d0469 |
| 08-Jul-2016 |
Duncan P. N. Exon Smith <dexonsmith@apple.com> |
WebAssembly: Avoid implicit iterator conversions, NFC
Avoid implicit conversions from MachineInstrBundleIterator to MachineInstr* in the WebAssembly backend by preferring MachineInstr& over MachineI
WebAssembly: Avoid implicit iterator conversions, NFC
Avoid implicit conversions from MachineInstrBundleIterator to MachineInstr* in the WebAssembly backend by preferring MachineInstr& over MachineInstr*.
llvm-svn: 274912
show more ...
|
Revision tags: llvmorg-3.8.1, llvmorg-3.8.1-rc1 |
|
#
d7a2eea6 |
| 09-Mar-2016 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Implement irreducible control flow.
This implements a very simple conservative transformation that doesn't require more than linear code size growth. There's room for much more optimiz
[WebAssembly] Implement irreducible control flow.
This implements a very simple conservative transformation that doesn't require more than linear code size growth. There's room for much more optimization in this space.
llvm-svn: 262982
show more ...
|
Revision tags: llvmorg-3.8.0, llvmorg-3.8.0-rc3 |
|
#
442bfcec |
| 16-Feb-2016 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Switch from RPO sorting to topological sorting.
WebAssembly doesn't require full RPO; topological sorting is sufficient and can preserve more of the MachineBlockPlacement ordering. Unf
[WebAssembly] Switch from RPO sorting to topological sorting.
WebAssembly doesn't require full RPO; topological sorting is sufficient and can preserve more of the MachineBlockPlacement ordering. Unfortunately, this still depends a lot on heuristics, because while we use the MachineBlockPlacement ordering as a guide, we can't use it in places where it isn't topologically ordered. This area will require further attention.
llvm-svn: 260978
show more ...
|
#
a187ab2a |
| 12-Feb-2016 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Fix insertion of a BLOCK in a loop header that also ends a BLOCK.
llvm-svn: 260737
|
Revision tags: llvmorg-3.8.0-rc2 |
|
#
ed0f1138 |
| 30-Jan-2016 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Refine block placement to insert blocks between trees.
Refine the test for whether an instruction is in an expression tree so that it detects when one tree ends and another begins, so
[WebAssembly] Refine block placement to insert blocks between trees.
Refine the test for whether an instruction is in an expression tree so that it detects when one tree ends and another begins, so we can place a block at that point, rather than continuing to find the first instruction not in a tree at all.
llvm-svn: 259294
show more ...
|
Revision tags: llvmorg-3.8.0-rc1 |
|
#
9c3bf318 |
| 13-Jan-2016 |
Derek Schuff <dschuff@google.com> |
[WebAssemly] Invalidate liveness in CFG stackifier
WebAssemblyCFGStackify does not track liveness for EXPR_STACK, causing verifier failure if liveness has not already been invalidated.
llvm-svn: 25
[WebAssemly] Invalidate liveness in CFG stackifier
WebAssemblyCFGStackify does not track liveness for EXPR_STACK, causing verifier failure if liveness has not already been invalidated.
llvm-svn: 257620
show more ...
|
#
1d68e80f |
| 12-Jan-2016 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Make CFG stackification independent of basic-block labels.
This patch changes the way labels are referenced. Instead of referencing the basic-block label name (eg. .LBB0_0), instructio
[WebAssembly] Make CFG stackification independent of basic-block labels.
This patch changes the way labels are referenced. Instead of referencing the basic-block label name (eg. .LBB0_0), instructions now just have an immediate which indicates the depth in the control-flow stack to find a label to jump to. This makes them much closer to what we expect to have in the binary encoding, and avoids the problem of basic-block label names not being explicit in the binary encoding.
Also, it terminates blocks and loops with end_block and end_loop instructions, rather than basic-block label names, for similar reasons.
This will also fix problems where two constructs appear to have the same label, because we no longer explicitly use labels, so consumers that need labels will presumably create their own labels, and presumably they won't reuse labels when they do.
This patch does make the code a little more awkward to read; as a partial mitigation, this patch also introduces comments showing where the labels are, and comments on each branch showing where it's branching to.
llvm-svn: 257505
show more ...
|
#
35e4a289 |
| 08-Jan-2016 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Minor code cleanups. NFC.
llvm-svn: 257128
|
#
8887d1fa |
| 25-Dec-2015 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Fix handling of COPY instructions in WebAssemblyRegStackify.
Move RegStackify after coalescing and teach it to use LiveIntervals instead of depending on SSA form. This avoids a problem
[WebAssembly] Fix handling of COPY instructions in WebAssemblyRegStackify.
Move RegStackify after coalescing and teach it to use LiveIntervals instead of depending on SSA form. This avoids a problem where a register in a COPY instruction is stackified and then subsequently coalesced with a register that is not stackified.
This also puts it after the scheduler, which allows us to simplify the EXPR_STACK constraint, as we no longer have instructions being reordered after stackification and before coloring.
llvm-svn: 256402
show more ...
|
#
b3aa1eca |
| 16-Dec-2015 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Fix the CFG Stackifier to handle unoptimized branches
If a branch both branches to and falls through to the same block, treat it as an explicit branch.
llvm-svn: 255803
|
#
8fe7e86b |
| 14-Dec-2015 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Implement a new algorithm for placing BLOCK markers
Implement a new BLOCK scope placement algorithm which better handles early-return blocks and early exists from nested scopes.
Diffe
[WebAssembly] Implement a new algorithm for placing BLOCK markers
Implement a new BLOCK scope placement algorithm which better handles early-return blocks and early exists from nested scopes.
Differential Revision: http://reviews.llvm.org/D15368
llvm-svn: 255564
show more ...
|
#
53d13997 |
| 02-Dec-2015 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Fix comments to say "LIFO" instead of "FIFO" when describing a stack.
llvm-svn: 254523
|
Revision tags: llvmorg-3.7.1 |
|
#
96029f78 |
| 30-Nov-2015 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Fix a few minor compiler warnings. NFC.
llvm-svn: 254311
|
#
7a6b9825 |
| 29-Nov-2015 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Minor clang-format and selected clang-tidy cleanups. NFC.
llvm-svn: 254267
|
#
f6857223 |
| 23-Nov-2015 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Always print loop end labels
WebAssembly is currently using labels to end scopes, so for example a loop scope looks like this:
BB0_0: loop BB0_1 ... BB0_1:
with BB0_0 being the l
[WebAssembly] Always print loop end labels
WebAssembly is currently using labels to end scopes, so for example a loop scope looks like this:
BB0_0: loop BB0_1 ... BB0_1:
with BB0_0 being the label of the first block not in the loop. This requires that the label be printed even when it's only reachable via fallthrough. To arrange this, insert a no-op LOOP_END instruction in such cases at the end of the loop.
llvm-svn: 253901
show more ...
|
#
32807932 |
| 23-Nov-2015 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Use dominator information to improve BLOCK placement
Always starting blocks at the top of their containing loops works, but creates unnecessarily deep nesting because it makes all bloc
[WebAssembly] Use dominator information to improve BLOCK placement
Always starting blocks at the top of their containing loops works, but creates unnecessarily deep nesting because it makes all blocks in a loop overlap. Refine the BLOCK placement algorithm to start blocks at nearest common dominating points instead, which significantly shrinks them and reduces overlapping.
llvm-svn: 253876
show more ...
|
Revision tags: llvmorg-3.7.1-rc2, llvmorg-3.7.1-rc1 |
|
#
00406472 |
| 07-Nov-2015 |
Nico Weber <nicolasweber@gmx.de> |
Try to fix build more -- like r252392 but for WebAssembly.
llvm-svn: 252394
|
#
e3e4a5ff |
| 02-Oct-2015 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Fix CFG stackification of nested loops.
llvm-svn: 249187
|
#
950a13cf |
| 16-Sep-2015 |
Dan Gohman <dan433584@gmail.com> |
[WebAssembly] Check in an initial CFG Stackifier pass
This pass implements a simple algorithm for conversion from CFG to wasm's structured control flow. It doesn't yet handle multiple-entry loops; t
[WebAssembly] Check in an initial CFG Stackifier pass
This pass implements a simple algorithm for conversion from CFG to wasm's structured control flow. It doesn't yet handle multiple-entry loops; that will be added in a future patch.
It also adds initial support for switch statements.
Differential Revision: http://reviews.llvm.org/D12735
llvm-svn: 247818
show more ...
|