On 23 December 2011 14:48, Ian Romanick <span dir="ltr">&lt;<a href="mailto:idr@freedesktop.org">idr@freedesktop.org</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
From: Ian Romanick &lt;<a href="mailto:ian.d.romanick@intel.com">ian.d.romanick@intel.com</a>&gt;<br>
<br>
Signed-off-by: Ian Romanick &lt;<a href="mailto:ian.d.romanick@intel.com">ian.d.romanick@intel.com</a>&gt;<br>
Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?id=43975" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=43975</a><br>
---<br>
 ...ecrement-float-out-parameter-not-an-lvalue.frag |   31 ++++++++++++++++++++<br>
 ...ecrement-float-out-parameter-not-an-lvalue.vert |   31 ++++++++++++++++++++<br>
 ...tdecrement-int-out-parameter-not-an-lvalue.frag |   31 ++++++++++++++++++++<br>
 ...tdecrement-int-out-parameter-not-an-lvalue.vert |   31 ++++++++++++++++++++<br>
 ...ecrement-ivec2-out-parameter-not-an-lvalue.frag |   31 ++++++++++++++++++++<br>
 ...ecrement-ivec2-out-parameter-not-an-lvalue.vert |   31 ++++++++++++++++++++<br>
 ...ecrement-ivec3-out-parameter-not-an-lvalue.frag |   31 ++++++++++++++++++++<br>
 ...ecrement-ivec3-out-parameter-not-an-lvalue.vert |   31 ++++++++++++++++++++<br>
 ...ecrement-ivec4-out-parameter-not-an-lvalue.frag |   31 ++++++++++++++++++++<br>
 ...ecrement-ivec4-out-parameter-not-an-lvalue.vert |   31 ++++++++++++++++++++<br>
 ...decrement-vec2-out-parameter-not-an-lvalue.frag |   31 ++++++++++++++++++++<br>
 ...decrement-vec2-out-parameter-not-an-lvalue.vert |   31 ++++++++++++++++++++<br>
 ...decrement-vec3-out-parameter-not-an-lvalue.frag |   31 ++++++++++++++++++++<br>
 ...decrement-vec3-out-parameter-not-an-lvalue.vert |   31 ++++++++++++++++++++<br>
 ...decrement-vec4-out-parameter-not-an-lvalue.frag |   31 ++++++++++++++++++++<br>
 ...decrement-vec4-out-parameter-not-an-lvalue.vert |   31 ++++++++++++++++++++<br>
 16 files changed, 496 insertions(+), 0 deletions(-)<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-float-out-parameter-not-an-lvalue.frag<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-float-out-parameter-not-an-lvalue.vert<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-int-out-parameter-not-an-lvalue.frag<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-int-out-parameter-not-an-lvalue.vert<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec2-out-parameter-not-an-lvalue.frag<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec2-out-parameter-not-an-lvalue.vert<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec3-out-parameter-not-an-lvalue.frag<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec3-out-parameter-not-an-lvalue.vert<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec4-out-parameter-not-an-lvalue.frag<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec4-out-parameter-not-an-lvalue.vert<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec2-out-parameter-not-an-lvalue.frag<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec2-out-parameter-not-an-lvalue.vert<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec3-out-parameter-not-an-lvalue.frag<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec3-out-parameter-not-an-lvalue.vert<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec4-out-parameter-not-an-lvalue.frag<br>
 create mode 100644 tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec4-out-parameter-not-an-lvalue.vert<br></blockquote><div><br>Personally, I would have preferred to have the tests in this series generated at piglit build time by a Python script (like the scripts in generated_tests/), with an example of one of the generated tests in the commit message to make review easier.  Especially since if we do find a problem in the tests later, it would be much easier to modify the script than to change all the tests.  But I&#39;m not going to ask you to spend a lot of time reworking things, especially given how long it took me to get around to reviewing these patches. <br>
<br>Acked-by: Paul Berry &lt;<a href="mailto:stereotype441@gmail.com">stereotype441@gmail.com</a>&gt;<br>
<br> </div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-float-out-parameter-not-an-lvalue.frag b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-float-out-parameter-not-an-lvalue.frag<br>
new file mode 100644<br>
index 0000000..939475d<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-float-out-parameter-not-an-lvalue.frag<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform float u;<br>
+varying vec4 v;<br>
+<br>
+void f(out float p)<br>
+{<br>
+    p = float(v.x);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    float t = u;<br>
+<br>
+    f(t--);<br>
+    gl_FragColor = vec4(t, v.yzw);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-float-out-parameter-not-an-lvalue.vert b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-float-out-parameter-not-an-lvalue.vert<br>
new file mode 100644<br>
index 0000000..3f9b1c3<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-float-out-parameter-not-an-lvalue.vert<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform float u;<br>
+attribute vec4 v;<br>
+<br>
+void f(out float p)<br>
+{<br>
+    p = float(v.x);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    float t = u;<br>
+<br>
+    f(t--);<br>
+    gl_Position = vec4(t, v.yzw);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-int-out-parameter-not-an-lvalue.frag b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-int-out-parameter-not-an-lvalue.frag<br>
new file mode 100644<br>
index 0000000..897561b<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-int-out-parameter-not-an-lvalue.frag<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform int u;<br>
+varying vec4 v;<br>
+<br>
+void f(out int p)<br>
+{<br>
+    p = int(v.x);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    int t = u;<br>
+<br>
+    f(t--);<br>
+    gl_FragColor = vec4(t, v.yzw);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-int-out-parameter-not-an-lvalue.vert b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-int-out-parameter-not-an-lvalue.vert<br>
new file mode 100644<br>
index 0000000..c297ca2<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-int-out-parameter-not-an-lvalue.vert<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform int u;<br>
+attribute vec4 v;<br>
+<br>
+void f(out int p)<br>
+{<br>
+    p = int(v.x);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    int t = u;<br>
+<br>
+    f(t--);<br>
+    gl_Position = vec4(t, v.yzw);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec2-out-parameter-not-an-lvalue.frag b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec2-out-parameter-not-an-lvalue.frag<br>
new file mode 100644<br>
index 0000000..cefed6b<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec2-out-parameter-not-an-lvalue.frag<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform ivec2 u;<br>
+varying vec4 v;<br>
+<br>
+void f(out ivec2 p)<br>
+{<br>
+    p = ivec2(v.xy);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    ivec2 t = u;<br>
+<br>
+    f(t--);<br>
+    gl_FragColor = vec4(t, <a href="http://v.zw" target="_blank">v.zw</a>);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec2-out-parameter-not-an-lvalue.vert b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec2-out-parameter-not-an-lvalue.vert<br>
new file mode 100644<br>
index 0000000..ccb88b9<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec2-out-parameter-not-an-lvalue.vert<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform ivec2 u;<br>
+attribute vec4 v;<br>
+<br>
+void f(out ivec2 p)<br>
+{<br>
+    p = ivec2(v.xy);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    ivec2 t = u;<br>
+<br>
+    f(t--);<br>
+    gl_Position = vec4(t, <a href="http://v.zw" target="_blank">v.zw</a>);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec3-out-parameter-not-an-lvalue.frag b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec3-out-parameter-not-an-lvalue.frag<br>
new file mode 100644<br>
index 0000000..86b89a6<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec3-out-parameter-not-an-lvalue.frag<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform ivec3 u;<br>
+varying vec4 v;<br>
+<br>
+void f(out ivec3 p)<br>
+{<br>
+    p = ivec3(v.xyz);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    ivec3 t = u;<br>
+<br>
+    f(t--);<br>
+    gl_FragColor = vec4(t, v.w);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec3-out-parameter-not-an-lvalue.vert b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec3-out-parameter-not-an-lvalue.vert<br>
new file mode 100644<br>
index 0000000..037b316<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec3-out-parameter-not-an-lvalue.vert<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform ivec3 u;<br>
+attribute vec4 v;<br>
+<br>
+void f(out ivec3 p)<br>
+{<br>
+    p = ivec3(v.xyz);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    ivec3 t = u;<br>
+<br>
+    f(t--);<br>
+    gl_Position = vec4(t, v.w);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec4-out-parameter-not-an-lvalue.frag b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec4-out-parameter-not-an-lvalue.frag<br>
new file mode 100644<br>
index 0000000..3a85cc5<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec4-out-parameter-not-an-lvalue.frag<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform ivec4 u;<br>
+varying vec4 v;<br>
+<br>
+void f(out ivec4 p)<br>
+{<br>
+    p = ivec4(v);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    ivec4 t = u;<br>
+<br>
+    f(t--);<br>
+    gl_FragColor = vec4(t);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec4-out-parameter-not-an-lvalue.vert b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec4-out-parameter-not-an-lvalue.vert<br>
new file mode 100644<br>
index 0000000..ce4b770<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-ivec4-out-parameter-not-an-lvalue.vert<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform ivec4 u;<br>
+attribute vec4 v;<br>
+<br>
+void f(out ivec4 p)<br>
+{<br>
+    p = ivec4(v);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    ivec4 t = u;<br>
+<br>
+    f(t--);<br>
+    gl_Position = vec4(t);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec2-out-parameter-not-an-lvalue.frag b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec2-out-parameter-not-an-lvalue.frag<br>
new file mode 100644<br>
index 0000000..1a5a5c9<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec2-out-parameter-not-an-lvalue.frag<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform vec2 u;<br>
+varying vec4 v;<br>
+<br>
+void f(out vec2 p)<br>
+{<br>
+    p = vec2(v.xy);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    vec2 t = u;<br>
+<br>
+    f(t--);<br>
+    gl_FragColor = vec4(t, <a href="http://v.zw" target="_blank">v.zw</a>);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec2-out-parameter-not-an-lvalue.vert b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec2-out-parameter-not-an-lvalue.vert<br>
new file mode 100644<br>
index 0000000..6eddb0b<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec2-out-parameter-not-an-lvalue.vert<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform vec2 u;<br>
+attribute vec4 v;<br>
+<br>
+void f(out vec2 p)<br>
+{<br>
+    p = vec2(v.xy);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    vec2 t = u;<br>
+<br>
+    f(t--);<br>
+    gl_Position = vec4(t, <a href="http://v.zw" target="_blank">v.zw</a>);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec3-out-parameter-not-an-lvalue.frag b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec3-out-parameter-not-an-lvalue.frag<br>
new file mode 100644<br>
index 0000000..2d1af79<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec3-out-parameter-not-an-lvalue.frag<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform vec3 u;<br>
+varying vec4 v;<br>
+<br>
+void f(out vec3 p)<br>
+{<br>
+    p = vec3(v.xyz);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    vec3 t = u;<br>
+<br>
+    f(t--);<br>
+    gl_FragColor = vec4(t, v.w);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec3-out-parameter-not-an-lvalue.vert b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec3-out-parameter-not-an-lvalue.vert<br>
new file mode 100644<br>
index 0000000..7b6a1e5<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec3-out-parameter-not-an-lvalue.vert<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform vec3 u;<br>
+attribute vec4 v;<br>
+<br>
+void f(out vec3 p)<br>
+{<br>
+    p = vec3(v.xyz);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    vec3 t = u;<br>
+<br>
+    f(t--);<br>
+    gl_Position = vec4(t, v.w);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec4-out-parameter-not-an-lvalue.frag b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec4-out-parameter-not-an-lvalue.frag<br>
new file mode 100644<br>
index 0000000..ca761c8<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec4-out-parameter-not-an-lvalue.frag<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform vec4 u;<br>
+varying vec4 v;<br>
+<br>
+void f(out vec4 p)<br>
+{<br>
+    p = vec4(v);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    vec4 t = u;<br>
+<br>
+    f(t--);<br>
+    gl_FragColor = vec4(t);<br>
+}<br>
diff --git a/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec4-out-parameter-not-an-lvalue.vert b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec4-out-parameter-not-an-lvalue.vert<br>
new file mode 100644<br>
index 0000000..bc7bd1f<br>
--- /dev/null<br>
+++ b/tests/spec/glsl-1.10/compiler/expressions/postdecrement-vec4-out-parameter-not-an-lvalue.vert<br>
@@ -0,0 +1,31 @@<br>
+/* [config]<br>
+ * expect_result: fail<br>
+ * glsl_version: 1.10<br>
+ * [end config]<br>
+ *<br>
+ * Page 32 (page 38 of the PDF) of the GLSL 1.10 spec says:<br>
+ *<br>
+ *     &quot;Variables that are built-in types, entire structures, structure<br>
+ *     fields, l-values with the field selector ( . ) applied to select<br>
+ *     components or swizzles without repeated fields, and l-values<br>
+ *     dereferenced with the array subscript operator ( [ ] ) are all<br>
+ *     l-values. Other binary or unary expressions, non-dereferenced arrays,<br>
+ *     function names, swizzles with repeated fields, and constants cannot be<br>
+ *     l-values.  The ternary operator (?:) is also not allowed as an<br>
+ *     l-value.&quot;<br>
+ */<br>
+uniform vec4 u;<br>
+attribute vec4 v;<br>
+<br>
+void f(out vec4 p)<br>
+{<br>
+    p = vec4(v);<br>
+}<br>
+<br>
+void main()<br>
+{<br>
+    vec4 t = u;<br>
+<br>
+    f(t--);<br>
+    gl_Position = vec4(t);<br>
+}<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.7.6.4<br>
<br>
_______________________________________________<br>
Piglit mailing list<br>
<a href="mailto:Piglit@lists.freedesktop.org">Piglit@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/piglit" target="_blank">http://lists.freedesktop.org/mailman/listinfo/piglit</a><br>
</font></span></blockquote></div><br>