(module
 (type $i32_=>_i32 (func (param i32) (result i32)))
 (memory $0 1 100)
 (export "sieve" (func $sieve))
 (func $sieve (param $0 i32) (result i32)
  (local $1 i32)
  (if
   (i32.lt_u
    (i32.mul
     (memory.size)
     (i32.const 65536)
    )
    (local.get $0)
   )
   (drop
    (memory.grow
     (i32.sub
      (i32.div_u
       (i32.add
        (local.get $0)
        (i32.const 65535)
       )
       (i32.const 65536)
      )
      (memory.size)
     )
    )
   )
  )
  (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 $i32_=>_i32 (func (param i32) (result i32)))
 (memory $0 1 100)
 (export "sieve" (func $sieve))
 (func $sieve (; has Stack IR ;) (param $0 i32) (result i32)
  (local $1 i32)
  (if
   (i32.lt_u
    (i32.shl
     (memory.size)
     (i32.const 16)
    )
    (local.get $0)
   )
   (drop
    (memory.grow
     (i32.sub
      (i32.shr_u
       (i32.add
        (local.get $0)
        (i32.const 65535)
       )
       (i32.const 16)
      )
      (memory.size)
     )
    )
   )
  )
  (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)
 )
)

