E6004
E6004 — Transfer violates the boundary contract at a seam (per-seam local-completeness / soundness obligation is sat; a stale read can violate the contract).
What the compiler reports
E6004
The fragments the test suite holds the compiler to. An ellipsis marks text the test does not constrain; the emitted message also carries a source location.
A program that triggers it
//
// Part of the Vx Project, under the Apache License v2.0 with LLVM Exceptions.
// See LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
// A *relaxed* transfer into a `managed: explicit` (programmer-managed) space
// must discharge the coherence seam -- the buffer carries no synchronizing release, so a
// consumer may read it stale (E6004). Requires seam verification.
//
// VERIFY-SEAMS
Memory Local_SRAM {
managed: explicit
}
fn main() -> i32 {
let t : Tensor<f32, []> = 1.0;
let staged = t.to_sram_relaxed();
return 0;
}
From tests/frontend/fail/memory_relaxed_into_explicit.vx, which asserts this diagnostic on every commit.
Related
Topologies and memoryThe chapter covering the rule this code enforces.
All diagnosticsEvery code the compiler can emit, grouped by stage.
E6003A value is used from a topology that cannot see the memory space it lives in. The diagnostic names the value's space, the visible set of the topology reading it, and the cost of the transfer that would fix it — so a misplaced handoff (an un-transferred KV cache in a disaggregated prefill/decode split, say) is a compile error that carries its own remedy. A
managed: cached space the topology can reach across a declared seam is coherent in hardware and is not reported here.
E6005A user-defined topology declaration is incoherent: it cannot see its own default memory space (default_space ∉ visibility). See the topology coherence check.