diff options
| author | ArielG-NV <159081215+ArielG-NV@users.noreply.github.com> | 2025-05-16 10:44:44 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-16 10:44:44 -0700 |
| commit | 0651ffb6489282f0f902ec5f630821a7b9d848bb (patch) | |
| tree | 28b27f1b5cc19520b4c54c046a260710d3e7fdd6 /examples/example-base | |
| parent | 8683b85c0494db99feb08b6efcdc26dfe006729f (diff) | |
Enforce rule that `export`/`extern` (non cpp) must be `const` (#7113)
* Enforce rule that `export`/`extern` (non cpp) must be `const`
fixes: #5570
Problem:
1. we allow non-const-link-time-var to be linked to a const-link-time-var.
2. problem is that: module use site has const var, so, we emit OpStore %Ptr %Const in IR, this is expected, this is good. We fail because we in reality have a OpStore %Ptr %Var (fails since we need a OpLoad in-between) in IR since the module with our link-time-variable-value is a regular variable.
3. We loose the float_litteral talked about inside the github issue since, we technically don't use our variable "VAL" (we never OpLoad from it), so spirv-opt removes the float_litteral, this is a byproduct of the actual issue.
Solution:
* `export`/`extern` variables must always be `const`. This excludes `__extern_cpp` since `cpp` does not exhibit this issue and works differently.
* format code
* changel logic and tests to only ensure `static const` with `export`/`extern`
* changing the rules: only reqirement is that if we have const we must have static
* remove a spirrious change made
* fix merge
---------
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'examples/example-base')
0 files changed, 0 insertions, 0 deletions
