Fix segfault with atomic arg check
Makes sure that we have an l-value before checking the storage type of the mem argument passed to an atomic memory operation. Fixes #3332.
This commit is contained in:
parent
323836e46b
commit
efc33d1ee5
5 changed files with 30 additions and 6 deletions
|
|
@ -1,5 +1,5 @@
|
|||
atomicAdd.comp
|
||||
ERROR: 0:18: 'atomicAdd' : Atomic memory function can only be used for shader storage block member or shared variable.
|
||||
ERROR: 0:18: 'atomicAdd' : Only l-values corresponding to shader block storage or shared variables can be used with atomic memory functions.
|
||||
ERROR: 1 compilation errors. No code generated.
|
||||
|
||||
|
||||
|
|
|
|||
9
Test/baseResults/spv.atomicRvalue.error.vert.out
Normal file
9
Test/baseResults/spv.atomicRvalue.error.vert.out
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
spv.atomicRvalue.error.vert
|
||||
ERROR: 0:5: 'assign' : l-value required
|
||||
ERROR: 0:5: 'out' : Non-L-value cannot be passed for 'out' or 'inout' parameters.
|
||||
ERROR: 0:5: 'atomicAdd' : Only l-values corresponding to shader block storage or shared variables can be used with atomic memory functions.
|
||||
ERROR: 0:6: 'atomicAdd' : Only l-values corresponding to shader block storage or shared variables can be used with atomic memory functions.
|
||||
ERROR: 4 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
||||
7
Test/spv.atomicRvalue.error.vert
Normal file
7
Test/spv.atomicRvalue.error.vert
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
#version 440
|
||||
|
||||
void main() {
|
||||
uint a = 5;
|
||||
atomicAdd(a * 2, 0);
|
||||
atomicAdd(a, 0);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue