[Migrated] GEP not implemented for type struct [_; 0]

Aberta
#82 3 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
45/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
rust
Domínio
compilers

Direção de pesquisa

Reproduza a falha de examples/shaders/compute-shader/src/lib.rs usando o exemplo const-generic com LENGTH = 0. Comece rastreando o tratamento de GEP relatado para o tipo de array de comprimento zero e considere a issue concluída quando o exemplo compilar sem o erro “GEP not implemented”, preservando o comportamento existente para comprimentos diferentes de zero.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Issue automatically imported from old repo: https://github.com/EmbarkStudios/rust-gpu/issues/1075
Old labels: t: bug
Originally creatd by kevinboulain on 2023-06-16T09:49:20Z


Expected Behaviour

This compiles fine with rustc (I guess this bit is probably eliminated?).

Example & Steps To Reproduce

I was using const generic parameters to determine the length of some arrays. At some point, a base case ended up declaring a zero-length array, like so:

#![cfg_attr(target_arch = "spirv", no_std)]
use spirv_std::spirv;

fn example<const LENGTH: usize>() {
    let mut array = [0; LENGTH];
    for i in 0..array.len() {
        array[i] += i;
    }
}

#[spirv(compute(threads(1, 1, 1)))]
pub fn compute() {
    example::<0>();
}

Resulting in:

error: GEP not implemented for type struct [usize; 0] {  }
 --> examples/shaders/compute-shader/src/lib.rs:7:9
  |
7 |         array[i] += i;
  |         ^^^^^^^^^^^^^

System Info

  • rustc: 1.71.0-nightly (1a5f8bce7 2023-05-26)
  • rust-gpu: b2e5eb7
Linguagem predominante
Rust
Estrelas
3.4k
Forks
126
Métricas de merge de PRs
Nenhum PR com merge em 30d

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de Rust-GPU/rust-gpu

Todas as issues de Rust-GPU/rust-gpu

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.