This is a good set, but, based on some of the previous issues, I think a couple more tests would be good.
1. Verify this doesn't generate any warnings void f(out float x); out float y; void main() { float will_be_defined; f(will_be_defined); y = will_be_defined; } 2. Verify this generates only one warning void f(inout float x); out float y; void main() { float will_be_defined; f(will_be_defined); y = will_be_defined; } There are probably some other variations of these that would be interesting. I think this patch is Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> but I'd like to see a few more tests. On 05/10/2016 12:13 AM, Alejandro Piñeiro wrote: > --- > .../glsl/tests/warnings/000-basic-test.vert | 10 ++++++++ > .../tests/warnings/000-basic-test.vert.expected | 1 + > .../warnings/001-use-undefined-then-define.vert | 12 ++++++++++ > .../001-use-undefined-then-define.vert.expected | 1 + > src/compiler/glsl/tests/warnings/002-loop.vert | 23 ++++++++++++++++++ > .../glsl/tests/warnings/002-loop.vert.expected | 3 +++ > src/compiler/glsl/tests/warnings/003-less.vert | 17 +++++++++++++ > .../glsl/tests/warnings/003-less.vert.expected | 1 + > src/compiler/glsl/tests/warnings/004-greater.vert | 17 +++++++++++++ > .../glsl/tests/warnings/004-greater.vert.expected | 1 + > src/compiler/glsl/tests/warnings/005-lequal.vert | 17 +++++++++++++ > .../glsl/tests/warnings/005-lequal.vert.expected | 1 + > src/compiler/glsl/tests/warnings/006-gequal.vert | 17 +++++++++++++ > .../glsl/tests/warnings/006-gequal.vert.expected | 1 + > src/compiler/glsl/tests/warnings/007-test-mod.vert | 25 +++++++++++++++++++ > .../glsl/tests/warnings/007-test-mod.vert.expected | 3 +++ > .../glsl/tests/warnings/008-mulassign.vert | 12 ++++++++++ > .../tests/warnings/008-mulassign.vert.expected | 1 + > .../glsl/tests/warnings/009-div-assign.vert | 12 ++++++++++ > .../tests/warnings/009-div-assign.vert.expected | 1 + > .../glsl/tests/warnings/010-add-assign.vert | 12 ++++++++++ > .../tests/warnings/010-add-assign.vert.expected | 1 + > .../glsl/tests/warnings/011-sub-assign.vert | 12 ++++++++++ > .../tests/warnings/011-sub-assign.vert.expected | 1 + > .../glsl/tests/warnings/012-modassign.vert | 12 ++++++++++ > .../tests/warnings/012-modassign.vert.expected | 1 + > src/compiler/glsl/tests/warnings/013-lsassign.vert | 12 ++++++++++ > .../glsl/tests/warnings/013-lsassign.vert.expected | 1 + > src/compiler/glsl/tests/warnings/014-rsassign.vert | 12 ++++++++++ > .../glsl/tests/warnings/014-rsassign.vert.expected | 1 + > .../glsl/tests/warnings/015-andassign.vert | 12 ++++++++++ > .../tests/warnings/015-andassign.vert.expected | 1 + > src/compiler/glsl/tests/warnings/016-orassign.vert | 12 ++++++++++ > .../glsl/tests/warnings/016-orassign.vert.expected | 1 + > .../glsl/tests/warnings/017-xorassign.vert | 12 ++++++++++ > .../tests/warnings/017-xorassign.vert.expected | 1 + > src/compiler/glsl/tests/warnings/018-bitand.vert | 24 +++++++++++++++++++ > .../glsl/tests/warnings/018-bitand.vert.expected | 3 +++ > src/compiler/glsl/tests/warnings/019-array.vert | 23 ++++++++++++++++++ > .../glsl/tests/warnings/019-array.vert.expected | 5 ++++ > .../glsl/tests/warnings/020-array-length.vert | 12 ++++++++++ > .../tests/warnings/020-array-length.vert.expected | 0 > src/compiler/glsl/tests/warnings/021-lshift.vert | 25 +++++++++++++++++++ > .../glsl/tests/warnings/021-lshift.vert.expected | 3 +++ > src/compiler/glsl/tests/warnings/022-rshift.vert | 25 +++++++++++++++++++ > .../glsl/tests/warnings/022-rshift.vert.expected | 3 +++ > src/compiler/glsl/tests/warnings/023-switch.vert | 28 > ++++++++++++++++++++++ > .../glsl/tests/warnings/023-switch.vert.expected | 3 +++ > .../glsl/tests/warnings/024-shaderout.vert | 19 +++++++++++++++ > .../tests/warnings/024-shaderout.vert.expected | 2 ++ > .../025-out-inout-function-parameters.vert | 16 +++++++++++++ > ...025-out-inout-function-parameters.vert.expected | 1 + > .../glsl/tests/warnings/026-conditional.vert | 17 +++++++++++++ > .../tests/warnings/026-conditional.vert.expected | 6 +++++ > .../glsl/tests/warnings/027-fieldselection.vert | 23 ++++++++++++++++++ > .../warnings/027-fieldselection.vert.expected | 1 + > 56 files changed, 519 insertions(+) > create mode 100644 src/compiler/glsl/tests/warnings/000-basic-test.vert > create mode 100644 > src/compiler/glsl/tests/warnings/000-basic-test.vert.expected > create mode 100644 > src/compiler/glsl/tests/warnings/001-use-undefined-then-define.vert > create mode 100644 > src/compiler/glsl/tests/warnings/001-use-undefined-then-define.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/002-loop.vert > create mode 100644 src/compiler/glsl/tests/warnings/002-loop.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/003-less.vert > create mode 100644 src/compiler/glsl/tests/warnings/003-less.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/004-greater.vert > create mode 100644 src/compiler/glsl/tests/warnings/004-greater.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/005-lequal.vert > create mode 100644 src/compiler/glsl/tests/warnings/005-lequal.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/006-gequal.vert > create mode 100644 src/compiler/glsl/tests/warnings/006-gequal.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/007-test-mod.vert > create mode 100644 > src/compiler/glsl/tests/warnings/007-test-mod.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/008-mulassign.vert > create mode 100644 > src/compiler/glsl/tests/warnings/008-mulassign.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/009-div-assign.vert > create mode 100644 > src/compiler/glsl/tests/warnings/009-div-assign.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/010-add-assign.vert > create mode 100644 > src/compiler/glsl/tests/warnings/010-add-assign.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/011-sub-assign.vert > create mode 100644 > src/compiler/glsl/tests/warnings/011-sub-assign.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/012-modassign.vert > create mode 100644 > src/compiler/glsl/tests/warnings/012-modassign.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/013-lsassign.vert > create mode 100644 > src/compiler/glsl/tests/warnings/013-lsassign.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/014-rsassign.vert > create mode 100644 > src/compiler/glsl/tests/warnings/014-rsassign.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/015-andassign.vert > create mode 100644 > src/compiler/glsl/tests/warnings/015-andassign.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/016-orassign.vert > create mode 100644 > src/compiler/glsl/tests/warnings/016-orassign.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/017-xorassign.vert > create mode 100644 > src/compiler/glsl/tests/warnings/017-xorassign.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/018-bitand.vert > create mode 100644 src/compiler/glsl/tests/warnings/018-bitand.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/019-array.vert > create mode 100644 src/compiler/glsl/tests/warnings/019-array.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/020-array-length.vert > create mode 100644 > src/compiler/glsl/tests/warnings/020-array-length.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/021-lshift.vert > create mode 100644 src/compiler/glsl/tests/warnings/021-lshift.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/022-rshift.vert > create mode 100644 src/compiler/glsl/tests/warnings/022-rshift.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/023-switch.vert > create mode 100644 src/compiler/glsl/tests/warnings/023-switch.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/024-shaderout.vert > create mode 100644 > src/compiler/glsl/tests/warnings/024-shaderout.vert.expected > create mode 100644 > src/compiler/glsl/tests/warnings/025-out-inout-function-parameters.vert > create mode 100644 > src/compiler/glsl/tests/warnings/025-out-inout-function-parameters.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/026-conditional.vert > create mode 100644 > src/compiler/glsl/tests/warnings/026-conditional.vert.expected > create mode 100644 src/compiler/glsl/tests/warnings/027-fieldselection.vert > create mode 100644 > src/compiler/glsl/tests/warnings/027-fieldselection.vert.expected > > diff --git a/src/compiler/glsl/tests/warnings/000-basic-test.vert > b/src/compiler/glsl/tests/warnings/000-basic-test.vert > new file mode 100644 > index 0000000..266eed6 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/000-basic-test.vert > @@ -0,0 +1,10 @@ > +#version 130 > + > +void main() > +{ > + float foo; > + float undefined; > + > + foo = undefined; > +} > + > diff --git a/src/compiler/glsl/tests/warnings/000-basic-test.vert.expected > b/src/compiler/glsl/tests/warnings/000-basic-test.vert.expected > new file mode 100644 > index 0000000..ed02a95 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/000-basic-test.vert.expected > @@ -0,0 +1 @@ > +0:8(8): warning: `undefined' used uninitialized > diff --git > a/src/compiler/glsl/tests/warnings/001-use-undefined-then-define.vert > b/src/compiler/glsl/tests/warnings/001-use-undefined-then-define.vert > new file mode 100644 > index 0000000..2175afe > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/001-use-undefined-then-define.vert > @@ -0,0 +1,12 @@ > +#version 130 > + > +void main() > +{ > + float foo; > + float undefinedThenDefined; > + > + foo = undefinedThenDefined; > + undefinedThenDefined = 2.0; > + foo = undefinedThenDefined; > +} > + > diff --git > a/src/compiler/glsl/tests/warnings/001-use-undefined-then-define.vert.expected > > b/src/compiler/glsl/tests/warnings/001-use-undefined-then-define.vert.expected > new file mode 100644 > index 0000000..a036d67 > --- /dev/null > +++ > b/src/compiler/glsl/tests/warnings/001-use-undefined-then-define.vert.expected > @@ -0,0 +1 @@ > +0:8(8): warning: `undefinedThenDefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/002-loop.vert > b/src/compiler/glsl/tests/warnings/002-loop.vert > new file mode 100644 > index 0000000..de05d9c > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/002-loop.vert > @@ -0,0 +1,23 @@ > +#version 130 > + > +void main() > +{ > + int i; > + int undefined; > + int undefined2; > + int defined = 2; > + float fooFloat; > + > + for (i = 0; i < undefined; i++) { > + fooFloat = 10.0; > + } > + > + for (; undefined < undefined2; i++) { > + fooFloat = 10.0; > + } > + > + for (i = 0; i < defined; i++) { > + fooFloat = 10.0; > + } > +} > + > diff --git a/src/compiler/glsl/tests/warnings/002-loop.vert.expected > b/src/compiler/glsl/tests/warnings/002-loop.vert.expected > new file mode 100644 > index 0000000..7a51001 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/002-loop.vert.expected > @@ -0,0 +1,3 @@ > +0:11(18): warning: `undefined' used uninitialized > +0:15(9): warning: `undefined' used uninitialized > +0:15(21): warning: `undefined2' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/003-less.vert > b/src/compiler/glsl/tests/warnings/003-less.vert > new file mode 100644 > index 0000000..bbab55a > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/003-less.vert > @@ -0,0 +1,17 @@ > +#version 130 > + > +void main() > +{ > + int undefined; > + int defined = 2; > + float fooFloat; > + > + if (undefined < 0) { > + fooFloat = 10.0; > + } > + > + if (defined < 0) { > + fooFloat = 10.0; > + } > +} > + > diff --git a/src/compiler/glsl/tests/warnings/003-less.vert.expected > b/src/compiler/glsl/tests/warnings/003-less.vert.expected > new file mode 100644 > index 0000000..93cd789 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/003-less.vert.expected > @@ -0,0 +1 @@ > +0:9(6): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/004-greater.vert > b/src/compiler/glsl/tests/warnings/004-greater.vert > new file mode 100644 > index 0000000..c9842e5 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/004-greater.vert > @@ -0,0 +1,17 @@ > +#version 130 > + > +void main() > +{ > + int undefined; > + int defined = 2; > + float fooFloat; > + > + if (undefined > 0) { > + fooFloat = 10.0; > + } > + > + if (defined > 0) { > + fooFloat = 10.0; > + } > +} > + > diff --git a/src/compiler/glsl/tests/warnings/004-greater.vert.expected > b/src/compiler/glsl/tests/warnings/004-greater.vert.expected > new file mode 100644 > index 0000000..93cd789 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/004-greater.vert.expected > @@ -0,0 +1 @@ > +0:9(6): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/005-lequal.vert > b/src/compiler/glsl/tests/warnings/005-lequal.vert > new file mode 100644 > index 0000000..73e476a > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/005-lequal.vert > @@ -0,0 +1,17 @@ > +#version 130 > + > +void main() > +{ > + int undefined; > + int defined = 2; > + float fooFloat; > + > + if (undefined <= 0) { > + fooFloat = 10.0; > + } > + > + if (defined <= 0) { > + fooFloat = 10.0; > + } > +} > + > diff --git a/src/compiler/glsl/tests/warnings/005-lequal.vert.expected > b/src/compiler/glsl/tests/warnings/005-lequal.vert.expected > new file mode 100644 > index 0000000..93cd789 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/005-lequal.vert.expected > @@ -0,0 +1 @@ > +0:9(6): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/006-gequal.vert > b/src/compiler/glsl/tests/warnings/006-gequal.vert > new file mode 100644 > index 0000000..f1694bd > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/006-gequal.vert > @@ -0,0 +1,17 @@ > +#version 130 > + > +void main() > +{ > + int undefined; > + int defined = 2; > + float fooFloat; > + > + if (undefined >= 0) { > + fooFloat = 10.0; > + } > + > + if (defined >= 0) { > + fooFloat = 10.0; > + } > +} > + > diff --git a/src/compiler/glsl/tests/warnings/006-gequal.vert.expected > b/src/compiler/glsl/tests/warnings/006-gequal.vert.expected > new file mode 100644 > index 0000000..93cd789 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/006-gequal.vert.expected > @@ -0,0 +1 @@ > +0:9(6): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/007-test-mod.vert > b/src/compiler/glsl/tests/warnings/007-test-mod.vert > new file mode 100644 > index 0000000..2881db8 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/007-test-mod.vert > @@ -0,0 +1,25 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + float fooFloat; > + > + if (undefined % 2 == 0) { > + fooFloat = 10.0; > + } > + > + if (defined % 2 == 0) { > + fooFloat = 10.0; > + } > + > + if (undefined % defined == 0) { > + fooFloat = 10.0; > + } > + > + if (defined % undefined == 0) { > + fooFloat = 10.0; > + } > +} > + > diff --git a/src/compiler/glsl/tests/warnings/007-test-mod.vert.expected > b/src/compiler/glsl/tests/warnings/007-test-mod.vert.expected > new file mode 100644 > index 0000000..78613d5 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/007-test-mod.vert.expected > @@ -0,0 +1,3 @@ > +0:9(6): warning: `undefined' used uninitialized > +0:17(6): warning: `undefined' used uninitialized > +0:21(16): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/008-mulassign.vert > b/src/compiler/glsl/tests/warnings/008-mulassign.vert > new file mode 100644 > index 0000000..0923891 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/008-mulassign.vert > @@ -0,0 +1,12 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + int fooInt; > + > + fooInt *= undefined; > + fooInt *= defined; > +} > + > diff --git a/src/compiler/glsl/tests/warnings/008-mulassign.vert.expected > b/src/compiler/glsl/tests/warnings/008-mulassign.vert.expected > new file mode 100644 > index 0000000..8fbb408 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/008-mulassign.vert.expected > @@ -0,0 +1 @@ > +0:9(12): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/009-div-assign.vert > b/src/compiler/glsl/tests/warnings/009-div-assign.vert > new file mode 100644 > index 0000000..91440bf > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/009-div-assign.vert > @@ -0,0 +1,12 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + int fooInt; > + > + fooInt /= undefined; > + fooInt /= defined; > +} > + > diff --git a/src/compiler/glsl/tests/warnings/009-div-assign.vert.expected > b/src/compiler/glsl/tests/warnings/009-div-assign.vert.expected > new file mode 100644 > index 0000000..8fbb408 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/009-div-assign.vert.expected > @@ -0,0 +1 @@ > +0:9(12): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/010-add-assign.vert > b/src/compiler/glsl/tests/warnings/010-add-assign.vert > new file mode 100644 > index 0000000..661219f > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/010-add-assign.vert > @@ -0,0 +1,12 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + int fooInt; > + > + fooInt += undefined; > + fooInt += defined; > +} > + > diff --git a/src/compiler/glsl/tests/warnings/010-add-assign.vert.expected > b/src/compiler/glsl/tests/warnings/010-add-assign.vert.expected > new file mode 100644 > index 0000000..8fbb408 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/010-add-assign.vert.expected > @@ -0,0 +1 @@ > +0:9(12): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/011-sub-assign.vert > b/src/compiler/glsl/tests/warnings/011-sub-assign.vert > new file mode 100644 > index 0000000..9839dec > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/011-sub-assign.vert > @@ -0,0 +1,12 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + int fooInt; > + > + fooInt -= undefined; > + fooInt -= defined; > +} > + > diff --git a/src/compiler/glsl/tests/warnings/011-sub-assign.vert.expected > b/src/compiler/glsl/tests/warnings/011-sub-assign.vert.expected > new file mode 100644 > index 0000000..8fbb408 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/011-sub-assign.vert.expected > @@ -0,0 +1 @@ > +0:9(12): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/012-modassign.vert > b/src/compiler/glsl/tests/warnings/012-modassign.vert > new file mode 100644 > index 0000000..2f261a3 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/012-modassign.vert > @@ -0,0 +1,12 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + int myInt; > + > + myInt %= undefined; > + myInt %= defined; > +} > + > diff --git a/src/compiler/glsl/tests/warnings/012-modassign.vert.expected > b/src/compiler/glsl/tests/warnings/012-modassign.vert.expected > new file mode 100644 > index 0000000..637142e > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/012-modassign.vert.expected > @@ -0,0 +1 @@ > +0:9(11): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/013-lsassign.vert > b/src/compiler/glsl/tests/warnings/013-lsassign.vert > new file mode 100644 > index 0000000..f2b49e2 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/013-lsassign.vert > @@ -0,0 +1,12 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + int fooInt; > + > + fooInt >>= undefined; > + fooInt >>= defined; > +} > + > diff --git a/src/compiler/glsl/tests/warnings/013-lsassign.vert.expected > b/src/compiler/glsl/tests/warnings/013-lsassign.vert.expected > new file mode 100644 > index 0000000..b20d3c0 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/013-lsassign.vert.expected > @@ -0,0 +1 @@ > +0:9(13): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/014-rsassign.vert > b/src/compiler/glsl/tests/warnings/014-rsassign.vert > new file mode 100644 > index 0000000..798b6cc > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/014-rsassign.vert > @@ -0,0 +1,12 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + int fooInt; > + > + fooInt <<= undefined; > + fooInt <<= defined; > +} > + > diff --git a/src/compiler/glsl/tests/warnings/014-rsassign.vert.expected > b/src/compiler/glsl/tests/warnings/014-rsassign.vert.expected > new file mode 100644 > index 0000000..b20d3c0 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/014-rsassign.vert.expected > @@ -0,0 +1 @@ > +0:9(13): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/015-andassign.vert > b/src/compiler/glsl/tests/warnings/015-andassign.vert > new file mode 100644 > index 0000000..a86a8d8 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/015-andassign.vert > @@ -0,0 +1,12 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + int fooInt; > + > + fooInt &= undefined; > + fooInt &= defined; > +} > + > diff --git a/src/compiler/glsl/tests/warnings/015-andassign.vert.expected > b/src/compiler/glsl/tests/warnings/015-andassign.vert.expected > new file mode 100644 > index 0000000..8fbb408 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/015-andassign.vert.expected > @@ -0,0 +1 @@ > +0:9(12): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/016-orassign.vert > b/src/compiler/glsl/tests/warnings/016-orassign.vert > new file mode 100644 > index 0000000..c04241a > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/016-orassign.vert > @@ -0,0 +1,12 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + int fooInt; > + > + fooInt |= undefined; > + fooInt |= defined; > +} > + > diff --git a/src/compiler/glsl/tests/warnings/016-orassign.vert.expected > b/src/compiler/glsl/tests/warnings/016-orassign.vert.expected > new file mode 100644 > index 0000000..8fbb408 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/016-orassign.vert.expected > @@ -0,0 +1 @@ > +0:9(12): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/017-xorassign.vert > b/src/compiler/glsl/tests/warnings/017-xorassign.vert > new file mode 100644 > index 0000000..ff649f7 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/017-xorassign.vert > @@ -0,0 +1,12 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + int fooInt; > + > + fooInt ^= undefined; > + fooInt ^= defined; > +} > + > diff --git a/src/compiler/glsl/tests/warnings/017-xorassign.vert.expected > b/src/compiler/glsl/tests/warnings/017-xorassign.vert.expected > new file mode 100644 > index 0000000..8fbb408 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/017-xorassign.vert.expected > @@ -0,0 +1 @@ > +0:9(12): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/018-bitand.vert > b/src/compiler/glsl/tests/warnings/018-bitand.vert > new file mode 100644 > index 0000000..7e879dc > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/018-bitand.vert > @@ -0,0 +1,24 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + float fooFloat; > + > + if ((undefined | 2) == 0) { > + fooFloat = 10.0; > + } > + > + if ((defined | 2) == 0) { > + fooFloat = 10.0; > + } > + > + if ((undefined | defined) == 0) { > + fooFloat = 10.0; > + } > + > + if ((defined | undefined) == 0) { > + fooFloat = 10.0; > + } > +} > diff --git a/src/compiler/glsl/tests/warnings/018-bitand.vert.expected > b/src/compiler/glsl/tests/warnings/018-bitand.vert.expected > new file mode 100644 > index 0000000..c7e5c99 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/018-bitand.vert.expected > @@ -0,0 +1,3 @@ > +0:9(7): warning: `undefined' used uninitialized > +0:17(7): warning: `undefined' used uninitialized > +0:21(17): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/019-array.vert > b/src/compiler/glsl/tests/warnings/019-array.vert > new file mode 100644 > index 0000000..43d7f4c > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/019-array.vert > @@ -0,0 +1,23 @@ > +#version 130 > + > +void main() > +{ > + int undefinedIndex; > + int undefinedIndex2; > + int definedIndex = 2; > + int definedIndex2 = 2; > + float array[4]; > + float fooPos; > + int fooLength; > + > + fooPos = array[undefinedIndex]; > + fooPos = array[definedIndex]; > + > + fooPos = array[definedIndex+definedIndex2]; > + fooPos = array[undefinedIndex+undefinedIndex2]; > + array[0] = 10.0; > + fooPos = array[definedIndex]; > + > + array[undefinedIndex2] = array[undefinedIndex]; > +} > + > diff --git a/src/compiler/glsl/tests/warnings/019-array.vert.expected > b/src/compiler/glsl/tests/warnings/019-array.vert.expected > new file mode 100644 > index 0000000..3d80306 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/019-array.vert.expected > @@ -0,0 +1,5 @@ > +0:13(17): warning: `undefinedIndex' used uninitialized > +0:17(17): warning: `undefinedIndex' used uninitialized > +0:17(32): warning: `undefinedIndex2' used uninitialized > +0:21(8): warning: `undefinedIndex2' used uninitialized > +0:21(33): warning: `undefinedIndex' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/020-array-length.vert > b/src/compiler/glsl/tests/warnings/020-array-length.vert > new file mode 100644 > index 0000000..0fa57b2 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/020-array-length.vert > @@ -0,0 +1,12 @@ > +#version 130 > + > +void main() > +{ > + float array[4]; > + int fooLength; > + > + fooLength = array.length(); > + array[0] = 2.0; > + fooLength = array.length(); > +} > + > diff --git a/src/compiler/glsl/tests/warnings/020-array-length.vert.expected > b/src/compiler/glsl/tests/warnings/020-array-length.vert.expected > new file mode 100644 > index 0000000..e69de29 > diff --git a/src/compiler/glsl/tests/warnings/021-lshift.vert > b/src/compiler/glsl/tests/warnings/021-lshift.vert > new file mode 100644 > index 0000000..ed8c819 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/021-lshift.vert > @@ -0,0 +1,25 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + float fooFloat; > + > + if (undefined << 2 == 0) { > + fooFloat = 10.0; > + } > + > + if (defined << 2 == 0) { > + fooFloat = 10.0; > + } > + > + if (undefined << defined == 0) { > + fooFloat = 10.0; > + } > + > + if (defined << undefined == 0) { > + fooFloat = 10.0; > + } > +} > + > diff --git a/src/compiler/glsl/tests/warnings/021-lshift.vert.expected > b/src/compiler/glsl/tests/warnings/021-lshift.vert.expected > new file mode 100644 > index 0000000..5813f12 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/021-lshift.vert.expected > @@ -0,0 +1,3 @@ > +0:9(6): warning: `undefined' used uninitialized > +0:17(6): warning: `undefined' used uninitialized > +0:21(17): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/022-rshift.vert > b/src/compiler/glsl/tests/warnings/022-rshift.vert > new file mode 100644 > index 0000000..226d346 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/022-rshift.vert > @@ -0,0 +1,25 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + float fooFloat; > + > + if (undefined >> 2 == 0) { > + fooFloat = 10.0; > + } > + > + if (defined >> 2 == 0) { > + fooFloat = 10.0; > + } > + > + if (undefined >> defined == 0) { > + fooFloat = 10.0; > + } > + > + if (defined >> undefined == 0) { > + fooFloat = 10.0; > + } > +} > + > diff --git a/src/compiler/glsl/tests/warnings/022-rshift.vert.expected > b/src/compiler/glsl/tests/warnings/022-rshift.vert.expected > new file mode 100644 > index 0000000..5813f12 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/022-rshift.vert.expected > @@ -0,0 +1,3 @@ > +0:9(6): warning: `undefined' used uninitialized > +0:17(6): warning: `undefined' used uninitialized > +0:21(17): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/023-switch.vert > b/src/compiler/glsl/tests/warnings/023-switch.vert > new file mode 100644 > index 0000000..4527971 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/023-switch.vert > @@ -0,0 +1,28 @@ > +#version 130 > + > +void main() > +{ > + int defined = 2; > + int undefined; > + float fooFloat; > + int fooInt; > + > + switch(undefined) { > + case 0: > + fooFloat = 0.0; > + case 1: > + fooFloat = 1.0; > + default: > + fooFloat = undefined; > + } > + > + switch(defined) { > + case 0: > + fooFloat = 0.0; > + case 1: > + fooFloat = 1.0; > + default: > + fooFloat = undefined; > + } > +} > + > diff --git a/src/compiler/glsl/tests/warnings/023-switch.vert.expected > b/src/compiler/glsl/tests/warnings/023-switch.vert.expected > new file mode 100644 > index 0000000..201d0a2 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/023-switch.vert.expected > @@ -0,0 +1,3 @@ > +0:10(9): warning: `undefined' used uninitialized > +0:16(13): warning: `undefined' used uninitialized > +0:25(13): warning: `undefined' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/024-shaderout.vert > b/src/compiler/glsl/tests/warnings/024-shaderout.vert > new file mode 100644 > index 0000000..00a7988 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/024-shaderout.vert > @@ -0,0 +1,19 @@ > +#version 130 > + > +out int fooOut; > + > +void main() > +{ > + int defined = 2; > + int undefined; > + int fooInt; > + > + defined = fooOut; > + fooOut = undefined; > + /* Technically at this point fooOut is still undefined. But it was > + * initialized that is what the unitialized warning detects in any > + * case. "Real undefined" is beyond the scope of what mesa is/should > + * detect*/ > + defined = fooOut; > +} > + > diff --git a/src/compiler/glsl/tests/warnings/024-shaderout.vert.expected > b/src/compiler/glsl/tests/warnings/024-shaderout.vert.expected > new file mode 100644 > index 0000000..c85c55a > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/024-shaderout.vert.expected > @@ -0,0 +1,2 @@ > +0:11(12): warning: `fooOut' used uninitialized > +0:12(11): warning: `undefined' used uninitialized > diff --git > a/src/compiler/glsl/tests/warnings/025-out-inout-function-parameters.vert > b/src/compiler/glsl/tests/warnings/025-out-inout-function-parameters.vert > new file mode 100644 > index 0000000..c6b2b16 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/025-out-inout-function-parameters.vert > @@ -0,0 +1,16 @@ > +#version 130 > + > +void foo(float normalVar, out float outVar, inout float inoutVar) > +{ > + outVar = 1.0f; > +} > + > +void main() > +{ > + float undefinedFloat; > + float noRaise; > + float noRaise2; > + > + foo(undefinedFloat, noRaise, noRaise2); > +} > + > diff --git > a/src/compiler/glsl/tests/warnings/025-out-inout-function-parameters.vert.expected > > b/src/compiler/glsl/tests/warnings/025-out-inout-function-parameters.vert.expected > new file mode 100644 > index 0000000..5e2c007 > --- /dev/null > +++ > b/src/compiler/glsl/tests/warnings/025-out-inout-function-parameters.vert.expected > @@ -0,0 +1 @@ > +0:14(6): warning: `undefinedFloat' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/026-conditional.vert > b/src/compiler/glsl/tests/warnings/026-conditional.vert > new file mode 100644 > index 0000000..3447f05 > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/026-conditional.vert > @@ -0,0 +1,17 @@ > +#version 130 > + > +void main() > +{ > + bool defined = false; > + bool undefined; > + int fooInt; > + int definedInt = 2; > + int undefinedInt; > + > + fooInt = defined ? definedInt : undefinedInt; > + fooInt = defined ? undefinedInt : definedInt; > + > + fooInt = undefined ? definedInt : undefinedInt; > + fooInt = undefined ? undefinedInt : definedInt; > +} > + > diff --git a/src/compiler/glsl/tests/warnings/026-conditional.vert.expected > b/src/compiler/glsl/tests/warnings/026-conditional.vert.expected > new file mode 100644 > index 0000000..aaf5b7b > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/026-conditional.vert.expected > @@ -0,0 +1,6 @@ > +0:11(34): warning: `undefinedInt' used uninitialized > +0:12(21): warning: `undefinedInt' used uninitialized > +0:14(11): warning: `undefined' used uninitialized > +0:14(36): warning: `undefinedInt' used uninitialized > +0:15(11): warning: `undefined' used uninitialized > +0:15(23): warning: `undefinedInt' used uninitialized > diff --git a/src/compiler/glsl/tests/warnings/027-fieldselection.vert > b/src/compiler/glsl/tests/warnings/027-fieldselection.vert > new file mode 100644 > index 0000000..cdec06a > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/027-fieldselection.vert > @@ -0,0 +1,23 @@ > +#version 130 > + > +struct s { > + float c; > + float x; > +}; > + > +void main() > +{ > + float fooFloat; > + s fooStruct; > + > + fooFloat = fooStruct.c; > + fooStruct.c = 10.0; > + fooFloat = fooStruct.c; > + fooStruct.c = 20.0; > + > + /* Technically .x is also uninitialized, but detecting this is beyond > + * scope. FWIW, gcc doesn't detect this neither. > + */ > + fooFloat = fooStruct.x; > +} > + > diff --git > a/src/compiler/glsl/tests/warnings/027-fieldselection.vert.expected > b/src/compiler/glsl/tests/warnings/027-fieldselection.vert.expected > new file mode 100644 > index 0000000..0a2c04a > --- /dev/null > +++ b/src/compiler/glsl/tests/warnings/027-fieldselection.vert.expected > @@ -0,0 +1 @@ > +0:13(13): warning: `fooStruct' used uninitialized > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev