diff options
author | Dan Gohman <dan433584@gmail.com> | 2016-03-09 02:01:14 +0000 |
---|---|---|
committer | Dan Gohman <dan433584@gmail.com> | 2016-03-09 02:01:14 +0000 |
commit | d7a2eea619e179b722442748fa096c8429ff6ae0 (patch) | |
tree | b2fef41bf54f1693b68322179efcf545b10e67bb /llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp | |
parent | d2d989609f503a59a6ddecb02170de546f8cffa4 (diff) | |
download | llvm-d7a2eea619e179b722442748fa096c8429ff6ae0.zip llvm-d7a2eea619e179b722442748fa096c8429ff6ae0.tar.gz llvm-d7a2eea619e179b722442748fa096c8429ff6ae0.tar.bz2 |
[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
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp index 4d58339..2e4ed62 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp @@ -204,6 +204,9 @@ void WebAssemblyPassConfig::addPostRegAlloc() { void WebAssemblyPassConfig::addPreEmitPass() { TargetPassConfig::addPreEmitPass(); + // Eliminate multiple-entry loops. + addPass(createWebAssemblyFixIrreducibleControlFlow()); + // Put the CFG in structured form; insert BLOCK and LOOP markers. addPass(createWebAssemblyCFGStackify()); |