Rust-GPU / Rust-GPU/rust-gpu

[Migrated] ZST's in structs cause invalid pointer casts

Abierto
#89 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Rust
Estrellas
3.4k
Forks
126
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Issue automatically imported from old repo: https://github.com/EmbarkStudios/rust-gpu/issues/1037
Old labels: t: bug,s: qptr may fix
Originally creatd by TrueDoctor on 2023-04-18T16:53:55Z


Expected Behaviour

The code should compile

Example & Steps To Reproduce

code:

 #[spirv(fragment)] 
 pub fn main(x: (usize, ())) {
    drop(&x.1); 
 }

result:

error: Cannot cast between pointer types
  --> examples/shaders/simplest-shader/src/lib.rs:44:55
   |
44 | #[spirv(fragment)] pub fn main(x: (usize, ())) { drop(&x.1); }
   |                                                       ^^^^
   |
   = note: from: *u32
   = note: to: *u8

error: Cannot offset a pointer to an arbitrary element
  --> examples/shaders/simplest-shader/src/lib.rs:44:55
   |
44 | #[spirv(fragment)] pub fn main(x: (usize, ())) { drop(&x.1); }
   |                                                       ^^^^

error: Cannot cast between pointer types
  --> examples/shaders/simplest-shader/src/lib.rs:44:50
   |
44 | #[spirv(fragment)] pub fn main(x: (usize, ())) { drop(&x.1); }
   |                                                  ^^^^^^^^^^
   |
   = note: from: *u8
   = note: to: *struct () {  }

System Info

  • Rust: [e.g. 1.49.0-nightly (1eaadebb3 2020-10-21)]
  • OS: linux 6.2.9-arch1-1
  • GPU: Intel Iris Plus Graphics G7

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con el reproductor en examples/shaders/simplest-shader/src/lib.rs, especialmente con la función #[spirv(fragment)] y la referencia a x.1. Ejecuta el ejemplo e inspecciona los errores de conversión de punteros y de desplazamiento arbitrario. Se considera terminado cuando esta estructura aparentemente válida que contiene un campo de tupla de tamaño cero compila sin esos errores.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
rust
Área
compilers
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
38/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.