Rust-GPU / Rust-GPU/rust-gpu

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

Offen
#89 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Rust
Sterne
3.4k
Forks
125
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit dem Reproducer in examples/shaders/simplest-shader/src/lib.rs, insbesondere mit der #[spirv(fragment)]-Funktion und der Referenz auf x.1. Führe das Beispiel aus und untersuche die Fehler bezüglich Pointer-Casts und beliebiger Offsets. Als erledigt gilt, wenn diese gültig aussehende Struktur mit einem Tuple-Feld der Größe null ohne diese Fehler kompiliert.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
38/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.