Front-end: move to rational internal array-of-array interfaces and design.  (A-of-A is not yet implemented though.)
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 302d850..5fba7d3 100644
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -2469,7 +2469,7 @@
 
     if (glslangType.isArray()) {
         glslang::TType elementType;
-        elementType.shallowCopy(glslangType);   // TODO: desktop arrays of arrays functionality will need a deeper copy to avoid modifying the original
+        elementType.deepCopy(glslangType);
         elementType.dereference();
         for (int i = 0; i < glslangType.getArraySize(); ++i)
             spvConsts.push_back(createSpvConstant(elementType, consts, nextConst));