diff --git a/Test/420.comp b/Test/420.comp
index e8cee3c7d7e5526e614a9bd28f1dc3682923f72e..d92e6f0d0e5a26abe7b0dfe1c759a7943eac56b2 100755
--- a/Test/420.comp
+++ b/Test/420.comp
@@ -19,4 +19,12 @@ void main()
             gl_MaxComputeImageUniforms +
             gl_MaxComputeAtomicCounters +
             gl_MaxComputeAtomicCounterBuffers;
+
+    barrier();
+    memoryBarrier();
+    memoryBarrierAtomicCounter();
+    memoryBarrierBuffer();
+    memoryBarrierImage();
+    memoryBarrierShared();
+    groupMemoryBarrier();
 }
\ No newline at end of file
diff --git a/Test/baseResults/420.comp.out b/Test/baseResults/420.comp.out
index 719054df4ff623106510c6573ace7b05b9196e87..a2311d5a80c659a9481bdf90b39eab71a26edc7b 100755
--- a/Test/baseResults/420.comp.out
+++ b/Test/baseResults/420.comp.out
@@ -46,6 +46,13 @@ ERROR: node is still EOpNull!
 0:17        'sfoo' (shared 3-component vector of float)
 0:17        Constant:
 0:17          1057.000000
+0:23      Barrier (global void)
+0:24      MemoryBarrier (global void)
+0:25      MemoryBarrierAtomicCounter (global void)
+0:26      MemoryBarrierBuffer (global void)
+0:27      MemoryBarrierImage (global void)
+0:28      MemoryBarrierShared (global void)
+0:29      GroupMemoryBarrier (global void)
 0:?   Linker Objects
 0:?     'gl_WorkGroupSize' (const 3-component vector of uint WorkGroupSize)
 0:?       2 (const uint)
@@ -99,6 +106,13 @@ ERROR: node is still EOpNull!
 0:17        'sfoo' (shared 3-component vector of float)
 0:17        Constant:
 0:17          1057.000000
+0:23      Barrier (global void)
+0:24      MemoryBarrier (global void)
+0:25      MemoryBarrierAtomicCounter (global void)
+0:26      MemoryBarrierBuffer (global void)
+0:27      MemoryBarrierImage (global void)
+0:28      MemoryBarrierShared (global void)
+0:29      GroupMemoryBarrier (global void)
 0:?   Linker Objects
 0:?     'gl_WorkGroupSize' (const 3-component vector of uint WorkGroupSize)
 0:?       2 (const uint)
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 35d7be1352e57833ee3e3086cdce6d60ab675b72..6a9fb20192c94f4f769807e3979cb0192f3e70a0 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -1572,7 +1572,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
         stageBuiltins[EShLangTessControl].append(
             "void barrier();"
             );
-    if ((profile != EEsProfile && version >= 430) || esBarrier)
+    if ((profile != EEsProfile && version >= 420) || esBarrier)
         stageBuiltins[EShLangCompute].append(
             "void barrier();"
             );
@@ -1580,7 +1580,7 @@ void TBuiltIns::initialize(int version, EProfile profile, int spv, int vulkan)
         commonBuiltins.append(
             "void memoryBarrier();"
             );
-    if ((profile != EEsProfile && version >= 430) || esBarrier) {
+    if ((profile != EEsProfile && version >= 420) || esBarrier) {
         commonBuiltins.append(
             "void memoryBarrierAtomicCounter();"
             "void memoryBarrierBuffer();"
@@ -3912,6 +3912,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, int spv, int vul
             symbolTable.setVariableExtensions("gl_MaxComputeImageUniforms",        1, &E_GL_ARB_compute_shader);
             symbolTable.setVariableExtensions("gl_MaxComputeAtomicCounters",       1, &E_GL_ARB_compute_shader);
             symbolTable.setVariableExtensions("gl_MaxComputeAtomicCounterBuffers", 1, &E_GL_ARB_compute_shader);
+
+            symbolTable.setFunctionExtensions("barrier",                    1, &E_GL_ARB_compute_shader);
+            symbolTable.setFunctionExtensions("memoryBarrierAtomicCounter", 1, &E_GL_ARB_compute_shader);
+            symbolTable.setFunctionExtensions("memoryBarrierBuffer",        1, &E_GL_ARB_compute_shader);
+            symbolTable.setFunctionExtensions("memoryBarrierImage",         1, &E_GL_ARB_compute_shader);
+            symbolTable.setFunctionExtensions("memoryBarrierShared",        1, &E_GL_ARB_compute_shader);
+            symbolTable.setFunctionExtensions("groupMemoryBarrier",         1, &E_GL_ARB_compute_shader);
         }
         break;