Revert "Atomic memory function can only be used for shader storage block member or shared variable."
diff --git a/Test/atomicAdd.comp b/Test/atomicAdd.comp
deleted file mode 100644
index 65aa962..0000000
--- a/Test/atomicAdd.comp
+++ /dev/null
@@ -1,19 +0,0 @@
-#version 320 es
-layout(local_size_x = 1) in;
-
-struct structType{
- int y[3];
-};
-
-layout(std430) buffer t2 {
- structType f;
-} t;
-
-buffer coherent Buffer { int x; };
-int z;
-
-void main() {
- atomicAdd(x, 1);
- atomicAdd(t.f.y[1], 1);
- atomicAdd(z, 1);
-}
diff --git a/Test/baseResults/atomicAdd.comp.out b/Test/baseResults/atomicAdd.comp.out
deleted file mode 100644
index 6752a71..0000000
--- a/Test/baseResults/atomicAdd.comp.out
+++ /dev/null
@@ -1,87 +0,0 @@
-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)
-
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index 7d32746..c2b9edc 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -2409,12 +2409,6 @@
arg0->getType().isFloatingDomain()) {
requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float2, 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;
}
diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp
index cedd558..77f0aaf 100644
--- a/gtests/AST.FromFile.cpp
+++ b/gtests/AST.FromFile.cpp
@@ -282,7 +282,6 @@
"terminate.vert",
"negativeWorkGroupSize.comp",
"textureoffset_sampler2darrayshadow.vert",
- "atomicAdd.comp",
})),
FileNameAsCustomTestSuffix
);