Stream: git-wasmtime

Topic: wasmtime / issue #3559 Cranelift:


view this post on Zulip Wasmtime GitHub notifications bot (Nov 23 2021 at 12:31):

JohnDowson opened issue #3559:

.clif Test Case

function u0:0(r64, r64) system_v {
    ss0 = explicit_slot 31
    ss1 = explicit_slot 16
    ss2 = explicit_slot 16
    ss3 = explicit_slot 16
    sig0 = (r64, r64, r64) system_v
    fn0 = u0:0 sig0

block0(v0: r64, v1: r64):
    v19 -> v0
    v2 = iconst.i64 0
    v3 = stack_addr.r64 ss0
    v4 = stack_addr.r64 ss1
    v5 = iconst.i64 10
    v6 = iconst.i64 1
    store aligned v6, v4
    store aligned v5, v4+8
    call fn0(v3, v1, v4)
    v8 = load.i64 aligned v3+8
    brz v8, block2
    jump block1

block1:
    v9 = iconst.i64 0
    v10 = stack_addr.r64 ss2
    v11 = iconst.i64 1
    v12 = iconst.i64 1
    store aligned v12, v10
    store aligned v11, v10+8
    jump block3(v10)

block2:
    v13 = iconst.i64 0
    v14 = stack_addr.r64 ss3
    v15 = iconst.i64 2
    v16 = iconst.i64 1
    store aligned v16, v14
    store aligned v15, v14+8
    jump block3(v14)

block3(v7: f64):
    v17 = load.i64 aligned v7
    v18 = load.i64 aligned v7+8
    store aligned v17, v0
    store aligned v18, v0+8
    return
}

Steps to Reproduce

  1. Clone https://github.com/JohnDowson/CraneLisp branch struct-values
  2. Run cargo run -- -c ifjit.crl

Expected Results

I expect function to compile, or the process to produce an informative error.

Actual Results

thread 'main' panicked at 'function must be compiled before it can be finalized', /home/johnd/.cargo/registry/src/github.com-1ecc6299db9ec823/cranelift-jit-0.78.0/src/backend.rs:356:14

Versions and Environment

Cranelift version or commit: 0.78.0

Operating system: Arch Linux kernel 5.15.4-arch1-1

Architecture: x86-64

Extra Info

Note that in this case the function is recursive. I suspect that there is something wrong with how I translate if condition, since non-recursive calls without if condition work, but break when wrapped in an if. However, after consulting with @bjorn3 i've been compelled to file this as a bug report.

For reference, here is the translation function for if: https://github.com/JohnDowson/CraneLisp/blob/struct-values/src/jit.rs#L367-L397

view this post on Zulip Wasmtime GitHub notifications bot (Nov 23 2021 at 12:31):

JohnDowson labeled issue #3559:

.clif Test Case

function u0:0(r64, r64) system_v {
    ss0 = explicit_slot 31
    ss1 = explicit_slot 16
    ss2 = explicit_slot 16
    ss3 = explicit_slot 16
    sig0 = (r64, r64, r64) system_v
    fn0 = u0:0 sig0

block0(v0: r64, v1: r64):
    v19 -> v0
    v2 = iconst.i64 0
    v3 = stack_addr.r64 ss0
    v4 = stack_addr.r64 ss1
    v5 = iconst.i64 10
    v6 = iconst.i64 1
    store aligned v6, v4
    store aligned v5, v4+8
    call fn0(v3, v1, v4)
    v8 = load.i64 aligned v3+8
    brz v8, block2
    jump block1

block1:
    v9 = iconst.i64 0
    v10 = stack_addr.r64 ss2
    v11 = iconst.i64 1
    v12 = iconst.i64 1
    store aligned v12, v10
    store aligned v11, v10+8
    jump block3(v10)

block2:
    v13 = iconst.i64 0
    v14 = stack_addr.r64 ss3
    v15 = iconst.i64 2
    v16 = iconst.i64 1
    store aligned v16, v14
    store aligned v15, v14+8
    jump block3(v14)

block3(v7: f64):
    v17 = load.i64 aligned v7
    v18 = load.i64 aligned v7+8
    store aligned v17, v0
    store aligned v18, v0+8
    return
}

Steps to Reproduce

  1. Clone https://github.com/JohnDowson/CraneLisp branch struct-values
  2. Run cargo run -- -c ifjit.crl

Expected Results

I expect function to compile, or the process to produce an informative error.

Actual Results

thread 'main' panicked at 'function must be compiled before it can be finalized', /home/johnd/.cargo/registry/src/github.com-1ecc6299db9ec823/cranelift-jit-0.78.0/src/backend.rs:356:14

Versions and Environment

Cranelift version or commit: 0.78.0

Operating system: Arch Linux kernel 5.15.4-arch1-1

Architecture: x86-64

Extra Info

Note that in this case the function is recursive. I suspect that there is something wrong with how I translate if condition, since non-recursive calls without if condition work, but break when wrapped in an if. However, after consulting with @bjorn3 i've been compelled to file this as a bug report.

For reference, here is the translation function for if: https://github.com/JohnDowson/CraneLisp/blob/struct-values/src/jit.rs#L367-L397

view this post on Zulip Wasmtime GitHub notifications bot (Nov 23 2021 at 12:31):

JohnDowson labeled issue #3559:

.clif Test Case

function u0:0(r64, r64) system_v {
    ss0 = explicit_slot 31
    ss1 = explicit_slot 16
    ss2 = explicit_slot 16
    ss3 = explicit_slot 16
    sig0 = (r64, r64, r64) system_v
    fn0 = u0:0 sig0

block0(v0: r64, v1: r64):
    v19 -> v0
    v2 = iconst.i64 0
    v3 = stack_addr.r64 ss0
    v4 = stack_addr.r64 ss1
    v5 = iconst.i64 10
    v6 = iconst.i64 1
    store aligned v6, v4
    store aligned v5, v4+8
    call fn0(v3, v1, v4)
    v8 = load.i64 aligned v3+8
    brz v8, block2
    jump block1

block1:
    v9 = iconst.i64 0
    v10 = stack_addr.r64 ss2
    v11 = iconst.i64 1
    v12 = iconst.i64 1
    store aligned v12, v10
    store aligned v11, v10+8
    jump block3(v10)

block2:
    v13 = iconst.i64 0
    v14 = stack_addr.r64 ss3
    v15 = iconst.i64 2
    v16 = iconst.i64 1
    store aligned v16, v14
    store aligned v15, v14+8
    jump block3(v14)

block3(v7: f64):
    v17 = load.i64 aligned v7
    v18 = load.i64 aligned v7+8
    store aligned v17, v0
    store aligned v18, v0+8
    return
}

Steps to Reproduce

  1. Clone https://github.com/JohnDowson/CraneLisp branch struct-values
  2. Run cargo run -- -c ifjit.crl

Expected Results

I expect function to compile, or the process to produce an informative error.

Actual Results

thread 'main' panicked at 'function must be compiled before it can be finalized', /home/johnd/.cargo/registry/src/github.com-1ecc6299db9ec823/cranelift-jit-0.78.0/src/backend.rs:356:14

Versions and Environment

Cranelift version or commit: 0.78.0

Operating system: Arch Linux kernel 5.15.4-arch1-1

Architecture: x86-64

Extra Info

Note that in this case the function is recursive. I suspect that there is something wrong with how I translate if condition, since non-recursive calls without if condition work, but break when wrapped in an if. However, after consulting with @bjorn3 i've been compelled to file this as a bug report.

For reference, here is the translation function for if: https://github.com/JohnDowson/CraneLisp/blob/struct-values/src/jit.rs#L367-L397

view this post on Zulip Wasmtime GitHub notifications bot (Nov 23 2021 at 16:47):

JohnDowson closed issue #3559:

.clif Test Case

function u0:0(r64, r64) system_v {
    ss0 = explicit_slot 31
    ss1 = explicit_slot 16
    ss2 = explicit_slot 16
    ss3 = explicit_slot 16
    sig0 = (r64, r64, r64) system_v
    fn0 = u0:0 sig0

block0(v0: r64, v1: r64):
    v19 -> v0
    v2 = iconst.i64 0
    v3 = stack_addr.r64 ss0
    v4 = stack_addr.r64 ss1
    v5 = iconst.i64 10
    v6 = iconst.i64 1
    store aligned v6, v4
    store aligned v5, v4+8
    call fn0(v3, v1, v4)
    v8 = load.i64 aligned v3+8
    brz v8, block2
    jump block1

block1:
    v9 = iconst.i64 0
    v10 = stack_addr.r64 ss2
    v11 = iconst.i64 1
    v12 = iconst.i64 1
    store aligned v12, v10
    store aligned v11, v10+8
    jump block3(v10)

block2:
    v13 = iconst.i64 0
    v14 = stack_addr.r64 ss3
    v15 = iconst.i64 2
    v16 = iconst.i64 1
    store aligned v16, v14
    store aligned v15, v14+8
    jump block3(v14)

block3(v7: f64):
    v17 = load.i64 aligned v7
    v18 = load.i64 aligned v7+8
    store aligned v17, v0
    store aligned v18, v0+8
    return
}

Steps to Reproduce

  1. Clone https://github.com/JohnDowson/CraneLisp branch struct-values
  2. Run cargo run -- -c ifjit.crl

Expected Results

I expect function to compile, or the process to produce an informative error.

Actual Results

thread 'main' panicked at 'function must be compiled before it can be finalized', /home/johnd/.cargo/registry/src/github.com-1ecc6299db9ec823/cranelift-jit-0.78.0/src/backend.rs:356:14

Versions and Environment

Cranelift version or commit: 0.78.0

Operating system: Arch Linux kernel 5.15.4-arch1-1

Architecture: x86-64

Extra Info

Note that in this case the function is recursive. I suspect that there is something wrong with how I translate if condition, since non-recursive calls without if condition work, but break when wrapped in an if. However, after consulting with @bjorn3 i've been compelled to file this as a bug report.

For reference, here is the translation function for if: https://github.com/JohnDowson/CraneLisp/blob/struct-values/src/jit.rs#L367-L397


Last updated: Dec 23 2024 at 12:05 UTC