Precompute removes atomic.fence in shared-memory modules
Mantenedores costumam responder em até 1 dia
@stevenfontanella já está trabalhando nisso.
Desde 10/11/2026.
- #9379 de @stevenfontanella — integrado
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 53/100
Direção de pesquisa
Start by tracing how --precompute handles atomic.fence and how EffectAnalyzer marks shared-memory reads and writes; the issue does not name implementation files or tests. Reproduce with the provided C example and wasm-opt --precompute --enable-threads, then compare the output with --vacuum alone. Done when precompute preserves the fence in the shared-memory case.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
wasm-opt version 133 (version_133-96-ga631c1445), from emsdk.
--precompute (and so -O1 and above) replaces atomic.fence with nothing, even with --enable-threads and a shared memory. --vacuum alone keeps it. EffectAnalyzer marks the fence as reading/writing shared memory, so Precompute seems to skip that check.
Repro:
int x, y;
__attribute__((export_name("st"))) void st(int v) {
x = v; __atomic_thread_fence(__ATOMIC_SEQ_CST); y = 1;
}
clang --target=wasm32 -O2 -matomics -mbulk-memory -c f.c -o f.o
wasm-ld --no-entry --shared-memory --import-memory --max-memory=1048576 f.o -o f.wasm
wasm-opt --precompute --enable-threads f.wasm -o g.wasm
llvm-objdump -d f.wasm | grep -c atomic.fence # 1
llvm-objdump -d g.wasm | grep -c atomic.fence # 0
Same result with -O1, -O2, -O3, -Os and with --detect-features; -O0 keeps it.
Impact: in our emulator a guest FENCE is compiled to atomic.fence; after wasm-opt the engine had none, and a producer/consumer ring between threads read stale bytes (intermittent aborts on ARM64 Chrome). Using an atomic.rmw.or seq_cst on a dummy cell instead survives -O3.
- Linguagem predominante
- WebAssembly
- Estrelas
- 8.7k
- Forks
- 905
- Merge médio
- 2d 1h
- PRs com merge (30d)
- 91
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de WebAssembly/binaryen
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
WebAssembly/binaryen#9135 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 Meio dia Facilidade para iniciantes 76/100
WebAssembly/binaryen#9018 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
RemoveUnusedModuleElements drops an active elem segment whose items are global.get, so call_indirect trapsTalvez já em andamento @tlively assumiu há 1 dia. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
WebAssembly/binaryen#9366 ·
Mantenedores costumam responder em até 1 dia
-
Binary reader rebuilds tag types from Signature, dropping rec group and supertype (follow-up to #7219)Talvez já em andamento @tlively assumiu há 1 dia. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
WebAssembly/binaryen#9365 ·
Mantenedores costumam responder em até 1 dia
-
Add a pass to relax nullabilities of definitionsTalvez já em andamento @stevenfontanella assumiu há 4 dias. Abertaenhancement
WebAssembly/binaryen#9352 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
Todas as issues de WebAssembly/binaryen
Issues semelhantes
-
Support kubevirt CRDsAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
rancher/rancher-ai-mcp#206 ·
Mantenedores costumam responder em até 1 dia
-
ai-driven-fuzzing bug claude Minor
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
Mantenedores costumam responder em até 2 dias
-
ai-driven-qa bug claude Cosmetic
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
[Bug] The blue-green mitigation strategy lists catalog names and views before the source tablesAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
aws-samples/sample-aws-genai-db-modernizer#2097 · 1 comentário ·
Mantenedores costumam responder em até 1 dia