diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-05-05 09:23:13 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-05-05 09:23:13 -0700 |
commit | a23899ddfde13d400abac29f2cf04b71b743093b (patch) | |
tree | a169591b8a5440a88db8b9a00cd0965d5d592484 /test/example/c-api-kitchen-sink.c | |
parent | f85e310924535da09822f3d43aeee9265eb12760 (diff) | |
download | binaryen-a23899ddfde13d400abac29f2cf04b71b743093b.tar.gz binaryen-a23899ddfde13d400abac29f2cf04b71b743093b.tar.bz2 binaryen-a23899ddfde13d400abac29f2cf04b71b743093b.zip |
add a relooper test
Diffstat (limited to 'test/example/c-api-kitchen-sink.c')
-rw-r--r-- | test/example/c-api-kitchen-sink.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c index 28fd901a4..65355da4a 100644 --- a/test/example/c-api-kitchen-sink.c +++ b/test/example/c-api-kitchen-sink.c @@ -332,6 +332,27 @@ void test_relooper() { BinaryenExpressionRef body = RelooperRenderAndDispose(relooper, block0, 0, module); BinaryenFunctionRef sinker = BinaryenAddFunction(module, "loop-tail", v, localTypes, 1, body); } + { // nontrivial loop + phi to head + RelooperRef relooper = RelooperCreate(); + RelooperBlockRef block0 = RelooperAddBlock(relooper, makeInt32(module, 0)); + RelooperBlockRef block1 = RelooperAddBlock(relooper, makeInt32(module, 1)); + RelooperBlockRef block2 = RelooperAddBlock(relooper, makeInt32(module, 2)); + RelooperBlockRef block3 = RelooperAddBlock(relooper, makeInt32(module, 3)); + RelooperBlockRef block4 = RelooperAddBlock(relooper, makeInt32(module, 4)); + RelooperBlockRef block5 = RelooperAddBlock(relooper, makeInt32(module, 5)); + RelooperBlockRef block6 = RelooperAddBlock(relooper, makeInt32(module, 6)); + RelooperAddBranch(block0, block1, NULL, makeInt32(module, 10)); + RelooperAddBranch(block1, block2, makeInt32(module, -2), NULL); + RelooperAddBranch(block1, block6, NULL, makeInt32(module, 20)); + RelooperAddBranch(block2, block3, makeInt32(module, -6), NULL); + RelooperAddBranch(block2, block1, NULL, makeInt32(module, 30)); + RelooperAddBranch(block3, block4, makeInt32(module, -10), NULL); + RelooperAddBranch(block3, block5, NULL, NULL); + RelooperAddBranch(block4, block5, NULL, NULL); + RelooperAddBranch(block5, block6, NULL, makeInt32(module, 40)); + BinaryenExpressionRef body = RelooperRenderAndDispose(relooper, block0, 0, module); + BinaryenFunctionRef sinker = BinaryenAddFunction(module, "loop-tail", v, localTypes, 1, body); + } BinaryenModulePrint(module); BinaryenModuleDispose(module); |