Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Cranelift: interpreter traps on `srem INT_MIN, -1` instead of returning 0

Chiusa Adatta ai principianti
#14,568 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
Meno di un'ora
Idoneità per principianti
86/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
rust
Ambito
compilers

Direzione di ricerca

Parti dall'implementazione di DataValue::srem nell'interprete sotto cranelift/interpreter/, confrontandone il controllo di overflow con quello di sdiv; la correzione consiste nel rimuovere il trap INT_MIN, -1 per il resto in modo che restituisca 0. Riproduci con il file .clif dell'issue tramite clif-util test test.clif (solo test interpret fallisce). Si considera concluso quando il caso di test sopra indicato supera test interpret e il caso viene aggiunto come filetest sotto cranelift/filetests/.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug cranelift:area:interpreter

srem only traps on a zero divisor, and srem INT_MIN, -1 is 0. Native
code agrees, and so does the mid-end rule srem x, -1 => 0. The
interpreter's DataValue::srem, however, copies sdiv's overflow check and
traps with int_ovf.

.clif Test Case
test interpret
test run
target aarch64

function %f(i32, i32) -> i32 {
block0(v0: i32, v1: i32):
    v2 = srem v0, v1
    return v2
}
; run: %f(0x80000000, -1) == 0
Steps to Reproduce
clif-util test test.clif
Expected Results

Both test interpret and test run pass.

Actual Results

test run passes. test interpret fails:

Unexpected returned control flow: Trap(User(TrapCode(252)))
Versions and Environment

Cranelift version or commit: 73b04cff33

Operating system: macOS 15.8.1

Architecture: aarch64

Lingua principale
Rust
Stelle
18.7k
Fork
1.9k
Merge medio
21h 22m
PR unite (30g)
315

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di bytecodealliance/wasmtime

Tutte le issue di bytecodealliance/wasmtime

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.