Skip to content

Unsupported C-style cast generated in GLSL target #7838

@Chrisso

Description

@Chrisso

Issue Description
Compiler generates C-style casts in GLSL target which are not supported in GLSL. This also affects SPIR-V generation via -emit-spirv-via-glsl.

Reproducer Code

[shader("vertex")]
float4 main(uint vertexID : SV_VertexID, uint64_t address) : SV_Position
{
    let buffer = ConstBufferPointer<float4>(address);
    return buffer[vertexID];
}

Expected Behavior
slangc a.slang -target glsl should create valid GLSL with cast via constructor:

ConstBufferPointer_0 _S5 = ConstBufferPointer_x24init_0(BufferPointer__S1_2(address_0));

Actual Behavior
slangc a.slang -target glsl creates invalid GLSL with C-style cast:

ConstBufferPointer_0 _S5 = ConstBufferPointer_x24init_0((BufferPointer__S1_2)address_0);

Direct compilation to SPIR-V works, but via GLSL it fails:

$ slangc a.slang -target spirv -o a.spv -entry main -emit-spirv-via-glsl
glslang:  a.slang(2): warning :  'BufferPointer__S1_2' : identifiers containing consecutive underscores ("__") are reserved
glslang:  a.slang(4): error :  '' :  syntax error, unexpected RIGHT_PAREN, expecting LEFT_PAREN
glslang: note : ERROR: 1 compilation errors.  No code generated.

Environment:

$ slangc -version
2025.11-12-gc5295eae2
$ glslang --version
Glslang Version: 11:15.4.0
ESSL Version: OpenGL ES GLSL 3.20 glslang Khronos. 15.4.0
GLSL Version: 4.60 glslang Khronos. 15.4.0
SPIR-V Version 0x00010600, Revision 1
GLSL.std.450 Version 100, Revision 1
Khronos Tool ID 8
SPIR-V Generator Version 11
GL_KHR_vulkan_glsl version 100
ARB_GL_gl_spirv version 100

Metadata

Metadata

Labels

No labels
No labels

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions