microsoft / microsoft/DirectXShaderCompiler
[SPIR-V] Implement 'DependentScopeDeclRefExpr' bug when trying to assign a static const member field from template parameter struct
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 3.7k
- Forks
- 900
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 44
Description
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.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Godbolt reproduction linked in the issue and inspect the SPIR-V compiler path handling DependentScopeDeclRefExpr. Confirm the failure with the template parameter struct's static const member and compare it with the equivalent code inside a method. Done means the original reproduction compiles without requiring duplicated constants.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100