feat(cl): support Clang ext_vector_type declarations from C headers

Abierto
#1,136 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
38/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
c, go

Línea de trabajo

Start with cl/type.go:toTypeEx and the CXType_ExtVector conversion path, then run the supplied llcppg reproducer with source/llcppg.cfg and simd_float4.h. Done means native extended-vector types and dependent declarations are retained with the target’s required layout and calling convention, with unsupported declarations still clearly identified.

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

Descripción

The libc/LibSystem header survey cannot retain Clang extended-vector types and their dependent matrix/function declarations. The smallest observed case is the SDK's simd_float4 typedef.

Reproducer

simd_float4.h, copied from the SDK declaration:

typedef __attribute__((__ext_vector_type__(4))) float simd_float4;

Use a source Go module requiring github.com/goplus/lib v0.7.0, with this configuration in source/llcppg.cfg:

{
  "Name": "libc",
  "Language": "c",
  "Dir": "$GOOS-$GOARCH/include",
  "Files": [
    "simd_float4.h"
  ],
  "FailFast": 0,
  "IgnoreInline": true
}

Put the selected inputs under source/darwin-arm64/include, with the macOS 14.0 SDK headers available there where included. Leave Stdlib unset, and run:

GOOS=darwin GOARCH=arm64 llcppg ./generated ./source

Current result

Generation exits 0 but omits the type:

-: toType: unsupported type -  (176: float __attribute__((ext_vector_type(4))))

176 is CXType_ExtVector. cl/type.go:toTypeEx has no conversion case for it. Parsing simd/math.h and simd/matrix.h produces many dependent skipped typedefs, records, variables and overloaded functions.

Requested support

Retain native extended-vector types and their dependent declarations with the target's required layout and calling convention. A same-size Go array alone is not sufficient evidence of vector ABI compatibility. The representation and any compiler requirements need to be established before selecting a mapping; this issue does not prescribe a new public helper API or fallback wrapper.

#1033 explicitly covers atomic/complex/128-bit/floating types and unprototyped function pointers, but does not include Clang extended vectors. Existing unsupported declarations should remain visibly identified until this support is implemented.

Environment

Reproduced on macOS/arm64 with LLVM/libclang 22.1.8, LLGo 1.0.9 and github.com/goplus/lib v0.7.0. The relevant installed generator sources were checked byte-for-byte against current main 90bd72cf. SDK-dependent cases use macOS 14.0 headers. These are generation-stage results, not cross-platform or ABI certification.

Lenguaje dominante
Go
Estrellas
40
Forks
13
Merge medio
2 h
PR fusionados (30 d)
150

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

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.

Más de goplus/llcppg

Todos los issues de goplus/llcppg

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.