(module (type $i (func (param i32) (result i32))) (memory $0 1 100) (export "sieve" (func $sieve)) (func $sieve (; 0 ;) (type $i) (param $0 i32) (result i32) (local $1 i32) (if (i32.lt_u (i32.mul (current_memory) (i32.const 65536) ) (local.get $0) ) (drop (grow_memory (i32.sub (i32.div_u (i32.add (local.get $0) (i32.const 65535) ) (i32.const 65536) ) (current_memory) ) ) ) ) (local.set $1 (i32.const 0) ) (loop $clear (i32.store8 (local.get $1) (i32.const 0) ) (local.set $1 (i32.add (local.get $1) (i32.const 1) ) ) (br_if $clear (i32.eq (local.get $1) (local.get $0) ) ) ) (return (local.get $0) ) ) ) optimized: (module (type $i (func (param i32) (result i32))) (memory $0 1 100) (export "sieve" (func $sieve)) (func $sieve (; 0 ;) (; has Stack IR ;) (type $i) (param $0 i32) (result i32) (local $1 i32) (if (i32.lt_u (i32.shl (current_memory) (i32.const 16) ) (local.get $0) ) (drop (grow_memory (i32.sub (i32.div_u (i32.add (local.get $0) (i32.const 65535) ) (i32.const 65536) ) (current_memory) ) ) ) ) (loop $clear (i32.store8 (local.get $1) (i32.const 0) ) (br_if $clear (i32.eq (local.tee $1 (i32.add (local.get $1) (i32.const 1) ) ) (local.get $0) ) ) ) (local.get $0) ) )