microsoft / microsoft/DirectXShaderCompiler

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

Open
#7,006 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement needs-triage
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.