History log of /llvm-project/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp (Results 101 – 121 of 121)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 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 ...


12345