Run update_precision() on array and matrix constructors.
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index a2dd5a6..b2b187b 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -7694,7 +7694,7 @@
     TIntermTyped *ret_node = intermediate.setAggregateOperator(aggrNode, op, type, loc);
 
     TIntermAggregate *agg_node = ret_node->getAsAggregate();
-    if (agg_node && agg_node->isVector()) 
+    if (agg_node && (agg_node->isVector() || agg_node->isArray() || agg_node->isMatrix()))
         agg_node->updatePrecision();
 
     return ret_node;