Test for and prevent any dead-code elimination, as all code is needed in the AST for static-use analysis.

git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23163 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
John Kessenich 2013-09-20 06:20:21 +00:00
parent c981efd84d
commit f5ebfb5f27
8 changed files with 255 additions and 36 deletions

56
Test/dce.frag Normal file
View file

@ -0,0 +1,56 @@
#version 400
const bool flag = false;
int c = 0;
void bar()
{
if (flag)
++c; // should still show up in AST
else
++c;
flag ? ++c : ++c; // both should still show up in AST
switch (c) {
case 1:
++c;
break;
++c; // should still show up in AST
case 2:
break;
++c; // should still show up in AST
default:
break;
}
for (int i = 0; i < 0; ++i)
++c; // should still show up in AST
for (int i = 0; i < 10; ++i) {
if (c < 3) {
break;
++c; // should still show up in AST
} else {
continue;
++c; // should still show up in AST
}
}
return;
++c; // should still show up in AST
}
int foo() // not called, but should still show up in AST
{
if (c > 4) {
return 4;
++c; // should still show up in AST
}
return 5;
++c; // should still show up in AST
}