SPV: Fix #1258: cache constant structs by id, not opcode.
Constants were generally cached by type opcode, but all structures share the
same type opcode (OpTypeStruct), so they need to be cached by type id.
diff --git a/Test/spv.constStruct.vert b/Test/spv.constStruct.vert
new file mode 100644
index 0000000..d5dd8da
--- /dev/null
+++ b/Test/spv.constStruct.vert
@@ -0,0 +1,22 @@
+#version 450
+
+precision highp float;
+
+struct U {
+ mat2 m;
+};
+
+struct T {
+ mat2 m;
+};
+
+struct S {
+ T t;
+ U u;
+};
+
+void main()
+{
+ S s1 = S(T(mat2(1.0)), U(mat2(1.0)));
+ S s2 = S(T(mat2(1.0)), U(mat2(1.0)));
+}