Full vector and fully specified vector swizzle stores are not affected by this change, only partial swizzles ie swizzles with fewer components than the vector being stored to.
Previously the vector being stored to loaded and any components not specified in the swizzle were used to create a full store to the vector.
While this change generates more SPIR-V instructions, it is necessary for correctness.
Fixes#2518.
Fix the error message for when an erroneous HLSL constructor statement
is detected.
Prior to this change, such error messages would not show correct file
path and line number information.
Additionally, update test data to account for updated error messages.
This makes struct returns from functions work, but breaks
structs containing arrays, due to limitations in subsequent
transforms in spirv-opt. This is expected to be fixed soon.
Fixes#1092. Allows arrays of opaques to keep arrayness, unless
needed by uniform array flattening.
Can handle assignments of mixed amounts of flattening.