Comments (3)
Original addition was #809
There don't seem to be any mention of why this was done.
As for using OpConstantNull
instead: I would be against: the OpUndef has the advantage to be clear: it is not a desired value. Meaning we can do static analysis on the SPIR-V, and possibly find cases where there is a bug. If we use OpConstantNull, then we cannot differentiate actual null from bugs.
from directxshadercompiler.
Hi!
Thanks for the report & nice catch!
For some reasons when the return is not defined for a branch (here the compiler don't know both branches of the if/else returned), we generate an OpConstantNull instead of an OpUndef.
I'll fix that.
from directxshadercompiler.
@Keenuts See if you can find the reason in the history. I prefer using OpConstantNull when possible because if that code is triggered, it will give consistent results. That would be easier to debug. For types where OpConstantNull is not allowed, using undef is a good.
from directxshadercompiler.
Related Issues (20)
- [SPIR-V] Unexpected location decorate conflict between library entrypoints HOT 1
- SPV_GOOGLE_hlsl_functionality1 is adding by DXC even if user dont need it HOT 1
- VS2022 project build failed HOT 5
- [SPIR-V] Access violation error while parsing the shader HOT 5
- [SPIR-V] Re-enable object debug info HOT 1
- "error: pathspec 'external/googletest' did not match any file(s) known to git" when Pulling HOT 5
- Make process for keeping living release notes in the git repo
- [Feature Request] Run unittests\IRTests HOT 2
- Any way to disable `error: condition for short-circuiting logical ternary operator must be scalar` ? HOT 1
- Provide arm64 build instructions
- `enum class` is not a constexpr HOT 1
- [SPIR-V] Run command in `CodeGenSPIRV/intrinsics.sm6_6.ishelperlane.hlsl` uses `ps_6_0` instead of `ps_6_6` HOT 2
- [SPIR-V] Invalid SPIR-V operand with isnan() HOT 3
- [SPIR-V] DXC crashed with asuint() HOT 1
- DXC.exe missing from the folder HOT 1
- [SPIR-V] DXC rejects indirectly constant Texture Load offset HOT 1
- [SPIR-V] DXC crashes when declaring a variable in multiple case block
- [SPIR-V] Initialization of variables with its own value during declaration
- Shader compiler doesn't generate a loop where one should exist HOT 1
- dxc internal error; invalid GEP with initialization of matrix in a struct
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from directxshadercompiler.