microsoft / DirectXShaderCompiler

This repo hosts the source for the DirectX Shader Compiler which is based on LLVM/Clang.
Other
3.11k stars 691 forks source link

[SPIR-V] Implement 'DependentScopeDeclRefExpr' bug when trying to assign a static const member field from template parameter struct #7006

Open Fletterio opened 1 day ago

Fletterio commented 1 day ago

Description I cannot define static const member field for a struct if they need to be computed from a template parameter struct's static const member field. This godbolt shows what I mean: https://godbolt.org/z/TjWGY9sx8 (uncomment line 21 for error)

It feels silly that this doesn't work, because as showcased in the godbolt above it's totally fine to define the same exact variables I want from within a method, but impossible to do so otherwise. So the current workaround is to redefine every such constant inside every function that wants to use it, which is ugly.

devshgraphicsprogramming commented 1 day ago

why does the bug not appear without -spirv !? I would have thought that templates get dealt with waaay before codegen.

Fletterio commented 1 day ago

Changed title to reflect it being a SPIR-V target bug