diff options
| author | Jay Kwak <82421531+jkwak-work@users.noreply.github.com> | 2024-04-25 09:02:13 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-25 09:02:13 -0700 |
| commit | ed0681164d78591148781d08934676bfec63f9da (patch) | |
| tree | 432951144b1fea050b0c1f51670520c9ee64371e /source | |
| parent | 366a947cdf2e3c6958b7a9e17d561ce76ab0f594 (diff) | |
Keep const-ness in generic functions (#4028)
* Keep const-ness in generic functions
Closes #3834
The issue was that "const" variables inside of generic functions became
non-const variables. This issue prevented some of GLSL texture
functions from being called inside of generic functions.
When `propagateConstExpr()` iterates the global functions, the generic
functions had to be handled little differently. This commit allows the
iteration to happen for the generic functions.
* Adding an explantion of the test as a comment
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/slang-ir-constexpr.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/source/slang/slang-ir-constexpr.cpp b/source/slang/slang-ir-constexpr.cpp index 7a93a312c..199f8f8b0 100644 --- a/source/slang/slang-ir-constexpr.cpp +++ b/source/slang/slang-ir-constexpr.cpp @@ -650,6 +650,14 @@ void propagateConstExpr( default: break; + case kIROp_Generic: + { + auto gen = as<IRGeneric>(gv); + gv = as<IRFunc>(findGenericReturnVal(gen)); + if (nullptr == gv) + break; + } + [[fallthrough]]; case kIROp_Func: case kIROp_GlobalVar: { |
