diff options
| author | Tim Foley <tfoleyNV@users.noreply.github.com> | 2019-03-25 14:39:13 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-03-25 14:39:13 -0700 |
| commit | bedcb920045dd68f522e29d90fc3804f84bc08d0 (patch) | |
| tree | 77de94c1a9304bc2c7361234993ff1eafb4b45a4 /tests/reflection/shared-modifier.hlsl.expected | |
| parent | 3ae31a6ed8d79c23b2ab5a7d7d755dd7e42618f7 (diff) | |
Fix handling of enum tags that aren't literals (#926)
An `enum` case currently lowers to the IR as the value of its tag expression, so if we have:
```hlsl
enum E
{
X = 99,
}
```
then `X` will lower as IR for the expression `99` which is just a literal.
If instead we have:
```hlsl
enum E
{
X = 99u,
}
```
then after type checking the expression is `int(99u)`, which will get emitted to the global (module) scope as a cast/conversion instruction, that then gets referenced at the use sites of `E.X`.
The emit logic wasn't set up to handle the case of referencing something directly from the global scope, so this change makes it so that side-effect-free global instructions are treated just like literal constants. This simple handling is fine for now since it will only apply to `enum` tag values (true global constants declared with `static const` have different handling).
Diffstat (limited to 'tests/reflection/shared-modifier.hlsl.expected')
0 files changed, 0 insertions, 0 deletions
