tackle unreachables

suspend compilation on break, optimize stack ir, detect fallthrough instead of terminate
This commit is contained in:
dcode
2019-06-10 08:54:41 +02:00
parent 56dbe77a04
commit 3f35a9209f
92 changed files with 42247 additions and 54227 deletions

View File

@ -0,0 +1,25 @@
var binaryen = require("binaryen");
var mod = new binaryen.Module();
var funcType = mod.addFunctionType("ii", binaryen.i32, [ binaryen.i32 ]);
mod.addFunction("0", funcType, [],
mod.block(null, [
mod.loop("continue",
mod.block(null, [
mod.if(
mod.local.get(0, binaryen.i32),
mod.return(mod.i32.const(1)),
mod.return(mod.i32.const(2))
),
mod.unreachable()
])
),
mod.unreachable()
], binaryen.i32)
);
mod.addExport("0", "0");
if (!mod.validate())
console.log("-> does not validate");
console.log(mod.emitText());
console.log(mod.emitStackIR(/*true*/)); // optimize-stack-ir fixes this