llvm / llvm/llvm-project

[HLSL][SPIRV] Broken module when copying local resource arrays targeting Vulkan

Open
#192,562 0 comments 0 reactions 1 assignee Claimed by @bob80905 View on GitHub
crash HLSL
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

Compiling an HLSL compute shader that copies a local resource array (RWByteAddressBuffer dst[2] = src;) crashes with "error in backend: Broken module found" when targeting Vulkan SPIRV. The DXIL backend compiles successfully.

Repro:

```hlsl
RWByteAddressBuffer Out : register(u0);
RWByteAddressBuffer Aux : register(u1);

[numthreads(1,1,1)]
void main() {
RWByteAddressBuffer src[2];
src[0] = Out;
src[1] = Aux;
RWByteAddressBuffer dst[2] = src;
dst[0].Store(0, 42);
}
```

Command: `clang-dxc -spirv -fspv-target-env=vulkan1.3 -T cs_6_0 -Fo out.o input.hlsl`

Error:
```
fatal error: error in backend: Broken module found, compilation aborted!
```
Stack dump:
```
#3 LLVMErrorHandler cc1_main.cpp:82
#4 llvm::report_fatal_error ErrorHandling.cpp:117
#5 llvm::report_fatal_error ErrorHandling.cpp:96
#6 llvm::VerifierPass::run Verifier.cpp:8378
```
Clang version: 23.0.0git (commit a6451547)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.