diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-08-03 12:12:24 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-09-07 09:54:53 -0700 |
commit | f30d9f6cde023b29409f73aba68f472c06c3b11c (patch) | |
tree | 79f6744bdc406bb0b076fe0f4a1ec52ee5f575eb /src/wasm-builder.h | |
parent | 72616971b2a35cbc37ea974e47c870556ef8ef4d (diff) | |
download | binaryen-f30d9f6cde023b29409f73aba68f472c06c3b11c.tar.gz binaryen-f30d9f6cde023b29409f73aba68f472c06c3b11c.tar.bz2 binaryen-f30d9f6cde023b29409f73aba68f472c06c3b11c.zip |
loops no longer have an out label and other upstream loop updates
Diffstat (limited to 'src/wasm-builder.h')
-rw-r--r-- | src/wasm-builder.h | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/wasm-builder.h b/src/wasm-builder.h index 3cba351a2..e68fd5ef2 100644 --- a/src/wasm-builder.h +++ b/src/wasm-builder.h @@ -82,9 +82,9 @@ public: ret->finalize(); return ret; } - Loop* makeLoop(Name out, Name in, Expression* body) { + Loop* makeLoop(Name name, Expression* body) { auto* ret = allocator.alloc<Loop>(); - ret->out = out; ret->in = in; ret->body = body; + ret->name = name; ret->body = body; ret->finalize(); return ret; } @@ -265,7 +265,21 @@ public: if (!block) block = makeBlock(any); if (append) { block->list.push_back(append); - block->finalize(); + block->finalize(); // TODO: move out of if + } + return block; + } + + // ensure a node is a block, if it isn't already, and optionally append to the block + // this variant sets a name for the block, so it will not reuse a block already named + Block* blockifyWithName(Expression* any, Name name, Expression* append = nullptr) { + Block* block = nullptr; + if (any) block = any->dynCast<Block>(); + if (!block || block->name.is()) block = makeBlock(any); + block->name = name; + if (append) { + block->list.push_back(append); + block->finalize(); // TODO: move out of if } return block; } |