Cranelift: inliner remaps dynamic types with the dynamic-stack-slot offset
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
Comienza en cranelift/codegen/src/inline.rs en create_dynamic_types, donde el offset se deriva de func.dynamic_stack_slots.len() en lugar de func.dfg.dynamic_types.len(); lee cómo se emparejan los slots inlineados y los tipos dinámicos para confirmar el índice correcto. Reproduce el caso .clif con clif-util test (cargo run -p clif-util). Listo cuando la línea ; check: coincida y Context::compile ya no entre en pánico con Undeclared dynamic vector type; los filetests en cranelift/filetests cubren test inline.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
create_dynamic_types in cranelift/codegen/src/inline.rs computes its
offset from func.dynamic_stack_slots.len(), but it should use
func.dfg.dynamic_types.len(). Whenever the caller has a different number
of dynamic stack slots than dynamic types, inlined slots name the wrong
dynamic type. The verifier accepts the result, and then:
Context::compilepanics withUndeclared dynamic vector type, if the
index is out of range; or- the inlined slot silently gets one of the caller's unrelated types.
.clif Test Case
test inline
target aarch64
function %callee(i32) {
gv0 = dyn_scale_target_const.i32x4
dt0 = i32x4*gv0
dss0 = explicit_dynamic_slot dt0
block0(v0: i32):
v1 = splat.dt0 v0
v2 = dynamic_stack_addr.i64 dss0
store.dt0 notrap aligned v1, v2
return
}
function %caller() {
gv0 = dyn_scale_target_const.i64x2
dt0 = i64x2*gv0
dss0 = explicit_dynamic_slot dt0
dss1 = explicit_dynamic_slot dt0
fn0 = %callee(i32)
block0:
v0 = iconst.i32 1
call fn0(v0)
return
}
; check: dss2 = explicit_dynamic_slot dt1
Steps to Reproduce
clif-util test test.clif
Expected Results
The inlined slot uses the copied callee type:
dss2 = explicit_dynamic_slot dt1.
Actual Results
Missed #0: \bdss2 = explicit_dynamic_slot dt1\b
> dss2 = explicit_dynamic_slot dt2
The caller has no dt2. Compiling the inlined function panics with
Undeclared dynamic vector type: dt2.
Versions and Environment
Cranelift version or commit: 73b04cff33
Operating system: macOS 15.8.1
Architecture: aarch64
- Lenguaje dominante
- Rust
- Estrellas
- 18.7k
- Forks
- 1.9k
- Merge medio
- 20 h 40 min
- PR fusionados (30 d)
- 366
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de bytecodealliance/wasmtime
-
bug wasm-proposal:exceptions wasmtime:debugging
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
bytecodealliance/wasmtime#14102 ·
Los mantenedores suelen responder en 1 día
-
wasm-proposal:gc
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
bytecodealliance/wasmtime#13808 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Add volatile flag to MemFlagsAbiertocranelift cranelift:area:clif cranelift:goal:optimize-speed enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
bytecodealliance/wasmtime#1598 · 9 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
cranelift
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
bytecodealliance/wasmtime#14926 ·
Los mantenedores suelen responder en 1 día
-
wasm-proposal:component-model-async
Dificultad 4/5 3-5 días Aptitud para principiantes 46/100
bytecodealliance/wasmtime#14878 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de bytecodealliance/wasmtime
Issues similares
-
documentation priority:p2 type:chore
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
facebookincubator/scrut#60 ·
-
dispatch:sol-high documentation
Dificultad 1/5 1-3 horas Aptitud para principiantes 85/100
carrick-sh/carrick#768 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
correctness postgres tursopg
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
tursodatabase/turso#10442 ·
Los mantenedores suelen responder en 1 día
-
Incorrect "Share Decks" linkAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
ankitects/anki#5864 · 1 reacción ·
Los mantenedores suelen responder en 2 días