Stream: git-wasmtime

Topic: wasmtime / issue #14323 Regionless-loads can return stale...


view this post on Zulip Wasmtime GitHub notifications bot (Sep 11 2026 at 21:09):

alexcrichton opened issue #14323:

This test:

test interpret
test run
set opt_level=speed
target x86_64
target aarch64

;; A load with no alias region may alias any region, so it must observe a
;; preceding store that carries an alias region. Alias analysis instead keys
;; the regionless load on `last_fence` only and forwards the value of the
;; earlier region0 load (v1 = 1), dropping the intervening store of 42.
function %regionless_load_after_region_store(i64) -> i32 {
    ss0 = explicit_slot 4
    region0 = 0 "heap"
block0(v0: i64):
    v9 = stack_addr.i64 ss0
    v8 = iconst.i32 1
    store notrap v8, v9
    v1 = load.i32 notrap region0 v9
    v2 = iconst.i32 42
    store notrap region0 v2, v9
    v3 = load.i32 notrap v9
    v4 = iadd v3, v1
    return v4
}
; run: %regionless_load_after_region_store(0) == 43

fails with:

$ cargo run -p cranelift-tools test ./regionless-load.clif
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.07s
     Running `/home/alex/code/wasmtime2/target/debug/clif-util test ./regionless-load.clif`
[2026-09-11T21:06:41Z ERROR cranelift_filetests::concurrent] FAIL: run
FAIL ./regionless-load.clif: run

Caused by:
    Failed test: run: %regionless_load_after_region_store(0) == 43, actual: 2
1 tests
Error: 1 failure

and a similar test case:

test interpret
test run
set opt_level=speed
target x86_64

function %dse(i64) -> i32 {
    ss0 = explicit_slot 4
    region0 = 0 "heap"
block0(v0: i64):
    v9 = stack_addr.i64 ss0
    v2 = iconst.i32 42
    store notrap region0 v2, v9
    v3 = load.i32 notrap v9
    v5 = iconst.i32 7
    store notrap region0 v5, v9
    return v3
}
; run: %dse(0) == 42

fails with:

$ cargo run -p cranelift-tools test ./regionless-load-dse.clif
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.12s
     Running `/home/alex/code/wasmtime2/target/debug/clif-util test ./regionless-load-dse.clif`
[2026-09-11T21:07:29Z ERROR cranelift_filetests::concurrent] FAIL: run
FAIL ./regionless-load-dse.clif: run

Caused by:
    Failed test: run: %dse(0) == 42, actual: -2147474110
1 tests
Error: 1 failure

a full llm-generated report is here if that's useful. I'm relatively certain that this is not UB and the tests here are correct, but I'm not 100% certain. If this is IR-level UB then this can just be closed.

cc @fitzgen

view this post on Zulip Wasmtime GitHub notifications bot (Sep 11 2026 at 21:09):

alexcrichton added the cranelift label to Issue #14323.


Last updated: Sep 20 2026 at 18:08 UTC