summaryrefslogtreecommitdiff
path: root/test/binaryen.js/stackir.js
blob: 324a99abefa38757771ee73a42aad29a13350373 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function assert(x) {
  if (!x) throw 'error!';
}

var wast = `
(module
 (type $i (func (param i32) (result i32)))
 (memory $0 0)
 (export "test" (func $test))
 (func $test (; 0 ;) (type $i) (param $0 i32) (result i32)
  (block (result i32)
   (block (result i32)
    (if (result i32)
     (local.get $0)
     (local.get $0)
     (i32.const 0)
    )
   )
  )
 )
)
`;

function test() {
  console.log("=== input wast ===" + wast);

  var module = Binaryen.parseText(wast);
  assert(module.validate());

  console.log("=== default ===");
  console.log(module.emitStackIR());

  console.log("=== optimize ==="); // should omit the second block
  console.log(module.emitStackIR(true));
}

Binaryen.ready.then(test);