From f5ebfb5f27213ff25608534eb958ae4fc58aed2f Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 20 Sep 2013 06:20:21 +0000 Subject: [PATCH] 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 --- Install/Windows/glslangValidator.exe | Bin 332288 -> 332288 bytes Test/baseResults/dce.frag.out | 116 ++++++++++++++++++++ Test/baseResults/precision.frag.out | 14 ++- Test/baseResults/uint.frag.out | 91 +++++++++++---- Test/dce.frag | 56 ++++++++++ Test/testlist | 1 + Todo.txt | 2 +- glslang/MachineIndependent/Intermediate.cpp | 11 +- 8 files changed, 255 insertions(+), 36 deletions(-) create mode 100644 Test/baseResults/dce.frag.out create mode 100644 Test/dce.frag diff --git a/Install/Windows/glslangValidator.exe b/Install/Windows/glslangValidator.exe index 5d8b6c8aaf75aec95089544737daee7a0df90c99..35f1078b1c8914659dca919c700fbf723d35f123 100644 GIT binary patch delta 60172 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 delta 60286 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≦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 diff --git a/Test/baseResults/dce.frag.out b/Test/baseResults/dce.frag.out new file mode 100644 index 00000000..d854acaa --- /dev/null +++ b/Test/baseResults/dce.frag.out @@ -0,0 +1,116 @@ +0:? Sequence +0:5 Sequence +0:5 move second child to first child (int) +0:5 'c' (int) +0:5 0 (const int) +0:7 Function Definition: bar( (void) +0:7 Function Parameters: +0:9 Sequence +0:9 Test condition and select (void) +0:9 Condition +0:9 false (const bool) +0:9 true case +0:10 Pre-Increment (int) +0:10 'c' (int) +0:9 false case +0:12 Pre-Increment (int) +0:12 'c' (int) +0:14 Test condition and select (int) +0:14 Condition +0:14 false (const bool) +0:14 true case +0:14 Pre-Increment (int) +0:14 'c' (int) +0:14 false case +0:14 Pre-Increment (int) +0:14 'c' (int) +0:16 switch +0:16 condition +0:16 'c' (int) +0:16 body +0:16 Sequence +0:17 case: with expression +0:17 1 (const int) +0:? Sequence +0:18 Pre-Increment (int) +0:18 'c' (int) +0:19 Branch: Break +0:20 Pre-Increment (int) +0:20 'c' (int) +0:21 case: with expression +0:21 2 (const int) +0:? Sequence +0:22 Branch: Break +0:23 Pre-Increment (int) +0:23 'c' (int) +0:24 default: +0:? Sequence +0:25 Branch: Break +0:28 Sequence +0:28 Sequence +0:28 move second child to first child (int) +0:28 'i' (int) +0:28 0 (const int) +0:28 Loop with condition tested first +0:28 Loop Condition +0:28 Compare Less Than (bool) +0:28 'i' (int) +0:28 0 (const int) +0:28 Loop Body +0:29 Pre-Increment (int) +0:29 'c' (int) +0:28 Loop Terminal Expression +0:28 Pre-Increment (int) +0:28 'i' (int) +0:31 Sequence +0:31 Sequence +0:31 move second child to first child (int) +0:31 'i' (int) +0:31 0 (const int) +0:31 Loop with condition tested first +0:31 Loop Condition +0:31 Compare Less Than (bool) +0:31 'i' (int) +0:31 10 (const int) +0:31 Loop Body +0:32 Sequence +0:32 Test condition and select (void) +0:32 Condition +0:32 Compare Less Than (bool) +0:32 'c' (int) +0:32 3 (const int) +0:32 true case +0:33 Sequence +0:33 Branch: Break +0:34 Pre-Increment (int) +0:34 'c' (int) +0:32 false case +0:36 Sequence +0:36 Branch: Continue +0:37 Pre-Increment (int) +0:37 'c' (int) +0:31 Loop Terminal Expression +0:31 Pre-Increment (int) +0:31 'i' (int) +0:41 Branch: Return +0:43 Pre-Increment (int) +0:43 'c' (int) +0:46 Function Definition: foo( (int) +0:46 Function Parameters: +0:48 Sequence +0:48 Test condition and select (void) +0:48 Condition +0:48 Compare Greater Than (bool) +0:48 'c' (int) +0:48 4 (const int) +0:48 true case +0:49 Sequence +0:49 Branch: Return with expression +0:49 4 (const int) +0:50 Pre-Increment (int) +0:50 'c' (int) +0:53 Branch: Return with expression +0:53 5 (const int) +0:55 Pre-Increment (int) +0:55 'c' (int) + diff --git a/Test/baseResults/precision.frag.out b/Test/baseResults/precision.frag.out index e36f97ab..76ef998b 100644 --- a/Test/baseResults/precision.frag.out +++ b/Test/baseResults/precision.frag.out @@ -55,11 +55,15 @@ ERROR: node is still EOpNull! 0:58 Loop Condition 0:58 true (const bool) 0:58 Loop Body -0:? Sequence -0:? Sequence -0:54 add second child into first child (mediump int) -0:54 'sum' (lowp int) -0:54 'level4_medium' (mediump int) +0:51 Sequence +0:51 Test condition and select (void) +0:51 Condition +0:51 true (const bool) +0:51 true case +0:? Sequence +0:54 add second child into first child (mediump int) +0:54 'sum' (lowp int) +0:54 'level4_medium' (mediump int) 0:57 add second child into first child (highp int) 0:57 'sum' (lowp int) 0:57 'level3_high' (highp int) diff --git a/Test/baseResults/uint.frag.out b/Test/baseResults/uint.frag.out index 2f043494..b8717224 100644 --- a/Test/baseResults/uint.frag.out +++ b/Test/baseResults/uint.frag.out @@ -25,18 +25,48 @@ ERROR: node is still EOpNull! 0:19 't' (flat in mediump 2-component vector of uint) 0:19 1 (const int) 0:19 3 (const uint) -0:28 multiply second child into first child (mediump int) -0:28 'count' (mediump int) -0:28 2 (const int) -0:30 multiply second child into first child (mediump int) -0:30 'count' (mediump int) -0:30 3 (const int) -0:42 multiply second child into first child (mediump int) -0:42 'count' (mediump int) -0:42 7 (const int) -0:44 multiply second child into first child (mediump int) -0:44 'count' (mediump int) -0:44 11 (const int) +0:27 Test condition and select (void) +0:27 Condition +0:27 true (const bool) +0:27 true case +0:28 multiply second child into first child (mediump int) +0:28 'count' (mediump int) +0:28 2 (const int) +0:29 Test condition and select (void) +0:29 Condition +0:29 true (const bool) +0:29 true case +0:30 multiply second child into first child (mediump int) +0:30 'count' (mediump int) +0:30 3 (const int) +0:31 Test condition and select (void) +0:31 Condition +0:31 false (const bool) +0:31 true case +0:32 multiply second child into first child (mediump int) +0:32 'count' (mediump int) +0:32 5 (const int) +0:41 Test condition and select (void) +0:41 Condition +0:41 true (const bool) +0:41 true case +0:42 multiply second child into first child (mediump int) +0:42 'count' (mediump int) +0:42 7 (const int) +0:43 Test condition and select (void) +0:43 Condition +0:43 true (const bool) +0:43 true case +0:44 multiply second child into first child (mediump int) +0:44 'count' (mediump int) +0:44 11 (const int) +0:45 Test condition and select (void) +0:45 Condition +0:45 false (const bool) +0:45 true case +0:46 multiply second child into first child (mediump int) +0:46 'count' (mediump int) +0:46 13 (const int) 0:49 Sequence 0:49 move second child to first child (mediump int) 0:49 'shiftedii' (mediump int) @@ -127,15 +157,34 @@ ERROR: node is still EOpNull! 0:67 'ai' (mediump int) 0:67 Convert int to uint (mediump uint) 0:67 'count' (mediump int) -0:76 multiply second child into first child (mediump int) -0:76 'count' (mediump int) -0:76 17 (const int) -0:82 multiply second child into first child (mediump int) -0:82 'count' (mediump int) -0:82 23 (const int) -0:85 multiply second child into first child (mediump int) -0:85 'count' (mediump int) -0:85 27 (const int) +0:75 Test condition and select (void) +0:75 Condition +0:75 true (const bool) +0:75 true case +0:76 multiply second child into first child (mediump int) +0:76 'count' (mediump int) +0:76 17 (const int) +0:78 Test condition and select (void) +0:78 Condition +0:78 false (const bool) +0:78 true case +0:79 multiply second child into first child (mediump int) +0:79 'count' (mediump int) +0:79 19 (const int) +0:81 Test condition and select (void) +0:81 Condition +0:81 true (const bool) +0:81 true case +0:82 multiply second child into first child (mediump int) +0:82 'count' (mediump int) +0:82 23 (const int) +0:84 Test condition and select (void) +0:84 Condition +0:84 true (const bool) +0:84 true case +0:85 multiply second child into first child (mediump int) +0:85 'count' (mediump int) +0:85 27 (const int) 0:87 Sequence 0:87 move second child to first child (mediump uint) 0:87 'mask1' (mediump uint) diff --git a/Test/dce.frag b/Test/dce.frag new file mode 100644 index 00000000..119a98dd --- /dev/null +++ b/Test/dce.frag @@ -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 +} diff --git a/Test/testlist b/Test/testlist index 223e751c..ef826951 100644 --- a/Test/testlist +++ b/Test/testlist @@ -49,6 +49,7 @@ numeral.frag 400.tese 420.tese 430.comp +dce.frag ../../LunarGLASS/test/aggOps.frag ../../LunarGLASS/test/always-discard.frag ../../LunarGLASS/test/always-discard2.frag diff --git a/Todo.txt b/Todo.txt index 75f2c3ea..4d4360b1 100644 --- a/Todo.txt +++ b/Todo.txt @@ -3,7 +3,7 @@ Current functionality level: ESSL 3.0 Link Validation + provide input config file for setting limits - also consider spitting out measures of complexity - - ensure no static references thrown away + + ensure no static references thrown away Cross-stage linking - type consistency check of uniform and ins <-> outs, both variables and blocks, stage-specific arrayness matching - location/binding/index check diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index a4847422..62c93a4b 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -688,16 +688,9 @@ TIntermAggregate* TIntermediate::makeAggregate(TIntermNode* node, TSourceLoc loc TIntermNode* TIntermediate::addSelection(TIntermTyped* cond, TIntermNodePair nodePair, TSourceLoc loc) { // - // For compile time constant selections, prune the code and - // test now. + // Don't prune the false path for compile-time constants; it's needed + // for static access analysis. // - - if (cond->getAsTyped() && cond->getAsTyped()->getAsConstantUnion()) { - if (cond->getAsTyped()->getAsConstantUnion()->getUnionArrayPointer()->getBConst()) - return nodePair.node1; - else - return nodePair.node2; - } TIntermSelection* node = new TIntermSelection(cond, nodePair.node1, nodePair.node2); node->setLoc(loc);