Front-ends GLSL/HLSL: Fix initializer lists for structs of one member.

Single member structs initialized with an initializer list had
an incorrect argument for constructor emulation.
This commit is contained in:
John Kessenich
2016-07-29 18:22:22 -06:00
parent 96e9f47cbb
commit ff13213547
8 changed files with 567 additions and 331 deletions

View File

@@ -12,7 +12,7 @@ ERROR: 0:29: 'const 2-element array of 4-component vector of float' : cannot con
ERROR: 0:29: '=' : cannot convert from 'const float' to 'global 2-element array of 4-component vector of float'
ERROR: 0:30: 'initializer list' : wrong number of matrix columns: temp 4X2 matrix of float
ERROR: 0:40: 'constructor' : cannot convert parameter 1 from 'temp float' to 'temp structure{global float s, global float t}'
ERROR: 0:58: 'initializer list' : wrong number of structure members
ERROR: 0:70: 'initializer list' : wrong number of structure members
ERROR: 13 compilation errors. No code generated.
@@ -50,51 +50,73 @@ ERROR: node is still EOpNull!
0:42 5.000000
0:42 5.200000
0:42 1.100000
0:67 Sequence
0:67 move second child to first child (temp 3-component vector of float)
0:67 'av3' (global 3-component vector of float)
0:67 Construct vec3 (global 3-component vector of float)
0:67 'vc1' (global float)
0:67 'vc2' (global float)
0:67 'vc3' (global float)
0:68 Sequence
0:68 move second child to first child (temp 3-component vector of float)
0:68 'bv3' (global 3-component vector of float)
0:68 Construct vec3 (temp 3-component vector of float)
0:68 'vc1' (global float)
0:68 'vc2' (global float)
0:68 'vc3' (global float)
0:70 Function Definition: main( (global void)
0:70 Function Parameters:
0:72 Sequence
0:72 MemoryBarrier (global void)
0:74 Test condition and select (temp void)
0:74 Condition
0:74 Compare Equal (temp bool)
0:74 Constant:
0:74 1 (const uint)
0:74 2 (const uint)
0:74 3.000000
0:74 4.000000
0:74 0.000000
0:74 0.000000
0:74 0.000000
0:74 4.000000
0:74 0.000000
0:74 5.000000
0:74 6.000000
0:74 0.000000
0:74 0.000000
0:74 0.000000
0:74 6.000000
0:74 0.000000
0:74 'curlybad1' (temp structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s})
0:74 true case is null
0:76 Test condition and select (temp void)
0:76 Condition
0:76 Constant:
0:76 true (const bool)
0:76 true case is null
0:55 Sequence
0:55 move second child to first child (temp structure{global int f})
0:55 'single1' (global structure{global int f})
0:55 Constant:
0:55 10 (const int)
0:58 Sequence
0:58 move second child to first child (temp structure{global 2-component vector of uint v})
0:58 'single2' (global structure{global 2-component vector of uint v})
0:58 Constant:
0:58 1 (const uint)
0:58 2 (const uint)
0:61 Sequence
0:61 move second child to first child (temp structure{global structure{global int f} s1})
0:61 'single3' (global structure{global structure{global int f} s1})
0:61 Constant:
0:61 3 (const int)
0:64 Sequence
0:64 move second child to first child (temp structure{global structure{global 2-component vector of uint v} s1})
0:64 'single4' (global structure{global structure{global 2-component vector of uint v} s1})
0:64 Constant:
0:64 4 (const uint)
0:64 5 (const uint)
0:79 Sequence
0:79 move second child to first child (temp 3-component vector of float)
0:79 'av3' (global 3-component vector of float)
0:79 Construct vec3 (global 3-component vector of float)
0:79 'vc1' (global float)
0:79 'vc2' (global float)
0:79 'vc3' (global float)
0:80 Sequence
0:80 move second child to first child (temp 3-component vector of float)
0:80 'bv3' (global 3-component vector of float)
0:80 Construct vec3 (temp 3-component vector of float)
0:80 'vc1' (global float)
0:80 'vc2' (global float)
0:80 'vc3' (global float)
0:82 Function Definition: main( (global void)
0:82 Function Parameters:
0:84 Sequence
0:84 MemoryBarrier (global void)
0:86 Test condition and select (temp void)
0:86 Condition
0:86 Compare Equal (temp bool)
0:86 Constant:
0:86 1 (const uint)
0:86 2 (const uint)
0:86 3.000000
0:86 4.000000
0:86 0.000000
0:86 0.000000
0:86 0.000000
0:86 4.000000
0:86 0.000000
0:86 5.000000
0:86 6.000000
0:86 0.000000
0:86 0.000000
0:86 0.000000
0:86 6.000000
0:86 0.000000
0:86 'curlybad1' (temp structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s})
0:86 true case is null
0:88 Test condition and select (temp void)
0:88 Condition
0:88 Constant:
0:88 true (const bool)
0:88 true case is null
0:? Linker Objects
0:? 'a' (const 2X2 matrix of float)
0:? 1.000000
@@ -120,6 +142,10 @@ ERROR: node is still EOpNull!
0:? 'c3' (global 4X2 matrix of float)
0:? 'd2' (global implicitly-sized array of structure{global float s, global float t})
0:? 'b5' (global 5-element array of float)
0:? 'single1' (global structure{global int f})
0:? 'single2' (global structure{global 2-component vector of uint v})
0:? 'single3' (global structure{global structure{global int f} s1})
0:? 'single4' (global structure{global structure{global 2-component vector of uint v} s1})
0:? 'constructed' (const structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s})
0:? 1 (const uint)
0:? 2 (const uint)
@@ -200,51 +226,73 @@ ERROR: node is still EOpNull!
0:42 5.000000
0:42 5.200000
0:42 1.100000
0:67 Sequence
0:67 move second child to first child (temp 3-component vector of float)
0:67 'av3' (global 3-component vector of float)
0:67 Construct vec3 (global 3-component vector of float)
0:67 'vc1' (global float)
0:67 'vc2' (global float)
0:67 'vc3' (global float)
0:68 Sequence
0:68 move second child to first child (temp 3-component vector of float)
0:68 'bv3' (global 3-component vector of float)
0:68 Construct vec3 (temp 3-component vector of float)
0:68 'vc1' (global float)
0:68 'vc2' (global float)
0:68 'vc3' (global float)
0:70 Function Definition: main( (global void)
0:70 Function Parameters:
0:72 Sequence
0:72 MemoryBarrier (global void)
0:74 Test condition and select (temp void)
0:74 Condition
0:74 Compare Equal (temp bool)
0:74 Constant:
0:74 1 (const uint)
0:74 2 (const uint)
0:74 3.000000
0:74 4.000000
0:74 0.000000
0:74 0.000000
0:74 0.000000
0:74 4.000000
0:74 0.000000
0:74 5.000000
0:74 6.000000
0:74 0.000000
0:74 0.000000
0:74 0.000000
0:74 6.000000
0:74 0.000000
0:74 'curlybad1' (temp structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s})
0:74 true case is null
0:76 Test condition and select (temp void)
0:76 Condition
0:76 Constant:
0:76 true (const bool)
0:76 true case is null
0:55 Sequence
0:55 move second child to first child (temp structure{global int f})
0:55 'single1' (global structure{global int f})
0:55 Constant:
0:55 10 (const int)
0:58 Sequence
0:58 move second child to first child (temp structure{global 2-component vector of uint v})
0:58 'single2' (global structure{global 2-component vector of uint v})
0:58 Constant:
0:58 1 (const uint)
0:58 2 (const uint)
0:61 Sequence
0:61 move second child to first child (temp structure{global structure{global int f} s1})
0:61 'single3' (global structure{global structure{global int f} s1})
0:61 Constant:
0:61 3 (const int)
0:64 Sequence
0:64 move second child to first child (temp structure{global structure{global 2-component vector of uint v} s1})
0:64 'single4' (global structure{global structure{global 2-component vector of uint v} s1})
0:64 Constant:
0:64 4 (const uint)
0:64 5 (const uint)
0:79 Sequence
0:79 move second child to first child (temp 3-component vector of float)
0:79 'av3' (global 3-component vector of float)
0:79 Construct vec3 (global 3-component vector of float)
0:79 'vc1' (global float)
0:79 'vc2' (global float)
0:79 'vc3' (global float)
0:80 Sequence
0:80 move second child to first child (temp 3-component vector of float)
0:80 'bv3' (global 3-component vector of float)
0:80 Construct vec3 (temp 3-component vector of float)
0:80 'vc1' (global float)
0:80 'vc2' (global float)
0:80 'vc3' (global float)
0:82 Function Definition: main( (global void)
0:82 Function Parameters:
0:84 Sequence
0:84 MemoryBarrier (global void)
0:86 Test condition and select (temp void)
0:86 Condition
0:86 Compare Equal (temp bool)
0:86 Constant:
0:86 1 (const uint)
0:86 2 (const uint)
0:86 3.000000
0:86 4.000000
0:86 0.000000
0:86 0.000000
0:86 0.000000
0:86 4.000000
0:86 0.000000
0:86 5.000000
0:86 6.000000
0:86 0.000000
0:86 0.000000
0:86 0.000000
0:86 6.000000
0:86 0.000000
0:86 'curlybad1' (temp structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s})
0:86 true case is null
0:88 Test condition and select (temp void)
0:88 Condition
0:88 Constant:
0:88 true (const bool)
0:88 true case is null
0:? Linker Objects
0:? 'a' (const 2X2 matrix of float)
0:? 1.000000
@@ -270,6 +318,10 @@ ERROR: node is still EOpNull!
0:? 'c3' (global 4X2 matrix of float)
0:? 'd2' (global 1-element array of structure{global float s, global float t})
0:? 'b5' (global 5-element array of float)
0:? 'single1' (global structure{global int f})
0:? 'single2' (global structure{global 2-component vector of uint v})
0:? 'single3' (global structure{global structure{global int f} s1})
0:? 'single4' (global structure{global structure{global 2-component vector of uint v} s1})
0:? 'constructed' (const structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s})
0:? 1 (const uint)
0:? 2 (const uint)