Linker: Eliminate uncalled functions, because they can be ill-defined.

Fixes issue #610. Also provides a testing option to keep uncalled functions.
This commit is contained in:
John Kessenich 2016-12-09 19:22:20 -07:00
parent bf6d7f43fd
commit 906cc21816
68 changed files with 101 additions and 7783 deletions

View file

@ -359,277 +359,6 @@ ERROR: node is still EOpNull!
0:13 1 (const uint)
0:13 2 (const uint)
0:13 'd' (temp 3-element array of 2-element array of highp int)
0:44 Function Definition: foo(f1[5][7]; (global 4-element array of 7-element array of highp float)
0:44 Function Parameters:
0:44 'a' (in 5-element array of 7-element array of highp float)
0:? Sequence
0:47 move second child to first child (temp 7-element array of highp float)
0:47 'r' (temp 7-element array of highp float)
0:47 direct index (temp 7-element array of highp float)
0:47 'a' (in 5-element array of 7-element array of highp float)
0:47 Constant:
0:47 2 (const int)
0:48 Constant:
0:48 0.000000
0:49 Constant:
0:49 0.000000
0:50 Branch: Return with expression
0:50 Construct float (temp 4-element array of 7-element array of float)
0:50 direct index (temp 7-element array of highp float)
0:50 'a' (in 5-element array of 7-element array of highp float)
0:50 Constant:
0:50 0 (const int)
0:50 direct index (temp 7-element array of highp float)
0:50 'a' (in 5-element array of 7-element array of highp float)
0:50 Constant:
0:50 1 (const int)
0:50 'r' (temp 7-element array of highp float)
0:50 direct index (temp 7-element array of highp float)
0:50 'a' (in 5-element array of 7-element array of highp float)
0:50 Constant:
0:50 3 (const int)
0:51 Branch: Return with expression
0:51 Construct float (temp 4-element array of 7-element array of float)
0:51 direct index (temp 7-element array of highp float)
0:51 'a' (in 5-element array of 7-element array of highp float)
0:51 Constant:
0:51 0 (const int)
0:51 direct index (temp 7-element array of highp float)
0:51 'a' (in 5-element array of 7-element array of highp float)
0:51 Constant:
0:51 1 (const int)
0:51 'r' (temp 7-element array of highp float)
0:51 direct index (temp 7-element array of highp float)
0:51 'a' (in 5-element array of 7-element array of highp float)
0:51 Constant:
0:51 3 (const int)
0:52 Branch: Return with expression
0:52 Construct float (temp 4-element array of 7-element array of float)
0:52 direct index (temp 7-element array of highp float)
0:52 'a' (in 5-element array of 7-element array of highp float)
0:52 Constant:
0:52 0 (const int)
0:52 direct index (temp 7-element array of highp float)
0:52 'a' (in 5-element array of 7-element array of highp float)
0:52 Constant:
0:52 1 (const int)
0:52 direct index (temp 7-element array of highp float)
0:52 'a' (in 5-element array of 7-element array of highp float)
0:52 Constant:
0:52 2 (const int)
0:52 direct index (temp 7-element array of highp float)
0:52 'a' (in 5-element array of 7-element array of highp float)
0:52 Constant:
0:52 3 (const int)
0:55 Function Definition: bar(f1[5][7]; (global void)
0:55 Function Parameters:
0:55 '' (in 5-element array of 7-element array of highp float)
0:57 Function Definition: foo2( (global void)
0:57 Function Parameters:
0:? Sequence
0:? Sequence
0:62 move second child to first child (temp highp float)
0:62 direct index (temp highp float)
0:62 direct index (temp 2-element array of highp float)
0:62 direct index (temp 4-element array of 2-element array of highp float)
0:62 'gu' (temp 3-element array of 4-element array of 2-element array of highp float)
0:62 Constant:
0:62 2 (const int)
0:62 Constant:
0:62 4 (const int)
0:62 Constant:
0:62 1 (const int)
0:62 Constant:
0:62 4.000000
0:64 Sequence
0:64 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float)
0:64 'ca4' (temp 3-element array of 2-element array of highp 4-component vector of float)
0:66 Constant:
0:66 0.000000
0:66 0.000000
0:66 0.000000
0:66 0.000000
0:66 1.000000
0:66 1.000000
0:66 1.000000
0:66 1.000000
0:66 0.000000
0:66 0.000000
0:66 0.000000
0:66 0.000000
0:66 1.000000
0:66 1.000000
0:66 1.000000
0:66 1.000000
0:66 0.000000
0:66 0.000000
0:66 0.000000
0:66 0.000000
0:66 1.000000
0:66 1.000000
0:66 1.000000
0:66 1.000000
0:67 Sequence
0:67 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float)
0:67 'caim' (temp 3-element array of 2-element array of highp 4-component vector of float)
0:69 Constant:
0:69 4.000000
0:69 4.000000
0:69 4.000000
0:69 4.000000
0:69 2.000000
0:69 2.000000
0:69 2.000000
0:69 2.000000
0:69 4.000000
0:69 4.000000
0:69 4.000000
0:69 4.000000
0:69 2.000000
0:69 2.000000
0:69 2.000000
0:69 2.000000
0:69 4.000000
0:69 4.000000
0:69 4.000000
0:69 4.000000
0:69 2.000000
0:69 2.000000
0:69 2.000000
0:69 2.000000
0:70 Sequence
0:70 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float)
0:70 'caim2' (temp 3-element array of 2-element array of highp 4-component vector of float)
0:72 Constant:
0:72 4.000000
0:72 4.000000
0:72 4.000000
0:72 4.000000
0:72 2.000000
0:72 2.000000
0:72 2.000000
0:72 2.000000
0:72 4.000000
0:72 4.000000
0:72 4.000000
0:72 4.000000
0:72 2.000000
0:72 2.000000
0:72 2.000000
0:72 2.000000
0:72 4.000000
0:72 4.000000
0:72 4.000000
0:72 4.000000
0:72 2.000000
0:72 2.000000
0:72 2.000000
0:72 2.000000
0:73 Sequence
0:73 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float)
0:73 'caim3' (temp 3-element array of 2-element array of highp 4-component vector of float)
0:75 Constant:
0:75 4.000000
0:75 4.000000
0:75 4.000000
0:75 4.000000
0:75 2.000000
0:75 2.000000
0:75 2.000000
0:75 2.000000
0:75 4.000000
0:75 4.000000
0:75 4.000000
0:75 4.000000
0:75 2.000000
0:75 2.000000
0:75 2.000000
0:75 2.000000
0:75 4.000000
0:75 4.000000
0:75 4.000000
0:75 4.000000
0:75 2.000000
0:75 2.000000
0:75 2.000000
0:75 2.000000
0:77 move second child to first child (temp 4-element array of 7-element array of highp float)
0:77 'g4' (global 4-element array of 7-element array of highp float)
0:77 Function Call: foo(f1[5][7]; (global 4-element array of 7-element array of highp float)
0:77 'g5' (global 5-element array of 7-element array of highp float)
0:78 'g5' (global 5-element array of 7-element array of highp float)
0:79 'gu' (global 1-element array of 7-element array of highp float)
0:81 Constant:
0:81 0.000000
0:82 Function Call: bar(f1[5][7]; (global void)
0:82 'g5' (global 5-element array of 7-element array of highp float)
0:84 Test condition and select (temp void)
0:84 Condition
0:84 Compare Equal (temp bool)
0:84 Function Call: foo(f1[5][7]; (global 4-element array of 7-element array of highp float)
0:84 'g5' (global 5-element array of 7-element array of highp float)
0:84 'g4' (global 4-element array of 7-element array of highp float)
0:84 true case is null
0:86 Test condition and select (temp void)
0:86 Condition
0:86 Constant:
0:86 false (const bool)
0:86 true case is null
0:90 move second child to first child (temp highp float)
0:90 direct index (temp highp float)
0:90 direct index (temp 7-element array of highp float)
0:90 'u' (temp 5-element array of 7-element array of highp float)
0:90 Constant:
0:90 5 (const int)
0:90 Constant:
0:90 2 (const int)
0:90 Constant:
0:90 5.000000
0:91 Function Call: foo(f1[5][7]; (global 4-element array of 7-element array of highp float)
0:91 'u' (temp 5-element array of 7-element array of highp float)
0:94 direct index (layout(column_major shared ) temp highp 4-component vector of float)
0:94 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float)
0:94 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})
0:94 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})
0:94 Constant:
0:94 1 (const int)
0:94 Constant:
0:94 1 (const int)
0:94 Constant:
0:94 -1 (const int)
0:95 move second child to first child (temp highp 4-component vector of float)
0:95 direct index (layout(column_major shared ) temp highp 4-component vector of float)
0:95 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float)
0:95 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})
0:95 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})
0:95 Constant:
0:95 1 (const int)
0:95 Constant:
0:95 1 (const int)
0:95 Constant:
0:95 1 (const int)
0:95 Constant:
0:95 4.300000
0:95 4.300000
0:95 4.300000
0:95 4.300000
0:96 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float)
0:96 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})
0:96 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})
0:96 Constant:
0:96 1 (const int)
0:96 Constant:
0:96 1 (const int)
0:98 Constant:
0:98 7 (const int)
0:99 array length (temp int)
0:99 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float)
0:99 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v})
0:99 'name3' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v})
0:99 Constant:
0:99 0 (const int)
0:99 Constant:
0:99 1 (const int)
0:? Linker Objects
0:? 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})
0:? 'uname' (layout(column_major shared ) uniform 3-element array of block{layout(column_major shared ) uniform highp float u, layout(column_major shared ) uniform 1-element array of highp 4-component vector of float v})