--- /dev/null
+atomicAdd.comp
+ERROR: 0:18: 'atomicAdd' : Atomic memory function can only be used for shader storage block member or shared variable.
+ERROR: 1 compilation errors. No code generated.
+
+
+Shader version: 320
+local_size = (1, 1, 1)
+ERROR: node is still EOpNull!
+0:15 Function Definition: main( ( global void)
+0:15 Function Parameters:
+0:16 Sequence
+0:16 AtomicAdd ( global highp int)
+0:16 x: direct index for structure (layout( column_major shared) coherent buffer highp int)
+0:16 'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 Constant:
+0:16 1 (const int)
+0:17 AtomicAdd ( global highp int)
+0:17 direct index (layout( std430) temp highp int)
+0:17 y: direct index for structure (layout( std430) global 3-element array of highp int)
+0:17 f: direct index for structure (layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y})
+0:17 't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f})
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:18 AtomicAdd ( global highp int)
+0:18 'z' ( global highp int)
+0:18 Constant:
+0:18 1 (const int)
+0:? Linker Objects
+0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f})
+0:? 'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x})
+0:? 'z' ( global highp int)
+
+
+Linked compute stage:
+
+
+Shader version: 320
+local_size = (1, 1, 1)
+ERROR: node is still EOpNull!
+0:15 Function Definition: main( ( global void)
+0:15 Function Parameters:
+0:16 Sequence
+0:16 AtomicAdd ( global highp int)
+0:16 x: direct index for structure (layout( column_major shared) coherent buffer highp int)
+0:16 'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 Constant:
+0:16 1 (const int)
+0:17 AtomicAdd ( global highp int)
+0:17 direct index (layout( std430) temp highp int)
+0:17 y: direct index for structure (layout( std430) global 3-element array of highp int)
+0:17 f: direct index for structure (layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y})
+0:17 't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f})
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:18 AtomicAdd ( global highp int)
+0:18 'z' ( global highp int)
+0:18 Constant:
+0:18 1 (const int)
+0:? Linker Objects
+0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f})
+0:? 'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x})
+0:? 'z' ( global highp int)
+
(arg0->getType().isFloatingDomain())) {
requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float, fnCandidate.getName().c_str());
}
+
+ const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true);
+ const TQualifier& qualifier = base->getType().getQualifier();
+ if (qualifier.storage != EvqShared && qualifier.storage != EvqBuffer)
+ error(loc,"Atomic memory function can only be used for shader storage block member or shared variable.", fnCandidate.getName().c_str(), "");
+
break;
}