glslang AST output: include global vs. temp (local) in the printed output.  This only effects test results, but a future check-in is going to fix some globals.


git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@30973 e7fa87d3-cd2b-0410-9028-fcbf551c1848
diff --git a/Test/baseResults/100.frag.out b/Test/baseResults/100.frag.out
index 783e4d7..30af8ce 100644
--- a/Test/baseResults/100.frag.out
+++ b/Test/baseResults/100.frag.out
@@ -5,7 +5,7 @@
 ERROR: 0:4: '#version' : must occur first in shader 

 ERROR: 0:7: 'attribute' : not supported in this stage: fragment

 ERROR: 0:7: 'float' : type requires declaration of default precision qualifier 

-ERROR: 0:9: '=' :  cannot convert from 'const int' to 'mediump float'

+ERROR: 0:9: '=' :  cannot convert from 'const int' to 'global mediump float'

 ERROR: 0:11: 'uniform block' : not supported for this version or the enabled extensions 

 ERROR: 0:19: 'foo' : no matching overloaded function found 

 ERROR: 0:20: 'bit shift left' : not supported for this version or the enabled extensions 

@@ -95,87 +95,87 @@
 Requested GL_OES_texture_3D

 ERROR: node is still EOpNull!

 0:3  Sequence

-0:3    move second child to first child (3-element array of mediump int)

-0:3      'a' (3-element array of mediump int)

+0:3    move second child to first child (temp 3-element array of mediump int)

+0:3      'a' (global 3-element array of mediump int)

 0:3      Constant:

 0:3        2 (const int)

 0:3        3 (const int)

 0:3        4 (const int)

-0:17  Function Definition: main( (void)

+0:17  Function Definition: main( (global void)

 0:17    Function Parameters: 

 0:19    Sequence

 0:19      Constant:

 0:19        0.000000

 0:20      Sequence

-0:20        move second child to first child (mediump int)

-0:20          's' (mediump int)

+0:20        move second child to first child (temp mediump int)

+0:20          's' (temp mediump int)

 0:20          Constant:

 0:20            16 (const int)

-0:21      move second child to first child (mediump int)

-0:21        's' (mediump int)

+0:21      move second child to first child (temp mediump int)

+0:21        's' (temp mediump int)

 0:21        Constant:

 0:21          4 (const int)

-0:22      Test condition and select (void)

+0:22      Test condition and select (temp void)

 0:22        Condition

-0:22        Compare Equal (bool)

-0:22          'a' (3-element array of mediump int)

-0:22          'a' (3-element array of mediump int)

+0:22        Compare Equal (temp bool)

+0:22          'a' (global 3-element array of mediump int)

+0:22          'a' (global 3-element array of mediump int)

 0:22        true case is null

-0:24      move second child to first child (mediump int)

-0:24        'b' (mediump int)

-0:24        bitwise and (mediump int)

-0:24          'c' (mediump int)

+0:24      move second child to first child (temp mediump int)

+0:24        'b' (temp mediump int)

+0:24        bitwise and (temp mediump int)

+0:24          'c' (temp mediump int)

 0:24          Constant:

 0:24            4 (const int)

-0:25      move second child to first child (mediump int)

-0:25        'b' (mediump int)

-0:25        mod (mediump int)

-0:25          'c' (mediump int)

+0:25      move second child to first child (temp mediump int)

+0:25        'b' (temp mediump int)

+0:25        mod (temp mediump int)

+0:25          'c' (temp mediump int)

 0:25          Constant:

 0:25            4 (const int)

-0:26      move second child to first child (mediump int)

-0:26        'b' (mediump int)

-0:26        inclusive-or (mediump int)

-0:26          'c' (mediump int)

+0:26      move second child to first child (temp mediump int)

+0:26        'b' (temp mediump int)

+0:26        inclusive-or (temp mediump int)

+0:26          'c' (temp mediump int)

 0:26          Constant:

 0:26            4 (const int)

-0:27      right shift second child into first child (mediump int)

-0:27        'b' (mediump int)

+0:27      right shift second child into first child (temp mediump int)

+0:27        'b' (temp mediump int)

 0:27        Constant:

 0:27          2 (const int)

-0:28      left shift second child into first child (mediump int)

-0:28        'b' (mediump int)

+0:28      left shift second child into first child (temp mediump int)

+0:28        'b' (temp mediump int)

 0:28        Constant:

 0:28          2 (const int)

-0:29      mod second child into first child (mediump int)

-0:29        'b' (mediump int)

+0:29      mod second child into first child (temp mediump int)

+0:29        'b' (temp mediump int)

 0:29        Constant:

 0:29          3 (const int)

-0:36      move second child to first child (structure{mediump float f, 10-element array of mediump float a})

-0:36        's1' (structure{mediump float f, 10-element array of mediump float a})

-0:36        's2' (structure{mediump float f, 10-element array of mediump float a})

-0:37      Test condition and select (void)

+0:36      move second child to first child (temp structure{temp mediump float f, temp 10-element array of mediump float a})

+0:36        's1' (temp structure{temp mediump float f, temp 10-element array of mediump float a})

+0:36        's2' (temp structure{temp mediump float f, temp 10-element array of mediump float a})

+0:37      Test condition and select (temp void)

 0:37        Condition

-0:37        Compare Equal (bool)

-0:37          's1' (structure{mediump float f, 10-element array of mediump float a})

-0:37          's2' (structure{mediump float f, 10-element array of mediump float a})

+0:37        Compare Equal (temp bool)

+0:37          's1' (temp structure{temp mediump float f, temp 10-element array of mediump float a})

+0:37          's2' (temp structure{temp mediump float f, temp 10-element array of mediump float a})

 0:37        true case is null

-0:38      Test condition and select (void)

+0:38      Test condition and select (temp void)

 0:38        Condition

-0:38        Compare Not Equal (bool)

-0:38          's1' (structure{mediump float f, 10-element array of mediump float a})

-0:38          's2' (structure{mediump float f, 10-element array of mediump float a})

+0:38        Compare Not Equal (temp bool)

+0:38          's1' (temp structure{temp mediump float f, temp 10-element array of mediump float a})

+0:38          's2' (temp structure{temp mediump float f, temp 10-element array of mediump float a})

 0:38        true case is null

-0:40      'b' (mediump int)

-0:54  Function Definition: foo10( (void)

+0:40      'b' (temp mediump int)

+0:54  Function Definition: foo10( (global void)

 0:54    Function Parameters: 

-0:67  Function Definition: f11(s21; (void)

+0:67  Function Definition: f11(s21; (global void)

 0:67    Function Parameters: 

 0:67      'p2d' (in lowp sampler2D)

-0:87  Function Definition: foo234( (void)

+0:87  Function Definition: foo234( (global void)

 0:87    Function Parameters: 

 0:89    Sequence

-0:89      Function Call: texture3D(s31;vf3;f1; (highp 4-component vector of float)

+0:89      Function Call: texture3D(s31;vf3;f1; (global highp 4-component vector of float)

 0:89        's3D2' (uniform highp sampler3D)

 0:89        Constant:

 0:89          0.200000

@@ -183,79 +183,79 @@
 0:89          0.200000

 0:89        Constant:

 0:89          0.200000

-0:90      Function Call: texture3DProj(s31;vf4;f1; (highp 4-component vector of float)

+0:90      Function Call: texture3DProj(s31;vf4;f1; (global highp 4-component vector of float)

 0:90        's3D2' (uniform highp sampler3D)

-0:90        direct index (smooth mediump 4-component vector of float)

+0:90        direct index (smooth temp mediump 4-component vector of float)

 0:90          'v' (smooth in 3-element array of mediump 4-component vector of float)

 0:90          Constant:

 0:90            1 (const int)

 0:90        Constant:

 0:90          0.400000

-0:91      dPdx (mediump 4-component vector of float)

-0:91        direct index (smooth mediump 4-component vector of float)

+0:91      dPdx (global mediump 4-component vector of float)

+0:91        direct index (smooth temp mediump 4-component vector of float)

 0:91          'v' (smooth in 3-element array of mediump 4-component vector of float)

 0:91          Constant:

 0:91            0 (const int)

 0:92      Constant:

 0:92        0.000000

-0:93      fwidth (mediump float)

-0:93        'f13' (invariant mediump float)

-0:98  Function Definition: foo236( (void)

+0:93      fwidth (global mediump float)

+0:93        'f13' (invariant global mediump float)

+0:98  Function Definition: foo236( (global void)

 0:98    Function Parameters: 

 0:100    Sequence

-0:100      dPdx (mediump 4-component vector of float)

-0:100        direct index (smooth mediump 4-component vector of float)

+0:100      dPdx (global mediump 4-component vector of float)

+0:100        direct index (smooth temp mediump 4-component vector of float)

 0:100          'v' (smooth in 3-element array of mediump 4-component vector of float)

 0:100          Constant:

 0:100            0 (const int)

 0:101      Constant:

 0:101        0.000000

-0:102      fwidth (mediump float)

-0:102        'f13' (invariant mediump float)

-0:103      move second child to first child (mediump float)

-0:103        'gl_FragDepth' (mediump float)

-0:103        'f13' (invariant mediump float)

-0:104      move second child to first child (highp float)

+0:102      fwidth (global mediump float)

+0:102        'f13' (invariant global mediump float)

+0:103      move second child to first child (temp mediump float)

+0:103        'gl_FragDepth' (temp mediump float)

+0:103        'f13' (invariant global mediump float)

+0:104      move second child to first child (temp highp float)

 0:104        'gl_FragDepthEXT' (gl_FragDepth highp float)

-0:104        'f13' (invariant mediump float)

-0:109  Function Definition: foo239( (void)

+0:104        'f13' (invariant global mediump float)

+0:109  Function Definition: foo239( (global void)

 0:109    Function Parameters: 

 0:111    Sequence

-0:111      move second child to first child (mediump float)

-0:111        'gl_FragDepth' (mediump float)

-0:111        'f13' (invariant mediump float)

-0:112      move second child to first child (highp float)

+0:111      move second child to first child (temp mediump float)

+0:111        'gl_FragDepth' (temp mediump float)

+0:111        'f13' (invariant global mediump float)

+0:112      move second child to first child (temp highp float)

 0:112        'gl_FragDepthEXT' (gl_FragDepth highp float)

-0:112        'f13' (invariant mediump float)

-0:119  Function Definition: foo245( (void)

+0:112        'f13' (invariant global mediump float)

+0:119  Function Definition: foo245( (global void)

 0:119    Function Parameters: 

 0:121    Sequence

-0:121      Function Call: texture2D(sE21;vf2; (lowp 4-component vector of float)

+0:121      Function Call: texture2D(sE21;vf2; (global lowp 4-component vector of float)

 0:121        'sExt' (uniform lowp samplerExternalOES)

 0:121        Constant:

 0:121          0.200000

 0:121          0.200000

-0:122      Function Call: texture2DProj(sE21;vf3; (lowp 4-component vector of float)

+0:122      Function Call: texture2DProj(sE21;vf3; (global lowp 4-component vector of float)

 0:122        'sExt' (uniform lowp samplerExternalOES)

-0:122        Construct vec3 (3-component vector of float)

-0:122          'f13' (invariant mediump float)

-0:123      Function Call: texture2DProj(sE21;vf4; (lowp 4-component vector of float)

+0:122        Construct vec3 (temp 3-component vector of float)

+0:122          'f13' (invariant global mediump float)

+0:123      Function Call: texture2DProj(sE21;vf4; (global lowp 4-component vector of float)

 0:123        'sExt' (uniform lowp samplerExternalOES)

-0:123        direct index (smooth mediump 4-component vector of float)

+0:123        direct index (smooth temp mediump 4-component vector of float)

 0:123          'v' (smooth in 3-element array of mediump 4-component vector of float)

 0:123          Constant:

 0:123            2 (const int)

-0:130  Function Definition: foo246( (void)

+0:130  Function Definition: foo246( (global void)

 0:130    Function Parameters: 

 0:132    Sequence

-0:132      Function Call: texture2D(sE21;vf2; (mediump 4-component vector of float)

+0:132      Function Call: texture2D(sE21;vf2; (global mediump 4-component vector of float)

 0:132        'mediumExt' (uniform mediump samplerExternalOES)

 0:132        Constant:

 0:132          0.200000

 0:132          0.200000

-0:133      Function Call: texture2DProj(sE21;vf4; (highp 4-component vector of float)

+0:133      Function Call: texture2DProj(sE21;vf4; (global highp 4-component vector of float)

 0:133        'highExt' (uniform highp samplerExternalOES)

-0:133        direct index (smooth mediump 4-component vector of float)

+0:133        direct index (smooth temp mediump 4-component vector of float)

 0:133          'v' (smooth in 3-element array of mediump 4-component vector of float)

 0:133          Constant:

 0:133            2 (const int)

@@ -263,64 +263,64 @@
 0:134        0.000000

 0:135      Constant:

 0:135        0.000000

-0:137      Bitwise not (mediump int)

-0:137        'a' (mediump int)

-0:138      inclusive-or (mediump int)

-0:138        'a' (mediump int)

-0:138        'a' (mediump int)

-0:139      bitwise and (mediump int)

-0:139        'a' (mediump int)

-0:139        'a' (mediump int)

-0:145  Function Definition: foo203940(i1;f1;f1; (mediump int)

+0:137      Bitwise not (temp mediump int)

+0:137        'a' (temp mediump int)

+0:138      inclusive-or (temp mediump int)

+0:138        'a' (temp mediump int)

+0:138        'a' (temp mediump int)

+0:139      bitwise and (temp mediump int)

+0:139        'a' (temp mediump int)

+0:139        'a' (temp mediump int)

+0:145  Function Definition: foo203940(i1;f1;f1; (global mediump int)

 0:145    Function Parameters: 

 0:145      'a' (in mediump int)

 0:145      'b' (in mediump float)

 0:147    Sequence

-0:147      Function Call: texture2DProjGradEXT(s21;vf3;vf2;vf2; (lowp 4-component vector of float)

+0:147      Function Call: texture2DProjGradEXT(s21;vf3;vf2;vf2; (global lowp 4-component vector of float)

 0:147        's2Dg' (uniform lowp sampler2D)

-0:147        Construct vec3 (3-component vector of float)

-0:147          'f13' (invariant mediump float)

+0:147        Construct vec3 (temp 3-component vector of float)

+0:147          'f13' (invariant global mediump float)

 0:147        'uv2' (invariant uniform mediump 2-component vector of float)

 0:147        'uv2' (invariant uniform mediump 2-component vector of float)

 0:148      Branch: Return with expression

 0:148        'a' (in mediump int)

 0:151  Sequence

-0:151    move second child to first child (mediump float)

-0:151      'f123' (mediump float)

+0:151    move second child to first child (temp mediump float)

+0:151      'f123' (global mediump float)

 0:151      Constant:

 0:151        4.000000

 0:152  Sequence

-0:152    move second child to first child (mediump float)

-0:152      'f124' (mediump float)

+0:152    move second child to first child (temp mediump float)

+0:152      'f124' (global mediump float)

 0:152      Constant:

 0:152        50000000000.000000

-0:158  Function Definition: foo323433( (void)

+0:158  Function Definition: foo323433( (global void)

 0:158    Function Parameters: 

 0:160    Sequence

-0:160      Function Call: texture2DLodEXT(s21;vf2;f1; (lowp 4-component vector of float)

+0:160      Function Call: texture2DLodEXT(s21;vf2;f1; (global lowp 4-component vector of float)

 0:160        's2Dg' (uniform lowp sampler2D)

 0:160        'uv2' (invariant uniform mediump 2-component vector of float)

-0:160        'f13' (invariant mediump float)

-0:161      Function Call: texture2DProjGradEXT(s21;vf3;vf2;vf2; (lowp 4-component vector of float)

+0:160        'f13' (invariant global mediump float)

+0:161      Function Call: texture2DProjGradEXT(s21;vf3;vf2;vf2; (global lowp 4-component vector of float)

 0:161        's2Dg' (uniform lowp sampler2D)

-0:161        Construct vec3 (3-component vector of float)

-0:161          'f13' (invariant mediump float)

+0:161        Construct vec3 (temp 3-component vector of float)

+0:161          'f13' (invariant global mediump float)

 0:161        'uv2' (invariant uniform mediump 2-component vector of float)

 0:161        'uv2' (invariant uniform mediump 2-component vector of float)

-0:162      Function Call: texture2DGradEXT(s21;vf2;vf2;vf2; (lowp 4-component vector of float)

+0:162      Function Call: texture2DGradEXT(s21;vf2;vf2;vf2; (global lowp 4-component vector of float)

 0:162        's2Dg' (uniform lowp sampler2D)

 0:162        'uv2' (invariant uniform mediump 2-component vector of float)

 0:162        'uv2' (invariant uniform mediump 2-component vector of float)

 0:162        'uv2' (invariant uniform mediump 2-component vector of float)

-0:163      Function Call: textureCubeGradEXT(sC1;vf3;vf3;vf3; (lowp 4-component vector of float)

+0:163      Function Call: textureCubeGradEXT(sC1;vf3;vf3;vf3; (global lowp 4-component vector of float)

 0:163        'sCube' (uniform lowp samplerCube)

-0:163        Construct vec3 (3-component vector of float)

-0:163          'f13' (invariant mediump float)

-0:163        Construct vec3 (3-component vector of float)

-0:163          'f13' (invariant mediump float)

-0:163        Construct vec3 (3-component vector of float)

-0:163          'f13' (invariant mediump float)

-0:167  Function Definition: fgfg(f1;i1; (mediump int)

+0:163        Construct vec3 (temp 3-component vector of float)

+0:163          'f13' (invariant global mediump float)

+0:163        Construct vec3 (temp 3-component vector of float)

+0:163          'f13' (invariant global mediump float)

+0:163        Construct vec3 (temp 3-component vector of float)

+0:163          'f13' (invariant global mediump float)

+0:167  Function Definition: fgfg(f1;i1; (global mediump int)

 0:167    Function Parameters: 

 0:167      'f' (in mediump float)

 0:167      'i' (in highp int)

@@ -328,43 +328,43 @@
 0:167      Branch: Return with expression

 0:167        Constant:

 0:167          2 (const int)

-0:173  Function Definition: gggf(f1; (mediump int)

+0:173  Function Definition: gggf(f1; (global mediump int)

 0:173    Function Parameters: 

 0:173      'f' (in mediump float)

 0:173    Sequence

 0:173      Branch: Return with expression

 0:173        Constant:

 0:173          2 (const int)

-0:175  Function Definition: agggf(f1; (mediump int)

+0:175  Function Definition: agggf(f1; (global mediump int)

 0:175    Function Parameters: 

 0:175      'f' (in mediump float)

 0:175    Sequence

 0:175      Branch: Return with expression

 0:175        Constant:

 0:175          2 (const int)

-0:187  Function Definition: badswizzle( (void)

+0:187  Function Definition: badswizzle( (global void)

 0:187    Function Parameters: 

 0:?     Sequence

-0:190      'a' (5-element array of mediump 3-component vector of float)

-0:191      'a' (5-element array of mediump 3-component vector of float)

-0:192      'a' (5-element array of mediump 3-component vector of float)

+0:190      'a' (temp 5-element array of mediump 3-component vector of float)

+0:191      'a' (temp 5-element array of mediump 3-component vector of float)

+0:192      'a' (temp 5-element array of mediump 3-component vector of float)

 0:193      Constant:

 0:193        5 (const int)

 0:194      Constant:

 0:194        0.000000

 0:?   Linker Objects

-0:?     'a' (3-element array of mediump int)

-0:?     'uint' (mediump int)

+0:?     'a' (global 3-element array of mediump int)

+0:?     'uint' (global mediump int)

 0:?     'v' (smooth in 3-element array of mediump 4-component vector of float)

-0:?     'f' (mediump float)

+0:?     'f' (global mediump float)

 0:?     'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump int x})

-0:?     'fa' (implicitly-sized array of mediump float)

-0:?     'f13' (mediump float)

-0:?     'fi' (invariant mediump float)

+0:?     'fa' (global implicitly-sized array of mediump float)

+0:?     'f13' (global mediump float)

+0:?     'fi' (invariant temp mediump float)

 0:?     'av' (smooth in mediump 4-component vector of float)

 0:?     'uv2' (uniform mediump 2-component vector of float)

 0:?     'uv3' (invariant uniform mediump 3-component vector of float)

-0:?     'glob2D' (lowp sampler2D)

+0:?     'glob2D' (global lowp sampler2D)

 0:?     'vary2D' (smooth in lowp sampler2D)

 0:?     's3D' (uniform mediump sampler3D)

 0:?     's3D2' (uniform highp sampler3D)

@@ -372,10 +372,10 @@
 0:?     'mediumExt' (uniform mediump samplerExternalOES)

 0:?     'highExt' (uniform highp samplerExternalOES)

 0:?     's2Dg' (uniform lowp sampler2D)

-0:?     'f123' (mediump float)

-0:?     'f124' (mediump float)

+0:?     'f123' (global mediump float)

+0:?     'f124' (global mediump float)

 0:?     'sCube' (uniform lowp samplerCube)

-0:?     's' (smooth in structure{mediump float f})

+0:?     's' (smooth in structure{global mediump float f})

 

 

 Linked fragment stage:

@@ -389,87 +389,87 @@
 Requested GL_OES_texture_3D

 ERROR: node is still EOpNull!

 0:3  Sequence

-0:3    move second child to first child (3-element array of mediump int)

-0:3      'a' (3-element array of mediump int)

+0:3    move second child to first child (temp 3-element array of mediump int)

+0:3      'a' (global 3-element array of mediump int)

 0:3      Constant:

 0:3        2 (const int)

 0:3        3 (const int)

 0:3        4 (const int)

-0:17  Function Definition: main( (void)

+0:17  Function Definition: main( (global void)

 0:17    Function Parameters: 

 0:19    Sequence

 0:19      Constant:

 0:19        0.000000

 0:20      Sequence

-0:20        move second child to first child (mediump int)

-0:20          's' (mediump int)

+0:20        move second child to first child (temp mediump int)

+0:20          's' (temp mediump int)

 0:20          Constant:

 0:20            16 (const int)

-0:21      move second child to first child (mediump int)

-0:21        's' (mediump int)

+0:21      move second child to first child (temp mediump int)

+0:21        's' (temp mediump int)

 0:21        Constant:

 0:21          4 (const int)

-0:22      Test condition and select (void)

+0:22      Test condition and select (temp void)

 0:22        Condition

-0:22        Compare Equal (bool)

-0:22          'a' (3-element array of mediump int)

-0:22          'a' (3-element array of mediump int)

+0:22        Compare Equal (temp bool)

+0:22          'a' (global 3-element array of mediump int)

+0:22          'a' (global 3-element array of mediump int)

 0:22        true case is null

-0:24      move second child to first child (mediump int)

-0:24        'b' (mediump int)

-0:24        bitwise and (mediump int)

-0:24          'c' (mediump int)

+0:24      move second child to first child (temp mediump int)

+0:24        'b' (temp mediump int)

+0:24        bitwise and (temp mediump int)

+0:24          'c' (temp mediump int)

 0:24          Constant:

 0:24            4 (const int)

-0:25      move second child to first child (mediump int)

-0:25        'b' (mediump int)

-0:25        mod (mediump int)

-0:25          'c' (mediump int)

+0:25      move second child to first child (temp mediump int)

+0:25        'b' (temp mediump int)

+0:25        mod (temp mediump int)

+0:25          'c' (temp mediump int)

 0:25          Constant:

 0:25            4 (const int)

-0:26      move second child to first child (mediump int)

-0:26        'b' (mediump int)

-0:26        inclusive-or (mediump int)

-0:26          'c' (mediump int)

+0:26      move second child to first child (temp mediump int)

+0:26        'b' (temp mediump int)

+0:26        inclusive-or (temp mediump int)

+0:26          'c' (temp mediump int)

 0:26          Constant:

 0:26            4 (const int)

-0:27      right shift second child into first child (mediump int)

-0:27        'b' (mediump int)

+0:27      right shift second child into first child (temp mediump int)

+0:27        'b' (temp mediump int)

 0:27        Constant:

 0:27          2 (const int)

-0:28      left shift second child into first child (mediump int)

-0:28        'b' (mediump int)

+0:28      left shift second child into first child (temp mediump int)

+0:28        'b' (temp mediump int)

 0:28        Constant:

 0:28          2 (const int)

-0:29      mod second child into first child (mediump int)

-0:29        'b' (mediump int)

+0:29      mod second child into first child (temp mediump int)

+0:29        'b' (temp mediump int)

 0:29        Constant:

 0:29          3 (const int)

-0:36      move second child to first child (structure{mediump float f, 10-element array of mediump float a})

-0:36        's1' (structure{mediump float f, 10-element array of mediump float a})

-0:36        's2' (structure{mediump float f, 10-element array of mediump float a})

-0:37      Test condition and select (void)

+0:36      move second child to first child (temp structure{temp mediump float f, temp 10-element array of mediump float a})

+0:36        's1' (temp structure{temp mediump float f, temp 10-element array of mediump float a})

+0:36        's2' (temp structure{temp mediump float f, temp 10-element array of mediump float a})

+0:37      Test condition and select (temp void)

 0:37        Condition

-0:37        Compare Equal (bool)

-0:37          's1' (structure{mediump float f, 10-element array of mediump float a})

-0:37          's2' (structure{mediump float f, 10-element array of mediump float a})

+0:37        Compare Equal (temp bool)

+0:37          's1' (temp structure{temp mediump float f, temp 10-element array of mediump float a})

+0:37          's2' (temp structure{temp mediump float f, temp 10-element array of mediump float a})

 0:37        true case is null

-0:38      Test condition and select (void)

+0:38      Test condition and select (temp void)

 0:38        Condition

-0:38        Compare Not Equal (bool)

-0:38          's1' (structure{mediump float f, 10-element array of mediump float a})

-0:38          's2' (structure{mediump float f, 10-element array of mediump float a})

+0:38        Compare Not Equal (temp bool)

+0:38          's1' (temp structure{temp mediump float f, temp 10-element array of mediump float a})

+0:38          's2' (temp structure{temp mediump float f, temp 10-element array of mediump float a})

 0:38        true case is null

-0:40      'b' (mediump int)

-0:54  Function Definition: foo10( (void)

+0:40      'b' (temp mediump int)

+0:54  Function Definition: foo10( (global void)

 0:54    Function Parameters: 

-0:67  Function Definition: f11(s21; (void)

+0:67  Function Definition: f11(s21; (global void)

 0:67    Function Parameters: 

 0:67      'p2d' (in lowp sampler2D)

-0:87  Function Definition: foo234( (void)

+0:87  Function Definition: foo234( (global void)

 0:87    Function Parameters: 

 0:89    Sequence

-0:89      Function Call: texture3D(s31;vf3;f1; (highp 4-component vector of float)

+0:89      Function Call: texture3D(s31;vf3;f1; (global highp 4-component vector of float)

 0:89        's3D2' (uniform highp sampler3D)

 0:89        Constant:

 0:89          0.200000

@@ -477,79 +477,79 @@
 0:89          0.200000

 0:89        Constant:

 0:89          0.200000

-0:90      Function Call: texture3DProj(s31;vf4;f1; (highp 4-component vector of float)

+0:90      Function Call: texture3DProj(s31;vf4;f1; (global highp 4-component vector of float)

 0:90        's3D2' (uniform highp sampler3D)

-0:90        direct index (smooth mediump 4-component vector of float)

+0:90        direct index (smooth temp mediump 4-component vector of float)

 0:90          'v' (smooth in 3-element array of mediump 4-component vector of float)

 0:90          Constant:

 0:90            1 (const int)

 0:90        Constant:

 0:90          0.400000

-0:91      dPdx (mediump 4-component vector of float)

-0:91        direct index (smooth mediump 4-component vector of float)

+0:91      dPdx (global mediump 4-component vector of float)

+0:91        direct index (smooth temp mediump 4-component vector of float)

 0:91          'v' (smooth in 3-element array of mediump 4-component vector of float)

 0:91          Constant:

 0:91            0 (const int)

 0:92      Constant:

 0:92        0.000000

-0:93      fwidth (mediump float)

-0:93        'f13' (invariant mediump float)

-0:98  Function Definition: foo236( (void)

+0:93      fwidth (global mediump float)

+0:93        'f13' (invariant global mediump float)

+0:98  Function Definition: foo236( (global void)

 0:98    Function Parameters: 

 0:100    Sequence

-0:100      dPdx (mediump 4-component vector of float)

-0:100        direct index (smooth mediump 4-component vector of float)

+0:100      dPdx (global mediump 4-component vector of float)

+0:100        direct index (smooth temp mediump 4-component vector of float)

 0:100          'v' (smooth in 3-element array of mediump 4-component vector of float)

 0:100          Constant:

 0:100            0 (const int)

 0:101      Constant:

 0:101        0.000000

-0:102      fwidth (mediump float)

-0:102        'f13' (invariant mediump float)

-0:103      move second child to first child (mediump float)

-0:103        'gl_FragDepth' (mediump float)

-0:103        'f13' (invariant mediump float)

-0:104      move second child to first child (highp float)

+0:102      fwidth (global mediump float)

+0:102        'f13' (invariant global mediump float)

+0:103      move second child to first child (temp mediump float)

+0:103        'gl_FragDepth' (temp mediump float)

+0:103        'f13' (invariant global mediump float)

+0:104      move second child to first child (temp highp float)

 0:104        'gl_FragDepthEXT' (gl_FragDepth highp float)

-0:104        'f13' (invariant mediump float)

-0:109  Function Definition: foo239( (void)

+0:104        'f13' (invariant global mediump float)

+0:109  Function Definition: foo239( (global void)

 0:109    Function Parameters: 

 0:111    Sequence

-0:111      move second child to first child (mediump float)

-0:111        'gl_FragDepth' (mediump float)

-0:111        'f13' (invariant mediump float)

-0:112      move second child to first child (highp float)

+0:111      move second child to first child (temp mediump float)

+0:111        'gl_FragDepth' (temp mediump float)

+0:111        'f13' (invariant global mediump float)

+0:112      move second child to first child (temp highp float)

 0:112        'gl_FragDepthEXT' (gl_FragDepth highp float)

-0:112        'f13' (invariant mediump float)

-0:119  Function Definition: foo245( (void)

+0:112        'f13' (invariant global mediump float)

+0:119  Function Definition: foo245( (global void)

 0:119    Function Parameters: 

 0:121    Sequence

-0:121      Function Call: texture2D(sE21;vf2; (lowp 4-component vector of float)

+0:121      Function Call: texture2D(sE21;vf2; (global lowp 4-component vector of float)

 0:121        'sExt' (uniform lowp samplerExternalOES)

 0:121        Constant:

 0:121          0.200000

 0:121          0.200000

-0:122      Function Call: texture2DProj(sE21;vf3; (lowp 4-component vector of float)

+0:122      Function Call: texture2DProj(sE21;vf3; (global lowp 4-component vector of float)

 0:122        'sExt' (uniform lowp samplerExternalOES)

-0:122        Construct vec3 (3-component vector of float)

-0:122          'f13' (invariant mediump float)

-0:123      Function Call: texture2DProj(sE21;vf4; (lowp 4-component vector of float)

+0:122        Construct vec3 (temp 3-component vector of float)

+0:122          'f13' (invariant global mediump float)

+0:123      Function Call: texture2DProj(sE21;vf4; (global lowp 4-component vector of float)

 0:123        'sExt' (uniform lowp samplerExternalOES)

-0:123        direct index (smooth mediump 4-component vector of float)

+0:123        direct index (smooth temp mediump 4-component vector of float)

 0:123          'v' (smooth in 3-element array of mediump 4-component vector of float)

 0:123          Constant:

 0:123            2 (const int)

-0:130  Function Definition: foo246( (void)

+0:130  Function Definition: foo246( (global void)

 0:130    Function Parameters: 

 0:132    Sequence

-0:132      Function Call: texture2D(sE21;vf2; (mediump 4-component vector of float)

+0:132      Function Call: texture2D(sE21;vf2; (global mediump 4-component vector of float)

 0:132        'mediumExt' (uniform mediump samplerExternalOES)

 0:132        Constant:

 0:132          0.200000

 0:132          0.200000

-0:133      Function Call: texture2DProj(sE21;vf4; (highp 4-component vector of float)

+0:133      Function Call: texture2DProj(sE21;vf4; (global highp 4-component vector of float)

 0:133        'highExt' (uniform highp samplerExternalOES)

-0:133        direct index (smooth mediump 4-component vector of float)

+0:133        direct index (smooth temp mediump 4-component vector of float)

 0:133          'v' (smooth in 3-element array of mediump 4-component vector of float)

 0:133          Constant:

 0:133            2 (const int)

@@ -557,64 +557,64 @@
 0:134        0.000000

 0:135      Constant:

 0:135        0.000000

-0:137      Bitwise not (mediump int)

-0:137        'a' (mediump int)

-0:138      inclusive-or (mediump int)

-0:138        'a' (mediump int)

-0:138        'a' (mediump int)

-0:139      bitwise and (mediump int)

-0:139        'a' (mediump int)

-0:139        'a' (mediump int)

-0:145  Function Definition: foo203940(i1;f1;f1; (mediump int)

+0:137      Bitwise not (temp mediump int)

+0:137        'a' (temp mediump int)

+0:138      inclusive-or (temp mediump int)

+0:138        'a' (temp mediump int)

+0:138        'a' (temp mediump int)

+0:139      bitwise and (temp mediump int)

+0:139        'a' (temp mediump int)

+0:139        'a' (temp mediump int)

+0:145  Function Definition: foo203940(i1;f1;f1; (global mediump int)

 0:145    Function Parameters: 

 0:145      'a' (in mediump int)

 0:145      'b' (in mediump float)

 0:147    Sequence

-0:147      Function Call: texture2DProjGradEXT(s21;vf3;vf2;vf2; (lowp 4-component vector of float)

+0:147      Function Call: texture2DProjGradEXT(s21;vf3;vf2;vf2; (global lowp 4-component vector of float)

 0:147        's2Dg' (uniform lowp sampler2D)

-0:147        Construct vec3 (3-component vector of float)

-0:147          'f13' (invariant mediump float)

+0:147        Construct vec3 (temp 3-component vector of float)

+0:147          'f13' (invariant global mediump float)

 0:147        'uv2' (invariant uniform mediump 2-component vector of float)

 0:147        'uv2' (invariant uniform mediump 2-component vector of float)

 0:148      Branch: Return with expression

 0:148        'a' (in mediump int)

 0:151  Sequence

-0:151    move second child to first child (mediump float)

-0:151      'f123' (mediump float)

+0:151    move second child to first child (temp mediump float)

+0:151      'f123' (global mediump float)

 0:151      Constant:

 0:151        4.000000

 0:152  Sequence

-0:152    move second child to first child (mediump float)

-0:152      'f124' (mediump float)

+0:152    move second child to first child (temp mediump float)

+0:152      'f124' (global mediump float)

 0:152      Constant:

 0:152        50000000000.000000

-0:158  Function Definition: foo323433( (void)

+0:158  Function Definition: foo323433( (global void)

 0:158    Function Parameters: 

 0:160    Sequence

-0:160      Function Call: texture2DLodEXT(s21;vf2;f1; (lowp 4-component vector of float)

+0:160      Function Call: texture2DLodEXT(s21;vf2;f1; (global lowp 4-component vector of float)

 0:160        's2Dg' (uniform lowp sampler2D)

 0:160        'uv2' (invariant uniform mediump 2-component vector of float)

-0:160        'f13' (invariant mediump float)

-0:161      Function Call: texture2DProjGradEXT(s21;vf3;vf2;vf2; (lowp 4-component vector of float)

+0:160        'f13' (invariant global mediump float)

+0:161      Function Call: texture2DProjGradEXT(s21;vf3;vf2;vf2; (global lowp 4-component vector of float)

 0:161        's2Dg' (uniform lowp sampler2D)

-0:161        Construct vec3 (3-component vector of float)

-0:161          'f13' (invariant mediump float)

+0:161        Construct vec3 (temp 3-component vector of float)

+0:161          'f13' (invariant global mediump float)

 0:161        'uv2' (invariant uniform mediump 2-component vector of float)

 0:161        'uv2' (invariant uniform mediump 2-component vector of float)

-0:162      Function Call: texture2DGradEXT(s21;vf2;vf2;vf2; (lowp 4-component vector of float)

+0:162      Function Call: texture2DGradEXT(s21;vf2;vf2;vf2; (global lowp 4-component vector of float)

 0:162        's2Dg' (uniform lowp sampler2D)

 0:162        'uv2' (invariant uniform mediump 2-component vector of float)

 0:162        'uv2' (invariant uniform mediump 2-component vector of float)

 0:162        'uv2' (invariant uniform mediump 2-component vector of float)

-0:163      Function Call: textureCubeGradEXT(sC1;vf3;vf3;vf3; (lowp 4-component vector of float)

+0:163      Function Call: textureCubeGradEXT(sC1;vf3;vf3;vf3; (global lowp 4-component vector of float)

 0:163        'sCube' (uniform lowp samplerCube)

-0:163        Construct vec3 (3-component vector of float)

-0:163          'f13' (invariant mediump float)

-0:163        Construct vec3 (3-component vector of float)

-0:163          'f13' (invariant mediump float)

-0:163        Construct vec3 (3-component vector of float)

-0:163          'f13' (invariant mediump float)

-0:167  Function Definition: fgfg(f1;i1; (mediump int)

+0:163        Construct vec3 (temp 3-component vector of float)

+0:163          'f13' (invariant global mediump float)

+0:163        Construct vec3 (temp 3-component vector of float)

+0:163          'f13' (invariant global mediump float)

+0:163        Construct vec3 (temp 3-component vector of float)

+0:163          'f13' (invariant global mediump float)

+0:167  Function Definition: fgfg(f1;i1; (global mediump int)

 0:167    Function Parameters: 

 0:167      'f' (in mediump float)

 0:167      'i' (in highp int)

@@ -622,43 +622,43 @@
 0:167      Branch: Return with expression

 0:167        Constant:

 0:167          2 (const int)

-0:173  Function Definition: gggf(f1; (mediump int)

+0:173  Function Definition: gggf(f1; (global mediump int)

 0:173    Function Parameters: 

 0:173      'f' (in mediump float)

 0:173    Sequence

 0:173      Branch: Return with expression

 0:173        Constant:

 0:173          2 (const int)

-0:175  Function Definition: agggf(f1; (mediump int)

+0:175  Function Definition: agggf(f1; (global mediump int)

 0:175    Function Parameters: 

 0:175      'f' (in mediump float)

 0:175    Sequence

 0:175      Branch: Return with expression

 0:175        Constant:

 0:175          2 (const int)

-0:187  Function Definition: badswizzle( (void)

+0:187  Function Definition: badswizzle( (global void)

 0:187    Function Parameters: 

 0:?     Sequence

-0:190      'a' (5-element array of mediump 3-component vector of float)

-0:191      'a' (5-element array of mediump 3-component vector of float)

-0:192      'a' (5-element array of mediump 3-component vector of float)

+0:190      'a' (temp 5-element array of mediump 3-component vector of float)

+0:191      'a' (temp 5-element array of mediump 3-component vector of float)

+0:192      'a' (temp 5-element array of mediump 3-component vector of float)

 0:193      Constant:

 0:193        5 (const int)

 0:194      Constant:

 0:194        0.000000

 0:?   Linker Objects

-0:?     'a' (3-element array of mediump int)

-0:?     'uint' (mediump int)

+0:?     'a' (global 3-element array of mediump int)

+0:?     'uint' (global mediump int)

 0:?     'v' (smooth in 3-element array of mediump 4-component vector of float)

-0:?     'f' (mediump float)

+0:?     'f' (global mediump float)

 0:?     'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump int x})

-0:?     'fa' (1-element array of mediump float)

-0:?     'f13' (mediump float)

-0:?     'fi' (invariant mediump float)

+0:?     'fa' (global 1-element array of mediump float)

+0:?     'f13' (global mediump float)

+0:?     'fi' (invariant temp mediump float)

 0:?     'av' (smooth in mediump 4-component vector of float)

 0:?     'uv2' (uniform mediump 2-component vector of float)

 0:?     'uv3' (invariant uniform mediump 3-component vector of float)

-0:?     'glob2D' (lowp sampler2D)

+0:?     'glob2D' (global lowp sampler2D)

 0:?     'vary2D' (smooth in lowp sampler2D)

 0:?     's3D' (uniform mediump sampler3D)

 0:?     's3D2' (uniform highp sampler3D)

@@ -666,8 +666,8 @@
 0:?     'mediumExt' (uniform mediump samplerExternalOES)

 0:?     'highExt' (uniform highp samplerExternalOES)

 0:?     's2Dg' (uniform lowp sampler2D)

-0:?     'f123' (mediump float)

-0:?     'f124' (mediump float)

+0:?     'f123' (global mediump float)

+0:?     'f124' (global mediump float)

 0:?     'sCube' (uniform lowp samplerCube)

-0:?     's' (smooth in structure{mediump float f})

+0:?     's' (smooth in structure{global mediump float f})

 

diff --git a/Test/baseResults/100Limits.vert.out b/Test/baseResults/100Limits.vert.out
index 6bfa19b..9cda6bf 100644
--- a/Test/baseResults/100Limits.vert.out
+++ b/Test/baseResults/100Limits.vert.out
@@ -2,23 +2,23 @@
 

 Shader version: 100

 0:? Sequence

-0:15  Function Definition: foo(f1; (void)

+0:15  Function Definition: foo(f1; (global void)

 0:15    Function Parameters: 

 0:15      'a' (inout highp float)

-0:17  Function Definition: bar( (highp int)

+0:17  Function Definition: bar( (global highp int)

 0:17    Function Parameters: 

 0:19    Sequence

 0:19      Branch: Return with expression

 0:19        Constant:

 0:19          1 (const int)

-0:22  Function Definition: main( (void)

+0:22  Function Definition: main( (global void)

 0:22    Function Parameters: 

 0:24    Sequence

 0:24      Loop with condition tested first

 0:24        Loop Condition

-0:24        Compare Less Than (bool)

-0:24          'ga' (highp int)

-0:24          'gb' (highp int)

+0:24        Compare Less Than (temp bool)

+0:24          'ga' (global highp int)

+0:24          'gb' (global highp int)

 0:24        No loop body

 0:26      Loop with condition not tested first

 0:26        Loop Condition

@@ -32,20 +32,20 @@
 0:29      Sequence

 0:29        Loop with condition tested first

 0:29          Loop Condition

-0:29          Compare Equal (bool)

-0:29            'ga' (highp int)

-0:29            'gb' (highp int)

+0:29          Compare Equal (temp bool)

+0:29            'ga' (global highp int)

+0:29            'gb' (global highp int)

 0:29          No loop body

 0:30      Sequence

 0:30        Loop with condition tested first

 0:30          No loop condition

 0:30          No loop body

 0:30          Loop Terminal Expression

-0:30          Post-Increment (highp float)

-0:30            'f' (highp float)

+0:30          Post-Increment (temp highp float)

+0:30            'f' (global highp float)

 0:31      Sequence

-0:31        move second child to first child (highp int)

-0:31          'ga' (highp int)

+0:31        move second child to first child (temp highp int)

+0:31          'ga' (global highp int)

 0:31          Constant:

 0:31            0 (const int)

 0:31        Loop with condition tested first

@@ -53,8 +53,8 @@
 0:31          No loop body

 0:32      Sequence

 0:32        Sequence

-0:32          move second child to first child (bool)

-0:32            'a' (bool)

+0:32          move second child to first child (temp bool)

+0:32            'a' (temp bool)

 0:32            Constant:

 0:32              false (const bool)

 0:32        Loop with condition tested first

@@ -62,355 +62,355 @@
 0:32          No loop body

 0:33      Sequence

 0:33        Sequence

-0:33          move second child to first child (highp float)

-0:33            'a' (highp float)

+0:33          move second child to first child (temp highp float)

+0:33            'a' (temp highp float)

 0:33            Constant:

 0:33              0.000000

 0:33        Loop with condition tested first

 0:33          Loop Condition

-0:33          Compare Equal (bool)

-0:33            'a' (highp float)

-0:33            sine (highp float)

-0:33              'f' (highp float)

+0:33          Compare Equal (temp bool)

+0:33            'a' (temp highp float)

+0:33            sine (global highp float)

+0:33              'f' (global highp float)

 0:33          No loop body

 0:34      Sequence

 0:34        Sequence

-0:34          move second child to first child (highp int)

-0:34            'a' (highp int)

+0:34          move second child to first child (temp highp int)

+0:34            'a' (temp highp int)

 0:34            Constant:

 0:34              0 (const int)

 0:34        Loop with condition tested first

 0:34          Loop Condition

-0:34          Compare Less Than (bool)

-0:34            'a' (highp int)

+0:34          Compare Less Than (temp bool)

+0:34            'a' (temp highp int)

 0:34            Constant:

 0:34              10 (const int)

 0:34          No loop body

 0:34          Loop Terminal Expression

-0:34          multiply second child into first child (highp int)

-0:34            'a' (highp int)

+0:34          multiply second child into first child (temp highp int)

+0:34            'a' (temp highp int)

 0:34            Constant:

 0:34              2 (const int)

 0:35      Sequence

 0:35        Sequence

-0:35          move second child to first child (highp int)

-0:35            'a' (highp int)

+0:35          move second child to first child (temp highp int)

+0:35            'a' (temp highp int)

 0:35            Constant:

 0:35              0 (const int)

 0:35        Loop with condition tested first

 0:35          Loop Condition

-0:35          Compare Less Than or Equal (bool)

-0:35            'a' (highp int)

+0:35          Compare Less Than or Equal (temp bool)

+0:35            'a' (temp highp int)

 0:35            Constant:

 0:35              20 (const int)

 0:35          Loop Body

-0:35          Pre-Decrement (highp int)

-0:35            'a' (highp int)

+0:35          Pre-Decrement (temp highp int)

+0:35            'a' (temp highp int)

 0:35          Loop Terminal Expression

-0:35          Post-Increment (highp int)

-0:35            'a' (highp int)

+0:35          Post-Increment (temp highp int)

+0:35            'a' (temp highp int)

 0:36      Sequence

 0:36        Sequence

-0:36          move second child to first child (highp int)

-0:36            'a' (highp int)

+0:36          move second child to first child (temp highp int)

+0:36            'a' (temp highp int)

 0:36            Constant:

 0:36              0 (const int)

 0:36        Loop with condition tested first

 0:36          Loop Condition

-0:36          Compare Less Than or Equal (bool)

-0:36            'a' (highp int)

+0:36          Compare Less Than or Equal (temp bool)

+0:36            'a' (temp highp int)

 0:36            Constant:

 0:36              20 (const int)

 0:36          Loop Body

 0:36          Sequence

-0:36            Test condition and select (void)

+0:36            Test condition and select (temp void)

 0:36              Condition

-0:36              Compare Equal (bool)

-0:36                'ga' (highp int)

+0:36              Compare Equal (temp bool)

+0:36                'ga' (global highp int)

 0:36                Constant:

 0:36                  0 (const int)

 0:36              true case

-0:36              move second child to first child (highp int)

-0:36                'a' (highp int)

+0:36              move second child to first child (temp highp int)

+0:36                'a' (temp highp int)

 0:36                Constant:

 0:36                  4 (const int)

 0:36          Loop Terminal Expression

-0:36          Post-Increment (highp int)

-0:36            'a' (highp int)

+0:36          Post-Increment (temp highp int)

+0:36            'a' (temp highp int)

 0:37      Sequence

 0:37        Sequence

-0:37          move second child to first child (highp float)

-0:37            'a' (highp float)

+0:37          move second child to first child (temp highp float)

+0:37            'a' (temp highp float)

 0:37            Constant:

 0:37              0.000000

 0:37        Loop with condition tested first

 0:37          Loop Condition

-0:37          Compare Less Than or Equal (bool)

-0:37            'a' (highp float)

+0:37          Compare Less Than or Equal (temp bool)

+0:37            'a' (temp highp float)

 0:37            Constant:

 0:37              20.000000

 0:37          No loop body

 0:37          Loop Terminal Expression

-0:37          add second child into first child (highp float)

-0:37            'a' (highp float)

+0:37          add second child into first child (temp highp float)

+0:37            'a' (temp highp float)

 0:37            Constant:

 0:37              2.000000

 0:38      Sequence

 0:38        Sequence

-0:38          move second child to first child (highp float)

-0:38            'a' (highp float)

+0:38          move second child to first child (temp highp float)

+0:38            'a' (temp highp float)

 0:38            Constant:

 0:38              0.000000

 0:38        Loop with condition tested first

 0:38          Loop Condition

-0:38          Compare Not Equal (bool)

-0:38            'a' (highp float)

+0:38          Compare Not Equal (temp bool)

+0:38            'a' (temp highp float)

 0:38            Constant:

 0:38              20.000000

 0:38          Loop Body

 0:38          Sequence

-0:38            Test condition and select (void)

+0:38            Test condition and select (temp void)

 0:38              Condition

-0:38              Compare Equal (bool)

-0:38                'ga' (highp int)

+0:38              Compare Equal (temp bool)

+0:38                'ga' (global highp int)

 0:38                Constant:

 0:38                  0 (const int)

 0:38              true case

-0:38              move second child to first child (highp int)

-0:38                'ga' (highp int)

+0:38              move second child to first child (temp highp int)

+0:38                'ga' (global highp int)

 0:38                Constant:

 0:38                  4 (const int)

 0:38          Loop Terminal Expression

-0:38          subtract second child into first child (highp float)

-0:38            'a' (highp float)

+0:38          subtract second child into first child (temp highp float)

+0:38            'a' (temp highp float)

 0:38            Constant:

 0:38              2.000000

 0:39      Sequence

 0:39        Sequence

-0:39          move second child to first child (highp float)

-0:39            'a' (highp float)

+0:39          move second child to first child (temp highp float)

+0:39            'a' (temp highp float)

 0:39            Constant:

 0:39              0.000000

 0:39        Loop with condition tested first

 0:39          Loop Condition

-0:39          Compare Equal (bool)

-0:39            'a' (highp float)

+0:39          Compare Equal (temp bool)

+0:39            'a' (temp highp float)

 0:39            Constant:

 0:39              20.000000

 0:39          Loop Body

 0:39          Sequence

 0:39            Sequence

-0:39              move second child to first child (highp float)

-0:39                'a' (highp float)

+0:39              move second child to first child (temp highp float)

+0:39                'a' (temp highp float)

 0:39                Constant:

 0:39                  0.000000

 0:39            Loop with condition tested first

 0:39              Loop Condition

-0:39              Compare Equal (bool)

-0:39                'a' (highp float)

+0:39              Compare Equal (temp bool)

+0:39                'a' (temp highp float)

 0:39                Constant:

 0:39                  20.000000

 0:39              No loop body

 0:39              Loop Terminal Expression

-0:39              Post-Decrement (highp float)

-0:39                'a' (highp float)

+0:39              Post-Decrement (temp highp float)

+0:39                'a' (temp highp float)

 0:39          Loop Terminal Expression

-0:39          Post-Decrement (highp float)

-0:39            'a' (highp float)

+0:39          Post-Decrement (temp highp float)

+0:39            'a' (temp highp float)

 0:40      Sequence

 0:40        Sequence

-0:40          move second child to first child (highp float)

-0:40            'a' (highp float)

+0:40          move second child to first child (temp highp float)

+0:40            'a' (temp highp float)

 0:40            Constant:

 0:40              0.000000

 0:40        Loop with condition tested first

 0:40          Loop Condition

-0:40          Compare Less Than or Equal (bool)

-0:40            'a' (highp float)

+0:40          Compare Less Than or Equal (temp bool)

+0:40            'a' (temp highp float)

 0:40            Constant:

 0:40              20.000000

 0:40          No loop body

 0:40          Loop Terminal Expression

-0:40          add second child into first child (highp float)

-0:40            'a' (highp float)

+0:40          add second child into first child (temp highp float)

+0:40            'a' (temp highp float)

 0:40            Constant:

 0:40              2.000000

 0:41      Sequence

 0:41        Sequence

-0:41          move second child to first child (highp float)

-0:41            'a' (highp float)

+0:41          move second child to first child (temp highp float)

+0:41            'a' (temp highp float)

 0:41            Constant:

 0:41              0.000000

 0:41        Loop with condition tested first

 0:41          Loop Condition

-0:41          Compare Less Than or Equal (bool)

-0:41            'a' (highp float)

+0:41          Compare Less Than or Equal (temp bool)

+0:41            'a' (temp highp float)

 0:41            Constant:

 0:41              20.000000

 0:41          No loop body

 0:41          Loop Terminal Expression

-0:41          add second child into first child (highp float)

-0:41            'a' (highp float)

+0:41          add second child into first child (temp highp float)

+0:41            'a' (temp highp float)

 0:41            Constant:

 0:41              2.000000

 0:42      Sequence

 0:42        Sequence

-0:42          move second child to first child (highp float)

-0:42            'a' (highp float)

+0:42          move second child to first child (temp highp float)

+0:42            'a' (temp highp float)

 0:42            Constant:

 0:42              0.000000

 0:42        Loop with condition tested first

 0:42          Loop Condition

-0:42          Compare Greater Than (bool)

-0:42            'a' (highp float)

+0:42          Compare Greater Than (temp bool)

+0:42            'a' (temp highp float)

 0:42            Constant:

 0:42              40.000000

 0:42          No loop body

 0:42          Loop Terminal Expression

-0:42          add second child into first child (highp float)

-0:42            'a' (highp float)

+0:42          add second child into first child (temp highp float)

+0:42            'a' (temp highp float)

 0:42            Constant:

 0:42              2.000000

 0:43      Sequence

 0:43        Sequence

-0:43          move second child to first child (highp float)

-0:43            'a' (highp float)

+0:43          move second child to first child (temp highp float)

+0:43            'a' (temp highp float)

 0:43            Constant:

 0:43              0.000000

 0:43        Loop with condition tested first

 0:43          Loop Condition

-0:43          Compare Greater Than or Equal (bool)

-0:43            'a' (highp float)

+0:43          Compare Greater Than or Equal (temp bool)

+0:43            'a' (temp highp float)

 0:43            Constant:

 0:43              20.000000

 0:43          Loop Body

-0:43          Function Call: foo(f1; (void)

-0:43            'a' (highp float)

+0:43          Function Call: foo(f1; (global void)

+0:43            'a' (temp highp float)

 0:43          Loop Terminal Expression

-0:43          add second child into first child (highp float)

-0:43            'a' (highp float)

+0:43          add second child into first child (temp highp float)

+0:43            'a' (temp highp float)

 0:43            Constant:

 0:43              2.000000

-0:47      indirect index (lowp sampler2D)

+0:47      indirect index (temp lowp sampler2D)

 0:47        'fsa' (uniform 3-element array of lowp sampler2D)

-0:47        'ga' (highp int)

-0:48      indirect index (highp float)

+0:47        'ga' (global highp int)

+0:48      indirect index (temp highp float)

 0:48        'fua' (uniform 10-element array of highp float)

-0:48        'ga' (highp int)

-0:49      indirect index (highp 3-component vector of float)

+0:48        'ga' (global highp int)

+0:49      indirect index (temp highp 3-component vector of float)

 0:49        'am3' (in highp 3X3 matrix of float)

-0:49        'ga' (highp int)

-0:50      indirect index (highp float)

+0:49        'ga' (global highp int)

+0:50      indirect index (temp highp float)

 0:50        'av2' (in highp 2-component vector of float)

-0:50        'ga' (highp int)

-0:51      indirect index (smooth highp 4-component vector of float)

+0:50        'ga' (global highp int)

+0:51      indirect index (smooth temp highp 4-component vector of float)

 0:51        'va' (smooth out 4-element array of highp 4-component vector of float)

-0:51        add (highp int)

+0:51        add (temp highp int)

 0:51          Constant:

 0:51            2 (const int)

-0:51          'ga' (highp int)

-0:52      indirect index (highp 2-component vector of float)

+0:51          'ga' (global highp int)

+0:52      indirect index (temp highp 2-component vector of float)

 0:52        Constant:

 0:52          1.000000

 0:52          0.000000

 0:52          0.000000

 0:52          1.000000

-0:52        'ga' (highp int)

-0:53      indirect index (highp float)

+0:52        'ga' (global highp int)

+0:53      indirect index (temp highp float)

 0:53        Constant:

 0:53          2.000000

 0:53          2.000000

 0:53          2.000000

-0:53        divide (highp int)

-0:53          'ga' (highp int)

+0:53        divide (temp highp int)

+0:53          'ga' (global highp int)

 0:53          Constant:

 0:53            2 (const int)

-0:54      indirect index (highp int)

-0:54        'ia' (9-element array of highp int)

-0:54        'ga' (highp int)

+0:54      indirect index (temp highp int)

+0:54        'ia' (temp 9-element array of highp int)

+0:54        'ga' (global highp int)

 0:56      Sequence

 0:56        Sequence

-0:56          move second child to first child (highp int)

-0:56            'a' (highp int)

+0:56          move second child to first child (temp highp int)

+0:56            'a' (temp highp int)

 0:56            Constant:

 0:56              3 (const int)

 0:56        Loop with condition tested first

 0:56          Loop Condition

-0:56          Compare Greater Than or Equal (bool)

-0:56            'a' (highp int)

+0:56          Compare Greater Than or Equal (temp bool)

+0:56            'a' (temp highp int)

 0:56            Constant:

 0:56              0 (const int)

 0:56          Loop Body

 0:57          Sequence

-0:57            indirect index (lowp sampler2D)

+0:57            indirect index (temp lowp sampler2D)

 0:57              'fsa' (uniform 3-element array of lowp sampler2D)

-0:57              'a' (highp int)

-0:58            indirect index (highp float)

+0:57              'a' (temp highp int)

+0:58            indirect index (temp highp float)

 0:58              'fua' (uniform 10-element array of highp float)

-0:58              add (highp int)

-0:58                'a' (highp int)

+0:58              add (temp highp int)

+0:58                'a' (temp highp int)

 0:58                Constant:

 0:58                  2 (const int)

-0:59            indirect index (highp 3-component vector of float)

+0:59            indirect index (temp highp 3-component vector of float)

 0:59              'am3' (in highp 3X3 matrix of float)

-0:59              component-wise multiply (highp int)

+0:59              component-wise multiply (temp highp int)

 0:59                Constant:

 0:59                  3 (const int)

-0:59                'a' (highp int)

-0:60            indirect index (highp float)

+0:59                'a' (temp highp int)

+0:60            indirect index (temp highp float)

 0:60              'av2' (in highp 2-component vector of float)

-0:60              component-wise multiply (highp int)

+0:60              component-wise multiply (temp highp int)

 0:60                Constant:

 0:60                  3 (const int)

-0:60                'a' (highp int)

-0:61            indirect index (smooth highp 4-component vector of float)

+0:60                'a' (temp highp int)

+0:61            indirect index (smooth temp highp 4-component vector of float)

 0:61              'va' (smooth out 4-element array of highp 4-component vector of float)

-0:61              subtract (highp int)

-0:61                'a' (highp int)

+0:61              subtract (temp highp int)

+0:61                'a' (temp highp int)

 0:61                Constant:

 0:61                  1 (const int)

-0:62            indirect index (highp 2-component vector of float)

+0:62            indirect index (temp highp 2-component vector of float)

 0:62              Constant:

 0:62                1.000000

 0:62                0.000000

 0:62                0.000000

 0:62                1.000000

-0:62              divide (highp int)

-0:62                'a' (highp int)

+0:62              divide (temp highp int)

+0:62                'a' (temp highp int)

 0:62                Constant:

 0:62                  2 (const int)

-0:63            indirect index (highp float)

+0:63            indirect index (temp highp float)

 0:63              Constant:

 0:63                2.000000

 0:63                2.000000

 0:63                2.000000

-0:63              'a' (highp int)

-0:64            indirect index (highp int)

-0:64              'ia' (9-element array of highp int)

-0:64              'a' (highp int)

-0:65            indirect index (highp int)

-0:65              'ia' (9-element array of highp int)

-0:65              Function Call: bar( (highp int)

+0:63              'a' (temp highp int)

+0:64            indirect index (temp highp int)

+0:64              'ia' (temp 9-element array of highp int)

+0:64              'a' (temp highp int)

+0:65            indirect index (temp highp int)

+0:65              'ia' (temp 9-element array of highp int)

+0:65              Function Call: bar( (global highp int)

 0:56          Loop Terminal Expression

-0:56          Post-Decrement (highp int)

-0:56            'a' (highp int)

-0:68      direct index (lowp sampler2D)

+0:56          Post-Decrement (temp highp int)

+0:56            'a' (temp highp int)

+0:68      direct index (temp lowp sampler2D)

 0:68        'fsa' (uniform 3-element array of lowp sampler2D)

 0:68        Constant:

 0:68          2 (const int)

-0:69      direct index (highp float)

+0:69      direct index (temp highp float)

 0:69        'fua' (uniform 10-element array of highp float)

 0:69        Constant:

 0:69          3 (const int)

-0:70      direct index (highp 3-component vector of float)

+0:70      direct index (temp highp 3-component vector of float)

 0:70        'am3' (in highp 3X3 matrix of float)

 0:70        Constant:

 0:70          2 (const int)

-0:71      direct index (highp float)

+0:71      direct index (temp highp float)

 0:71        'av2' (in highp 2-component vector of float)

 0:71        Constant:

 0:71          1 (const int)

-0:72      direct index (smooth highp 4-component vector of float)

+0:72      direct index (smooth temp highp 4-component vector of float)

 0:72        'va' (smooth out 4-element array of highp 4-component vector of float)

 0:72        Constant:

 0:72          1 (const int)

@@ -419,14 +419,14 @@
 0:73        1.000000

 0:74      Constant:

 0:74        2.000000

-0:75      direct index (highp int)

-0:75        'ia' (9-element array of highp int)

+0:75      direct index (temp highp int)

+0:75        'ia' (temp 9-element array of highp int)

 0:75        Constant:

 0:75          3 (const int)

 0:?   Linker Objects

-0:?     'ga' (highp int)

-0:?     'gb' (highp int)

-0:?     'f' (highp float)

+0:?     'ga' (global highp int)

+0:?     'gb' (global highp int)

+0:?     'f' (global highp float)

 0:?     'fsa' (uniform 3-element array of lowp sampler2D)

 0:?     'fua' (uniform 10-element array of highp float)

 0:?     'am3' (in highp 3X3 matrix of float)

@@ -448,23 +448,23 @@
 

 Shader version: 100

 0:? Sequence

-0:15  Function Definition: foo(f1; (void)

+0:15  Function Definition: foo(f1; (global void)

 0:15    Function Parameters: 

 0:15      'a' (inout highp float)

-0:17  Function Definition: bar( (highp int)

+0:17  Function Definition: bar( (global highp int)

 0:17    Function Parameters: 

 0:19    Sequence

 0:19      Branch: Return with expression

 0:19        Constant:

 0:19          1 (const int)

-0:22  Function Definition: main( (void)

+0:22  Function Definition: main( (global void)

 0:22    Function Parameters: 

 0:24    Sequence

 0:24      Loop with condition tested first

 0:24        Loop Condition

-0:24        Compare Less Than (bool)

-0:24          'ga' (highp int)

-0:24          'gb' (highp int)

+0:24        Compare Less Than (temp bool)

+0:24          'ga' (global highp int)

+0:24          'gb' (global highp int)

 0:24        No loop body

 0:26      Loop with condition not tested first

 0:26        Loop Condition

@@ -478,20 +478,20 @@
 0:29      Sequence

 0:29        Loop with condition tested first

 0:29          Loop Condition

-0:29          Compare Equal (bool)

-0:29            'ga' (highp int)

-0:29            'gb' (highp int)

+0:29          Compare Equal (temp bool)

+0:29            'ga' (global highp int)

+0:29            'gb' (global highp int)

 0:29          No loop body

 0:30      Sequence

 0:30        Loop with condition tested first

 0:30          No loop condition

 0:30          No loop body

 0:30          Loop Terminal Expression

-0:30          Post-Increment (highp float)

-0:30            'f' (highp float)

+0:30          Post-Increment (temp highp float)

+0:30            'f' (global highp float)

 0:31      Sequence

-0:31        move second child to first child (highp int)

-0:31          'ga' (highp int)

+0:31        move second child to first child (temp highp int)

+0:31          'ga' (global highp int)

 0:31          Constant:

 0:31            0 (const int)

 0:31        Loop with condition tested first

@@ -499,8 +499,8 @@
 0:31          No loop body

 0:32      Sequence

 0:32        Sequence

-0:32          move second child to first child (bool)

-0:32            'a' (bool)

+0:32          move second child to first child (temp bool)

+0:32            'a' (temp bool)

 0:32            Constant:

 0:32              false (const bool)

 0:32        Loop with condition tested first

@@ -508,355 +508,355 @@
 0:32          No loop body

 0:33      Sequence

 0:33        Sequence

-0:33          move second child to first child (highp float)

-0:33            'a' (highp float)

+0:33          move second child to first child (temp highp float)

+0:33            'a' (temp highp float)

 0:33            Constant:

 0:33              0.000000

 0:33        Loop with condition tested first

 0:33          Loop Condition

-0:33          Compare Equal (bool)

-0:33            'a' (highp float)

-0:33            sine (highp float)

-0:33              'f' (highp float)

+0:33          Compare Equal (temp bool)

+0:33            'a' (temp highp float)

+0:33            sine (global highp float)

+0:33              'f' (global highp float)

 0:33          No loop body

 0:34      Sequence

 0:34        Sequence

-0:34          move second child to first child (highp int)

-0:34            'a' (highp int)

+0:34          move second child to first child (temp highp int)

+0:34            'a' (temp highp int)

 0:34            Constant:

 0:34              0 (const int)

 0:34        Loop with condition tested first

 0:34          Loop Condition

-0:34          Compare Less Than (bool)

-0:34            'a' (highp int)

+0:34          Compare Less Than (temp bool)

+0:34            'a' (temp highp int)

 0:34            Constant:

 0:34              10 (const int)

 0:34          No loop body

 0:34          Loop Terminal Expression

-0:34          multiply second child into first child (highp int)

-0:34            'a' (highp int)

+0:34          multiply second child into first child (temp highp int)

+0:34            'a' (temp highp int)

 0:34            Constant:

 0:34              2 (const int)

 0:35      Sequence

 0:35        Sequence

-0:35          move second child to first child (highp int)

-0:35            'a' (highp int)

+0:35          move second child to first child (temp highp int)

+0:35            'a' (temp highp int)

 0:35            Constant:

 0:35              0 (const int)

 0:35        Loop with condition tested first

 0:35          Loop Condition

-0:35          Compare Less Than or Equal (bool)

-0:35            'a' (highp int)

+0:35          Compare Less Than or Equal (temp bool)

+0:35            'a' (temp highp int)

 0:35            Constant:

 0:35              20 (const int)

 0:35          Loop Body

-0:35          Pre-Decrement (highp int)

-0:35            'a' (highp int)

+0:35          Pre-Decrement (temp highp int)

+0:35            'a' (temp highp int)

 0:35          Loop Terminal Expression

-0:35          Post-Increment (highp int)

-0:35            'a' (highp int)

+0:35          Post-Increment (temp highp int)

+0:35            'a' (temp highp int)

 0:36      Sequence

 0:36        Sequence

-0:36          move second child to first child (highp int)

-0:36            'a' (highp int)

+0:36          move second child to first child (temp highp int)

+0:36            'a' (temp highp int)

 0:36            Constant:

 0:36              0 (const int)

 0:36        Loop with condition tested first

 0:36          Loop Condition

-0:36          Compare Less Than or Equal (bool)

-0:36            'a' (highp int)

+0:36          Compare Less Than or Equal (temp bool)

+0:36            'a' (temp highp int)

 0:36            Constant:

 0:36              20 (const int)

 0:36          Loop Body

 0:36          Sequence

-0:36            Test condition and select (void)

+0:36            Test condition and select (temp void)

 0:36              Condition

-0:36              Compare Equal (bool)

-0:36                'ga' (highp int)

+0:36              Compare Equal (temp bool)

+0:36                'ga' (global highp int)

 0:36                Constant:

 0:36                  0 (const int)

 0:36              true case

-0:36              move second child to first child (highp int)

-0:36                'a' (highp int)

+0:36              move second child to first child (temp highp int)

+0:36                'a' (temp highp int)

 0:36                Constant:

 0:36                  4 (const int)

 0:36          Loop Terminal Expression

-0:36          Post-Increment (highp int)

-0:36            'a' (highp int)

+0:36          Post-Increment (temp highp int)

+0:36            'a' (temp highp int)

 0:37      Sequence

 0:37        Sequence

-0:37          move second child to first child (highp float)

-0:37            'a' (highp float)

+0:37          move second child to first child (temp highp float)

+0:37            'a' (temp highp float)

 0:37            Constant:

 0:37              0.000000

 0:37        Loop with condition tested first

 0:37          Loop Condition

-0:37          Compare Less Than or Equal (bool)

-0:37            'a' (highp float)

+0:37          Compare Less Than or Equal (temp bool)

+0:37            'a' (temp highp float)

 0:37            Constant:

 0:37              20.000000

 0:37          No loop body

 0:37          Loop Terminal Expression

-0:37          add second child into first child (highp float)

-0:37            'a' (highp float)

+0:37          add second child into first child (temp highp float)

+0:37            'a' (temp highp float)

 0:37            Constant:

 0:37              2.000000

 0:38      Sequence

 0:38        Sequence

-0:38          move second child to first child (highp float)

-0:38            'a' (highp float)

+0:38          move second child to first child (temp highp float)

+0:38            'a' (temp highp float)

 0:38            Constant:

 0:38              0.000000

 0:38        Loop with condition tested first

 0:38          Loop Condition

-0:38          Compare Not Equal (bool)

-0:38            'a' (highp float)

+0:38          Compare Not Equal (temp bool)

+0:38            'a' (temp highp float)

 0:38            Constant:

 0:38              20.000000

 0:38          Loop Body

 0:38          Sequence

-0:38            Test condition and select (void)

+0:38            Test condition and select (temp void)

 0:38              Condition

-0:38              Compare Equal (bool)

-0:38                'ga' (highp int)

+0:38              Compare Equal (temp bool)

+0:38                'ga' (global highp int)

 0:38                Constant:

 0:38                  0 (const int)

 0:38              true case

-0:38              move second child to first child (highp int)

-0:38                'ga' (highp int)

+0:38              move second child to first child (temp highp int)

+0:38                'ga' (global highp int)

 0:38                Constant:

 0:38                  4 (const int)

 0:38          Loop Terminal Expression

-0:38          subtract second child into first child (highp float)

-0:38            'a' (highp float)

+0:38          subtract second child into first child (temp highp float)

+0:38            'a' (temp highp float)

 0:38            Constant:

 0:38              2.000000

 0:39      Sequence

 0:39        Sequence

-0:39          move second child to first child (highp float)

-0:39            'a' (highp float)

+0:39          move second child to first child (temp highp float)

+0:39            'a' (temp highp float)

 0:39            Constant:

 0:39              0.000000

 0:39        Loop with condition tested first

 0:39          Loop Condition

-0:39          Compare Equal (bool)

-0:39            'a' (highp float)

+0:39          Compare Equal (temp bool)

+0:39            'a' (temp highp float)

 0:39            Constant:

 0:39              20.000000

 0:39          Loop Body

 0:39          Sequence

 0:39            Sequence

-0:39              move second child to first child (highp float)

-0:39                'a' (highp float)

+0:39              move second child to first child (temp highp float)

+0:39                'a' (temp highp float)

 0:39                Constant:

 0:39                  0.000000

 0:39            Loop with condition tested first

 0:39              Loop Condition

-0:39              Compare Equal (bool)

-0:39                'a' (highp float)

+0:39              Compare Equal (temp bool)

+0:39                'a' (temp highp float)

 0:39                Constant:

 0:39                  20.000000

 0:39              No loop body

 0:39              Loop Terminal Expression

-0:39              Post-Decrement (highp float)

-0:39                'a' (highp float)

+0:39              Post-Decrement (temp highp float)

+0:39                'a' (temp highp float)

 0:39          Loop Terminal Expression

-0:39          Post-Decrement (highp float)

-0:39            'a' (highp float)

+0:39          Post-Decrement (temp highp float)

+0:39            'a' (temp highp float)

 0:40      Sequence

 0:40        Sequence

-0:40          move second child to first child (highp float)

-0:40            'a' (highp float)

+0:40          move second child to first child (temp highp float)

+0:40            'a' (temp highp float)

 0:40            Constant:

 0:40              0.000000

 0:40        Loop with condition tested first

 0:40          Loop Condition

-0:40          Compare Less Than or Equal (bool)

-0:40            'a' (highp float)

+0:40          Compare Less Than or Equal (temp bool)

+0:40            'a' (temp highp float)

 0:40            Constant:

 0:40              20.000000

 0:40          No loop body

 0:40          Loop Terminal Expression

-0:40          add second child into first child (highp float)

-0:40            'a' (highp float)

+0:40          add second child into first child (temp highp float)

+0:40            'a' (temp highp float)

 0:40            Constant:

 0:40              2.000000

 0:41      Sequence

 0:41        Sequence

-0:41          move second child to first child (highp float)

-0:41            'a' (highp float)

+0:41          move second child to first child (temp highp float)

+0:41            'a' (temp highp float)

 0:41            Constant:

 0:41              0.000000

 0:41        Loop with condition tested first

 0:41          Loop Condition

-0:41          Compare Less Than or Equal (bool)

-0:41            'a' (highp float)

+0:41          Compare Less Than or Equal (temp bool)

+0:41            'a' (temp highp float)

 0:41            Constant:

 0:41              20.000000

 0:41          No loop body

 0:41          Loop Terminal Expression

-0:41          add second child into first child (highp float)

-0:41            'a' (highp float)

+0:41          add second child into first child (temp highp float)

+0:41            'a' (temp highp float)

 0:41            Constant:

 0:41              2.000000

 0:42      Sequence

 0:42        Sequence

-0:42          move second child to first child (highp float)

-0:42            'a' (highp float)

+0:42          move second child to first child (temp highp float)

+0:42            'a' (temp highp float)

 0:42            Constant:

 0:42              0.000000

 0:42        Loop with condition tested first

 0:42          Loop Condition

-0:42          Compare Greater Than (bool)

-0:42            'a' (highp float)

+0:42          Compare Greater Than (temp bool)

+0:42            'a' (temp highp float)

 0:42            Constant:

 0:42              40.000000

 0:42          No loop body

 0:42          Loop Terminal Expression

-0:42          add second child into first child (highp float)

-0:42            'a' (highp float)

+0:42          add second child into first child (temp highp float)

+0:42            'a' (temp highp float)

 0:42            Constant:

 0:42              2.000000

 0:43      Sequence

 0:43        Sequence

-0:43          move second child to first child (highp float)

-0:43            'a' (highp float)

+0:43          move second child to first child (temp highp float)

+0:43            'a' (temp highp float)

 0:43            Constant:

 0:43              0.000000

 0:43        Loop with condition tested first

 0:43          Loop Condition

-0:43          Compare Greater Than or Equal (bool)

-0:43            'a' (highp float)

+0:43          Compare Greater Than or Equal (temp bool)

+0:43            'a' (temp highp float)

 0:43            Constant:

 0:43              20.000000

 0:43          Loop Body

-0:43          Function Call: foo(f1; (void)

-0:43            'a' (highp float)

+0:43          Function Call: foo(f1; (global void)

+0:43            'a' (temp highp float)

 0:43          Loop Terminal Expression

-0:43          add second child into first child (highp float)

-0:43            'a' (highp float)

+0:43          add second child into first child (temp highp float)

+0:43            'a' (temp highp float)

 0:43            Constant:

 0:43              2.000000

-0:47      indirect index (lowp sampler2D)

+0:47      indirect index (temp lowp sampler2D)

 0:47        'fsa' (uniform 3-element array of lowp sampler2D)

-0:47        'ga' (highp int)

-0:48      indirect index (highp float)

+0:47        'ga' (global highp int)

+0:48      indirect index (temp highp float)

 0:48        'fua' (uniform 10-element array of highp float)

-0:48        'ga' (highp int)

-0:49      indirect index (highp 3-component vector of float)

+0:48        'ga' (global highp int)

+0:49      indirect index (temp highp 3-component vector of float)

 0:49        'am3' (in highp 3X3 matrix of float)

-0:49        'ga' (highp int)

-0:50      indirect index (highp float)

+0:49        'ga' (global highp int)

+0:50      indirect index (temp highp float)

 0:50        'av2' (in highp 2-component vector of float)

-0:50        'ga' (highp int)

-0:51      indirect index (smooth highp 4-component vector of float)

+0:50        'ga' (global highp int)

+0:51      indirect index (smooth temp highp 4-component vector of float)

 0:51        'va' (smooth out 4-element array of highp 4-component vector of float)

-0:51        add (highp int)

+0:51        add (temp highp int)

 0:51          Constant:

 0:51            2 (const int)

-0:51          'ga' (highp int)

-0:52      indirect index (highp 2-component vector of float)

+0:51          'ga' (global highp int)

+0:52      indirect index (temp highp 2-component vector of float)

 0:52        Constant:

 0:52          1.000000

 0:52          0.000000

 0:52          0.000000

 0:52          1.000000

-0:52        'ga' (highp int)

-0:53      indirect index (highp float)

+0:52        'ga' (global highp int)

+0:53      indirect index (temp highp float)

 0:53        Constant:

 0:53          2.000000

 0:53          2.000000

 0:53          2.000000

-0:53        divide (highp int)

-0:53          'ga' (highp int)

+0:53        divide (temp highp int)

+0:53          'ga' (global highp int)

 0:53          Constant:

 0:53            2 (const int)

-0:54      indirect index (highp int)

-0:54        'ia' (9-element array of highp int)

-0:54        'ga' (highp int)

+0:54      indirect index (temp highp int)

+0:54        'ia' (temp 9-element array of highp int)

+0:54        'ga' (global highp int)

 0:56      Sequence

 0:56        Sequence

-0:56          move second child to first child (highp int)

-0:56            'a' (highp int)

+0:56          move second child to first child (temp highp int)

+0:56            'a' (temp highp int)

 0:56            Constant:

 0:56              3 (const int)

 0:56        Loop with condition tested first

 0:56          Loop Condition

-0:56          Compare Greater Than or Equal (bool)

-0:56            'a' (highp int)

+0:56          Compare Greater Than or Equal (temp bool)

+0:56            'a' (temp highp int)

 0:56            Constant:

 0:56              0 (const int)

 0:56          Loop Body

 0:57          Sequence

-0:57            indirect index (lowp sampler2D)

+0:57            indirect index (temp lowp sampler2D)

 0:57              'fsa' (uniform 3-element array of lowp sampler2D)

-0:57              'a' (highp int)

-0:58            indirect index (highp float)

+0:57              'a' (temp highp int)

+0:58            indirect index (temp highp float)

 0:58              'fua' (uniform 10-element array of highp float)

-0:58              add (highp int)

-0:58                'a' (highp int)

+0:58              add (temp highp int)

+0:58                'a' (temp highp int)

 0:58                Constant:

 0:58                  2 (const int)

-0:59            indirect index (highp 3-component vector of float)

+0:59            indirect index (temp highp 3-component vector of float)

 0:59              'am3' (in highp 3X3 matrix of float)

-0:59              component-wise multiply (highp int)

+0:59              component-wise multiply (temp highp int)

 0:59                Constant:

 0:59                  3 (const int)

-0:59                'a' (highp int)

-0:60            indirect index (highp float)

+0:59                'a' (temp highp int)

+0:60            indirect index (temp highp float)

 0:60              'av2' (in highp 2-component vector of float)

-0:60              component-wise multiply (highp int)

+0:60              component-wise multiply (temp highp int)

 0:60                Constant:

 0:60                  3 (const int)

-0:60                'a' (highp int)

-0:61            indirect index (smooth highp 4-component vector of float)

+0:60                'a' (temp highp int)

+0:61            indirect index (smooth temp highp 4-component vector of float)

 0:61              'va' (smooth out 4-element array of highp 4-component vector of float)

-0:61              subtract (highp int)

-0:61                'a' (highp int)

+0:61              subtract (temp highp int)

+0:61                'a' (temp highp int)

 0:61                Constant:

 0:61                  1 (const int)

-0:62            indirect index (highp 2-component vector of float)

+0:62            indirect index (temp highp 2-component vector of float)

 0:62              Constant:

 0:62                1.000000

 0:62                0.000000

 0:62                0.000000

 0:62                1.000000

-0:62              divide (highp int)

-0:62                'a' (highp int)

+0:62              divide (temp highp int)

+0:62                'a' (temp highp int)

 0:62                Constant:

 0:62                  2 (const int)

-0:63            indirect index (highp float)

+0:63            indirect index (temp highp float)

 0:63              Constant:

 0:63                2.000000

 0:63                2.000000

 0:63                2.000000

-0:63              'a' (highp int)

-0:64            indirect index (highp int)

-0:64              'ia' (9-element array of highp int)

-0:64              'a' (highp int)

-0:65            indirect index (highp int)

-0:65              'ia' (9-element array of highp int)

-0:65              Function Call: bar( (highp int)

+0:63              'a' (temp highp int)

+0:64            indirect index (temp highp int)

+0:64              'ia' (temp 9-element array of highp int)

+0:64              'a' (temp highp int)

+0:65            indirect index (temp highp int)

+0:65              'ia' (temp 9-element array of highp int)

+0:65              Function Call: bar( (global highp int)

 0:56          Loop Terminal Expression

-0:56          Post-Decrement (highp int)

-0:56            'a' (highp int)

-0:68      direct index (lowp sampler2D)

+0:56          Post-Decrement (temp highp int)

+0:56            'a' (temp highp int)

+0:68      direct index (temp lowp sampler2D)

 0:68        'fsa' (uniform 3-element array of lowp sampler2D)

 0:68        Constant:

 0:68          2 (const int)

-0:69      direct index (highp float)

+0:69      direct index (temp highp float)

 0:69        'fua' (uniform 10-element array of highp float)

 0:69        Constant:

 0:69          3 (const int)

-0:70      direct index (highp 3-component vector of float)

+0:70      direct index (temp highp 3-component vector of float)

 0:70        'am3' (in highp 3X3 matrix of float)

 0:70        Constant:

 0:70          2 (const int)

-0:71      direct index (highp float)

+0:71      direct index (temp highp float)

 0:71        'av2' (in highp 2-component vector of float)

 0:71        Constant:

 0:71          1 (const int)

-0:72      direct index (smooth highp 4-component vector of float)

+0:72      direct index (smooth temp highp 4-component vector of float)

 0:72        'va' (smooth out 4-element array of highp 4-component vector of float)

 0:72        Constant:

 0:72          1 (const int)

@@ -865,14 +865,14 @@
 0:73        1.000000

 0:74      Constant:

 0:74        2.000000

-0:75      direct index (highp int)

-0:75        'ia' (9-element array of highp int)

+0:75      direct index (temp highp int)

+0:75        'ia' (temp 9-element array of highp int)

 0:75        Constant:

 0:75          3 (const int)

 0:?   Linker Objects

-0:?     'ga' (highp int)

-0:?     'gb' (highp int)

-0:?     'f' (highp float)

+0:?     'ga' (global highp int)

+0:?     'gb' (global highp int)

+0:?     'f' (global highp float)

 0:?     'fsa' (uniform 3-element array of lowp sampler2D)

 0:?     'fua' (uniform 10-element array of highp float)

 0:?     'am3' (in highp 3X3 matrix of float)

diff --git a/Test/baseResults/100scope.vert.out b/Test/baseResults/100scope.vert.out
index fda627c..76749e7 100644
--- a/Test/baseResults/100scope.vert.out
+++ b/Test/baseResults/100scope.vert.out
@@ -16,7 +16,7 @@
 

 Shader version: 100

 ERROR: node is still EOpNull!

-0:3  Function Definition: f(i1;i1;i1; (highp int)

+0:3  Function Definition: f(i1;i1;i1; (global highp int)

 0:3    Function Parameters: 

 0:3      'a' (in highp int)

 0:3      'b' (in highp int)

@@ -24,104 +24,104 @@
 0:?     Sequence

 0:8      Sequence

 0:8        Sequence

-0:8          move second child to first child (highp float)

-0:8            'a' (highp float)

-0:8            add (highp float)

-0:8              Convert int to float (highp float)

+0:8          move second child to first child (temp highp float)

+0:8            'a' (temp highp float)

+0:8            add (temp highp float)

+0:8              Convert int to float (temp highp float)

 0:8                'a' (in highp int)

 0:8              Constant:

 0:8                1.000000

 0:11      Branch: Return with expression

 0:11        'a' (in highp int)

-0:25  Function Definition: cos(f1; (highp float)

+0:25  Function Definition: cos(f1; (global highp float)

 0:25    Function Parameters: 

 0:25      'x' (in highp float)

 0:27    Sequence

 0:27      Branch: Return with expression

 0:27        Constant:

 0:27          1.000000

-0:29  Function Definition: radians(b1; (bool)

+0:29  Function Definition: radians(b1; (global bool)

 0:29    Function Parameters: 

 0:29      'x' (in bool)

 0:31    Sequence

 0:31      Branch: Return with expression

 0:31        Constant:

 0:31          true (const bool)

-0:36  Function Definition: main( (void)

+0:36  Function Definition: main( (global void)

 0:36    Function Parameters: 

 0:?     Sequence

-0:39      Function Call: g( (highp int)

-0:42      'sin' (highp float)

+0:39      Function Call: g( (temp highp int)

+0:42      'sin' (temp highp float)

 0:43      Constant:

 0:43        0.000000

-0:44      Function Call: f(i1;i1;i1; (highp int)

+0:44      Function Call: f(i1;i1;i1; (global highp int)

 0:44        Constant:

 0:44          1 (const int)

 0:44        Constant:

 0:44          2 (const int)

 0:44        Constant:

 0:44          3 (const int)

-0:47      move second child to first child (highp float)

-0:47        'f' (highp float)

+0:47      move second child to first child (temp highp float)

+0:47        'f' (temp highp float)

 0:47        Constant:

 0:47          3.000000

-0:49      move second child to first child (highp 4-component vector of float)

+0:49      move second child to first child (temp highp 4-component vector of float)

 0:49        'gl_Position' (invariant gl_Position highp 4-component vector of float)

-0:49        Construct vec4 (highp 4-component vector of float)

-0:49          'f' (highp float)

+0:49        Construct vec4 (temp highp 4-component vector of float)

+0:49          'f' (temp highp float)

 0:51      Sequence

 0:51        Sequence

-0:51          move second child to first child (highp int)

-0:51            'f' (highp int)

+0:51          move second child to first child (temp highp int)

+0:51            'f' (temp highp int)

 0:51            Constant:

 0:51              0 (const int)

 0:51        Loop with condition tested first

 0:51          Loop Condition

-0:51          Compare Less Than (bool)

-0:51            'f' (highp int)

+0:51          Compare Less Than (temp bool)

+0:51            'f' (temp highp int)

 0:51            Constant:

 0:51              10 (const int)

 0:51          Loop Body

-0:52          Pre-Increment (highp int)

-0:52            'f' (highp int)

+0:52          Pre-Increment (temp highp int)

+0:52            'f' (temp highp int)

 0:51          Loop Terminal Expression

-0:51          Pre-Increment (highp int)

-0:51            'f' (highp int)

+0:51          Pre-Increment (temp highp int)

+0:51            'f' (temp highp int)

 0:54      Sequence

-0:54        move second child to first child (highp int)

-0:54          'x' (highp int)

+0:54        move second child to first child (temp highp int)

+0:54          'x' (temp highp int)

 0:54          Constant:

 0:54            1 (const int)

 0:56      Sequence

 0:56        Sequence

-0:56          move second child to first child (highp float)

-0:56            'x' (highp float)

+0:56          move second child to first child (temp highp float)

+0:56            'x' (temp highp float)

 0:56            Constant:

 0:56              2.000000

-0:56          move second child to first child (highp float)

-0:56            'y' (highp float)

-0:56            'x' (highp float)

+0:56          move second child to first child (temp highp float)

+0:56            'y' (temp highp float)

+0:56            'x' (temp highp float)

 0:60      Sequence

 0:60        Sequence

-0:60          move second child to first child (highp int)

-0:60            'x' (highp int)

-0:60            'x' (highp int)

+0:60          move second child to first child (temp highp int)

+0:60            'x' (temp highp int)

+0:60            'x' (temp highp int)

 0:68      Sequence

 0:68        Sequence

-0:68          move second child to first child (structure{highp int x})

-0:68            'S' (structure{highp int x})

+0:68          move second child to first child (temp structure{temp highp int x})

+0:68            'S' (temp structure{temp highp int x})

 0:68            Constant:

 0:68              0 (const int)

-0:69        x: direct index for structure (highp int)

-0:69          'S' (structure{highp int x})

+0:69        x: direct index for structure (temp highp int)

+0:69          'S' (temp structure{temp highp int x})

 0:69          Constant:

 0:69            0 (const int)

 0:73      Constant:

 0:73        0.000000

 0:?   Linker Objects

-0:?     'b' (bool)

-0:?     'tan' (highp float)

-0:?     's' (smooth out structure{highp float f})

+0:?     'b' (global bool)

+0:?     'tan' (global highp float)

+0:?     's' (smooth out structure{global highp float f})

 

 

 Linked vertex stage:

@@ -129,7 +129,7 @@
 

 Shader version: 100

 ERROR: node is still EOpNull!

-0:3  Function Definition: f(i1;i1;i1; (highp int)

+0:3  Function Definition: f(i1;i1;i1; (global highp int)

 0:3    Function Parameters: 

 0:3      'a' (in highp int)

 0:3      'b' (in highp int)

@@ -137,102 +137,102 @@
 0:?     Sequence

 0:8      Sequence

 0:8        Sequence

-0:8          move second child to first child (highp float)

-0:8            'a' (highp float)

-0:8            add (highp float)

-0:8              Convert int to float (highp float)

+0:8          move second child to first child (temp highp float)

+0:8            'a' (temp highp float)

+0:8            add (temp highp float)

+0:8              Convert int to float (temp highp float)

 0:8                'a' (in highp int)

 0:8              Constant:

 0:8                1.000000

 0:11      Branch: Return with expression

 0:11        'a' (in highp int)

-0:25  Function Definition: cos(f1; (highp float)

+0:25  Function Definition: cos(f1; (global highp float)

 0:25    Function Parameters: 

 0:25      'x' (in highp float)

 0:27    Sequence

 0:27      Branch: Return with expression

 0:27        Constant:

 0:27          1.000000

-0:29  Function Definition: radians(b1; (bool)

+0:29  Function Definition: radians(b1; (global bool)

 0:29    Function Parameters: 

 0:29      'x' (in bool)

 0:31    Sequence

 0:31      Branch: Return with expression

 0:31        Constant:

 0:31          true (const bool)

-0:36  Function Definition: main( (void)

+0:36  Function Definition: main( (global void)

 0:36    Function Parameters: 

 0:?     Sequence

-0:39      Function Call: g( (highp int)

-0:42      'sin' (highp float)

+0:39      Function Call: g( (temp highp int)

+0:42      'sin' (temp highp float)

 0:43      Constant:

 0:43        0.000000

-0:44      Function Call: f(i1;i1;i1; (highp int)

+0:44      Function Call: f(i1;i1;i1; (global highp int)

 0:44        Constant:

 0:44          1 (const int)

 0:44        Constant:

 0:44          2 (const int)

 0:44        Constant:

 0:44          3 (const int)

-0:47      move second child to first child (highp float)

-0:47        'f' (highp float)

+0:47      move second child to first child (temp highp float)

+0:47        'f' (temp highp float)

 0:47        Constant:

 0:47          3.000000

-0:49      move second child to first child (highp 4-component vector of float)

+0:49      move second child to first child (temp highp 4-component vector of float)

 0:49        'gl_Position' (invariant gl_Position highp 4-component vector of float)

-0:49        Construct vec4 (highp 4-component vector of float)

-0:49          'f' (highp float)

+0:49        Construct vec4 (temp highp 4-component vector of float)

+0:49          'f' (temp highp float)

 0:51      Sequence

 0:51        Sequence

-0:51          move second child to first child (highp int)

-0:51            'f' (highp int)

+0:51          move second child to first child (temp highp int)

+0:51            'f' (temp highp int)

 0:51            Constant:

 0:51              0 (const int)

 0:51        Loop with condition tested first

 0:51          Loop Condition

-0:51          Compare Less Than (bool)

-0:51            'f' (highp int)

+0:51          Compare Less Than (temp bool)

+0:51            'f' (temp highp int)

 0:51            Constant:

 0:51              10 (const int)

 0:51          Loop Body

-0:52          Pre-Increment (highp int)

-0:52            'f' (highp int)

+0:52          Pre-Increment (temp highp int)

+0:52            'f' (temp highp int)

 0:51          Loop Terminal Expression

-0:51          Pre-Increment (highp int)

-0:51            'f' (highp int)

+0:51          Pre-Increment (temp highp int)

+0:51            'f' (temp highp int)

 0:54      Sequence

-0:54        move second child to first child (highp int)

-0:54          'x' (highp int)

+0:54        move second child to first child (temp highp int)

+0:54          'x' (temp highp int)

 0:54          Constant:

 0:54            1 (const int)

 0:56      Sequence

 0:56        Sequence

-0:56          move second child to first child (highp float)

-0:56            'x' (highp float)

+0:56          move second child to first child (temp highp float)

+0:56            'x' (temp highp float)

 0:56            Constant:

 0:56              2.000000

-0:56          move second child to first child (highp float)

-0:56            'y' (highp float)

-0:56            'x' (highp float)

+0:56          move second child to first child (temp highp float)

+0:56            'y' (temp highp float)

+0:56            'x' (temp highp float)

 0:60      Sequence

 0:60        Sequence

-0:60          move second child to first child (highp int)

-0:60            'x' (highp int)

-0:60            'x' (highp int)

+0:60          move second child to first child (temp highp int)

+0:60            'x' (temp highp int)

+0:60            'x' (temp highp int)

 0:68      Sequence

 0:68        Sequence

-0:68          move second child to first child (structure{highp int x})

-0:68            'S' (structure{highp int x})

+0:68          move second child to first child (temp structure{temp highp int x})

+0:68            'S' (temp structure{temp highp int x})

 0:68            Constant:

 0:68              0 (const int)

-0:69        x: direct index for structure (highp int)

-0:69          'S' (structure{highp int x})

+0:69        x: direct index for structure (temp highp int)

+0:69          'S' (temp structure{temp highp int x})

 0:69          Constant:

 0:69            0 (const int)

 0:73      Constant:

 0:73        0.000000

 0:?   Linker Objects

-0:?     'b' (bool)

-0:?     'tan' (highp float)

-0:?     's' (smooth out structure{highp float f})

+0:?     'b' (global bool)

+0:?     'tan' (global highp float)

+0:?     's' (smooth out structure{global highp float f})

 

diff --git a/Test/baseResults/110scope.vert.out b/Test/baseResults/110scope.vert.out
index 9a1827b..d2be073 100644
--- a/Test/baseResults/110scope.vert.out
+++ b/Test/baseResults/110scope.vert.out
@@ -7,7 +7,7 @@
 

 Shader version: 110

 ERROR: node is still EOpNull!

-0:3  Function Definition: f(i1;i1;i1; (int)

+0:3  Function Definition: f(i1;i1;i1; (global int)

 0:3    Function Parameters: 

 0:3      'a' (in int)

 0:3      'b' (in int)

@@ -15,106 +15,106 @@
 0:?     Sequence

 0:8      Sequence

 0:8        Sequence

-0:8          move second child to first child (float)

-0:8            'a' (float)

-0:8            add (float)

-0:8              Convert int to float (float)

+0:8          move second child to first child (temp float)

+0:8            'a' (temp float)

+0:8            add (temp float)

+0:8              Convert int to float (temp float)

 0:8                'a' (in int)

 0:8              Constant:

 0:8                1.000000

 0:11      Branch: Return with expression

 0:11        'a' (in int)

-0:25  Function Definition: cos(f1; (float)

+0:25  Function Definition: cos(f1; (global float)

 0:25    Function Parameters: 

 0:25      'x' (in float)

 0:27    Sequence

 0:27      Branch: Return with expression

 0:27        Constant:

 0:27          1.000000

-0:29  Function Definition: radians(b1; (bool)

+0:29  Function Definition: radians(b1; (global bool)

 0:29    Function Parameters: 

 0:29      'x' (in bool)

 0:31    Sequence

 0:31      Branch: Return with expression

 0:31        Constant:

 0:31          true (const bool)

-0:36  Function Definition: main( (void)

+0:36  Function Definition: main( (global void)

 0:36    Function Parameters: 

 0:?     Sequence

-0:39      Function Call: g( (int)

-0:42      'sin' (float)

-0:43      Function Call: sin(f1; (float)

+0:39      Function Call: g( (temp int)

+0:42      'sin' (temp float)

+0:43      Function Call: sin(f1; (global float)

 0:43        Constant:

 0:43          0.700000

-0:44      Function Call: f(i1;i1;i1; (int)

+0:44      Function Call: f(i1;i1;i1; (global int)

 0:44        Constant:

 0:44          1 (const int)

 0:44        Constant:

 0:44          2 (const int)

 0:44        Constant:

 0:44          3 (const int)

-0:47      move second child to first child (float)

-0:47        'f' (float)

+0:47      move second child to first child (temp float)

+0:47        'f' (temp float)

 0:47        Constant:

 0:47          3.000000

-0:49      move second child to first child (4-component vector of float)

+0:49      move second child to first child (temp 4-component vector of float)

 0:49        'gl_Position' (gl_Position 4-component vector of float)

-0:49        Construct vec4 (4-component vector of float)

-0:49          'f' (float)

+0:49        Construct vec4 (temp 4-component vector of float)

+0:49          'f' (temp float)

 0:51      Sequence

 0:51        Sequence

-0:51          move second child to first child (int)

-0:51            'f' (int)

+0:51          move second child to first child (temp int)

+0:51            'f' (temp int)

 0:51            Constant:

 0:51              0 (const int)

 0:51        Loop with condition tested first

 0:51          Loop Condition

-0:51          Compare Less Than (bool)

-0:51            'f' (int)

+0:51          Compare Less Than (temp bool)

+0:51            'f' (temp int)

 0:51            Constant:

 0:51              10 (const int)

 0:51          Loop Body

-0:52          Pre-Increment (int)

-0:52            'f' (int)

+0:52          Pre-Increment (temp int)

+0:52            'f' (temp int)

 0:51          Loop Terminal Expression

-0:51          Pre-Increment (int)

-0:51            'f' (int)

+0:51          Pre-Increment (temp int)

+0:51            'f' (temp int)

 0:54      Sequence

-0:54        move second child to first child (int)

-0:54          'x' (int)

+0:54        move second child to first child (temp int)

+0:54          'x' (temp int)

 0:54          Constant:

 0:54            1 (const int)

 0:56      Sequence

 0:56        Sequence

-0:56          move second child to first child (float)

-0:56            'x' (float)

+0:56          move second child to first child (temp float)

+0:56            'x' (temp float)

 0:56            Constant:

 0:56              2.000000

-0:56          move second child to first child (float)

-0:56            'y' (float)

-0:56            'x' (float)

+0:56          move second child to first child (temp float)

+0:56            'y' (temp float)

+0:56            'x' (temp float)

 0:60      Sequence

 0:60        Sequence

-0:60          move second child to first child (int)

-0:60            'x' (int)

-0:60            'x' (int)

+0:60          move second child to first child (temp int)

+0:60            'x' (temp int)

+0:60            'x' (temp int)

 0:68      Sequence

 0:68        Sequence

-0:68          move second child to first child (structure{int x})

-0:68            'S' (structure{int x})

+0:68          move second child to first child (temp structure{temp int x})

+0:68            'S' (temp structure{temp int x})

 0:68            Constant:

 0:68              0 (const int)

-0:69        x: direct index for structure (int)

-0:69          'S' (structure{int x})

+0:69        x: direct index for structure (temp int)

+0:69          'S' (temp structure{temp int x})

 0:69          Constant:

 0:69            0 (const int)

 0:73      Constant:

 0:73        183.346494

 0:?   Linker Objects

-0:?     'b' (bool)

-0:?     'c' (bool)

-0:?     'f' (float)

-0:?     'tan' (float)

+0:?     'b' (global bool)

+0:?     'c' (global bool)

+0:?     'f' (global float)

+0:?     'tan' (global float)

 

 

 Linked vertex stage:

@@ -122,7 +122,7 @@
 

 Shader version: 110

 ERROR: node is still EOpNull!

-0:3  Function Definition: f(i1;i1;i1; (int)

+0:3  Function Definition: f(i1;i1;i1; (global int)

 0:3    Function Parameters: 

 0:3      'a' (in int)

 0:3      'b' (in int)

@@ -130,104 +130,104 @@
 0:?     Sequence

 0:8      Sequence

 0:8        Sequence

-0:8          move second child to first child (float)

-0:8            'a' (float)

-0:8            add (float)

-0:8              Convert int to float (float)

+0:8          move second child to first child (temp float)

+0:8            'a' (temp float)

+0:8            add (temp float)

+0:8              Convert int to float (temp float)

 0:8                'a' (in int)

 0:8              Constant:

 0:8                1.000000

 0:11      Branch: Return with expression

 0:11        'a' (in int)

-0:25  Function Definition: cos(f1; (float)

+0:25  Function Definition: cos(f1; (global float)

 0:25    Function Parameters: 

 0:25      'x' (in float)

 0:27    Sequence

 0:27      Branch: Return with expression

 0:27        Constant:

 0:27          1.000000

-0:29  Function Definition: radians(b1; (bool)

+0:29  Function Definition: radians(b1; (global bool)

 0:29    Function Parameters: 

 0:29      'x' (in bool)

 0:31    Sequence

 0:31      Branch: Return with expression

 0:31        Constant:

 0:31          true (const bool)

-0:36  Function Definition: main( (void)

+0:36  Function Definition: main( (global void)

 0:36    Function Parameters: 

 0:?     Sequence

-0:39      Function Call: g( (int)

-0:42      'sin' (float)

-0:43      Function Call: sin(f1; (float)

+0:39      Function Call: g( (temp int)

+0:42      'sin' (temp float)

+0:43      Function Call: sin(f1; (global float)

 0:43        Constant:

 0:43          0.700000

-0:44      Function Call: f(i1;i1;i1; (int)

+0:44      Function Call: f(i1;i1;i1; (global int)

 0:44        Constant:

 0:44          1 (const int)

 0:44        Constant:

 0:44          2 (const int)

 0:44        Constant:

 0:44          3 (const int)

-0:47      move second child to first child (float)

-0:47        'f' (float)

+0:47      move second child to first child (temp float)

+0:47        'f' (temp float)

 0:47        Constant:

 0:47          3.000000

-0:49      move second child to first child (4-component vector of float)

+0:49      move second child to first child (temp 4-component vector of float)

 0:49        'gl_Position' (gl_Position 4-component vector of float)

-0:49        Construct vec4 (4-component vector of float)

-0:49          'f' (float)

+0:49        Construct vec4 (temp 4-component vector of float)

+0:49          'f' (temp float)

 0:51      Sequence

 0:51        Sequence

-0:51          move second child to first child (int)

-0:51            'f' (int)

+0:51          move second child to first child (temp int)

+0:51            'f' (temp int)

 0:51            Constant:

 0:51              0 (const int)

 0:51        Loop with condition tested first

 0:51          Loop Condition

-0:51          Compare Less Than (bool)

-0:51            'f' (int)

+0:51          Compare Less Than (temp bool)

+0:51            'f' (temp int)

 0:51            Constant:

 0:51              10 (const int)

 0:51          Loop Body

-0:52          Pre-Increment (int)

-0:52            'f' (int)

+0:52          Pre-Increment (temp int)

+0:52            'f' (temp int)

 0:51          Loop Terminal Expression

-0:51          Pre-Increment (int)

-0:51            'f' (int)

+0:51          Pre-Increment (temp int)

+0:51            'f' (temp int)

 0:54      Sequence

-0:54        move second child to first child (int)

-0:54          'x' (int)

+0:54        move second child to first child (temp int)

+0:54          'x' (temp int)

 0:54          Constant:

 0:54            1 (const int)

 0:56      Sequence

 0:56        Sequence

-0:56          move second child to first child (float)

-0:56            'x' (float)

+0:56          move second child to first child (temp float)

+0:56            'x' (temp float)

 0:56            Constant:

 0:56              2.000000

-0:56          move second child to first child (float)

-0:56            'y' (float)

-0:56            'x' (float)

+0:56          move second child to first child (temp float)

+0:56            'y' (temp float)

+0:56            'x' (temp float)

 0:60      Sequence

 0:60        Sequence

-0:60          move second child to first child (int)

-0:60            'x' (int)

-0:60            'x' (int)

+0:60          move second child to first child (temp int)

+0:60            'x' (temp int)

+0:60            'x' (temp int)

 0:68      Sequence

 0:68        Sequence

-0:68          move second child to first child (structure{int x})

-0:68            'S' (structure{int x})

+0:68          move second child to first child (temp structure{temp int x})

+0:68            'S' (temp structure{temp int x})

 0:68            Constant:

 0:68              0 (const int)

-0:69        x: direct index for structure (int)

-0:69          'S' (structure{int x})

+0:69        x: direct index for structure (temp int)

+0:69          'S' (temp structure{temp int x})

 0:69          Constant:

 0:69            0 (const int)

 0:73      Constant:

 0:73        183.346494

 0:?   Linker Objects

-0:?     'b' (bool)

-0:?     'c' (bool)

-0:?     'f' (float)

-0:?     'tan' (float)

+0:?     'b' (global bool)

+0:?     'c' (global bool)

+0:?     'f' (global float)

+0:?     'tan' (global float)

 

diff --git a/Test/baseResults/120.frag.out b/Test/baseResults/120.frag.out
index d82b91b..804aca1 100644
--- a/Test/baseResults/120.frag.out
+++ b/Test/baseResults/120.frag.out
@@ -1,20 +1,20 @@
 120.frag

 ERROR: 0:9: 'in for stage inputs' : not supported for this version or the enabled extensions 

 ERROR: 0:10: 'out for stage outputs' : not supported for this version or the enabled extensions 

-ERROR: 0:54: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type '2-component vector of float' and a right operand of type '3-component vector of float' (or there is no acceptable conversion)

-ERROR: 0:55: '*' :  wrong operand types: no operation '*' exists that takes a left-hand operand of type 'uniform 4X2 matrix of float' and a right operand of type '3-component vector of float' (or there is no acceptable conversion)

+ERROR: 0:54: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'temp 2-component vector of float' and a right operand of type 'temp 3-component vector of float' (or there is no acceptable conversion)

+ERROR: 0:55: '*' :  wrong operand types: no operation '*' exists that takes a left-hand operand of type 'uniform 4X2 matrix of float' and a right operand of type 'temp 3-component vector of float' (or there is no acceptable conversion)

 ERROR: 0:56: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'uniform 4X2 matrix of float' and a right operand of type 'smooth in 4-component vector of float' (or there is no acceptable conversion)

-ERROR: 0:57: '=' :  cannot convert from 'const float' to 'int'

-ERROR: 0:58: 'assign' :  cannot convert from 'bool' to 'float'

-ERROR: 0:59: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'int' and a right operand of type 'bool' (or there is no acceptable conversion)

-ERROR: 0:60: '*' :  wrong operand types: no operation '*' exists that takes a left-hand operand of type 'bool' and a right operand of type 'int' (or there is no acceptable conversion)

-ERROR: 0:60: 'assign' :  cannot convert from 'bool' to 'float'

-ERROR: 0:61: 'assign' :  cannot convert from 'int' to 'bool'

-ERROR: 0:62: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'bool' and a right operand of type 'float' (or there is no acceptable conversion)

+ERROR: 0:57: '=' :  cannot convert from 'const float' to 'temp int'

+ERROR: 0:58: 'assign' :  cannot convert from 'temp bool' to 'temp float'

+ERROR: 0:59: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'temp int' and a right operand of type 'temp bool' (or there is no acceptable conversion)

+ERROR: 0:60: '*' :  wrong operand types: no operation '*' exists that takes a left-hand operand of type 'temp bool' and a right operand of type 'temp int' (or there is no acceptable conversion)

+ERROR: 0:60: 'assign' :  cannot convert from 'temp bool' to 'temp float'

+ERROR: 0:61: 'assign' :  cannot convert from 'temp int' to 'temp bool'

+ERROR: 0:62: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'temp bool' and a right operand of type 'temp float' (or there is no acceptable conversion)

 ERROR: 0:63: 'bitwise-or assign' : not supported for this version or the enabled extensions 

-ERROR: 0:63: 'assign' :  cannot convert from 'bool' to 'float'

-ERROR: 0:79: ':' :  wrong operand types: no operation ':' exists that takes a left-hand operand of type '4-component vector of float' and a right operand of type '4X4 matrix of float' (or there is no acceptable conversion)

-ERROR: 0:79: 'assign' :  cannot convert from '4X4 matrix of float' to 'fragColor 4-component vector of float'

+ERROR: 0:63: 'assign' :  cannot convert from 'temp bool' to 'temp float'

+ERROR: 0:79: ':' :  wrong operand types: no operation ':' exists that takes a left-hand operand of type 'temp 4-component vector of float' and a right operand of type 'temp 4X4 matrix of float' (or there is no acceptable conversion)

+ERROR: 0:79: 'assign' :  cannot convert from 'temp 4X4 matrix of float' to 'fragColor 4-component vector of float'

 ERROR: 0:82: 'xr' : illegal - vector component fields not from the same set 

 ERROR: 0:83: 'xyxyx' : illegal vector field selection 

 ERROR: 0:83: 'scalar swizzle' : not supported for this version or the enabled extensions 

@@ -31,17 +31,17 @@
 ERROR: 0:115: 'return' : void function cannot return a value 

 ERROR: 0:125: 'gl_TexCoord' : redeclaration of array with size 

 ERROR: 0:152: 'matrixCompMult' : no matching overloaded function found 

-ERROR: 0:152: '=' :  cannot convert from 'const float' to '3X2 matrix of float'

+ERROR: 0:152: '=' :  cannot convert from 'const float' to 'temp 3X2 matrix of float'

 ERROR: 0:153: 'matrixCompMult' : no matching overloaded function found 

-ERROR: 0:153: '=' :  cannot convert from 'const float' to '3X4 matrix of float'

+ERROR: 0:153: '=' :  cannot convert from 'const float' to 'temp 3X4 matrix of float'

 ERROR: 0:160: 'constructor' : not enough data provided for construction 

-ERROR: 0:160: '=' :  cannot convert from 'const float' to '4X4 matrix of float'

+ERROR: 0:160: '=' :  cannot convert from 'const float' to 'temp 4X4 matrix of float'

 ERROR: 0:161: 'constructor' : too many arguments 

-ERROR: 0:161: '=' :  cannot convert from 'const float' to '4X4 matrix of float'

+ERROR: 0:161: '=' :  cannot convert from 'const float' to 'temp 4X4 matrix of float'

 ERROR: 0:165: 'constructor' : matrix constructed from matrix can only have one argument 

 ERROR: 0:166: 'constructor' : matrix constructed from matrix can only have one argument 

 ERROR: 0:172: 'constructor' : array constructor needs one argument per array element 

-ERROR: 0:172: '=' :  cannot convert from 'const float' to '2-element array of 3X3 matrix of float'

+ERROR: 0:172: '=' :  cannot convert from 'const float' to 'temp 2-element array of 3X3 matrix of float'

 ERROR: 0:184: 'texture2DLod' : required extension not requested: GL_ARB_shader_texture_lod

 ERROR: 0:185: 'texture3DProjLod' : required extension not requested: GL_ARB_shader_texture_lod

 ERROR: 0:186: 'texture1DProjLod' : required extension not requested: GL_ARB_shader_texture_lod

@@ -50,7 +50,7 @@
 ERROR: 0:190: 'texture2DProjGradARB' : required extension not requested: GL_ARB_shader_texture_lod

 ERROR: 0:191: 'shadow2DProjGradARB' : required extension not requested: GL_ARB_shader_texture_lod

 ERROR: 0:209: 'shadow2DRectProjGradARB' : no matching overloaded function found 

-ERROR: 0:209: 'assign' :  cannot convert from 'const float' to '4-component vector of float'

+ERROR: 0:209: 'assign' :  cannot convert from 'const float' to 'temp 4-component vector of float'

 ERROR: 0:212: 'sampler2DRect' : Reserved word. 

 ERROR: 53 compilation errors.  No code generated.

 

@@ -59,168 +59,168 @@
 Requested GL_ARB_shader_texture_lod

 Requested GL_ARB_texture_rectangle

 ERROR: node is still EOpNull!

-0:21  Function Definition: main( (void)

+0:21  Function Definition: main( (global void)

 0:21    Function Parameters: 

 0:23    Sequence

 0:23      Sequence

-0:23        move second child to first child (2X3 matrix of float)

-0:23          'm23' (2X3 matrix of float)

-0:23          Construct mat2x3 (2X3 matrix of float)

+0:23        move second child to first child (temp 2X3 matrix of float)

+0:23          'm23' (temp 2X3 matrix of float)

+0:23          Construct mat2x3 (temp 2X3 matrix of float)

 0:23            'm' (uniform 4X2 matrix of float)

 0:27      Sequence

-0:27        move second child to first child (structure{float f})

-0:27          'sv' (structure{float f})

-0:27          Construct structure (structure{float f})

-0:27            Convert int to float (float)

-0:27              'a' (int)

+0:27        move second child to first child (temp structure{global float f})

+0:27          'sv' (temp structure{global float f})

+0:27          Construct structure (temp structure{global float f})

+0:27            Convert int to float (temp float)

+0:27              'a' (temp int)

 0:28      Sequence

-0:28        move second child to first child (2-element array of float)

-0:28          'ia' (2-element array of float)

-0:28          Construct float (2-element array of float)

+0:28        move second child to first child (temp 2-element array of float)

+0:28          'ia' (temp 2-element array of float)

+0:28          Construct float (temp 2-element array of float)

 0:28            Constant:

 0:28              3.000000

-0:28            direct index (float)

+0:28            direct index (temp float)

 0:28              'i' (smooth in 4-component vector of float)

 0:28              Constant:

 0:28                1 (const int)

 0:29      Sequence

-0:29        move second child to first child (float)

-0:29          'f1' (float)

+0:29        move second child to first child (temp float)

+0:29          'f1' (temp float)

 0:29          Constant:

 0:29            1.000000

 0:30      Sequence

-0:30        move second child to first child (float)

-0:30          'f' (float)

-0:30          Convert int to float (float)

-0:30            'a' (int)

-0:31      move second child to first child (float)

-0:31        'f' (float)

-0:31        Convert int to float (float)

-0:31          'a' (int)

+0:30        move second child to first child (temp float)

+0:30          'f' (temp float)

+0:30          Convert int to float (temp float)

+0:30            'a' (temp int)

+0:31      move second child to first child (temp float)

+0:31        'f' (temp float)

+0:31        Convert int to float (temp float)

+0:31          'a' (temp int)

 0:33      Sequence

-0:33        move second child to first child (3-component vector of float)

-0:33          'v3' (3-component vector of float)

-0:33          Convert int to float (3-component vector of float)

-0:33            'iv3' (3-component vector of int)

-0:34      move second child to first child (float)

-0:34        'f' (float)

-0:34        add (float)

-0:34          'f' (float)

-0:34          Convert int to float (float)

-0:34            'a' (int)

-0:35      move second child to first child (float)

-0:35        'f' (float)

-0:35        subtract (float)

-0:35          Convert int to float (float)

-0:35            'a' (int)

-0:35          'f' (float)

-0:36      add second child into first child (float)

-0:36        'f' (float)

-0:36        Convert int to float (float)

-0:36          'a' (int)

-0:37      move second child to first child (float)

-0:37        'f' (float)

-0:37        subtract (float)

-0:37          Convert int to float (float)

-0:37            'a' (int)

-0:37          'f' (float)

-0:38      multiply second child into first child (3-component vector of float)

-0:38        'v3' (3-component vector of float)

-0:38        Convert int to float (3-component vector of float)

-0:38          'iv3' (3-component vector of int)

-0:39      move second child to first child (3-component vector of float)

-0:39        'v3' (3-component vector of float)

-0:39        divide (3-component vector of float)

-0:39          Convert int to float (3-component vector of float)

-0:39            'iv3' (3-component vector of int)

+0:33        move second child to first child (temp 3-component vector of float)

+0:33          'v3' (temp 3-component vector of float)

+0:33          Convert int to float (temp 3-component vector of float)

+0:33            'iv3' (temp 3-component vector of int)

+0:34      move second child to first child (temp float)

+0:34        'f' (temp float)

+0:34        add (temp float)

+0:34          'f' (temp float)

+0:34          Convert int to float (temp float)

+0:34            'a' (temp int)

+0:35      move second child to first child (temp float)

+0:35        'f' (temp float)

+0:35        subtract (temp float)

+0:35          Convert int to float (temp float)

+0:35            'a' (temp int)

+0:35          'f' (temp float)

+0:36      add second child into first child (temp float)

+0:36        'f' (temp float)

+0:36        Convert int to float (temp float)

+0:36          'a' (temp int)

+0:37      move second child to first child (temp float)

+0:37        'f' (temp float)

+0:37        subtract (temp float)

+0:37          Convert int to float (temp float)

+0:37            'a' (temp int)

+0:37          'f' (temp float)

+0:38      multiply second child into first child (temp 3-component vector of float)

+0:38        'v3' (temp 3-component vector of float)

+0:38        Convert int to float (temp 3-component vector of float)

+0:38          'iv3' (temp 3-component vector of int)

+0:39      move second child to first child (temp 3-component vector of float)

+0:39        'v3' (temp 3-component vector of float)

+0:39        divide (temp 3-component vector of float)

+0:39          Convert int to float (temp 3-component vector of float)

+0:39            'iv3' (temp 3-component vector of int)

 0:39          Constant:

 0:39            2.000000

-0:40      move second child to first child (3-component vector of float)

-0:40        'v3' (3-component vector of float)

-0:40        vector-scale (3-component vector of float)

+0:40      move second child to first child (temp 3-component vector of float)

+0:40        'v3' (temp 3-component vector of float)

+0:40        vector-scale (temp 3-component vector of float)

 0:40          Constant:

 0:40            3.000000

-0:40          Convert int to float (3-component vector of float)

-0:40            'iv3' (3-component vector of int)

-0:41      move second child to first child (3-component vector of float)

-0:41        'v3' (3-component vector of float)

-0:41        vector-scale (3-component vector of float)

+0:40          Convert int to float (temp 3-component vector of float)

+0:40            'iv3' (temp 3-component vector of int)

+0:41      move second child to first child (temp 3-component vector of float)

+0:41        'v3' (temp 3-component vector of float)

+0:41        vector-scale (temp 3-component vector of float)

 0:41          Constant:

 0:41            2.000000

-0:41          'v3' (3-component vector of float)

-0:42      move second child to first child (3-component vector of float)

-0:42        'v3' (3-component vector of float)

-0:42        subtract (3-component vector of float)

-0:42          'v3' (3-component vector of float)

+0:41          'v3' (temp 3-component vector of float)

+0:42      move second child to first child (temp 3-component vector of float)

+0:42        'v3' (temp 3-component vector of float)

+0:42        subtract (temp 3-component vector of float)

+0:42          'v3' (temp 3-component vector of float)

 0:42          Constant:

 0:42            2.000000

-0:43      Test condition and select (void)

+0:43      Test condition and select (temp void)

 0:43        Condition

-0:47        logical-or (bool)

-0:46          logical-or (bool)

-0:45            logical-or (bool)

-0:44              logical-or (bool)

-0:43                logical-or (bool)

-0:43                  Compare Less Than (bool)

-0:43                    'f' (float)

-0:43                    Convert int to float (float)

-0:43                      'a' (int)

-0:44                  Compare Less Than or Equal (bool)

-0:44                    Convert int to float (float)

-0:44                      'a' (int)

-0:44                    'f' (float)

-0:45                Compare Greater Than (bool)

-0:45                  'f' (float)

-0:45                  Convert int to float (float)

-0:45                    'a' (int)

-0:46              Compare Greater Than or Equal (bool)

-0:46                'f' (float)

-0:46                Convert int to float (float)

-0:46                  'a' (int)

-0:47            Compare Equal (bool)

-0:47              Convert int to float (float)

-0:47                'a' (int)

-0:47              'f' (float)

-0:48          Compare Not Equal (bool)

-0:48            'f' (float)

-0:48            Convert int to float (float)

-0:48              'a' (int)

+0:47        logical-or (temp bool)

+0:46          logical-or (temp bool)

+0:45            logical-or (temp bool)

+0:44              logical-or (temp bool)

+0:43                logical-or (temp bool)

+0:43                  Compare Less Than (temp bool)

+0:43                    'f' (temp float)

+0:43                    Convert int to float (temp float)

+0:43                      'a' (temp int)

+0:44                  Compare Less Than or Equal (temp bool)

+0:44                    Convert int to float (temp float)

+0:44                      'a' (temp int)

+0:44                    'f' (temp float)

+0:45                Compare Greater Than (temp bool)

+0:45                  'f' (temp float)

+0:45                  Convert int to float (temp float)

+0:45                    'a' (temp int)

+0:46              Compare Greater Than or Equal (temp bool)

+0:46                'f' (temp float)

+0:46                Convert int to float (temp float)

+0:46                  'a' (temp int)

+0:47            Compare Equal (temp bool)

+0:47              Convert int to float (temp float)

+0:47                'a' (temp int)

+0:47              'f' (temp float)

+0:48          Compare Not Equal (temp bool)

+0:48            'f' (temp float)

+0:48            Convert int to float (temp float)

+0:48              'a' (temp int)

 0:43        true case is null

-0:49      move second child to first child (float)

-0:49        'f' (float)

-0:49        Test condition and select (float)

+0:49      move second child to first child (temp float)

+0:49        'f' (temp float)

+0:49        Test condition and select (temp float)

 0:49          Condition

-0:49          'b' (bool)

+0:49          'b' (temp bool)

 0:49          true case

-0:49          Convert int to float (float)

-0:49            'a' (int)

+0:49          Convert int to float (temp float)

+0:49            'a' (temp int)

 0:49          false case

-0:49          'f' (float)

-0:50      move second child to first child (float)

-0:50        'f' (float)

-0:50        Test condition and select (float)

+0:49          'f' (temp float)

+0:50      move second child to first child (temp float)

+0:50        'f' (temp float)

+0:50        Test condition and select (temp float)

 0:50          Condition

-0:50          'b' (bool)

+0:50          'b' (temp bool)

 0:50          true case

-0:50          'f' (float)

+0:50          'f' (temp float)

 0:50          false case

-0:50          Convert int to float (float)

-0:50            'a' (int)

-0:51      move second child to first child (float)

-0:51        'f' (float)

-0:51        Convert int to float (float)

-0:51          Test condition and select (int)

+0:50          Convert int to float (temp float)

+0:50            'a' (temp int)

+0:51      move second child to first child (temp float)

+0:51        'f' (temp float)

+0:51        Convert int to float (temp float)

+0:51          Test condition and select (temp int)

 0:51            Condition

-0:51            'b' (bool)

+0:51            'b' (temp bool)

 0:51            true case

-0:51            'a' (int)

+0:51            'a' (temp int)

 0:51            false case

-0:51            'a' (int)

+0:51            'a' (temp int)

 0:52      Sequence

-0:52        move second child to first child (structure{float f})

-0:52          'news' (structure{float f})

-0:52          'sv' (structure{float f})

-0:54      vector swizzle (2-component vector of float)

+0:52        move second child to first child (temp structure{global float f})

+0:52          'news' (temp structure{global float f})

+0:52          'sv' (temp structure{global float f})

+0:54      vector swizzle (temp 2-component vector of float)

 0:54        'i' (smooth in 4-component vector of float)

 0:54        Sequence

 0:54          Constant:

@@ -229,74 +229,74 @@
 0:54            1 (const int)

 0:55      'm' (uniform 4X2 matrix of float)

 0:56      'm' (uniform 4X2 matrix of float)

-0:58      'f' (float)

-0:59      move second child to first child (float)

-0:59        'f' (float)

-0:59        Convert int to float (float)

-0:59          'a' (int)

-0:60      'f' (float)

-0:61      'b' (bool)

-0:62      move second child to first child (bool)

-0:62        'b' (bool)

-0:62        'b' (bool)

-0:63      'f' (float)

-0:65      move second child to first child (4-component vector of float)

+0:58      'f' (temp float)

+0:59      move second child to first child (temp float)

+0:59        'f' (temp float)

+0:59        Convert int to float (temp float)

+0:59          'a' (temp int)

+0:60      'f' (temp float)

+0:61      'b' (temp bool)

+0:62      move second child to first child (temp bool)

+0:62        'b' (temp bool)

+0:62        'b' (temp bool)

+0:63      'f' (temp float)

+0:65      move second child to first child (temp 4-component vector of float)

 0:65        'gl_FragColor' (fragColor 4-component vector of float)

-0:65        Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:65        Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:65          's2D' (uniform sampler2D)

 0:65          'centTexCoord' (centroid smooth in 2-component vector of float)

 0:?       Sequence

 0:79        'gl_FragColor' (fragColor 4-component vector of float)

-0:82      direct index (float)

+0:82      direct index (temp float)

 0:82        'gl_FragColor' (fragColor 4-component vector of float)

 0:82        Constant:

 0:82          0 (const int)

-0:83      direct index (float)

+0:83      direct index (temp float)

 0:83        'gl_FragColor' (fragColor 4-component vector of float)

 0:83        Constant:

 0:83          0 (const int)

-0:84      direct index (float)

+0:84      direct index (temp float)

 0:84        'centTexCoord' (centroid smooth in 2-component vector of float)

 0:84        Constant:

 0:84          0 (const int)

-0:85      move second child to first child (bool)

-0:85        Comma (bool)

-0:85          'a' (int)

-0:85          'b' (bool)

+0:85      move second child to first child (temp bool)

+0:85        Comma (temp bool)

+0:85          'a' (temp int)

+0:85          'b' (temp bool)

 0:85        Constant:

 0:85          true (const bool)

-0:91  Function Definition: main( (int)

+0:91  Function Definition: main( (global int)

 0:91    Function Parameters: 

-0:92  Function Definition: main(i1; (void)

+0:92  Function Definition: main(i1; (global void)

 0:92    Function Parameters: 

 0:92      'a' (in int)

-0:97  Function Definition: foo(f1; (int)

+0:97  Function Definition: foo(f1; (global int)

 0:97    Function Parameters: 

 0:97      'a' (out float)

 0:99    Sequence

 0:99      Branch: Return with expression

 0:99        Constant:

 0:99          3.200000

-0:100      Function Call: foo(f1; (int)

+0:100      Function Call: foo(f1; (global int)

 0:100        'a' (out float)

-0:103  Function Definition: gen(vf3; (bool)

+0:103  Function Definition: gen(vf3; (global bool)

 0:103    Function Parameters: 

 0:103      'v' (in 3-component vector of float)

 0:105    Sequence

-0:105      Test condition and select (void)

+0:105      Test condition and select (temp void)

 0:105        Condition

-0:105        logical-and (bool)

-0:105          Compare Less Than (bool)

-0:105            Absolute value (float)

-0:105              direct index (float)

+0:105        logical-and (temp bool)

+0:105          Compare Less Than (temp bool)

+0:105            Absolute value (global float)

+0:105              direct index (temp float)

 0:105                'v' (in 3-component vector of float)

 0:105                Constant:

 0:105                  0 (const int)

 0:105            Constant:

 0:105              0.000100

-0:105          Compare Less Than (bool)

-0:105            Absolute value (float)

-0:105              direct index (float)

+0:105          Compare Less Than (temp bool)

+0:105            Absolute value (global float)

+0:105              direct index (temp float)

 0:105                'v' (in 3-component vector of float)

 0:105                Constant:

 0:105                  1 (const int)

@@ -306,313 +306,313 @@
 0:106        Branch: Return with expression

 0:106          Constant:

 0:106            true (const bool)

-0:109  Function Definition: v1( (void)

+0:109  Function Definition: v1( (global void)

 0:109    Function Parameters: 

-0:113  Function Definition: v2( (void)

+0:113  Function Definition: v2( (global void)

 0:113    Function Parameters: 

 0:115    Sequence

 0:115      Branch: Return

-0:118  Function Definition: atest( (void)

+0:118  Function Definition: atest( (global void)

 0:118    Function Parameters: 

 0:120    Sequence

 0:120      Sequence

-0:120        move second child to first child (4-component vector of float)

-0:120          'v' (4-component vector of float)

-0:120          direct index (smooth 4-component vector of float)

+0:120        move second child to first child (temp 4-component vector of float)

+0:120          'v' (temp 4-component vector of float)

+0:120          direct index (smooth temp 4-component vector of float)

 0:120            'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:120            Constant:

 0:120              1 (const int)

-0:121      add second child into first child (4-component vector of float)

-0:121        'v' (4-component vector of float)

-0:121        direct index (smooth 4-component vector of float)

+0:121      add second child into first child (temp 4-component vector of float)

+0:121        'v' (temp 4-component vector of float)

+0:121        direct index (smooth temp 4-component vector of float)

 0:121          'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:121          Constant:

 0:121            3 (const int)

-0:139  Function Definition: foo123( (void)

+0:139  Function Definition: foo123( (global void)

 0:139    Function Parameters: 

 0:141    Sequence

 0:141      Sequence

-0:141        move second child to first child (2X2 matrix of float)

-0:141          'r2' (2X2 matrix of float)

-0:141          component-wise multiply (2X2 matrix of float)

-0:141            'm22' (2X2 matrix of float)

-0:141            'm22' (2X2 matrix of float)

+0:141        move second child to first child (temp 2X2 matrix of float)

+0:141          'r2' (temp 2X2 matrix of float)

+0:141          component-wise multiply (global 2X2 matrix of float)

+0:141            'm22' (global 2X2 matrix of float)

+0:141            'm22' (global 2X2 matrix of float)

 0:142      Sequence

-0:142        move second child to first child (3X3 matrix of float)

-0:142          'r3' (3X3 matrix of float)

-0:142          component-wise multiply (3X3 matrix of float)

-0:142            'm33' (3X3 matrix of float)

-0:142            'm33' (3X3 matrix of float)

+0:142        move second child to first child (temp 3X3 matrix of float)

+0:142          'r3' (temp 3X3 matrix of float)

+0:142          component-wise multiply (global 3X3 matrix of float)

+0:142            'm33' (global 3X3 matrix of float)

+0:142            'm33' (global 3X3 matrix of float)

 0:143      Sequence

-0:143        move second child to first child (4X4 matrix of float)

-0:143          'r4' (4X4 matrix of float)

-0:143          component-wise multiply (4X4 matrix of float)

-0:143            'm44' (4X4 matrix of float)

-0:143            'm44' (4X4 matrix of float)

+0:143        move second child to first child (temp 4X4 matrix of float)

+0:143          'r4' (temp 4X4 matrix of float)

+0:143          component-wise multiply (global 4X4 matrix of float)

+0:143            'm44' (global 4X4 matrix of float)

+0:143            'm44' (global 4X4 matrix of float)

 0:145      Sequence

-0:145        move second child to first child (2X3 matrix of float)

-0:145          'r23' (2X3 matrix of float)

-0:145          component-wise multiply (2X3 matrix of float)

-0:145            'm23' (2X3 matrix of float)

-0:145            'm23' (2X3 matrix of float)

+0:145        move second child to first child (temp 2X3 matrix of float)

+0:145          'r23' (temp 2X3 matrix of float)

+0:145          component-wise multiply (global 2X3 matrix of float)

+0:145            'm23' (global 2X3 matrix of float)

+0:145            'm23' (global 2X3 matrix of float)

 0:146      Sequence

-0:146        move second child to first child (2X4 matrix of float)

-0:146          'r24' (2X4 matrix of float)

-0:146          component-wise multiply (2X4 matrix of float)

-0:146            'm24' (2X4 matrix of float)

-0:146            'm24' (2X4 matrix of float)

+0:146        move second child to first child (temp 2X4 matrix of float)

+0:146          'r24' (temp 2X4 matrix of float)

+0:146          component-wise multiply (global 2X4 matrix of float)

+0:146            'm24' (global 2X4 matrix of float)

+0:146            'm24' (global 2X4 matrix of float)

 0:147      Sequence

-0:147        move second child to first child (3X2 matrix of float)

-0:147          'r32' (3X2 matrix of float)

-0:147          component-wise multiply (3X2 matrix of float)

-0:147            'm32' (3X2 matrix of float)

-0:147            'm32' (3X2 matrix of float)

+0:147        move second child to first child (temp 3X2 matrix of float)

+0:147          'r32' (temp 3X2 matrix of float)

+0:147          component-wise multiply (global 3X2 matrix of float)

+0:147            'm32' (global 3X2 matrix of float)

+0:147            'm32' (global 3X2 matrix of float)

 0:148      Sequence

-0:148        move second child to first child (3X4 matrix of float)

-0:148          'r34' (3X4 matrix of float)

-0:148          component-wise multiply (3X4 matrix of float)

-0:148            'm34' (3X4 matrix of float)

-0:148            'm34' (3X4 matrix of float)

+0:148        move second child to first child (temp 3X4 matrix of float)

+0:148          'r34' (temp 3X4 matrix of float)

+0:148          component-wise multiply (global 3X4 matrix of float)

+0:148            'm34' (global 3X4 matrix of float)

+0:148            'm34' (global 3X4 matrix of float)

 0:149      Sequence

-0:149        move second child to first child (4X2 matrix of float)

-0:149          'r42' (4X2 matrix of float)

-0:149          component-wise multiply (4X2 matrix of float)

-0:149            'm42' (4X2 matrix of float)

-0:149            'm42' (4X2 matrix of float)

+0:149        move second child to first child (temp 4X2 matrix of float)

+0:149          'r42' (temp 4X2 matrix of float)

+0:149          component-wise multiply (global 4X2 matrix of float)

+0:149            'm42' (global 4X2 matrix of float)

+0:149            'm42' (global 4X2 matrix of float)

 0:150      Sequence

-0:150        move second child to first child (4X3 matrix of float)

-0:150          'r43' (4X3 matrix of float)

-0:150          component-wise multiply (4X3 matrix of float)

-0:150            'm43' (4X3 matrix of float)

-0:150            'm43' (4X3 matrix of float)

-0:156  Function Definition: matConst( (void)

+0:150        move second child to first child (temp 4X3 matrix of float)

+0:150          'r43' (temp 4X3 matrix of float)

+0:150          component-wise multiply (global 4X3 matrix of float)

+0:150            'm43' (global 4X3 matrix of float)

+0:150            'm43' (global 4X3 matrix of float)

+0:156  Function Definition: matConst( (global void)

 0:156    Function Parameters: 

 0:?     Sequence

 0:162      Sequence

-0:162        move second child to first child (4X4 matrix of float)

-0:162          'm4g' (4X4 matrix of float)

-0:162          Construct mat4 (4X4 matrix of float)

-0:162            'v2' (2-component vector of float)

-0:162            'v3' (3-component vector of float)

-0:162            'v3' (3-component vector of float)

-0:162            'v3' (3-component vector of float)

-0:162            'v3' (3-component vector of float)

-0:162            'v3' (3-component vector of float)

+0:162        move second child to first child (temp 4X4 matrix of float)

+0:162          'm4g' (temp 4X4 matrix of float)

+0:162          Construct mat4 (temp 4X4 matrix of float)

+0:162            'v2' (temp 2-component vector of float)

+0:162            'v3' (temp 3-component vector of float)

+0:162            'v3' (temp 3-component vector of float)

+0:162            'v3' (temp 3-component vector of float)

+0:162            'v3' (temp 3-component vector of float)

+0:162            'v3' (temp 3-component vector of float)

 0:163      Sequence

-0:163        move second child to first child (4X4 matrix of float)

-0:163          'm4' (4X4 matrix of float)

-0:163          Construct mat4 (4X4 matrix of float)

-0:163            'v2' (2-component vector of float)

-0:163            'v3' (3-component vector of float)

-0:163            'v3' (3-component vector of float)

-0:163            'v3' (3-component vector of float)

-0:163            'v3' (3-component vector of float)

-0:163            'v2' (2-component vector of float)

+0:163        move second child to first child (temp 4X4 matrix of float)

+0:163          'm4' (temp 4X4 matrix of float)

+0:163          Construct mat4 (temp 4X4 matrix of float)

+0:163            'v2' (temp 2-component vector of float)

+0:163            'v3' (temp 3-component vector of float)

+0:163            'v3' (temp 3-component vector of float)

+0:163            'v3' (temp 3-component vector of float)

+0:163            'v3' (temp 3-component vector of float)

+0:163            'v2' (temp 2-component vector of float)

 0:164      Sequence

-0:164        move second child to first child (3X3 matrix of float)

-0:164          'm3' (3X3 matrix of float)

-0:164          Construct mat3 (3X3 matrix of float)

-0:164            'm4' (4X4 matrix of float)

+0:164        move second child to first child (temp 3X3 matrix of float)

+0:164          'm3' (temp 3X3 matrix of float)

+0:164          Construct mat3 (temp 3X3 matrix of float)

+0:164            'm4' (temp 4X4 matrix of float)

 0:165      Sequence

-0:165        move second child to first child (3X3 matrix of float)

-0:165          'm3b1' (3X3 matrix of float)

-0:165          Construct mat3 (3X3 matrix of float)

-0:165            'm4' (4X4 matrix of float)

-0:165            'v2' (2-component vector of float)

+0:165        move second child to first child (temp 3X3 matrix of float)

+0:165          'm3b1' (temp 3X3 matrix of float)

+0:165          Construct mat3 (temp 3X3 matrix of float)

+0:165            'm4' (temp 4X4 matrix of float)

+0:165            'v2' (temp 2-component vector of float)

 0:166      Sequence

-0:166        move second child to first child (3X3 matrix of float)

-0:166          'm3b2' (3X3 matrix of float)

-0:166          Construct mat3 (3X3 matrix of float)

-0:166            'm4' (4X4 matrix of float)

-0:166            'm4' (4X4 matrix of float)

+0:166        move second child to first child (temp 3X3 matrix of float)

+0:166          'm3b2' (temp 3X3 matrix of float)

+0:166          Construct mat3 (temp 3X3 matrix of float)

+0:166            'm4' (temp 4X4 matrix of float)

+0:166            'm4' (temp 4X4 matrix of float)

 0:167      Sequence

-0:167        move second child to first child (3X2 matrix of float)

-0:167          'm32' (3X2 matrix of float)

-0:167          Construct mat3x2 (3X2 matrix of float)

-0:167            'm4' (4X4 matrix of float)

+0:167        move second child to first child (temp 3X2 matrix of float)

+0:167          'm32' (temp 3X2 matrix of float)

+0:167          Construct mat3x2 (temp 3X2 matrix of float)

+0:167            'm4' (temp 4X4 matrix of float)

 0:168      Sequence

-0:168        move second child to first child (4X4 matrix of float)

-0:168          'm4c' (4X4 matrix of float)

-0:168          Construct mat4 (4X4 matrix of float)

-0:168            'm32' (3X2 matrix of float)

+0:168        move second child to first child (temp 4X4 matrix of float)

+0:168          'm4c' (temp 4X4 matrix of float)

+0:168          Construct mat4 (temp 4X4 matrix of float)

+0:168            'm32' (temp 3X2 matrix of float)

 0:169      Sequence

-0:169        move second child to first child (3X3 matrix of float)

-0:169          'm3s' (3X3 matrix of float)

-0:169          Construct mat3 (3X3 matrix of float)

-0:169            direct index (float)

-0:169              'v2' (2-component vector of float)

+0:169        move second child to first child (temp 3X3 matrix of float)

+0:169          'm3s' (temp 3X3 matrix of float)

+0:169          Construct mat3 (temp 3X3 matrix of float)

+0:169            direct index (temp float)

+0:169              'v2' (temp 2-component vector of float)

 0:169              Constant:

 0:169                0 (const int)

 0:171      Sequence

-0:171        move second child to first child (2-element array of 3X3 matrix of float)

-0:171          'm3a1' (2-element array of 3X3 matrix of float)

-0:171          Construct mat3 (2-element array of 3X3 matrix of float)

-0:171            'm3s' (3X3 matrix of float)

-0:171            'm3s' (3X3 matrix of float)

-0:179  Function Definition: foo2323( (void)

+0:171        move second child to first child (temp 2-element array of 3X3 matrix of float)

+0:171          'm3a1' (temp 2-element array of 3X3 matrix of float)

+0:171          Construct mat3 (temp 2-element array of 3X3 matrix of float)

+0:171            'm3s' (temp 3X3 matrix of float)

+0:171            'm3s' (temp 3X3 matrix of float)

+0:179  Function Definition: foo2323( (global void)

 0:179    Function Parameters: 

 0:?     Sequence

-0:184      move second child to first child (4-component vector of float)

-0:184        'v' (4-component vector of float)

-0:184        Function Call: texture2DLod(s21;vf2;f1; (4-component vector of float)

+0:184      move second child to first child (temp 4-component vector of float)

+0:184        'v' (temp 4-component vector of float)

+0:184        Function Call: texture2DLod(s21;vf2;f1; (global 4-component vector of float)

 0:184          's2D' (uniform sampler2D)

-0:184          'v2' (2-component vector of float)

-0:184          'f' (float)

-0:185      move second child to first child (4-component vector of float)

-0:185        'v' (4-component vector of float)

-0:185        Function Call: texture3DProjLod(s31;vf4;f1; (4-component vector of float)

+0:184          'v2' (temp 2-component vector of float)

+0:184          'f' (temp float)

+0:185      move second child to first child (temp 4-component vector of float)

+0:185        'v' (temp 4-component vector of float)

+0:185        Function Call: texture3DProjLod(s31;vf4;f1; (global 4-component vector of float)

 0:185          's3D' (uniform sampler3D)

-0:185          'v' (4-component vector of float)

-0:185          'f' (float)

-0:186      move second child to first child (4-component vector of float)

-0:186        'v' (4-component vector of float)

-0:186        Function Call: texture1DProjLod(s11;vf4;f1; (4-component vector of float)

+0:185          'v' (temp 4-component vector of float)

+0:185          'f' (temp float)

+0:186      move second child to first child (temp 4-component vector of float)

+0:186        'v' (temp 4-component vector of float)

+0:186        Function Call: texture1DProjLod(s11;vf4;f1; (global 4-component vector of float)

 0:186          's1D' (uniform sampler1D)

-0:186          'v' (4-component vector of float)

-0:186          'f' (float)

-0:187      move second child to first child (4-component vector of float)

-0:187        'v' (4-component vector of float)

-0:187        Function Call: shadow2DProjLod(sS21;vf4;f1; (4-component vector of float)

+0:186          'v' (temp 4-component vector of float)

+0:186          'f' (temp float)

+0:187      move second child to first child (temp 4-component vector of float)

+0:187        'v' (temp 4-component vector of float)

+0:187        Function Call: shadow2DProjLod(sS21;vf4;f1; (global 4-component vector of float)

 0:187          's2DS' (uniform sampler2DShadow)

-0:187          'v' (4-component vector of float)

-0:187          'f' (float)

-0:189      move second child to first child (4-component vector of float)

-0:189        'v' (4-component vector of float)

-0:189        Function Call: texture1DGradARB(s11;f1;f1;f1; (4-component vector of float)

+0:187          'v' (temp 4-component vector of float)

+0:187          'f' (temp float)

+0:189      move second child to first child (temp 4-component vector of float)

+0:189        'v' (temp 4-component vector of float)

+0:189        Function Call: texture1DGradARB(s11;f1;f1;f1; (global 4-component vector of float)

 0:189          's1D' (uniform sampler1D)

-0:189          'f' (float)

-0:189          'f' (float)

-0:189          'f' (float)

-0:190      move second child to first child (4-component vector of float)

-0:190        'v' (4-component vector of float)

-0:190        Function Call: texture2DProjGradARB(s21;vf4;vf2;vf2; (4-component vector of float)

+0:189          'f' (temp float)

+0:189          'f' (temp float)

+0:189          'f' (temp float)

+0:190      move second child to first child (temp 4-component vector of float)

+0:190        'v' (temp 4-component vector of float)

+0:190        Function Call: texture2DProjGradARB(s21;vf4;vf2;vf2; (global 4-component vector of float)

 0:190          's2D' (uniform sampler2D)

-0:190          'v' (4-component vector of float)

-0:190          'v2' (2-component vector of float)

-0:190          'v2' (2-component vector of float)

-0:191      move second child to first child (4-component vector of float)

-0:191        'v' (4-component vector of float)

-0:191        Function Call: shadow2DProjGradARB(sS21;vf4;vf2;vf2; (4-component vector of float)

+0:190          'v' (temp 4-component vector of float)

+0:190          'v2' (temp 2-component vector of float)

+0:190          'v2' (temp 2-component vector of float)

+0:191      move second child to first child (temp 4-component vector of float)

+0:191        'v' (temp 4-component vector of float)

+0:191        Function Call: shadow2DProjGradARB(sS21;vf4;vf2;vf2; (global 4-component vector of float)

 0:191          's2DS' (uniform sampler2DShadow)

-0:191          'v' (4-component vector of float)

-0:191          'v2' (2-component vector of float)

-0:191          'v2' (2-component vector of float)

-0:196  Function Definition: foo2324( (void)

+0:191          'v' (temp 4-component vector of float)

+0:191          'v2' (temp 2-component vector of float)

+0:191          'v2' (temp 2-component vector of float)

+0:196  Function Definition: foo2324( (global void)

 0:196    Function Parameters: 

 0:?     Sequence

-0:201      move second child to first child (4-component vector of float)

-0:201        'v' (4-component vector of float)

-0:201        Function Call: texture2DLod(s21;vf2;f1; (4-component vector of float)

+0:201      move second child to first child (temp 4-component vector of float)

+0:201        'v' (temp 4-component vector of float)

+0:201        Function Call: texture2DLod(s21;vf2;f1; (global 4-component vector of float)

 0:201          's2D' (uniform sampler2D)

-0:201          'v2' (2-component vector of float)

-0:201          'f' (float)

-0:202      move second child to first child (4-component vector of float)

-0:202        'v' (4-component vector of float)

-0:202        Function Call: texture3DProjLod(s31;vf4;f1; (4-component vector of float)

+0:201          'v2' (temp 2-component vector of float)

+0:201          'f' (temp float)

+0:202      move second child to first child (temp 4-component vector of float)

+0:202        'v' (temp 4-component vector of float)

+0:202        Function Call: texture3DProjLod(s31;vf4;f1; (global 4-component vector of float)

 0:202          's3D' (uniform sampler3D)

-0:202          'v' (4-component vector of float)

-0:202          'f' (float)

-0:203      move second child to first child (4-component vector of float)

-0:203        'v' (4-component vector of float)

-0:203        Function Call: texture1DProjLod(s11;vf4;f1; (4-component vector of float)

+0:202          'v' (temp 4-component vector of float)

+0:202          'f' (temp float)

+0:203      move second child to first child (temp 4-component vector of float)

+0:203        'v' (temp 4-component vector of float)

+0:203        Function Call: texture1DProjLod(s11;vf4;f1; (global 4-component vector of float)

 0:203          's1D' (uniform sampler1D)

-0:203          'v' (4-component vector of float)

-0:203          'f' (float)

-0:204      move second child to first child (4-component vector of float)

-0:204        'v' (4-component vector of float)

-0:204        Function Call: shadow2DProjLod(sS21;vf4;f1; (4-component vector of float)

+0:203          'v' (temp 4-component vector of float)

+0:203          'f' (temp float)

+0:204      move second child to first child (temp 4-component vector of float)

+0:204        'v' (temp 4-component vector of float)

+0:204        Function Call: shadow2DProjLod(sS21;vf4;f1; (global 4-component vector of float)

 0:204          's2DS' (uniform sampler2DShadow)

-0:204          'v' (4-component vector of float)

-0:204          'f' (float)

-0:206      move second child to first child (4-component vector of float)

-0:206        'v' (4-component vector of float)

-0:206        Function Call: texture1DGradARB(s11;f1;f1;f1; (4-component vector of float)

+0:204          'v' (temp 4-component vector of float)

+0:204          'f' (temp float)

+0:206      move second child to first child (temp 4-component vector of float)

+0:206        'v' (temp 4-component vector of float)

+0:206        Function Call: texture1DGradARB(s11;f1;f1;f1; (global 4-component vector of float)

 0:206          's1D' (uniform sampler1D)

-0:206          'f' (float)

-0:206          'f' (float)

-0:206          'f' (float)

-0:207      move second child to first child (4-component vector of float)

-0:207        'v' (4-component vector of float)

-0:207        Function Call: texture2DProjGradARB(s21;vf4;vf2;vf2; (4-component vector of float)

+0:206          'f' (temp float)

+0:206          'f' (temp float)

+0:206          'f' (temp float)

+0:207      move second child to first child (temp 4-component vector of float)

+0:207        'v' (temp 4-component vector of float)

+0:207        Function Call: texture2DProjGradARB(s21;vf4;vf2;vf2; (global 4-component vector of float)

 0:207          's2D' (uniform sampler2D)

-0:207          'v' (4-component vector of float)

-0:207          'v2' (2-component vector of float)

-0:207          'v2' (2-component vector of float)

-0:208      move second child to first child (4-component vector of float)

-0:208        'v' (4-component vector of float)

-0:208        Function Call: shadow2DProjGradARB(sS21;vf4;vf2;vf2; (4-component vector of float)

+0:207          'v' (temp 4-component vector of float)

+0:207          'v2' (temp 2-component vector of float)

+0:207          'v2' (temp 2-component vector of float)

+0:208      move second child to first child (temp 4-component vector of float)

+0:208        'v' (temp 4-component vector of float)

+0:208        Function Call: shadow2DProjGradARB(sS21;vf4;vf2;vf2; (global 4-component vector of float)

 0:208          's2DS' (uniform sampler2DShadow)

-0:208          'v' (4-component vector of float)

-0:208          'v2' (2-component vector of float)

-0:208          'v2' (2-component vector of float)

-0:209      'v' (4-component vector of float)

-0:214  Function Definition: foo121111( (void)

+0:208          'v' (temp 4-component vector of float)

+0:208          'v2' (temp 2-component vector of float)

+0:208          'v2' (temp 2-component vector of float)

+0:209      'v' (temp 4-component vector of float)

+0:214  Function Definition: foo121111( (global void)

 0:214    Function Parameters: 

 0:?     Sequence

 0:217      Sequence

-0:217        move second child to first child (4-component vector of float)

-0:217          'v' (4-component vector of float)

-0:217          Function Call: texture2DRect(sR21;vf2; (4-component vector of float)

+0:217        move second child to first child (temp 4-component vector of float)

+0:217          'v' (temp 4-component vector of float)

+0:217          Function Call: texture2DRect(sR21;vf2; (global 4-component vector of float)

 0:217            's2DRbad' (uniform sampler2DRect)

-0:217            'v2' (2-component vector of float)

-0:225  Function Definition: foo12111( (void)

+0:217            'v2' (temp 2-component vector of float)

+0:225  Function Definition: foo12111( (global void)

 0:225    Function Parameters: 

 0:?     Sequence

-0:231      move second child to first child (4-component vector of float)

-0:231        'v' (4-component vector of float)

-0:231        Function Call: texture2DRect(sR21;vf2; (4-component vector of float)

+0:231      move second child to first child (temp 4-component vector of float)

+0:231        'v' (temp 4-component vector of float)

+0:231        Function Call: texture2DRect(sR21;vf2; (global 4-component vector of float)

 0:231          's2DR' (uniform sampler2DRect)

-0:231          'v2' (2-component vector of float)

-0:232      move second child to first child (4-component vector of float)

-0:232        'v' (4-component vector of float)

-0:232        Function Call: texture2DRectProj(sR21;vf3; (4-component vector of float)

+0:231          'v2' (temp 2-component vector of float)

+0:232      move second child to first child (temp 4-component vector of float)

+0:232        'v' (temp 4-component vector of float)

+0:232        Function Call: texture2DRectProj(sR21;vf3; (global 4-component vector of float)

 0:232          's2DR' (uniform sampler2DRect)

-0:232          'v3' (3-component vector of float)

-0:233      move second child to first child (4-component vector of float)

-0:233        'v' (4-component vector of float)

-0:233        Function Call: texture2DRectProj(sR21;vf4; (4-component vector of float)

+0:232          'v3' (temp 3-component vector of float)

+0:233      move second child to first child (temp 4-component vector of float)

+0:233        'v' (temp 4-component vector of float)

+0:233        Function Call: texture2DRectProj(sR21;vf4; (global 4-component vector of float)

 0:233          's2DR' (uniform sampler2DRect)

-0:233          'v4' (4-component vector of float)

-0:234      move second child to first child (4-component vector of float)

-0:234        'v' (4-component vector of float)

-0:234        Function Call: shadow2DRect(sSR21;vf3; (4-component vector of float)

+0:233          'v4' (temp 4-component vector of float)

+0:234      move second child to first child (temp 4-component vector of float)

+0:234        'v' (temp 4-component vector of float)

+0:234        Function Call: shadow2DRect(sSR21;vf3; (global 4-component vector of float)

 0:234          's2DRS' (uniform sampler2DRectShadow)

-0:234          'v3' (3-component vector of float)

-0:235      move second child to first child (4-component vector of float)

-0:235        'v' (4-component vector of float)

-0:235        Function Call: shadow2DRectProj(sSR21;vf4; (4-component vector of float)

+0:234          'v3' (temp 3-component vector of float)

+0:235      move second child to first child (temp 4-component vector of float)

+0:235        'v' (temp 4-component vector of float)

+0:235        Function Call: shadow2DRectProj(sSR21;vf4; (global 4-component vector of float)

 0:235          's2DRS' (uniform sampler2DRectShadow)

-0:235          'v4' (4-component vector of float)

-0:237      move second child to first child (4-component vector of float)

-0:237        'v' (4-component vector of float)

-0:237        Function Call: shadow2DRectProjGradARB(sSR21;vf4;vf2;vf2; (4-component vector of float)

+0:235          'v4' (temp 4-component vector of float)

+0:237      move second child to first child (temp 4-component vector of float)

+0:237        'v' (temp 4-component vector of float)

+0:237        Function Call: shadow2DRectProjGradARB(sSR21;vf4;vf2;vf2; (global 4-component vector of float)

 0:237          's2DRS' (uniform sampler2DRectShadow)

-0:237          'v' (4-component vector of float)

-0:237          'v2' (2-component vector of float)

-0:237          'v2' (2-component vector of float)

+0:237          'v' (temp 4-component vector of float)

+0:237          'v2' (temp 2-component vector of float)

+0:237          'v2' (temp 2-component vector of float)

 0:?   Linker Objects

-0:?     'lowp' (float)

-0:?     'mediump' (float)

-0:?     'highp' (float)

-0:?     'precision' (float)

+0:?     'lowp' (global float)

+0:?     'mediump' (global float)

+0:?     'highp' (global float)

+0:?     'precision' (global float)

 0:?     'i' (smooth in 4-component vector of float)

 0:?     'o' (out 4-component vector of float)

 0:?     's2D' (uniform sampler2D)

 0:?     'centTexCoord' (centroid smooth in 2-component vector of float)

 0:?     'm' (uniform 4X2 matrix of float)

-0:?     'imageBuffer' (float)

-0:?     'uimage2DRect' (float)

-0:?     'a' (int)

+0:?     'imageBuffer' (global float)

+0:?     'uimage2DRect' (global float)

+0:?     'a' (temp int)

 0:?     'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

-0:?     'm22' (2X2 matrix of float)

-0:?     'm23' (2X3 matrix of float)

-0:?     'm24' (2X4 matrix of float)

-0:?     'm32' (3X2 matrix of float)

-0:?     'm33' (3X3 matrix of float)

-0:?     'm34' (3X4 matrix of float)

-0:?     'm42' (4X2 matrix of float)

-0:?     'm43' (4X3 matrix of float)

-0:?     'm44' (4X4 matrix of float)

+0:?     'm22' (global 2X2 matrix of float)

+0:?     'm23' (global 2X3 matrix of float)

+0:?     'm24' (global 2X4 matrix of float)

+0:?     'm32' (global 3X2 matrix of float)

+0:?     'm33' (global 3X3 matrix of float)

+0:?     'm34' (global 3X4 matrix of float)

+0:?     'm42' (global 4X2 matrix of float)

+0:?     'm43' (global 4X3 matrix of float)

+0:?     'm44' (global 4X4 matrix of float)

 0:?     's3D' (uniform sampler3D)

 0:?     's1D' (uniform sampler1D)

 0:?     's2DS' (uniform sampler2DShadow)

@@ -630,168 +630,168 @@
 Requested GL_ARB_shader_texture_lod

 Requested GL_ARB_texture_rectangle

 ERROR: node is still EOpNull!

-0:21  Function Definition: main( (void)

+0:21  Function Definition: main( (global void)

 0:21    Function Parameters: 

 0:23    Sequence

 0:23      Sequence

-0:23        move second child to first child (2X3 matrix of float)

-0:23          'm23' (2X3 matrix of float)

-0:23          Construct mat2x3 (2X3 matrix of float)

+0:23        move second child to first child (temp 2X3 matrix of float)

+0:23          'm23' (temp 2X3 matrix of float)

+0:23          Construct mat2x3 (temp 2X3 matrix of float)

 0:23            'm' (uniform 4X2 matrix of float)

 0:27      Sequence

-0:27        move second child to first child (structure{float f})

-0:27          'sv' (structure{float f})

-0:27          Construct structure (structure{float f})

-0:27            Convert int to float (float)

-0:27              'a' (int)

+0:27        move second child to first child (temp structure{global float f})

+0:27          'sv' (temp structure{global float f})

+0:27          Construct structure (temp structure{global float f})

+0:27            Convert int to float (temp float)

+0:27              'a' (temp int)

 0:28      Sequence

-0:28        move second child to first child (2-element array of float)

-0:28          'ia' (2-element array of float)

-0:28          Construct float (2-element array of float)

+0:28        move second child to first child (temp 2-element array of float)

+0:28          'ia' (temp 2-element array of float)

+0:28          Construct float (temp 2-element array of float)

 0:28            Constant:

 0:28              3.000000

-0:28            direct index (float)

+0:28            direct index (temp float)

 0:28              'i' (smooth in 4-component vector of float)

 0:28              Constant:

 0:28                1 (const int)

 0:29      Sequence

-0:29        move second child to first child (float)

-0:29          'f1' (float)

+0:29        move second child to first child (temp float)

+0:29          'f1' (temp float)

 0:29          Constant:

 0:29            1.000000

 0:30      Sequence

-0:30        move second child to first child (float)

-0:30          'f' (float)

-0:30          Convert int to float (float)

-0:30            'a' (int)

-0:31      move second child to first child (float)

-0:31        'f' (float)

-0:31        Convert int to float (float)

-0:31          'a' (int)

+0:30        move second child to first child (temp float)

+0:30          'f' (temp float)

+0:30          Convert int to float (temp float)

+0:30            'a' (temp int)

+0:31      move second child to first child (temp float)

+0:31        'f' (temp float)

+0:31        Convert int to float (temp float)

+0:31          'a' (temp int)

 0:33      Sequence

-0:33        move second child to first child (3-component vector of float)

-0:33          'v3' (3-component vector of float)

-0:33          Convert int to float (3-component vector of float)

-0:33            'iv3' (3-component vector of int)

-0:34      move second child to first child (float)

-0:34        'f' (float)

-0:34        add (float)

-0:34          'f' (float)

-0:34          Convert int to float (float)

-0:34            'a' (int)

-0:35      move second child to first child (float)

-0:35        'f' (float)

-0:35        subtract (float)

-0:35          Convert int to float (float)

-0:35            'a' (int)

-0:35          'f' (float)

-0:36      add second child into first child (float)

-0:36        'f' (float)

-0:36        Convert int to float (float)

-0:36          'a' (int)

-0:37      move second child to first child (float)

-0:37        'f' (float)

-0:37        subtract (float)

-0:37          Convert int to float (float)

-0:37            'a' (int)

-0:37          'f' (float)

-0:38      multiply second child into first child (3-component vector of float)

-0:38        'v3' (3-component vector of float)

-0:38        Convert int to float (3-component vector of float)

-0:38          'iv3' (3-component vector of int)

-0:39      move second child to first child (3-component vector of float)

-0:39        'v3' (3-component vector of float)

-0:39        divide (3-component vector of float)

-0:39          Convert int to float (3-component vector of float)

-0:39            'iv3' (3-component vector of int)

+0:33        move second child to first child (temp 3-component vector of float)

+0:33          'v3' (temp 3-component vector of float)

+0:33          Convert int to float (temp 3-component vector of float)

+0:33            'iv3' (temp 3-component vector of int)

+0:34      move second child to first child (temp float)

+0:34        'f' (temp float)

+0:34        add (temp float)

+0:34          'f' (temp float)

+0:34          Convert int to float (temp float)

+0:34            'a' (temp int)

+0:35      move second child to first child (temp float)

+0:35        'f' (temp float)

+0:35        subtract (temp float)

+0:35          Convert int to float (temp float)

+0:35            'a' (temp int)

+0:35          'f' (temp float)

+0:36      add second child into first child (temp float)

+0:36        'f' (temp float)

+0:36        Convert int to float (temp float)

+0:36          'a' (temp int)

+0:37      move second child to first child (temp float)

+0:37        'f' (temp float)

+0:37        subtract (temp float)

+0:37          Convert int to float (temp float)

+0:37            'a' (temp int)

+0:37          'f' (temp float)

+0:38      multiply second child into first child (temp 3-component vector of float)

+0:38        'v3' (temp 3-component vector of float)

+0:38        Convert int to float (temp 3-component vector of float)

+0:38          'iv3' (temp 3-component vector of int)

+0:39      move second child to first child (temp 3-component vector of float)

+0:39        'v3' (temp 3-component vector of float)

+0:39        divide (temp 3-component vector of float)

+0:39          Convert int to float (temp 3-component vector of float)

+0:39            'iv3' (temp 3-component vector of int)

 0:39          Constant:

 0:39            2.000000

-0:40      move second child to first child (3-component vector of float)

-0:40        'v3' (3-component vector of float)

-0:40        vector-scale (3-component vector of float)

+0:40      move second child to first child (temp 3-component vector of float)

+0:40        'v3' (temp 3-component vector of float)

+0:40        vector-scale (temp 3-component vector of float)

 0:40          Constant:

 0:40            3.000000

-0:40          Convert int to float (3-component vector of float)

-0:40            'iv3' (3-component vector of int)

-0:41      move second child to first child (3-component vector of float)

-0:41        'v3' (3-component vector of float)

-0:41        vector-scale (3-component vector of float)

+0:40          Convert int to float (temp 3-component vector of float)

+0:40            'iv3' (temp 3-component vector of int)

+0:41      move second child to first child (temp 3-component vector of float)

+0:41        'v3' (temp 3-component vector of float)

+0:41        vector-scale (temp 3-component vector of float)

 0:41          Constant:

 0:41            2.000000

-0:41          'v3' (3-component vector of float)

-0:42      move second child to first child (3-component vector of float)

-0:42        'v3' (3-component vector of float)

-0:42        subtract (3-component vector of float)

-0:42          'v3' (3-component vector of float)

+0:41          'v3' (temp 3-component vector of float)

+0:42      move second child to first child (temp 3-component vector of float)

+0:42        'v3' (temp 3-component vector of float)

+0:42        subtract (temp 3-component vector of float)

+0:42          'v3' (temp 3-component vector of float)

 0:42          Constant:

 0:42            2.000000

-0:43      Test condition and select (void)

+0:43      Test condition and select (temp void)

 0:43        Condition

-0:47        logical-or (bool)

-0:46          logical-or (bool)

-0:45            logical-or (bool)

-0:44              logical-or (bool)

-0:43                logical-or (bool)

-0:43                  Compare Less Than (bool)

-0:43                    'f' (float)

-0:43                    Convert int to float (float)

-0:43                      'a' (int)

-0:44                  Compare Less Than or Equal (bool)

-0:44                    Convert int to float (float)

-0:44                      'a' (int)

-0:44                    'f' (float)

-0:45                Compare Greater Than (bool)

-0:45                  'f' (float)

-0:45                  Convert int to float (float)

-0:45                    'a' (int)

-0:46              Compare Greater Than or Equal (bool)

-0:46                'f' (float)

-0:46                Convert int to float (float)

-0:46                  'a' (int)

-0:47            Compare Equal (bool)

-0:47              Convert int to float (float)

-0:47                'a' (int)

-0:47              'f' (float)

-0:48          Compare Not Equal (bool)

-0:48            'f' (float)

-0:48            Convert int to float (float)

-0:48              'a' (int)

+0:47        logical-or (temp bool)

+0:46          logical-or (temp bool)

+0:45            logical-or (temp bool)

+0:44              logical-or (temp bool)

+0:43                logical-or (temp bool)

+0:43                  Compare Less Than (temp bool)

+0:43                    'f' (temp float)

+0:43                    Convert int to float (temp float)

+0:43                      'a' (temp int)

+0:44                  Compare Less Than or Equal (temp bool)

+0:44                    Convert int to float (temp float)

+0:44                      'a' (temp int)

+0:44                    'f' (temp float)

+0:45                Compare Greater Than (temp bool)

+0:45                  'f' (temp float)

+0:45                  Convert int to float (temp float)

+0:45                    'a' (temp int)

+0:46              Compare Greater Than or Equal (temp bool)

+0:46                'f' (temp float)

+0:46                Convert int to float (temp float)

+0:46                  'a' (temp int)

+0:47            Compare Equal (temp bool)

+0:47              Convert int to float (temp float)

+0:47                'a' (temp int)

+0:47              'f' (temp float)

+0:48          Compare Not Equal (temp bool)

+0:48            'f' (temp float)

+0:48            Convert int to float (temp float)

+0:48              'a' (temp int)

 0:43        true case is null

-0:49      move second child to first child (float)

-0:49        'f' (float)

-0:49        Test condition and select (float)

+0:49      move second child to first child (temp float)

+0:49        'f' (temp float)

+0:49        Test condition and select (temp float)

 0:49          Condition

-0:49          'b' (bool)

+0:49          'b' (temp bool)

 0:49          true case

-0:49          Convert int to float (float)

-0:49            'a' (int)

+0:49          Convert int to float (temp float)

+0:49            'a' (temp int)

 0:49          false case

-0:49          'f' (float)

-0:50      move second child to first child (float)

-0:50        'f' (float)

-0:50        Test condition and select (float)

+0:49          'f' (temp float)

+0:50      move second child to first child (temp float)

+0:50        'f' (temp float)

+0:50        Test condition and select (temp float)

 0:50          Condition

-0:50          'b' (bool)

+0:50          'b' (temp bool)

 0:50          true case

-0:50          'f' (float)

+0:50          'f' (temp float)

 0:50          false case

-0:50          Convert int to float (float)

-0:50            'a' (int)

-0:51      move second child to first child (float)

-0:51        'f' (float)

-0:51        Convert int to float (float)

-0:51          Test condition and select (int)

+0:50          Convert int to float (temp float)

+0:50            'a' (temp int)

+0:51      move second child to first child (temp float)

+0:51        'f' (temp float)

+0:51        Convert int to float (temp float)

+0:51          Test condition and select (temp int)

 0:51            Condition

-0:51            'b' (bool)

+0:51            'b' (temp bool)

 0:51            true case

-0:51            'a' (int)

+0:51            'a' (temp int)

 0:51            false case

-0:51            'a' (int)

+0:51            'a' (temp int)

 0:52      Sequence

-0:52        move second child to first child (structure{float f})

-0:52          'news' (structure{float f})

-0:52          'sv' (structure{float f})

-0:54      vector swizzle (2-component vector of float)

+0:52        move second child to first child (temp structure{global float f})

+0:52          'news' (temp structure{global float f})

+0:52          'sv' (temp structure{global float f})

+0:54      vector swizzle (temp 2-component vector of float)

 0:54        'i' (smooth in 4-component vector of float)

 0:54        Sequence

 0:54          Constant:

@@ -800,74 +800,74 @@
 0:54            1 (const int)

 0:55      'm' (uniform 4X2 matrix of float)

 0:56      'm' (uniform 4X2 matrix of float)

-0:58      'f' (float)

-0:59      move second child to first child (float)

-0:59        'f' (float)

-0:59        Convert int to float (float)

-0:59          'a' (int)

-0:60      'f' (float)

-0:61      'b' (bool)

-0:62      move second child to first child (bool)

-0:62        'b' (bool)

-0:62        'b' (bool)

-0:63      'f' (float)

-0:65      move second child to first child (4-component vector of float)

+0:58      'f' (temp float)

+0:59      move second child to first child (temp float)

+0:59        'f' (temp float)

+0:59        Convert int to float (temp float)

+0:59          'a' (temp int)

+0:60      'f' (temp float)

+0:61      'b' (temp bool)

+0:62      move second child to first child (temp bool)

+0:62        'b' (temp bool)

+0:62        'b' (temp bool)

+0:63      'f' (temp float)

+0:65      move second child to first child (temp 4-component vector of float)

 0:65        'gl_FragColor' (fragColor 4-component vector of float)

-0:65        Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:65        Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:65          's2D' (uniform sampler2D)

 0:65          'centTexCoord' (centroid smooth in 2-component vector of float)

 0:?       Sequence

 0:79        'gl_FragColor' (fragColor 4-component vector of float)

-0:82      direct index (float)

+0:82      direct index (temp float)

 0:82        'gl_FragColor' (fragColor 4-component vector of float)

 0:82        Constant:

 0:82          0 (const int)

-0:83      direct index (float)

+0:83      direct index (temp float)

 0:83        'gl_FragColor' (fragColor 4-component vector of float)

 0:83        Constant:

 0:83          0 (const int)

-0:84      direct index (float)

+0:84      direct index (temp float)

 0:84        'centTexCoord' (centroid smooth in 2-component vector of float)

 0:84        Constant:

 0:84          0 (const int)

-0:85      move second child to first child (bool)

-0:85        Comma (bool)

-0:85          'a' (int)

-0:85          'b' (bool)

+0:85      move second child to first child (temp bool)

+0:85        Comma (temp bool)

+0:85          'a' (temp int)

+0:85          'b' (temp bool)

 0:85        Constant:

 0:85          true (const bool)

-0:91  Function Definition: main( (int)

+0:91  Function Definition: main( (global int)

 0:91    Function Parameters: 

-0:92  Function Definition: main(i1; (void)

+0:92  Function Definition: main(i1; (global void)

 0:92    Function Parameters: 

 0:92      'a' (in int)

-0:97  Function Definition: foo(f1; (int)

+0:97  Function Definition: foo(f1; (global int)

 0:97    Function Parameters: 

 0:97      'a' (out float)

 0:99    Sequence

 0:99      Branch: Return with expression

 0:99        Constant:

 0:99          3.200000

-0:100      Function Call: foo(f1; (int)

+0:100      Function Call: foo(f1; (global int)

 0:100        'a' (out float)

-0:103  Function Definition: gen(vf3; (bool)

+0:103  Function Definition: gen(vf3; (global bool)

 0:103    Function Parameters: 

 0:103      'v' (in 3-component vector of float)

 0:105    Sequence

-0:105      Test condition and select (void)

+0:105      Test condition and select (temp void)

 0:105        Condition

-0:105        logical-and (bool)

-0:105          Compare Less Than (bool)

-0:105            Absolute value (float)

-0:105              direct index (float)

+0:105        logical-and (temp bool)

+0:105          Compare Less Than (temp bool)

+0:105            Absolute value (global float)

+0:105              direct index (temp float)

 0:105                'v' (in 3-component vector of float)

 0:105                Constant:

 0:105                  0 (const int)

 0:105            Constant:

 0:105              0.000100

-0:105          Compare Less Than (bool)

-0:105            Absolute value (float)

-0:105              direct index (float)

+0:105          Compare Less Than (temp bool)

+0:105            Absolute value (global float)

+0:105              direct index (temp float)

 0:105                'v' (in 3-component vector of float)

 0:105                Constant:

 0:105                  1 (const int)

@@ -877,313 +877,313 @@
 0:106        Branch: Return with expression

 0:106          Constant:

 0:106            true (const bool)

-0:109  Function Definition: v1( (void)

+0:109  Function Definition: v1( (global void)

 0:109    Function Parameters: 

-0:113  Function Definition: v2( (void)

+0:113  Function Definition: v2( (global void)

 0:113    Function Parameters: 

 0:115    Sequence

 0:115      Branch: Return

-0:118  Function Definition: atest( (void)

+0:118  Function Definition: atest( (global void)

 0:118    Function Parameters: 

 0:120    Sequence

 0:120      Sequence

-0:120        move second child to first child (4-component vector of float)

-0:120          'v' (4-component vector of float)

-0:120          direct index (smooth 4-component vector of float)

+0:120        move second child to first child (temp 4-component vector of float)

+0:120          'v' (temp 4-component vector of float)

+0:120          direct index (smooth temp 4-component vector of float)

 0:120            'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:120            Constant:

 0:120              1 (const int)

-0:121      add second child into first child (4-component vector of float)

-0:121        'v' (4-component vector of float)

-0:121        direct index (smooth 4-component vector of float)

+0:121      add second child into first child (temp 4-component vector of float)

+0:121        'v' (temp 4-component vector of float)

+0:121        direct index (smooth temp 4-component vector of float)

 0:121          'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:121          Constant:

 0:121            3 (const int)

-0:139  Function Definition: foo123( (void)

+0:139  Function Definition: foo123( (global void)

 0:139    Function Parameters: 

 0:141    Sequence

 0:141      Sequence

-0:141        move second child to first child (2X2 matrix of float)

-0:141          'r2' (2X2 matrix of float)

-0:141          component-wise multiply (2X2 matrix of float)

-0:141            'm22' (2X2 matrix of float)

-0:141            'm22' (2X2 matrix of float)

+0:141        move second child to first child (temp 2X2 matrix of float)

+0:141          'r2' (temp 2X2 matrix of float)

+0:141          component-wise multiply (global 2X2 matrix of float)

+0:141            'm22' (global 2X2 matrix of float)

+0:141            'm22' (global 2X2 matrix of float)

 0:142      Sequence

-0:142        move second child to first child (3X3 matrix of float)

-0:142          'r3' (3X3 matrix of float)

-0:142          component-wise multiply (3X3 matrix of float)

-0:142            'm33' (3X3 matrix of float)

-0:142            'm33' (3X3 matrix of float)

+0:142        move second child to first child (temp 3X3 matrix of float)

+0:142          'r3' (temp 3X3 matrix of float)

+0:142          component-wise multiply (global 3X3 matrix of float)

+0:142            'm33' (global 3X3 matrix of float)

+0:142            'm33' (global 3X3 matrix of float)

 0:143      Sequence

-0:143        move second child to first child (4X4 matrix of float)

-0:143          'r4' (4X4 matrix of float)

-0:143          component-wise multiply (4X4 matrix of float)

-0:143            'm44' (4X4 matrix of float)

-0:143            'm44' (4X4 matrix of float)

+0:143        move second child to first child (temp 4X4 matrix of float)

+0:143          'r4' (temp 4X4 matrix of float)

+0:143          component-wise multiply (global 4X4 matrix of float)

+0:143            'm44' (global 4X4 matrix of float)

+0:143            'm44' (global 4X4 matrix of float)

 0:145      Sequence

-0:145        move second child to first child (2X3 matrix of float)

-0:145          'r23' (2X3 matrix of float)

-0:145          component-wise multiply (2X3 matrix of float)

-0:145            'm23' (2X3 matrix of float)

-0:145            'm23' (2X3 matrix of float)

+0:145        move second child to first child (temp 2X3 matrix of float)

+0:145          'r23' (temp 2X3 matrix of float)

+0:145          component-wise multiply (global 2X3 matrix of float)

+0:145            'm23' (global 2X3 matrix of float)

+0:145            'm23' (global 2X3 matrix of float)

 0:146      Sequence

-0:146        move second child to first child (2X4 matrix of float)

-0:146          'r24' (2X4 matrix of float)

-0:146          component-wise multiply (2X4 matrix of float)

-0:146            'm24' (2X4 matrix of float)

-0:146            'm24' (2X4 matrix of float)

+0:146        move second child to first child (temp 2X4 matrix of float)

+0:146          'r24' (temp 2X4 matrix of float)

+0:146          component-wise multiply (global 2X4 matrix of float)

+0:146            'm24' (global 2X4 matrix of float)

+0:146            'm24' (global 2X4 matrix of float)

 0:147      Sequence

-0:147        move second child to first child (3X2 matrix of float)

-0:147          'r32' (3X2 matrix of float)

-0:147          component-wise multiply (3X2 matrix of float)

-0:147            'm32' (3X2 matrix of float)

-0:147            'm32' (3X2 matrix of float)

+0:147        move second child to first child (temp 3X2 matrix of float)

+0:147          'r32' (temp 3X2 matrix of float)

+0:147          component-wise multiply (global 3X2 matrix of float)

+0:147            'm32' (global 3X2 matrix of float)

+0:147            'm32' (global 3X2 matrix of float)

 0:148      Sequence

-0:148        move second child to first child (3X4 matrix of float)

-0:148          'r34' (3X4 matrix of float)

-0:148          component-wise multiply (3X4 matrix of float)

-0:148            'm34' (3X4 matrix of float)

-0:148            'm34' (3X4 matrix of float)

+0:148        move second child to first child (temp 3X4 matrix of float)

+0:148          'r34' (temp 3X4 matrix of float)

+0:148          component-wise multiply (global 3X4 matrix of float)

+0:148            'm34' (global 3X4 matrix of float)

+0:148            'm34' (global 3X4 matrix of float)

 0:149      Sequence

-0:149        move second child to first child (4X2 matrix of float)

-0:149          'r42' (4X2 matrix of float)

-0:149          component-wise multiply (4X2 matrix of float)

-0:149            'm42' (4X2 matrix of float)

-0:149            'm42' (4X2 matrix of float)

+0:149        move second child to first child (temp 4X2 matrix of float)

+0:149          'r42' (temp 4X2 matrix of float)

+0:149          component-wise multiply (global 4X2 matrix of float)

+0:149            'm42' (global 4X2 matrix of float)

+0:149            'm42' (global 4X2 matrix of float)

 0:150      Sequence

-0:150        move second child to first child (4X3 matrix of float)

-0:150          'r43' (4X3 matrix of float)

-0:150          component-wise multiply (4X3 matrix of float)

-0:150            'm43' (4X3 matrix of float)

-0:150            'm43' (4X3 matrix of float)

-0:156  Function Definition: matConst( (void)

+0:150        move second child to first child (temp 4X3 matrix of float)

+0:150          'r43' (temp 4X3 matrix of float)

+0:150          component-wise multiply (global 4X3 matrix of float)

+0:150            'm43' (global 4X3 matrix of float)

+0:150            'm43' (global 4X3 matrix of float)

+0:156  Function Definition: matConst( (global void)

 0:156    Function Parameters: 

 0:?     Sequence

 0:162      Sequence

-0:162        move second child to first child (4X4 matrix of float)

-0:162          'm4g' (4X4 matrix of float)

-0:162          Construct mat4 (4X4 matrix of float)

-0:162            'v2' (2-component vector of float)

-0:162            'v3' (3-component vector of float)

-0:162            'v3' (3-component vector of float)

-0:162            'v3' (3-component vector of float)

-0:162            'v3' (3-component vector of float)

-0:162            'v3' (3-component vector of float)

+0:162        move second child to first child (temp 4X4 matrix of float)

+0:162          'm4g' (temp 4X4 matrix of float)

+0:162          Construct mat4 (temp 4X4 matrix of float)

+0:162            'v2' (temp 2-component vector of float)

+0:162            'v3' (temp 3-component vector of float)

+0:162            'v3' (temp 3-component vector of float)

+0:162            'v3' (temp 3-component vector of float)

+0:162            'v3' (temp 3-component vector of float)

+0:162            'v3' (temp 3-component vector of float)

 0:163      Sequence

-0:163        move second child to first child (4X4 matrix of float)

-0:163          'm4' (4X4 matrix of float)

-0:163          Construct mat4 (4X4 matrix of float)

-0:163            'v2' (2-component vector of float)

-0:163            'v3' (3-component vector of float)

-0:163            'v3' (3-component vector of float)

-0:163            'v3' (3-component vector of float)

-0:163            'v3' (3-component vector of float)

-0:163            'v2' (2-component vector of float)

+0:163        move second child to first child (temp 4X4 matrix of float)

+0:163          'm4' (temp 4X4 matrix of float)

+0:163          Construct mat4 (temp 4X4 matrix of float)

+0:163            'v2' (temp 2-component vector of float)

+0:163            'v3' (temp 3-component vector of float)

+0:163            'v3' (temp 3-component vector of float)

+0:163            'v3' (temp 3-component vector of float)

+0:163            'v3' (temp 3-component vector of float)

+0:163            'v2' (temp 2-component vector of float)

 0:164      Sequence

-0:164        move second child to first child (3X3 matrix of float)

-0:164          'm3' (3X3 matrix of float)

-0:164          Construct mat3 (3X3 matrix of float)

-0:164            'm4' (4X4 matrix of float)

+0:164        move second child to first child (temp 3X3 matrix of float)

+0:164          'm3' (temp 3X3 matrix of float)

+0:164          Construct mat3 (temp 3X3 matrix of float)

+0:164            'm4' (temp 4X4 matrix of float)

 0:165      Sequence

-0:165        move second child to first child (3X3 matrix of float)

-0:165          'm3b1' (3X3 matrix of float)

-0:165          Construct mat3 (3X3 matrix of float)

-0:165            'm4' (4X4 matrix of float)

-0:165            'v2' (2-component vector of float)

+0:165        move second child to first child (temp 3X3 matrix of float)

+0:165          'm3b1' (temp 3X3 matrix of float)

+0:165          Construct mat3 (temp 3X3 matrix of float)

+0:165            'm4' (temp 4X4 matrix of float)

+0:165            'v2' (temp 2-component vector of float)

 0:166      Sequence

-0:166        move second child to first child (3X3 matrix of float)

-0:166          'm3b2' (3X3 matrix of float)

-0:166          Construct mat3 (3X3 matrix of float)

-0:166            'm4' (4X4 matrix of float)

-0:166            'm4' (4X4 matrix of float)

+0:166        move second child to first child (temp 3X3 matrix of float)

+0:166          'm3b2' (temp 3X3 matrix of float)

+0:166          Construct mat3 (temp 3X3 matrix of float)

+0:166            'm4' (temp 4X4 matrix of float)

+0:166            'm4' (temp 4X4 matrix of float)

 0:167      Sequence

-0:167        move second child to first child (3X2 matrix of float)

-0:167          'm32' (3X2 matrix of float)

-0:167          Construct mat3x2 (3X2 matrix of float)

-0:167            'm4' (4X4 matrix of float)

+0:167        move second child to first child (temp 3X2 matrix of float)

+0:167          'm32' (temp 3X2 matrix of float)

+0:167          Construct mat3x2 (temp 3X2 matrix of float)

+0:167            'm4' (temp 4X4 matrix of float)

 0:168      Sequence

-0:168        move second child to first child (4X4 matrix of float)

-0:168          'm4c' (4X4 matrix of float)

-0:168          Construct mat4 (4X4 matrix of float)

-0:168            'm32' (3X2 matrix of float)

+0:168        move second child to first child (temp 4X4 matrix of float)

+0:168          'm4c' (temp 4X4 matrix of float)

+0:168          Construct mat4 (temp 4X4 matrix of float)

+0:168            'm32' (temp 3X2 matrix of float)

 0:169      Sequence

-0:169        move second child to first child (3X3 matrix of float)

-0:169          'm3s' (3X3 matrix of float)

-0:169          Construct mat3 (3X3 matrix of float)

-0:169            direct index (float)

-0:169              'v2' (2-component vector of float)

+0:169        move second child to first child (temp 3X3 matrix of float)

+0:169          'm3s' (temp 3X3 matrix of float)

+0:169          Construct mat3 (temp 3X3 matrix of float)

+0:169            direct index (temp float)

+0:169              'v2' (temp 2-component vector of float)

 0:169              Constant:

 0:169                0 (const int)

 0:171      Sequence

-0:171        move second child to first child (2-element array of 3X3 matrix of float)

-0:171          'm3a1' (2-element array of 3X3 matrix of float)

-0:171          Construct mat3 (2-element array of 3X3 matrix of float)

-0:171            'm3s' (3X3 matrix of float)

-0:171            'm3s' (3X3 matrix of float)

-0:179  Function Definition: foo2323( (void)

+0:171        move second child to first child (temp 2-element array of 3X3 matrix of float)

+0:171          'm3a1' (temp 2-element array of 3X3 matrix of float)

+0:171          Construct mat3 (temp 2-element array of 3X3 matrix of float)

+0:171            'm3s' (temp 3X3 matrix of float)

+0:171            'm3s' (temp 3X3 matrix of float)

+0:179  Function Definition: foo2323( (global void)

 0:179    Function Parameters: 

 0:?     Sequence

-0:184      move second child to first child (4-component vector of float)

-0:184        'v' (4-component vector of float)

-0:184        Function Call: texture2DLod(s21;vf2;f1; (4-component vector of float)

+0:184      move second child to first child (temp 4-component vector of float)

+0:184        'v' (temp 4-component vector of float)

+0:184        Function Call: texture2DLod(s21;vf2;f1; (global 4-component vector of float)

 0:184          's2D' (uniform sampler2D)

-0:184          'v2' (2-component vector of float)

-0:184          'f' (float)

-0:185      move second child to first child (4-component vector of float)

-0:185        'v' (4-component vector of float)

-0:185        Function Call: texture3DProjLod(s31;vf4;f1; (4-component vector of float)

+0:184          'v2' (temp 2-component vector of float)

+0:184          'f' (temp float)

+0:185      move second child to first child (temp 4-component vector of float)

+0:185        'v' (temp 4-component vector of float)

+0:185        Function Call: texture3DProjLod(s31;vf4;f1; (global 4-component vector of float)

 0:185          's3D' (uniform sampler3D)

-0:185          'v' (4-component vector of float)

-0:185          'f' (float)

-0:186      move second child to first child (4-component vector of float)

-0:186        'v' (4-component vector of float)

-0:186        Function Call: texture1DProjLod(s11;vf4;f1; (4-component vector of float)

+0:185          'v' (temp 4-component vector of float)

+0:185          'f' (temp float)

+0:186      move second child to first child (temp 4-component vector of float)

+0:186        'v' (temp 4-component vector of float)

+0:186        Function Call: texture1DProjLod(s11;vf4;f1; (global 4-component vector of float)

 0:186          's1D' (uniform sampler1D)

-0:186          'v' (4-component vector of float)

-0:186          'f' (float)

-0:187      move second child to first child (4-component vector of float)

-0:187        'v' (4-component vector of float)

-0:187        Function Call: shadow2DProjLod(sS21;vf4;f1; (4-component vector of float)

+0:186          'v' (temp 4-component vector of float)

+0:186          'f' (temp float)

+0:187      move second child to first child (temp 4-component vector of float)

+0:187        'v' (temp 4-component vector of float)

+0:187        Function Call: shadow2DProjLod(sS21;vf4;f1; (global 4-component vector of float)

 0:187          's2DS' (uniform sampler2DShadow)

-0:187          'v' (4-component vector of float)

-0:187          'f' (float)

-0:189      move second child to first child (4-component vector of float)

-0:189        'v' (4-component vector of float)

-0:189        Function Call: texture1DGradARB(s11;f1;f1;f1; (4-component vector of float)

+0:187          'v' (temp 4-component vector of float)

+0:187          'f' (temp float)

+0:189      move second child to first child (temp 4-component vector of float)

+0:189        'v' (temp 4-component vector of float)

+0:189        Function Call: texture1DGradARB(s11;f1;f1;f1; (global 4-component vector of float)

 0:189          's1D' (uniform sampler1D)

-0:189          'f' (float)

-0:189          'f' (float)

-0:189          'f' (float)

-0:190      move second child to first child (4-component vector of float)

-0:190        'v' (4-component vector of float)

-0:190        Function Call: texture2DProjGradARB(s21;vf4;vf2;vf2; (4-component vector of float)

+0:189          'f' (temp float)

+0:189          'f' (temp float)

+0:189          'f' (temp float)

+0:190      move second child to first child (temp 4-component vector of float)

+0:190        'v' (temp 4-component vector of float)

+0:190        Function Call: texture2DProjGradARB(s21;vf4;vf2;vf2; (global 4-component vector of float)

 0:190          's2D' (uniform sampler2D)

-0:190          'v' (4-component vector of float)

-0:190          'v2' (2-component vector of float)

-0:190          'v2' (2-component vector of float)

-0:191      move second child to first child (4-component vector of float)

-0:191        'v' (4-component vector of float)

-0:191        Function Call: shadow2DProjGradARB(sS21;vf4;vf2;vf2; (4-component vector of float)

+0:190          'v' (temp 4-component vector of float)

+0:190          'v2' (temp 2-component vector of float)

+0:190          'v2' (temp 2-component vector of float)

+0:191      move second child to first child (temp 4-component vector of float)

+0:191        'v' (temp 4-component vector of float)

+0:191        Function Call: shadow2DProjGradARB(sS21;vf4;vf2;vf2; (global 4-component vector of float)

 0:191          's2DS' (uniform sampler2DShadow)

-0:191          'v' (4-component vector of float)

-0:191          'v2' (2-component vector of float)

-0:191          'v2' (2-component vector of float)

-0:196  Function Definition: foo2324( (void)

+0:191          'v' (temp 4-component vector of float)

+0:191          'v2' (temp 2-component vector of float)

+0:191          'v2' (temp 2-component vector of float)

+0:196  Function Definition: foo2324( (global void)

 0:196    Function Parameters: 

 0:?     Sequence

-0:201      move second child to first child (4-component vector of float)

-0:201        'v' (4-component vector of float)

-0:201        Function Call: texture2DLod(s21;vf2;f1; (4-component vector of float)

+0:201      move second child to first child (temp 4-component vector of float)

+0:201        'v' (temp 4-component vector of float)

+0:201        Function Call: texture2DLod(s21;vf2;f1; (global 4-component vector of float)

 0:201          's2D' (uniform sampler2D)

-0:201          'v2' (2-component vector of float)

-0:201          'f' (float)

-0:202      move second child to first child (4-component vector of float)

-0:202        'v' (4-component vector of float)

-0:202        Function Call: texture3DProjLod(s31;vf4;f1; (4-component vector of float)

+0:201          'v2' (temp 2-component vector of float)

+0:201          'f' (temp float)

+0:202      move second child to first child (temp 4-component vector of float)

+0:202        'v' (temp 4-component vector of float)

+0:202        Function Call: texture3DProjLod(s31;vf4;f1; (global 4-component vector of float)

 0:202          's3D' (uniform sampler3D)

-0:202          'v' (4-component vector of float)

-0:202          'f' (float)

-0:203      move second child to first child (4-component vector of float)

-0:203        'v' (4-component vector of float)

-0:203        Function Call: texture1DProjLod(s11;vf4;f1; (4-component vector of float)

+0:202          'v' (temp 4-component vector of float)

+0:202          'f' (temp float)

+0:203      move second child to first child (temp 4-component vector of float)

+0:203        'v' (temp 4-component vector of float)

+0:203        Function Call: texture1DProjLod(s11;vf4;f1; (global 4-component vector of float)

 0:203          's1D' (uniform sampler1D)

-0:203          'v' (4-component vector of float)

-0:203          'f' (float)

-0:204      move second child to first child (4-component vector of float)

-0:204        'v' (4-component vector of float)

-0:204        Function Call: shadow2DProjLod(sS21;vf4;f1; (4-component vector of float)

+0:203          'v' (temp 4-component vector of float)

+0:203          'f' (temp float)

+0:204      move second child to first child (temp 4-component vector of float)

+0:204        'v' (temp 4-component vector of float)

+0:204        Function Call: shadow2DProjLod(sS21;vf4;f1; (global 4-component vector of float)

 0:204          's2DS' (uniform sampler2DShadow)

-0:204          'v' (4-component vector of float)

-0:204          'f' (float)

-0:206      move second child to first child (4-component vector of float)

-0:206        'v' (4-component vector of float)

-0:206        Function Call: texture1DGradARB(s11;f1;f1;f1; (4-component vector of float)

+0:204          'v' (temp 4-component vector of float)

+0:204          'f' (temp float)

+0:206      move second child to first child (temp 4-component vector of float)

+0:206        'v' (temp 4-component vector of float)

+0:206        Function Call: texture1DGradARB(s11;f1;f1;f1; (global 4-component vector of float)

 0:206          's1D' (uniform sampler1D)

-0:206          'f' (float)

-0:206          'f' (float)

-0:206          'f' (float)

-0:207      move second child to first child (4-component vector of float)

-0:207        'v' (4-component vector of float)

-0:207        Function Call: texture2DProjGradARB(s21;vf4;vf2;vf2; (4-component vector of float)

+0:206          'f' (temp float)

+0:206          'f' (temp float)

+0:206          'f' (temp float)

+0:207      move second child to first child (temp 4-component vector of float)

+0:207        'v' (temp 4-component vector of float)

+0:207        Function Call: texture2DProjGradARB(s21;vf4;vf2;vf2; (global 4-component vector of float)

 0:207          's2D' (uniform sampler2D)

-0:207          'v' (4-component vector of float)

-0:207          'v2' (2-component vector of float)

-0:207          'v2' (2-component vector of float)

-0:208      move second child to first child (4-component vector of float)

-0:208        'v' (4-component vector of float)

-0:208        Function Call: shadow2DProjGradARB(sS21;vf4;vf2;vf2; (4-component vector of float)

+0:207          'v' (temp 4-component vector of float)

+0:207          'v2' (temp 2-component vector of float)

+0:207          'v2' (temp 2-component vector of float)

+0:208      move second child to first child (temp 4-component vector of float)

+0:208        'v' (temp 4-component vector of float)

+0:208        Function Call: shadow2DProjGradARB(sS21;vf4;vf2;vf2; (global 4-component vector of float)

 0:208          's2DS' (uniform sampler2DShadow)

-0:208          'v' (4-component vector of float)

-0:208          'v2' (2-component vector of float)

-0:208          'v2' (2-component vector of float)

-0:209      'v' (4-component vector of float)

-0:214  Function Definition: foo121111( (void)

+0:208          'v' (temp 4-component vector of float)

+0:208          'v2' (temp 2-component vector of float)

+0:208          'v2' (temp 2-component vector of float)

+0:209      'v' (temp 4-component vector of float)

+0:214  Function Definition: foo121111( (global void)

 0:214    Function Parameters: 

 0:?     Sequence

 0:217      Sequence

-0:217        move second child to first child (4-component vector of float)

-0:217          'v' (4-component vector of float)

-0:217          Function Call: texture2DRect(sR21;vf2; (4-component vector of float)

+0:217        move second child to first child (temp 4-component vector of float)

+0:217          'v' (temp 4-component vector of float)

+0:217          Function Call: texture2DRect(sR21;vf2; (global 4-component vector of float)

 0:217            's2DRbad' (uniform sampler2DRect)

-0:217            'v2' (2-component vector of float)

-0:225  Function Definition: foo12111( (void)

+0:217            'v2' (temp 2-component vector of float)

+0:225  Function Definition: foo12111( (global void)

 0:225    Function Parameters: 

 0:?     Sequence

-0:231      move second child to first child (4-component vector of float)

-0:231        'v' (4-component vector of float)

-0:231        Function Call: texture2DRect(sR21;vf2; (4-component vector of float)

+0:231      move second child to first child (temp 4-component vector of float)

+0:231        'v' (temp 4-component vector of float)

+0:231        Function Call: texture2DRect(sR21;vf2; (global 4-component vector of float)

 0:231          's2DR' (uniform sampler2DRect)

-0:231          'v2' (2-component vector of float)

-0:232      move second child to first child (4-component vector of float)

-0:232        'v' (4-component vector of float)

-0:232        Function Call: texture2DRectProj(sR21;vf3; (4-component vector of float)

+0:231          'v2' (temp 2-component vector of float)

+0:232      move second child to first child (temp 4-component vector of float)

+0:232        'v' (temp 4-component vector of float)

+0:232        Function Call: texture2DRectProj(sR21;vf3; (global 4-component vector of float)

 0:232          's2DR' (uniform sampler2DRect)

-0:232          'v3' (3-component vector of float)

-0:233      move second child to first child (4-component vector of float)

-0:233        'v' (4-component vector of float)

-0:233        Function Call: texture2DRectProj(sR21;vf4; (4-component vector of float)

+0:232          'v3' (temp 3-component vector of float)

+0:233      move second child to first child (temp 4-component vector of float)

+0:233        'v' (temp 4-component vector of float)

+0:233        Function Call: texture2DRectProj(sR21;vf4; (global 4-component vector of float)

 0:233          's2DR' (uniform sampler2DRect)

-0:233          'v4' (4-component vector of float)

-0:234      move second child to first child (4-component vector of float)

-0:234        'v' (4-component vector of float)

-0:234        Function Call: shadow2DRect(sSR21;vf3; (4-component vector of float)

+0:233          'v4' (temp 4-component vector of float)

+0:234      move second child to first child (temp 4-component vector of float)

+0:234        'v' (temp 4-component vector of float)

+0:234        Function Call: shadow2DRect(sSR21;vf3; (global 4-component vector of float)

 0:234          's2DRS' (uniform sampler2DRectShadow)

-0:234          'v3' (3-component vector of float)

-0:235      move second child to first child (4-component vector of float)

-0:235        'v' (4-component vector of float)

-0:235        Function Call: shadow2DRectProj(sSR21;vf4; (4-component vector of float)

+0:234          'v3' (temp 3-component vector of float)

+0:235      move second child to first child (temp 4-component vector of float)

+0:235        'v' (temp 4-component vector of float)

+0:235        Function Call: shadow2DRectProj(sSR21;vf4; (global 4-component vector of float)

 0:235          's2DRS' (uniform sampler2DRectShadow)

-0:235          'v4' (4-component vector of float)

-0:237      move second child to first child (4-component vector of float)

-0:237        'v' (4-component vector of float)

-0:237        Function Call: shadow2DRectProjGradARB(sSR21;vf4;vf2;vf2; (4-component vector of float)

+0:235          'v4' (temp 4-component vector of float)

+0:237      move second child to first child (temp 4-component vector of float)

+0:237        'v' (temp 4-component vector of float)

+0:237        Function Call: shadow2DRectProjGradARB(sSR21;vf4;vf2;vf2; (global 4-component vector of float)

 0:237          's2DRS' (uniform sampler2DRectShadow)

-0:237          'v' (4-component vector of float)

-0:237          'v2' (2-component vector of float)

-0:237          'v2' (2-component vector of float)

+0:237          'v' (temp 4-component vector of float)

+0:237          'v2' (temp 2-component vector of float)

+0:237          'v2' (temp 2-component vector of float)

 0:?   Linker Objects

-0:?     'lowp' (float)

-0:?     'mediump' (float)

-0:?     'highp' (float)

-0:?     'precision' (float)

+0:?     'lowp' (global float)

+0:?     'mediump' (global float)

+0:?     'highp' (global float)

+0:?     'precision' (global float)

 0:?     'i' (smooth in 4-component vector of float)

 0:?     'o' (out 4-component vector of float)

 0:?     's2D' (uniform sampler2D)

 0:?     'centTexCoord' (centroid smooth in 2-component vector of float)

 0:?     'm' (uniform 4X2 matrix of float)

-0:?     'imageBuffer' (float)

-0:?     'uimage2DRect' (float)

-0:?     'a' (int)

+0:?     'imageBuffer' (global float)

+0:?     'uimage2DRect' (global float)

+0:?     'a' (temp int)

 0:?     'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

-0:?     'm22' (2X2 matrix of float)

-0:?     'm23' (2X3 matrix of float)

-0:?     'm24' (2X4 matrix of float)

-0:?     'm32' (3X2 matrix of float)

-0:?     'm33' (3X3 matrix of float)

-0:?     'm34' (3X4 matrix of float)

-0:?     'm42' (4X2 matrix of float)

-0:?     'm43' (4X3 matrix of float)

-0:?     'm44' (4X4 matrix of float)

+0:?     'm22' (global 2X2 matrix of float)

+0:?     'm23' (global 2X3 matrix of float)

+0:?     'm24' (global 2X4 matrix of float)

+0:?     'm32' (global 3X2 matrix of float)

+0:?     'm33' (global 3X3 matrix of float)

+0:?     'm34' (global 3X4 matrix of float)

+0:?     'm42' (global 4X2 matrix of float)

+0:?     'm43' (global 4X3 matrix of float)

+0:?     'm44' (global 4X4 matrix of float)

 0:?     's3D' (uniform sampler3D)

 0:?     's1D' (uniform sampler1D)

 0:?     's2DS' (uniform sampler2DShadow)

diff --git a/Test/baseResults/120.vert.out b/Test/baseResults/120.vert.out
index d5508d4..a5b1638 100644
--- a/Test/baseResults/120.vert.out
+++ b/Test/baseResults/120.vert.out
@@ -12,7 +12,7 @@
 ERROR: 0:31: 'length' : incomplete method syntax 

 ERROR: 0:32: 'length' : method does not accept any arguments 

 ERROR: 0:33: '.' : cannot apply to an array: flizbit

-ERROR: 0:33: '=' :  cannot convert from '7-element array of float' to 'int'

+ERROR: 0:33: '=' :  cannot convert from 'temp 7-element array of float' to 'temp int'

 ERROR: 0:34: '.' : cannot apply to an array: flizbit

 ERROR: 0:34: 'f' : can't use function syntax on variable 

 ERROR: 0:34: 'a4' : redefinition 

@@ -24,11 +24,11 @@
 ERROR: 0:40: 'arrays of arrays' : not supported with this profile: none

 ERROR: 0:40: 'constructor' : array constructor needs one argument per array element 

 ERROR: 0:40: 'arrays of arrays' : not supported with this profile: none

-ERROR: 0:40: '=' :  cannot convert from 'const float' to '2-element array of float'

+ERROR: 0:40: '=' :  cannot convert from 'const float' to 'temp 2-element array of float'

 ERROR: 0:41: 'arrays of arrays' : not supported with this profile: none

 ERROR: 0:41: 'constructor' : array constructor needs one argument per array element 

 ERROR: 0:41: 'arrays of arrays' : not supported with this profile: none

-ERROR: 0:41: '=' :  cannot convert from 'const float' to '2-element array of float'

+ERROR: 0:41: '=' :  cannot convert from 'const float' to 'temp 2-element array of float'

 ERROR: 0:50: 'arrays of arrays' : not supported with this profile: none

 ERROR: 0:51: 'arrays of arrays' : not supported with this profile: none

 ERROR: 0:52: 'arrays of arrays' : not supported with this profile: none

@@ -53,16 +53,16 @@
 ERROR: 0:168: 'bitwise and' : not supported for this version or the enabled extensions 

 ERROR: 0:168: 'bitwise inclusive or' : not supported for this version or the enabled extensions 

 ERROR: 0:171: 'modf' : no matching overloaded function found 

-ERROR: 0:171: '=' :  cannot convert from 'const float' to '3-component vector of float'

+ERROR: 0:171: '=' :  cannot convert from 'const float' to 'temp 3-component vector of float'

 ERROR: 0:172: 'trunc' : no matching overloaded function found 

 ERROR: 0:173: 'round' : no matching overloaded function found 

-ERROR: 0:173: '=' :  cannot convert from 'const float' to '2-component vector of float'

+ERROR: 0:173: '=' :  cannot convert from 'const float' to 'temp 2-component vector of float'

 ERROR: 0:174: 'roundEven' : no matching overloaded function found 

-ERROR: 0:174: '=' :  cannot convert from 'const float' to '2-component vector of float'

+ERROR: 0:174: '=' :  cannot convert from 'const float' to 'temp 2-component vector of float'

 ERROR: 0:175: 'isnan' : no matching overloaded function found 

-ERROR: 0:175: '=' :  cannot convert from 'const float' to '2-component vector of bool'

+ERROR: 0:175: '=' :  cannot convert from 'const float' to 'temp 2-component vector of bool'

 ERROR: 0:176: 'isinf' : no matching overloaded function found 

-ERROR: 0:176: '=' :  cannot convert from 'const float' to '4-component vector of bool'

+ERROR: 0:176: '=' :  cannot convert from 'const float' to 'temp 4-component vector of bool'

 ERROR: 0:178: 'sinh' : no matching overloaded function found 

 ERROR: 0:179: 'cosh' : no matching overloaded function found 

 ERROR: 0:179: 'tanh' : no matching overloaded function found 

@@ -71,7 +71,7 @@
 ERROR: 0:180: 'acosh' : no matching overloaded function found 

 ERROR: 0:181: 'atanh' : no matching overloaded function found 

 ERROR: 0:183: 'gl_VertexID' : undeclared identifier 

-ERROR: 0:183: '=' :  cannot convert from 'float' to 'int'

+ERROR: 0:183: '=' :  cannot convert from 'temp float' to 'temp int'

 ERROR: 0:184: 'gl_ClipDistance' : undeclared identifier 

 ERROR: 0:184: 'gl_ClipDistance' :  left of '[' is not of type array, matrix, or vector  

 ERROR: 0:184: 'assign' :  l-value required (can't modify a const)

@@ -83,77 +83,77 @@
 

 Shader version: 120

 ERROR: node is still EOpNull!

-0:15  Function Definition: main( (void)

+0:15  Function Definition: main( (global void)

 0:15    Function Parameters: 

 0:17    Sequence

-0:17      move second child to first child (2-component vector of float)

+0:17      move second child to first child (temp 2-component vector of float)

 0:17        'centTexCoord' (invariant smooth out 2-component vector of float)

 0:17        'attv2' (in 2-component vector of float)

-0:18      move second child to first child (4-component vector of float)

+0:18      move second child to first child (temp 4-component vector of float)

 0:18        'gl_Position' (invariant gl_Position 4-component vector of float)

 0:18        'attv4' (in 4-component vector of float)

-0:20      move second child to first child (4-component vector of float)

+0:20      move second child to first child (temp 4-component vector of float)

 0:20        'gl_ClipVertex' (gl_ClipVertex 4-component vector of float)

 0:20        'attv4' (in 4-component vector of float)

-0:21      move second child to first child (float)

+0:21      move second child to first child (temp float)

 0:21        Constant:

 0:21          0.000000

 0:21        Constant:

 0:21          0.200000

-0:25      move second child to first child (4-component vector of float)

+0:25      move second child to first child (temp 4-component vector of float)

 0:25        'gl_Position' (invariant gl_Position 4-component vector of float)

-0:25        direct index (4-component vector of float)

-0:25          'b' (12-element array of 4-component vector of float)

+0:25        direct index (temp 4-component vector of float)

+0:25          'b' (temp 12-element array of 4-component vector of float)

 0:25          Constant:

 0:25            11 (const int)

 0:28      Sequence

-0:28        move second child to first child (int)

-0:28          'a1' (int)

+0:28        move second child to first child (temp int)

+0:28          'a1' (temp int)

 0:28          Constant:

 0:28            1 (const int)

 0:30      Sequence

-0:30        move second child to first child (int)

-0:30          'aa' (int)

+0:30        move second child to first child (temp int)

+0:30          'aa' (temp int)

 0:30          Constant:

 0:30            7 (const int)

 0:31      Sequence

-0:31        move second child to first child (int)

-0:31          'a2' (int)

+0:31        move second child to first child (temp int)

+0:31          'a2' (temp int)

 0:32      Sequence

-0:32        move second child to first child (int)

-0:32          'a3' (int)

+0:32        move second child to first child (temp int)

+0:32          'a3' (temp int)

 0:32          Constant:

 0:32            1 (const int)

-0:43      move second child to first child (float)

+0:43      move second child to first child (temp float)

 0:43        'gl_PointSize' (invariant gl_PointSize float)

 0:43        Constant:

 0:43          3.800000

-0:61  Function Definition: overloadB(f1;f1; (void)

+0:61  Function Definition: overloadB(f1;f1; (global void)

 0:61    Function Parameters: 

 0:61      '' (in float)

 0:61      '' (const (read only) float)

-0:78  Function Definition: foo( (void)

+0:78  Function Definition: foo( (global void)

 0:78    Function Parameters: 

 0:?     Sequence

-0:83      Function Call: overloadB(f1;f1; (void)

-0:83        'f' (float)

-0:83        'f' (float)

-0:84      Function Call: overloadB(f1;f1; (void)

-0:84        'f' (float)

+0:83      Function Call: overloadB(f1;f1; (global void)

+0:83        'f' (temp float)

+0:83        'f' (temp float)

+0:84      Function Call: overloadB(f1;f1; (global void)

+0:84        'f' (temp float)

 0:84        Constant:

 0:84          2.000000

-0:85      Function Call: overloadB(f1;f1; (void)

+0:85      Function Call: overloadB(f1;f1; (global void)

 0:85        Constant:

 0:85          1.000000

-0:85        Convert int to float (float)

-0:85          'i' (int)

+0:85        Convert int to float (temp float)

+0:85          'i' (temp int)

 0:87      Constant:

 0:87        0.000000

-0:88      Function Call: overloadC(i1;i1; (2-component vector of float)

+0:88      Function Call: overloadC(i1;i1; (global 2-component vector of float)

 0:88        Constant:

 0:88          1 (const int)

-0:88        'i' (int)

-0:89      Function Call: overloadC(vf2;vf2; (2-component vector of float)

+0:88        'i' (temp int)

+0:89      Function Call: overloadC(vf2;vf2; (global 2-component vector of float)

 0:89        Constant:

 0:89          1.000000

 0:89          1.000000

@@ -162,41 +162,41 @@
 0:89          2.000000

 0:90      Constant:

 0:90        0.000000

-0:91      Function Call: overloadC(vf2;vf2; (2-component vector of float)

+0:91      Function Call: overloadC(vf2;vf2; (global 2-component vector of float)

 0:91        Constant:

 0:91          1.000000

 0:91          1.000000

 0:91        Constant:

 0:91          2.000000

 0:91          2.000000

-0:93      Function Call: overloadD(i1;f1; (3-component vector of float)

-0:93        'i' (int)

-0:93        'f' (float)

-0:94      Function Call: overloadD(f1;i1; (3-component vector of float)

-0:94        'f' (float)

-0:94        'i' (int)

-0:95      Function Call: overloadD(f1;i1; (3-component vector of float)

-0:95        Convert int to float (float)

-0:95          'i' (int)

-0:95        'i' (int)

+0:93      Function Call: overloadD(i1;f1; (global 3-component vector of float)

+0:93        'i' (temp int)

+0:93        'f' (temp float)

+0:94      Function Call: overloadD(f1;i1; (global 3-component vector of float)

+0:94        'f' (temp float)

+0:94        'i' (temp int)

+0:95      Function Call: overloadD(f1;i1; (global 3-component vector of float)

+0:95        Convert int to float (temp float)

+0:95          'i' (temp int)

+0:95        'i' (temp int)

 0:98      Constant:

 0:98        0.000000

 0:100      Constant:

 0:100        0.841471

-0:101      Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:101      Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:101        's2D' (uniform sampler2D)

 0:101        Constant:

 0:101          0.000000

 0:101          0.000000

-0:102      clamp (4-component vector of float)

+0:102      clamp (global 4-component vector of float)

 0:102        'attv4' (in 4-component vector of float)

 0:102        Constant:

 0:102          0.000000

 0:102        Constant:

 0:102          1.000000

-0:103      clamp (4-component vector of float)

-0:103        Convert int to float (4-component vector of float)

-0:103          Convert float to int (4-component vector of int)

+0:103      clamp (global 4-component vector of float)

+0:103        Convert int to float (temp 4-component vector of float)

+0:103          Convert float to int (temp 4-component vector of int)

 0:103            'attv4' (in 4-component vector of float)

 0:103        Constant:

 0:103          0.000000

@@ -208,11 +208,11 @@
 0:107        0.000000

 0:108      Constant:

 0:108        0.000000

-0:109      Function Call: overloadE(vf2; (3-component vector of float)

+0:109      Function Call: overloadE(vf2; (global 3-component vector of float)

 0:109        Constant:

 0:109          3.300000

 0:109          3.300000

-0:110      Function Call: overloadE(mf22; (3-component vector of float)

+0:110      Function Call: overloadE(mf22; (global 3-component vector of float)

 0:110        Constant:

 0:110          0.500000

 0:110          0.000000

@@ -220,106 +220,106 @@
 0:110          0.500000

 0:111      Constant:

 0:111        0.000000

-0:112      Function Call: overloadE(vf2; (3-component vector of float)

+0:112      Function Call: overloadE(vf2; (global 3-component vector of float)

 0:112        Constant:

 0:112          1.000000

 0:112          1.000000

-0:115      Function Call: overloadE(f1[2]; (3-component vector of float)

-0:115        'b' (2-element array of float)

+0:115      Function Call: overloadE(f1[2]; (global 3-component vector of float)

+0:115        'b' (temp 2-element array of float)

 0:117      Constant:

 0:117        0.000000

-0:118      Function Call: overloadF(i1; (3-component vector of float)

+0:118      Function Call: overloadF(i1; (global 3-component vector of float)

 0:118        Constant:

 0:118          1 (const int)

-0:128  Function Definition: foo2( (void)

+0:128  Function Definition: foo2( (global void)

 0:128    Function Parameters: 

 0:?     Sequence

-0:135      Comma (void)

-0:135        Function Call: outFun(f1;vi2;i1;f1; (void)

-0:135          Convert int to float (float)

-0:135            'i' (int)

-0:135          'tempArg' (2-component vector of int)

-0:135          'i' (int)

-0:135          'f' (float)

-0:135        move second child to first child (2-component vector of float)

-0:135          'v2' (2-component vector of float)

-0:135          Convert int to float (2-component vector of float)

-0:135            'tempArg' (2-component vector of int)

-0:136      Comma (int)

-0:136        move second child to first child (int)

-0:136          'tempReturn' (int)

-0:136          Function Call: outFunRet(f1;i1;i1;vi4; (int)

-0:136            Convert int to float (float)

-0:136              'i' (int)

-0:136            'tempArg' (int)

-0:136            'i' (int)

-0:136            'tempArg' (4-component vector of int)

-0:136        move second child to first child (float)

-0:136          'f' (float)

-0:136          Convert int to float (float)

-0:136            'tempArg' (int)

-0:136        move second child to first child (4-component vector of float)

-0:136          'v4' (4-component vector of float)

-0:136          Convert int to float (4-component vector of float)

-0:136            'tempArg' (4-component vector of int)

-0:136        'tempReturn' (int)

+0:135      Comma (global void)

+0:135        Function Call: outFun(f1;vi2;i1;f1; (global void)

+0:135          Convert int to float (temp float)

+0:135            'i' (temp int)

+0:135          'tempArg' (temp 2-component vector of int)

+0:135          'i' (temp int)

+0:135          'f' (temp float)

+0:135        move second child to first child (temp 2-component vector of float)

+0:135          'v2' (temp 2-component vector of float)

+0:135          Convert int to float (temp 2-component vector of float)

+0:135            'tempArg' (temp 2-component vector of int)

+0:136      Comma (global int)

+0:136        move second child to first child (temp int)

+0:136          'tempReturn' (global int)

+0:136          Function Call: outFunRet(f1;i1;i1;vi4; (global int)

+0:136            Convert int to float (temp float)

+0:136              'i' (temp int)

+0:136            'tempArg' (temp int)

+0:136            'i' (temp int)

+0:136            'tempArg' (temp 4-component vector of int)

+0:136        move second child to first child (temp float)

+0:136          'f' (temp float)

+0:136          Convert int to float (temp float)

+0:136            'tempArg' (temp int)

+0:136        move second child to first child (temp 4-component vector of float)

+0:136          'v4' (temp 4-component vector of float)

+0:136          Convert int to float (temp 4-component vector of float)

+0:136            'tempArg' (temp 4-component vector of int)

+0:136        'tempReturn' (global int)

 0:137      Sequence

-0:137        move second child to first child (float)

-0:137          'ret' (float)

-0:137          Convert int to float (float)

-0:137            Comma (int)

-0:137              move second child to first child (int)

-0:137                'tempReturn' (int)

-0:137                Function Call: outFunRet(f1;i1;i1;vi4; (int)

-0:137                  Convert int to float (float)

-0:137                    'i' (int)

-0:137                  'tempArg' (int)

-0:137                  'i' (int)

-0:137                  'tempArg' (4-component vector of int)

-0:137              move second child to first child (float)

-0:137                'f' (float)

-0:137                Convert int to float (float)

-0:137                  'tempArg' (int)

-0:137              move second child to first child (4-component vector of float)

-0:137                'v4' (4-component vector of float)

-0:137                Convert int to float (4-component vector of float)

-0:137                  'tempArg' (4-component vector of int)

-0:137              'tempReturn' (int)

+0:137        move second child to first child (temp float)

+0:137          'ret' (temp float)

+0:137          Convert int to float (temp float)

+0:137            Comma (global int)

+0:137              move second child to first child (temp int)

+0:137                'tempReturn' (global int)

+0:137                Function Call: outFunRet(f1;i1;i1;vi4; (global int)

+0:137                  Convert int to float (temp float)

+0:137                    'i' (temp int)

+0:137                  'tempArg' (temp int)

+0:137                  'i' (temp int)

+0:137                  'tempArg' (temp 4-component vector of int)

+0:137              move second child to first child (temp float)

+0:137                'f' (temp float)

+0:137                Convert int to float (temp float)

+0:137                  'tempArg' (temp int)

+0:137              move second child to first child (temp 4-component vector of float)

+0:137                'v4' (temp 4-component vector of float)

+0:137                Convert int to float (temp 4-component vector of float)

+0:137                  'tempArg' (temp 4-component vector of int)

+0:137              'tempReturn' (global int)

 0:138      Sequence

-0:138        move second child to first child (2-component vector of float)

-0:138          'ret2' (2-component vector of float)

-0:138          Convert int to float (2-component vector of float)

-0:138            Comma (2-component vector of int)

-0:138              move second child to first child (2-component vector of int)

-0:138                'tempReturn' (2-component vector of int)

-0:138                Function Call: outFunRet(f1;vi4;i1;vi4; (2-component vector of int)

-0:138                  Convert int to float (float)

-0:138                    'i' (int)

-0:138                  'tempArg' (4-component vector of int)

-0:138                  'i' (int)

-0:138                  'tempArg' (4-component vector of int)

-0:138              move second child to first child (4-component vector of float)

-0:138                'v4' (4-component vector of float)

-0:138                Convert int to float (4-component vector of float)

-0:138                  'tempArg' (4-component vector of int)

-0:138              move second child to first child (4-component vector of float)

-0:138                'v4' (4-component vector of float)

-0:138                Convert int to float (4-component vector of float)

-0:138                  'tempArg' (4-component vector of int)

-0:138              'tempReturn' (2-component vector of int)

+0:138        move second child to first child (temp 2-component vector of float)

+0:138          'ret2' (temp 2-component vector of float)

+0:138          Convert int to float (temp 2-component vector of float)

+0:138            Comma (global 2-component vector of int)

+0:138              move second child to first child (temp 2-component vector of int)

+0:138                'tempReturn' (global 2-component vector of int)

+0:138                Function Call: outFunRet(f1;vi4;i1;vi4; (global 2-component vector of int)

+0:138                  Convert int to float (temp float)

+0:138                    'i' (temp int)

+0:138                  'tempArg' (temp 4-component vector of int)

+0:138                  'i' (temp int)

+0:138                  'tempArg' (temp 4-component vector of int)

+0:138              move second child to first child (temp 4-component vector of float)

+0:138                'v4' (temp 4-component vector of float)

+0:138                Convert int to float (temp 4-component vector of float)

+0:138                  'tempArg' (temp 4-component vector of int)

+0:138              move second child to first child (temp 4-component vector of float)

+0:138                'v4' (temp 4-component vector of float)

+0:138                Convert int to float (temp 4-component vector of float)

+0:138                  'tempArg' (temp 4-component vector of int)

+0:138              'tempReturn' (global 2-component vector of int)

 0:139      Sequence

-0:139        move second child to first child (bool)

-0:139          'b' (bool)

-0:139          any (bool)

-0:139            Compare Less Than (4-component vector of bool)

-0:139              'v4' (4-component vector of float)

+0:139        move second child to first child (temp bool)

+0:139          'b' (temp bool)

+0:139          any (global bool)

+0:139            Compare Less Than (global 4-component vector of bool)

+0:139              'v4' (temp 4-component vector of float)

 0:139              'attv4' (in 4-component vector of float)

-0:154  Function Definition: foo213( (void)

+0:154  Function Definition: foo213( (global void)

 0:154    Function Parameters: 

 0:156    Sequence

 0:156      Sequence

-0:156        move second child to first child (float)

-0:156          'f' (float)

+0:156        move second child to first child (temp float)

+0:156          'f' (temp float)

 0:156          Constant:

 0:156            3.000000

 0:157      switch

@@ -331,36 +331,36 @@
 0:158            Constant:

 0:158              1 (const int)

 0:?           Sequence

-0:159            move second child to first child (float)

-0:159              'f' (float)

-0:159              sine (float)

-0:159                'f' (float)

+0:159            move second child to first child (temp float)

+0:159              'f' (temp float)

+0:159              sine (global float)

+0:159                'f' (temp float)

 0:160            Branch: Break

 0:161          case:  with expression

 0:161            Constant:

 0:161              2 (const int)

 0:?           Sequence

-0:162            move second child to first child (float)

-0:162              'f' (float)

-0:162              component-wise multiply (float)

-0:162                'f' (float)

-0:162                'f' (float)

+0:162            move second child to first child (temp float)

+0:162              'f' (temp float)

+0:162              component-wise multiply (temp float)

+0:162                'f' (temp float)

+0:162                'f' (temp float)

 0:163          default: 

 0:?           Sequence

-0:164            move second child to first child (float)

-0:164              'f' (float)

+0:164            move second child to first child (temp float)

+0:164              'f' (temp float)

 0:164              Constant:

 0:164                3.000000

-0:168      inclusive-or (int)

-0:168        left-shift (int)

-0:168          'i' (int)

+0:168      inclusive-or (temp int)

+0:168        left-shift (temp int)

+0:168          'i' (temp int)

 0:168          Constant:

 0:168            3 (const int)

 0:168        Constant:

 0:168          69 (const int)

 0:172      Sequence

-0:172        move second child to first child (float)

-0:172          't' (float)

+0:172        move second child to first child (temp float)

+0:172          't' (temp float)

 0:172          Constant:

 0:172            0.000000

 0:178      Constant:

@@ -369,7 +369,7 @@
 0:180        0.000000

 0:181      Constant:

 0:181        0.000000

-0:184      move second child to first child (float)

+0:184      move second child to first child (temp float)

 0:184        Constant:

 0:184          0.000000

 0:184        Constant:

@@ -394,7 +394,7 @@
 0:?     'c2D' (in 2-component vector of float)

 0:?     'c3D' (in 3-component vector of float)

 0:?     'v4' (uniform 4-component vector of float)

-0:?     'abc' (int)

+0:?     'abc' (global int)

 

 

 Linked vertex stage:

@@ -402,77 +402,77 @@
 

 Shader version: 120

 ERROR: node is still EOpNull!

-0:15  Function Definition: main( (void)

+0:15  Function Definition: main( (global void)

 0:15    Function Parameters: 

 0:17    Sequence

-0:17      move second child to first child (2-component vector of float)

+0:17      move second child to first child (temp 2-component vector of float)

 0:17        'centTexCoord' (invariant smooth out 2-component vector of float)

 0:17        'attv2' (in 2-component vector of float)

-0:18      move second child to first child (4-component vector of float)

+0:18      move second child to first child (temp 4-component vector of float)

 0:18        'gl_Position' (invariant gl_Position 4-component vector of float)

 0:18        'attv4' (in 4-component vector of float)

-0:20      move second child to first child (4-component vector of float)

+0:20      move second child to first child (temp 4-component vector of float)

 0:20        'gl_ClipVertex' (gl_ClipVertex 4-component vector of float)

 0:20        'attv4' (in 4-component vector of float)

-0:21      move second child to first child (float)

+0:21      move second child to first child (temp float)

 0:21        Constant:

 0:21          0.000000

 0:21        Constant:

 0:21          0.200000

-0:25      move second child to first child (4-component vector of float)

+0:25      move second child to first child (temp 4-component vector of float)

 0:25        'gl_Position' (invariant gl_Position 4-component vector of float)

-0:25        direct index (4-component vector of float)

-0:25          'b' (12-element array of 4-component vector of float)

+0:25        direct index (temp 4-component vector of float)

+0:25          'b' (temp 12-element array of 4-component vector of float)

 0:25          Constant:

 0:25            11 (const int)

 0:28      Sequence

-0:28        move second child to first child (int)

-0:28          'a1' (int)

+0:28        move second child to first child (temp int)

+0:28          'a1' (temp int)

 0:28          Constant:

 0:28            1 (const int)

 0:30      Sequence

-0:30        move second child to first child (int)

-0:30          'aa' (int)

+0:30        move second child to first child (temp int)

+0:30          'aa' (temp int)

 0:30          Constant:

 0:30            7 (const int)

 0:31      Sequence

-0:31        move second child to first child (int)

-0:31          'a2' (int)

+0:31        move second child to first child (temp int)

+0:31          'a2' (temp int)

 0:32      Sequence

-0:32        move second child to first child (int)

-0:32          'a3' (int)

+0:32        move second child to first child (temp int)

+0:32          'a3' (temp int)

 0:32          Constant:

 0:32            1 (const int)

-0:43      move second child to first child (float)

+0:43      move second child to first child (temp float)

 0:43        'gl_PointSize' (invariant gl_PointSize float)

 0:43        Constant:

 0:43          3.800000

-0:61  Function Definition: overloadB(f1;f1; (void)

+0:61  Function Definition: overloadB(f1;f1; (global void)

 0:61    Function Parameters: 

 0:61      '' (in float)

 0:61      '' (const (read only) float)

-0:78  Function Definition: foo( (void)

+0:78  Function Definition: foo( (global void)

 0:78    Function Parameters: 

 0:?     Sequence

-0:83      Function Call: overloadB(f1;f1; (void)

-0:83        'f' (float)

-0:83        'f' (float)

-0:84      Function Call: overloadB(f1;f1; (void)

-0:84        'f' (float)

+0:83      Function Call: overloadB(f1;f1; (global void)

+0:83        'f' (temp float)

+0:83        'f' (temp float)

+0:84      Function Call: overloadB(f1;f1; (global void)

+0:84        'f' (temp float)

 0:84        Constant:

 0:84          2.000000

-0:85      Function Call: overloadB(f1;f1; (void)

+0:85      Function Call: overloadB(f1;f1; (global void)

 0:85        Constant:

 0:85          1.000000

-0:85        Convert int to float (float)

-0:85          'i' (int)

+0:85        Convert int to float (temp float)

+0:85          'i' (temp int)

 0:87      Constant:

 0:87        0.000000

-0:88      Function Call: overloadC(i1;i1; (2-component vector of float)

+0:88      Function Call: overloadC(i1;i1; (global 2-component vector of float)

 0:88        Constant:

 0:88          1 (const int)

-0:88        'i' (int)

-0:89      Function Call: overloadC(vf2;vf2; (2-component vector of float)

+0:88        'i' (temp int)

+0:89      Function Call: overloadC(vf2;vf2; (global 2-component vector of float)

 0:89        Constant:

 0:89          1.000000

 0:89          1.000000

@@ -481,41 +481,41 @@
 0:89          2.000000

 0:90      Constant:

 0:90        0.000000

-0:91      Function Call: overloadC(vf2;vf2; (2-component vector of float)

+0:91      Function Call: overloadC(vf2;vf2; (global 2-component vector of float)

 0:91        Constant:

 0:91          1.000000

 0:91          1.000000

 0:91        Constant:

 0:91          2.000000

 0:91          2.000000

-0:93      Function Call: overloadD(i1;f1; (3-component vector of float)

-0:93        'i' (int)

-0:93        'f' (float)

-0:94      Function Call: overloadD(f1;i1; (3-component vector of float)

-0:94        'f' (float)

-0:94        'i' (int)

-0:95      Function Call: overloadD(f1;i1; (3-component vector of float)

-0:95        Convert int to float (float)

-0:95          'i' (int)

-0:95        'i' (int)

+0:93      Function Call: overloadD(i1;f1; (global 3-component vector of float)

+0:93        'i' (temp int)

+0:93        'f' (temp float)

+0:94      Function Call: overloadD(f1;i1; (global 3-component vector of float)

+0:94        'f' (temp float)

+0:94        'i' (temp int)

+0:95      Function Call: overloadD(f1;i1; (global 3-component vector of float)

+0:95        Convert int to float (temp float)

+0:95          'i' (temp int)

+0:95        'i' (temp int)

 0:98      Constant:

 0:98        0.000000

 0:100      Constant:

 0:100        0.841471

-0:101      Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:101      Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:101        's2D' (uniform sampler2D)

 0:101        Constant:

 0:101          0.000000

 0:101          0.000000

-0:102      clamp (4-component vector of float)

+0:102      clamp (global 4-component vector of float)

 0:102        'attv4' (in 4-component vector of float)

 0:102        Constant:

 0:102          0.000000

 0:102        Constant:

 0:102          1.000000

-0:103      clamp (4-component vector of float)

-0:103        Convert int to float (4-component vector of float)

-0:103          Convert float to int (4-component vector of int)

+0:103      clamp (global 4-component vector of float)

+0:103        Convert int to float (temp 4-component vector of float)

+0:103          Convert float to int (temp 4-component vector of int)

 0:103            'attv4' (in 4-component vector of float)

 0:103        Constant:

 0:103          0.000000

@@ -527,11 +527,11 @@
 0:107        0.000000

 0:108      Constant:

 0:108        0.000000

-0:109      Function Call: overloadE(vf2; (3-component vector of float)

+0:109      Function Call: overloadE(vf2; (global 3-component vector of float)

 0:109        Constant:

 0:109          3.300000

 0:109          3.300000

-0:110      Function Call: overloadE(mf22; (3-component vector of float)

+0:110      Function Call: overloadE(mf22; (global 3-component vector of float)

 0:110        Constant:

 0:110          0.500000

 0:110          0.000000

@@ -539,106 +539,106 @@
 0:110          0.500000

 0:111      Constant:

 0:111        0.000000

-0:112      Function Call: overloadE(vf2; (3-component vector of float)

+0:112      Function Call: overloadE(vf2; (global 3-component vector of float)

 0:112        Constant:

 0:112          1.000000

 0:112          1.000000

-0:115      Function Call: overloadE(f1[2]; (3-component vector of float)

-0:115        'b' (2-element array of float)

+0:115      Function Call: overloadE(f1[2]; (global 3-component vector of float)

+0:115        'b' (temp 2-element array of float)

 0:117      Constant:

 0:117        0.000000

-0:118      Function Call: overloadF(i1; (3-component vector of float)

+0:118      Function Call: overloadF(i1; (global 3-component vector of float)

 0:118        Constant:

 0:118          1 (const int)

-0:128  Function Definition: foo2( (void)

+0:128  Function Definition: foo2( (global void)

 0:128    Function Parameters: 

 0:?     Sequence

-0:135      Comma (void)

-0:135        Function Call: outFun(f1;vi2;i1;f1; (void)

-0:135          Convert int to float (float)

-0:135            'i' (int)

-0:135          'tempArg' (2-component vector of int)

-0:135          'i' (int)

-0:135          'f' (float)

-0:135        move second child to first child (2-component vector of float)

-0:135          'v2' (2-component vector of float)

-0:135          Convert int to float (2-component vector of float)

-0:135            'tempArg' (2-component vector of int)

-0:136      Comma (int)

-0:136        move second child to first child (int)

-0:136          'tempReturn' (int)

-0:136          Function Call: outFunRet(f1;i1;i1;vi4; (int)

-0:136            Convert int to float (float)

-0:136              'i' (int)

-0:136            'tempArg' (int)

-0:136            'i' (int)

-0:136            'tempArg' (4-component vector of int)

-0:136        move second child to first child (float)

-0:136          'f' (float)

-0:136          Convert int to float (float)

-0:136            'tempArg' (int)

-0:136        move second child to first child (4-component vector of float)

-0:136          'v4' (4-component vector of float)

-0:136          Convert int to float (4-component vector of float)

-0:136            'tempArg' (4-component vector of int)

-0:136        'tempReturn' (int)

+0:135      Comma (global void)

+0:135        Function Call: outFun(f1;vi2;i1;f1; (global void)

+0:135          Convert int to float (temp float)

+0:135            'i' (temp int)

+0:135          'tempArg' (temp 2-component vector of int)

+0:135          'i' (temp int)

+0:135          'f' (temp float)

+0:135        move second child to first child (temp 2-component vector of float)

+0:135          'v2' (temp 2-component vector of float)

+0:135          Convert int to float (temp 2-component vector of float)

+0:135            'tempArg' (temp 2-component vector of int)

+0:136      Comma (global int)

+0:136        move second child to first child (temp int)

+0:136          'tempReturn' (global int)

+0:136          Function Call: outFunRet(f1;i1;i1;vi4; (global int)

+0:136            Convert int to float (temp float)

+0:136              'i' (temp int)

+0:136            'tempArg' (temp int)

+0:136            'i' (temp int)

+0:136            'tempArg' (temp 4-component vector of int)

+0:136        move second child to first child (temp float)

+0:136          'f' (temp float)

+0:136          Convert int to float (temp float)

+0:136            'tempArg' (temp int)

+0:136        move second child to first child (temp 4-component vector of float)

+0:136          'v4' (temp 4-component vector of float)

+0:136          Convert int to float (temp 4-component vector of float)

+0:136            'tempArg' (temp 4-component vector of int)

+0:136        'tempReturn' (global int)

 0:137      Sequence

-0:137        move second child to first child (float)

-0:137          'ret' (float)

-0:137          Convert int to float (float)

-0:137            Comma (int)

-0:137              move second child to first child (int)

-0:137                'tempReturn' (int)

-0:137                Function Call: outFunRet(f1;i1;i1;vi4; (int)

-0:137                  Convert int to float (float)

-0:137                    'i' (int)

-0:137                  'tempArg' (int)

-0:137                  'i' (int)

-0:137                  'tempArg' (4-component vector of int)

-0:137              move second child to first child (float)

-0:137                'f' (float)

-0:137                Convert int to float (float)

-0:137                  'tempArg' (int)

-0:137              move second child to first child (4-component vector of float)

-0:137                'v4' (4-component vector of float)

-0:137                Convert int to float (4-component vector of float)

-0:137                  'tempArg' (4-component vector of int)

-0:137              'tempReturn' (int)

+0:137        move second child to first child (temp float)

+0:137          'ret' (temp float)

+0:137          Convert int to float (temp float)

+0:137            Comma (global int)

+0:137              move second child to first child (temp int)

+0:137                'tempReturn' (global int)

+0:137                Function Call: outFunRet(f1;i1;i1;vi4; (global int)

+0:137                  Convert int to float (temp float)

+0:137                    'i' (temp int)

+0:137                  'tempArg' (temp int)

+0:137                  'i' (temp int)

+0:137                  'tempArg' (temp 4-component vector of int)

+0:137              move second child to first child (temp float)

+0:137                'f' (temp float)

+0:137                Convert int to float (temp float)

+0:137                  'tempArg' (temp int)

+0:137              move second child to first child (temp 4-component vector of float)

+0:137                'v4' (temp 4-component vector of float)

+0:137                Convert int to float (temp 4-component vector of float)

+0:137                  'tempArg' (temp 4-component vector of int)

+0:137              'tempReturn' (global int)

 0:138      Sequence

-0:138        move second child to first child (2-component vector of float)

-0:138          'ret2' (2-component vector of float)

-0:138          Convert int to float (2-component vector of float)

-0:138            Comma (2-component vector of int)

-0:138              move second child to first child (2-component vector of int)

-0:138                'tempReturn' (2-component vector of int)

-0:138                Function Call: outFunRet(f1;vi4;i1;vi4; (2-component vector of int)

-0:138                  Convert int to float (float)

-0:138                    'i' (int)

-0:138                  'tempArg' (4-component vector of int)

-0:138                  'i' (int)

-0:138                  'tempArg' (4-component vector of int)

-0:138              move second child to first child (4-component vector of float)

-0:138                'v4' (4-component vector of float)

-0:138                Convert int to float (4-component vector of float)

-0:138                  'tempArg' (4-component vector of int)

-0:138              move second child to first child (4-component vector of float)

-0:138                'v4' (4-component vector of float)

-0:138                Convert int to float (4-component vector of float)

-0:138                  'tempArg' (4-component vector of int)

-0:138              'tempReturn' (2-component vector of int)

+0:138        move second child to first child (temp 2-component vector of float)

+0:138          'ret2' (temp 2-component vector of float)

+0:138          Convert int to float (temp 2-component vector of float)

+0:138            Comma (global 2-component vector of int)

+0:138              move second child to first child (temp 2-component vector of int)

+0:138                'tempReturn' (global 2-component vector of int)

+0:138                Function Call: outFunRet(f1;vi4;i1;vi4; (global 2-component vector of int)

+0:138                  Convert int to float (temp float)

+0:138                    'i' (temp int)

+0:138                  'tempArg' (temp 4-component vector of int)

+0:138                  'i' (temp int)

+0:138                  'tempArg' (temp 4-component vector of int)

+0:138              move second child to first child (temp 4-component vector of float)

+0:138                'v4' (temp 4-component vector of float)

+0:138                Convert int to float (temp 4-component vector of float)

+0:138                  'tempArg' (temp 4-component vector of int)

+0:138              move second child to first child (temp 4-component vector of float)

+0:138                'v4' (temp 4-component vector of float)

+0:138                Convert int to float (temp 4-component vector of float)

+0:138                  'tempArg' (temp 4-component vector of int)

+0:138              'tempReturn' (global 2-component vector of int)

 0:139      Sequence

-0:139        move second child to first child (bool)

-0:139          'b' (bool)

-0:139          any (bool)

-0:139            Compare Less Than (4-component vector of bool)

-0:139              'v4' (4-component vector of float)

+0:139        move second child to first child (temp bool)

+0:139          'b' (temp bool)

+0:139          any (global bool)

+0:139            Compare Less Than (global 4-component vector of bool)

+0:139              'v4' (temp 4-component vector of float)

 0:139              'attv4' (in 4-component vector of float)

-0:154  Function Definition: foo213( (void)

+0:154  Function Definition: foo213( (global void)

 0:154    Function Parameters: 

 0:156    Sequence

 0:156      Sequence

-0:156        move second child to first child (float)

-0:156          'f' (float)

+0:156        move second child to first child (temp float)

+0:156          'f' (temp float)

 0:156          Constant:

 0:156            3.000000

 0:157      switch

@@ -650,36 +650,36 @@
 0:158            Constant:

 0:158              1 (const int)

 0:?           Sequence

-0:159            move second child to first child (float)

-0:159              'f' (float)

-0:159              sine (float)

-0:159                'f' (float)

+0:159            move second child to first child (temp float)

+0:159              'f' (temp float)

+0:159              sine (global float)

+0:159                'f' (temp float)

 0:160            Branch: Break

 0:161          case:  with expression

 0:161            Constant:

 0:161              2 (const int)

 0:?           Sequence

-0:162            move second child to first child (float)

-0:162              'f' (float)

-0:162              component-wise multiply (float)

-0:162                'f' (float)

-0:162                'f' (float)

+0:162            move second child to first child (temp float)

+0:162              'f' (temp float)

+0:162              component-wise multiply (temp float)

+0:162                'f' (temp float)

+0:162                'f' (temp float)

 0:163          default: 

 0:?           Sequence

-0:164            move second child to first child (float)

-0:164              'f' (float)

+0:164            move second child to first child (temp float)

+0:164              'f' (temp float)

 0:164              Constant:

 0:164                3.000000

-0:168      inclusive-or (int)

-0:168        left-shift (int)

-0:168          'i' (int)

+0:168      inclusive-or (temp int)

+0:168        left-shift (temp int)

+0:168          'i' (temp int)

 0:168          Constant:

 0:168            3 (const int)

 0:168        Constant:

 0:168          69 (const int)

 0:172      Sequence

-0:172        move second child to first child (float)

-0:172          't' (float)

+0:172        move second child to first child (temp float)

+0:172          't' (temp float)

 0:172          Constant:

 0:172            0.000000

 0:178      Constant:

@@ -688,7 +688,7 @@
 0:180        0.000000

 0:181      Constant:

 0:181        0.000000

-0:184      move second child to first child (float)

+0:184      move second child to first child (temp float)

 0:184        Constant:

 0:184          0.000000

 0:184        Constant:

@@ -713,5 +713,5 @@
 0:?     'c2D' (in 2-component vector of float)

 0:?     'c3D' (in 3-component vector of float)

 0:?     'v4' (uniform 4-component vector of float)

-0:?     'abc' (int)

+0:?     'abc' (global int)

 

diff --git a/Test/baseResults/130.frag.out b/Test/baseResults/130.frag.out
index b2d2ed2..25c05b7 100644
--- a/Test/baseResults/130.frag.out
+++ b/Test/baseResults/130.frag.out
@@ -4,20 +4,20 @@
 ERROR: 0:38: 'gl_Color' : redeclaring non-array as array 

 ERROR: 0:39: 'redeclaration' : cannot change storage, memory, or auxiliary qualification of gl_Color

 WARNING: 0:45: extension GL_ARB_texture_gather is being used for textureGather(...)

-ERROR: 0:62: '<' :  wrong operand types: no operation '<' exists that takes a left-hand operand of type '3-component vector of bool' and a right operand of type '3-component vector of bool' (or there is no acceptable conversion)

-ERROR: 0:63: '>' :  wrong operand types: no operation '>' exists that takes a left-hand operand of type '3-component vector of uint' and a right operand of type '3-component vector of uint' (or there is no acceptable conversion)

+ERROR: 0:62: '<' :  wrong operand types: no operation '<' exists that takes a left-hand operand of type 'temp 3-component vector of bool' and a right operand of type 'temp 3-component vector of bool' (or there is no acceptable conversion)

+ERROR: 0:63: '>' :  wrong operand types: no operation '>' exists that takes a left-hand operand of type 'temp 3-component vector of uint' and a right operand of type 'temp 3-component vector of uint' (or there is no acceptable conversion)

 ERROR: 0:64: '>=' :  wrong operand types: no operation '>=' exists that takes a left-hand operand of type 'const 2-component vector of uint' and a right operand of type 'const 2-component vector of uint' (or there is no acceptable conversion)

 ERROR: 0:80: 'textureGatherOffset' : no matching overloaded function found 

-ERROR: 0:80: 'assign' :  cannot convert from 'const float' to '4-component vector of float'

+ERROR: 0:80: 'assign' :  cannot convert from 'const float' to 'temp 4-component vector of float'

 ERROR: 0:81: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions 

 ERROR: 0:84: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions 

 ERROR: 0:85: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions 

 WARNING: 0:88: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5

 ERROR: 0:120: 'line continuation' : not supported for this version or the enabled extensions 

 ERROR: 0:126: 'uniform block' : not supported for this version or the enabled extensions 

-ERROR: 0:140: 'length' : does not operate on this type: bool

+ERROR: 0:140: 'length' : does not operate on this type: temp bool

 ERROR: 0:140: 'boolb' : can't use function syntax on variable 

-ERROR: 0:141: 'length' : does not operate on this type: float

+ERROR: 0:141: 'length' : does not operate on this type: temp float

 ERROR: 0:141: '' : function call, method, or subroutine call expected 

 ERROR: 0:141: '' : no matching overloaded function found 

 ERROR: 0:142: 'length' : incomplete method syntax 

@@ -42,77 +42,77 @@
 Requested GL_ARB_texture_rectangle

 using early_fragment_tests

 ERROR: node is still EOpNull!

-0:16  Function Definition: main( (void)

+0:16  Function Definition: main( (global void)

 0:16    Function Parameters: 

 0:18    Sequence

 0:18      Sequence

-0:18        move second child to first child (float)

-0:18          'clip' (float)

-0:18          direct index (smooth float)

+0:18        move second child to first child (temp float)

+0:18          'clip' (temp float)

+0:18          direct index (smooth temp float)

 0:18            'gl_ClipDistance' (smooth in implicitly-sized array of float)

 0:18            Constant:

 0:18              3 (const int)

-0:23  Function Definition: foo( (void)

+0:23  Function Definition: foo( (global void)

 0:23    Function Parameters: 

 0:25    Sequence

 0:25      Sequence

-0:25        move second child to first child (4-component vector of float)

-0:25          's' (4-component vector of float)

-0:25          Function Call: textureGather(sC1;vf3; (4-component vector of float)

+0:25        move second child to first child (temp 4-component vector of float)

+0:25          's' (temp 4-component vector of float)

+0:25          Function Call: textureGather(sC1;vf3; (global 4-component vector of float)

 0:25            'sampC' (uniform samplerCube)

 0:25            Constant:

 0:25              0.200000

 0:25              0.200000

 0:25              0.200000

-0:30  Function Definition: bar( (void)

+0:30  Function Definition: bar( (global void)

 0:30    Function Parameters: 

 0:32    Sequence

 0:32      Sequence

-0:32        move second child to first child (4-component vector of float)

-0:32          's' (4-component vector of float)

-0:32          Function Call: textureGather(sC1;vf3; (4-component vector of float)

+0:32        move second child to first child (temp 4-component vector of float)

+0:32          's' (temp 4-component vector of float)

+0:32          Function Call: textureGather(sC1;vf3; (global 4-component vector of float)

 0:32            'sampC' (uniform samplerCube)

 0:32            Constant:

 0:32              0.200000

 0:32              0.200000

 0:32              0.200000

-0:43  Function Definition: bar2( (void)

+0:43  Function Definition: bar2( (global void)

 0:43    Function Parameters: 

 0:45    Sequence

 0:45      Sequence

-0:45        move second child to first child (4-component vector of float)

-0:45          's' (4-component vector of float)

-0:45          Function Call: textureGather(sC1;vf3; (4-component vector of float)

+0:45        move second child to first child (temp 4-component vector of float)

+0:45          's' (temp 4-component vector of float)

+0:45          Function Call: textureGather(sC1;vf3; (global 4-component vector of float)

 0:45            'sampC' (uniform samplerCube)

 0:45            Constant:

 0:45              0.200000

 0:45              0.200000

 0:45              0.200000

-0:49      move second child to first child (3-component vector of bool)

-0:49        'b3' (3-component vector of bool)

-0:49        Compare Less Than (3-component vector of bool)

-0:49          'uv3' (3-component vector of uint)

-0:49          'uv3' (3-component vector of uint)

-0:50      move second child to first child (3-component vector of bool)

-0:50        'b3' (3-component vector of bool)

-0:50        Equal (3-component vector of bool)

-0:50          'uv3' (3-component vector of uint)

-0:50          'uv3' (3-component vector of uint)

-0:56      direct index (int)

-0:56        'a1' (1-element array of int)

+0:49      move second child to first child (temp 3-component vector of bool)

+0:49        'b3' (temp 3-component vector of bool)

+0:49        Compare Less Than (global 3-component vector of bool)

+0:49          'uv3' (temp 3-component vector of uint)

+0:49          'uv3' (temp 3-component vector of uint)

+0:50      move second child to first child (temp 3-component vector of bool)

+0:50        'b3' (temp 3-component vector of bool)

+0:50        Equal (global 3-component vector of bool)

+0:50          'uv3' (temp 3-component vector of uint)

+0:50          'uv3' (temp 3-component vector of uint)

+0:56      direct index (temp int)

+0:56        'a1' (temp 1-element array of int)

 0:56        Constant:

 0:56          0 (const int)

-0:57      direct index (int)

-0:57        'a2' (1-element array of int)

+0:57      direct index (temp int)

+0:57        'a2' (temp 1-element array of int)

 0:57        Constant:

 0:57          0 (const int)

-0:60      direct index (int)

-0:60        'a3' (4-element array of int)

+0:60      direct index (temp int)

+0:60        'a3' (temp 4-element array of int)

 0:60        Constant:

 0:60          3 (const int)

-0:61      Compare Not Equal (bool)

-0:61        'b3' (3-component vector of bool)

-0:61        'b3' (3-component vector of bool)

+0:61      Compare Not Equal (temp bool)

+0:61        'b3' (temp 3-component vector of bool)

+0:61        'b3' (temp 3-component vector of bool)

 0:62      Constant:

 0:62        false (const bool)

 0:63      Constant:

@@ -123,13 +123,13 @@
 0:65        true (const bool)

 0:66      Constant:

 0:66        false (const bool)

-0:77  Function Definition: bar23( (void)

+0:77  Function Definition: bar23( (global void)

 0:77    Function Parameters: 

 0:?     Sequence

-0:80      's' (4-component vector of float)

-0:81      move second child to first child (4-component vector of float)

-0:81        's' (4-component vector of float)

-0:81        Function Call: textureGatherOffset(sR21;vf2;vi2; (4-component vector of float)

+0:80      's' (temp 4-component vector of float)

+0:81      move second child to first child (temp 4-component vector of float)

+0:81        's' (temp 4-component vector of float)

+0:81        Function Call: textureGatherOffset(sR21;vf2;vi2; (global 4-component vector of float)

 0:81          'samp2DR' (uniform sampler2DRect)

 0:81          Constant:

 0:81            0.300000

@@ -137,9 +137,9 @@
 0:81          Constant:

 0:81            1 (const int)

 0:81            1 (const int)

-0:82      move second child to first child (4-component vector of float)

-0:82        's' (4-component vector of float)

-0:82        Function Call: textureGatherOffset(s21;vf2;vi2; (4-component vector of float)

+0:82      move second child to first child (temp 4-component vector of float)

+0:82        's' (temp 4-component vector of float)

+0:82        Function Call: textureGatherOffset(s21;vf2;vi2; (global 4-component vector of float)

 0:82          'samp2D' (uniform sampler2D)

 0:82          Constant:

 0:82            0.300000

@@ -147,9 +147,9 @@
 0:82          Constant:

 0:82            1 (const int)

 0:82            1 (const int)

-0:83      move second child to first child (4-component vector of float)

-0:83        's' (4-component vector of float)

-0:83        Function Call: textureGatherOffset(sA21;vf3;vi2; (4-component vector of float)

+0:83      move second child to first child (temp 4-component vector of float)

+0:83        's' (temp 4-component vector of float)

+0:83        Function Call: textureGatherOffset(sA21;vf3;vi2; (global 4-component vector of float)

 0:83          'samp2DA' (uniform sampler2DArray)

 0:83          Constant:

 0:83            0.300000

@@ -158,9 +158,9 @@
 0:83          Constant:

 0:83            1 (const int)

 0:83            1 (const int)

-0:84      move second child to first child (4-component vector of float)

-0:84        's' (4-component vector of float)

-0:84        Function Call: textureGatherOffset(sS21;vf2;f1;vi2; (4-component vector of float)

+0:84      move second child to first child (temp 4-component vector of float)

+0:84        's' (temp 4-component vector of float)

+0:84        Function Call: textureGatherOffset(sS21;vf2;f1;vi2; (global 4-component vector of float)

 0:84          'samp2DS' (uniform sampler2DShadow)

 0:84          Constant:

 0:84            0.300000

@@ -170,9 +170,9 @@
 0:84          Constant:

 0:84            1 (const int)

 0:84            1 (const int)

-0:85      move second child to first child (4-component vector of float)

-0:85        's' (4-component vector of float)

-0:85        Function Call: textureGatherOffset(s21;vf2;vi2;i1; (4-component vector of float)

+0:85      move second child to first child (temp 4-component vector of float)

+0:85        's' (temp 4-component vector of float)

+0:85        Function Call: textureGatherOffset(s21;vf2;vi2;i1; (global 4-component vector of float)

 0:85          'samp2D' (uniform sampler2D)

 0:85          Constant:

 0:85            0.300000

@@ -182,12 +182,12 @@
 0:85            1 (const int)

 0:85          Constant:

 0:85            2 (const int)

-0:90  Function Definition: bar234( (void)

+0:90  Function Definition: bar234( (global void)

 0:90    Function Parameters: 

 0:?     Sequence

-0:93      move second child to first child (4-component vector of float)

-0:93        's' (4-component vector of float)

-0:93        Function Call: textureGatherOffset(s21;vf2;vi2; (4-component vector of float)

+0:93      move second child to first child (temp 4-component vector of float)

+0:93        's' (temp 4-component vector of float)

+0:93        Function Call: textureGatherOffset(s21;vf2;vi2; (global 4-component vector of float)

 0:93          'samp2D' (uniform sampler2D)

 0:93          Constant:

 0:93            0.300000

@@ -195,9 +195,9 @@
 0:93          Constant:

 0:93            1 (const int)

 0:93            1 (const int)

-0:94      move second child to first child (4-component vector of float)

-0:94        's' (4-component vector of float)

-0:94        Function Call: textureGatherOffset(sA21;vf3;vi2; (4-component vector of float)

+0:94      move second child to first child (temp 4-component vector of float)

+0:94        's' (temp 4-component vector of float)

+0:94        Function Call: textureGatherOffset(sA21;vf3;vi2; (global 4-component vector of float)

 0:94          'samp2DA' (uniform sampler2DArray)

 0:94          Constant:

 0:94            0.300000

@@ -206,9 +206,9 @@
 0:94          Constant:

 0:94            1 (const int)

 0:94            1 (const int)

-0:95      move second child to first child (4-component vector of float)

-0:95        's' (4-component vector of float)

-0:95        Function Call: textureGatherOffset(sR21;vf2;vi2; (4-component vector of float)

+0:95      move second child to first child (temp 4-component vector of float)

+0:95        's' (temp 4-component vector of float)

+0:95        Function Call: textureGatherOffset(sR21;vf2;vi2; (global 4-component vector of float)

 0:95          'samp2DR' (uniform sampler2DRect)

 0:95          Constant:

 0:95            0.300000

@@ -216,9 +216,9 @@
 0:95          Constant:

 0:95            1 (const int)

 0:95            1 (const int)

-0:96      move second child to first child (4-component vector of float)

-0:96        's' (4-component vector of float)

-0:96        Function Call: textureGatherOffset(sS21;vf2;f1;vi2; (4-component vector of float)

+0:96      move second child to first child (temp 4-component vector of float)

+0:96        's' (temp 4-component vector of float)

+0:96        Function Call: textureGatherOffset(sS21;vf2;f1;vi2; (global 4-component vector of float)

 0:96          'samp2DS' (uniform sampler2DShadow)

 0:96          Constant:

 0:96            0.300000

@@ -228,9 +228,9 @@
 0:96          Constant:

 0:96            1 (const int)

 0:96            1 (const int)

-0:97      move second child to first child (4-component vector of float)

-0:97        's' (4-component vector of float)

-0:97        Function Call: textureGatherOffset(s21;vf2;vi2;i1; (4-component vector of float)

+0:97      move second child to first child (temp 4-component vector of float)

+0:97        's' (temp 4-component vector of float)

+0:97        Function Call: textureGatherOffset(s21;vf2;vi2;i1; (global 4-component vector of float)

 0:97          'samp2D' (uniform sampler2D)

 0:97          Constant:

 0:97            0.300000

@@ -240,64 +240,64 @@
 0:97            1 (const int)

 0:97          Constant:

 0:97            2 (const int)

-0:107  Function Definition: bar235( (void)

+0:107  Function Definition: bar235( (global void)

 0:107    Function Parameters: 

 0:109    Sequence

 0:109      Sequence

-0:109        move second child to first child (3-component vector of int)

-0:109          'a' (3-component vector of int)

-0:109          Function Call: textureSize(sAC1;i1; (3-component vector of int)

+0:109        move second child to first child (temp 3-component vector of int)

+0:109          'a' (temp 3-component vector of int)

+0:109          Function Call: textureSize(sAC1;i1; (global 3-component vector of int)

 0:109            'Sca' (uniform samplerCubeArray)

 0:109            Constant:

 0:109              3 (const int)

 0:110      Sequence

-0:110        move second child to first child (4-component vector of float)

-0:110          'b' (4-component vector of float)

-0:110          Function Call: texture(sAC1;vf4; (4-component vector of float)

+0:110        move second child to first child (temp 4-component vector of float)

+0:110          'b' (temp 4-component vector of float)

+0:110          Function Call: texture(sAC1;vf4; (global 4-component vector of float)

 0:110            'Sca' (uniform samplerCubeArray)

 0:110            'i' (smooth in 4-component vector of float)

 0:111      Sequence

-0:111        move second child to first child (4-component vector of int)

-0:111          'c' (4-component vector of int)

-0:111          Function Call: texture(isAC1;vf4;f1; (4-component vector of int)

+0:111        move second child to first child (temp 4-component vector of int)

+0:111          'c' (temp 4-component vector of int)

+0:111          Function Call: texture(isAC1;vf4;f1; (global 4-component vector of int)

 0:111            'Isca' (uniform isamplerCubeArray)

 0:111            'i' (smooth in 4-component vector of float)

 0:111            Constant:

 0:111              0.700000

 0:112      Sequence

-0:112        move second child to first child (4-component vector of uint)

-0:112          'd' (4-component vector of uint)

-0:112          Function Call: texture(usAC1;vf4; (4-component vector of uint)

+0:112        move second child to first child (temp 4-component vector of uint)

+0:112          'd' (temp 4-component vector of uint)

+0:112          Function Call: texture(usAC1;vf4; (global 4-component vector of uint)

 0:112            'Usca' (uniform usamplerCubeArray)

 0:112            'i' (smooth in 4-component vector of float)

-0:114      move second child to first child (4-component vector of float)

-0:114        'b' (4-component vector of float)

-0:114        Function Call: textureLod(sAC1;vf4;f1; (4-component vector of float)

+0:114      move second child to first child (temp 4-component vector of float)

+0:114        'b' (temp 4-component vector of float)

+0:114        Function Call: textureLod(sAC1;vf4;f1; (global 4-component vector of float)

 0:114          'Sca' (uniform samplerCubeArray)

 0:114          'i' (smooth in 4-component vector of float)

 0:114          Constant:

 0:114            1.700000

-0:115      move second child to first child (3-component vector of int)

-0:115        'a' (3-component vector of int)

-0:115        Function Call: textureSize(sASC1;i1; (3-component vector of int)

+0:115      move second child to first child (temp 3-component vector of int)

+0:115        'a' (temp 3-component vector of int)

+0:115        Function Call: textureSize(sASC1;i1; (global 3-component vector of int)

 0:115          'Scas' (uniform samplerCubeArrayShadow)

-0:115          direct index (int)

-0:115            'a' (3-component vector of int)

+0:115          direct index (temp int)

+0:115            'a' (temp 3-component vector of int)

 0:115            Constant:

 0:115              0 (const int)

 0:116      Sequence

-0:116        move second child to first child (float)

-0:116          'f' (float)

-0:116          Function Call: texture(sASC1;vf4;f1; (float)

+0:116        move second child to first child (temp float)

+0:116          'f' (temp float)

+0:116          Function Call: texture(sASC1;vf4;f1; (global float)

 0:116            'Scas' (uniform samplerCubeArrayShadow)

 0:116            'i' (smooth in 4-component vector of float)

-0:116            direct index (float)

-0:116              'b' (4-component vector of float)

+0:116            direct index (temp float)

+0:116              'b' (temp 4-component vector of float)

 0:116              Constant:

 0:116                1 (const int)

-0:117      move second child to first child (4-component vector of int)

-0:117        'c' (4-component vector of int)

-0:117        Function Call: textureGrad(isAC1;vf4;vf3;vf3; (4-component vector of int)

+0:117      move second child to first child (temp 4-component vector of int)

+0:117        'c' (temp 4-component vector of int)

+0:117        Function Call: textureGrad(isAC1;vf4;vf3;vf3; (global 4-component vector of int)

 0:117          'Isca' (uniform isamplerCubeArray)

 0:117          'i' (smooth in 4-component vector of float)

 0:117          Constant:

@@ -308,42 +308,42 @@
 0:117            0.200000

 0:117            0.200000

 0:117            0.200000

-0:129  Function Definition: bar23444( (void)

+0:129  Function Definition: bar23444( (global void)

 0:129    Function Parameters: 

 0:?     Sequence

 0:132      Sequence

-0:132        move second child to first child (float)

-0:132          'a1' (float)

-0:132          direct index (float)

-0:132            direct index (3-component vector of float)

-0:132              'm43' (4X3 matrix of float)

+0:132        move second child to first child (temp float)

+0:132          'a1' (temp float)

+0:132          direct index (temp float)

+0:132            direct index (temp 3-component vector of float)

+0:132              'm43' (temp 4X3 matrix of float)

 0:132              Constant:

 0:132                3 (const int)

 0:132            Constant:

 0:132              1 (const int)

 0:134      Sequence

-0:134        move second child to first child (int)

-0:134          'a2' (int)

+0:134        move second child to first child (temp int)

+0:134          'a2' (temp int)

 0:134          Constant:

 0:134            4 (const int)

-0:135      add second child into first child (int)

-0:135        'a2' (int)

+0:135      add second child into first child (temp int)

+0:135        'a2' (temp int)

 0:135        Constant:

 0:135          3 (const int)

-0:136      add second child into first child (int)

-0:136        'a2' (int)

+0:136      add second child into first child (temp int)

+0:136        'a2' (temp int)

 0:136        Constant:

 0:136          3 (const int)

 0:137      Sequence

-0:137        move second child to first child (float)

+0:137        move second child to first child (temp float)

 0:137          'b' (const (read only) float)

-0:137          component-wise multiply (float)

+0:137          component-wise multiply (temp float)

 0:137            Constant:

 0:137              2.000000

-0:137            'a1' (float)

-0:138      move second child to first child (float)

-0:138        direct index (float)

-0:138          'a' (3-component vector of float)

+0:137            'a1' (temp float)

+0:138      move second child to first child (temp float)

+0:138        direct index (temp float)

+0:138          'a' (temp 3-component vector of float)

 0:138          Constant:

 0:138            0 (const int)

 0:138        Constant:

@@ -354,28 +354,28 @@
 0:141        0.000000

 0:143      Constant:

 0:143        1 (const int)

-0:162  Function Definition: qux2( (void)

+0:162  Function Definition: qux2( (global void)

 0:162    Function Parameters: 

 0:?     Sequence

-0:165      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (int)

+0:165      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global int)

 0:165        'iimg2D' (layout(r32i ) uniform iimage2D)

-0:165        Construct ivec2 (2-component vector of int)

-0:165          'i' (int)

-0:165          'i' (int)

-0:165        'i' (int)

-0:165        'i' (int)

+0:165        Construct ivec2 (temp 2-component vector of int)

+0:165          'i' (temp int)

+0:165          'i' (temp int)

+0:165        'i' (temp int)

+0:165        'i' (temp int)

 0:166      Sequence

-0:166        move second child to first child (4-component vector of int)

-0:166          'pos' (4-component vector of int)

-0:166          Function Call: imageLoad(iI21;vi2; (4-component vector of int)

+0:166        move second child to first child (temp 4-component vector of int)

+0:166          'pos' (temp 4-component vector of int)

+0:166          Function Call: imageLoad(iI21;vi2; (global 4-component vector of int)

 0:166            'iimg2D' (layout(r32i ) uniform iimage2D)

-0:166            Construct ivec2 (2-component vector of int)

-0:166              'i' (int)

-0:166              'i' (int)

+0:166            Construct ivec2 (temp 2-component vector of int)

+0:166              'i' (temp int)

+0:166              'i' (temp int)

 0:?   Linker Objects

-0:?     'a' (3-component vector of float)

-0:?     'b' (float)

-0:?     'c' (int)

+0:?     'a' (temp 3-component vector of float)

+0:?     'b' (temp float)

+0:?     'c' (temp int)

 0:?     'i' (smooth in 4-component vector of float)

 0:?     'o' (out 4-component vector of float)

 0:?     'fflat' (flat in float)

@@ -393,7 +393,7 @@
 0:?     'Isca' (uniform isamplerCubeArray)

 0:?     'Usca' (uniform usamplerCubeArray)

 0:?     'Scas' (uniform samplerCubeArrayShadow)

-0:?     'x' (int)

+0:?     'x' (global int)

 0:?     'ai' (const 3-element array of int)

 0:?       10 (const int)

 0:?       23 (const int)

@@ -418,77 +418,77 @@
 Requested GL_ARB_texture_rectangle

 using early_fragment_tests

 ERROR: node is still EOpNull!

-0:16  Function Definition: main( (void)

+0:16  Function Definition: main( (global void)

 0:16    Function Parameters: 

 0:18    Sequence

 0:18      Sequence

-0:18        move second child to first child (float)

-0:18          'clip' (float)

-0:18          direct index (smooth float)

+0:18        move second child to first child (temp float)

+0:18          'clip' (temp float)

+0:18          direct index (smooth temp float)

 0:18            'gl_ClipDistance' (smooth in 4-element array of float)

 0:18            Constant:

 0:18              3 (const int)

-0:23  Function Definition: foo( (void)

+0:23  Function Definition: foo( (global void)

 0:23    Function Parameters: 

 0:25    Sequence

 0:25      Sequence

-0:25        move second child to first child (4-component vector of float)

-0:25          's' (4-component vector of float)

-0:25          Function Call: textureGather(sC1;vf3; (4-component vector of float)

+0:25        move second child to first child (temp 4-component vector of float)

+0:25          's' (temp 4-component vector of float)

+0:25          Function Call: textureGather(sC1;vf3; (global 4-component vector of float)

 0:25            'sampC' (uniform samplerCube)

 0:25            Constant:

 0:25              0.200000

 0:25              0.200000

 0:25              0.200000

-0:30  Function Definition: bar( (void)

+0:30  Function Definition: bar( (global void)

 0:30    Function Parameters: 

 0:32    Sequence

 0:32      Sequence

-0:32        move second child to first child (4-component vector of float)

-0:32          's' (4-component vector of float)

-0:32          Function Call: textureGather(sC1;vf3; (4-component vector of float)

+0:32        move second child to first child (temp 4-component vector of float)

+0:32          's' (temp 4-component vector of float)

+0:32          Function Call: textureGather(sC1;vf3; (global 4-component vector of float)

 0:32            'sampC' (uniform samplerCube)

 0:32            Constant:

 0:32              0.200000

 0:32              0.200000

 0:32              0.200000

-0:43  Function Definition: bar2( (void)

+0:43  Function Definition: bar2( (global void)

 0:43    Function Parameters: 

 0:45    Sequence

 0:45      Sequence

-0:45        move second child to first child (4-component vector of float)

-0:45          's' (4-component vector of float)

-0:45          Function Call: textureGather(sC1;vf3; (4-component vector of float)

+0:45        move second child to first child (temp 4-component vector of float)

+0:45          's' (temp 4-component vector of float)

+0:45          Function Call: textureGather(sC1;vf3; (global 4-component vector of float)

 0:45            'sampC' (uniform samplerCube)

 0:45            Constant:

 0:45              0.200000

 0:45              0.200000

 0:45              0.200000

-0:49      move second child to first child (3-component vector of bool)

-0:49        'b3' (3-component vector of bool)

-0:49        Compare Less Than (3-component vector of bool)

-0:49          'uv3' (3-component vector of uint)

-0:49          'uv3' (3-component vector of uint)

-0:50      move second child to first child (3-component vector of bool)

-0:50        'b3' (3-component vector of bool)

-0:50        Equal (3-component vector of bool)

-0:50          'uv3' (3-component vector of uint)

-0:50          'uv3' (3-component vector of uint)

-0:56      direct index (int)

-0:56        'a1' (1-element array of int)

+0:49      move second child to first child (temp 3-component vector of bool)

+0:49        'b3' (temp 3-component vector of bool)

+0:49        Compare Less Than (global 3-component vector of bool)

+0:49          'uv3' (temp 3-component vector of uint)

+0:49          'uv3' (temp 3-component vector of uint)

+0:50      move second child to first child (temp 3-component vector of bool)

+0:50        'b3' (temp 3-component vector of bool)

+0:50        Equal (global 3-component vector of bool)

+0:50          'uv3' (temp 3-component vector of uint)

+0:50          'uv3' (temp 3-component vector of uint)

+0:56      direct index (temp int)

+0:56        'a1' (temp 1-element array of int)

 0:56        Constant:

 0:56          0 (const int)

-0:57      direct index (int)

-0:57        'a2' (1-element array of int)

+0:57      direct index (temp int)

+0:57        'a2' (temp 1-element array of int)

 0:57        Constant:

 0:57          0 (const int)

-0:60      direct index (int)

-0:60        'a3' (4-element array of int)

+0:60      direct index (temp int)

+0:60        'a3' (temp 4-element array of int)

 0:60        Constant:

 0:60          3 (const int)

-0:61      Compare Not Equal (bool)

-0:61        'b3' (3-component vector of bool)

-0:61        'b3' (3-component vector of bool)

+0:61      Compare Not Equal (temp bool)

+0:61        'b3' (temp 3-component vector of bool)

+0:61        'b3' (temp 3-component vector of bool)

 0:62      Constant:

 0:62        false (const bool)

 0:63      Constant:

@@ -499,13 +499,13 @@
 0:65        true (const bool)

 0:66      Constant:

 0:66        false (const bool)

-0:77  Function Definition: bar23( (void)

+0:77  Function Definition: bar23( (global void)

 0:77    Function Parameters: 

 0:?     Sequence

-0:80      's' (4-component vector of float)

-0:81      move second child to first child (4-component vector of float)

-0:81        's' (4-component vector of float)

-0:81        Function Call: textureGatherOffset(sR21;vf2;vi2; (4-component vector of float)

+0:80      's' (temp 4-component vector of float)

+0:81      move second child to first child (temp 4-component vector of float)

+0:81        's' (temp 4-component vector of float)

+0:81        Function Call: textureGatherOffset(sR21;vf2;vi2; (global 4-component vector of float)

 0:81          'samp2DR' (uniform sampler2DRect)

 0:81          Constant:

 0:81            0.300000

@@ -513,9 +513,9 @@
 0:81          Constant:

 0:81            1 (const int)

 0:81            1 (const int)

-0:82      move second child to first child (4-component vector of float)

-0:82        's' (4-component vector of float)

-0:82        Function Call: textureGatherOffset(s21;vf2;vi2; (4-component vector of float)

+0:82      move second child to first child (temp 4-component vector of float)

+0:82        's' (temp 4-component vector of float)

+0:82        Function Call: textureGatherOffset(s21;vf2;vi2; (global 4-component vector of float)

 0:82          'samp2D' (uniform sampler2D)

 0:82          Constant:

 0:82            0.300000

@@ -523,9 +523,9 @@
 0:82          Constant:

 0:82            1 (const int)

 0:82            1 (const int)

-0:83      move second child to first child (4-component vector of float)

-0:83        's' (4-component vector of float)

-0:83        Function Call: textureGatherOffset(sA21;vf3;vi2; (4-component vector of float)

+0:83      move second child to first child (temp 4-component vector of float)

+0:83        's' (temp 4-component vector of float)

+0:83        Function Call: textureGatherOffset(sA21;vf3;vi2; (global 4-component vector of float)

 0:83          'samp2DA' (uniform sampler2DArray)

 0:83          Constant:

 0:83            0.300000

@@ -534,9 +534,9 @@
 0:83          Constant:

 0:83            1 (const int)

 0:83            1 (const int)

-0:84      move second child to first child (4-component vector of float)

-0:84        's' (4-component vector of float)

-0:84        Function Call: textureGatherOffset(sS21;vf2;f1;vi2; (4-component vector of float)

+0:84      move second child to first child (temp 4-component vector of float)

+0:84        's' (temp 4-component vector of float)

+0:84        Function Call: textureGatherOffset(sS21;vf2;f1;vi2; (global 4-component vector of float)

 0:84          'samp2DS' (uniform sampler2DShadow)

 0:84          Constant:

 0:84            0.300000

@@ -546,9 +546,9 @@
 0:84          Constant:

 0:84            1 (const int)

 0:84            1 (const int)

-0:85      move second child to first child (4-component vector of float)

-0:85        's' (4-component vector of float)

-0:85        Function Call: textureGatherOffset(s21;vf2;vi2;i1; (4-component vector of float)

+0:85      move second child to first child (temp 4-component vector of float)

+0:85        's' (temp 4-component vector of float)

+0:85        Function Call: textureGatherOffset(s21;vf2;vi2;i1; (global 4-component vector of float)

 0:85          'samp2D' (uniform sampler2D)

 0:85          Constant:

 0:85            0.300000

@@ -558,12 +558,12 @@
 0:85            1 (const int)

 0:85          Constant:

 0:85            2 (const int)

-0:90  Function Definition: bar234( (void)

+0:90  Function Definition: bar234( (global void)

 0:90    Function Parameters: 

 0:?     Sequence

-0:93      move second child to first child (4-component vector of float)

-0:93        's' (4-component vector of float)

-0:93        Function Call: textureGatherOffset(s21;vf2;vi2; (4-component vector of float)

+0:93      move second child to first child (temp 4-component vector of float)

+0:93        's' (temp 4-component vector of float)

+0:93        Function Call: textureGatherOffset(s21;vf2;vi2; (global 4-component vector of float)

 0:93          'samp2D' (uniform sampler2D)

 0:93          Constant:

 0:93            0.300000

@@ -571,9 +571,9 @@
 0:93          Constant:

 0:93            1 (const int)

 0:93            1 (const int)

-0:94      move second child to first child (4-component vector of float)

-0:94        's' (4-component vector of float)

-0:94        Function Call: textureGatherOffset(sA21;vf3;vi2; (4-component vector of float)

+0:94      move second child to first child (temp 4-component vector of float)

+0:94        's' (temp 4-component vector of float)

+0:94        Function Call: textureGatherOffset(sA21;vf3;vi2; (global 4-component vector of float)

 0:94          'samp2DA' (uniform sampler2DArray)

 0:94          Constant:

 0:94            0.300000

@@ -582,9 +582,9 @@
 0:94          Constant:

 0:94            1 (const int)

 0:94            1 (const int)

-0:95      move second child to first child (4-component vector of float)

-0:95        's' (4-component vector of float)

-0:95        Function Call: textureGatherOffset(sR21;vf2;vi2; (4-component vector of float)

+0:95      move second child to first child (temp 4-component vector of float)

+0:95        's' (temp 4-component vector of float)

+0:95        Function Call: textureGatherOffset(sR21;vf2;vi2; (global 4-component vector of float)

 0:95          'samp2DR' (uniform sampler2DRect)

 0:95          Constant:

 0:95            0.300000

@@ -592,9 +592,9 @@
 0:95          Constant:

 0:95            1 (const int)

 0:95            1 (const int)

-0:96      move second child to first child (4-component vector of float)

-0:96        's' (4-component vector of float)

-0:96        Function Call: textureGatherOffset(sS21;vf2;f1;vi2; (4-component vector of float)

+0:96      move second child to first child (temp 4-component vector of float)

+0:96        's' (temp 4-component vector of float)

+0:96        Function Call: textureGatherOffset(sS21;vf2;f1;vi2; (global 4-component vector of float)

 0:96          'samp2DS' (uniform sampler2DShadow)

 0:96          Constant:

 0:96            0.300000

@@ -604,9 +604,9 @@
 0:96          Constant:

 0:96            1 (const int)

 0:96            1 (const int)

-0:97      move second child to first child (4-component vector of float)

-0:97        's' (4-component vector of float)

-0:97        Function Call: textureGatherOffset(s21;vf2;vi2;i1; (4-component vector of float)

+0:97      move second child to first child (temp 4-component vector of float)

+0:97        's' (temp 4-component vector of float)

+0:97        Function Call: textureGatherOffset(s21;vf2;vi2;i1; (global 4-component vector of float)

 0:97          'samp2D' (uniform sampler2D)

 0:97          Constant:

 0:97            0.300000

@@ -616,64 +616,64 @@
 0:97            1 (const int)

 0:97          Constant:

 0:97            2 (const int)

-0:107  Function Definition: bar235( (void)

+0:107  Function Definition: bar235( (global void)

 0:107    Function Parameters: 

 0:109    Sequence

 0:109      Sequence

-0:109        move second child to first child (3-component vector of int)

-0:109          'a' (3-component vector of int)

-0:109          Function Call: textureSize(sAC1;i1; (3-component vector of int)

+0:109        move second child to first child (temp 3-component vector of int)

+0:109          'a' (temp 3-component vector of int)

+0:109          Function Call: textureSize(sAC1;i1; (global 3-component vector of int)

 0:109            'Sca' (uniform samplerCubeArray)

 0:109            Constant:

 0:109              3 (const int)

 0:110      Sequence

-0:110        move second child to first child (4-component vector of float)

-0:110          'b' (4-component vector of float)

-0:110          Function Call: texture(sAC1;vf4; (4-component vector of float)

+0:110        move second child to first child (temp 4-component vector of float)

+0:110          'b' (temp 4-component vector of float)

+0:110          Function Call: texture(sAC1;vf4; (global 4-component vector of float)

 0:110            'Sca' (uniform samplerCubeArray)

 0:110            'i' (smooth in 4-component vector of float)

 0:111      Sequence

-0:111        move second child to first child (4-component vector of int)

-0:111          'c' (4-component vector of int)

-0:111          Function Call: texture(isAC1;vf4;f1; (4-component vector of int)

+0:111        move second child to first child (temp 4-component vector of int)

+0:111          'c' (temp 4-component vector of int)

+0:111          Function Call: texture(isAC1;vf4;f1; (global 4-component vector of int)

 0:111            'Isca' (uniform isamplerCubeArray)

 0:111            'i' (smooth in 4-component vector of float)

 0:111            Constant:

 0:111              0.700000

 0:112      Sequence

-0:112        move second child to first child (4-component vector of uint)

-0:112          'd' (4-component vector of uint)

-0:112          Function Call: texture(usAC1;vf4; (4-component vector of uint)

+0:112        move second child to first child (temp 4-component vector of uint)

+0:112          'd' (temp 4-component vector of uint)

+0:112          Function Call: texture(usAC1;vf4; (global 4-component vector of uint)

 0:112            'Usca' (uniform usamplerCubeArray)

 0:112            'i' (smooth in 4-component vector of float)

-0:114      move second child to first child (4-component vector of float)

-0:114        'b' (4-component vector of float)

-0:114        Function Call: textureLod(sAC1;vf4;f1; (4-component vector of float)

+0:114      move second child to first child (temp 4-component vector of float)

+0:114        'b' (temp 4-component vector of float)

+0:114        Function Call: textureLod(sAC1;vf4;f1; (global 4-component vector of float)

 0:114          'Sca' (uniform samplerCubeArray)

 0:114          'i' (smooth in 4-component vector of float)

 0:114          Constant:

 0:114            1.700000

-0:115      move second child to first child (3-component vector of int)

-0:115        'a' (3-component vector of int)

-0:115        Function Call: textureSize(sASC1;i1; (3-component vector of int)

+0:115      move second child to first child (temp 3-component vector of int)

+0:115        'a' (temp 3-component vector of int)

+0:115        Function Call: textureSize(sASC1;i1; (global 3-component vector of int)

 0:115          'Scas' (uniform samplerCubeArrayShadow)

-0:115          direct index (int)

-0:115            'a' (3-component vector of int)

+0:115          direct index (temp int)

+0:115            'a' (temp 3-component vector of int)

 0:115            Constant:

 0:115              0 (const int)

 0:116      Sequence

-0:116        move second child to first child (float)

-0:116          'f' (float)

-0:116          Function Call: texture(sASC1;vf4;f1; (float)

+0:116        move second child to first child (temp float)

+0:116          'f' (temp float)

+0:116          Function Call: texture(sASC1;vf4;f1; (global float)

 0:116            'Scas' (uniform samplerCubeArrayShadow)

 0:116            'i' (smooth in 4-component vector of float)

-0:116            direct index (float)

-0:116              'b' (4-component vector of float)

+0:116            direct index (temp float)

+0:116              'b' (temp 4-component vector of float)

 0:116              Constant:

 0:116                1 (const int)

-0:117      move second child to first child (4-component vector of int)

-0:117        'c' (4-component vector of int)

-0:117        Function Call: textureGrad(isAC1;vf4;vf3;vf3; (4-component vector of int)

+0:117      move second child to first child (temp 4-component vector of int)

+0:117        'c' (temp 4-component vector of int)

+0:117        Function Call: textureGrad(isAC1;vf4;vf3;vf3; (global 4-component vector of int)

 0:117          'Isca' (uniform isamplerCubeArray)

 0:117          'i' (smooth in 4-component vector of float)

 0:117          Constant:

@@ -684,42 +684,42 @@
 0:117            0.200000

 0:117            0.200000

 0:117            0.200000

-0:129  Function Definition: bar23444( (void)

+0:129  Function Definition: bar23444( (global void)

 0:129    Function Parameters: 

 0:?     Sequence

 0:132      Sequence

-0:132        move second child to first child (float)

-0:132          'a1' (float)

-0:132          direct index (float)

-0:132            direct index (3-component vector of float)

-0:132              'm43' (4X3 matrix of float)

+0:132        move second child to first child (temp float)

+0:132          'a1' (temp float)

+0:132          direct index (temp float)

+0:132            direct index (temp 3-component vector of float)

+0:132              'm43' (temp 4X3 matrix of float)

 0:132              Constant:

 0:132                3 (const int)

 0:132            Constant:

 0:132              1 (const int)

 0:134      Sequence

-0:134        move second child to first child (int)

-0:134          'a2' (int)

+0:134        move second child to first child (temp int)

+0:134          'a2' (temp int)

 0:134          Constant:

 0:134            4 (const int)

-0:135      add second child into first child (int)

-0:135        'a2' (int)

+0:135      add second child into first child (temp int)

+0:135        'a2' (temp int)

 0:135        Constant:

 0:135          3 (const int)

-0:136      add second child into first child (int)

-0:136        'a2' (int)

+0:136      add second child into first child (temp int)

+0:136        'a2' (temp int)

 0:136        Constant:

 0:136          3 (const int)

 0:137      Sequence

-0:137        move second child to first child (float)

+0:137        move second child to first child (temp float)

 0:137          'b' (const (read only) float)

-0:137          component-wise multiply (float)

+0:137          component-wise multiply (temp float)

 0:137            Constant:

 0:137              2.000000

-0:137            'a1' (float)

-0:138      move second child to first child (float)

-0:138        direct index (float)

-0:138          'a' (3-component vector of float)

+0:137            'a1' (temp float)

+0:138      move second child to first child (temp float)

+0:138        direct index (temp float)

+0:138          'a' (temp 3-component vector of float)

 0:138          Constant:

 0:138            0 (const int)

 0:138        Constant:

@@ -730,28 +730,28 @@
 0:141        0.000000

 0:143      Constant:

 0:143        1 (const int)

-0:162  Function Definition: qux2( (void)

+0:162  Function Definition: qux2( (global void)

 0:162    Function Parameters: 

 0:?     Sequence

-0:165      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (int)

+0:165      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global int)

 0:165        'iimg2D' (layout(r32i ) uniform iimage2D)

-0:165        Construct ivec2 (2-component vector of int)

-0:165          'i' (int)

-0:165          'i' (int)

-0:165        'i' (int)

-0:165        'i' (int)

+0:165        Construct ivec2 (temp 2-component vector of int)

+0:165          'i' (temp int)

+0:165          'i' (temp int)

+0:165        'i' (temp int)

+0:165        'i' (temp int)

 0:166      Sequence

-0:166        move second child to first child (4-component vector of int)

-0:166          'pos' (4-component vector of int)

-0:166          Function Call: imageLoad(iI21;vi2; (4-component vector of int)

+0:166        move second child to first child (temp 4-component vector of int)

+0:166          'pos' (temp 4-component vector of int)

+0:166          Function Call: imageLoad(iI21;vi2; (global 4-component vector of int)

 0:166            'iimg2D' (layout(r32i ) uniform iimage2D)

-0:166            Construct ivec2 (2-component vector of int)

-0:166              'i' (int)

-0:166              'i' (int)

+0:166            Construct ivec2 (temp 2-component vector of int)

+0:166              'i' (temp int)

+0:166              'i' (temp int)

 0:?   Linker Objects

-0:?     'a' (3-component vector of float)

-0:?     'b' (float)

-0:?     'c' (int)

+0:?     'a' (temp 3-component vector of float)

+0:?     'b' (temp float)

+0:?     'c' (temp int)

 0:?     'i' (smooth in 4-component vector of float)

 0:?     'o' (out 4-component vector of float)

 0:?     'fflat' (flat in float)

@@ -769,7 +769,7 @@
 0:?     'Isca' (uniform isamplerCubeArray)

 0:?     'Usca' (uniform usamplerCubeArray)

 0:?     'Scas' (uniform samplerCubeArrayShadow)

-0:?     'x' (int)

+0:?     'x' (global int)

 0:?     'ai' (const 3-element array of int)

 0:?       10 (const int)

 0:?       23 (const int)

diff --git a/Test/baseResults/130.vert.out b/Test/baseResults/130.vert.out
index 8c80a84..f402fe0 100644
--- a/Test/baseResults/130.vert.out
+++ b/Test/baseResults/130.vert.out
@@ -1,8 +1,8 @@
 130.vert

 ERROR: 0:59: 'gl_InstanceID' : undeclared identifier 

-ERROR: 0:59: '=' :  cannot convert from 'float' to 'int'

+ERROR: 0:59: '=' :  cannot convert from 'temp float' to 'temp int'

 ERROR: 0:61: 'texelFetch' : no matching overloaded function found 

-ERROR: 0:61: 'assign' :  cannot convert from 'const float' to 'int'

+ERROR: 0:61: 'assign' :  cannot convert from 'const float' to 'temp int'

 ERROR: 0:75: '##' : token pasting not implemented (internal error) 

 ERROR: 0:75: '' :  syntax error

 ERROR: 6 compilation errors.  No code generated.

@@ -10,12 +10,12 @@
 

 Shader version: 130

 ERROR: node is still EOpNull!

-0:15  Function Definition: main( (void)

+0:15  Function Definition: main( (global void)

 0:15    Function Parameters: 

 0:17    Sequence

 0:17      Sequence

-0:17        move second child to first child (float)

-0:17          'f' (float)

+0:17        move second child to first child (temp float)

+0:17          'f' (temp float)

 0:17          Constant:

 0:17            3.000000

 0:18      switch

@@ -27,111 +27,111 @@
 0:19            Constant:

 0:19              1 (const int)

 0:?           Sequence

-0:20            move second child to first child (float)

-0:20              'f' (float)

-0:20              sine (float)

-0:20                'f' (float)

+0:20            move second child to first child (temp float)

+0:20              'f' (temp float)

+0:20              sine (global float)

+0:20                'f' (temp float)

 0:21            Branch: Break

 0:22          case:  with expression

 0:22            Constant:

 0:22              2 (const int)

 0:?           Sequence

-0:23            move second child to first child (float)

-0:23              'f' (float)

-0:23              component-wise multiply (float)

-0:23                'f' (float)

-0:23                'f' (float)

+0:23            move second child to first child (temp float)

+0:23              'f' (temp float)

+0:23              component-wise multiply (temp float)

+0:23                'f' (temp float)

+0:23                'f' (temp float)

 0:24          default: 

 0:?           Sequence

-0:25            move second child to first child (float)

-0:25              'f' (float)

+0:25            move second child to first child (temp float)

+0:25              'f' (temp float)

 0:25              Constant:

 0:25                3.000000

-0:29      move second child to first child (uint)

-0:29        'i' (uint)

-0:29        direct index (uint)

-0:29          Function Call: texture(us21;vf2; (4-component vector of uint)

+0:29      move second child to first child (temp uint)

+0:29        'i' (temp uint)

+0:29        direct index (temp uint)

+0:29          Function Call: texture(us21;vf2; (global 4-component vector of uint)

 0:29            'us2D' (uniform usampler2D)

-0:29            Convert int to float (2-component vector of float)

+0:29            Convert int to float (temp 2-component vector of float)

 0:29              'x' (in 2-component vector of int)

 0:29          Constant:

 0:29            3 (const int)

-0:30      inclusive-or (uint)

-0:30        left-shift (uint)

-0:30          'i' (uint)

+0:30      inclusive-or (temp uint)

+0:30        left-shift (temp uint)

+0:30          'i' (temp uint)

 0:30          Constant:

 0:30            3 (const uint)

 0:30        Constant:

 0:30          69 (const uint)

 0:33      Sequence

-0:33        move second child to first child (3-component vector of float)

-0:33          'v11' (3-component vector of float)

-0:33          modf (3-component vector of float)

-0:33            'modfIn' (3-component vector of float)

-0:33            'modfOut' (3-component vector of float)

+0:33        move second child to first child (temp 3-component vector of float)

+0:33          'v11' (temp 3-component vector of float)

+0:33          modf (global 3-component vector of float)

+0:33            'modfIn' (temp 3-component vector of float)

+0:33            'modfOut' (temp 3-component vector of float)

 0:34      Sequence

-0:34        move second child to first child (float)

-0:34          't' (float)

-0:34          trunc (float)

-0:34            'f' (float)

+0:34        move second child to first child (temp float)

+0:34          't' (temp float)

+0:34          trunc (global float)

+0:34            'f' (temp float)

 0:35      Sequence

-0:35        move second child to first child (2-component vector of float)

-0:35          'v12' (2-component vector of float)

-0:35          round (2-component vector of float)

+0:35        move second child to first child (temp 2-component vector of float)

+0:35          'v12' (temp 2-component vector of float)

+0:35          round (global 2-component vector of float)

 0:35            'v2a' (in 2-component vector of float)

 0:36      Sequence

-0:36        move second child to first child (2-component vector of float)

-0:36          'v13' (2-component vector of float)

-0:36          roundEven (2-component vector of float)

+0:36        move second child to first child (temp 2-component vector of float)

+0:36          'v13' (temp 2-component vector of float)

+0:36          roundEven (global 2-component vector of float)

 0:36            'v2a' (in 2-component vector of float)

 0:37      Sequence

-0:37        move second child to first child (2-component vector of bool)

-0:37          'b10' (2-component vector of bool)

-0:37          isnan (2-component vector of bool)

+0:37        move second child to first child (temp 2-component vector of bool)

+0:37          'b10' (temp 2-component vector of bool)

+0:37          isnan (global 2-component vector of bool)

 0:37            'v2a' (in 2-component vector of float)

 0:38      Sequence

-0:38        move second child to first child (4-component vector of bool)

-0:38          'b11' (4-component vector of bool)

-0:38          isinf (4-component vector of bool)

+0:38        move second child to first child (temp 4-component vector of bool)

+0:38          'b11' (temp 4-component vector of bool)

+0:38          isinf (global 4-component vector of bool)

 0:38            'v4' (uniform 4-component vector of float)

-0:40      add (2-component vector of float)

-0:40        hyp. sine (float)

+0:40      add (temp 2-component vector of float)

+0:40        hyp. sine (global float)

 0:40          'c1D' (in float)

-0:41        vector-scale (2-component vector of float)

-0:41          hyp. cosine (float)

+0:41        vector-scale (temp 2-component vector of float)

+0:41          hyp. cosine (global float)

 0:41            'c1D' (in float)

-0:41          hyp. tangent (2-component vector of float)

+0:41          hyp. tangent (global 2-component vector of float)

 0:41            'c2D' (in 2-component vector of float)

-0:42      add (4-component vector of float)

-0:42        arc hyp. sine (4-component vector of float)

-0:42          'c4D' (smooth 4-component vector of float)

-0:42        arc hyp. cosine (4-component vector of float)

-0:42          'c4D' (smooth 4-component vector of float)

-0:43      arc hyp. tangent (3-component vector of float)

+0:42      add (temp 4-component vector of float)

+0:42        arc hyp. sine (global 4-component vector of float)

+0:42          'c4D' (smooth temp 4-component vector of float)

+0:42        arc hyp. cosine (global 4-component vector of float)

+0:42          'c4D' (smooth temp 4-component vector of float)

+0:43      arc hyp. tangent (global 3-component vector of float)

 0:43        'c3D' (in 3-component vector of float)

 0:45      Sequence

-0:45        move second child to first child (int)

-0:45          'id' (int)

+0:45        move second child to first child (temp int)

+0:45          'id' (temp int)

 0:45          'gl_VertexID' (gl_VertexId int)

-0:46      move second child to first child (float)

-0:46        direct index (smooth float)

+0:46      move second child to first child (temp float)

+0:46        direct index (smooth temp float)

 0:46          'gl_ClipDistance' (smooth out implicitly-sized array of float)

 0:46          Constant:

 0:46            1 (const int)

 0:46        Constant:

 0:46          0.300000

-0:57  Function Definition: foo88( (void)

+0:57  Function Definition: foo88( (global void)

 0:57    Function Parameters: 

 0:?     Sequence

-0:61      'id' (int)

+0:61      'id' (temp int)

 0:63      'gl_ClipVertex' (gl_ClipVertex 4-component vector of float)

 0:64      'gl_Color' (in 4-component vector of float)

-0:65      direct index (structure{4-component vector of float ambient, 4-component vector of float diffuse, 4-component vector of float specular, 4-component vector of float position, 4-component vector of float halfVector, 3-component vector of float spotDirection, float spotExponent, float spotCutoff, float spotCosCutoff, float constantAttenuation, float linearAttenuation, float quadraticAttenuation})

-0:65        'gl_LightSource' (uniform 32-element array of structure{4-component vector of float ambient, 4-component vector of float diffuse, 4-component vector of float specular, 4-component vector of float position, 4-component vector of float halfVector, 3-component vector of float spotDirection, float spotExponent, float spotCutoff, float spotCosCutoff, float constantAttenuation, float linearAttenuation, float quadraticAttenuation})

+0:65      direct index (temp structure{global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation})

+0:65        'gl_LightSource' (uniform 32-element array of structure{global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation})

 0:65        Constant:

 0:65          0 (const int)

-0:66      far: direct index for structure (float)

-0:66        'gl_DepthRange' (uniform structure{float near, float far, float diff})

+0:66      far: direct index for structure (global float)

+0:66        'gl_DepthRange' (uniform structure{global float near, global float far, global float diff})

 0:66        Constant:

 0:66          1 (const int)

 0:67      'gl_TexCoord' (smooth out implicitly-sized array of 4-component vector of float)

@@ -145,11 +145,11 @@
 0:?     'c1D' (in float)

 0:?     'c2D' (in 2-component vector of float)

 0:?     'c3D' (in 3-component vector of float)

-0:?     'c4D' (smooth 4-component vector of float)

+0:?     'c4D' (smooth temp 4-component vector of float)

 0:?     'v4' (uniform 4-component vector of float)

 0:?     'gl_ClipDistance' (smooth out implicitly-sized array of float)

 0:?     'gl_TexCoord' (smooth out implicitly-sized array of 4-component vector of float)

-0:?     'abc' (int)

+0:?     'abc' (global int)

 0:?     'gl_VertexID' (gl_VertexId int)

 

 

@@ -159,12 +159,12 @@
 

 Shader version: 130

 ERROR: node is still EOpNull!

-0:15  Function Definition: main( (void)

+0:15  Function Definition: main( (global void)

 0:15    Function Parameters: 

 0:17    Sequence

 0:17      Sequence

-0:17        move second child to first child (float)

-0:17          'f' (float)

+0:17        move second child to first child (temp float)

+0:17          'f' (temp float)

 0:17          Constant:

 0:17            3.000000

 0:18      switch

@@ -176,111 +176,111 @@
 0:19            Constant:

 0:19              1 (const int)

 0:?           Sequence

-0:20            move second child to first child (float)

-0:20              'f' (float)

-0:20              sine (float)

-0:20                'f' (float)

+0:20            move second child to first child (temp float)

+0:20              'f' (temp float)

+0:20              sine (global float)

+0:20                'f' (temp float)

 0:21            Branch: Break

 0:22          case:  with expression

 0:22            Constant:

 0:22              2 (const int)

 0:?           Sequence

-0:23            move second child to first child (float)

-0:23              'f' (float)

-0:23              component-wise multiply (float)

-0:23                'f' (float)

-0:23                'f' (float)

+0:23            move second child to first child (temp float)

+0:23              'f' (temp float)

+0:23              component-wise multiply (temp float)

+0:23                'f' (temp float)

+0:23                'f' (temp float)

 0:24          default: 

 0:?           Sequence

-0:25            move second child to first child (float)

-0:25              'f' (float)

+0:25            move second child to first child (temp float)

+0:25              'f' (temp float)

 0:25              Constant:

 0:25                3.000000

-0:29      move second child to first child (uint)

-0:29        'i' (uint)

-0:29        direct index (uint)

-0:29          Function Call: texture(us21;vf2; (4-component vector of uint)

+0:29      move second child to first child (temp uint)

+0:29        'i' (temp uint)

+0:29        direct index (temp uint)

+0:29          Function Call: texture(us21;vf2; (global 4-component vector of uint)

 0:29            'us2D' (uniform usampler2D)

-0:29            Convert int to float (2-component vector of float)

+0:29            Convert int to float (temp 2-component vector of float)

 0:29              'x' (in 2-component vector of int)

 0:29          Constant:

 0:29            3 (const int)

-0:30      inclusive-or (uint)

-0:30        left-shift (uint)

-0:30          'i' (uint)

+0:30      inclusive-or (temp uint)

+0:30        left-shift (temp uint)

+0:30          'i' (temp uint)

 0:30          Constant:

 0:30            3 (const uint)

 0:30        Constant:

 0:30          69 (const uint)

 0:33      Sequence

-0:33        move second child to first child (3-component vector of float)

-0:33          'v11' (3-component vector of float)

-0:33          modf (3-component vector of float)

-0:33            'modfIn' (3-component vector of float)

-0:33            'modfOut' (3-component vector of float)

+0:33        move second child to first child (temp 3-component vector of float)

+0:33          'v11' (temp 3-component vector of float)

+0:33          modf (global 3-component vector of float)

+0:33            'modfIn' (temp 3-component vector of float)

+0:33            'modfOut' (temp 3-component vector of float)

 0:34      Sequence

-0:34        move second child to first child (float)

-0:34          't' (float)

-0:34          trunc (float)

-0:34            'f' (float)

+0:34        move second child to first child (temp float)

+0:34          't' (temp float)

+0:34          trunc (global float)

+0:34            'f' (temp float)

 0:35      Sequence

-0:35        move second child to first child (2-component vector of float)

-0:35          'v12' (2-component vector of float)

-0:35          round (2-component vector of float)

+0:35        move second child to first child (temp 2-component vector of float)

+0:35          'v12' (temp 2-component vector of float)

+0:35          round (global 2-component vector of float)

 0:35            'v2a' (in 2-component vector of float)

 0:36      Sequence

-0:36        move second child to first child (2-component vector of float)

-0:36          'v13' (2-component vector of float)

-0:36          roundEven (2-component vector of float)

+0:36        move second child to first child (temp 2-component vector of float)

+0:36          'v13' (temp 2-component vector of float)

+0:36          roundEven (global 2-component vector of float)

 0:36            'v2a' (in 2-component vector of float)

 0:37      Sequence

-0:37        move second child to first child (2-component vector of bool)

-0:37          'b10' (2-component vector of bool)

-0:37          isnan (2-component vector of bool)

+0:37        move second child to first child (temp 2-component vector of bool)

+0:37          'b10' (temp 2-component vector of bool)

+0:37          isnan (global 2-component vector of bool)

 0:37            'v2a' (in 2-component vector of float)

 0:38      Sequence

-0:38        move second child to first child (4-component vector of bool)

-0:38          'b11' (4-component vector of bool)

-0:38          isinf (4-component vector of bool)

+0:38        move second child to first child (temp 4-component vector of bool)

+0:38          'b11' (temp 4-component vector of bool)

+0:38          isinf (global 4-component vector of bool)

 0:38            'v4' (uniform 4-component vector of float)

-0:40      add (2-component vector of float)

-0:40        hyp. sine (float)

+0:40      add (temp 2-component vector of float)

+0:40        hyp. sine (global float)

 0:40          'c1D' (in float)

-0:41        vector-scale (2-component vector of float)

-0:41          hyp. cosine (float)

+0:41        vector-scale (temp 2-component vector of float)

+0:41          hyp. cosine (global float)

 0:41            'c1D' (in float)

-0:41          hyp. tangent (2-component vector of float)

+0:41          hyp. tangent (global 2-component vector of float)

 0:41            'c2D' (in 2-component vector of float)

-0:42      add (4-component vector of float)

-0:42        arc hyp. sine (4-component vector of float)

-0:42          'c4D' (smooth 4-component vector of float)

-0:42        arc hyp. cosine (4-component vector of float)

-0:42          'c4D' (smooth 4-component vector of float)

-0:43      arc hyp. tangent (3-component vector of float)

+0:42      add (temp 4-component vector of float)

+0:42        arc hyp. sine (global 4-component vector of float)

+0:42          'c4D' (smooth temp 4-component vector of float)

+0:42        arc hyp. cosine (global 4-component vector of float)

+0:42          'c4D' (smooth temp 4-component vector of float)

+0:43      arc hyp. tangent (global 3-component vector of float)

 0:43        'c3D' (in 3-component vector of float)

 0:45      Sequence

-0:45        move second child to first child (int)

-0:45          'id' (int)

+0:45        move second child to first child (temp int)

+0:45          'id' (temp int)

 0:45          'gl_VertexID' (gl_VertexId int)

-0:46      move second child to first child (float)

-0:46        direct index (smooth float)

+0:46      move second child to first child (temp float)

+0:46        direct index (smooth temp float)

 0:46          'gl_ClipDistance' (smooth out 2-element array of float)

 0:46          Constant:

 0:46            1 (const int)

 0:46        Constant:

 0:46          0.300000

-0:57  Function Definition: foo88( (void)

+0:57  Function Definition: foo88( (global void)

 0:57    Function Parameters: 

 0:?     Sequence

-0:61      'id' (int)

+0:61      'id' (temp int)

 0:63      'gl_ClipVertex' (gl_ClipVertex 4-component vector of float)

 0:64      'gl_Color' (in 4-component vector of float)

-0:65      direct index (structure{4-component vector of float ambient, 4-component vector of float diffuse, 4-component vector of float specular, 4-component vector of float position, 4-component vector of float halfVector, 3-component vector of float spotDirection, float spotExponent, float spotCutoff, float spotCosCutoff, float constantAttenuation, float linearAttenuation, float quadraticAttenuation})

-0:65        'gl_LightSource' (uniform 32-element array of structure{4-component vector of float ambient, 4-component vector of float diffuse, 4-component vector of float specular, 4-component vector of float position, 4-component vector of float halfVector, 3-component vector of float spotDirection, float spotExponent, float spotCutoff, float spotCosCutoff, float constantAttenuation, float linearAttenuation, float quadraticAttenuation})

+0:65      direct index (temp structure{global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation})

+0:65        'gl_LightSource' (uniform 32-element array of structure{global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation})

 0:65        Constant:

 0:65          0 (const int)

-0:66      far: direct index for structure (float)

-0:66        'gl_DepthRange' (uniform structure{float near, float far, float diff})

+0:66      far: direct index for structure (global float)

+0:66        'gl_DepthRange' (uniform structure{global float near, global float far, global float diff})

 0:66        Constant:

 0:66          1 (const int)

 0:67      'gl_TexCoord' (smooth out 1-element array of 4-component vector of float)

@@ -294,10 +294,10 @@
 0:?     'c1D' (in float)

 0:?     'c2D' (in 2-component vector of float)

 0:?     'c3D' (in 3-component vector of float)

-0:?     'c4D' (smooth 4-component vector of float)

+0:?     'c4D' (smooth temp 4-component vector of float)

 0:?     'v4' (uniform 4-component vector of float)

 0:?     'gl_ClipDistance' (smooth out 2-element array of float)

 0:?     'gl_TexCoord' (smooth out 1-element array of 4-component vector of float)

-0:?     'abc' (int)

+0:?     'abc' (global int)

 0:?     'gl_VertexID' (gl_VertexId int)

 

diff --git a/Test/baseResults/140.frag.out b/Test/baseResults/140.frag.out
index ebb4e56..ef3ebeb 100644
--- a/Test/baseResults/140.frag.out
+++ b/Test/baseResults/140.frag.out
@@ -15,36 +15,36 @@
 Requested GL_ARB_explicit_attrib_location

 Requested GL_ARB_separate_shader_objects

 ERROR: node is still EOpNull!

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:12    Sequence

 0:12      Sequence

-0:12        move second child to first child (float)

-0:12          'clip' (float)

-0:12          direct index (smooth float)

+0:12        move second child to first child (temp float)

+0:12          'clip' (temp float)

+0:12          direct index (smooth temp float)

 0:12            'gl_ClipDistance' (smooth in 5-element array of float)

 0:12            Constant:

 0:12              2 (const int)

 0:22  Sequence

-0:22    move second child to first child (float)

-0:22      'patch' (float)

+0:22    move second child to first child (temp float)

+0:22      'patch' (global float)

 0:22      Constant:

 0:22        3.100000

-0:36  Function Definition: foo( (void)

+0:36  Function Definition: foo( (global void)

 0:36    Function Parameters: 

 0:38    Sequence

 0:38      Sequence

-0:38        move second child to first child (2-component vector of float)

-0:38          'r1' (2-component vector of float)

-0:38          modf (2-component vector of float)

-0:38            vector swizzle (2-component vector of float)

+0:38        move second child to first child (temp 2-component vector of float)

+0:38          'r1' (temp 2-component vector of float)

+0:38          modf (global 2-component vector of float)

+0:38            vector swizzle (temp 2-component vector of float)

 0:38              'v' (smooth in 4-component vector of float)

 0:38              Sequence

 0:38                Constant:

 0:38                  0 (const int)

 0:38                Constant:

 0:38                  1 (const int)

-0:38            vector swizzle (2-component vector of float)

+0:38            vector swizzle (temp 2-component vector of float)

 0:38              'v' (smooth in 4-component vector of float)

 0:38              Sequence

 0:38                Constant:

@@ -52,17 +52,17 @@
 0:38                Constant:

 0:38                  3 (const int)

 0:39      Sequence

-0:39        move second child to first child (2-component vector of float)

-0:39          'r2' (2-component vector of float)

-0:39          modf (2-component vector of float)

-0:39            vector swizzle (2-component vector of float)

+0:39        move second child to first child (temp 2-component vector of float)

+0:39          'r2' (temp 2-component vector of float)

+0:39          modf (global 2-component vector of float)

+0:39            vector swizzle (temp 2-component vector of float)

 0:39              'o' (out 4-component vector of float)

 0:39              Sequence

 0:39                Constant:

 0:39                  0 (const int)

 0:39                Constant:

 0:39                  1 (const int)

-0:39            vector swizzle (2-component vector of float)

+0:39            vector swizzle (temp 2-component vector of float)

 0:39              'o' (out 4-component vector of float)

 0:39              Sequence

 0:39                Constant:

@@ -75,8 +75,8 @@
 0:?     'o' (out 4-component vector of float)

 0:?     'gl_ClipDistance' (smooth in 5-element array of float)

 0:?     'gl_ClipDistance' (smooth in 5-element array of float)

-0:?     's' (smooth in structure{float f})

-0:?     'patch' (float)

+0:?     's' (smooth in structure{global float f})

+0:?     'patch' (global float)

 0:?     'vl' (layout(location=3 ) smooth in 4-component vector of float)

 0:?     'factorBad' (layout(location=3 ) out 4-component vector of float)

 0:?     'factor' (layout(location=5 ) out 4-component vector of float)

@@ -90,36 +90,36 @@
 Requested GL_ARB_explicit_attrib_location

 Requested GL_ARB_separate_shader_objects

 ERROR: node is still EOpNull!

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:12    Sequence

 0:12      Sequence

-0:12        move second child to first child (float)

-0:12          'clip' (float)

-0:12          direct index (smooth float)

+0:12        move second child to first child (temp float)

+0:12          'clip' (temp float)

+0:12          direct index (smooth temp float)

 0:12            'gl_ClipDistance' (smooth in 5-element array of float)

 0:12            Constant:

 0:12              2 (const int)

 0:22  Sequence

-0:22    move second child to first child (float)

-0:22      'patch' (float)

+0:22    move second child to first child (temp float)

+0:22      'patch' (global float)

 0:22      Constant:

 0:22        3.100000

-0:36  Function Definition: foo( (void)

+0:36  Function Definition: foo( (global void)

 0:36    Function Parameters: 

 0:38    Sequence

 0:38      Sequence

-0:38        move second child to first child (2-component vector of float)

-0:38          'r1' (2-component vector of float)

-0:38          modf (2-component vector of float)

-0:38            vector swizzle (2-component vector of float)

+0:38        move second child to first child (temp 2-component vector of float)

+0:38          'r1' (temp 2-component vector of float)

+0:38          modf (global 2-component vector of float)

+0:38            vector swizzle (temp 2-component vector of float)

 0:38              'v' (smooth in 4-component vector of float)

 0:38              Sequence

 0:38                Constant:

 0:38                  0 (const int)

 0:38                Constant:

 0:38                  1 (const int)

-0:38            vector swizzle (2-component vector of float)

+0:38            vector swizzle (temp 2-component vector of float)

 0:38              'v' (smooth in 4-component vector of float)

 0:38              Sequence

 0:38                Constant:

@@ -127,17 +127,17 @@
 0:38                Constant:

 0:38                  3 (const int)

 0:39      Sequence

-0:39        move second child to first child (2-component vector of float)

-0:39          'r2' (2-component vector of float)

-0:39          modf (2-component vector of float)

-0:39            vector swizzle (2-component vector of float)

+0:39        move second child to first child (temp 2-component vector of float)

+0:39          'r2' (temp 2-component vector of float)

+0:39          modf (global 2-component vector of float)

+0:39            vector swizzle (temp 2-component vector of float)

 0:39              'o' (out 4-component vector of float)

 0:39              Sequence

 0:39                Constant:

 0:39                  0 (const int)

 0:39                Constant:

 0:39                  1 (const int)

-0:39            vector swizzle (2-component vector of float)

+0:39            vector swizzle (temp 2-component vector of float)

 0:39              'o' (out 4-component vector of float)

 0:39              Sequence

 0:39                Constant:

@@ -150,8 +150,8 @@
 0:?     'o' (out 4-component vector of float)

 0:?     'gl_ClipDistance' (smooth in 5-element array of float)

 0:?     'gl_ClipDistance' (smooth in 5-element array of float)

-0:?     's' (smooth in structure{float f})

-0:?     'patch' (float)

+0:?     's' (smooth in structure{global float f})

+0:?     'patch' (global float)

 0:?     'vl' (layout(location=3 ) smooth in 4-component vector of float)

 0:?     'factorBad' (layout(location=3 ) out 4-component vector of float)

 0:?     'factor' (layout(location=5 ) out 4-component vector of float)

diff --git a/Test/baseResults/140.vert.out b/Test/baseResults/140.vert.out
index 8c93522..0e1994e 100644
--- a/Test/baseResults/140.vert.out
+++ b/Test/baseResults/140.vert.out
@@ -16,23 +16,23 @@
 Requested GL_ARB_explicit_attrib_location

 Requested GL_ARB_separate_shader_objects

 ERROR: node is still EOpNull!

-0:9  Function Definition: main( (void)

+0:9  Function Definition: main( (global void)

 0:9    Function Parameters: 

 0:11    Sequence

 0:11      Sequence

-0:11        move second child to first child (int)

-0:11          'id' (int)

+0:11        move second child to first child (temp int)

+0:11          'id' (temp int)

 0:11          'gl_InstanceID' (gl_InstanceId int)

-0:12      add second child into first child (int)

-0:12        'id' (int)

+0:12      add second child into first child (temp int)

+0:12        'id' (temp int)

 0:12        anonMem: direct index for structure (layout(column_major std140 offset=0 ) uniform int)

 0:12          'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 offset=0 ) uniform int anonMem})

 0:12          Constant:

 0:12            0 (const uint)

-0:13      add second child into first child (int)

-0:13        'id' (int)

-0:13        direct index (int)

-0:13          Function Call: texelFetch(isB1;i1; (4-component vector of int)

+0:13      add second child into first child (temp int)

+0:13        'id' (temp int)

+0:13        direct index (temp int)

+0:13          Function Call: texelFetch(isB1;i1; (global 4-component vector of int)

 0:13            'sbuf' (uniform isamplerBuffer)

 0:13            Constant:

 0:13              8 (const int)

@@ -40,57 +40,57 @@
 0:13            3 (const int)

 0:14      'gl_ClipVertex' (gl_ClipVertex 4-component vector of float)

 0:15      'gl_Color' (in 4-component vector of float)

-0:16      direct index (structure{4-component vector of float ambient, 4-component vector of float diffuse, 4-component vector of float specular, 4-component vector of float position, 4-component vector of float halfVector, 3-component vector of float spotDirection, float spotExponent, float spotCutoff, float spotCosCutoff, float constantAttenuation, float linearAttenuation, float quadraticAttenuation})

-0:16        'gl_LightSource' (uniform 32-element array of structure{4-component vector of float ambient, 4-component vector of float diffuse, 4-component vector of float specular, 4-component vector of float position, 4-component vector of float halfVector, 3-component vector of float spotDirection, float spotExponent, float spotCutoff, float spotCosCutoff, float constantAttenuation, float linearAttenuation, float quadraticAttenuation})

+0:16      direct index (temp structure{global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation})

+0:16        'gl_LightSource' (uniform 32-element array of structure{global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation})

 0:16        Constant:

 0:16          0 (const int)

-0:17      far: direct index for structure (float)

-0:17        'gl_DepthRange' (uniform structure{float near, float far, float diff})

+0:17      far: direct index for structure (global float)

+0:17        'gl_DepthRange' (uniform structure{global float near, global float far, global float diff})

 0:17        Constant:

 0:17          1 (const int)

 0:18      'gl_TexCoord' (smooth out implicitly-sized array of 4-component vector of float)

 0:19      'gl_FogFragCoord' (smooth out float)

 0:20      'gl_FrontColor' (smooth out 4-component vector of float)

-0:48  Function Definition: foo( (void)

+0:48  Function Definition: foo( (global void)

 0:48    Function Parameters: 

 0:50    Sequence

 0:50      Sequence

-0:50        move second child to first child (4-component vector of float)

-0:50          'v' (4-component vector of float)

-0:50          Function Call: texelFetch(sR21;vi2; (4-component vector of float)

+0:50        move second child to first child (temp 4-component vector of float)

+0:50          'v' (temp 4-component vector of float)

+0:50          Function Call: texelFetch(sR21;vi2; (global 4-component vector of float)

 0:50            's2dr' (uniform sampler2DRect)

 0:50            'itloc2' (in 2-component vector of int)

-0:51      add second child into first child (4-component vector of float)

-0:51        'v' (4-component vector of float)

+0:51      add second child into first child (temp 4-component vector of float)

+0:51        'v' (temp 4-component vector of float)

 0:51        Constant:

 0:51          0.000000

-0:52      add second child into first child (4-component vector of float)

-0:52        'v' (4-component vector of float)

-0:52        Function Call: texture(sR21;vf2; (4-component vector of float)

+0:52      add second child into first child (temp 4-component vector of float)

+0:52        'v' (temp 4-component vector of float)

+0:52        Function Call: texture(sR21;vf2; (global 4-component vector of float)

 0:52          's2dr' (uniform sampler2DRect)

 0:52          'tloc2' (in 2-component vector of float)

-0:53      add second child into first child (4-component vector of float)

-0:53        'v' (4-component vector of float)

+0:53      add second child into first child (temp 4-component vector of float)

+0:53        'v' (temp 4-component vector of float)

 0:53        Constant:

 0:53          0.000000

-0:54      add second child into first child (4-component vector of float)

-0:54        'v' (4-component vector of float)

-0:54        Function Call: texture(sSR21;vf3; (float)

+0:54      add second child into first child (temp 4-component vector of float)

+0:54        'v' (temp 4-component vector of float)

+0:54        Function Call: texture(sSR21;vf3; (global float)

 0:54          's2drs' (uniform sampler2DRectShadow)

 0:54          'tloc3' (in 3-component vector of float)

-0:55      add second child into first child (4-component vector of float)

-0:55        'v' (4-component vector of float)

-0:55        Function Call: textureProj(sR21;vf3; (4-component vector of float)

+0:55      add second child into first child (temp 4-component vector of float)

+0:55        'v' (temp 4-component vector of float)

+0:55        Function Call: textureProj(sR21;vf3; (global 4-component vector of float)

 0:55          's2dr' (uniform sampler2DRect)

 0:55          'tloc3' (in 3-component vector of float)

-0:56      add second child into first child (4-component vector of float)

-0:56        'v' (4-component vector of float)

-0:56        Function Call: textureProj(sR21;vf4; (4-component vector of float)

+0:56      add second child into first child (temp 4-component vector of float)

+0:56        'v' (temp 4-component vector of float)

+0:56        Function Call: textureProj(sR21;vf4; (global 4-component vector of float)

 0:56          's2dr' (uniform sampler2DRect)

 0:56          'tloc4' (in 4-component vector of float)

-0:57      add second child into first child (4-component vector of float)

-0:57        'v' (4-component vector of float)

-0:57        Function Call: textureProjGradOffset(sR21;vf4;vf2;vf2;vi2; (4-component vector of float)

+0:57      add second child into first child (temp 4-component vector of float)

+0:57        'v' (temp 4-component vector of float)

+0:57        Function Call: textureProjGradOffset(sR21;vf4;vf2;vf2;vi2; (global 4-component vector of float)

 0:57          's2dr' (uniform sampler2DRect)

 0:57          'tloc4' (in 4-component vector of float)

 0:57          Constant:

@@ -102,9 +102,9 @@
 0:57          Constant:

 0:57            1 (const int)

 0:57            2 (const int)

-0:58      add second child into first child (4-component vector of float)

-0:58        'v' (4-component vector of float)

-0:58        Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (float)

+0:58      add second child into first child (temp 4-component vector of float)

+0:58        'v' (temp 4-component vector of float)

+0:58        Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

 0:58          's2drs' (uniform sampler2DRectShadow)

 0:58          'tloc4' (in 4-component vector of float)

 0:58          Constant:

@@ -146,23 +146,23 @@
 Requested GL_ARB_explicit_attrib_location

 Requested GL_ARB_separate_shader_objects

 ERROR: node is still EOpNull!

-0:9  Function Definition: main( (void)

+0:9  Function Definition: main( (global void)

 0:9    Function Parameters: 

 0:11    Sequence

 0:11      Sequence

-0:11        move second child to first child (int)

-0:11          'id' (int)

+0:11        move second child to first child (temp int)

+0:11          'id' (temp int)

 0:11          'gl_InstanceID' (gl_InstanceId int)

-0:12      add second child into first child (int)

-0:12        'id' (int)

+0:12      add second child into first child (temp int)

+0:12        'id' (temp int)

 0:12        anonMem: direct index for structure (layout(column_major std140 offset=0 ) uniform int)

 0:12          'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 offset=0 ) uniform int anonMem})

 0:12          Constant:

 0:12            0 (const uint)

-0:13      add second child into first child (int)

-0:13        'id' (int)

-0:13        direct index (int)

-0:13          Function Call: texelFetch(isB1;i1; (4-component vector of int)

+0:13      add second child into first child (temp int)

+0:13        'id' (temp int)

+0:13        direct index (temp int)

+0:13          Function Call: texelFetch(isB1;i1; (global 4-component vector of int)

 0:13            'sbuf' (uniform isamplerBuffer)

 0:13            Constant:

 0:13              8 (const int)

@@ -170,57 +170,57 @@
 0:13            3 (const int)

 0:14      'gl_ClipVertex' (gl_ClipVertex 4-component vector of float)

 0:15      'gl_Color' (in 4-component vector of float)

-0:16      direct index (structure{4-component vector of float ambient, 4-component vector of float diffuse, 4-component vector of float specular, 4-component vector of float position, 4-component vector of float halfVector, 3-component vector of float spotDirection, float spotExponent, float spotCutoff, float spotCosCutoff, float constantAttenuation, float linearAttenuation, float quadraticAttenuation})

-0:16        'gl_LightSource' (uniform 32-element array of structure{4-component vector of float ambient, 4-component vector of float diffuse, 4-component vector of float specular, 4-component vector of float position, 4-component vector of float halfVector, 3-component vector of float spotDirection, float spotExponent, float spotCutoff, float spotCosCutoff, float constantAttenuation, float linearAttenuation, float quadraticAttenuation})

+0:16      direct index (temp structure{global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation})

+0:16        'gl_LightSource' (uniform 32-element array of structure{global 4-component vector of float ambient, global 4-component vector of float diffuse, global 4-component vector of float specular, global 4-component vector of float position, global 4-component vector of float halfVector, global 3-component vector of float spotDirection, global float spotExponent, global float spotCutoff, global float spotCosCutoff, global float constantAttenuation, global float linearAttenuation, global float quadraticAttenuation})

 0:16        Constant:

 0:16          0 (const int)

-0:17      far: direct index for structure (float)

-0:17        'gl_DepthRange' (uniform structure{float near, float far, float diff})

+0:17      far: direct index for structure (global float)

+0:17        'gl_DepthRange' (uniform structure{global float near, global float far, global float diff})

 0:17        Constant:

 0:17          1 (const int)

 0:18      'gl_TexCoord' (smooth out 1-element array of 4-component vector of float)

 0:19      'gl_FogFragCoord' (smooth out float)

 0:20      'gl_FrontColor' (smooth out 4-component vector of float)

-0:48  Function Definition: foo( (void)

+0:48  Function Definition: foo( (global void)

 0:48    Function Parameters: 

 0:50    Sequence

 0:50      Sequence

-0:50        move second child to first child (4-component vector of float)

-0:50          'v' (4-component vector of float)

-0:50          Function Call: texelFetch(sR21;vi2; (4-component vector of float)

+0:50        move second child to first child (temp 4-component vector of float)

+0:50          'v' (temp 4-component vector of float)

+0:50          Function Call: texelFetch(sR21;vi2; (global 4-component vector of float)

 0:50            's2dr' (uniform sampler2DRect)

 0:50            'itloc2' (in 2-component vector of int)

-0:51      add second child into first child (4-component vector of float)

-0:51        'v' (4-component vector of float)

+0:51      add second child into first child (temp 4-component vector of float)

+0:51        'v' (temp 4-component vector of float)

 0:51        Constant:

 0:51          0.000000

-0:52      add second child into first child (4-component vector of float)

-0:52        'v' (4-component vector of float)

-0:52        Function Call: texture(sR21;vf2; (4-component vector of float)

+0:52      add second child into first child (temp 4-component vector of float)

+0:52        'v' (temp 4-component vector of float)

+0:52        Function Call: texture(sR21;vf2; (global 4-component vector of float)

 0:52          's2dr' (uniform sampler2DRect)

 0:52          'tloc2' (in 2-component vector of float)

-0:53      add second child into first child (4-component vector of float)

-0:53        'v' (4-component vector of float)

+0:53      add second child into first child (temp 4-component vector of float)

+0:53        'v' (temp 4-component vector of float)

 0:53        Constant:

 0:53          0.000000

-0:54      add second child into first child (4-component vector of float)

-0:54        'v' (4-component vector of float)

-0:54        Function Call: texture(sSR21;vf3; (float)

+0:54      add second child into first child (temp 4-component vector of float)

+0:54        'v' (temp 4-component vector of float)

+0:54        Function Call: texture(sSR21;vf3; (global float)

 0:54          's2drs' (uniform sampler2DRectShadow)

 0:54          'tloc3' (in 3-component vector of float)

-0:55      add second child into first child (4-component vector of float)

-0:55        'v' (4-component vector of float)

-0:55        Function Call: textureProj(sR21;vf3; (4-component vector of float)

+0:55      add second child into first child (temp 4-component vector of float)

+0:55        'v' (temp 4-component vector of float)

+0:55        Function Call: textureProj(sR21;vf3; (global 4-component vector of float)

 0:55          's2dr' (uniform sampler2DRect)

 0:55          'tloc3' (in 3-component vector of float)

-0:56      add second child into first child (4-component vector of float)

-0:56        'v' (4-component vector of float)

-0:56        Function Call: textureProj(sR21;vf4; (4-component vector of float)

+0:56      add second child into first child (temp 4-component vector of float)

+0:56        'v' (temp 4-component vector of float)

+0:56        Function Call: textureProj(sR21;vf4; (global 4-component vector of float)

 0:56          's2dr' (uniform sampler2DRect)

 0:56          'tloc4' (in 4-component vector of float)

-0:57      add second child into first child (4-component vector of float)

-0:57        'v' (4-component vector of float)

-0:57        Function Call: textureProjGradOffset(sR21;vf4;vf2;vf2;vi2; (4-component vector of float)

+0:57      add second child into first child (temp 4-component vector of float)

+0:57        'v' (temp 4-component vector of float)

+0:57        Function Call: textureProjGradOffset(sR21;vf4;vf2;vf2;vi2; (global 4-component vector of float)

 0:57          's2dr' (uniform sampler2DRect)

 0:57          'tloc4' (in 4-component vector of float)

 0:57          Constant:

@@ -232,9 +232,9 @@
 0:57          Constant:

 0:57            1 (const int)

 0:57            2 (const int)

-0:58      add second child into first child (4-component vector of float)

-0:58        'v' (4-component vector of float)

-0:58        Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (float)

+0:58      add second child into first child (temp 4-component vector of float)

+0:58        'v' (temp 4-component vector of float)

+0:58        Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

 0:58          's2drs' (uniform sampler2DRectShadow)

 0:58          'tloc4' (in 4-component vector of float)

 0:58          Constant:

diff --git a/Test/baseResults/150.frag.out b/Test/baseResults/150.frag.out
index 5039c0a..c3d4fcd 100644
--- a/Test/baseResults/150.frag.out
+++ b/Test/baseResults/150.frag.out
@@ -10,84 +10,84 @@
 gl_FragCoord pixel center is integer

 gl_FragCoord origin is upper left

 ERROR: node is still EOpNull!

-0:9  Function Definition: main( (void)

+0:9  Function Definition: main( (global void)

 0:9    Function Parameters: 

 0:11    Sequence

 0:11      Sequence

-0:11        move second child to first child (4-component vector of float)

-0:11          'c' (4-component vector of float)

+0:11        move second child to first child (temp 4-component vector of float)

+0:11          'c' (temp 4-component vector of float)

 0:11          'gl_FragCoord' (gl_FragCoord 4-component vector of float)

 0:18  Sequence

-0:18    move second child to first child (float)

-0:18      'patch' (float)

+0:18    move second child to first child (temp float)

+0:18      'patch' (global float)

 0:18      Constant:

 0:18        3.100000

-0:31  Function Definition: barWxyz( (void)

+0:31  Function Definition: barWxyz( (global void)

 0:31    Function Parameters: 

 0:33    Sequence

 0:33      Sequence

-0:33        move second child to first child (2-component vector of int)

-0:33          't11' (2-component vector of int)

-0:33          Function Call: textureSize(s21; (2-component vector of int)

+0:33        move second child to first child (temp 2-component vector of int)

+0:33          't11' (temp 2-component vector of int)

+0:33          Function Call: textureSize(s21; (global 2-component vector of int)

 0:33            'sms' (uniform sampler2DMS)

 0:34      Sequence

-0:34        move second child to first child (2-component vector of int)

-0:34          't12' (2-component vector of int)

-0:34          Function Call: textureSize(is21; (2-component vector of int)

+0:34        move second child to first child (temp 2-component vector of int)

+0:34          't12' (temp 2-component vector of int)

+0:34          Function Call: textureSize(is21; (global 2-component vector of int)

 0:34            'isms' (uniform isampler2DMS)

 0:35      Sequence

-0:35        move second child to first child (2-component vector of int)

-0:35          't13' (2-component vector of int)

-0:35          Function Call: textureSize(us21; (2-component vector of int)

+0:35        move second child to first child (temp 2-component vector of int)

+0:35          't13' (temp 2-component vector of int)

+0:35          Function Call: textureSize(us21; (global 2-component vector of int)

 0:35            'usms' (uniform usampler2DMS)

 0:36      Sequence

-0:36        move second child to first child (3-component vector of int)

-0:36          't21' (3-component vector of int)

-0:36          Function Call: textureSize(sA21; (3-component vector of int)

+0:36        move second child to first child (temp 3-component vector of int)

+0:36          't21' (temp 3-component vector of int)

+0:36          Function Call: textureSize(sA21; (global 3-component vector of int)

 0:36            'smsa' (uniform sampler2DMSArray)

 0:37      Sequence

-0:37        move second child to first child (3-component vector of int)

-0:37          't22' (3-component vector of int)

-0:37          Function Call: textureSize(isA21; (3-component vector of int)

+0:37        move second child to first child (temp 3-component vector of int)

+0:37          't22' (temp 3-component vector of int)

+0:37          Function Call: textureSize(isA21; (global 3-component vector of int)

 0:37            'ismsa' (uniform isampler2DMSArray)

 0:38      Sequence

-0:38        move second child to first child (3-component vector of int)

-0:38          't23' (3-component vector of int)

-0:38          Function Call: textureSize(usA21; (3-component vector of int)

+0:38        move second child to first child (temp 3-component vector of int)

+0:38          't23' (temp 3-component vector of int)

+0:38          Function Call: textureSize(usA21; (global 3-component vector of int)

 0:38            'usmsa' (uniform usampler2DMSArray)

 0:39      Sequence

-0:39        move second child to first child (4-component vector of float)

-0:39          't31' (4-component vector of float)

-0:39          Function Call: texelFetch(s21;vi2;i1; (4-component vector of float)

+0:39        move second child to first child (temp 4-component vector of float)

+0:39          't31' (temp 4-component vector of float)

+0:39          Function Call: texelFetch(s21;vi2;i1; (global 4-component vector of float)

 0:39            'sms' (uniform sampler2DMS)

 0:39            'p2' (flat in 2-component vector of int)

 0:39            'samp' (flat in int)

 0:40      Sequence

-0:40        move second child to first child (4-component vector of int)

-0:40          't32' (4-component vector of int)

-0:40          Function Call: texelFetch(is21;vi2;i1; (4-component vector of int)

+0:40        move second child to first child (temp 4-component vector of int)

+0:40          't32' (temp 4-component vector of int)

+0:40          Function Call: texelFetch(is21;vi2;i1; (global 4-component vector of int)

 0:40            'isms' (uniform isampler2DMS)

 0:40            'p2' (flat in 2-component vector of int)

 0:40            'samp' (flat in int)

 0:41      Sequence

-0:41        move second child to first child (4-component vector of uint)

-0:41          't33' (4-component vector of uint)

-0:41          Function Call: texelFetch(us21;vi2;i1; (4-component vector of uint)

+0:41        move second child to first child (temp 4-component vector of uint)

+0:41          't33' (temp 4-component vector of uint)

+0:41          Function Call: texelFetch(us21;vi2;i1; (global 4-component vector of uint)

 0:41            'usms' (uniform usampler2DMS)

 0:41            'p2' (flat in 2-component vector of int)

 0:41            Constant:

 0:41              3 (const int)

 0:42      Sequence

-0:42        move second child to first child (4-component vector of float)

-0:42          't41' (4-component vector of float)

-0:42          Function Call: texelFetch(sA21;vi3;i1; (4-component vector of float)

+0:42        move second child to first child (temp 4-component vector of float)

+0:42          't41' (temp 4-component vector of float)

+0:42          Function Call: texelFetch(sA21;vi3;i1; (global 4-component vector of float)

 0:42            'smsa' (uniform sampler2DMSArray)

 0:42            'p3' (flat in 3-component vector of int)

 0:42            'samp' (flat in int)

 0:43      Sequence

-0:43        move second child to first child (4-component vector of int)

-0:43          't42' (4-component vector of int)

-0:43          Function Call: texelFetch(isA21;vi3;i1; (4-component vector of int)

+0:43        move second child to first child (temp 4-component vector of int)

+0:43          't42' (temp 4-component vector of int)

+0:43          Function Call: texelFetch(isA21;vi3;i1; (global 4-component vector of int)

 0:43            'ismsa' (uniform isampler2DMSArray)

 0:43            Constant:

 0:43              2 (const int)

@@ -95,9 +95,9 @@
 0:43              2 (const int)

 0:43            'samp' (flat in int)

 0:44      Sequence

-0:44        move second child to first child (4-component vector of uint)

-0:44          't43' (4-component vector of uint)

-0:44          Function Call: texelFetch(usA21;vi3;i1; (4-component vector of uint)

+0:44        move second child to first child (temp 4-component vector of uint)

+0:44          't43' (temp 4-component vector of uint)

+0:44          Function Call: texelFetch(usA21;vi3;i1; (global 4-component vector of uint)

 0:44            'usmsa' (uniform usampler2DMSArray)

 0:44            'p3' (flat in 3-component vector of int)

 0:44            'samp' (flat in int)

@@ -105,8 +105,8 @@
 0:?     'gl_FragCoord' (gl_FragCoord 4-component vector of float)

 0:?     'gl_FragCoord' (gl_FragCoord 4-component vector of float)

 0:?     'foo' (smooth in 4-component vector of float)

-0:?     's' (smooth in structure{float f})

-0:?     'patch' (float)

+0:?     's' (smooth in structure{global float f})

+0:?     'patch' (global float)

 0:?     'sms' (uniform sampler2DMS)

 0:?     'isms' (uniform isampler2DMS)

 0:?     'usms' (uniform usampler2DMS)

@@ -125,84 +125,84 @@
 gl_FragCoord pixel center is integer

 gl_FragCoord origin is upper left

 ERROR: node is still EOpNull!

-0:9  Function Definition: main( (void)

+0:9  Function Definition: main( (global void)

 0:9    Function Parameters: 

 0:11    Sequence

 0:11      Sequence

-0:11        move second child to first child (4-component vector of float)

-0:11          'c' (4-component vector of float)

+0:11        move second child to first child (temp 4-component vector of float)

+0:11          'c' (temp 4-component vector of float)

 0:11          'gl_FragCoord' (gl_FragCoord 4-component vector of float)

 0:18  Sequence

-0:18    move second child to first child (float)

-0:18      'patch' (float)

+0:18    move second child to first child (temp float)

+0:18      'patch' (global float)

 0:18      Constant:

 0:18        3.100000

-0:31  Function Definition: barWxyz( (void)

+0:31  Function Definition: barWxyz( (global void)

 0:31    Function Parameters: 

 0:33    Sequence

 0:33      Sequence

-0:33        move second child to first child (2-component vector of int)

-0:33          't11' (2-component vector of int)

-0:33          Function Call: textureSize(s21; (2-component vector of int)

+0:33        move second child to first child (temp 2-component vector of int)

+0:33          't11' (temp 2-component vector of int)

+0:33          Function Call: textureSize(s21; (global 2-component vector of int)

 0:33            'sms' (uniform sampler2DMS)

 0:34      Sequence

-0:34        move second child to first child (2-component vector of int)

-0:34          't12' (2-component vector of int)

-0:34          Function Call: textureSize(is21; (2-component vector of int)

+0:34        move second child to first child (temp 2-component vector of int)

+0:34          't12' (temp 2-component vector of int)

+0:34          Function Call: textureSize(is21; (global 2-component vector of int)

 0:34            'isms' (uniform isampler2DMS)

 0:35      Sequence

-0:35        move second child to first child (2-component vector of int)

-0:35          't13' (2-component vector of int)

-0:35          Function Call: textureSize(us21; (2-component vector of int)

+0:35        move second child to first child (temp 2-component vector of int)

+0:35          't13' (temp 2-component vector of int)

+0:35          Function Call: textureSize(us21; (global 2-component vector of int)

 0:35            'usms' (uniform usampler2DMS)

 0:36      Sequence

-0:36        move second child to first child (3-component vector of int)

-0:36          't21' (3-component vector of int)

-0:36          Function Call: textureSize(sA21; (3-component vector of int)

+0:36        move second child to first child (temp 3-component vector of int)

+0:36          't21' (temp 3-component vector of int)

+0:36          Function Call: textureSize(sA21; (global 3-component vector of int)

 0:36            'smsa' (uniform sampler2DMSArray)

 0:37      Sequence

-0:37        move second child to first child (3-component vector of int)

-0:37          't22' (3-component vector of int)

-0:37          Function Call: textureSize(isA21; (3-component vector of int)

+0:37        move second child to first child (temp 3-component vector of int)

+0:37          't22' (temp 3-component vector of int)

+0:37          Function Call: textureSize(isA21; (global 3-component vector of int)

 0:37            'ismsa' (uniform isampler2DMSArray)

 0:38      Sequence

-0:38        move second child to first child (3-component vector of int)

-0:38          't23' (3-component vector of int)

-0:38          Function Call: textureSize(usA21; (3-component vector of int)

+0:38        move second child to first child (temp 3-component vector of int)

+0:38          't23' (temp 3-component vector of int)

+0:38          Function Call: textureSize(usA21; (global 3-component vector of int)

 0:38            'usmsa' (uniform usampler2DMSArray)

 0:39      Sequence

-0:39        move second child to first child (4-component vector of float)

-0:39          't31' (4-component vector of float)

-0:39          Function Call: texelFetch(s21;vi2;i1; (4-component vector of float)

+0:39        move second child to first child (temp 4-component vector of float)

+0:39          't31' (temp 4-component vector of float)

+0:39          Function Call: texelFetch(s21;vi2;i1; (global 4-component vector of float)

 0:39            'sms' (uniform sampler2DMS)

 0:39            'p2' (flat in 2-component vector of int)

 0:39            'samp' (flat in int)

 0:40      Sequence

-0:40        move second child to first child (4-component vector of int)

-0:40          't32' (4-component vector of int)

-0:40          Function Call: texelFetch(is21;vi2;i1; (4-component vector of int)

+0:40        move second child to first child (temp 4-component vector of int)

+0:40          't32' (temp 4-component vector of int)

+0:40          Function Call: texelFetch(is21;vi2;i1; (global 4-component vector of int)

 0:40            'isms' (uniform isampler2DMS)

 0:40            'p2' (flat in 2-component vector of int)

 0:40            'samp' (flat in int)

 0:41      Sequence

-0:41        move second child to first child (4-component vector of uint)

-0:41          't33' (4-component vector of uint)

-0:41          Function Call: texelFetch(us21;vi2;i1; (4-component vector of uint)

+0:41        move second child to first child (temp 4-component vector of uint)

+0:41          't33' (temp 4-component vector of uint)

+0:41          Function Call: texelFetch(us21;vi2;i1; (global 4-component vector of uint)

 0:41            'usms' (uniform usampler2DMS)

 0:41            'p2' (flat in 2-component vector of int)

 0:41            Constant:

 0:41              3 (const int)

 0:42      Sequence

-0:42        move second child to first child (4-component vector of float)

-0:42          't41' (4-component vector of float)

-0:42          Function Call: texelFetch(sA21;vi3;i1; (4-component vector of float)

+0:42        move second child to first child (temp 4-component vector of float)

+0:42          't41' (temp 4-component vector of float)

+0:42          Function Call: texelFetch(sA21;vi3;i1; (global 4-component vector of float)

 0:42            'smsa' (uniform sampler2DMSArray)

 0:42            'p3' (flat in 3-component vector of int)

 0:42            'samp' (flat in int)

 0:43      Sequence

-0:43        move second child to first child (4-component vector of int)

-0:43          't42' (4-component vector of int)

-0:43          Function Call: texelFetch(isA21;vi3;i1; (4-component vector of int)

+0:43        move second child to first child (temp 4-component vector of int)

+0:43          't42' (temp 4-component vector of int)

+0:43          Function Call: texelFetch(isA21;vi3;i1; (global 4-component vector of int)

 0:43            'ismsa' (uniform isampler2DMSArray)

 0:43            Constant:

 0:43              2 (const int)

@@ -210,9 +210,9 @@
 0:43              2 (const int)

 0:43            'samp' (flat in int)

 0:44      Sequence

-0:44        move second child to first child (4-component vector of uint)

-0:44          't43' (4-component vector of uint)

-0:44          Function Call: texelFetch(usA21;vi3;i1; (4-component vector of uint)

+0:44        move second child to first child (temp 4-component vector of uint)

+0:44          't43' (temp 4-component vector of uint)

+0:44          Function Call: texelFetch(usA21;vi3;i1; (global 4-component vector of uint)

 0:44            'usmsa' (uniform usampler2DMSArray)

 0:44            'p3' (flat in 3-component vector of int)

 0:44            'samp' (flat in int)

@@ -220,8 +220,8 @@
 0:?     'gl_FragCoord' (gl_FragCoord 4-component vector of float)

 0:?     'gl_FragCoord' (gl_FragCoord 4-component vector of float)

 0:?     'foo' (smooth in 4-component vector of float)

-0:?     's' (smooth in structure{float f})

-0:?     'patch' (float)

+0:?     's' (smooth in structure{global float f})

+0:?     'patch' (global float)

 0:?     'sms' (uniform sampler2DMS)

 0:?     'isms' (uniform isampler2DMS)

 0:?     'usms' (uniform usampler2DMS)

diff --git a/Test/baseResults/150.geom.out b/Test/baseResults/150.geom.out
index adb5b11..728e283 100644
--- a/Test/baseResults/150.geom.out
+++ b/Test/baseResults/150.geom.out
@@ -44,38 +44,38 @@
 input primitive = lines_adjacency

 output primitive = triangle_strip

 ERROR: node is still EOpNull!

-0:25  Function Definition: main( (void)

+0:25  Function Definition: main( (global void)

 0:25    Function Parameters: 

 0:27    Sequence

-0:27      EmitVertex (void)

-0:28      EndPrimitive (void)

+0:27      EmitVertex (global void)

+0:28      EndPrimitive (global void)

 0:29      Constant:

 0:29        0.000000

 0:30      Constant:

 0:30        0.000000

-0:32      move second child to first child (3-component vector of float)

+0:32      move second child to first child (temp 3-component vector of float)

 0:32        color: direct index for structure (layout(stream=0 ) out 3-component vector of float)

 0:32          'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out 3-component vector of float color})

 0:32          Constant:

 0:32            0 (const uint)

 0:32        color: direct index for structure (in 3-component vector of float)

-0:32          direct index (block{in 3-component vector of float color})

+0:32          direct index (temp block{in 3-component vector of float color})

 0:32            'fromV' (in 4-element array of block{in 3-component vector of float color})

 0:32            Constant:

 0:32              0 (const int)

 0:32          Constant:

 0:32            0 (const int)

-0:33      move second child to first child (float)

-0:33        direct index (layout(stream=0 ) float)

+0:33      move second child to first child (temp float)

+0:33        direct index (layout(stream=0 ) temp float)

 0:33          gl_ClipDistance: direct index for structure (layout(stream=0 ) out implicitly-sized array of float)

 0:33            'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position 4-component vector of float gl_Position, layout(stream=0 ) gl_PointSize float gl_PointSize, layout(stream=0 ) out implicitly-sized array of float gl_ClipDistance})

 0:33            Constant:

 0:33              2 (const uint)

 0:33          Constant:

 0:33            3 (const int)

-0:33        direct index (float)

+0:33        direct index (temp float)

 0:33          gl_ClipDistance: direct index for structure (in implicitly-sized array of float)

-0:33            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:33            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:33              'gl_in' (in 4-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:33              Constant:

 0:33                1 (const int)

@@ -83,42 +83,42 @@
 0:33              2 (const int)

 0:33          Constant:

 0:33            2 (const int)

-0:34      move second child to first child (4-component vector of float)

+0:34      move second child to first child (temp 4-component vector of float)

 0:34        gl_Position: direct index for structure (layout(stream=0 ) gl_Position 4-component vector of float)

 0:34          'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position 4-component vector of float gl_Position, layout(stream=0 ) gl_PointSize float gl_PointSize, layout(stream=0 ) out implicitly-sized array of float gl_ClipDistance})

 0:34          Constant:

 0:34            0 (const uint)

 0:34        gl_Position: direct index for structure (in 4-component vector of float)

-0:34          direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:34          direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:34            'gl_in' (in 4-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:34            Constant:

 0:34              0 (const int)

 0:34          Constant:

 0:34            0 (const int)

-0:35      move second child to first child (float)

+0:35      move second child to first child (temp float)

 0:35        gl_PointSize: direct index for structure (layout(stream=0 ) gl_PointSize float)

 0:35          'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position 4-component vector of float gl_Position, layout(stream=0 ) gl_PointSize float gl_PointSize, layout(stream=0 ) out implicitly-sized array of float gl_ClipDistance})

 0:35          Constant:

 0:35            1 (const uint)

 0:35        gl_PointSize: direct index for structure (in float)

-0:35          direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:35          direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:35            'gl_in' (in 4-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:35            Constant:

 0:35              3 (const int)

 0:35          Constant:

 0:35            1 (const int)

-0:36      move second child to first child (int)

+0:36      move second child to first child (temp int)

 0:36        'gl_PrimitiveID' (layout(stream=0 ) out int)

 0:36        'gl_PrimitiveIDIn' (in int)

-0:37      move second child to first child (int)

+0:37      move second child to first child (temp int)

 0:37        'gl_Layer' (layout(stream=0 ) out int)

 0:37        Constant:

 0:37          2 (const int)

-0:67  Function Definition: foo(i1; (void)

+0:67  Function Definition: foo(i1; (global void)

 0:67    Function Parameters: 

 0:67      'a' (in int)

 0:69    Sequence

-0:69      move second child to first child (4-component vector of float)

+0:69      move second child to first child (temp 4-component vector of float)

 0:69        a: direct index for structure (layout(stream=6 ) out 4-component vector of float)

 0:69          'ouuaa6' (layout(stream=6 ) out block{layout(stream=6 ) out 4-component vector of float a})

 0:69          Constant:

@@ -129,21 +129,21 @@
 0:69          1.000000

 0:69          1.000000

 0:107  Sequence

-0:107    move second child to first child (float)

-0:107      'summ' (float)

+0:107    move second child to first child (temp float)

+0:107      'summ' (global float)

 0:107      Constant:

 0:107        11332.000000

-0:127  Function Definition: fooe1( (void)

+0:127  Function Definition: fooe1( (global void)

 0:127    Function Parameters: 

 0:129    Sequence

-0:129      move second child to first child (int)

+0:129      move second child to first child (temp int)

 0:129        'gl_ViewportIndex' (layout(stream=0 ) out int)

 0:129        Constant:

 0:129          15 (const int)

-0:134  Function Definition: fooe2( (void)

+0:134  Function Definition: fooe2( (global void)

 0:134    Function Parameters: 

 0:136    Sequence

-0:136      move second child to first child (int)

+0:136      move second child to first child (temp int)

 0:136        'gl_ViewportIndex' (layout(stream=0 ) out int)

 0:136        Constant:

 0:136          15 (const int)

@@ -171,7 +171,7 @@
 0:?     'insn' (in 4-element array of block{in int a15})

 0:?     'anon@3' (layout(stream=3 ) out block{layout(stream=3 ) out float f15})

 0:?     'anon@4' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform bool b15})

-0:?     'summ' (float)

+0:?     'summ' (global float)

 0:?     'gl_ViewportIndex' (layout(stream=3 ) out int)

 

 

@@ -185,38 +185,38 @@
 input primitive = lines_adjacency

 output primitive = triangle_strip

 ERROR: node is still EOpNull!

-0:25  Function Definition: main( (void)

+0:25  Function Definition: main( (global void)

 0:25    Function Parameters: 

 0:27    Sequence

-0:27      EmitVertex (void)

-0:28      EndPrimitive (void)

+0:27      EmitVertex (global void)

+0:28      EndPrimitive (global void)

 0:29      Constant:

 0:29        0.000000

 0:30      Constant:

 0:30        0.000000

-0:32      move second child to first child (3-component vector of float)

+0:32      move second child to first child (temp 3-component vector of float)

 0:32        color: direct index for structure (layout(stream=0 ) out 3-component vector of float)

 0:32          'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out 3-component vector of float color})

 0:32          Constant:

 0:32            0 (const uint)

 0:32        color: direct index for structure (in 3-component vector of float)

-0:32          direct index (block{in 3-component vector of float color})

+0:32          direct index (temp block{in 3-component vector of float color})

 0:32            'fromV' (in 4-element array of block{in 3-component vector of float color})

 0:32            Constant:

 0:32              0 (const int)

 0:32          Constant:

 0:32            0 (const int)

-0:33      move second child to first child (float)

-0:33        direct index (layout(stream=0 ) float)

+0:33      move second child to first child (temp float)

+0:33        direct index (layout(stream=0 ) temp float)

 0:33          gl_ClipDistance: direct index for structure (layout(stream=0 ) out 4-element array of float)

 0:33            'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position 4-component vector of float gl_Position, layout(stream=0 ) gl_PointSize float gl_PointSize, layout(stream=0 ) out 4-element array of float gl_ClipDistance})

 0:33            Constant:

 0:33              2 (const uint)

 0:33          Constant:

 0:33            3 (const int)

-0:33        direct index (float)

+0:33        direct index (temp float)

 0:33          gl_ClipDistance: direct index for structure (in 1-element array of float)

-0:33            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:33            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:33              'gl_in' (in 4-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:33              Constant:

 0:33                1 (const int)

@@ -224,42 +224,42 @@
 0:33              2 (const int)

 0:33          Constant:

 0:33            2 (const int)

-0:34      move second child to first child (4-component vector of float)

+0:34      move second child to first child (temp 4-component vector of float)

 0:34        gl_Position: direct index for structure (layout(stream=0 ) gl_Position 4-component vector of float)

 0:34          'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position 4-component vector of float gl_Position, layout(stream=0 ) gl_PointSize float gl_PointSize, layout(stream=0 ) out 4-element array of float gl_ClipDistance})

 0:34          Constant:

 0:34            0 (const uint)

 0:34        gl_Position: direct index for structure (in 4-component vector of float)

-0:34          direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:34          direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:34            'gl_in' (in 4-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:34            Constant:

 0:34              0 (const int)

 0:34          Constant:

 0:34            0 (const int)

-0:35      move second child to first child (float)

+0:35      move second child to first child (temp float)

 0:35        gl_PointSize: direct index for structure (layout(stream=0 ) gl_PointSize float)

 0:35          'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position 4-component vector of float gl_Position, layout(stream=0 ) gl_PointSize float gl_PointSize, layout(stream=0 ) out 4-element array of float gl_ClipDistance})

 0:35          Constant:

 0:35            1 (const uint)

 0:35        gl_PointSize: direct index for structure (in float)

-0:35          direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:35          direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:35            'gl_in' (in 4-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:35            Constant:

 0:35              3 (const int)

 0:35          Constant:

 0:35            1 (const int)

-0:36      move second child to first child (int)

+0:36      move second child to first child (temp int)

 0:36        'gl_PrimitiveID' (layout(stream=0 ) out int)

 0:36        'gl_PrimitiveIDIn' (in int)

-0:37      move second child to first child (int)

+0:37      move second child to first child (temp int)

 0:37        'gl_Layer' (layout(stream=0 ) out int)

 0:37        Constant:

 0:37          2 (const int)

-0:67  Function Definition: foo(i1; (void)

+0:67  Function Definition: foo(i1; (global void)

 0:67    Function Parameters: 

 0:67      'a' (in int)

 0:69    Sequence

-0:69      move second child to first child (4-component vector of float)

+0:69      move second child to first child (temp 4-component vector of float)

 0:69        a: direct index for structure (layout(stream=6 ) out 4-component vector of float)

 0:69          'ouuaa6' (layout(stream=6 ) out block{layout(stream=6 ) out 4-component vector of float a})

 0:69          Constant:

@@ -270,21 +270,21 @@
 0:69          1.000000

 0:69          1.000000

 0:107  Sequence

-0:107    move second child to first child (float)

-0:107      'summ' (float)

+0:107    move second child to first child (temp float)

+0:107      'summ' (global float)

 0:107      Constant:

 0:107        11332.000000

-0:127  Function Definition: fooe1( (void)

+0:127  Function Definition: fooe1( (global void)

 0:127    Function Parameters: 

 0:129    Sequence

-0:129      move second child to first child (int)

+0:129      move second child to first child (temp int)

 0:129        'gl_ViewportIndex' (layout(stream=0 ) out int)

 0:129        Constant:

 0:129          15 (const int)

-0:134  Function Definition: fooe2( (void)

+0:134  Function Definition: fooe2( (global void)

 0:134    Function Parameters: 

 0:136    Sequence

-0:136      move second child to first child (int)

+0:136      move second child to first child (temp int)

 0:136        'gl_ViewportIndex' (layout(stream=0 ) out int)

 0:136        Constant:

 0:136          15 (const int)

@@ -312,6 +312,6 @@
 0:?     'insn' (in 4-element array of block{in int a15})

 0:?     'anon@3' (layout(stream=3 ) out block{layout(stream=3 ) out float f15})

 0:?     'anon@4' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform bool b15})

-0:?     'summ' (float)

+0:?     'summ' (global float)

 0:?     'gl_ViewportIndex' (layout(stream=3 ) out int)

 

diff --git a/Test/baseResults/150.tesc.out b/Test/baseResults/150.tesc.out
index 053cbdd..3ff57e6 100644
--- a/Test/baseResults/150.tesc.out
+++ b/Test/baseResults/150.tesc.out
@@ -4,41 +4,41 @@
 Requested GL_ARB_tessellation_shader

 vertices = 4

 0:? Sequence

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:12    Sequence

-0:12      Barrier (void)

+0:12      Barrier (global void)

 0:14      Sequence

-0:14        move second child to first child (int)

-0:14          'a' (int)

+0:14        move second child to first child (temp int)

+0:14          'a' (temp int)

 0:14          Constant:

 0:14            5392 (const int)

 0:20      Sequence

-0:20        move second child to first child (4-component vector of float)

-0:20          'p' (4-component vector of float)

+0:20        move second child to first child (temp 4-component vector of float)

+0:20          'p' (temp 4-component vector of float)

 0:20          gl_Position: direct index for structure (in 4-component vector of float)

-0:20            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:20            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:20              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:20              Constant:

 0:20                1 (const int)

 0:20            Constant:

 0:20              0 (const int)

 0:21      Sequence

-0:21        move second child to first child (float)

-0:21          'ps' (float)

+0:21        move second child to first child (temp float)

+0:21          'ps' (temp float)

 0:21          gl_PointSize: direct index for structure (in float)

-0:21            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:21            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:21              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:21              Constant:

 0:21                1 (const int)

 0:21            Constant:

 0:21              1 (const int)

 0:22      Sequence

-0:22        move second child to first child (float)

-0:22          'cd' (float)

-0:22          direct index (float)

+0:22        move second child to first child (temp float)

+0:22          'cd' (temp float)

+0:22          direct index (temp float)

 0:22            gl_ClipDistance: direct index for structure (in implicitly-sized array of float)

-0:22              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:22              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:22                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:22                Constant:

 0:22                  1 (const int)

@@ -47,39 +47,39 @@
 0:22            Constant:

 0:22              2 (const int)

 0:24      Sequence

-0:24        move second child to first child (int)

-0:24          'pvi' (int)

+0:24        move second child to first child (temp int)

+0:24          'pvi' (temp int)

 0:24          'gl_PatchVerticesIn' (in int)

 0:25      Sequence

-0:25        move second child to first child (int)

-0:25          'pid' (int)

+0:25        move second child to first child (temp int)

+0:25          'pid' (temp int)

 0:25          'gl_PrimitiveID' (in int)

 0:26      Sequence

-0:26        move second child to first child (int)

-0:26          'iid' (int)

+0:26        move second child to first child (temp int)

+0:26          'iid' (temp int)

 0:26          'gl_InvocationID' (in int)

-0:28      move second child to first child (4-component vector of float)

+0:28      move second child to first child (temp 4-component vector of float)

 0:28        gl_Position: direct index for structure (out 4-component vector of float)

-0:28          direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:28          direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:28            'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:28            Constant:

 0:28              1 (const int)

 0:28          Constant:

 0:28            0 (const int)

-0:28        'p' (4-component vector of float)

-0:29      move second child to first child (float)

+0:28        'p' (temp 4-component vector of float)

+0:29      move second child to first child (temp float)

 0:29        gl_PointSize: direct index for structure (out float)

-0:29          direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:29          direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:29            'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:29            Constant:

 0:29              1 (const int)

 0:29          Constant:

 0:29            1 (const int)

-0:29        'ps' (float)

-0:30      move second child to first child (float)

-0:30        direct index (float)

+0:29        'ps' (temp float)

+0:30      move second child to first child (temp float)

+0:30        direct index (temp float)

 0:30          gl_ClipDistance: direct index for structure (out implicitly-sized array of float)

-0:30            direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:30            direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:30              'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:30              Constant:

 0:30                1 (const int)

@@ -87,16 +87,16 @@
 0:30              2 (const int)

 0:30          Constant:

 0:30            1 (const int)

-0:30        'cd' (float)

-0:32      move second child to first child (float)

-0:32        direct index (patch float)

+0:30        'cd' (temp float)

+0:32      move second child to first child (temp float)

+0:32        direct index (patch temp float)

 0:32          'gl_TessLevelOuter' (patch out 4-element array of float)

 0:32          Constant:

 0:32            3 (const int)

 0:32        Constant:

 0:32          3.200000

-0:33      move second child to first child (float)

-0:33        direct index (patch float)

+0:33      move second child to first child (temp float)

+0:33        direct index (patch temp float)

 0:33          'gl_TessLevelInner' (patch out 2-element array of float)

 0:33          Constant:

 0:33            1 (const int)

@@ -104,7 +104,7 @@
 0:33          1.300000

 0:?   Linker Objects

 0:?     'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

-0:?     'outa' (4-element array of int)

+0:?     'outa' (global 4-element array of int)

 0:?     'patchOut' (patch out 4-component vector of float)

 

 150.tese

@@ -119,42 +119,42 @@
 triangle order = cw

 using point mode

 ERROR: node is still EOpNull!

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:12    Sequence

 0:12      Constant:

 0:12        0.000000

 0:14      Sequence

-0:14        move second child to first child (int)

-0:14          'a' (int)

+0:14        move second child to first child (temp int)

+0:14          'a' (temp int)

 0:14          Constant:

 0:14            1512 (const int)

 0:22      Sequence

-0:22        move second child to first child (4-component vector of float)

-0:22          'p' (4-component vector of float)

+0:22        move second child to first child (temp 4-component vector of float)

+0:22          'p' (temp 4-component vector of float)

 0:22          gl_Position: direct index for structure (in 4-component vector of float)

-0:22            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:22            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:22              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:22              Constant:

 0:22                1 (const int)

 0:22            Constant:

 0:22              0 (const int)

 0:23      Sequence

-0:23        move second child to first child (float)

-0:23          'ps' (float)

+0:23        move second child to first child (temp float)

+0:23          'ps' (temp float)

 0:23          gl_PointSize: direct index for structure (in float)

-0:23            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:23            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:23              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:23              Constant:

 0:23                1 (const int)

 0:23            Constant:

 0:23              1 (const int)

 0:24      Sequence

-0:24        move second child to first child (float)

-0:24          'cd' (float)

-0:24          direct index (float)

+0:24        move second child to first child (temp float)

+0:24          'cd' (temp float)

+0:24          direct index (temp float)

 0:24            gl_ClipDistance: direct index for structure (in implicitly-sized array of float)

-0:24              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:24              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:24                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:24                Constant:

 0:24                  1 (const int)

@@ -163,52 +163,52 @@
 0:24            Constant:

 0:24              2 (const int)

 0:26      Sequence

-0:26        move second child to first child (int)

-0:26          'pvi' (int)

+0:26        move second child to first child (temp int)

+0:26          'pvi' (temp int)

 0:26          'gl_PatchVerticesIn' (in int)

 0:27      Sequence

-0:27        move second child to first child (int)

-0:27          'pid' (int)

+0:27        move second child to first child (temp int)

+0:27          'pid' (temp int)

 0:27          'gl_PrimitiveID' (in int)

 0:28      Sequence

-0:28        move second child to first child (3-component vector of float)

-0:28          'tc' (3-component vector of float)

+0:28        move second child to first child (temp 3-component vector of float)

+0:28          'tc' (temp 3-component vector of float)

 0:28          'gl_TessCoord' (in 3-component vector of float)

 0:29      Sequence

-0:29        move second child to first child (float)

-0:29          'tlo' (float)

-0:29          direct index (patch float)

+0:29        move second child to first child (temp float)

+0:29          'tlo' (temp float)

+0:29          direct index (patch temp float)

 0:29            'gl_TessLevelOuter' (patch in 4-element array of float)

 0:29            Constant:

 0:29              3 (const int)

 0:30      Sequence

-0:30        move second child to first child (float)

-0:30          'tli' (float)

-0:30          direct index (patch float)

+0:30        move second child to first child (temp float)

+0:30          'tli' (temp float)

+0:30          direct index (patch temp float)

 0:30            'gl_TessLevelInner' (patch in 2-element array of float)

 0:30            Constant:

 0:30              1 (const int)

-0:32      move second child to first child (4-component vector of float)

+0:32      move second child to first child (temp 4-component vector of float)

 0:32        gl_Position: direct index for structure (gl_Position 4-component vector of float)

 0:32          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:32          Constant:

 0:32            0 (const uint)

-0:32        'p' (4-component vector of float)

-0:33      move second child to first child (float)

+0:32        'p' (temp 4-component vector of float)

+0:33      move second child to first child (temp float)

 0:33        gl_PointSize: direct index for structure (gl_PointSize float)

 0:33          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:33          Constant:

 0:33            1 (const uint)

-0:33        'ps' (float)

-0:34      move second child to first child (float)

-0:34        direct index (float)

+0:33        'ps' (temp float)

+0:34      move second child to first child (temp float)

+0:34        direct index (temp float)

 0:34          gl_ClipDistance: direct index for structure (out implicitly-sized array of float)

 0:34            'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:34            Constant:

 0:34              2 (const uint)

 0:34          Constant:

 0:34            2 (const int)

-0:34        'cd' (float)

+0:34        'cd' (temp float)

 0:?   Linker Objects

 0:?     'patchIn' (patch in 4-component vector of float)

 0:?     'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

@@ -240,41 +240,41 @@
 Requested GL_ARB_separate_shader_objects

 vertices = 4

 ERROR: node is still EOpNull!

-0:13  Function Definition: main( (void)

+0:13  Function Definition: main( (global void)

 0:13    Function Parameters: 

 0:15    Sequence

-0:15      Barrier (void)

+0:15      Barrier (global void)

 0:17      Sequence

-0:17        move second child to first child (int)

-0:17          'a' (int)

+0:17        move second child to first child (temp int)

+0:17          'a' (temp int)

 0:17          Constant:

 0:17            5392 (const int)

 0:23      Sequence

-0:23        move second child to first child (4-component vector of float)

-0:23          'p' (4-component vector of float)

+0:23        move second child to first child (temp 4-component vector of float)

+0:23          'p' (temp 4-component vector of float)

 0:23          gl_Position: direct index for structure (in 4-component vector of float)

-0:23            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:23            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:23              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:23              Constant:

 0:23                1 (const int)

 0:23            Constant:

 0:23              0 (const int)

 0:24      Sequence

-0:24        move second child to first child (float)

-0:24          'ps' (float)

+0:24        move second child to first child (temp float)

+0:24          'ps' (temp float)

 0:24          gl_PointSize: direct index for structure (in float)

-0:24            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:24            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:24              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:24              Constant:

 0:24                1 (const int)

 0:24            Constant:

 0:24              1 (const int)

 0:25      Sequence

-0:25        move second child to first child (float)

-0:25          'cd' (float)

-0:25          direct index (float)

+0:25        move second child to first child (temp float)

+0:25          'cd' (temp float)

+0:25          direct index (temp float)

 0:25            gl_ClipDistance: direct index for structure (in implicitly-sized array of float)

-0:25              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:25              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:25                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:25                Constant:

 0:25                  1 (const int)

@@ -283,39 +283,39 @@
 0:25            Constant:

 0:25              2 (const int)

 0:27      Sequence

-0:27        move second child to first child (int)

-0:27          'pvi' (int)

+0:27        move second child to first child (temp int)

+0:27          'pvi' (temp int)

 0:27          'gl_PatchVerticesIn' (in int)

 0:28      Sequence

-0:28        move second child to first child (int)

-0:28          'pid' (int)

+0:28        move second child to first child (temp int)

+0:28          'pid' (temp int)

 0:28          'gl_PrimitiveID' (in int)

 0:29      Sequence

-0:29        move second child to first child (int)

-0:29          'iid' (int)

+0:29        move second child to first child (temp int)

+0:29          'iid' (temp int)

 0:29          'gl_InvocationID' (in int)

-0:31      move second child to first child (4-component vector of float)

+0:31      move second child to first child (temp 4-component vector of float)

 0:31        gl_Position: direct index for structure (out 4-component vector of float)

-0:31          direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:31          direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:31            'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:31            Constant:

 0:31              1 (const int)

 0:31          Constant:

 0:31            0 (const int)

-0:31        'p' (4-component vector of float)

-0:32      move second child to first child (float)

+0:31        'p' (temp 4-component vector of float)

+0:32      move second child to first child (temp float)

 0:32        gl_PointSize: direct index for structure (out float)

-0:32          direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:32          direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:32            'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:32            Constant:

 0:32              1 (const int)

 0:32          Constant:

 0:32            1 (const int)

-0:32        'ps' (float)

-0:33      move second child to first child (float)

-0:33        direct index (float)

+0:32        'ps' (temp float)

+0:33      move second child to first child (temp float)

+0:33        direct index (temp float)

 0:33          gl_ClipDistance: direct index for structure (out implicitly-sized array of float)

-0:33            direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:33            direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:33              'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:33              Constant:

 0:33                1 (const int)

@@ -323,98 +323,98 @@
 0:33              2 (const int)

 0:33          Constant:

 0:33            1 (const int)

-0:33        'cd' (float)

-0:35      move second child to first child (float)

-0:35        direct index (patch float)

+0:33        'cd' (temp float)

+0:35      move second child to first child (temp float)

+0:35        direct index (patch temp float)

 0:35          'gl_TessLevelOuter' (patch out 4-element array of float)

 0:35          Constant:

 0:35            3 (const int)

 0:35        Constant:

 0:35          3.200000

-0:36      move second child to first child (float)

-0:36        direct index (patch float)

+0:36      move second child to first child (temp float)

+0:36        direct index (patch temp float)

 0:36          'gl_TessLevelInner' (patch out 2-element array of float)

 0:36          Constant:

 0:36            1 (const int)

 0:36        Constant:

 0:36          1.300000

-0:38      Test condition and select (void)

+0:38      Test condition and select (temp void)

 0:38        Condition

-0:38        Compare Greater Than (bool)

-0:38          'a' (int)

+0:38        Compare Greater Than (temp bool)

+0:38          'a' (temp int)

 0:38          Constant:

 0:38            10 (const int)

 0:38        true case

-0:39        Barrier (void)

+0:39        Barrier (global void)

 0:38        false case

-0:41        Barrier (void)

-0:43      Barrier (void)

+0:41        Barrier (global void)

+0:43      Barrier (global void)

 0:47      Loop with condition not tested first

 0:47        Loop Condition

-0:47        Compare Greater Than (bool)

-0:47          'a' (int)

+0:47        Compare Greater Than (temp bool)

+0:47          'a' (temp int)

 0:47          Constant:

 0:47            10 (const int)

 0:47        Loop Body

 0:46        Sequence

-0:46          Barrier (void)

+0:46          Barrier (global void)

 0:49      switch

 0:49      condition

-0:49        'a' (int)

+0:49        'a' (temp int)

 0:49      body

 0:49        Sequence

 0:50          default: 

 0:?           Sequence

-0:51            Barrier (void)

+0:51            Barrier (global void)

 0:52            Branch: Break

-0:54      Test condition and select (int)

+0:54      Test condition and select (temp int)

 0:54        Condition

-0:54        Compare Less Than (bool)

-0:54          'a' (int)

+0:54        Compare Less Than (temp bool)

+0:54          'a' (temp int)

 0:54          Constant:

 0:54            12 (const int)

 0:54        true case

-0:54        'a' (int)

+0:54        'a' (temp int)

 0:54        false case

-0:54        Comma (int)

-0:54          Barrier (void)

-0:54          'a' (int)

+0:54        Comma (temp int)

+0:54          Barrier (global void)

+0:54          'a' (temp int)

 0:56      Sequence

-0:56        Barrier (void)

+0:56        Barrier (global void)

 0:59      Branch: Return

-0:61      Barrier (void)

-0:67  Function Definition: foo( (void)

+0:61      Barrier (global void)

+0:67  Function Definition: foo( (global void)

 0:67    Function Parameters: 

 0:69    Sequence

 0:69      gl_PointSize: direct index for structure (out float)

-0:69        direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:69        direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:69          'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:69          Constant:

 0:69            4 (const int)

 0:69        Constant:

 0:69          1 (const int)

-0:71      Barrier (void)

-0:91  Function Definition: foop( (void)

+0:71      Barrier (global void)

+0:91  Function Definition: foop( (global void)

 0:91    Function Parameters: 

 0:?     Sequence

-0:95      multiply second child into first child (3-component vector of float)

-0:95        'pv3' (3-component vector of float)

-0:95        'pv3' (3-component vector of float)

-0:96      move second child to first child (3-component vector of float)

-0:96        'pv3' (3-component vector of float)

-0:96        Function Call: fma(vf3;vf3;vf3; (3-component vector of float)

-0:96          'pv3' (3-component vector of float)

-0:96          'pv3' (3-component vector of float)

-0:96          'pv3' (3-component vector of float)

-0:97      move second child to first child (double)

-0:97        'd' (double)

-0:97        Function Call: fma(d1;d1;d1; (double)

-0:97          'd' (double)

-0:97          'd' (double)

-0:97          'd' (double)

+0:95      multiply second child into first child (temp 3-component vector of float)

+0:95        'pv3' (temp 3-component vector of float)

+0:95        'pv3' (temp 3-component vector of float)

+0:96      move second child to first child (temp 3-component vector of float)

+0:96        'pv3' (temp 3-component vector of float)

+0:96        Function Call: fma(vf3;vf3;vf3; (global 3-component vector of float)

+0:96          'pv3' (temp 3-component vector of float)

+0:96          'pv3' (temp 3-component vector of float)

+0:96          'pv3' (temp 3-component vector of float)

+0:97      move second child to first child (temp double)

+0:97        'd' (temp double)

+0:97        Function Call: fma(d1;d1;d1; (global double)

+0:97          'd' (temp double)

+0:97          'd' (temp double)

+0:97          'd' (temp double)

 0:?   Linker Objects

 0:?     'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

-0:?     'outa' (4-element array of int)

+0:?     'outa' (global 4-element array of int)

 0:?     'patchIn' (patch in 4-component vector of float)

 0:?     'patchOut' (patch out 4-component vector of float)

 0:?     'ina' (in 2-component vector of float)

@@ -427,7 +427,7 @@
 0:?     'ovla' (layout(location=3 ) out 4-element array of 4-component vector of float)

 0:?     'ovlb' (layout(location=4 ) out 4-element array of 4-component vector of float)

 0:?     'ovlc' (layout(location=4 ) out 4-element array of 4-component vector of float)

-0:?     'pv3' (3-component vector of float)

+0:?     'pv3' (temp 3-component vector of float)

 0:?     'pinbi' (patch out block{out int a})

 

 400.tese

@@ -472,42 +472,42 @@
 triangle order = cw

 using point mode

 ERROR: node is still EOpNull!

-0:20  Function Definition: main( (void)

+0:20  Function Definition: main( (global void)

 0:20    Function Parameters: 

 0:22    Sequence

 0:22      Constant:

 0:22        0.000000

 0:24      Sequence

-0:24        move second child to first child (int)

-0:24          'a' (int)

+0:24        move second child to first child (temp int)

+0:24          'a' (temp int)

 0:24          Constant:

 0:24            1512 (const int)

 0:32      Sequence

-0:32        move second child to first child (4-component vector of float)

-0:32          'p' (4-component vector of float)

+0:32        move second child to first child (temp 4-component vector of float)

+0:32          'p' (temp 4-component vector of float)

 0:32          gl_Position: direct index for structure (in 4-component vector of float)

-0:32            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:32            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:32              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:32              Constant:

 0:32                1 (const int)

 0:32            Constant:

 0:32              0 (const int)

 0:33      Sequence

-0:33        move second child to first child (float)

-0:33          'ps' (float)

+0:33        move second child to first child (temp float)

+0:33          'ps' (temp float)

 0:33          gl_PointSize: direct index for structure (in float)

-0:33            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:33            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:33              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:33              Constant:

 0:33                1 (const int)

 0:33            Constant:

 0:33              1 (const int)

 0:34      Sequence

-0:34        move second child to first child (float)

-0:34          'cd' (float)

-0:34          direct index (float)

+0:34        move second child to first child (temp float)

+0:34          'cd' (temp float)

+0:34          direct index (temp float)

 0:34            gl_ClipDistance: direct index for structure (in implicitly-sized array of float)

-0:34              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:34              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:34                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:34                Constant:

 0:34                  1 (const int)

@@ -516,52 +516,52 @@
 0:34            Constant:

 0:34              2 (const int)

 0:36      Sequence

-0:36        move second child to first child (int)

-0:36          'pvi' (int)

+0:36        move second child to first child (temp int)

+0:36          'pvi' (temp int)

 0:36          'gl_PatchVerticesIn' (in int)

 0:37      Sequence

-0:37        move second child to first child (int)

-0:37          'pid' (int)

+0:37        move second child to first child (temp int)

+0:37          'pid' (temp int)

 0:37          'gl_PrimitiveID' (in int)

 0:38      Sequence

-0:38        move second child to first child (3-component vector of float)

-0:38          'tc' (3-component vector of float)

+0:38        move second child to first child (temp 3-component vector of float)

+0:38          'tc' (temp 3-component vector of float)

 0:38          'gl_TessCoord' (in 3-component vector of float)

 0:39      Sequence

-0:39        move second child to first child (float)

-0:39          'tlo' (float)

-0:39          direct index (patch float)

+0:39        move second child to first child (temp float)

+0:39          'tlo' (temp float)

+0:39          direct index (patch temp float)

 0:39            'gl_TessLevelOuter' (patch in 4-element array of float)

 0:39            Constant:

 0:39              3 (const int)

 0:40      Sequence

-0:40        move second child to first child (float)

-0:40          'tli' (float)

-0:40          direct index (patch float)

+0:40        move second child to first child (temp float)

+0:40          'tli' (temp float)

+0:40          direct index (patch temp float)

 0:40            'gl_TessLevelInner' (patch in 2-element array of float)

 0:40            Constant:

 0:40              1 (const int)

-0:42      move second child to first child (4-component vector of float)

+0:42      move second child to first child (temp 4-component vector of float)

 0:42        gl_Position: direct index for structure (gl_Position 4-component vector of float)

 0:42          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:42          Constant:

 0:42            0 (const uint)

-0:42        'p' (4-component vector of float)

-0:43      move second child to first child (float)

+0:42        'p' (temp 4-component vector of float)

+0:43      move second child to first child (temp float)

 0:43        gl_PointSize: direct index for structure (gl_PointSize float)

 0:43          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:43          Constant:

 0:43            1 (const uint)

-0:43        'ps' (float)

-0:44      move second child to first child (float)

-0:44        direct index (float)

+0:43        'ps' (temp float)

+0:44      move second child to first child (temp float)

+0:44        direct index (temp float)

 0:44          gl_ClipDistance: direct index for structure (out implicitly-sized array of float)

 0:44            'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:44            Constant:

 0:44              2 (const uint)

 0:44          Constant:

 0:44            2 (const int)

-0:44        'cd' (float)

+0:44        'cd' (temp float)

 0:?   Linker Objects

 0:?     'patchIn' (patch in 4-component vector of float)

 0:?     'patchOut' (patch out 4-component vector of float)

@@ -595,11 +595,11 @@
 Shader version: 400

 vertices = 0

 ERROR: node is still EOpNull!

-0:8  Function Definition: main( (void)

+0:8  Function Definition: main( (global void)

 0:8    Function Parameters: 

 0:?   Linker Objects

 0:?     'gl_out' (out implicitly-sized array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

-0:?     'outa' (1-element array of int)

+0:?     'outa' (global 1-element array of int)

 0:?     'patchOut' (patch out 4-component vector of float)

 

 420.tesc

@@ -608,7 +608,7 @@
 ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a

 ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb

 ERROR: 0:26: 'gl_PointSize' : no such field in structure 

-ERROR: 0:26: 'assign' :  cannot convert from 'float' to 'block{out 4-component vector of float gl_Position}'

+ERROR: 0:26: 'assign' :  cannot convert from 'temp float' to 'temp block{out 4-component vector of float gl_Position}'

 ERROR: 0:29: 'out' : type must be an array: outf

 ERROR: 6 compilation errors.  No code generated.

 

@@ -617,35 +617,35 @@
 Requested GL_ARB_separate_shader_objects

 vertices = 4

 ERROR: node is still EOpNull!

-0:15  Function Definition: main( (void)

+0:15  Function Definition: main( (global void)

 0:15    Function Parameters: 

 0:17    Sequence

 0:17      Sequence

-0:17        move second child to first child (4-component vector of float)

-0:17          'p' (4-component vector of float)

+0:17        move second child to first child (temp 4-component vector of float)

+0:17          'p' (temp 4-component vector of float)

 0:17          gl_Position: direct index for structure (in 4-component vector of float)

-0:17            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:17            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:17              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:17              Constant:

 0:17                1 (const int)

 0:17            Constant:

 0:17              0 (const int)

 0:18      Sequence

-0:18        move second child to first child (float)

-0:18          'ps' (float)

+0:18        move second child to first child (temp float)

+0:18          'ps' (temp float)

 0:18          gl_PointSize: direct index for structure (in float)

-0:18            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:18            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:18              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:18              Constant:

 0:18                1 (const int)

 0:18            Constant:

 0:18              1 (const int)

 0:19      Sequence

-0:19        move second child to first child (float)

-0:19          'cd' (float)

-0:19          direct index (float)

+0:19        move second child to first child (temp float)

+0:19          'cd' (temp float)

+0:19          direct index (temp float)

 0:19            gl_ClipDistance: direct index for structure (in implicitly-sized array of float)

-0:19              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:19              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:19                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:19                Constant:

 0:19                  1 (const int)

@@ -654,37 +654,37 @@
 0:19            Constant:

 0:19              2 (const int)

 0:21      Sequence

-0:21        move second child to first child (int)

-0:21          'pvi' (int)

+0:21        move second child to first child (temp int)

+0:21          'pvi' (temp int)

 0:21          'gl_PatchVerticesIn' (in int)

 0:22      Sequence

-0:22        move second child to first child (int)

-0:22          'pid' (int)

+0:22        move second child to first child (temp int)

+0:22          'pid' (temp int)

 0:22          'gl_PrimitiveID' (in int)

 0:23      Sequence

-0:23        move second child to first child (int)

-0:23          'iid' (int)

+0:23        move second child to first child (temp int)

+0:23          'iid' (temp int)

 0:23          'gl_InvocationID' (in int)

-0:25      move second child to first child (4-component vector of float)

+0:25      move second child to first child (temp 4-component vector of float)

 0:25        gl_Position: direct index for structure (out 4-component vector of float)

-0:25          direct index (block{out 4-component vector of float gl_Position})

+0:25          direct index (temp block{out 4-component vector of float gl_Position})

 0:25            'gl_out' (out 3-element array of block{out 4-component vector of float gl_Position})

 0:25            Constant:

 0:25              1 (const int)

 0:25          Constant:

 0:25            0 (const int)

-0:25        'p' (4-component vector of float)

-0:26      direct index (block{out 4-component vector of float gl_Position})

+0:25        'p' (temp 4-component vector of float)

+0:26      direct index (temp block{out 4-component vector of float gl_Position})

 0:26        'gl_out' (out 3-element array of block{out 4-component vector of float gl_Position})

 0:26        Constant:

 0:26          1 (const int)

-0:34  Function Definition: foo( (void)

+0:34  Function Definition: foo( (global void)

 0:34    Function Parameters: 

 0:36    Sequence

-0:36      Test condition and select (void)

+0:36      Test condition and select (temp void)

 0:36        Condition

-0:36        logical-or (bool)

-0:36          Compare Not Equal (bool)

+0:36        logical-or (temp bool)

+0:36          Compare Not Equal (temp bool)

 0:36            Constant:

 0:36              -0.625000

 0:36              -0.500000

@@ -694,11 +694,11 @@
 0:36              -0.250000

 0:36              -0.125000

 0:36              0.000000

-0:36            direct index (layout(location=0 ) 2X4 matrix of double)

+0:36            direct index (layout(location=0 ) temp 2X4 matrix of double)

 0:36              'vs_tcs_first' (layout(location=0 ) in 32-element array of 2X4 matrix of double)

 0:36              Constant:

 0:36                0 (const int)

-0:37          Compare Not Equal (bool)

+0:37          Compare Not Equal (temp bool)

 0:37            Constant:

 0:37              0.375000

 0:37              0.500000

@@ -708,7 +708,7 @@
 0:37              0.750000

 0:37              0.875000

 0:37              -0.625000

-0:37            direct index (layout(location=12 ) 2X4 matrix of double)

+0:37            direct index (layout(location=12 ) temp 2X4 matrix of double)

 0:37              'vs_tcs_last' (layout(location=12 ) in 32-element array of 2X4 matrix of double)

 0:37              Constant:

 0:37                0 (const int)

@@ -724,18 +724,18 @@
 

 420.tese

 Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.

-ERROR: 0:7: '=' :  cannot convert from '3-element array of float' to '2-element array of float'

-ERROR: 0:8: 'initializer list' : wrong vector size (or rows in a matrix column): 2-component vector of float

-ERROR: 0:9: 'initializer list' : wrong number of matrix columns: 3X3 matrix of float

-ERROR: 0:10: 'initializer list' : wrong number of matrix columns: 2X2 matrix of float

+ERROR: 0:7: '=' :  cannot convert from 'global 3-element array of float' to 'global 2-element array of float'

+ERROR: 0:8: 'initializer list' : wrong vector size (or rows in a matrix column): global 2-component vector of float

+ERROR: 0:9: 'initializer list' : wrong number of matrix columns: global 3X3 matrix of float

+ERROR: 0:10: 'initializer list' : wrong number of matrix columns: global 2X2 matrix of float

 ERROR: 0:25: 'initializer list' : wrong number of structure members 

-ERROR: 0:27: '=' :  cannot convert from 'const bool' to 'int'

-ERROR: 0:28: 'constructor' :  cannot convert parameter 2 from 'const float' to '4-component vector of float'

+ERROR: 0:27: '=' :  cannot convert from 'const bool' to 'global int'

+ERROR: 0:28: 'constructor' :  cannot convert parameter 2 from 'const float' to 'global 4-component vector of float'

 ERROR: 0:29: 'constructor' :  cannot convert parameter 2 from 'const 2X2 matrix of float' to 'const 4-component vector of float'

 ERROR: 0:29: 'const 2-element array of 4-component vector of float' : cannot construct with these arguments 

-ERROR: 0:29: '=' :  cannot convert from 'const float' to '2-element array of 4-component vector of float'

-ERROR: 0:30: 'initializer list' : wrong number of matrix columns: 4X2 matrix of float

-ERROR: 0:40: 'constructor' :  cannot convert parameter 1 from 'float' to 'structure{float s, float t}'

+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: global 4X2 matrix of float

+ERROR: 0:40: 'constructor' :  cannot convert parameter 1 from 'temp float' to 'global structure{global float s, global float t}'

 ERROR: 0:58: 'initializer list' : wrong number of structure members 

 ERROR: 13 compilation errors.  No code generated.

 

@@ -746,28 +746,28 @@
 triangle order = none

 ERROR: node is still EOpNull!

 0:4  Sequence

-0:4    move second child to first child (2X2 matrix of float)

-0:4      'b' (2X2 matrix of float)

+0:4    move second child to first child (temp 2X2 matrix of float)

+0:4      'b' (global 2X2 matrix of float)

 0:4      Constant:

 0:4        1.000000

 0:4        0.000000

 0:4        0.000000

 0:4        1.000000

 0:15  Sequence

-0:15    move second child to first child (structure{float a, int b})

-0:15      'e' (structure{float a, int b})

+0:15    move second child to first child (temp structure{global float a, global int b})

+0:15      'e' (global structure{global float a, global int b})

 0:15      Constant:

 0:15        1.200000

 0:15        2 (const int)

 0:20  Sequence

-0:20    move second child to first child (structure{float a, int b})

-0:20      'e2' (structure{float a, int b})

+0:20    move second child to first child (temp structure{global float a, global int b})

+0:20      'e2' (global structure{global float a, global int b})

 0:20      Constant:

 0:20        1.000000

 0:20        3 (const int)

 0:42  Sequence

-0:42    move second child to first child (5-element array of float)

-0:42      'b5' (5-element array of float)

+0:42    move second child to first child (temp 5-element array of float)

+0:42      'b5' (global 5-element array of float)

 0:42      Constant:

 0:42        3.400000

 0:42        4.200000

@@ -775,26 +775,26 @@
 0:42        5.200000

 0:42        1.100000

 0:67  Sequence

-0:67    move second child to first child (3-component vector of float)

-0:67      'av3' (3-component vector of float)

-0:67      Construct vec3 (3-component vector of float)

-0:67        'vc1' (float)

-0:67        'vc2' (float)

-0:67        'vc3' (float)

+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 (3-component vector of float)

-0:68      'bv3' (3-component vector of float)

-0:68      Construct vec3 (3-component vector of float)

-0:68        'vc1' (float)

-0:68        'vc2' (float)

-0:68        'vc3' (float)

-0:70  Function Definition: main( (void)

+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 (global 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 (void)

-0:74      Test condition and select (void)

+0:72      MemoryBarrier (global void)

+0:74      Test condition and select (temp void)

 0:74        Condition

-0:74        Compare Equal (bool)

+0:74        Compare Equal (temp bool)

 0:74          Constant:

 0:74            1 (const uint)

 0:74            2 (const uint)

@@ -812,9 +812,9 @@
 0:74            0.000000

 0:74            6.000000

 0:74            0.000000

-0:74          'curlybad1' (structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

+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 (void)

+0:76      Test condition and select (temp void)

 0:76        Condition

 0:76        Constant:

 0:76          true (const bool)

@@ -825,26 +825,26 @@
 0:?       0.000000

 0:?       0.000000

 0:?       1.000000

-0:?     'b' (2X2 matrix of float)

+0:?     'b' (global 2X2 matrix of float)

 0:?     'c' (const 2X2 matrix of float)

 0:?       1.000000

 0:?       0.000000

 0:?       0.000000

 0:?       1.000000

-0:?     'a2' (2-element array of float)

-0:?     'b2' (2-component vector of float)

-0:?     'c2' (3X3 matrix of float)

-0:?     'd' (2X2 matrix of float)

-0:?     'e' (structure{float a, int b})

-0:?     'e2' (structure{float a, int b})

-0:?     'e3' (structure{float a, int b})

-0:?     'a3' (int)

-0:?     'b3' (2-element array of 4-component vector of float)

-0:?     'b4' (2-element array of 4-component vector of float)

-0:?     'c3' (4X2 matrix of float)

-0:?     'd2' (implicitly-sized array of structure{float s, float t})

-0:?     'b5' (5-element array of float)

-0:?     'constructed' (const structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

+0:?     'a2' (global 2-element array of float)

+0:?     'b2' (global 2-component vector of float)

+0:?     'c2' (global 3X3 matrix of float)

+0:?     'd' (global 2X2 matrix of float)

+0:?     'e' (global structure{global float a, global int b})

+0:?     'e2' (global structure{global float a, global int b})

+0:?     'e3' (global structure{global float a, global int b})

+0:?     'a3' (global int)

+0:?     'b3' (global 2-element array of 4-component vector of float)

+0:?     'b4' (global 2-element array of 4-component vector of float)

+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:?     '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)

 0:?       3.000000

@@ -861,8 +861,8 @@
 0:?       0.000000

 0:?       6.000000

 0:?       0.000000

-0:?     'curlybad1' (structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

-0:?     'curlyInit' (const structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

+0:?     '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:?     'curlyInit' (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)

 0:?       3.000000

@@ -879,11 +879,11 @@
 0:?       0.000000

 0:?       6.000000

 0:?       0.000000

-0:?     'vc1' (float)

-0:?     'vc2' (float)

-0:?     'vc3' (float)

-0:?     'av3' (3-component vector of float)

-0:?     'bv3' (3-component vector of float)

+0:?     'vc1' (global float)

+0:?     'vc2' (global float)

+0:?     'vc3' (global float)

+0:?     'av3' (global 3-component vector of float)

+0:?     'bv3' (global 3-component vector of float)

 

 

 Linked tessellation control stage:

@@ -898,7 +898,7 @@
 ERROR: Linking tessellation control stage: Types must match:

     gl_out: "out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance}" versus "out implicitly-sized array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance}"

 ERROR: Linking tessellation control stage: Types must match:

-    outa: "4-element array of int" versus "1-element array of int"

+    outa: "global 4-element array of int" versus "global 1-element array of int"

 ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:

     main(

 ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:

@@ -927,41 +927,41 @@
 Requested GL_ARB_tessellation_shader

 vertices = 4

 0:? Sequence

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:12    Sequence

-0:12      Barrier (void)

+0:12      Barrier (global void)

 0:14      Sequence

-0:14        move second child to first child (int)

-0:14          'a' (int)

+0:14        move second child to first child (temp int)

+0:14          'a' (temp int)

 0:14          Constant:

 0:14            5392 (const int)

 0:20      Sequence

-0:20        move second child to first child (4-component vector of float)

-0:20          'p' (4-component vector of float)

+0:20        move second child to first child (temp 4-component vector of float)

+0:20          'p' (temp 4-component vector of float)

 0:20          gl_Position: direct index for structure (in 4-component vector of float)

-0:20            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:20            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:20              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:20              Constant:

 0:20                1 (const int)

 0:20            Constant:

 0:20              0 (const int)

 0:21      Sequence

-0:21        move second child to first child (float)

-0:21          'ps' (float)

+0:21        move second child to first child (temp float)

+0:21          'ps' (temp float)

 0:21          gl_PointSize: direct index for structure (in float)

-0:21            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:21            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:21              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:21              Constant:

 0:21                1 (const int)

 0:21            Constant:

 0:21              1 (const int)

 0:22      Sequence

-0:22        move second child to first child (float)

-0:22          'cd' (float)

-0:22          direct index (float)

+0:22        move second child to first child (temp float)

+0:22          'cd' (temp float)

+0:22          direct index (temp float)

 0:22            gl_ClipDistance: direct index for structure (in 1-element array of float)

-0:22              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:22              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:22                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:22                Constant:

 0:22                  1 (const int)

@@ -970,39 +970,39 @@
 0:22            Constant:

 0:22              2 (const int)

 0:24      Sequence

-0:24        move second child to first child (int)

-0:24          'pvi' (int)

+0:24        move second child to first child (temp int)

+0:24          'pvi' (temp int)

 0:24          'gl_PatchVerticesIn' (in int)

 0:25      Sequence

-0:25        move second child to first child (int)

-0:25          'pid' (int)

+0:25        move second child to first child (temp int)

+0:25          'pid' (temp int)

 0:25          'gl_PrimitiveID' (in int)

 0:26      Sequence

-0:26        move second child to first child (int)

-0:26          'iid' (int)

+0:26        move second child to first child (temp int)

+0:26          'iid' (temp int)

 0:26          'gl_InvocationID' (in int)

-0:28      move second child to first child (4-component vector of float)

+0:28      move second child to first child (temp 4-component vector of float)

 0:28        gl_Position: direct index for structure (out 4-component vector of float)

-0:28          direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:28          direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:28            'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:28            Constant:

 0:28              1 (const int)

 0:28          Constant:

 0:28            0 (const int)

-0:28        'p' (4-component vector of float)

-0:29      move second child to first child (float)

+0:28        'p' (temp 4-component vector of float)

+0:29      move second child to first child (temp float)

 0:29        gl_PointSize: direct index for structure (out float)

-0:29          direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:29          direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:29            'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:29            Constant:

 0:29              1 (const int)

 0:29          Constant:

 0:29            1 (const int)

-0:29        'ps' (float)

-0:30      move second child to first child (float)

-0:30        direct index (float)

+0:29        'ps' (temp float)

+0:30      move second child to first child (temp float)

+0:30        direct index (temp float)

 0:30          gl_ClipDistance: direct index for structure (out 1-element array of float)

-0:30            direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:30            direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:30              'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:30              Constant:

 0:30                1 (const int)

@@ -1010,56 +1010,56 @@
 0:30              2 (const int)

 0:30          Constant:

 0:30            1 (const int)

-0:30        'cd' (float)

-0:32      move second child to first child (float)

-0:32        direct index (patch float)

+0:30        'cd' (temp float)

+0:32      move second child to first child (temp float)

+0:32        direct index (patch temp float)

 0:32          'gl_TessLevelOuter' (patch out 4-element array of float)

 0:32          Constant:

 0:32            3 (const int)

 0:32        Constant:

 0:32          3.200000

-0:33      move second child to first child (float)

-0:33        direct index (patch float)

+0:33      move second child to first child (temp float)

+0:33        direct index (patch temp float)

 0:33          'gl_TessLevelInner' (patch out 2-element array of float)

 0:33          Constant:

 0:33            1 (const int)

 0:33        Constant:

 0:33          1.300000

-0:13  Function Definition: main( (void)

+0:13  Function Definition: main( (global void)

 0:13    Function Parameters: 

 0:15    Sequence

-0:15      Barrier (void)

+0:15      Barrier (global void)

 0:17      Sequence

-0:17        move second child to first child (int)

-0:17          'a' (int)

+0:17        move second child to first child (temp int)

+0:17          'a' (temp int)

 0:17          Constant:

 0:17            5392 (const int)

 0:23      Sequence

-0:23        move second child to first child (4-component vector of float)

-0:23          'p' (4-component vector of float)

+0:23        move second child to first child (temp 4-component vector of float)

+0:23          'p' (temp 4-component vector of float)

 0:23          gl_Position: direct index for structure (in 4-component vector of float)

-0:23            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:23            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:23              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:23              Constant:

 0:23                1 (const int)

 0:23            Constant:

 0:23              0 (const int)

 0:24      Sequence

-0:24        move second child to first child (float)

-0:24          'ps' (float)

+0:24        move second child to first child (temp float)

+0:24          'ps' (temp float)

 0:24          gl_PointSize: direct index for structure (in float)

-0:24            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:24            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:24              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:24              Constant:

 0:24                1 (const int)

 0:24            Constant:

 0:24              1 (const int)

 0:25      Sequence

-0:25        move second child to first child (float)

-0:25          'cd' (float)

-0:25          direct index (float)

+0:25        move second child to first child (temp float)

+0:25          'cd' (temp float)

+0:25          direct index (temp float)

 0:25            gl_ClipDistance: direct index for structure (in 1-element array of float)

-0:25              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:25              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:25                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:25                Constant:

 0:25                  1 (const int)

@@ -1068,39 +1068,39 @@
 0:25            Constant:

 0:25              2 (const int)

 0:27      Sequence

-0:27        move second child to first child (int)

-0:27          'pvi' (int)

+0:27        move second child to first child (temp int)

+0:27          'pvi' (temp int)

 0:27          'gl_PatchVerticesIn' (in int)

 0:28      Sequence

-0:28        move second child to first child (int)

-0:28          'pid' (int)

+0:28        move second child to first child (temp int)

+0:28          'pid' (temp int)

 0:28          'gl_PrimitiveID' (in int)

 0:29      Sequence

-0:29        move second child to first child (int)

-0:29          'iid' (int)

+0:29        move second child to first child (temp int)

+0:29          'iid' (temp int)

 0:29          'gl_InvocationID' (in int)

-0:31      move second child to first child (4-component vector of float)

+0:31      move second child to first child (temp 4-component vector of float)

 0:31        gl_Position: direct index for structure (out 4-component vector of float)

-0:31          direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:31          direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:31            'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:31            Constant:

 0:31              1 (const int)

 0:31          Constant:

 0:31            0 (const int)

-0:31        'p' (4-component vector of float)

-0:32      move second child to first child (float)

+0:31        'p' (temp 4-component vector of float)

+0:32      move second child to first child (temp float)

 0:32        gl_PointSize: direct index for structure (out float)

-0:32          direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:32          direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:32            'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:32            Constant:

 0:32              1 (const int)

 0:32          Constant:

 0:32            1 (const int)

-0:32        'ps' (float)

-0:33      move second child to first child (float)

-0:33        direct index (float)

+0:32        'ps' (temp float)

+0:33      move second child to first child (temp float)

+0:33        direct index (temp float)

 0:33          gl_ClipDistance: direct index for structure (out 1-element array of float)

-0:33            direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:33            direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:33              'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:33              Constant:

 0:33                1 (const int)

@@ -1108,126 +1108,126 @@
 0:33              2 (const int)

 0:33          Constant:

 0:33            1 (const int)

-0:33        'cd' (float)

-0:35      move second child to first child (float)

-0:35        direct index (patch float)

+0:33        'cd' (temp float)

+0:35      move second child to first child (temp float)

+0:35        direct index (patch temp float)

 0:35          'gl_TessLevelOuter' (patch out 4-element array of float)

 0:35          Constant:

 0:35            3 (const int)

 0:35        Constant:

 0:35          3.200000

-0:36      move second child to first child (float)

-0:36        direct index (patch float)

+0:36      move second child to first child (temp float)

+0:36        direct index (patch temp float)

 0:36          'gl_TessLevelInner' (patch out 2-element array of float)

 0:36          Constant:

 0:36            1 (const int)

 0:36        Constant:

 0:36          1.300000

-0:38      Test condition and select (void)

+0:38      Test condition and select (temp void)

 0:38        Condition

-0:38        Compare Greater Than (bool)

-0:38          'a' (int)

+0:38        Compare Greater Than (temp bool)

+0:38          'a' (temp int)

 0:38          Constant:

 0:38            10 (const int)

 0:38        true case

-0:39        Barrier (void)

+0:39        Barrier (global void)

 0:38        false case

-0:41        Barrier (void)

-0:43      Barrier (void)

+0:41        Barrier (global void)

+0:43      Barrier (global void)

 0:47      Loop with condition not tested first

 0:47        Loop Condition

-0:47        Compare Greater Than (bool)

-0:47          'a' (int)

+0:47        Compare Greater Than (temp bool)

+0:47          'a' (temp int)

 0:47          Constant:

 0:47            10 (const int)

 0:47        Loop Body

 0:46        Sequence

-0:46          Barrier (void)

+0:46          Barrier (global void)

 0:49      switch

 0:49      condition

-0:49        'a' (int)

+0:49        'a' (temp int)

 0:49      body

 0:49        Sequence

 0:50          default: 

 0:?           Sequence

-0:51            Barrier (void)

+0:51            Barrier (global void)

 0:52            Branch: Break

-0:54      Test condition and select (int)

+0:54      Test condition and select (temp int)

 0:54        Condition

-0:54        Compare Less Than (bool)

-0:54          'a' (int)

+0:54        Compare Less Than (temp bool)

+0:54          'a' (temp int)

 0:54          Constant:

 0:54            12 (const int)

 0:54        true case

-0:54        'a' (int)

+0:54        'a' (temp int)

 0:54        false case

-0:54        Comma (int)

-0:54          Barrier (void)

-0:54          'a' (int)

+0:54        Comma (temp int)

+0:54          Barrier (global void)

+0:54          'a' (temp int)

 0:56      Sequence

-0:56        Barrier (void)

+0:56        Barrier (global void)

 0:59      Branch: Return

-0:61      Barrier (void)

-0:67  Function Definition: foo( (void)

+0:61      Barrier (global void)

+0:67  Function Definition: foo( (global void)

 0:67    Function Parameters: 

 0:69    Sequence

 0:69      gl_PointSize: direct index for structure (out float)

-0:69        direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:69        direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:69          'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:69          Constant:

 0:69            4 (const int)

 0:69        Constant:

 0:69          1 (const int)

-0:71      Barrier (void)

-0:91  Function Definition: foop( (void)

+0:71      Barrier (global void)

+0:91  Function Definition: foop( (global void)

 0:91    Function Parameters: 

 0:?     Sequence

-0:95      multiply second child into first child (3-component vector of float)

-0:95        'pv3' (3-component vector of float)

-0:95        'pv3' (3-component vector of float)

-0:96      move second child to first child (3-component vector of float)

-0:96        'pv3' (3-component vector of float)

-0:96        Function Call: fma(vf3;vf3;vf3; (3-component vector of float)

-0:96          'pv3' (3-component vector of float)

-0:96          'pv3' (3-component vector of float)

-0:96          'pv3' (3-component vector of float)

-0:97      move second child to first child (double)

-0:97        'd' (double)

-0:97        Function Call: fma(d1;d1;d1; (double)

-0:97          'd' (double)

-0:97          'd' (double)

-0:97          'd' (double)

-0:8  Function Definition: main( (void)

+0:95      multiply second child into first child (temp 3-component vector of float)

+0:95        'pv3' (temp 3-component vector of float)

+0:95        'pv3' (temp 3-component vector of float)

+0:96      move second child to first child (temp 3-component vector of float)

+0:96        'pv3' (temp 3-component vector of float)

+0:96        Function Call: fma(vf3;vf3;vf3; (global 3-component vector of float)

+0:96          'pv3' (temp 3-component vector of float)

+0:96          'pv3' (temp 3-component vector of float)

+0:96          'pv3' (temp 3-component vector of float)

+0:97      move second child to first child (temp double)

+0:97        'd' (temp double)

+0:97        Function Call: fma(d1;d1;d1; (global double)

+0:97          'd' (temp double)

+0:97          'd' (temp double)

+0:97          'd' (temp double)

+0:8  Function Definition: main( (global void)

 0:8    Function Parameters: 

-0:15  Function Definition: main( (void)

+0:15  Function Definition: main( (global void)

 0:15    Function Parameters: 

 0:17    Sequence

 0:17      Sequence

-0:17        move second child to first child (4-component vector of float)

-0:17          'p' (4-component vector of float)

+0:17        move second child to first child (temp 4-component vector of float)

+0:17          'p' (temp 4-component vector of float)

 0:17          gl_Position: direct index for structure (in 4-component vector of float)

-0:17            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:17            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:17              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:17              Constant:

 0:17                1 (const int)

 0:17            Constant:

 0:17              0 (const int)

 0:18      Sequence

-0:18        move second child to first child (float)

-0:18          'ps' (float)

+0:18        move second child to first child (temp float)

+0:18          'ps' (temp float)

 0:18          gl_PointSize: direct index for structure (in float)

-0:18            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:18            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:18              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:18              Constant:

 0:18                1 (const int)

 0:18            Constant:

 0:18              1 (const int)

 0:19      Sequence

-0:19        move second child to first child (float)

-0:19          'cd' (float)

-0:19          direct index (float)

+0:19        move second child to first child (temp float)

+0:19          'cd' (temp float)

+0:19          direct index (temp float)

 0:19            gl_ClipDistance: direct index for structure (in 1-element array of float)

-0:19              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:19              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:19                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:19                Constant:

 0:19                  1 (const int)

@@ -1236,37 +1236,37 @@
 0:19            Constant:

 0:19              2 (const int)

 0:21      Sequence

-0:21        move second child to first child (int)

-0:21          'pvi' (int)

+0:21        move second child to first child (temp int)

+0:21          'pvi' (temp int)

 0:21          'gl_PatchVerticesIn' (in int)

 0:22      Sequence

-0:22        move second child to first child (int)

-0:22          'pid' (int)

+0:22        move second child to first child (temp int)

+0:22          'pid' (temp int)

 0:22          'gl_PrimitiveID' (in int)

 0:23      Sequence

-0:23        move second child to first child (int)

-0:23          'iid' (int)

+0:23        move second child to first child (temp int)

+0:23          'iid' (temp int)

 0:23          'gl_InvocationID' (in int)

-0:25      move second child to first child (4-component vector of float)

+0:25      move second child to first child (temp 4-component vector of float)

 0:25        gl_Position: direct index for structure (out 4-component vector of float)

-0:25          direct index (block{out 4-component vector of float gl_Position})

+0:25          direct index (temp block{out 4-component vector of float gl_Position})

 0:25            'gl_out' (out 3-element array of block{out 4-component vector of float gl_Position})

 0:25            Constant:

 0:25              1 (const int)

 0:25          Constant:

 0:25            0 (const int)

-0:25        'p' (4-component vector of float)

-0:26      direct index (block{out 4-component vector of float gl_Position})

+0:25        'p' (temp 4-component vector of float)

+0:26      direct index (temp block{out 4-component vector of float gl_Position})

 0:26        'gl_out' (out 3-element array of block{out 4-component vector of float gl_Position})

 0:26        Constant:

 0:26          1 (const int)

-0:34  Function Definition: foo( (void)

+0:34  Function Definition: foo( (global void)

 0:34    Function Parameters: 

 0:36    Sequence

-0:36      Test condition and select (void)

+0:36      Test condition and select (temp void)

 0:36        Condition

-0:36        logical-or (bool)

-0:36          Compare Not Equal (bool)

+0:36        logical-or (temp bool)

+0:36          Compare Not Equal (temp bool)

 0:36            Constant:

 0:36              -0.625000

 0:36              -0.500000

@@ -1276,11 +1276,11 @@
 0:36              -0.250000

 0:36              -0.125000

 0:36              0.000000

-0:36            direct index (layout(location=0 ) 2X4 matrix of double)

+0:36            direct index (layout(location=0 ) temp 2X4 matrix of double)

 0:36              'vs_tcs_first' (layout(location=0 ) in 32-element array of 2X4 matrix of double)

 0:36              Constant:

 0:36                0 (const int)

-0:37          Compare Not Equal (bool)

+0:37          Compare Not Equal (temp bool)

 0:37            Constant:

 0:37              0.375000

 0:37              0.500000

@@ -1290,14 +1290,14 @@
 0:37              0.750000

 0:37              0.875000

 0:37              -0.625000

-0:37            direct index (layout(location=12 ) 2X4 matrix of double)

+0:37            direct index (layout(location=12 ) temp 2X4 matrix of double)

 0:37              'vs_tcs_last' (layout(location=12 ) in 32-element array of 2X4 matrix of double)

 0:37              Constant:

 0:37                0 (const int)

 0:36        true case is null

 0:?   Linker Objects

 0:?     'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

-0:?     'outa' (4-element array of int)

+0:?     'outa' (global 4-element array of int)

 0:?     'patchOut' (patch out 4-component vector of float)

 0:?     'patchIn' (patch in 4-component vector of float)

 0:?     'ina' (in 2-component vector of float)

@@ -1310,7 +1310,7 @@
 0:?     'ovla' (layout(location=3 ) out 4-element array of 4-component vector of float)

 0:?     'ovlb' (layout(location=4 ) out 4-element array of 4-component vector of float)

 0:?     'ovlc' (layout(location=4 ) out 4-element array of 4-component vector of float)

-0:?     'pv3' (3-component vector of float)

+0:?     'pv3' (temp 3-component vector of float)

 0:?     'pinbi' (patch out block{out int a})

 0:?     'a' (out 3-element array of int)

 0:?     'outb' (out 5-element array of int)

@@ -1326,42 +1326,42 @@
 triangle order = cw

 using point mode

 ERROR: node is still EOpNull!

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:12    Sequence

 0:12      Constant:

 0:12        0.000000

 0:14      Sequence

-0:14        move second child to first child (int)

-0:14          'a' (int)

+0:14        move second child to first child (temp int)

+0:14          'a' (temp int)

 0:14          Constant:

 0:14            1512 (const int)

 0:22      Sequence

-0:22        move second child to first child (4-component vector of float)

-0:22          'p' (4-component vector of float)

+0:22        move second child to first child (temp 4-component vector of float)

+0:22          'p' (temp 4-component vector of float)

 0:22          gl_Position: direct index for structure (in 4-component vector of float)

-0:22            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:22            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:22              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:22              Constant:

 0:22                1 (const int)

 0:22            Constant:

 0:22              0 (const int)

 0:23      Sequence

-0:23        move second child to first child (float)

-0:23          'ps' (float)

+0:23        move second child to first child (temp float)

+0:23          'ps' (temp float)

 0:23          gl_PointSize: direct index for structure (in float)

-0:23            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:23            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:23              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:23              Constant:

 0:23                1 (const int)

 0:23            Constant:

 0:23              1 (const int)

 0:24      Sequence

-0:24        move second child to first child (float)

-0:24          'cd' (float)

-0:24          direct index (float)

+0:24        move second child to first child (temp float)

+0:24          'cd' (temp float)

+0:24          direct index (temp float)

 0:24            gl_ClipDistance: direct index for structure (in 1-element array of float)

-0:24              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:24              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:24                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:24                Constant:

 0:24                  1 (const int)

@@ -1370,88 +1370,88 @@
 0:24            Constant:

 0:24              2 (const int)

 0:26      Sequence

-0:26        move second child to first child (int)

-0:26          'pvi' (int)

+0:26        move second child to first child (temp int)

+0:26          'pvi' (temp int)

 0:26          'gl_PatchVerticesIn' (in int)

 0:27      Sequence

-0:27        move second child to first child (int)

-0:27          'pid' (int)

+0:27        move second child to first child (temp int)

+0:27          'pid' (temp int)

 0:27          'gl_PrimitiveID' (in int)

 0:28      Sequence

-0:28        move second child to first child (3-component vector of float)

-0:28          'tc' (3-component vector of float)

+0:28        move second child to first child (temp 3-component vector of float)

+0:28          'tc' (temp 3-component vector of float)

 0:28          'gl_TessCoord' (in 3-component vector of float)

 0:29      Sequence

-0:29        move second child to first child (float)

-0:29          'tlo' (float)

-0:29          direct index (patch float)

+0:29        move second child to first child (temp float)

+0:29          'tlo' (temp float)

+0:29          direct index (patch temp float)

 0:29            'gl_TessLevelOuter' (patch in 4-element array of float)

 0:29            Constant:

 0:29              3 (const int)

 0:30      Sequence

-0:30        move second child to first child (float)

-0:30          'tli' (float)

-0:30          direct index (patch float)

+0:30        move second child to first child (temp float)

+0:30          'tli' (temp float)

+0:30          direct index (patch temp float)

 0:30            'gl_TessLevelInner' (patch in 2-element array of float)

 0:30            Constant:

 0:30              1 (const int)

-0:32      move second child to first child (4-component vector of float)

+0:32      move second child to first child (temp 4-component vector of float)

 0:32        gl_Position: direct index for structure (gl_Position 4-component vector of float)

 0:32          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:32          Constant:

 0:32            0 (const uint)

-0:32        'p' (4-component vector of float)

-0:33      move second child to first child (float)

+0:32        'p' (temp 4-component vector of float)

+0:33      move second child to first child (temp float)

 0:33        gl_PointSize: direct index for structure (gl_PointSize float)

 0:33          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:33          Constant:

 0:33            1 (const uint)

-0:33        'ps' (float)

-0:34      move second child to first child (float)

-0:34        direct index (float)

+0:33        'ps' (temp float)

+0:34      move second child to first child (temp float)

+0:34        direct index (temp float)

 0:34          gl_ClipDistance: direct index for structure (out 3-element array of float)

 0:34            'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:34            Constant:

 0:34              2 (const uint)

 0:34          Constant:

 0:34            2 (const int)

-0:34        'cd' (float)

-0:20  Function Definition: main( (void)

+0:34        'cd' (temp float)

+0:20  Function Definition: main( (global void)

 0:20    Function Parameters: 

 0:22    Sequence

 0:22      Constant:

 0:22        0.000000

 0:24      Sequence

-0:24        move second child to first child (int)

-0:24          'a' (int)

+0:24        move second child to first child (temp int)

+0:24          'a' (temp int)

 0:24          Constant:

 0:24            1512 (const int)

 0:32      Sequence

-0:32        move second child to first child (4-component vector of float)

-0:32          'p' (4-component vector of float)

+0:32        move second child to first child (temp 4-component vector of float)

+0:32          'p' (temp 4-component vector of float)

 0:32          gl_Position: direct index for structure (in 4-component vector of float)

-0:32            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:32            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:32              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:32              Constant:

 0:32                1 (const int)

 0:32            Constant:

 0:32              0 (const int)

 0:33      Sequence

-0:33        move second child to first child (float)

-0:33          'ps' (float)

+0:33        move second child to first child (temp float)

+0:33          'ps' (temp float)

 0:33          gl_PointSize: direct index for structure (in float)

-0:33            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:33            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:33              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:33              Constant:

 0:33                1 (const int)

 0:33            Constant:

 0:33              1 (const int)

 0:34      Sequence

-0:34        move second child to first child (float)

-0:34          'cd' (float)

-0:34          direct index (float)

+0:34        move second child to first child (temp float)

+0:34          'cd' (temp float)

+0:34          direct index (temp float)

 0:34            gl_ClipDistance: direct index for structure (in 1-element array of float)

-0:34              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:34              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:34                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:34                Constant:

 0:34                  1 (const int)

@@ -1460,75 +1460,75 @@
 0:34            Constant:

 0:34              2 (const int)

 0:36      Sequence

-0:36        move second child to first child (int)

-0:36          'pvi' (int)

+0:36        move second child to first child (temp int)

+0:36          'pvi' (temp int)

 0:36          'gl_PatchVerticesIn' (in int)

 0:37      Sequence

-0:37        move second child to first child (int)

-0:37          'pid' (int)

+0:37        move second child to first child (temp int)

+0:37          'pid' (temp int)

 0:37          'gl_PrimitiveID' (in int)

 0:38      Sequence

-0:38        move second child to first child (3-component vector of float)

-0:38          'tc' (3-component vector of float)

+0:38        move second child to first child (temp 3-component vector of float)

+0:38          'tc' (temp 3-component vector of float)

 0:38          'gl_TessCoord' (in 3-component vector of float)

 0:39      Sequence

-0:39        move second child to first child (float)

-0:39          'tlo' (float)

-0:39          direct index (patch float)

+0:39        move second child to first child (temp float)

+0:39          'tlo' (temp float)

+0:39          direct index (patch temp float)

 0:39            'gl_TessLevelOuter' (patch in 4-element array of float)

 0:39            Constant:

 0:39              3 (const int)

 0:40      Sequence

-0:40        move second child to first child (float)

-0:40          'tli' (float)

-0:40          direct index (patch float)

+0:40        move second child to first child (temp float)

+0:40          'tli' (temp float)

+0:40          direct index (patch temp float)

 0:40            'gl_TessLevelInner' (patch in 2-element array of float)

 0:40            Constant:

 0:40              1 (const int)

-0:42      move second child to first child (4-component vector of float)

+0:42      move second child to first child (temp 4-component vector of float)

 0:42        gl_Position: direct index for structure (gl_Position 4-component vector of float)

 0:42          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:42          Constant:

 0:42            0 (const uint)

-0:42        'p' (4-component vector of float)

-0:43      move second child to first child (float)

+0:42        'p' (temp 4-component vector of float)

+0:43      move second child to first child (temp float)

 0:43        gl_PointSize: direct index for structure (gl_PointSize float)

 0:43          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:43          Constant:

 0:43            1 (const uint)

-0:43        'ps' (float)

-0:44      move second child to first child (float)

-0:44        direct index (float)

+0:43        'ps' (temp float)

+0:44      move second child to first child (temp float)

+0:44        direct index (temp float)

 0:44          gl_ClipDistance: direct index for structure (out 3-element array of float)

 0:44            'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:44            Constant:

 0:44              2 (const uint)

 0:44          Constant:

 0:44            2 (const int)

-0:44        'cd' (float)

+0:44        'cd' (temp float)

 0:4  Sequence

-0:4    move second child to first child (2X2 matrix of float)

-0:4      'b' (2X2 matrix of float)

+0:4    move second child to first child (temp 2X2 matrix of float)

+0:4      'b' (global 2X2 matrix of float)

 0:4      Constant:

 0:4        1.000000

 0:4        0.000000

 0:4        0.000000

 0:4        1.000000

 0:15  Sequence

-0:15    move second child to first child (structure{float a, int b})

-0:15      'e' (structure{float a, int b})

+0:15    move second child to first child (temp structure{global float a, global int b})

+0:15      'e' (global structure{global float a, global int b})

 0:15      Constant:

 0:15        1.200000

 0:15        2 (const int)

 0:20  Sequence

-0:20    move second child to first child (structure{float a, int b})

-0:20      'e2' (structure{float a, int b})

+0:20    move second child to first child (temp structure{global float a, global int b})

+0:20      'e2' (global structure{global float a, global int b})

 0:20      Constant:

 0:20        1.000000

 0:20        3 (const int)

 0:42  Sequence

-0:42    move second child to first child (5-element array of float)

-0:42      'b5' (5-element array of float)

+0:42    move second child to first child (temp 5-element array of float)

+0:42      'b5' (global 5-element array of float)

 0:42      Constant:

 0:42        3.400000

 0:42        4.200000

@@ -1536,26 +1536,26 @@
 0:42        5.200000

 0:42        1.100000

 0:67  Sequence

-0:67    move second child to first child (3-component vector of float)

-0:67      'av3' (3-component vector of float)

-0:67      Construct vec3 (3-component vector of float)

-0:67        'vc1' (float)

-0:67        'vc2' (float)

-0:67        'vc3' (float)

+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 (3-component vector of float)

-0:68      'bv3' (3-component vector of float)

-0:68      Construct vec3 (3-component vector of float)

-0:68        'vc1' (float)

-0:68        'vc2' (float)

-0:68        'vc3' (float)

-0:70  Function Definition: main( (void)

+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 (global 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 (void)

-0:74      Test condition and select (void)

+0:72      MemoryBarrier (global void)

+0:74      Test condition and select (temp void)

 0:74        Condition

-0:74        Compare Equal (bool)

+0:74        Compare Equal (temp bool)

 0:74          Constant:

 0:74            1 (const uint)

 0:74            2 (const uint)

@@ -1573,9 +1573,9 @@
 0:74            0.000000

 0:74            6.000000

 0:74            0.000000

-0:74          'curlybad1' (structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

+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 (void)

+0:76      Test condition and select (temp void)

 0:76        Condition

 0:76        Constant:

 0:76          true (const bool)

@@ -1608,26 +1608,26 @@
 0:?       0.000000

 0:?       0.000000

 0:?       1.000000

-0:?     'b' (2X2 matrix of float)

+0:?     'b' (global 2X2 matrix of float)

 0:?     'c' (const 2X2 matrix of float)

 0:?       1.000000

 0:?       0.000000

 0:?       0.000000

 0:?       1.000000

-0:?     'a2' (2-element array of float)

-0:?     'b2' (2-component vector of float)

-0:?     'c2' (3X3 matrix of float)

-0:?     'd' (2X2 matrix of float)

-0:?     'e' (structure{float a, int b})

-0:?     'e2' (structure{float a, int b})

-0:?     'e3' (structure{float a, int b})

-0:?     'a3' (int)

-0:?     'b3' (2-element array of 4-component vector of float)

-0:?     'b4' (2-element array of 4-component vector of float)

-0:?     'c3' (4X2 matrix of float)

-0:?     'd2' (1-element array of structure{float s, float t})

-0:?     'b5' (5-element array of float)

-0:?     'constructed' (const structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

+0:?     'a2' (global 2-element array of float)

+0:?     'b2' (global 2-component vector of float)

+0:?     'c2' (global 3X3 matrix of float)

+0:?     'd' (global 2X2 matrix of float)

+0:?     'e' (global structure{global float a, global int b})

+0:?     'e2' (global structure{global float a, global int b})

+0:?     'e3' (global structure{global float a, global int b})

+0:?     'a3' (global int)

+0:?     'b3' (global 2-element array of 4-component vector of float)

+0:?     'b4' (global 2-element array of 4-component vector of float)

+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:?     '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)

 0:?       3.000000

@@ -1644,8 +1644,8 @@
 0:?       0.000000

 0:?       6.000000

 0:?       0.000000

-0:?     'curlybad1' (structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

-0:?     'curlyInit' (const structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

+0:?     '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:?     'curlyInit' (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)

 0:?       3.000000

@@ -1662,9 +1662,9 @@
 0:?       0.000000

 0:?       6.000000

 0:?       0.000000

-0:?     'vc1' (float)

-0:?     'vc2' (float)

-0:?     'vc3' (float)

-0:?     'av3' (3-component vector of float)

-0:?     'bv3' (3-component vector of float)

+0:?     'vc1' (global float)

+0:?     'vc2' (global float)

+0:?     'vc3' (global float)

+0:?     'av3' (global 3-component vector of float)

+0:?     'bv3' (global 3-component vector of float)

 

diff --git a/Test/baseResults/150.vert.out b/Test/baseResults/150.vert.out
index e31447d..ff1150c 100644
--- a/Test/baseResults/150.vert.out
+++ b/Test/baseResults/150.vert.out
@@ -6,34 +6,34 @@
 

 Shader version: 150

 ERROR: node is still EOpNull!

-0:9  Function Definition: main( (void)

+0:9  Function Definition: main( (global void)

 0:9    Function Parameters: 

 0:11    Sequence

-0:11      move second child to first child (4-component vector of float)

+0:11      move second child to first child (temp 4-component vector of float)

 0:11        gl_Position: direct index for structure (invariant gl_Position 4-component vector of float)

 0:11          'anon@0' (out block{invariant gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 4-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:11          Constant:

 0:11            0 (const uint)

 0:11        'iv4' (in 4-component vector of float)

-0:12      move second child to first child (float)

+0:12      move second child to first child (temp float)

 0:12        gl_PointSize: direct index for structure (gl_PointSize float)

 0:12          'anon@0' (out block{invariant gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 4-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:12          Constant:

 0:12            1 (const uint)

 0:12        'ps' (uniform float)

-0:13      move second child to first child (float)

-0:13        direct index (float)

+0:13      move second child to first child (temp float)

+0:13        direct index (temp float)

 0:13          gl_ClipDistance: direct index for structure (out 4-element array of float)

 0:13            'anon@0' (out block{invariant gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 4-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:13            Constant:

 0:13              2 (const uint)

 0:13          Constant:

 0:13            2 (const int)

-0:13        direct index (float)

+0:13        direct index (temp float)

 0:13          'iv4' (in 4-component vector of float)

 0:13          Constant:

 0:13            0 (const int)

-0:14      move second child to first child (4-component vector of float)

+0:14      move second child to first child (temp 4-component vector of float)

 0:14        gl_ClipVertex: direct index for structure (gl_ClipVertex 4-component vector of float)

 0:14          'anon@0' (out block{invariant gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 4-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:14          Constant:

@@ -53,34 +53,34 @@
 

 Shader version: 150

 ERROR: node is still EOpNull!

-0:9  Function Definition: main( (void)

+0:9  Function Definition: main( (global void)

 0:9    Function Parameters: 

 0:11    Sequence

-0:11      move second child to first child (4-component vector of float)

+0:11      move second child to first child (temp 4-component vector of float)

 0:11        gl_Position: direct index for structure (invariant gl_Position 4-component vector of float)

 0:11          'anon@0' (out block{invariant gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 4-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:11          Constant:

 0:11            0 (const uint)

 0:11        'iv4' (in 4-component vector of float)

-0:12      move second child to first child (float)

+0:12      move second child to first child (temp float)

 0:12        gl_PointSize: direct index for structure (gl_PointSize float)

 0:12          'anon@0' (out block{invariant gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 4-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:12          Constant:

 0:12            1 (const uint)

 0:12        'ps' (uniform float)

-0:13      move second child to first child (float)

-0:13        direct index (float)

+0:13      move second child to first child (temp float)

+0:13        direct index (temp float)

 0:13          gl_ClipDistance: direct index for structure (out 4-element array of float)

 0:13            'anon@0' (out block{invariant gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 4-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:13            Constant:

 0:13              2 (const uint)

 0:13          Constant:

 0:13            2 (const int)

-0:13        direct index (float)

+0:13        direct index (temp float)

 0:13          'iv4' (in 4-component vector of float)

 0:13          Constant:

 0:13            0 (const int)

-0:14      move second child to first child (4-component vector of float)

+0:14      move second child to first child (temp 4-component vector of float)

 0:14        gl_ClipVertex: direct index for structure (gl_ClipVertex 4-component vector of float)

 0:14          'anon@0' (out block{invariant gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 4-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:14          Constant:

diff --git a/Test/baseResults/300.frag.out b/Test/baseResults/300.frag.out
index cbaa7c4..0a2b5dd 100644
--- a/Test/baseResults/300.frag.out
+++ b/Test/baseResults/300.frag.out
@@ -29,7 +29,7 @@
 ERROR: 0:119: '==' : can't use with samplers or structs containing samplers 

 ERROR: 0:120: '!=' : can't use with samplers or structs containing samplers 

 ERROR: 0:121: '==' : can't use with samplers or structs containing samplers 

-ERROR: 0:121: '==' :  wrong operand types: no operation '==' exists that takes a left-hand operand of type 'lowp sampler2D' and a right operand of type 'lowp sampler2D' (or there is no acceptable conversion)

+ERROR: 0:121: '==' :  wrong operand types: no operation '==' exists that takes a left-hand operand of type 'global lowp sampler2D' and a right operand of type 'global lowp sampler2D' (or there is no acceptable conversion)

 ERROR: 0:122: '=' : can't use with samplers or structs containing samplers 

 ERROR: 0:123: '==' : can't use with samplers or structs containing samplers 

 ERROR: 0:129: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]

@@ -47,43 +47,43 @@
 Shader version: 300

 using early_fragment_tests

 ERROR: node is still EOpNull!

-0:53  Function Definition: main( (void)

+0:53  Function Definition: main( (global void)

 0:53    Function Parameters: 

 0:?     Sequence

-0:57      move second child to first child (lowp 4-component vector of float)

-0:57        'v' (lowp 4-component vector of float)

-0:57        Function Call: texture(s21;vf2; (lowp 4-component vector of float)

+0:57      move second child to first child (temp lowp 4-component vector of float)

+0:57        'v' (temp lowp 4-component vector of float)

+0:57        Function Call: texture(s21;vf2; (global lowp 4-component vector of float)

 0:57          's2D' (uniform lowp sampler2D)

 0:57          'c2D' (smooth in lowp 2-component vector of float)

-0:58      move second child to first child (lowp 4-component vector of float)

-0:58        'v' (lowp 4-component vector of float)

-0:58        Function Call: textureProj(s31;vf4; (lowp 4-component vector of float)

+0:58      move second child to first child (temp lowp 4-component vector of float)

+0:58        'v' (temp lowp 4-component vector of float)

+0:58        Function Call: textureProj(s31;vf4; (global lowp 4-component vector of float)

 0:58          's3D' (uniform lowp sampler3D)

-0:58          'c4D' (smooth lowp 4-component vector of float)

-0:59      move second child to first child (lowp 4-component vector of float)

-0:59        'v' (lowp 4-component vector of float)

-0:59        Function Call: textureLod(sA21;vf3;f1; (lowp 4-component vector of float)

+0:58          'c4D' (smooth temp lowp 4-component vector of float)

+0:59      move second child to first child (temp lowp 4-component vector of float)

+0:59        'v' (temp lowp 4-component vector of float)

+0:59        Function Call: textureLod(sA21;vf3;f1; (global lowp 4-component vector of float)

 0:59          's2DArray' (uniform lowp sampler2DArray)

 0:59          'c3D' (smooth in lowp 3-component vector of float)

 0:59          Constant:

 0:59            1.200000

-0:60      move second child to first child (lowp float)

-0:60        'f' (lowp float)

-0:60        Function Call: textureOffset(sS21;vf3;vi2;f1; (lowp float)

+0:60      move second child to first child (temp lowp float)

+0:60        'f' (temp lowp float)

+0:60        Function Call: textureOffset(sS21;vf3;vi2;f1; (global lowp float)

 0:60          's2DShadow' (uniform lowp sampler2DShadow)

 0:60          'c3D' (smooth in lowp 3-component vector of float)

 0:60          'ic2D' (flat in mediump 2-component vector of int)

 0:60          'c1D' (smooth in lowp float)

-0:61      move second child to first child (lowp 4-component vector of float)

-0:61        'v' (lowp 4-component vector of float)

-0:61        Function Call: texelFetch(s31;vi3;i1; (lowp 4-component vector of float)

+0:61      move second child to first child (temp lowp 4-component vector of float)

+0:61        'v' (temp lowp 4-component vector of float)

+0:61        Function Call: texelFetch(s31;vi3;i1; (global lowp 4-component vector of float)

 0:61          's3D' (uniform lowp sampler3D)

 0:61          'ic3D' (flat in mediump 3-component vector of int)

 0:61          'ic1D' (flat in mediump int)

-0:62      move second child to first child (lowp 4-component vector of float)

-0:62        'v' (lowp 4-component vector of float)

-0:62        Function Call: texelFetchOffset(s21;vi2;i1;vi2; (lowp 4-component vector of float)

-0:62          direct index (lowp sampler2D)

+0:62      move second child to first child (temp lowp 4-component vector of float)

+0:62        'v' (temp lowp 4-component vector of float)

+0:62        Function Call: texelFetchOffset(s21;vi2;i1;vi2; (global lowp 4-component vector of float)

+0:62          direct index (temp lowp sampler2D)

 0:62            'arrayedSampler' (uniform 5-element array of lowp sampler2D)

 0:62            Constant:

 0:62              2 (const int)

@@ -91,266 +91,266 @@
 0:62          Constant:

 0:62            4 (const int)

 0:62          'ic2D' (flat in mediump 2-component vector of int)

-0:63      move second child to first child (lowp float)

-0:63        'f' (lowp float)

-0:63        Function Call: textureLodOffset(sS21;vf3;f1;vi2; (lowp float)

+0:63      move second child to first child (temp lowp float)

+0:63        'f' (temp lowp float)

+0:63        Function Call: textureLodOffset(sS21;vf3;f1;vi2; (global lowp float)

 0:63          's2DShadow' (uniform lowp sampler2DShadow)

 0:63          'c3D' (smooth in lowp 3-component vector of float)

 0:63          'c1D' (smooth in lowp float)

 0:63          'ic2D' (flat in mediump 2-component vector of int)

-0:64      move second child to first child (lowp 4-component vector of float)

-0:64        'v' (lowp 4-component vector of float)

-0:64        Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (lowp 4-component vector of float)

+0:64      move second child to first child (temp lowp 4-component vector of float)

+0:64        'v' (temp lowp 4-component vector of float)

+0:64        Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (global lowp 4-component vector of float)

 0:64          's2D' (uniform lowp sampler2D)

 0:64          'c3D' (smooth in lowp 3-component vector of float)

 0:64          'c1D' (smooth in lowp float)

 0:64          'ic2D' (flat in mediump 2-component vector of int)

-0:65      move second child to first child (lowp 4-component vector of float)

-0:65        'v' (lowp 4-component vector of float)

-0:65        Function Call: textureGrad(sC1;vf3;vf3;vf3; (lowp 4-component vector of float)

+0:65      move second child to first child (temp lowp 4-component vector of float)

+0:65        'v' (temp lowp 4-component vector of float)

+0:65        Function Call: textureGrad(sC1;vf3;vf3;vf3; (global lowp 4-component vector of float)

 0:65          'sCube' (uniform lowp samplerCube)

 0:65          'c3D' (smooth in lowp 3-component vector of float)

 0:65          'c3D' (smooth in lowp 3-component vector of float)

 0:65          'c3D' (smooth in lowp 3-component vector of float)

-0:66      move second child to first child (lowp float)

-0:66        'f' (lowp float)

-0:66        Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (lowp float)

+0:66      move second child to first child (temp lowp float)

+0:66        'f' (temp lowp float)

+0:66        Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (global lowp float)

 0:66          's2DArrayShadow' (uniform lowp sampler2DArrayShadow)

-0:66          'c4D' (smooth lowp 4-component vector of float)

+0:66          'c4D' (smooth temp lowp 4-component vector of float)

 0:66          'c2D' (smooth in lowp 2-component vector of float)

 0:66          'c2D' (smooth in lowp 2-component vector of float)

 0:66          'ic2D' (flat in mediump 2-component vector of int)

-0:67      move second child to first child (lowp 4-component vector of float)

-0:67        'v' (lowp 4-component vector of float)

-0:67        Function Call: textureProjGrad(s31;vf4;vf3;vf3; (lowp 4-component vector of float)

+0:67      move second child to first child (temp lowp 4-component vector of float)

+0:67        'v' (temp lowp 4-component vector of float)

+0:67        Function Call: textureProjGrad(s31;vf4;vf3;vf3; (global lowp 4-component vector of float)

 0:67          's3D' (uniform lowp sampler3D)

-0:67          'c4D' (smooth lowp 4-component vector of float)

+0:67          'c4D' (smooth temp lowp 4-component vector of float)

 0:67          'c3D' (smooth in lowp 3-component vector of float)

 0:67          'c3D' (smooth in lowp 3-component vector of float)

-0:68      move second child to first child (lowp 4-component vector of float)

-0:68        'v' (lowp 4-component vector of float)

-0:68        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (lowp 4-component vector of float)

+0:68      move second child to first child (temp lowp 4-component vector of float)

+0:68        'v' (temp lowp 4-component vector of float)

+0:68        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (global lowp 4-component vector of float)

 0:68          's2D' (uniform lowp sampler2D)

 0:68          'c3D' (smooth in lowp 3-component vector of float)

 0:68          'c2D' (smooth in lowp 2-component vector of float)

 0:68          'c2D' (smooth in lowp 2-component vector of float)

 0:68          'ic2D' (flat in mediump 2-component vector of int)

-0:69      move second child to first child (lowp 4-component vector of float)

-0:69        'v' (lowp 4-component vector of float)

-0:69        Function Call: texture(s21;vf2; (lowp 4-component vector of float)

-0:69          indirect index (lowp sampler2D)

+0:69      move second child to first child (temp lowp 4-component vector of float)

+0:69        'v' (temp lowp 4-component vector of float)

+0:69        Function Call: texture(s21;vf2; (global lowp 4-component vector of float)

+0:69          indirect index (temp lowp sampler2D)

 0:69            'arrayedSampler' (uniform 5-element array of lowp sampler2D)

 0:69            'ic1D' (flat in mediump int)

 0:69          'c2D' (smooth in lowp 2-component vector of float)

-0:72      move second child to first child (mediump 4-component vector of int)

-0:72        'iv' (mediump 4-component vector of int)

-0:72        Function Call: texture(is21;vf2; (mediump 4-component vector of int)

+0:72      move second child to first child (temp mediump 4-component vector of int)

+0:72        'iv' (temp mediump 4-component vector of int)

+0:72        Function Call: texture(is21;vf2; (global mediump 4-component vector of int)

 0:72          'is2D' (uniform lowp isampler2D)

 0:72          'c2D' (smooth in lowp 2-component vector of float)

-0:73      move second child to first child (mediump 4-component vector of int)

-0:73        'iv' (mediump 4-component vector of int)

-0:73        Function Call: textureProjOffset(is21;vf4;vi2; (mediump 4-component vector of int)

+0:73      move second child to first child (temp mediump 4-component vector of int)

+0:73        'iv' (temp mediump 4-component vector of int)

+0:73        Function Call: textureProjOffset(is21;vf4;vi2; (global mediump 4-component vector of int)

 0:73          'is2D' (uniform lowp isampler2D)

-0:73          'c4D' (smooth lowp 4-component vector of float)

+0:73          'c4D' (smooth temp lowp 4-component vector of float)

 0:73          'ic2D' (flat in mediump 2-component vector of int)

-0:74      move second child to first child (mediump 4-component vector of int)

-0:74        'iv' (mediump 4-component vector of int)

-0:74        Function Call: textureProjLod(is21;vf3;f1; (mediump 4-component vector of int)

+0:74      move second child to first child (temp mediump 4-component vector of int)

+0:74        'iv' (temp mediump 4-component vector of int)

+0:74        Function Call: textureProjLod(is21;vf3;f1; (global mediump 4-component vector of int)

 0:74          'is2D' (uniform lowp isampler2D)

 0:74          'c3D' (smooth in lowp 3-component vector of float)

 0:74          'c1D' (smooth in lowp float)

-0:75      move second child to first child (mediump 4-component vector of int)

-0:75        'iv' (mediump 4-component vector of int)

-0:75        Function Call: textureProjGrad(is21;vf3;vf2;vf2; (mediump 4-component vector of int)

+0:75      move second child to first child (temp mediump 4-component vector of int)

+0:75        'iv' (temp mediump 4-component vector of int)

+0:75        Function Call: textureProjGrad(is21;vf3;vf2;vf2; (global mediump 4-component vector of int)

 0:75          'is2D' (uniform lowp isampler2D)

 0:75          'c3D' (smooth in lowp 3-component vector of float)

 0:75          'c2D' (smooth in lowp 2-component vector of float)

 0:75          'c2D' (smooth in lowp 2-component vector of float)

-0:76      move second child to first child (mediump 4-component vector of int)

-0:76        'iv' (mediump 4-component vector of int)

-0:76        Function Call: texture(is31;vf3;f1; (mediump 4-component vector of int)

+0:76      move second child to first child (temp mediump 4-component vector of int)

+0:76        'iv' (temp mediump 4-component vector of int)

+0:76        Function Call: texture(is31;vf3;f1; (global mediump 4-component vector of int)

 0:76          'is3D' (uniform lowp isampler3D)

 0:76          'c3D' (smooth in lowp 3-component vector of float)

 0:76          Constant:

 0:76            4.200000

-0:77      move second child to first child (mediump 4-component vector of int)

-0:77        'iv' (mediump 4-component vector of int)

-0:77        Function Call: textureLod(isC1;vf3;f1; (mediump 4-component vector of int)

+0:77      move second child to first child (temp mediump 4-component vector of int)

+0:77        'iv' (temp mediump 4-component vector of int)

+0:77        Function Call: textureLod(isC1;vf3;f1; (global mediump 4-component vector of int)

 0:77          'isCube' (uniform lowp isamplerCube)

 0:77          'c3D' (smooth in lowp 3-component vector of float)

 0:77          'c1D' (smooth in lowp float)

-0:78      move second child to first child (mediump 4-component vector of int)

-0:78        'iv' (mediump 4-component vector of int)

-0:78        Function Call: texelFetch(isA21;vi3;i1; (mediump 4-component vector of int)

+0:78      move second child to first child (temp mediump 4-component vector of int)

+0:78        'iv' (temp mediump 4-component vector of int)

+0:78        Function Call: texelFetch(isA21;vi3;i1; (global mediump 4-component vector of int)

 0:78          'is2DArray' (uniform lowp isampler2DArray)

 0:78          'ic3D' (flat in mediump 3-component vector of int)

 0:78          'ic1D' (flat in mediump int)

-0:80      move second child to first child (highp 2-component vector of int)

-0:80        vector swizzle (mediump 2-component vector of int)

-0:80          'iv' (mediump 4-component vector of int)

+0:80      move second child to first child (temp highp 2-component vector of int)

+0:80        vector swizzle (temp mediump 2-component vector of int)

+0:80          'iv' (temp mediump 4-component vector of int)

 0:80          Sequence

 0:80            Constant:

 0:80              0 (const int)

 0:80            Constant:

 0:80              1 (const int)

-0:80        Function Call: textureSize(sSC1;i1; (highp 2-component vector of int)

+0:80        Function Call: textureSize(sSC1;i1; (temp highp 2-component vector of int)

 0:80          'sCubeShadow' (uniform lowp samplerCubeShadow)

 0:80          Constant:

 0:80            2 (const int)

-0:88      add second child into first child (highp float)

-0:88        'f' (lowp float)

-0:88        direct index (highp float)

+0:88      add second child into first child (temp highp float)

+0:88        'f' (temp lowp float)

+0:88        direct index (temp highp float)

 0:88          'gl_FragCoord' (gl_FragCoord highp 4-component vector of float)

 0:88          Constant:

 0:88            1 (const int)

-0:89      move second child to first child (highp float)

+0:89      move second child to first child (temp highp float)

 0:89        'gl_FragDepth' (gl_FragDepth highp float)

-0:89        'f' (lowp float)

-0:91      move second child to first child (lowp 3-component vector of float)

+0:89        'f' (temp lowp float)

+0:91      move second child to first child (temp lowp 3-component vector of float)

 0:91        'sc' (out lowp 3-component vector of float)

-0:91        c: direct index for structure (lowp 3-component vector of float)

-0:91          's2' (smooth in structure{lowp 3-component vector of float c, lowp float f})

+0:91        c: direct index for structure (global lowp 3-component vector of float)

+0:91          's2' (smooth in structure{global lowp 3-component vector of float c, global lowp float f})

 0:91          Constant:

 0:91            0 (const int)

-0:92      move second child to first child (lowp float)

+0:92      move second child to first child (temp lowp float)

 0:92        'sf' (out lowp float)

-0:92        f: direct index for structure (lowp float)

-0:92          's2' (smooth in structure{lowp 3-component vector of float c, lowp float f})

+0:92        f: direct index for structure (global lowp float)

+0:92          's2' (smooth in structure{global lowp 3-component vector of float c, global lowp float f})

 0:92          Constant:

 0:92            1 (const int)

-0:94      add (lowp 2-component vector of float)

-0:94        hyp. sine (lowp float)

+0:94      add (temp lowp 2-component vector of float)

+0:94        hyp. sine (global lowp float)

 0:94          'c1D' (smooth in lowp float)

-0:95        vector-scale (lowp 2-component vector of float)

-0:95          hyp. cosine (lowp float)

+0:95        vector-scale (temp lowp 2-component vector of float)

+0:95          hyp. cosine (global lowp float)

 0:95            'c1D' (smooth in lowp float)

-0:95          hyp. tangent (lowp 2-component vector of float)

+0:95          hyp. tangent (global lowp 2-component vector of float)

 0:95            'c2D' (smooth in lowp 2-component vector of float)

-0:96      add (lowp 4-component vector of float)

-0:96        arc hyp. sine (lowp 4-component vector of float)

-0:96          'c4D' (smooth lowp 4-component vector of float)

-0:96        arc hyp. cosine (lowp 4-component vector of float)

-0:96          'c4D' (smooth lowp 4-component vector of float)

-0:97      arc hyp. tangent (lowp 3-component vector of float)

+0:96      add (temp lowp 4-component vector of float)

+0:96        arc hyp. sine (global lowp 4-component vector of float)

+0:96          'c4D' (smooth temp lowp 4-component vector of float)

+0:96        arc hyp. cosine (global lowp 4-component vector of float)

+0:96          'c4D' (smooth temp lowp 4-component vector of float)

+0:97      arc hyp. tangent (global lowp 3-component vector of float)

 0:97        'c3D' (smooth in lowp 3-component vector of float)

-0:108  Function Definition: foo( (void)

+0:108  Function Definition: foo( (global void)

 0:108    Function Parameters: 

 0:110    Sequence

-0:110      move second child to first child (lowp 4-component vector of float)

-0:110        direct index (lowp 4-component vector of float)

+0:110      move second child to first child (temp lowp 4-component vector of float)

+0:110        direct index (temp lowp 4-component vector of float)

 0:110          'colors' (out 4-element array of lowp 4-component vector of float)

 0:110          Constant:

 0:110            2 (const int)

-0:110        'c4D' (smooth lowp 4-component vector of float)

-0:111      move second child to first child (lowp 4-component vector of float)

-0:111        indirect index (lowp 4-component vector of float)

+0:110        'c4D' (smooth temp lowp 4-component vector of float)

+0:111      move second child to first child (temp lowp 4-component vector of float)

+0:111        indirect index (temp lowp 4-component vector of float)

 0:111          'colors' (out 4-element array of lowp 4-component vector of float)

 0:111          'ic1D' (flat in mediump int)

-0:111        'c4D' (smooth lowp 4-component vector of float)

-0:117  Function Definition: foo13(struct-s-i1-s211; (void)

+0:111        'c4D' (smooth temp lowp 4-component vector of float)

+0:117  Function Definition: foo13(struct-s-i1-s211; (global void)

 0:117    Function Parameters: 

-0:117      'inSt2' (in structure{mediump int i, lowp sampler2D s})

+0:117      'inSt2' (in structure{global mediump int i, global lowp sampler2D s})

 0:119    Sequence

-0:119      Test condition and select (void)

+0:119      Test condition and select (temp void)

 0:119        Condition

-0:119        Compare Equal (bool)

-0:119          'st1' (uniform structure{mediump int i, lowp sampler2D s})

-0:119          'st2' (uniform structure{mediump int i, lowp sampler2D s})

+0:119        Compare Equal (temp bool)

+0:119          'st1' (uniform structure{global mediump int i, global lowp sampler2D s})

+0:119          'st2' (uniform structure{global mediump int i, global lowp sampler2D s})

 0:119        true case is null

-0:120      Test condition and select (void)

+0:120      Test condition and select (temp void)

 0:120        Condition

-0:120        Compare Not Equal (bool)

-0:120          'st1' (uniform structure{mediump int i, lowp sampler2D s})

-0:120          'st2' (uniform structure{mediump int i, lowp sampler2D s})

+0:120        Compare Not Equal (temp bool)

+0:120          'st1' (uniform structure{global mediump int i, global lowp sampler2D s})

+0:120          'st2' (uniform structure{global mediump int i, global lowp sampler2D s})

 0:120        true case is null

 0:121      Constant:

 0:121        false (const bool)

-0:122      move second child to first child (structure{mediump int i, lowp sampler2D s})

-0:122        'inSt2' (in structure{mediump int i, lowp sampler2D s})

-0:122        'st1' (uniform structure{mediump int i, lowp sampler2D s})

-0:123      Compare Equal (bool)

-0:123        'inSt2' (in structure{mediump int i, lowp sampler2D s})

-0:123        'st1' (uniform structure{mediump int i, lowp sampler2D s})

-0:126  Function Definition: foo23( (void)

+0:122      move second child to first child (temp structure{global mediump int i, global lowp sampler2D s})

+0:122        'inSt2' (in structure{global mediump int i, global lowp sampler2D s})

+0:122        'st1' (uniform structure{global mediump int i, global lowp sampler2D s})

+0:123      Compare Equal (temp bool)

+0:123        'inSt2' (in structure{global mediump int i, global lowp sampler2D s})

+0:123        'st1' (uniform structure{global mediump int i, global lowp sampler2D s})

+0:126  Function Definition: foo23( (global void)

 0:126    Function Parameters: 

 0:128    Sequence

-0:128      Function Call: textureOffset(sS21;vf3;vi2;f1; (lowp float)

+0:128      Function Call: textureOffset(sS21;vf3;vi2;f1; (global lowp float)

 0:128        's2DShadow' (uniform lowp sampler2DShadow)

 0:128        'c3D' (smooth in lowp 3-component vector of float)

 0:128        Constant:

 0:128          -8 (const int)

 0:128          7 (const int)

 0:128        'c1D' (smooth in lowp float)

-0:129      Function Call: textureOffset(sS21;vf3;vi2;f1; (lowp float)

+0:129      Function Call: textureOffset(sS21;vf3;vi2;f1; (global lowp float)

 0:129        's2DShadow' (uniform lowp sampler2DShadow)

 0:129        'c3D' (smooth in lowp 3-component vector of float)

 0:129        Constant:

 0:129          -9 (const int)

 0:129          8 (const int)

 0:129        'c1D' (smooth in lowp float)

-0:132  Function Definition: foo324( (void)

+0:132  Function Definition: foo324( (global void)

 0:132    Function Parameters: 

 0:134    Sequence

 0:134      Sequence

-0:134        move second child to first child (lowp float)

-0:134          'p' (lowp float)

+0:134        move second child to first child (temp lowp float)

+0:134          'p' (temp lowp float)

 0:134          Constant:

 0:134            210.712306

-0:135      add second child into first child (lowp float)

-0:135        'p' (lowp float)

+0:135      add second child into first child (temp lowp float)

+0:135        'p' (temp lowp float)

 0:135        Constant:

 0:135          0.389418

-0:136      add second child into first child (lowp float)

-0:136        'p' (lowp float)

+0:136      add second child into first child (temp lowp float)

+0:136        'p' (temp lowp float)

 0:136        Constant:

 0:136          5.000000

-0:137      add second child into first child (lowp float)

-0:137        'p' (lowp float)

+0:137      add second child into first child (temp lowp float)

+0:137        'p' (temp lowp float)

 0:137        Constant:

 0:137          13.000000

 0:138      Sequence

-0:138        move second child to first child (lowp 3-component vector of float)

-0:138          'c3' (lowp 3-component vector of float)

+0:138        move second child to first child (temp lowp 3-component vector of float)

+0:138          'c3' (temp lowp 3-component vector of float)

 0:138          Constant:

 0:138            -15.000000

 0:138            -2.000000

 0:138            39.000000

-0:139      add second child into first child (lowp 3-component vector of float)

-0:139        'c3' (lowp 3-component vector of float)

+0:139      add second child into first child (temp lowp 3-component vector of float)

+0:139        'c3' (temp lowp 3-component vector of float)

 0:139        Constant:

 0:139          -1.000000

 0:139          -2.000000

 0:139          -3.000000

-0:140      add second child into first child (lowp 3-component vector of float)

-0:140        'c3' (lowp 3-component vector of float)

+0:140      add second child into first child (temp lowp 3-component vector of float)

+0:140        'c3' (temp lowp 3-component vector of float)

 0:140        Constant:

 0:140          1.000000

 0:140          2.000000

 0:140          3.000000

 0:141      Sequence

-0:141        move second child to first child (lowp 2-component vector of float)

-0:141          'c2' (lowp 2-component vector of float)

+0:141        move second child to first child (temp lowp 2-component vector of float)

+0:141          'c2' (temp lowp 2-component vector of float)

 0:141          Constant:

 0:141            1.000000

 0:141            -3.000000

-0:142      add second child into first child (lowp 2-component vector of float)

-0:142        'c2' (lowp 2-component vector of float)

+0:142      add second child into first child (temp lowp 2-component vector of float)

+0:142        'c2' (temp lowp 2-component vector of float)

 0:142        Constant:

 0:142          1.000000

 0:142          -3.000000

-0:143      add second child into first child (lowp 2-component vector of float)

-0:143        'c2' (lowp 2-component vector of float)

+0:143      add second child into first child (temp lowp 2-component vector of float)

+0:143        'c2' (temp lowp 2-component vector of float)

 0:143        Constant:

 0:143          3.000000

 0:143          -8.544004

-0:144      add second child into first child (lowp 2-component vector of float)

-0:144        'c2' (lowp 2-component vector of float)

+0:144      add second child into first child (temp lowp 2-component vector of float)

+0:144        'c2' (temp lowp 2-component vector of float)

 0:144        Constant:

 0:144          0.000000

 0:144          0.000000

 0:145      Sequence

-0:145        move second child to first child (lowp 3X2 matrix of float)

-0:145          'm32' (lowp 3X2 matrix of float)

+0:145        move second child to first child (temp lowp 3X2 matrix of float)

+0:145          'm32' (temp lowp 3X2 matrix of float)

 0:145          Constant:

 0:145            10.000000

 0:145            15.000000

@@ -377,22 +377,22 @@
 0:?     'c1D' (smooth in lowp float)

 0:?     'c2D' (smooth in lowp 2-component vector of float)

 0:?     'c3D' (smooth in lowp 3-component vector of float)

-0:?     'c4D' (smooth lowp 4-component vector of float)

+0:?     'c4D' (smooth temp lowp 4-component vector of float)

 0:?     'ic1D' (flat in mediump int)

 0:?     'ic2D' (flat in mediump 2-component vector of int)

 0:?     'ic3D' (flat in mediump 3-component vector of int)

 0:?     'ic4D' (flat in mediump 4-component vector of int)

 0:?     'badv' (noperspective in lowp 4-component vector of float)

 0:?     'bads' (smooth in lowp sampler2D)

-0:?     'badout' (smooth in structure{mediump int i, lowp sampler2D s})

-0:?     's2' (smooth in structure{lowp 3-component vector of float c, lowp float f})

+0:?     'badout' (smooth in structure{global mediump int i, global lowp sampler2D s})

+0:?     's2' (smooth in structure{global lowp 3-component vector of float c, global lowp float f})

 0:?     'sc' (out lowp 3-component vector of float)

 0:?     'sf' (out lowp float)

 0:?     'arrayedSampler' (uniform 5-element array of lowp sampler2D)

 0:?     'multiInst' (layout(column_major shared ) uniform 2-element array of block{layout(column_major shared ) uniform 2-element array of mediump int a, layout(column_major shared ) uniform 2-element array of mediump int b, layout(column_major shared ) uniform 2-element array of mediump int c})

 0:?     'colors' (out 4-element array of lowp 4-component vector of float)

-0:?     'st1' (uniform structure{mediump int i, lowp sampler2D s})

-0:?     'st2' (uniform structure{mediump int i, lowp sampler2D s})

+0:?     'st1' (uniform structure{global mediump int i, global lowp sampler2D s})

+0:?     'st2' (uniform structure{global mediump int i, global lowp sampler2D s})

 0:?     'fooinv' (invariant smooth in lowp 4-component vector of float)

 

 

@@ -403,43 +403,43 @@
 Shader version: 300

 using early_fragment_tests

 ERROR: node is still EOpNull!

-0:53  Function Definition: main( (void)

+0:53  Function Definition: main( (global void)

 0:53    Function Parameters: 

 0:?     Sequence

-0:57      move second child to first child (lowp 4-component vector of float)

-0:57        'v' (lowp 4-component vector of float)

-0:57        Function Call: texture(s21;vf2; (lowp 4-component vector of float)

+0:57      move second child to first child (temp lowp 4-component vector of float)

+0:57        'v' (temp lowp 4-component vector of float)

+0:57        Function Call: texture(s21;vf2; (global lowp 4-component vector of float)

 0:57          's2D' (uniform lowp sampler2D)

 0:57          'c2D' (smooth in lowp 2-component vector of float)

-0:58      move second child to first child (lowp 4-component vector of float)

-0:58        'v' (lowp 4-component vector of float)

-0:58        Function Call: textureProj(s31;vf4; (lowp 4-component vector of float)

+0:58      move second child to first child (temp lowp 4-component vector of float)

+0:58        'v' (temp lowp 4-component vector of float)

+0:58        Function Call: textureProj(s31;vf4; (global lowp 4-component vector of float)

 0:58          's3D' (uniform lowp sampler3D)

-0:58          'c4D' (smooth lowp 4-component vector of float)

-0:59      move second child to first child (lowp 4-component vector of float)

-0:59        'v' (lowp 4-component vector of float)

-0:59        Function Call: textureLod(sA21;vf3;f1; (lowp 4-component vector of float)

+0:58          'c4D' (smooth temp lowp 4-component vector of float)

+0:59      move second child to first child (temp lowp 4-component vector of float)

+0:59        'v' (temp lowp 4-component vector of float)

+0:59        Function Call: textureLod(sA21;vf3;f1; (global lowp 4-component vector of float)

 0:59          's2DArray' (uniform lowp sampler2DArray)

 0:59          'c3D' (smooth in lowp 3-component vector of float)

 0:59          Constant:

 0:59            1.200000

-0:60      move second child to first child (lowp float)

-0:60        'f' (lowp float)

-0:60        Function Call: textureOffset(sS21;vf3;vi2;f1; (lowp float)

+0:60      move second child to first child (temp lowp float)

+0:60        'f' (temp lowp float)

+0:60        Function Call: textureOffset(sS21;vf3;vi2;f1; (global lowp float)

 0:60          's2DShadow' (uniform lowp sampler2DShadow)

 0:60          'c3D' (smooth in lowp 3-component vector of float)

 0:60          'ic2D' (flat in mediump 2-component vector of int)

 0:60          'c1D' (smooth in lowp float)

-0:61      move second child to first child (lowp 4-component vector of float)

-0:61        'v' (lowp 4-component vector of float)

-0:61        Function Call: texelFetch(s31;vi3;i1; (lowp 4-component vector of float)

+0:61      move second child to first child (temp lowp 4-component vector of float)

+0:61        'v' (temp lowp 4-component vector of float)

+0:61        Function Call: texelFetch(s31;vi3;i1; (global lowp 4-component vector of float)

 0:61          's3D' (uniform lowp sampler3D)

 0:61          'ic3D' (flat in mediump 3-component vector of int)

 0:61          'ic1D' (flat in mediump int)

-0:62      move second child to first child (lowp 4-component vector of float)

-0:62        'v' (lowp 4-component vector of float)

-0:62        Function Call: texelFetchOffset(s21;vi2;i1;vi2; (lowp 4-component vector of float)

-0:62          direct index (lowp sampler2D)

+0:62      move second child to first child (temp lowp 4-component vector of float)

+0:62        'v' (temp lowp 4-component vector of float)

+0:62        Function Call: texelFetchOffset(s21;vi2;i1;vi2; (global lowp 4-component vector of float)

+0:62          direct index (temp lowp sampler2D)

 0:62            'arrayedSampler' (uniform 5-element array of lowp sampler2D)

 0:62            Constant:

 0:62              2 (const int)

@@ -447,266 +447,266 @@
 0:62          Constant:

 0:62            4 (const int)

 0:62          'ic2D' (flat in mediump 2-component vector of int)

-0:63      move second child to first child (lowp float)

-0:63        'f' (lowp float)

-0:63        Function Call: textureLodOffset(sS21;vf3;f1;vi2; (lowp float)

+0:63      move second child to first child (temp lowp float)

+0:63        'f' (temp lowp float)

+0:63        Function Call: textureLodOffset(sS21;vf3;f1;vi2; (global lowp float)

 0:63          's2DShadow' (uniform lowp sampler2DShadow)

 0:63          'c3D' (smooth in lowp 3-component vector of float)

 0:63          'c1D' (smooth in lowp float)

 0:63          'ic2D' (flat in mediump 2-component vector of int)

-0:64      move second child to first child (lowp 4-component vector of float)

-0:64        'v' (lowp 4-component vector of float)

-0:64        Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (lowp 4-component vector of float)

+0:64      move second child to first child (temp lowp 4-component vector of float)

+0:64        'v' (temp lowp 4-component vector of float)

+0:64        Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (global lowp 4-component vector of float)

 0:64          's2D' (uniform lowp sampler2D)

 0:64          'c3D' (smooth in lowp 3-component vector of float)

 0:64          'c1D' (smooth in lowp float)

 0:64          'ic2D' (flat in mediump 2-component vector of int)

-0:65      move second child to first child (lowp 4-component vector of float)

-0:65        'v' (lowp 4-component vector of float)

-0:65        Function Call: textureGrad(sC1;vf3;vf3;vf3; (lowp 4-component vector of float)

+0:65      move second child to first child (temp lowp 4-component vector of float)

+0:65        'v' (temp lowp 4-component vector of float)

+0:65        Function Call: textureGrad(sC1;vf3;vf3;vf3; (global lowp 4-component vector of float)

 0:65          'sCube' (uniform lowp samplerCube)

 0:65          'c3D' (smooth in lowp 3-component vector of float)

 0:65          'c3D' (smooth in lowp 3-component vector of float)

 0:65          'c3D' (smooth in lowp 3-component vector of float)

-0:66      move second child to first child (lowp float)

-0:66        'f' (lowp float)

-0:66        Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (lowp float)

+0:66      move second child to first child (temp lowp float)

+0:66        'f' (temp lowp float)

+0:66        Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (global lowp float)

 0:66          's2DArrayShadow' (uniform lowp sampler2DArrayShadow)

-0:66          'c4D' (smooth lowp 4-component vector of float)

+0:66          'c4D' (smooth temp lowp 4-component vector of float)

 0:66          'c2D' (smooth in lowp 2-component vector of float)

 0:66          'c2D' (smooth in lowp 2-component vector of float)

 0:66          'ic2D' (flat in mediump 2-component vector of int)

-0:67      move second child to first child (lowp 4-component vector of float)

-0:67        'v' (lowp 4-component vector of float)

-0:67        Function Call: textureProjGrad(s31;vf4;vf3;vf3; (lowp 4-component vector of float)

+0:67      move second child to first child (temp lowp 4-component vector of float)

+0:67        'v' (temp lowp 4-component vector of float)

+0:67        Function Call: textureProjGrad(s31;vf4;vf3;vf3; (global lowp 4-component vector of float)

 0:67          's3D' (uniform lowp sampler3D)

-0:67          'c4D' (smooth lowp 4-component vector of float)

+0:67          'c4D' (smooth temp lowp 4-component vector of float)

 0:67          'c3D' (smooth in lowp 3-component vector of float)

 0:67          'c3D' (smooth in lowp 3-component vector of float)

-0:68      move second child to first child (lowp 4-component vector of float)

-0:68        'v' (lowp 4-component vector of float)

-0:68        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (lowp 4-component vector of float)

+0:68      move second child to first child (temp lowp 4-component vector of float)

+0:68        'v' (temp lowp 4-component vector of float)

+0:68        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (global lowp 4-component vector of float)

 0:68          's2D' (uniform lowp sampler2D)

 0:68          'c3D' (smooth in lowp 3-component vector of float)

 0:68          'c2D' (smooth in lowp 2-component vector of float)

 0:68          'c2D' (smooth in lowp 2-component vector of float)

 0:68          'ic2D' (flat in mediump 2-component vector of int)

-0:69      move second child to first child (lowp 4-component vector of float)

-0:69        'v' (lowp 4-component vector of float)

-0:69        Function Call: texture(s21;vf2; (lowp 4-component vector of float)

-0:69          indirect index (lowp sampler2D)

+0:69      move second child to first child (temp lowp 4-component vector of float)

+0:69        'v' (temp lowp 4-component vector of float)

+0:69        Function Call: texture(s21;vf2; (global lowp 4-component vector of float)

+0:69          indirect index (temp lowp sampler2D)

 0:69            'arrayedSampler' (uniform 5-element array of lowp sampler2D)

 0:69            'ic1D' (flat in mediump int)

 0:69          'c2D' (smooth in lowp 2-component vector of float)

-0:72      move second child to first child (mediump 4-component vector of int)

-0:72        'iv' (mediump 4-component vector of int)

-0:72        Function Call: texture(is21;vf2; (mediump 4-component vector of int)

+0:72      move second child to first child (temp mediump 4-component vector of int)

+0:72        'iv' (temp mediump 4-component vector of int)

+0:72        Function Call: texture(is21;vf2; (global mediump 4-component vector of int)

 0:72          'is2D' (uniform lowp isampler2D)

 0:72          'c2D' (smooth in lowp 2-component vector of float)

-0:73      move second child to first child (mediump 4-component vector of int)

-0:73        'iv' (mediump 4-component vector of int)

-0:73        Function Call: textureProjOffset(is21;vf4;vi2; (mediump 4-component vector of int)

+0:73      move second child to first child (temp mediump 4-component vector of int)

+0:73        'iv' (temp mediump 4-component vector of int)

+0:73        Function Call: textureProjOffset(is21;vf4;vi2; (global mediump 4-component vector of int)

 0:73          'is2D' (uniform lowp isampler2D)

-0:73          'c4D' (smooth lowp 4-component vector of float)

+0:73          'c4D' (smooth temp lowp 4-component vector of float)

 0:73          'ic2D' (flat in mediump 2-component vector of int)

-0:74      move second child to first child (mediump 4-component vector of int)

-0:74        'iv' (mediump 4-component vector of int)

-0:74        Function Call: textureProjLod(is21;vf3;f1; (mediump 4-component vector of int)

+0:74      move second child to first child (temp mediump 4-component vector of int)

+0:74        'iv' (temp mediump 4-component vector of int)

+0:74        Function Call: textureProjLod(is21;vf3;f1; (global mediump 4-component vector of int)

 0:74          'is2D' (uniform lowp isampler2D)

 0:74          'c3D' (smooth in lowp 3-component vector of float)

 0:74          'c1D' (smooth in lowp float)

-0:75      move second child to first child (mediump 4-component vector of int)

-0:75        'iv' (mediump 4-component vector of int)

-0:75        Function Call: textureProjGrad(is21;vf3;vf2;vf2; (mediump 4-component vector of int)

+0:75      move second child to first child (temp mediump 4-component vector of int)

+0:75        'iv' (temp mediump 4-component vector of int)

+0:75        Function Call: textureProjGrad(is21;vf3;vf2;vf2; (global mediump 4-component vector of int)

 0:75          'is2D' (uniform lowp isampler2D)

 0:75          'c3D' (smooth in lowp 3-component vector of float)

 0:75          'c2D' (smooth in lowp 2-component vector of float)

 0:75          'c2D' (smooth in lowp 2-component vector of float)

-0:76      move second child to first child (mediump 4-component vector of int)

-0:76        'iv' (mediump 4-component vector of int)

-0:76        Function Call: texture(is31;vf3;f1; (mediump 4-component vector of int)

+0:76      move second child to first child (temp mediump 4-component vector of int)

+0:76        'iv' (temp mediump 4-component vector of int)

+0:76        Function Call: texture(is31;vf3;f1; (global mediump 4-component vector of int)

 0:76          'is3D' (uniform lowp isampler3D)

 0:76          'c3D' (smooth in lowp 3-component vector of float)

 0:76          Constant:

 0:76            4.200000

-0:77      move second child to first child (mediump 4-component vector of int)

-0:77        'iv' (mediump 4-component vector of int)

-0:77        Function Call: textureLod(isC1;vf3;f1; (mediump 4-component vector of int)

+0:77      move second child to first child (temp mediump 4-component vector of int)

+0:77        'iv' (temp mediump 4-component vector of int)

+0:77        Function Call: textureLod(isC1;vf3;f1; (global mediump 4-component vector of int)

 0:77          'isCube' (uniform lowp isamplerCube)

 0:77          'c3D' (smooth in lowp 3-component vector of float)

 0:77          'c1D' (smooth in lowp float)

-0:78      move second child to first child (mediump 4-component vector of int)

-0:78        'iv' (mediump 4-component vector of int)

-0:78        Function Call: texelFetch(isA21;vi3;i1; (mediump 4-component vector of int)

+0:78      move second child to first child (temp mediump 4-component vector of int)

+0:78        'iv' (temp mediump 4-component vector of int)

+0:78        Function Call: texelFetch(isA21;vi3;i1; (global mediump 4-component vector of int)

 0:78          'is2DArray' (uniform lowp isampler2DArray)

 0:78          'ic3D' (flat in mediump 3-component vector of int)

 0:78          'ic1D' (flat in mediump int)

-0:80      move second child to first child (highp 2-component vector of int)

-0:80        vector swizzle (mediump 2-component vector of int)

-0:80          'iv' (mediump 4-component vector of int)

+0:80      move second child to first child (temp highp 2-component vector of int)

+0:80        vector swizzle (temp mediump 2-component vector of int)

+0:80          'iv' (temp mediump 4-component vector of int)

 0:80          Sequence

 0:80            Constant:

 0:80              0 (const int)

 0:80            Constant:

 0:80              1 (const int)

-0:80        Function Call: textureSize(sSC1;i1; (highp 2-component vector of int)

+0:80        Function Call: textureSize(sSC1;i1; (temp highp 2-component vector of int)

 0:80          'sCubeShadow' (uniform lowp samplerCubeShadow)

 0:80          Constant:

 0:80            2 (const int)

-0:88      add second child into first child (highp float)

-0:88        'f' (lowp float)

-0:88        direct index (highp float)

+0:88      add second child into first child (temp highp float)

+0:88        'f' (temp lowp float)

+0:88        direct index (temp highp float)

 0:88          'gl_FragCoord' (gl_FragCoord highp 4-component vector of float)

 0:88          Constant:

 0:88            1 (const int)

-0:89      move second child to first child (highp float)

+0:89      move second child to first child (temp highp float)

 0:89        'gl_FragDepth' (gl_FragDepth highp float)

-0:89        'f' (lowp float)

-0:91      move second child to first child (lowp 3-component vector of float)

+0:89        'f' (temp lowp float)

+0:91      move second child to first child (temp lowp 3-component vector of float)

 0:91        'sc' (out lowp 3-component vector of float)

-0:91        c: direct index for structure (lowp 3-component vector of float)

-0:91          's2' (smooth in structure{lowp 3-component vector of float c, lowp float f})

+0:91        c: direct index for structure (global lowp 3-component vector of float)

+0:91          's2' (smooth in structure{global lowp 3-component vector of float c, global lowp float f})

 0:91          Constant:

 0:91            0 (const int)

-0:92      move second child to first child (lowp float)

+0:92      move second child to first child (temp lowp float)

 0:92        'sf' (out lowp float)

-0:92        f: direct index for structure (lowp float)

-0:92          's2' (smooth in structure{lowp 3-component vector of float c, lowp float f})

+0:92        f: direct index for structure (global lowp float)

+0:92          's2' (smooth in structure{global lowp 3-component vector of float c, global lowp float f})

 0:92          Constant:

 0:92            1 (const int)

-0:94      add (lowp 2-component vector of float)

-0:94        hyp. sine (lowp float)

+0:94      add (temp lowp 2-component vector of float)

+0:94        hyp. sine (global lowp float)

 0:94          'c1D' (smooth in lowp float)

-0:95        vector-scale (lowp 2-component vector of float)

-0:95          hyp. cosine (lowp float)

+0:95        vector-scale (temp lowp 2-component vector of float)

+0:95          hyp. cosine (global lowp float)

 0:95            'c1D' (smooth in lowp float)

-0:95          hyp. tangent (lowp 2-component vector of float)

+0:95          hyp. tangent (global lowp 2-component vector of float)

 0:95            'c2D' (smooth in lowp 2-component vector of float)

-0:96      add (lowp 4-component vector of float)

-0:96        arc hyp. sine (lowp 4-component vector of float)

-0:96          'c4D' (smooth lowp 4-component vector of float)

-0:96        arc hyp. cosine (lowp 4-component vector of float)

-0:96          'c4D' (smooth lowp 4-component vector of float)

-0:97      arc hyp. tangent (lowp 3-component vector of float)

+0:96      add (temp lowp 4-component vector of float)

+0:96        arc hyp. sine (global lowp 4-component vector of float)

+0:96          'c4D' (smooth temp lowp 4-component vector of float)

+0:96        arc hyp. cosine (global lowp 4-component vector of float)

+0:96          'c4D' (smooth temp lowp 4-component vector of float)

+0:97      arc hyp. tangent (global lowp 3-component vector of float)

 0:97        'c3D' (smooth in lowp 3-component vector of float)

-0:108  Function Definition: foo( (void)

+0:108  Function Definition: foo( (global void)

 0:108    Function Parameters: 

 0:110    Sequence

-0:110      move second child to first child (lowp 4-component vector of float)

-0:110        direct index (lowp 4-component vector of float)

+0:110      move second child to first child (temp lowp 4-component vector of float)

+0:110        direct index (temp lowp 4-component vector of float)

 0:110          'colors' (out 4-element array of lowp 4-component vector of float)

 0:110          Constant:

 0:110            2 (const int)

-0:110        'c4D' (smooth lowp 4-component vector of float)

-0:111      move second child to first child (lowp 4-component vector of float)

-0:111        indirect index (lowp 4-component vector of float)

+0:110        'c4D' (smooth temp lowp 4-component vector of float)

+0:111      move second child to first child (temp lowp 4-component vector of float)

+0:111        indirect index (temp lowp 4-component vector of float)

 0:111          'colors' (out 4-element array of lowp 4-component vector of float)

 0:111          'ic1D' (flat in mediump int)

-0:111        'c4D' (smooth lowp 4-component vector of float)

-0:117  Function Definition: foo13(struct-s-i1-s211; (void)

+0:111        'c4D' (smooth temp lowp 4-component vector of float)

+0:117  Function Definition: foo13(struct-s-i1-s211; (global void)

 0:117    Function Parameters: 

-0:117      'inSt2' (in structure{mediump int i, lowp sampler2D s})

+0:117      'inSt2' (in structure{global mediump int i, global lowp sampler2D s})

 0:119    Sequence

-0:119      Test condition and select (void)

+0:119      Test condition and select (temp void)

 0:119        Condition

-0:119        Compare Equal (bool)

-0:119          'st1' (uniform structure{mediump int i, lowp sampler2D s})

-0:119          'st2' (uniform structure{mediump int i, lowp sampler2D s})

+0:119        Compare Equal (temp bool)

+0:119          'st1' (uniform structure{global mediump int i, global lowp sampler2D s})

+0:119          'st2' (uniform structure{global mediump int i, global lowp sampler2D s})

 0:119        true case is null

-0:120      Test condition and select (void)

+0:120      Test condition and select (temp void)

 0:120        Condition

-0:120        Compare Not Equal (bool)

-0:120          'st1' (uniform structure{mediump int i, lowp sampler2D s})

-0:120          'st2' (uniform structure{mediump int i, lowp sampler2D s})

+0:120        Compare Not Equal (temp bool)

+0:120          'st1' (uniform structure{global mediump int i, global lowp sampler2D s})

+0:120          'st2' (uniform structure{global mediump int i, global lowp sampler2D s})

 0:120        true case is null

 0:121      Constant:

 0:121        false (const bool)

-0:122      move second child to first child (structure{mediump int i, lowp sampler2D s})

-0:122        'inSt2' (in structure{mediump int i, lowp sampler2D s})

-0:122        'st1' (uniform structure{mediump int i, lowp sampler2D s})

-0:123      Compare Equal (bool)

-0:123        'inSt2' (in structure{mediump int i, lowp sampler2D s})

-0:123        'st1' (uniform structure{mediump int i, lowp sampler2D s})

-0:126  Function Definition: foo23( (void)

+0:122      move second child to first child (temp structure{global mediump int i, global lowp sampler2D s})

+0:122        'inSt2' (in structure{global mediump int i, global lowp sampler2D s})

+0:122        'st1' (uniform structure{global mediump int i, global lowp sampler2D s})

+0:123      Compare Equal (temp bool)

+0:123        'inSt2' (in structure{global mediump int i, global lowp sampler2D s})

+0:123        'st1' (uniform structure{global mediump int i, global lowp sampler2D s})

+0:126  Function Definition: foo23( (global void)

 0:126    Function Parameters: 

 0:128    Sequence

-0:128      Function Call: textureOffset(sS21;vf3;vi2;f1; (lowp float)

+0:128      Function Call: textureOffset(sS21;vf3;vi2;f1; (global lowp float)

 0:128        's2DShadow' (uniform lowp sampler2DShadow)

 0:128        'c3D' (smooth in lowp 3-component vector of float)

 0:128        Constant:

 0:128          -8 (const int)

 0:128          7 (const int)

 0:128        'c1D' (smooth in lowp float)

-0:129      Function Call: textureOffset(sS21;vf3;vi2;f1; (lowp float)

+0:129      Function Call: textureOffset(sS21;vf3;vi2;f1; (global lowp float)

 0:129        's2DShadow' (uniform lowp sampler2DShadow)

 0:129        'c3D' (smooth in lowp 3-component vector of float)

 0:129        Constant:

 0:129          -9 (const int)

 0:129          8 (const int)

 0:129        'c1D' (smooth in lowp float)

-0:132  Function Definition: foo324( (void)

+0:132  Function Definition: foo324( (global void)

 0:132    Function Parameters: 

 0:134    Sequence

 0:134      Sequence

-0:134        move second child to first child (lowp float)

-0:134          'p' (lowp float)

+0:134        move second child to first child (temp lowp float)

+0:134          'p' (temp lowp float)

 0:134          Constant:

 0:134            210.712306

-0:135      add second child into first child (lowp float)

-0:135        'p' (lowp float)

+0:135      add second child into first child (temp lowp float)

+0:135        'p' (temp lowp float)

 0:135        Constant:

 0:135          0.389418

-0:136      add second child into first child (lowp float)

-0:136        'p' (lowp float)

+0:136      add second child into first child (temp lowp float)

+0:136        'p' (temp lowp float)

 0:136        Constant:

 0:136          5.000000

-0:137      add second child into first child (lowp float)

-0:137        'p' (lowp float)

+0:137      add second child into first child (temp lowp float)

+0:137        'p' (temp lowp float)

 0:137        Constant:

 0:137          13.000000

 0:138      Sequence

-0:138        move second child to first child (lowp 3-component vector of float)

-0:138          'c3' (lowp 3-component vector of float)

+0:138        move second child to first child (temp lowp 3-component vector of float)

+0:138          'c3' (temp lowp 3-component vector of float)

 0:138          Constant:

 0:138            -15.000000

 0:138            -2.000000

 0:138            39.000000

-0:139      add second child into first child (lowp 3-component vector of float)

-0:139        'c3' (lowp 3-component vector of float)

+0:139      add second child into first child (temp lowp 3-component vector of float)

+0:139        'c3' (temp lowp 3-component vector of float)

 0:139        Constant:

 0:139          -1.000000

 0:139          -2.000000

 0:139          -3.000000

-0:140      add second child into first child (lowp 3-component vector of float)

-0:140        'c3' (lowp 3-component vector of float)

+0:140      add second child into first child (temp lowp 3-component vector of float)

+0:140        'c3' (temp lowp 3-component vector of float)

 0:140        Constant:

 0:140          1.000000

 0:140          2.000000

 0:140          3.000000

 0:141      Sequence

-0:141        move second child to first child (lowp 2-component vector of float)

-0:141          'c2' (lowp 2-component vector of float)

+0:141        move second child to first child (temp lowp 2-component vector of float)

+0:141          'c2' (temp lowp 2-component vector of float)

 0:141          Constant:

 0:141            1.000000

 0:141            -3.000000

-0:142      add second child into first child (lowp 2-component vector of float)

-0:142        'c2' (lowp 2-component vector of float)

+0:142      add second child into first child (temp lowp 2-component vector of float)

+0:142        'c2' (temp lowp 2-component vector of float)

 0:142        Constant:

 0:142          1.000000

 0:142          -3.000000

-0:143      add second child into first child (lowp 2-component vector of float)

-0:143        'c2' (lowp 2-component vector of float)

+0:143      add second child into first child (temp lowp 2-component vector of float)

+0:143        'c2' (temp lowp 2-component vector of float)

 0:143        Constant:

 0:143          3.000000

 0:143          -8.544004

-0:144      add second child into first child (lowp 2-component vector of float)

-0:144        'c2' (lowp 2-component vector of float)

+0:144      add second child into first child (temp lowp 2-component vector of float)

+0:144        'c2' (temp lowp 2-component vector of float)

 0:144        Constant:

 0:144          0.000000

 0:144          0.000000

 0:145      Sequence

-0:145        move second child to first child (lowp 3X2 matrix of float)

-0:145          'm32' (lowp 3X2 matrix of float)

+0:145        move second child to first child (temp lowp 3X2 matrix of float)

+0:145          'm32' (temp lowp 3X2 matrix of float)

 0:145          Constant:

 0:145            10.000000

 0:145            15.000000

@@ -733,21 +733,21 @@
 0:?     'c1D' (smooth in lowp float)

 0:?     'c2D' (smooth in lowp 2-component vector of float)

 0:?     'c3D' (smooth in lowp 3-component vector of float)

-0:?     'c4D' (smooth lowp 4-component vector of float)

+0:?     'c4D' (smooth temp lowp 4-component vector of float)

 0:?     'ic1D' (flat in mediump int)

 0:?     'ic2D' (flat in mediump 2-component vector of int)

 0:?     'ic3D' (flat in mediump 3-component vector of int)

 0:?     'ic4D' (flat in mediump 4-component vector of int)

 0:?     'badv' (noperspective in lowp 4-component vector of float)

 0:?     'bads' (smooth in lowp sampler2D)

-0:?     'badout' (smooth in structure{mediump int i, lowp sampler2D s})

-0:?     's2' (smooth in structure{lowp 3-component vector of float c, lowp float f})

+0:?     'badout' (smooth in structure{global mediump int i, global lowp sampler2D s})

+0:?     's2' (smooth in structure{global lowp 3-component vector of float c, global lowp float f})

 0:?     'sc' (out lowp 3-component vector of float)

 0:?     'sf' (out lowp float)

 0:?     'arrayedSampler' (uniform 5-element array of lowp sampler2D)

 0:?     'multiInst' (layout(column_major shared ) uniform 2-element array of block{layout(column_major shared ) uniform 2-element array of mediump int a, layout(column_major shared ) uniform 2-element array of mediump int b, layout(column_major shared ) uniform 2-element array of mediump int c})

 0:?     'colors' (out 4-element array of lowp 4-component vector of float)

-0:?     'st1' (uniform structure{mediump int i, lowp sampler2D s})

-0:?     'st2' (uniform structure{mediump int i, lowp sampler2D s})

+0:?     'st1' (uniform structure{global mediump int i, global lowp sampler2D s})

+0:?     'st2' (uniform structure{global mediump int i, global lowp sampler2D s})

 0:?     'fooinv' (invariant smooth in lowp 4-component vector of float)

 

diff --git a/Test/baseResults/300.vert.out b/Test/baseResults/300.vert.out
index f27a399..416f0d4 100644
--- a/Test/baseResults/300.vert.out
+++ b/Test/baseResults/300.vert.out
@@ -44,160 +44,160 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:27  Function Definition: main( (void)

+0:27  Function Definition: main( (global void)

 0:27    Function Parameters: 

 0:29    Sequence

 0:29      Sequence

-0:29        move second child to first child (highp int)

-0:29          'id' (highp int)

-0:29          add (highp int)

+0:29        move second child to first child (temp highp int)

+0:29          'id' (temp highp int)

+0:29          add (temp highp int)

 0:29            'gl_VertexID' (gl_VertexId highp int)

 0:29            'gl_InstanceID' (gl_InstanceId highp int)

 0:31      Sequence

-0:31        move second child to first child (highp int)

-0:31          'c0' (highp int)

+0:31        move second child to first child (temp highp int)

+0:31          'c0' (temp highp int)

 0:31          Constant:

 0:31            64 (const int)

 0:32      Sequence

-0:32        move second child to first child (highp int)

-0:32          'c1' (highp int)

+0:32        move second child to first child (temp highp int)

+0:32          'c1' (temp highp int)

 0:32          Constant:

 0:32            128 (const int)

 0:33      Sequence

-0:33        move second child to first child (highp int)

-0:33          'c2' (highp int)

+0:33        move second child to first child (temp highp int)

+0:33          'c2' (temp highp int)

 0:33          Constant:

 0:33            16 (const int)

 0:34      Sequence

-0:34        move second child to first child (highp int)

-0:34          'c3' (highp int)

+0:34        move second child to first child (temp highp int)

+0:34          'c3' (temp highp int)

 0:34          Constant:

 0:34            15 (const int)

 0:35      Sequence

-0:35        move second child to first child (highp int)

-0:35          'c4' (highp int)

+0:35        move second child to first child (temp highp int)

+0:35          'c4' (temp highp int)

 0:35          Constant:

 0:35            32 (const int)

 0:36      Sequence

-0:36        move second child to first child (highp int)

-0:36          'c5' (highp int)

+0:36        move second child to first child (temp highp int)

+0:36          'c5' (temp highp int)

 0:36          Constant:

 0:36            80 (const int)

 0:37      Sequence

-0:37        move second child to first child (highp int)

-0:37          'c6' (highp int)

+0:37        move second child to first child (temp highp int)

+0:37          'c6' (temp highp int)

 0:37          Constant:

 0:37            32 (const int)

 0:38      Sequence

-0:38        move second child to first child (highp int)

-0:38          'c7' (highp int)

+0:38        move second child to first child (temp highp int)

+0:38          'c7' (temp highp int)

 0:38          Constant:

 0:38            16 (const int)

 0:39      Sequence

-0:39        move second child to first child (highp int)

-0:39          'c8' (highp int)

+0:39        move second child to first child (temp highp int)

+0:39          'c8' (temp highp int)

 0:39          Constant:

 0:39            32 (const int)

 0:40      Sequence

-0:40        move second child to first child (highp int)

-0:40          'c9' (highp int)

+0:40        move second child to first child (temp highp int)

+0:40          'c9' (temp highp int)

 0:40          Constant:

 0:40            -8 (const int)

 0:41      Sequence

-0:41        move second child to first child (highp int)

-0:41          'c10' (highp int)

+0:41        move second child to first child (temp highp int)

+0:41          'c10' (temp highp int)

 0:41          Constant:

 0:41            7 (const int)

 0:43      Sequence

-0:43        move second child to first child (highp 3X4 matrix of float)

-0:43          'tm' (highp 3X4 matrix of float)

-0:43          transpose (highp 3X4 matrix of float)

+0:43        move second child to first child (temp highp 3X4 matrix of float)

+0:43          'tm' (temp highp 3X4 matrix of float)

+0:43          transpose (global highp 3X4 matrix of float)

 0:43            'm43' (uniform highp 4X3 matrix of float)

 0:44      Sequence

-0:44        move second child to first child (highp float)

-0:44          'dm' (highp float)

-0:44          determinant (highp float)

+0:44        move second child to first child (temp highp float)

+0:44          'dm' (temp highp float)

+0:44          determinant (global highp float)

 0:44            'm44' (uniform highp 4X4 matrix of float)

 0:45      Sequence

-0:45        move second child to first child (highp 3X3 matrix of float)

-0:45          'im' (highp 3X3 matrix of float)

-0:45          inverse (highp 3X3 matrix of float)

+0:45        move second child to first child (temp highp 3X3 matrix of float)

+0:45          'im' (temp highp 3X3 matrix of float)

+0:45          inverse (global highp 3X3 matrix of float)

 0:45            'm33' (uniform highp 3X3 matrix of float)

 0:47      Sequence

-0:47        move second child to first child (highp 3X2 matrix of float)

-0:47          'op' (highp 3X2 matrix of float)

-0:47          outer product (highp 3X2 matrix of float)

+0:47        move second child to first child (temp highp 3X2 matrix of float)

+0:47          'op' (temp highp 3X2 matrix of float)

+0:47          outer product (global highp 3X2 matrix of float)

 0:47            'v2' (smooth out highp 2-component vector of float)

 0:47            'v3' (in highp 3-component vector of float)

-0:49      move second child to first child (highp 4-component vector of float)

+0:49      move second child to first child (temp highp 4-component vector of float)

 0:49        'gl_Position' (gl_Position highp 4-component vector of float)

-0:49        direct index (highp 4-component vector of float)

+0:49        direct index (temp highp 4-component vector of float)

 0:49          'm44' (uniform highp 4X4 matrix of float)

 0:49          Constant:

 0:49            2 (const int)

-0:50      move second child to first child (highp float)

+0:50      move second child to first child (temp highp float)

 0:50        'gl_PointSize' (gl_PointSize highp float)

-0:50        direct index (highp float)

+0:50        direct index (temp highp float)

 0:50          'v2' (smooth out highp 2-component vector of float)

 0:50          Constant:

 0:50            1 (const int)

-0:52      move second child to first child (highp 3-component vector of float)

-0:52        c: direct index for structure (highp 3-component vector of float)

-0:52          's' (smooth out structure{highp 3-component vector of float c, highp float f})

+0:52      move second child to first child (temp highp 3-component vector of float)

+0:52        c: direct index for structure (global highp 3-component vector of float)

+0:52          's' (smooth out structure{global highp 3-component vector of float c, global highp float f})

 0:52          Constant:

 0:52            0 (const int)

 0:52        'v3' (in highp 3-component vector of float)

-0:53      move second child to first child (highp float)

-0:53        f: direct index for structure (highp float)

-0:53          's' (smooth out structure{highp 3-component vector of float c, highp float f})

+0:53      move second child to first child (temp highp float)

+0:53        f: direct index for structure (global highp float)

+0:53          's' (smooth out structure{global highp 3-component vector of float c, global highp float f})

 0:53          Constant:

 0:53            1 (const int)

-0:53        'dm' (highp float)

+0:53        'dm' (temp highp float)

 0:68  Sequence

-0:68    move second child to first child (2-element array of highp float)

-0:68      'okayA' (2-element array of highp float)

+0:68    move second child to first child (temp 2-element array of highp float)

+0:68      'okayA' (global 2-element array of highp float)

 0:68      Constant:

 0:68        3.000000

 0:68        4.000000

-0:71  Function Definition: newVFun( (void)

+0:71  Function Definition: newVFun( (global void)

 0:71    Function Parameters: 

 0:73    Sequence

-0:73      move second child to first child (highp 3-component vector of float)

+0:73      move second child to first child (temp highp 3-component vector of float)

 0:73        'newV' (smooth out highp 3-component vector of float)

 0:73        'v3' (in highp 3-component vector of float)

-0:118  Function Definition: foo23( (void)

+0:118  Function Definition: foo23( (global void)

 0:118    Function Parameters: 

 0:120    Sequence

 0:120      Sequence

-0:120        move second child to first child (highp 2-component vector of int)

-0:120          'x1' (highp 2-component vector of int)

-0:120          Function Call: textureSize(s21;i1; (highp 2-component vector of int)

+0:120        move second child to first child (temp highp 2-component vector of int)

+0:120          'x1' (temp highp 2-component vector of int)

+0:120          Function Call: textureSize(s21;i1; (temp highp 2-component vector of int)

 0:120            's2D' (uniform lowp sampler2D)

 0:120            Constant:

 0:120              2 (const int)

 0:121      Constant:

 0:121        0.000000

 0:122      Sequence

-0:122        move second child to first child (highp 3-component vector of int)

-0:122          'x3' (highp 3-component vector of int)

-0:122          Function Call: textureSize(sAS21;i1; (highp 3-component vector of int)

+0:122        move second child to first child (temp highp 3-component vector of int)

+0:122          'x3' (temp highp 3-component vector of int)

+0:122          Function Call: textureSize(sAS21;i1; (temp highp 3-component vector of int)

 0:122            's2DAS' (uniform lowp sampler2DArrayShadow)

 0:122            Constant:

 0:122              -1 (const int)

 0:123      Constant:

 0:123        0.000000

 0:124      Sequence

-0:124        move second child to first child (highp 4-component vector of float)

-0:124          'x4' (highp 4-component vector of float)

-0:124          Function Call: texture(s21;vf2; (highp 4-component vector of float)

+0:124        move second child to first child (temp highp 4-component vector of float)

+0:124          'x4' (temp highp 4-component vector of float)

+0:124          Function Call: texture(s21;vf2; (global highp 4-component vector of float)

 0:124            's2D' (uniform lowp sampler2D)

 0:124            'c2D' (in highp 2-component vector of float)

 0:125      Constant:

 0:125        0.000000

 0:126      Sequence

-0:126        move second child to first child (highp 4-component vector of float)

-0:126          'x5' (highp 4-component vector of float)

-0:126          Function Call: textureProjOffset(s31;vf4;vi3; (highp 4-component vector of float)

+0:126        move second child to first child (temp highp 4-component vector of float)

+0:126          'x5' (temp highp 4-component vector of float)

+0:126          Function Call: textureProjOffset(s31;vf4;vi3; (global highp 4-component vector of float)

 0:126            's3D' (uniform lowp sampler3D)

 0:126            Constant:

 0:126              0.200000

@@ -211,9 +211,9 @@
 0:127      Constant:

 0:127        0.000000

 0:128      Sequence

-0:128        move second child to first child (highp float)

-0:128          'x6' (highp float)

-0:128          Function Call: textureProjGradOffset(sS21;vf4;vf2;vf2;vi2; (highp float)

+0:128        move second child to first child (temp highp float)

+0:128          'x6' (temp highp float)

+0:128          Function Call: textureProjGradOffset(sS21;vf4;vf2;vf2;vi2; (global highp float)

 0:128            's2DS' (uniform lowp sampler2DShadow)

 0:128            'invIn' (invariant in highp 4-component vector of float)

 0:128            Constant:

@@ -225,35 +225,35 @@
 0:128            Constant:

 0:128              1 (const int)

 0:128              1 (const int)

-0:137  Function Definition: foo2349( (void)

+0:137  Function Definition: foo2349( (global void)

 0:137    Function Parameters: 

 0:139    Sequence

 0:139      Sequence

-0:139        move second child to first child (3-element array of highp float)

-0:139          'x' (3-element array of highp float)

+0:139        move second child to first child (temp 3-element array of highp float)

+0:139          'x' (temp 3-element array of highp float)

 0:139          Constant:

 0:139            1.000000

 0:139            2.000000

 0:139            3.000000

 0:140      Sequence

-0:140        move second child to first child (3-element array of highp float)

-0:140          'y' (3-element array of highp float)

-0:140          'x' (3-element array of highp float)

+0:140        move second child to first child (temp 3-element array of highp float)

+0:140          'y' (temp 3-element array of highp float)

+0:140          'x' (temp 3-element array of highp float)

 0:141      Sequence

-0:141        move second child to first child (3-element array of highp float)

-0:141          'z' (3-element array of highp float)

-0:141          'x' (3-element array of highp float)

-0:143      move second child to first child (3-element array of highp float)

-0:143        'w' (3-element array of highp float)

-0:143        'y' (3-element array of highp float)

-0:155  Function Definition: gggf(f1; (highp int)

+0:141        move second child to first child (temp 3-element array of highp float)

+0:141          'z' (temp 3-element array of highp float)

+0:141          'x' (temp 3-element array of highp float)

+0:143      move second child to first child (temp 3-element array of highp float)

+0:143        'w' (temp 3-element array of highp float)

+0:143        'y' (temp 3-element array of highp float)

+0:155  Function Definition: gggf(f1; (global highp int)

 0:155    Function Parameters: 

 0:155      'f' (in highp float)

 0:155    Sequence

 0:155      Branch: Return with expression

 0:155        Constant:

 0:155          2 (const int)

-0:158  Function Definition: agggf(f1; (highp int)

+0:158  Function Definition: agggf(f1; (global highp int)

 0:158    Function Parameters: 

 0:158      'f' (in highp float)

 0:158    Sequence

@@ -274,15 +274,15 @@
 0:?     'rep' (smooth flat out highp 4-component vector of float)

 0:?     'rep2' (centroid smooth sample out highp 4-component vector of float)

 0:?     'rep3' (in highp 4-component vector of float)

-0:?     's' (smooth out structure{highp 3-component vector of float c, highp float f})

-0:?     'badsize' (implicitly-sized array of highp float)

-0:?     'badsize2' (implicitly-sized array of highp float)

+0:?     's' (smooth out structure{global highp 3-component vector of float c, global highp float f})

+0:?     'badsize' (global implicitly-sized array of highp float)

+0:?     'badsize2' (global implicitly-sized array of highp float)

 0:?     'ubInst' (layout(column_major shared ) uniform implicitly-sized array of block{layout(column_major shared ) uniform implicitly-sized array of highp int a})

-0:?     'okayA' (2-element array of highp float)

+0:?     'okayA' (global 2-element array of highp float)

 0:?     'newV' (smooth out highp 3-component vector of float)

 0:?     'invIn' (in highp 4-component vector of float)

-0:?     's2' (smooth out structure{highp 3-component vector of float c, highp float f})

-0:?     's3' (invariant smooth out structure{highp 3-component vector of float c, highp float f})

+0:?     's2' (smooth out structure{global highp 3-component vector of float c, global highp float f})

+0:?     's3' (invariant smooth out structure{global highp 3-component vector of float c, global highp float f})

 0:?     'a' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform highp float f})

 0:?     'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform bool b23})

 0:?     's2D' (uniform lowp sampler2D)

@@ -290,9 +290,9 @@
 0:?     's2DS' (uniform lowp sampler2DShadow)

 0:?     's2DAS' (uniform lowp sampler2DArrayShadow)

 0:?     'c2D' (in highp 2-component vector of float)

-0:?     'ssss' (smooth out structure{highp float f})

+0:?     'ssss' (smooth out structure{global highp float f})

 0:?     'Binst' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform highp int a})

-0:?     'Bfoo' (highp int)

+0:?     'Bfoo' (global highp int)

 0:?     'gl_VertexID' (gl_VertexId highp int)

 0:?     'gl_InstanceID' (gl_InstanceId highp int)

 

@@ -302,160 +302,160 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:27  Function Definition: main( (void)

+0:27  Function Definition: main( (global void)

 0:27    Function Parameters: 

 0:29    Sequence

 0:29      Sequence

-0:29        move second child to first child (highp int)

-0:29          'id' (highp int)

-0:29          add (highp int)

+0:29        move second child to first child (temp highp int)

+0:29          'id' (temp highp int)

+0:29          add (temp highp int)

 0:29            'gl_VertexID' (gl_VertexId highp int)

 0:29            'gl_InstanceID' (gl_InstanceId highp int)

 0:31      Sequence

-0:31        move second child to first child (highp int)

-0:31          'c0' (highp int)

+0:31        move second child to first child (temp highp int)

+0:31          'c0' (temp highp int)

 0:31          Constant:

 0:31            64 (const int)

 0:32      Sequence

-0:32        move second child to first child (highp int)

-0:32          'c1' (highp int)

+0:32        move second child to first child (temp highp int)

+0:32          'c1' (temp highp int)

 0:32          Constant:

 0:32            128 (const int)

 0:33      Sequence

-0:33        move second child to first child (highp int)

-0:33          'c2' (highp int)

+0:33        move second child to first child (temp highp int)

+0:33          'c2' (temp highp int)

 0:33          Constant:

 0:33            16 (const int)

 0:34      Sequence

-0:34        move second child to first child (highp int)

-0:34          'c3' (highp int)

+0:34        move second child to first child (temp highp int)

+0:34          'c3' (temp highp int)

 0:34          Constant:

 0:34            15 (const int)

 0:35      Sequence

-0:35        move second child to first child (highp int)

-0:35          'c4' (highp int)

+0:35        move second child to first child (temp highp int)

+0:35          'c4' (temp highp int)

 0:35          Constant:

 0:35            32 (const int)

 0:36      Sequence

-0:36        move second child to first child (highp int)

-0:36          'c5' (highp int)

+0:36        move second child to first child (temp highp int)

+0:36          'c5' (temp highp int)

 0:36          Constant:

 0:36            80 (const int)

 0:37      Sequence

-0:37        move second child to first child (highp int)

-0:37          'c6' (highp int)

+0:37        move second child to first child (temp highp int)

+0:37          'c6' (temp highp int)

 0:37          Constant:

 0:37            32 (const int)

 0:38      Sequence

-0:38        move second child to first child (highp int)

-0:38          'c7' (highp int)

+0:38        move second child to first child (temp highp int)

+0:38          'c7' (temp highp int)

 0:38          Constant:

 0:38            16 (const int)

 0:39      Sequence

-0:39        move second child to first child (highp int)

-0:39          'c8' (highp int)

+0:39        move second child to first child (temp highp int)

+0:39          'c8' (temp highp int)

 0:39          Constant:

 0:39            32 (const int)

 0:40      Sequence

-0:40        move second child to first child (highp int)

-0:40          'c9' (highp int)

+0:40        move second child to first child (temp highp int)

+0:40          'c9' (temp highp int)

 0:40          Constant:

 0:40            -8 (const int)

 0:41      Sequence

-0:41        move second child to first child (highp int)

-0:41          'c10' (highp int)

+0:41        move second child to first child (temp highp int)

+0:41          'c10' (temp highp int)

 0:41          Constant:

 0:41            7 (const int)

 0:43      Sequence

-0:43        move second child to first child (highp 3X4 matrix of float)

-0:43          'tm' (highp 3X4 matrix of float)

-0:43          transpose (highp 3X4 matrix of float)

+0:43        move second child to first child (temp highp 3X4 matrix of float)

+0:43          'tm' (temp highp 3X4 matrix of float)

+0:43          transpose (global highp 3X4 matrix of float)

 0:43            'm43' (uniform highp 4X3 matrix of float)

 0:44      Sequence

-0:44        move second child to first child (highp float)

-0:44          'dm' (highp float)

-0:44          determinant (highp float)

+0:44        move second child to first child (temp highp float)

+0:44          'dm' (temp highp float)

+0:44          determinant (global highp float)

 0:44            'm44' (uniform highp 4X4 matrix of float)

 0:45      Sequence

-0:45        move second child to first child (highp 3X3 matrix of float)

-0:45          'im' (highp 3X3 matrix of float)

-0:45          inverse (highp 3X3 matrix of float)

+0:45        move second child to first child (temp highp 3X3 matrix of float)

+0:45          'im' (temp highp 3X3 matrix of float)

+0:45          inverse (global highp 3X3 matrix of float)

 0:45            'm33' (uniform highp 3X3 matrix of float)

 0:47      Sequence

-0:47        move second child to first child (highp 3X2 matrix of float)

-0:47          'op' (highp 3X2 matrix of float)

-0:47          outer product (highp 3X2 matrix of float)

+0:47        move second child to first child (temp highp 3X2 matrix of float)

+0:47          'op' (temp highp 3X2 matrix of float)

+0:47          outer product (global highp 3X2 matrix of float)

 0:47            'v2' (smooth out highp 2-component vector of float)

 0:47            'v3' (in highp 3-component vector of float)

-0:49      move second child to first child (highp 4-component vector of float)

+0:49      move second child to first child (temp highp 4-component vector of float)

 0:49        'gl_Position' (gl_Position highp 4-component vector of float)

-0:49        direct index (highp 4-component vector of float)

+0:49        direct index (temp highp 4-component vector of float)

 0:49          'm44' (uniform highp 4X4 matrix of float)

 0:49          Constant:

 0:49            2 (const int)

-0:50      move second child to first child (highp float)

+0:50      move second child to first child (temp highp float)

 0:50        'gl_PointSize' (gl_PointSize highp float)

-0:50        direct index (highp float)

+0:50        direct index (temp highp float)

 0:50          'v2' (smooth out highp 2-component vector of float)

 0:50          Constant:

 0:50            1 (const int)

-0:52      move second child to first child (highp 3-component vector of float)

-0:52        c: direct index for structure (highp 3-component vector of float)

-0:52          's' (smooth out structure{highp 3-component vector of float c, highp float f})

+0:52      move second child to first child (temp highp 3-component vector of float)

+0:52        c: direct index for structure (global highp 3-component vector of float)

+0:52          's' (smooth out structure{global highp 3-component vector of float c, global highp float f})

 0:52          Constant:

 0:52            0 (const int)

 0:52        'v3' (in highp 3-component vector of float)

-0:53      move second child to first child (highp float)

-0:53        f: direct index for structure (highp float)

-0:53          's' (smooth out structure{highp 3-component vector of float c, highp float f})

+0:53      move second child to first child (temp highp float)

+0:53        f: direct index for structure (global highp float)

+0:53          's' (smooth out structure{global highp 3-component vector of float c, global highp float f})

 0:53          Constant:

 0:53            1 (const int)

-0:53        'dm' (highp float)

+0:53        'dm' (temp highp float)

 0:68  Sequence

-0:68    move second child to first child (2-element array of highp float)

-0:68      'okayA' (2-element array of highp float)

+0:68    move second child to first child (temp 2-element array of highp float)

+0:68      'okayA' (global 2-element array of highp float)

 0:68      Constant:

 0:68        3.000000

 0:68        4.000000

-0:71  Function Definition: newVFun( (void)

+0:71  Function Definition: newVFun( (global void)

 0:71    Function Parameters: 

 0:73    Sequence

-0:73      move second child to first child (highp 3-component vector of float)

+0:73      move second child to first child (temp highp 3-component vector of float)

 0:73        'newV' (smooth out highp 3-component vector of float)

 0:73        'v3' (in highp 3-component vector of float)

-0:118  Function Definition: foo23( (void)

+0:118  Function Definition: foo23( (global void)

 0:118    Function Parameters: 

 0:120    Sequence

 0:120      Sequence

-0:120        move second child to first child (highp 2-component vector of int)

-0:120          'x1' (highp 2-component vector of int)

-0:120          Function Call: textureSize(s21;i1; (highp 2-component vector of int)

+0:120        move second child to first child (temp highp 2-component vector of int)

+0:120          'x1' (temp highp 2-component vector of int)

+0:120          Function Call: textureSize(s21;i1; (temp highp 2-component vector of int)

 0:120            's2D' (uniform lowp sampler2D)

 0:120            Constant:

 0:120              2 (const int)

 0:121      Constant:

 0:121        0.000000

 0:122      Sequence

-0:122        move second child to first child (highp 3-component vector of int)

-0:122          'x3' (highp 3-component vector of int)

-0:122          Function Call: textureSize(sAS21;i1; (highp 3-component vector of int)

+0:122        move second child to first child (temp highp 3-component vector of int)

+0:122          'x3' (temp highp 3-component vector of int)

+0:122          Function Call: textureSize(sAS21;i1; (temp highp 3-component vector of int)

 0:122            's2DAS' (uniform lowp sampler2DArrayShadow)

 0:122            Constant:

 0:122              -1 (const int)

 0:123      Constant:

 0:123        0.000000

 0:124      Sequence

-0:124        move second child to first child (highp 4-component vector of float)

-0:124          'x4' (highp 4-component vector of float)

-0:124          Function Call: texture(s21;vf2; (highp 4-component vector of float)

+0:124        move second child to first child (temp highp 4-component vector of float)

+0:124          'x4' (temp highp 4-component vector of float)

+0:124          Function Call: texture(s21;vf2; (global highp 4-component vector of float)

 0:124            's2D' (uniform lowp sampler2D)

 0:124            'c2D' (in highp 2-component vector of float)

 0:125      Constant:

 0:125        0.000000

 0:126      Sequence

-0:126        move second child to first child (highp 4-component vector of float)

-0:126          'x5' (highp 4-component vector of float)

-0:126          Function Call: textureProjOffset(s31;vf4;vi3; (highp 4-component vector of float)

+0:126        move second child to first child (temp highp 4-component vector of float)

+0:126          'x5' (temp highp 4-component vector of float)

+0:126          Function Call: textureProjOffset(s31;vf4;vi3; (global highp 4-component vector of float)

 0:126            's3D' (uniform lowp sampler3D)

 0:126            Constant:

 0:126              0.200000

@@ -469,9 +469,9 @@
 0:127      Constant:

 0:127        0.000000

 0:128      Sequence

-0:128        move second child to first child (highp float)

-0:128          'x6' (highp float)

-0:128          Function Call: textureProjGradOffset(sS21;vf4;vf2;vf2;vi2; (highp float)

+0:128        move second child to first child (temp highp float)

+0:128          'x6' (temp highp float)

+0:128          Function Call: textureProjGradOffset(sS21;vf4;vf2;vf2;vi2; (global highp float)

 0:128            's2DS' (uniform lowp sampler2DShadow)

 0:128            'invIn' (invariant in highp 4-component vector of float)

 0:128            Constant:

@@ -483,35 +483,35 @@
 0:128            Constant:

 0:128              1 (const int)

 0:128              1 (const int)

-0:137  Function Definition: foo2349( (void)

+0:137  Function Definition: foo2349( (global void)

 0:137    Function Parameters: 

 0:139    Sequence

 0:139      Sequence

-0:139        move second child to first child (3-element array of highp float)

-0:139          'x' (3-element array of highp float)

+0:139        move second child to first child (temp 3-element array of highp float)

+0:139          'x' (temp 3-element array of highp float)

 0:139          Constant:

 0:139            1.000000

 0:139            2.000000

 0:139            3.000000

 0:140      Sequence

-0:140        move second child to first child (3-element array of highp float)

-0:140          'y' (3-element array of highp float)

-0:140          'x' (3-element array of highp float)

+0:140        move second child to first child (temp 3-element array of highp float)

+0:140          'y' (temp 3-element array of highp float)

+0:140          'x' (temp 3-element array of highp float)

 0:141      Sequence

-0:141        move second child to first child (3-element array of highp float)

-0:141          'z' (3-element array of highp float)

-0:141          'x' (3-element array of highp float)

-0:143      move second child to first child (3-element array of highp float)

-0:143        'w' (3-element array of highp float)

-0:143        'y' (3-element array of highp float)

-0:155  Function Definition: gggf(f1; (highp int)

+0:141        move second child to first child (temp 3-element array of highp float)

+0:141          'z' (temp 3-element array of highp float)

+0:141          'x' (temp 3-element array of highp float)

+0:143      move second child to first child (temp 3-element array of highp float)

+0:143        'w' (temp 3-element array of highp float)

+0:143        'y' (temp 3-element array of highp float)

+0:155  Function Definition: gggf(f1; (global highp int)

 0:155    Function Parameters: 

 0:155      'f' (in highp float)

 0:155    Sequence

 0:155      Branch: Return with expression

 0:155        Constant:

 0:155          2 (const int)

-0:158  Function Definition: agggf(f1; (highp int)

+0:158  Function Definition: agggf(f1; (global highp int)

 0:158    Function Parameters: 

 0:158      'f' (in highp float)

 0:158    Sequence

@@ -532,15 +532,15 @@
 0:?     'rep' (smooth flat out highp 4-component vector of float)

 0:?     'rep2' (centroid smooth sample out highp 4-component vector of float)

 0:?     'rep3' (in highp 4-component vector of float)

-0:?     's' (smooth out structure{highp 3-component vector of float c, highp float f})

-0:?     'badsize' (1-element array of highp float)

-0:?     'badsize2' (1-element array of highp float)

+0:?     's' (smooth out structure{global highp 3-component vector of float c, global highp float f})

+0:?     'badsize' (global 1-element array of highp float)

+0:?     'badsize2' (global 1-element array of highp float)

 0:?     'ubInst' (layout(column_major shared ) uniform 1-element array of block{layout(column_major shared ) uniform 1-element array of highp int a})

-0:?     'okayA' (2-element array of highp float)

+0:?     'okayA' (global 2-element array of highp float)

 0:?     'newV' (smooth out highp 3-component vector of float)

 0:?     'invIn' (in highp 4-component vector of float)

-0:?     's2' (smooth out structure{highp 3-component vector of float c, highp float f})

-0:?     's3' (invariant smooth out structure{highp 3-component vector of float c, highp float f})

+0:?     's2' (smooth out structure{global highp 3-component vector of float c, global highp float f})

+0:?     's3' (invariant smooth out structure{global highp 3-component vector of float c, global highp float f})

 0:?     'a' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform highp float f})

 0:?     'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform bool b23})

 0:?     's2D' (uniform lowp sampler2D)

@@ -548,9 +548,9 @@
 0:?     's2DS' (uniform lowp sampler2DShadow)

 0:?     's2DAS' (uniform lowp sampler2DArrayShadow)

 0:?     'c2D' (in highp 2-component vector of float)

-0:?     'ssss' (smooth out structure{highp float f})

+0:?     'ssss' (smooth out structure{global highp float f})

 0:?     'Binst' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform highp int a})

-0:?     'Bfoo' (highp int)

+0:?     'Bfoo' (global highp int)

 0:?     'gl_VertexID' (gl_VertexId highp int)

 0:?     'gl_InstanceID' (gl_InstanceId highp int)

 

diff --git a/Test/baseResults/300BuiltIns.frag.out b/Test/baseResults/300BuiltIns.frag.out
index a165c6a..9352667 100644
--- a/Test/baseResults/300BuiltIns.frag.out
+++ b/Test/baseResults/300BuiltIns.frag.out
@@ -6,206 +6,206 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:26  Function Definition: main( (void)

+0:26  Function Definition: main( (global void)

 0:26    Function Parameters: 

 0:29    Sequence

 0:29      Sequence

-0:29        move second child to first child (mediump 3-component vector of float)

-0:29          'v' (mediump 3-component vector of float)

-0:29          mix (mediump 3-component vector of float)

-0:29            'x' (mediump 3-component vector of float)

-0:29            'y' (mediump 3-component vector of float)

-0:29            'bv' (3-component vector of bool)

+0:29        move second child to first child (temp mediump 3-component vector of float)

+0:29          'v' (temp mediump 3-component vector of float)

+0:29          mix (global mediump 3-component vector of float)

+0:29            'x' (global mediump 3-component vector of float)

+0:29            'y' (global mediump 3-component vector of float)

+0:29            'bv' (global 3-component vector of bool)

 0:30      Sequence

-0:30        move second child to first child (mediump 4-component vector of int)

-0:30          'iv10' (mediump 4-component vector of int)

-0:30          Absolute value (mediump 4-component vector of int)

-0:30            'iv4a' (mediump 4-component vector of int)

+0:30        move second child to first child (temp mediump 4-component vector of int)

+0:30          'iv10' (temp mediump 4-component vector of int)

+0:30          Absolute value (global mediump 4-component vector of int)

+0:30            'iv4a' (global mediump 4-component vector of int)

 0:31      Sequence

-0:31        move second child to first child (mediump 4-component vector of int)

-0:31          'iv11' (mediump 4-component vector of int)

-0:31          Sign (mediump 4-component vector of int)

-0:31            'iv4a' (mediump 4-component vector of int)

+0:31        move second child to first child (temp mediump 4-component vector of int)

+0:31          'iv11' (temp mediump 4-component vector of int)

+0:31          Sign (global mediump 4-component vector of int)

+0:31            'iv4a' (global mediump 4-component vector of int)

 0:32      Sequence

-0:32        move second child to first child (mediump 4-component vector of int)

-0:32          'iv12' (mediump 4-component vector of int)

-0:32          min (mediump 4-component vector of int)

-0:32            'iv4a' (mediump 4-component vector of int)

-0:32            'iv4b' (mediump 4-component vector of int)

+0:32        move second child to first child (temp mediump 4-component vector of int)

+0:32          'iv12' (temp mediump 4-component vector of int)

+0:32          min (global mediump 4-component vector of int)

+0:32            'iv4a' (global mediump 4-component vector of int)

+0:32            'iv4b' (global mediump 4-component vector of int)

 0:33      Sequence

-0:33        move second child to first child (mediump 4-component vector of int)

-0:33          'iv13' (mediump 4-component vector of int)

-0:33          min (mediump 4-component vector of int)

-0:33            'iv4a' (mediump 4-component vector of int)

-0:33            'imin' (mediump int)

+0:33        move second child to first child (temp mediump 4-component vector of int)

+0:33          'iv13' (temp mediump 4-component vector of int)

+0:33          min (global mediump 4-component vector of int)

+0:33            'iv4a' (global mediump 4-component vector of int)

+0:33            'imin' (global mediump int)

 0:34      Sequence

-0:34        move second child to first child (mediump 2-component vector of uint)

-0:34          'u' (mediump 2-component vector of uint)

-0:34          min (mediump 2-component vector of uint)

-0:34            'uv2x' (mediump 2-component vector of uint)

-0:34            'uv2y' (mediump 2-component vector of uint)

+0:34        move second child to first child (temp mediump 2-component vector of uint)

+0:34          'u' (temp mediump 2-component vector of uint)

+0:34          min (global mediump 2-component vector of uint)

+0:34            'uv2x' (global mediump 2-component vector of uint)

+0:34            'uv2y' (global mediump 2-component vector of uint)

 0:35      Sequence

-0:35        move second child to first child (mediump 4-component vector of uint)

-0:35          'uv' (mediump 4-component vector of uint)

-0:35          min (mediump 4-component vector of uint)

-0:35            'uv4y' (mediump 4-component vector of uint)

-0:35            'uy' (mediump uint)

+0:35        move second child to first child (temp mediump 4-component vector of uint)

+0:35          'uv' (temp mediump 4-component vector of uint)

+0:35          min (global mediump 4-component vector of uint)

+0:35            'uv4y' (global mediump 4-component vector of uint)

+0:35            'uy' (global mediump uint)

 0:36      Sequence

-0:36        move second child to first child (mediump 3-component vector of int)

-0:36          'iv14' (mediump 3-component vector of int)

-0:36          max (mediump 3-component vector of int)

-0:36            'iv3a' (mediump 3-component vector of int)

-0:36            'iv3b' (mediump 3-component vector of int)

+0:36        move second child to first child (temp mediump 3-component vector of int)

+0:36          'iv14' (temp mediump 3-component vector of int)

+0:36          max (global mediump 3-component vector of int)

+0:36            'iv3a' (global mediump 3-component vector of int)

+0:36            'iv3b' (global mediump 3-component vector of int)

 0:37      Sequence

-0:37        move second child to first child (mediump 4-component vector of int)

-0:37          'iv15' (mediump 4-component vector of int)

-0:37          max (mediump 4-component vector of int)

-0:37            'iv4a' (mediump 4-component vector of int)

-0:37            'imax' (mediump int)

+0:37        move second child to first child (temp mediump 4-component vector of int)

+0:37          'iv15' (temp mediump 4-component vector of int)

+0:37          max (global mediump 4-component vector of int)

+0:37            'iv4a' (global mediump 4-component vector of int)

+0:37            'imax' (global mediump int)

 0:38      Sequence

-0:38        move second child to first child (mediump 2-component vector of uint)

-0:38          'u10' (mediump 2-component vector of uint)

-0:38          max (mediump 2-component vector of uint)

-0:38            'uv2x' (mediump 2-component vector of uint)

-0:38            'uv2y' (mediump 2-component vector of uint)

+0:38        move second child to first child (temp mediump 2-component vector of uint)

+0:38          'u10' (temp mediump 2-component vector of uint)

+0:38          max (global mediump 2-component vector of uint)

+0:38            'uv2x' (global mediump 2-component vector of uint)

+0:38            'uv2y' (global mediump 2-component vector of uint)

 0:39      Sequence

-0:39        move second child to first child (mediump 2-component vector of uint)

-0:39          'u11' (mediump 2-component vector of uint)

-0:39          max (mediump 2-component vector of uint)

-0:39            'uv2x' (mediump 2-component vector of uint)

-0:39            'uy' (mediump uint)

+0:39        move second child to first child (temp mediump 2-component vector of uint)

+0:39          'u11' (temp mediump 2-component vector of uint)

+0:39          max (global mediump 2-component vector of uint)

+0:39            'uv2x' (global mediump 2-component vector of uint)

+0:39            'uy' (global mediump uint)

 0:40      Sequence

-0:40        move second child to first child (mediump 4-component vector of int)

-0:40          'iv16' (mediump 4-component vector of int)

-0:40          clamp (mediump 4-component vector of int)

-0:40            'iv4a' (mediump 4-component vector of int)

-0:40            'iv4a' (mediump 4-component vector of int)

-0:40            'iv4b' (mediump 4-component vector of int)

+0:40        move second child to first child (temp mediump 4-component vector of int)

+0:40          'iv16' (temp mediump 4-component vector of int)

+0:40          clamp (global mediump 4-component vector of int)

+0:40            'iv4a' (global mediump 4-component vector of int)

+0:40            'iv4a' (global mediump 4-component vector of int)

+0:40            'iv4b' (global mediump 4-component vector of int)

 0:41      Sequence

-0:41        move second child to first child (mediump 4-component vector of int)

-0:41          'iv17' (mediump 4-component vector of int)

-0:41          clamp (mediump 4-component vector of int)

-0:41            'iv4a' (mediump 4-component vector of int)

-0:41            'imin' (mediump int)

-0:41            'imax' (mediump int)

+0:41        move second child to first child (temp mediump 4-component vector of int)

+0:41          'iv17' (temp mediump 4-component vector of int)

+0:41          clamp (global mediump 4-component vector of int)

+0:41            'iv4a' (global mediump 4-component vector of int)

+0:41            'imin' (global mediump int)

+0:41            'imax' (global mediump int)

 0:42      Sequence

-0:42        move second child to first child (mediump 2-component vector of uint)

-0:42          'u12' (mediump 2-component vector of uint)

-0:42          clamp (mediump 2-component vector of uint)

-0:42            'uv2x' (mediump 2-component vector of uint)

-0:42            'uv2y' (mediump 2-component vector of uint)

-0:42            'uv2c' (mediump 2-component vector of uint)

+0:42        move second child to first child (temp mediump 2-component vector of uint)

+0:42          'u12' (temp mediump 2-component vector of uint)

+0:42          clamp (global mediump 2-component vector of uint)

+0:42            'uv2x' (global mediump 2-component vector of uint)

+0:42            'uv2y' (global mediump 2-component vector of uint)

+0:42            'uv2c' (global mediump 2-component vector of uint)

 0:43      Sequence

-0:43        move second child to first child (mediump 4-component vector of uint)

-0:43          'uv10' (mediump 4-component vector of uint)

-0:43          clamp (mediump 4-component vector of uint)

-0:43            'uv4y' (mediump 4-component vector of uint)

-0:43            'umin' (mediump uint)

-0:43            'umax' (mediump uint)

+0:43        move second child to first child (temp mediump 4-component vector of uint)

+0:43          'uv10' (temp mediump 4-component vector of uint)

+0:43          clamp (global mediump 4-component vector of uint)

+0:43            'uv4y' (global mediump 4-component vector of uint)

+0:43            'umin' (global mediump uint)

+0:43            'umax' (global mediump uint)

 0:47      Sequence

-0:47        move second child to first child (mediump 3-component vector of float)

-0:47          'v11' (mediump 3-component vector of float)

-0:47          modf (mediump 3-component vector of float)

-0:47            'x' (mediump 3-component vector of float)

-0:47            'modfOut' (mediump 3-component vector of float)

+0:47        move second child to first child (temp mediump 3-component vector of float)

+0:47          'v11' (temp mediump 3-component vector of float)

+0:47          modf (global mediump 3-component vector of float)

+0:47            'x' (global mediump 3-component vector of float)

+0:47            'modfOut' (temp mediump 3-component vector of float)

 0:49      Sequence

-0:49        move second child to first child (mediump float)

-0:49          't' (mediump float)

-0:49          trunc (mediump float)

-0:49            'f' (mediump float)

+0:49        move second child to first child (temp mediump float)

+0:49          't' (temp mediump float)

+0:49          trunc (global mediump float)

+0:49            'f' (global mediump float)

 0:50      Sequence

-0:50        move second child to first child (mediump 2-component vector of float)

-0:50          'v12' (mediump 2-component vector of float)

-0:50          round (mediump 2-component vector of float)

-0:50            'v2a' (mediump 2-component vector of float)

+0:50        move second child to first child (temp mediump 2-component vector of float)

+0:50          'v12' (temp mediump 2-component vector of float)

+0:50          round (global mediump 2-component vector of float)

+0:50            'v2a' (global mediump 2-component vector of float)

 0:51      Sequence

-0:51        move second child to first child (mediump 2-component vector of float)

-0:51          'v13' (mediump 2-component vector of float)

-0:51          roundEven (mediump 2-component vector of float)

-0:51            'v2a' (mediump 2-component vector of float)

+0:51        move second child to first child (temp mediump 2-component vector of float)

+0:51          'v13' (temp mediump 2-component vector of float)

+0:51          roundEven (global mediump 2-component vector of float)

+0:51            'v2a' (global mediump 2-component vector of float)

 0:52      Sequence

-0:52        move second child to first child (2-component vector of bool)

-0:52          'b10' (2-component vector of bool)

-0:52          isnan (2-component vector of bool)

-0:52            'v2a' (mediump 2-component vector of float)

+0:52        move second child to first child (temp 2-component vector of bool)

+0:52          'b10' (temp 2-component vector of bool)

+0:52          isnan (global 2-component vector of bool)

+0:52            'v2a' (global mediump 2-component vector of float)

 0:53      Sequence

-0:53        move second child to first child (4-component vector of bool)

-0:53          'b11' (4-component vector of bool)

-0:53          isinf (4-component vector of bool)

-0:53            'v4' (mediump 4-component vector of float)

+0:53        move second child to first child (temp 4-component vector of bool)

+0:53          'b11' (temp 4-component vector of bool)

+0:53          isinf (global 4-component vector of bool)

+0:53            'v4' (global mediump 4-component vector of float)

 0:56      Sequence

-0:56        move second child to first child (mediump int)

-0:56          'i' (mediump int)

-0:56          floatBitsToInt (mediump int)

-0:56            'f' (mediump float)

+0:56        move second child to first child (temp mediump int)

+0:56          'i' (temp mediump int)

+0:56          floatBitsToInt (global mediump int)

+0:56            'f' (global mediump float)

 0:57      Sequence

-0:57        move second child to first child (mediump 4-component vector of uint)

-0:57          'uv11' (mediump 4-component vector of uint)

-0:57          floatBitsToUint (mediump 4-component vector of uint)

-0:57            'v4' (mediump 4-component vector of float)

+0:57        move second child to first child (temp mediump 4-component vector of uint)

+0:57          'uv11' (temp mediump 4-component vector of uint)

+0:57          floatBitsToUint (global mediump 4-component vector of uint)

+0:57            'v4' (global mediump 4-component vector of float)

 0:58      Sequence

-0:58        move second child to first child (mediump 4-component vector of float)

-0:58          'v14' (mediump 4-component vector of float)

-0:58          intBitsToFloat (mediump 4-component vector of float)

-0:58            'iv4a' (mediump 4-component vector of int)

+0:58        move second child to first child (temp mediump 4-component vector of float)

+0:58          'v14' (temp mediump 4-component vector of float)

+0:58          intBitsToFloat (global mediump 4-component vector of float)

+0:58            'iv4a' (global mediump 4-component vector of int)

 0:59      Sequence

-0:59        move second child to first child (mediump 2-component vector of float)

-0:59          'v15' (mediump 2-component vector of float)

-0:59          uintBitsToFloat (mediump 2-component vector of float)

-0:59            'uv2c' (mediump 2-component vector of uint)

+0:59        move second child to first child (temp mediump 2-component vector of float)

+0:59          'v15' (temp mediump 2-component vector of float)

+0:59          uintBitsToFloat (global mediump 2-component vector of float)

+0:59            'uv2c' (global mediump 2-component vector of uint)

 0:62      Sequence

-0:62        move second child to first child (highp uint)

-0:62          'u19' (mediump uint)

-0:62          packSnorm2x16 (highp uint)

-0:62            'v2a' (mediump 2-component vector of float)

+0:62        move second child to first child (temp highp uint)

+0:62          'u19' (temp mediump uint)

+0:62          packSnorm2x16 (temp highp uint)

+0:62            'v2a' (global mediump 2-component vector of float)

 0:63      Sequence

-0:63        move second child to first child (highp 2-component vector of float)

-0:63          'v20' (mediump 2-component vector of float)

-0:63          unpackSnorm2x16 (highp 2-component vector of float)

-0:63            'uy' (mediump uint)

+0:63        move second child to first child (temp highp 2-component vector of float)

+0:63          'v20' (temp mediump 2-component vector of float)

+0:63          unpackSnorm2x16 (temp highp 2-component vector of float)

+0:63            'uy' (global mediump uint)

 0:64      Sequence

-0:64        move second child to first child (highp uint)

-0:64          'u15' (mediump uint)

-0:64          packUnorm2x16 (highp uint)

-0:64            'v2a' (mediump 2-component vector of float)

+0:64        move second child to first child (temp highp uint)

+0:64          'u15' (temp mediump uint)

+0:64          packUnorm2x16 (temp highp uint)

+0:64            'v2a' (global mediump 2-component vector of float)

 0:65      Sequence

-0:65        move second child to first child (highp 2-component vector of float)

-0:65          'v16' (mediump 2-component vector of float)

-0:65          unpackUnorm2x16 (highp 2-component vector of float)

-0:65            'uy' (mediump uint)

+0:65        move second child to first child (temp highp 2-component vector of float)

+0:65          'v16' (temp mediump 2-component vector of float)

+0:65          unpackUnorm2x16 (temp highp 2-component vector of float)

+0:65            'uy' (global mediump uint)

 0:66      Sequence

-0:66        move second child to first child (highp uint)

-0:66          'u17' (mediump uint)

-0:66          packHalf2x16 (highp uint)

-0:66            'v2b' (mediump 2-component vector of float)

+0:66        move second child to first child (temp highp uint)

+0:66          'u17' (temp mediump uint)

+0:66          packHalf2x16 (temp highp uint)

+0:66            'v2b' (global mediump 2-component vector of float)

 0:67      Sequence

-0:67        move second child to first child (mediump 2-component vector of float)

-0:67          'v18' (mediump 2-component vector of float)

-0:67          unpackHalf2x16 (mediump 2-component vector of float)

-0:67            'uy' (mediump uint)

+0:67        move second child to first child (temp mediump 2-component vector of float)

+0:67          'v18' (temp mediump 2-component vector of float)

+0:67          unpackHalf2x16 (temp mediump 2-component vector of float)

+0:67            'uy' (global mediump uint)

 0:70      Constant:

 0:70        0.000000

 0:?   Linker Objects

-0:?     'imax' (mediump int)

-0:?     'imin' (mediump int)

-0:?     'umax' (mediump uint)

-0:?     'umin' (mediump uint)

-0:?     'x' (mediump 3-component vector of float)

-0:?     'y' (mediump 3-component vector of float)

-0:?     'bv' (3-component vector of bool)

-0:?     'uy' (mediump uint)

-0:?     'uv2c' (mediump 2-component vector of uint)

-0:?     'uv2y' (mediump 2-component vector of uint)

-0:?     'uv2x' (mediump 2-component vector of uint)

-0:?     'uv4y' (mediump 4-component vector of uint)

-0:?     'iv3a' (mediump 3-component vector of int)

-0:?     'iv3b' (mediump 3-component vector of int)

-0:?     'iv4a' (mediump 4-component vector of int)

-0:?     'iv4b' (mediump 4-component vector of int)

-0:?     'f' (mediump float)

-0:?     'v2a' (mediump 2-component vector of float)

-0:?     'v2b' (mediump 2-component vector of float)

-0:?     'v4' (mediump 4-component vector of float)

+0:?     'imax' (global mediump int)

+0:?     'imin' (global mediump int)

+0:?     'umax' (global mediump uint)

+0:?     'umin' (global mediump uint)

+0:?     'x' (global mediump 3-component vector of float)

+0:?     'y' (global mediump 3-component vector of float)

+0:?     'bv' (global 3-component vector of bool)

+0:?     'uy' (global mediump uint)

+0:?     'uv2c' (global mediump 2-component vector of uint)

+0:?     'uv2y' (global mediump 2-component vector of uint)

+0:?     'uv2x' (global mediump 2-component vector of uint)

+0:?     'uv4y' (global mediump 4-component vector of uint)

+0:?     'iv3a' (global mediump 3-component vector of int)

+0:?     'iv3b' (global mediump 3-component vector of int)

+0:?     'iv4a' (global mediump 4-component vector of int)

+0:?     'iv4b' (global mediump 4-component vector of int)

+0:?     'f' (global mediump float)

+0:?     'v2a' (global mediump 2-component vector of float)

+0:?     'v2b' (global mediump 2-component vector of float)

+0:?     'v4' (global mediump 4-component vector of float)

 

 

 Linked fragment stage:

@@ -213,204 +213,204 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:26  Function Definition: main( (void)

+0:26  Function Definition: main( (global void)

 0:26    Function Parameters: 

 0:29    Sequence

 0:29      Sequence

-0:29        move second child to first child (mediump 3-component vector of float)

-0:29          'v' (mediump 3-component vector of float)

-0:29          mix (mediump 3-component vector of float)

-0:29            'x' (mediump 3-component vector of float)

-0:29            'y' (mediump 3-component vector of float)

-0:29            'bv' (3-component vector of bool)

+0:29        move second child to first child (temp mediump 3-component vector of float)

+0:29          'v' (temp mediump 3-component vector of float)

+0:29          mix (global mediump 3-component vector of float)

+0:29            'x' (global mediump 3-component vector of float)

+0:29            'y' (global mediump 3-component vector of float)

+0:29            'bv' (global 3-component vector of bool)

 0:30      Sequence

-0:30        move second child to first child (mediump 4-component vector of int)

-0:30          'iv10' (mediump 4-component vector of int)

-0:30          Absolute value (mediump 4-component vector of int)

-0:30            'iv4a' (mediump 4-component vector of int)

+0:30        move second child to first child (temp mediump 4-component vector of int)

+0:30          'iv10' (temp mediump 4-component vector of int)

+0:30          Absolute value (global mediump 4-component vector of int)

+0:30            'iv4a' (global mediump 4-component vector of int)

 0:31      Sequence

-0:31        move second child to first child (mediump 4-component vector of int)

-0:31          'iv11' (mediump 4-component vector of int)

-0:31          Sign (mediump 4-component vector of int)

-0:31            'iv4a' (mediump 4-component vector of int)

+0:31        move second child to first child (temp mediump 4-component vector of int)

+0:31          'iv11' (temp mediump 4-component vector of int)

+0:31          Sign (global mediump 4-component vector of int)

+0:31            'iv4a' (global mediump 4-component vector of int)

 0:32      Sequence

-0:32        move second child to first child (mediump 4-component vector of int)

-0:32          'iv12' (mediump 4-component vector of int)

-0:32          min (mediump 4-component vector of int)

-0:32            'iv4a' (mediump 4-component vector of int)

-0:32            'iv4b' (mediump 4-component vector of int)

+0:32        move second child to first child (temp mediump 4-component vector of int)

+0:32          'iv12' (temp mediump 4-component vector of int)

+0:32          min (global mediump 4-component vector of int)

+0:32            'iv4a' (global mediump 4-component vector of int)

+0:32            'iv4b' (global mediump 4-component vector of int)

 0:33      Sequence

-0:33        move second child to first child (mediump 4-component vector of int)

-0:33          'iv13' (mediump 4-component vector of int)

-0:33          min (mediump 4-component vector of int)

-0:33            'iv4a' (mediump 4-component vector of int)

-0:33            'imin' (mediump int)

+0:33        move second child to first child (temp mediump 4-component vector of int)

+0:33          'iv13' (temp mediump 4-component vector of int)

+0:33          min (global mediump 4-component vector of int)

+0:33            'iv4a' (global mediump 4-component vector of int)

+0:33            'imin' (global mediump int)

 0:34      Sequence

-0:34        move second child to first child (mediump 2-component vector of uint)

-0:34          'u' (mediump 2-component vector of uint)

-0:34          min (mediump 2-component vector of uint)

-0:34            'uv2x' (mediump 2-component vector of uint)

-0:34            'uv2y' (mediump 2-component vector of uint)

+0:34        move second child to first child (temp mediump 2-component vector of uint)

+0:34          'u' (temp mediump 2-component vector of uint)

+0:34          min (global mediump 2-component vector of uint)

+0:34            'uv2x' (global mediump 2-component vector of uint)

+0:34            'uv2y' (global mediump 2-component vector of uint)

 0:35      Sequence

-0:35        move second child to first child (mediump 4-component vector of uint)

-0:35          'uv' (mediump 4-component vector of uint)

-0:35          min (mediump 4-component vector of uint)

-0:35            'uv4y' (mediump 4-component vector of uint)

-0:35            'uy' (mediump uint)

+0:35        move second child to first child (temp mediump 4-component vector of uint)

+0:35          'uv' (temp mediump 4-component vector of uint)

+0:35          min (global mediump 4-component vector of uint)

+0:35            'uv4y' (global mediump 4-component vector of uint)

+0:35            'uy' (global mediump uint)

 0:36      Sequence

-0:36        move second child to first child (mediump 3-component vector of int)

-0:36          'iv14' (mediump 3-component vector of int)

-0:36          max (mediump 3-component vector of int)

-0:36            'iv3a' (mediump 3-component vector of int)

-0:36            'iv3b' (mediump 3-component vector of int)

+0:36        move second child to first child (temp mediump 3-component vector of int)

+0:36          'iv14' (temp mediump 3-component vector of int)

+0:36          max (global mediump 3-component vector of int)

+0:36            'iv3a' (global mediump 3-component vector of int)

+0:36            'iv3b' (global mediump 3-component vector of int)

 0:37      Sequence

-0:37        move second child to first child (mediump 4-component vector of int)

-0:37          'iv15' (mediump 4-component vector of int)

-0:37          max (mediump 4-component vector of int)

-0:37            'iv4a' (mediump 4-component vector of int)

-0:37            'imax' (mediump int)

+0:37        move second child to first child (temp mediump 4-component vector of int)

+0:37          'iv15' (temp mediump 4-component vector of int)

+0:37          max (global mediump 4-component vector of int)

+0:37            'iv4a' (global mediump 4-component vector of int)

+0:37            'imax' (global mediump int)

 0:38      Sequence

-0:38        move second child to first child (mediump 2-component vector of uint)

-0:38          'u10' (mediump 2-component vector of uint)

-0:38          max (mediump 2-component vector of uint)

-0:38            'uv2x' (mediump 2-component vector of uint)

-0:38            'uv2y' (mediump 2-component vector of uint)

+0:38        move second child to first child (temp mediump 2-component vector of uint)

+0:38          'u10' (temp mediump 2-component vector of uint)

+0:38          max (global mediump 2-component vector of uint)

+0:38            'uv2x' (global mediump 2-component vector of uint)

+0:38            'uv2y' (global mediump 2-component vector of uint)

 0:39      Sequence

-0:39        move second child to first child (mediump 2-component vector of uint)

-0:39          'u11' (mediump 2-component vector of uint)

-0:39          max (mediump 2-component vector of uint)

-0:39            'uv2x' (mediump 2-component vector of uint)

-0:39            'uy' (mediump uint)

+0:39        move second child to first child (temp mediump 2-component vector of uint)

+0:39          'u11' (temp mediump 2-component vector of uint)

+0:39          max (global mediump 2-component vector of uint)

+0:39            'uv2x' (global mediump 2-component vector of uint)

+0:39            'uy' (global mediump uint)

 0:40      Sequence

-0:40        move second child to first child (mediump 4-component vector of int)

-0:40          'iv16' (mediump 4-component vector of int)

-0:40          clamp (mediump 4-component vector of int)

-0:40            'iv4a' (mediump 4-component vector of int)

-0:40            'iv4a' (mediump 4-component vector of int)

-0:40            'iv4b' (mediump 4-component vector of int)

+0:40        move second child to first child (temp mediump 4-component vector of int)

+0:40          'iv16' (temp mediump 4-component vector of int)

+0:40          clamp (global mediump 4-component vector of int)

+0:40            'iv4a' (global mediump 4-component vector of int)

+0:40            'iv4a' (global mediump 4-component vector of int)

+0:40            'iv4b' (global mediump 4-component vector of int)

 0:41      Sequence

-0:41        move second child to first child (mediump 4-component vector of int)

-0:41          'iv17' (mediump 4-component vector of int)

-0:41          clamp (mediump 4-component vector of int)

-0:41            'iv4a' (mediump 4-component vector of int)

-0:41            'imin' (mediump int)

-0:41            'imax' (mediump int)

+0:41        move second child to first child (temp mediump 4-component vector of int)

+0:41          'iv17' (temp mediump 4-component vector of int)

+0:41          clamp (global mediump 4-component vector of int)

+0:41            'iv4a' (global mediump 4-component vector of int)

+0:41            'imin' (global mediump int)

+0:41            'imax' (global mediump int)

 0:42      Sequence

-0:42        move second child to first child (mediump 2-component vector of uint)

-0:42          'u12' (mediump 2-component vector of uint)

-0:42          clamp (mediump 2-component vector of uint)

-0:42            'uv2x' (mediump 2-component vector of uint)

-0:42            'uv2y' (mediump 2-component vector of uint)

-0:42            'uv2c' (mediump 2-component vector of uint)

+0:42        move second child to first child (temp mediump 2-component vector of uint)

+0:42          'u12' (temp mediump 2-component vector of uint)

+0:42          clamp (global mediump 2-component vector of uint)

+0:42            'uv2x' (global mediump 2-component vector of uint)

+0:42            'uv2y' (global mediump 2-component vector of uint)

+0:42            'uv2c' (global mediump 2-component vector of uint)

 0:43      Sequence

-0:43        move second child to first child (mediump 4-component vector of uint)

-0:43          'uv10' (mediump 4-component vector of uint)

-0:43          clamp (mediump 4-component vector of uint)

-0:43            'uv4y' (mediump 4-component vector of uint)

-0:43            'umin' (mediump uint)

-0:43            'umax' (mediump uint)

+0:43        move second child to first child (temp mediump 4-component vector of uint)

+0:43          'uv10' (temp mediump 4-component vector of uint)

+0:43          clamp (global mediump 4-component vector of uint)

+0:43            'uv4y' (global mediump 4-component vector of uint)

+0:43            'umin' (global mediump uint)

+0:43            'umax' (global mediump uint)

 0:47      Sequence

-0:47        move second child to first child (mediump 3-component vector of float)

-0:47          'v11' (mediump 3-component vector of float)

-0:47          modf (mediump 3-component vector of float)

-0:47            'x' (mediump 3-component vector of float)

-0:47            'modfOut' (mediump 3-component vector of float)

+0:47        move second child to first child (temp mediump 3-component vector of float)

+0:47          'v11' (temp mediump 3-component vector of float)

+0:47          modf (global mediump 3-component vector of float)

+0:47            'x' (global mediump 3-component vector of float)

+0:47            'modfOut' (temp mediump 3-component vector of float)

 0:49      Sequence

-0:49        move second child to first child (mediump float)

-0:49          't' (mediump float)

-0:49          trunc (mediump float)

-0:49            'f' (mediump float)

+0:49        move second child to first child (temp mediump float)

+0:49          't' (temp mediump float)

+0:49          trunc (global mediump float)

+0:49            'f' (global mediump float)

 0:50      Sequence

-0:50        move second child to first child (mediump 2-component vector of float)

-0:50          'v12' (mediump 2-component vector of float)

-0:50          round (mediump 2-component vector of float)

-0:50            'v2a' (mediump 2-component vector of float)

+0:50        move second child to first child (temp mediump 2-component vector of float)

+0:50          'v12' (temp mediump 2-component vector of float)

+0:50          round (global mediump 2-component vector of float)

+0:50            'v2a' (global mediump 2-component vector of float)

 0:51      Sequence

-0:51        move second child to first child (mediump 2-component vector of float)

-0:51          'v13' (mediump 2-component vector of float)

-0:51          roundEven (mediump 2-component vector of float)

-0:51            'v2a' (mediump 2-component vector of float)

+0:51        move second child to first child (temp mediump 2-component vector of float)

+0:51          'v13' (temp mediump 2-component vector of float)

+0:51          roundEven (global mediump 2-component vector of float)

+0:51            'v2a' (global mediump 2-component vector of float)

 0:52      Sequence

-0:52        move second child to first child (2-component vector of bool)

-0:52          'b10' (2-component vector of bool)

-0:52          isnan (2-component vector of bool)

-0:52            'v2a' (mediump 2-component vector of float)

+0:52        move second child to first child (temp 2-component vector of bool)

+0:52          'b10' (temp 2-component vector of bool)

+0:52          isnan (global 2-component vector of bool)

+0:52            'v2a' (global mediump 2-component vector of float)

 0:53      Sequence

-0:53        move second child to first child (4-component vector of bool)

-0:53          'b11' (4-component vector of bool)

-0:53          isinf (4-component vector of bool)

-0:53            'v4' (mediump 4-component vector of float)

+0:53        move second child to first child (temp 4-component vector of bool)

+0:53          'b11' (temp 4-component vector of bool)

+0:53          isinf (global 4-component vector of bool)

+0:53            'v4' (global mediump 4-component vector of float)

 0:56      Sequence

-0:56        move second child to first child (mediump int)

-0:56          'i' (mediump int)

-0:56          floatBitsToInt (mediump int)

-0:56            'f' (mediump float)

+0:56        move second child to first child (temp mediump int)

+0:56          'i' (temp mediump int)

+0:56          floatBitsToInt (global mediump int)

+0:56            'f' (global mediump float)

 0:57      Sequence

-0:57        move second child to first child (mediump 4-component vector of uint)

-0:57          'uv11' (mediump 4-component vector of uint)

-0:57          floatBitsToUint (mediump 4-component vector of uint)

-0:57            'v4' (mediump 4-component vector of float)

+0:57        move second child to first child (temp mediump 4-component vector of uint)

+0:57          'uv11' (temp mediump 4-component vector of uint)

+0:57          floatBitsToUint (global mediump 4-component vector of uint)

+0:57            'v4' (global mediump 4-component vector of float)

 0:58      Sequence

-0:58        move second child to first child (mediump 4-component vector of float)

-0:58          'v14' (mediump 4-component vector of float)

-0:58          intBitsToFloat (mediump 4-component vector of float)

-0:58            'iv4a' (mediump 4-component vector of int)

+0:58        move second child to first child (temp mediump 4-component vector of float)

+0:58          'v14' (temp mediump 4-component vector of float)

+0:58          intBitsToFloat (global mediump 4-component vector of float)

+0:58            'iv4a' (global mediump 4-component vector of int)

 0:59      Sequence

-0:59        move second child to first child (mediump 2-component vector of float)

-0:59          'v15' (mediump 2-component vector of float)

-0:59          uintBitsToFloat (mediump 2-component vector of float)

-0:59            'uv2c' (mediump 2-component vector of uint)

+0:59        move second child to first child (temp mediump 2-component vector of float)

+0:59          'v15' (temp mediump 2-component vector of float)

+0:59          uintBitsToFloat (global mediump 2-component vector of float)

+0:59            'uv2c' (global mediump 2-component vector of uint)

 0:62      Sequence

-0:62        move second child to first child (highp uint)

-0:62          'u19' (mediump uint)

-0:62          packSnorm2x16 (highp uint)

-0:62            'v2a' (mediump 2-component vector of float)

+0:62        move second child to first child (temp highp uint)

+0:62          'u19' (temp mediump uint)

+0:62          packSnorm2x16 (temp highp uint)

+0:62            'v2a' (global mediump 2-component vector of float)

 0:63      Sequence

-0:63        move second child to first child (highp 2-component vector of float)

-0:63          'v20' (mediump 2-component vector of float)

-0:63          unpackSnorm2x16 (highp 2-component vector of float)

-0:63            'uy' (mediump uint)

+0:63        move second child to first child (temp highp 2-component vector of float)

+0:63          'v20' (temp mediump 2-component vector of float)

+0:63          unpackSnorm2x16 (temp highp 2-component vector of float)

+0:63            'uy' (global mediump uint)

 0:64      Sequence

-0:64        move second child to first child (highp uint)

-0:64          'u15' (mediump uint)

-0:64          packUnorm2x16 (highp uint)

-0:64            'v2a' (mediump 2-component vector of float)

+0:64        move second child to first child (temp highp uint)

+0:64          'u15' (temp mediump uint)

+0:64          packUnorm2x16 (temp highp uint)

+0:64            'v2a' (global mediump 2-component vector of float)

 0:65      Sequence

-0:65        move second child to first child (highp 2-component vector of float)

-0:65          'v16' (mediump 2-component vector of float)

-0:65          unpackUnorm2x16 (highp 2-component vector of float)

-0:65            'uy' (mediump uint)

+0:65        move second child to first child (temp highp 2-component vector of float)

+0:65          'v16' (temp mediump 2-component vector of float)

+0:65          unpackUnorm2x16 (temp highp 2-component vector of float)

+0:65            'uy' (global mediump uint)

 0:66      Sequence

-0:66        move second child to first child (highp uint)

-0:66          'u17' (mediump uint)

-0:66          packHalf2x16 (highp uint)

-0:66            'v2b' (mediump 2-component vector of float)

+0:66        move second child to first child (temp highp uint)

+0:66          'u17' (temp mediump uint)

+0:66          packHalf2x16 (temp highp uint)

+0:66            'v2b' (global mediump 2-component vector of float)

 0:67      Sequence

-0:67        move second child to first child (mediump 2-component vector of float)

-0:67          'v18' (mediump 2-component vector of float)

-0:67          unpackHalf2x16 (mediump 2-component vector of float)

-0:67            'uy' (mediump uint)

+0:67        move second child to first child (temp mediump 2-component vector of float)

+0:67          'v18' (temp mediump 2-component vector of float)

+0:67          unpackHalf2x16 (temp mediump 2-component vector of float)

+0:67            'uy' (global mediump uint)

 0:70      Constant:

 0:70        0.000000

 0:?   Linker Objects

-0:?     'imax' (mediump int)

-0:?     'imin' (mediump int)

-0:?     'umax' (mediump uint)

-0:?     'umin' (mediump uint)

-0:?     'x' (mediump 3-component vector of float)

-0:?     'y' (mediump 3-component vector of float)

-0:?     'bv' (3-component vector of bool)

-0:?     'uy' (mediump uint)

-0:?     'uv2c' (mediump 2-component vector of uint)

-0:?     'uv2y' (mediump 2-component vector of uint)

-0:?     'uv2x' (mediump 2-component vector of uint)

-0:?     'uv4y' (mediump 4-component vector of uint)

-0:?     'iv3a' (mediump 3-component vector of int)

-0:?     'iv3b' (mediump 3-component vector of int)

-0:?     'iv4a' (mediump 4-component vector of int)

-0:?     'iv4b' (mediump 4-component vector of int)

-0:?     'f' (mediump float)

-0:?     'v2a' (mediump 2-component vector of float)

-0:?     'v2b' (mediump 2-component vector of float)

-0:?     'v4' (mediump 4-component vector of float)

+0:?     'imax' (global mediump int)

+0:?     'imin' (global mediump int)

+0:?     'umax' (global mediump uint)

+0:?     'umin' (global mediump uint)

+0:?     'x' (global mediump 3-component vector of float)

+0:?     'y' (global mediump 3-component vector of float)

+0:?     'bv' (global 3-component vector of bool)

+0:?     'uy' (global mediump uint)

+0:?     'uv2c' (global mediump 2-component vector of uint)

+0:?     'uv2y' (global mediump 2-component vector of uint)

+0:?     'uv2x' (global mediump 2-component vector of uint)

+0:?     'uv4y' (global mediump 4-component vector of uint)

+0:?     'iv3a' (global mediump 3-component vector of int)

+0:?     'iv3b' (global mediump 3-component vector of int)

+0:?     'iv4a' (global mediump 4-component vector of int)

+0:?     'iv4b' (global mediump 4-component vector of int)

+0:?     'f' (global mediump float)

+0:?     'v2a' (global mediump 2-component vector of float)

+0:?     'v2b' (global mediump 2-component vector of float)

+0:?     'v4' (global mediump 4-component vector of float)

 

diff --git a/Test/baseResults/300block.frag.out b/Test/baseResults/300block.frag.out
index 63c7ab5..4837149 100644
--- a/Test/baseResults/300block.frag.out
+++ b/Test/baseResults/300block.frag.out
@@ -8,32 +8,32 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:42  Function Definition: main( (void)

+0:42  Function Definition: main( (global void)

 0:42    Function Parameters: 

 0:44    Sequence

-0:44      Function Call: texture(is31;vf3; (mediump 4-component vector of int)

-0:44        sampler: direct index for structure (lowp isampler3D)

-0:44          's' (uniform structure{mediump 4-component vector of float u, mediump 4-component vector of uint v, lowp isampler3D sampler, mediump 3-component vector of float w, structure{mediump int a} t})

+0:44      Function Call: texture(is31;vf3; (global mediump 4-component vector of int)

+0:44        sampler: direct index for structure (temp lowp isampler3D)

+0:44          's' (uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, temp lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t})

 0:44          Constant:

 0:44            2 (const int)

-0:44        Construct vec3 (3-component vector of float)

-0:44          Convert int to float (float)

+0:44        Construct vec3 (temp 3-component vector of float)

+0:44          Convert int to float (temp float)

 0:44            ni: direct index for structure (layout(column_major shared ) uniform mediump int)

 0:44              'inst' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

 0:44              Constant:

 0:44                1 (const int)

-0:44          Convert uint to float (float)

-0:44            direct index (mediump uint)

+0:44          Convert uint to float (temp float)

+0:44            direct index (temp mediump uint)

 0:44              bv: direct index for structure (layout(column_major shared ) uniform mediump 4-component vector of uint)

-0:44                'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint bv, layout(column_major shared ) uniform mediump 2X2 matrix of float bm2, layout(column_major shared ) uniform lowp isampler2D sampler, layout(column_major shared ) uniform structure{mediump int a} t, layout(column_major shared ) uniform structure{mediump 4-component vector of float u, mediump 4-component vector of uint v, lowp isampler3D sampler, mediump 3-component vector of float w, structure{mediump int a} t} fbs})

+0:44                'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint bv, layout(column_major shared ) uniform mediump 2X2 matrix of float bm2, layout(column_major shared ) uniform lowp isampler2D sampler, layout(column_major shared ) uniform structure{global mediump int a} t, layout(column_major shared ) uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, temp lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t} fbs})

 0:44                Constant:

 0:44                  0 (const uint)

 0:44              Constant:

 0:44                1 (const int)

-0:44          Convert uint to float (float)

-0:44            direct index (mediump uint)

+0:44          Convert uint to float (temp float)

+0:44            direct index (temp mediump uint)

 0:44              nbv: direct index for structure (layout(column_major shared ) uniform mediump 4-component vector of uint)

-0:44                direct index (layout(column_major shared ) block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

+0:44                direct index (layout(column_major shared ) temp block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

 0:44                  'insts' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

 0:44                  Constant:

 0:44                    2 (const int)

@@ -41,18 +41,18 @@
 0:44                  0 (const int)

 0:44              Constant:

 0:44                2 (const int)

-0:45      indirect index (layout(column_major shared ) block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

+0:45      indirect index (layout(column_major shared ) temp block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

 0:45        'insts' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

-0:45        direct index (mediump uint)

-0:45          v: direct index for structure (mediump 4-component vector of uint)

-0:45            's' (uniform structure{mediump 4-component vector of float u, mediump 4-component vector of uint v, lowp isampler3D sampler, mediump 3-component vector of float w, structure{mediump int a} t})

+0:45        direct index (temp mediump uint)

+0:45          v: direct index for structure (global mediump 4-component vector of uint)

+0:45            's' (uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, temp lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t})

 0:45            Constant:

 0:45              1 (const int)

 0:45          Constant:

 0:45            0 (const int)

 0:?   Linker Objects

-0:?     's' (uniform structure{mediump 4-component vector of float u, mediump 4-component vector of uint v, lowp isampler3D sampler, mediump 3-component vector of float w, structure{mediump int a} t})

-0:?     'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint bv, layout(column_major shared ) uniform mediump 2X2 matrix of float bm2, layout(column_major shared ) uniform lowp isampler2D sampler, layout(column_major shared ) uniform structure{mediump int a} t, layout(column_major shared ) uniform structure{mediump 4-component vector of float u, mediump 4-component vector of uint v, lowp isampler3D sampler, mediump 3-component vector of float w, structure{mediump int a} t} fbs})

+0:?     's' (uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, temp lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t})

+0:?     'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint bv, layout(column_major shared ) uniform mediump 2X2 matrix of float bm2, layout(column_major shared ) uniform lowp isampler2D sampler, layout(column_major shared ) uniform structure{global mediump int a} t, layout(column_major shared ) uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, temp lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t} fbs})

 0:?     'inst' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

 0:?     'insts' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

 0:?     'anon@1' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump float f, layout(column_major shared ) uniform mediump uint u})

@@ -63,32 +63,32 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:42  Function Definition: main( (void)

+0:42  Function Definition: main( (global void)

 0:42    Function Parameters: 

 0:44    Sequence

-0:44      Function Call: texture(is31;vf3; (mediump 4-component vector of int)

-0:44        sampler: direct index for structure (lowp isampler3D)

-0:44          's' (uniform structure{mediump 4-component vector of float u, mediump 4-component vector of uint v, lowp isampler3D sampler, mediump 3-component vector of float w, structure{mediump int a} t})

+0:44      Function Call: texture(is31;vf3; (global mediump 4-component vector of int)

+0:44        sampler: direct index for structure (temp lowp isampler3D)

+0:44          's' (uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, temp lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t})

 0:44          Constant:

 0:44            2 (const int)

-0:44        Construct vec3 (3-component vector of float)

-0:44          Convert int to float (float)

+0:44        Construct vec3 (temp 3-component vector of float)

+0:44          Convert int to float (temp float)

 0:44            ni: direct index for structure (layout(column_major shared ) uniform mediump int)

 0:44              'inst' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

 0:44              Constant:

 0:44                1 (const int)

-0:44          Convert uint to float (float)

-0:44            direct index (mediump uint)

+0:44          Convert uint to float (temp float)

+0:44            direct index (temp mediump uint)

 0:44              bv: direct index for structure (layout(column_major shared ) uniform mediump 4-component vector of uint)

-0:44                'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint bv, layout(column_major shared ) uniform mediump 2X2 matrix of float bm2, layout(column_major shared ) uniform lowp isampler2D sampler, layout(column_major shared ) uniform structure{mediump int a} t, layout(column_major shared ) uniform structure{mediump 4-component vector of float u, mediump 4-component vector of uint v, lowp isampler3D sampler, mediump 3-component vector of float w, structure{mediump int a} t} fbs})

+0:44                'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint bv, layout(column_major shared ) uniform mediump 2X2 matrix of float bm2, layout(column_major shared ) uniform lowp isampler2D sampler, layout(column_major shared ) uniform structure{global mediump int a} t, layout(column_major shared ) uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, temp lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t} fbs})

 0:44                Constant:

 0:44                  0 (const uint)

 0:44              Constant:

 0:44                1 (const int)

-0:44          Convert uint to float (float)

-0:44            direct index (mediump uint)

+0:44          Convert uint to float (temp float)

+0:44            direct index (temp mediump uint)

 0:44              nbv: direct index for structure (layout(column_major shared ) uniform mediump 4-component vector of uint)

-0:44                direct index (layout(column_major shared ) block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

+0:44                direct index (layout(column_major shared ) temp block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

 0:44                  'insts' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

 0:44                  Constant:

 0:44                    2 (const int)

@@ -96,18 +96,18 @@
 0:44                  0 (const int)

 0:44              Constant:

 0:44                2 (const int)

-0:45      indirect index (layout(column_major shared ) block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

+0:45      indirect index (layout(column_major shared ) temp block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

 0:45        'insts' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

-0:45        direct index (mediump uint)

-0:45          v: direct index for structure (mediump 4-component vector of uint)

-0:45            's' (uniform structure{mediump 4-component vector of float u, mediump 4-component vector of uint v, lowp isampler3D sampler, mediump 3-component vector of float w, structure{mediump int a} t})

+0:45        direct index (temp mediump uint)

+0:45          v: direct index for structure (global mediump 4-component vector of uint)

+0:45            's' (uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, temp lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t})

 0:45            Constant:

 0:45              1 (const int)

 0:45          Constant:

 0:45            0 (const int)

 0:?   Linker Objects

-0:?     's' (uniform structure{mediump 4-component vector of float u, mediump 4-component vector of uint v, lowp isampler3D sampler, mediump 3-component vector of float w, structure{mediump int a} t})

-0:?     'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint bv, layout(column_major shared ) uniform mediump 2X2 matrix of float bm2, layout(column_major shared ) uniform lowp isampler2D sampler, layout(column_major shared ) uniform structure{mediump int a} t, layout(column_major shared ) uniform structure{mediump 4-component vector of float u, mediump 4-component vector of uint v, lowp isampler3D sampler, mediump 3-component vector of float w, structure{mediump int a} t} fbs})

+0:?     's' (uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, temp lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t})

+0:?     'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint bv, layout(column_major shared ) uniform mediump 2X2 matrix of float bm2, layout(column_major shared ) uniform lowp isampler2D sampler, layout(column_major shared ) uniform structure{global mediump int a} t, layout(column_major shared ) uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, temp lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t} fbs})

 0:?     'inst' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

 0:?     'insts' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

 0:?     'anon@1' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump float f, layout(column_major shared ) uniform mediump uint u})

diff --git a/Test/baseResults/300layout.frag.out b/Test/baseResults/300layout.frag.out
index e16fb45..a44c2d7 100644
--- a/Test/baseResults/300layout.frag.out
+++ b/Test/baseResults/300layout.frag.out
@@ -11,17 +11,17 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:12    Sequence

-0:12      move second child to first child (mediump 4-component vector of float)

+0:12      move second child to first child (temp mediump 4-component vector of float)

 0:12        'c' (layout(location=1 ) out mediump 4-component vector of float)

 0:12        'color' (layout(location=2 ) smooth in mediump 4-component vector of float)

-0:13      move second child to first child (mediump 4-component vector of float)

+0:13      move second child to first child (temp mediump 4-component vector of float)

 0:13        'p' (layout(location=3 ) out mediump 4-component vector of float)

 0:13        'pos' (smooth in mediump 4-component vector of float)

-0:14      move second child to first child (mediump 4-component vector of float)

-0:14        direct index (layout(location=4 ) mediump 4-component vector of float)

+0:14      move second child to first child (temp mediump 4-component vector of float)

+0:14        direct index (layout(location=4 ) temp mediump 4-component vector of float)

 0:14          'q' (layout(location=4 ) out 2-element array of mediump 4-component vector of float)

 0:14          Constant:

 0:14            1 (const int)

@@ -42,17 +42,17 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:12    Sequence

-0:12      move second child to first child (mediump 4-component vector of float)

+0:12      move second child to first child (temp mediump 4-component vector of float)

 0:12        'c' (layout(location=1 ) out mediump 4-component vector of float)

 0:12        'color' (layout(location=2 ) smooth in mediump 4-component vector of float)

-0:13      move second child to first child (mediump 4-component vector of float)

+0:13      move second child to first child (temp mediump 4-component vector of float)

 0:13        'p' (layout(location=3 ) out mediump 4-component vector of float)

 0:13        'pos' (smooth in mediump 4-component vector of float)

-0:14      move second child to first child (mediump 4-component vector of float)

-0:14        direct index (layout(location=4 ) mediump 4-component vector of float)

+0:14      move second child to first child (temp mediump 4-component vector of float)

+0:14        direct index (layout(location=4 ) temp mediump 4-component vector of float)

 0:14          'q' (layout(location=4 ) out 2-element array of mediump 4-component vector of float)

 0:14          Constant:

 0:14            1 (const int)

diff --git a/Test/baseResults/300layout.vert.out b/Test/baseResults/300layout.vert.out
index f64db3b..9f61a42 100644
--- a/Test/baseResults/300layout.vert.out
+++ b/Test/baseResults/300layout.vert.out
@@ -23,17 +23,17 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:44  Function Definition: main( (void)

+0:44  Function Definition: main( (global void)

 0:44    Function Parameters: 

 0:46    Sequence

-0:46      move second child to first child (highp 4-component vector of float)

+0:46      move second child to first child (temp highp 4-component vector of float)

 0:46        'pos' (smooth out highp 4-component vector of float)

-0:46        vector-times-matrix (highp 4-component vector of float)

+0:46        vector-times-matrix (temp highp 4-component vector of float)

 0:46          'p' (layout(location=3 ) in highp 4-component vector of float)

-0:46          add (highp 4X4 matrix of float)

-0:46            add (highp 4X4 matrix of float)

-0:46              add (highp 4X4 matrix of float)

-0:46                add (highp 4X4 matrix of float)

+0:46          add (temp highp 4X4 matrix of float)

+0:46            add (temp highp 4X4 matrix of float)

+0:46              add (temp highp 4X4 matrix of float)

+0:46                add (temp highp 4X4 matrix of float)

 0:46                  M1: direct index for structure (layout(row_major std140 offset=0 ) uniform highp 4X4 matrix of float)

 0:46                    'tblock' (layout(row_major std140 ) uniform block{layout(row_major std140 offset=0 ) uniform highp 4X4 matrix of float M1, layout(column_major std140 offset=64 ) uniform highp 4X4 matrix of float M2, layout(row_major std140 offset=128 ) uniform highp 3X3 matrix of float N1, layout(row_major std140 offset=176 ) centroid uniform highp float badf, layout(row_major std140 offset=180 ) uniform highp float badg, layout(row_major std140 offset=184 ) uniform highp float bad1, layout(row_major shared offset=188 ) uniform highp float bad2, layout(row_major packed offset=192 ) uniform highp float bad3})

 0:46                    Constant:

@@ -54,9 +54,9 @@
 0:46              'anon@0' (layout(row_major shared ) uniform block{layout(row_major shared ) uniform bool b, layout(row_major shared ) uniform highp 4X4 matrix of float t2m})

 0:46              Constant:

 0:46                1 (const uint)

-0:47      move second child to first child (highp 3-component vector of float)

+0:47      move second child to first child (temp highp 3-component vector of float)

 0:47        'color' (smooth out highp 3-component vector of float)

-0:47        vector-times-matrix (highp 3-component vector of float)

+0:47        vector-times-matrix (temp highp 3-component vector of float)

 0:47          'c' (layout(location=7 ) in highp 3-component vector of float)

 0:47          N1: direct index for structure (layout(row_major std140 offset=128 ) uniform highp 3X3 matrix of float)

 0:47            'tblock' (layout(row_major std140 ) uniform block{layout(row_major std140 offset=0 ) uniform highp 4X4 matrix of float M1, layout(column_major std140 offset=64 ) uniform highp 4X4 matrix of float M2, layout(row_major std140 offset=128 ) uniform highp 3X3 matrix of float N1, layout(row_major std140 offset=176 ) centroid uniform highp float badf, layout(row_major std140 offset=180 ) uniform highp float badg, layout(row_major std140 offset=184 ) uniform highp float bad1, layout(row_major shared offset=188 ) uniform highp float bad2, layout(row_major packed offset=192 ) uniform highp float bad3})

@@ -66,7 +66,7 @@
 0:?     'c' (layout(location=7 ) in highp 3-component vector of float)

 0:?     'p' (layout(location=3 ) in highp 4-component vector of float)

 0:?     'q' (layout(location=9 ) in 4-element array of highp 4-component vector of float)

-0:?     'r' (layout(location=10 ) in 4-element array of structure{highp 4-component vector of float v})

+0:?     'r' (layout(location=10 ) in 4-element array of structure{global highp 4-component vector of float v})

 0:?     'pos' (smooth out highp 4-component vector of float)

 0:?     'color' (smooth out highp 3-component vector of float)

 0:?     'badm4' (layout(column_major shared ) uniform highp 4X4 matrix of float)

@@ -87,17 +87,17 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:44  Function Definition: main( (void)

+0:44  Function Definition: main( (global void)

 0:44    Function Parameters: 

 0:46    Sequence

-0:46      move second child to first child (highp 4-component vector of float)

+0:46      move second child to first child (temp highp 4-component vector of float)

 0:46        'pos' (smooth out highp 4-component vector of float)

-0:46        vector-times-matrix (highp 4-component vector of float)

+0:46        vector-times-matrix (temp highp 4-component vector of float)

 0:46          'p' (layout(location=3 ) in highp 4-component vector of float)

-0:46          add (highp 4X4 matrix of float)

-0:46            add (highp 4X4 matrix of float)

-0:46              add (highp 4X4 matrix of float)

-0:46                add (highp 4X4 matrix of float)

+0:46          add (temp highp 4X4 matrix of float)

+0:46            add (temp highp 4X4 matrix of float)

+0:46              add (temp highp 4X4 matrix of float)

+0:46                add (temp highp 4X4 matrix of float)

 0:46                  M1: direct index for structure (layout(row_major std140 offset=0 ) uniform highp 4X4 matrix of float)

 0:46                    'tblock' (layout(row_major std140 ) uniform block{layout(row_major std140 offset=0 ) uniform highp 4X4 matrix of float M1, layout(column_major std140 offset=64 ) uniform highp 4X4 matrix of float M2, layout(row_major std140 offset=128 ) uniform highp 3X3 matrix of float N1, layout(row_major std140 offset=176 ) centroid uniform highp float badf, layout(row_major std140 offset=180 ) uniform highp float badg, layout(row_major std140 offset=184 ) uniform highp float bad1, layout(row_major shared offset=188 ) uniform highp float bad2, layout(row_major packed offset=192 ) uniform highp float bad3})

 0:46                    Constant:

@@ -118,9 +118,9 @@
 0:46              'anon@0' (layout(row_major shared ) uniform block{layout(row_major shared ) uniform bool b, layout(row_major shared ) uniform highp 4X4 matrix of float t2m})

 0:46              Constant:

 0:46                1 (const uint)

-0:47      move second child to first child (highp 3-component vector of float)

+0:47      move second child to first child (temp highp 3-component vector of float)

 0:47        'color' (smooth out highp 3-component vector of float)

-0:47        vector-times-matrix (highp 3-component vector of float)

+0:47        vector-times-matrix (temp highp 3-component vector of float)

 0:47          'c' (layout(location=7 ) in highp 3-component vector of float)

 0:47          N1: direct index for structure (layout(row_major std140 offset=128 ) uniform highp 3X3 matrix of float)

 0:47            'tblock' (layout(row_major std140 ) uniform block{layout(row_major std140 offset=0 ) uniform highp 4X4 matrix of float M1, layout(column_major std140 offset=64 ) uniform highp 4X4 matrix of float M2, layout(row_major std140 offset=128 ) uniform highp 3X3 matrix of float N1, layout(row_major std140 offset=176 ) centroid uniform highp float badf, layout(row_major std140 offset=180 ) uniform highp float badg, layout(row_major std140 offset=184 ) uniform highp float bad1, layout(row_major shared offset=188 ) uniform highp float bad2, layout(row_major packed offset=192 ) uniform highp float bad3})

@@ -130,7 +130,7 @@
 0:?     'c' (layout(location=7 ) in highp 3-component vector of float)

 0:?     'p' (layout(location=3 ) in highp 4-component vector of float)

 0:?     'q' (layout(location=9 ) in 4-element array of highp 4-component vector of float)

-0:?     'r' (layout(location=10 ) in 4-element array of structure{highp 4-component vector of float v})

+0:?     'r' (layout(location=10 ) in 4-element array of structure{global highp 4-component vector of float v})

 0:?     'pos' (smooth out highp 4-component vector of float)

 0:?     'color' (smooth out highp 3-component vector of float)

 0:?     'badm4' (layout(column_major shared ) uniform highp 4X4 matrix of float)

diff --git a/Test/baseResults/300link.frag.out b/Test/baseResults/300link.frag.out
index 60d55e4..4fbb16c 100644
--- a/Test/baseResults/300link.frag.out
+++ b/Test/baseResults/300link.frag.out
@@ -2,7 +2,7 @@
 

 Shader version: 300

 0:? Sequence

-0:8  Function Definition: main( (void)

+0:8  Function Definition: main( (global void)

 0:8    Function Parameters: 

 0:?   Linker Objects

 0:?     'color1' (out highp 4-component vector of float)

@@ -15,7 +15,7 @@
 

 Shader version: 300

 0:? Sequence

-0:8  Function Definition: main( (void)

+0:8  Function Definition: main( (global void)

 0:8    Function Parameters: 

 0:?   Linker Objects

 0:?     'color1' (out highp 4-component vector of float)

diff --git a/Test/baseResults/300link2.frag.out b/Test/baseResults/300link2.frag.out
index b5938f7..e7261d6 100644
--- a/Test/baseResults/300link2.frag.out
+++ b/Test/baseResults/300link2.frag.out
@@ -2,7 +2,7 @@
 

 Shader version: 300

 0:? Sequence

-0:9  Function Definition: main( (void)

+0:9  Function Definition: main( (global void)

 0:9    Function Parameters: 

 0:?   Linker Objects

 0:?     'pos' (smooth in mediump 4-component vector of float)

@@ -16,7 +16,7 @@
 

 Shader version: 300

 0:? Sequence

-0:9  Function Definition: main( (void)

+0:9  Function Definition: main( (global void)

 0:9    Function Parameters: 

 0:?   Linker Objects

 0:?     'pos' (smooth in mediump 4-component vector of float)

diff --git a/Test/baseResults/300link3.frag.out b/Test/baseResults/300link3.frag.out
index f0540de..a8a706b 100644
--- a/Test/baseResults/300link3.frag.out
+++ b/Test/baseResults/300link3.frag.out
@@ -2,7 +2,7 @@
 

 Shader version: 300

 0:? Sequence

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:?   Linker Objects

 0:?     'color1' (out highp 4-component vector of float)

@@ -13,7 +13,7 @@
 

 Shader version: 300

 0:? Sequence

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:?   Linker Objects

 0:?     'color1' (out highp 4-component vector of float)

diff --git a/Test/baseResults/300operations.frag.out b/Test/baseResults/300operations.frag.out
index 295c1be..244e5b0 100644
--- a/Test/baseResults/300operations.frag.out
+++ b/Test/baseResults/300operations.frag.out
@@ -1,86 +1,86 @@
 300operations.frag

 ERROR: 0:11: 'float' : type requires declaration of default precision qualifier 

 ERROR: 0:30: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump float f}' and a right operand of type 'layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump float f}' (or there is no acceptable conversion)

-ERROR: 0:31: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'structure{mediump int i}' and a right operand of type 'structure{mediump int i}' (or there is no acceptable conversion)

-ERROR: 0:32: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump float' (or there is no acceptable conversion)

-ERROR: 0:33: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump float' (or there is no acceptable conversion)

-ERROR: 0:34: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump int' (or there is no acceptable conversion)

-ERROR: 0:35: 'assign' :  cannot convert from 'mediump 4-component vector of int' to 'mediump 3-component vector of int'

-ERROR: 0:36: '/' :  wrong operand types: no operation '/' exists that takes a left-hand operand of type 'mediump 4-component vector of int' and a right operand of type 'mediump 4-component vector of uint' (or there is no acceptable conversion)

-ERROR: 0:37: '-' :  wrong operand types: no operation '-' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump 3-component vector of float' (or there is no acceptable conversion)

-ERROR: 0:38: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump 3-component vector of int' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)

-ERROR: 0:39: '*' :  wrong operand types: no operation '*' exists that takes a left-hand operand of type '5-element array of mediump float' and a right operand of type '5-element array of mediump float' (or there is no acceptable conversion)

-ERROR: 0:40: '/' :  wrong operand types: no operation '/' exists that takes a left-hand operand of type 'bool' and a right operand of type 'bool' (or there is no acceptable conversion)

-ERROR: 0:42: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type 'mediump float' and a right operand of type 'mediump float' (or there is no acceptable conversion)

-ERROR: 0:43: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump float' (or there is no acceptable conversion)

-ERROR: 0:44: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type 'mediump float' and a right operand of type 'mediump uint' (or there is no acceptable conversion)

+ERROR: 0:31: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'global structure{global mediump int i}' and a right operand of type 'global structure{global mediump int i}' (or there is no acceptable conversion)

+ERROR: 0:32: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'temp mediump int' and a right operand of type 'temp mediump float' (or there is no acceptable conversion)

+ERROR: 0:33: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'temp mediump uint' and a right operand of type 'temp mediump float' (or there is no acceptable conversion)

+ERROR: 0:34: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'temp mediump uint' and a right operand of type 'temp mediump int' (or there is no acceptable conversion)

+ERROR: 0:35: 'assign' :  cannot convert from 'temp mediump 4-component vector of int' to 'temp mediump 3-component vector of int'

+ERROR: 0:36: '/' :  wrong operand types: no operation '/' exists that takes a left-hand operand of type 'temp mediump 4-component vector of int' and a right operand of type 'temp mediump 4-component vector of uint' (or there is no acceptable conversion)

+ERROR: 0:37: '-' :  wrong operand types: no operation '-' exists that takes a left-hand operand of type 'temp mediump int' and a right operand of type 'temp mediump 3-component vector of float' (or there is no acceptable conversion)

+ERROR: 0:38: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type 'temp mediump 3-component vector of int' and a right operand of type 'temp mediump 3-component vector of uint' (or there is no acceptable conversion)

+ERROR: 0:39: '*' :  wrong operand types: no operation '*' exists that takes a left-hand operand of type 'global 5-element array of mediump float' and a right operand of type 'global 5-element array of mediump float' (or there is no acceptable conversion)

+ERROR: 0:40: '/' :  wrong operand types: no operation '/' exists that takes a left-hand operand of type 'temp bool' and a right operand of type 'temp bool' (or there is no acceptable conversion)

+ERROR: 0:42: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type 'temp mediump float' and a right operand of type 'temp mediump float' (or there is no acceptable conversion)

+ERROR: 0:43: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type 'temp mediump int' and a right operand of type 'temp mediump float' (or there is no acceptable conversion)

+ERROR: 0:44: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type 'temp mediump float' and a right operand of type 'temp mediump uint' (or there is no acceptable conversion)

 ERROR: 0:45: '++' :  l-value required "instanceName" (can't modify a uniform)

 ERROR: 0:45: '++' :  wrong operand type no operation '++' exists that takes an operand of type layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump float f} (or there is no acceptable conversion)

-ERROR: 0:46: '++' :  wrong operand type no operation '++' exists that takes an operand of type structure{mediump int i} (or there is no acceptable conversion)

-ERROR: 0:47: '--' :  wrong operand type no operation '--' exists that takes an operand of type 5-element array of mediump float (or there is no acceptable conversion)

-ERROR: 0:48: '++' :  wrong operand type no operation '++' exists that takes an operand of type 3-component vector of bool (or there is no acceptable conversion)

-ERROR: 0:50: '<' :  wrong operand types: no operation '<' exists that takes a left-hand operand of type 'mediump 3-component vector of int' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)

-ERROR: 0:51: '>' :  wrong operand types: no operation '>' exists that takes a left-hand operand of type 'mediump 2X2 matrix of float' and a right operand of type 'mediump 2X2 matrix of float' (or there is no acceptable conversion)

-ERROR: 0:52: '!=' :  wrong operand types: no operation '!=' exists that takes a left-hand operand of type 'mediump 2X2 matrix of float' and a right operand of type 'mediump 4X4 matrix of float' (or there is no acceptable conversion)

-ERROR: 0:53: '>=' :  wrong operand types: no operation '>=' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump uint' (or there is no acceptable conversion)

-ERROR: 0:54: '<=' :  wrong operand types: no operation '<=' exists that takes a left-hand operand of type '5-element array of mediump float' and a right operand of type '5-element array of mediump float' (or there is no acceptable conversion)

-ERROR: 0:55: '>' :  wrong operand types: no operation '>' exists that takes a left-hand operand of type 'bool' and a right operand of type 'bool' (or there is no acceptable conversion)

-ERROR: 0:57: '&&' :  wrong operand types: no operation '&&' exists that takes a left-hand operand of type 'bool' and a right operand of type '3-component vector of bool' (or there is no acceptable conversion)

-ERROR: 0:58: '^^' :  wrong operand types: no operation '^^' exists that takes a left-hand operand of type '3-component vector of bool' and a right operand of type '3-component vector of bool' (or there is no acceptable conversion)

-ERROR: 0:59: '||' :  wrong operand types: no operation '||' exists that takes a left-hand operand of type '3-component vector of bool' and a right operand of type 'bool' (or there is no acceptable conversion)

-ERROR: 0:60: '&&' :  wrong operand types: no operation '&&' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump int' (or there is no acceptable conversion)

-ERROR: 0:61: '||' :  wrong operand types: no operation '||' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump uint' (or there is no acceptable conversion)

-ERROR: 0:62: '^^' :  wrong operand types: no operation '^^' exists that takes a left-hand operand of type 'mediump 2X2 matrix of float' and a right operand of type 'mediump 2X2 matrix of float' (or there is no acceptable conversion)

-ERROR: 0:64: '!' :  wrong operand type no operation '!' exists that takes an operand of type mediump uint (or there is no acceptable conversion)

-ERROR: 0:65: '!' :  wrong operand type no operation '!' exists that takes an operand of type mediump int (or there is no acceptable conversion)

-ERROR: 0:66: '!' :  wrong operand type no operation '!' exists that takes an operand of type mediump 2X2 matrix of float (or there is no acceptable conversion)

-ERROR: 0:67: '!' :  wrong operand type no operation '!' exists that takes an operand of type mediump 3-component vector of float (or there is no acceptable conversion)

-ERROR: 0:68: '!' :  wrong operand type no operation '!' exists that takes an operand of type 5-element array of mediump float (or there is no acceptable conversion)

-ERROR: 0:70: '~' :  wrong operand type no operation '~' exists that takes an operand of type mediump float (or there is no acceptable conversion)

-ERROR: 0:71: '~' :  wrong operand type no operation '~' exists that takes an operand of type mediump 4X4 matrix of float (or there is no acceptable conversion)

-ERROR: 0:72: '~' :  wrong operand type no operation '~' exists that takes an operand of type mediump 3-component vector of float (or there is no acceptable conversion)

-ERROR: 0:73: '~' :  wrong operand type no operation '~' exists that takes an operand of type 5-element array of mediump float (or there is no acceptable conversion)

+ERROR: 0:46: '++' :  wrong operand type no operation '++' exists that takes an operand of type global structure{global mediump int i} (or there is no acceptable conversion)

+ERROR: 0:47: '--' :  wrong operand type no operation '--' exists that takes an operand of type global 5-element array of mediump float (or there is no acceptable conversion)

+ERROR: 0:48: '++' :  wrong operand type no operation '++' exists that takes an operand of type temp 3-component vector of bool (or there is no acceptable conversion)

+ERROR: 0:50: '<' :  wrong operand types: no operation '<' exists that takes a left-hand operand of type 'temp mediump 3-component vector of int' and a right operand of type 'temp mediump 3-component vector of uint' (or there is no acceptable conversion)

+ERROR: 0:51: '>' :  wrong operand types: no operation '>' exists that takes a left-hand operand of type 'temp mediump 2X2 matrix of float' and a right operand of type 'temp mediump 2X2 matrix of float' (or there is no acceptable conversion)

+ERROR: 0:52: '!=' :  wrong operand types: no operation '!=' exists that takes a left-hand operand of type 'temp mediump 2X2 matrix of float' and a right operand of type 'temp mediump 4X4 matrix of float' (or there is no acceptable conversion)

+ERROR: 0:53: '>=' :  wrong operand types: no operation '>=' exists that takes a left-hand operand of type 'temp mediump int' and a right operand of type 'temp mediump uint' (or there is no acceptable conversion)

+ERROR: 0:54: '<=' :  wrong operand types: no operation '<=' exists that takes a left-hand operand of type 'global 5-element array of mediump float' and a right operand of type 'global 5-element array of mediump float' (or there is no acceptable conversion)

+ERROR: 0:55: '>' :  wrong operand types: no operation '>' exists that takes a left-hand operand of type 'temp bool' and a right operand of type 'temp bool' (or there is no acceptable conversion)

+ERROR: 0:57: '&&' :  wrong operand types: no operation '&&' exists that takes a left-hand operand of type 'temp bool' and a right operand of type 'temp 3-component vector of bool' (or there is no acceptable conversion)

+ERROR: 0:58: '^^' :  wrong operand types: no operation '^^' exists that takes a left-hand operand of type 'temp 3-component vector of bool' and a right operand of type 'temp 3-component vector of bool' (or there is no acceptable conversion)

+ERROR: 0:59: '||' :  wrong operand types: no operation '||' exists that takes a left-hand operand of type 'temp 3-component vector of bool' and a right operand of type 'temp bool' (or there is no acceptable conversion)

+ERROR: 0:60: '&&' :  wrong operand types: no operation '&&' exists that takes a left-hand operand of type 'temp mediump int' and a right operand of type 'temp mediump int' (or there is no acceptable conversion)

+ERROR: 0:61: '||' :  wrong operand types: no operation '||' exists that takes a left-hand operand of type 'temp mediump uint' and a right operand of type 'temp mediump uint' (or there is no acceptable conversion)

+ERROR: 0:62: '^^' :  wrong operand types: no operation '^^' exists that takes a left-hand operand of type 'temp mediump 2X2 matrix of float' and a right operand of type 'temp mediump 2X2 matrix of float' (or there is no acceptable conversion)

+ERROR: 0:64: '!' :  wrong operand type no operation '!' exists that takes an operand of type temp mediump uint (or there is no acceptable conversion)

+ERROR: 0:65: '!' :  wrong operand type no operation '!' exists that takes an operand of type temp mediump int (or there is no acceptable conversion)

+ERROR: 0:66: '!' :  wrong operand type no operation '!' exists that takes an operand of type temp mediump 2X2 matrix of float (or there is no acceptable conversion)

+ERROR: 0:67: '!' :  wrong operand type no operation '!' exists that takes an operand of type temp mediump 3-component vector of float (or there is no acceptable conversion)

+ERROR: 0:68: '!' :  wrong operand type no operation '!' exists that takes an operand of type global 5-element array of mediump float (or there is no acceptable conversion)

+ERROR: 0:70: '~' :  wrong operand type no operation '~' exists that takes an operand of type temp mediump float (or there is no acceptable conversion)

+ERROR: 0:71: '~' :  wrong operand type no operation '~' exists that takes an operand of type temp mediump 4X4 matrix of float (or there is no acceptable conversion)

+ERROR: 0:72: '~' :  wrong operand type no operation '~' exists that takes an operand of type temp mediump 3-component vector of float (or there is no acceptable conversion)

+ERROR: 0:73: '~' :  wrong operand type no operation '~' exists that takes an operand of type global 5-element array of mediump float (or there is no acceptable conversion)

 ERROR: 0:74: '~' :  wrong operand type no operation '~' exists that takes an operand of type layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump float f} (or there is no acceptable conversion)

-ERROR: 0:76: '<<' :  wrong operand types: no operation '<<' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump 3-component vector of int' (or there is no acceptable conversion)

-ERROR: 0:77: '<<' :  wrong operand types: no operation '<<' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)

-ERROR: 0:78: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump float' (or there is no acceptable conversion)

-ERROR: 0:79: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'mediump float' and a right operand of type 'mediump int' (or there is no acceptable conversion)

-ERROR: 0:80: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'mediump 4X4 matrix of float' and a right operand of type 'mediump int' (or there is no acceptable conversion)

-ERROR: 0:81: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type '5-element array of mediump float' and a right operand of type 'mediump uint' (or there is no acceptable conversion)

-ERROR: 0:82: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'mediump 3-component vector of int' and a right operand of type 'mediump 4-component vector of int' (or there is no acceptable conversion)

-ERROR: 0:84: '&' :  wrong operand types: no operation '&' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump uint' (or there is no acceptable conversion)

-ERROR: 0:85: 'assign' :  cannot convert from 'mediump 3-component vector of uint' to 'mediump uint'

-ERROR: 0:86: '|' :  wrong operand types: no operation '|' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)

-ERROR: 0:87: '&' :  wrong operand types: no operation '&' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump float' (or there is no acceptable conversion)

-ERROR: 0:88: '|' :  wrong operand types: no operation '|' exists that takes a left-hand operand of type 'mediump 2X2 matrix of float' and a right operand of type 'mediump 2X2 matrix of float' (or there is no acceptable conversion)

-ERROR: 0:89: '^' :  wrong operand types: no operation '^' exists that takes a left-hand operand of type 'structure{mediump int i}' and a right operand of type 'structure{mediump int i}' (or there is no acceptable conversion)

+ERROR: 0:76: '<<' :  wrong operand types: no operation '<<' exists that takes a left-hand operand of type 'temp mediump int' and a right operand of type 'temp mediump 3-component vector of int' (or there is no acceptable conversion)

+ERROR: 0:77: '<<' :  wrong operand types: no operation '<<' exists that takes a left-hand operand of type 'temp mediump uint' and a right operand of type 'temp mediump 3-component vector of uint' (or there is no acceptable conversion)

+ERROR: 0:78: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'temp mediump int' and a right operand of type 'temp mediump float' (or there is no acceptable conversion)

+ERROR: 0:79: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'temp mediump float' and a right operand of type 'temp mediump int' (or there is no acceptable conversion)

+ERROR: 0:80: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'temp mediump 4X4 matrix of float' and a right operand of type 'temp mediump int' (or there is no acceptable conversion)

+ERROR: 0:81: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'global 5-element array of mediump float' and a right operand of type 'temp mediump uint' (or there is no acceptable conversion)

+ERROR: 0:82: '>>' :  wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'temp mediump 3-component vector of int' and a right operand of type 'temp mediump 4-component vector of int' (or there is no acceptable conversion)

+ERROR: 0:84: '&' :  wrong operand types: no operation '&' exists that takes a left-hand operand of type 'temp mediump int' and a right operand of type 'temp mediump uint' (or there is no acceptable conversion)

+ERROR: 0:85: 'assign' :  cannot convert from 'temp mediump 3-component vector of uint' to 'temp mediump uint'

+ERROR: 0:86: '|' :  wrong operand types: no operation '|' exists that takes a left-hand operand of type 'temp mediump int' and a right operand of type 'temp mediump 3-component vector of uint' (or there is no acceptable conversion)

+ERROR: 0:87: '&' :  wrong operand types: no operation '&' exists that takes a left-hand operand of type 'temp mediump uint' and a right operand of type 'temp mediump float' (or there is no acceptable conversion)

+ERROR: 0:88: '|' :  wrong operand types: no operation '|' exists that takes a left-hand operand of type 'temp mediump 2X2 matrix of float' and a right operand of type 'temp mediump 2X2 matrix of float' (or there is no acceptable conversion)

+ERROR: 0:89: '^' :  wrong operand types: no operation '^' exists that takes a left-hand operand of type 'global structure{global mediump int i}' and a right operand of type 'global structure{global mediump int i}' (or there is no acceptable conversion)

 ERROR: 0:90: 'assign' :  l-value required 

 ERROR: 56 compilation errors.  No code generated.

 

 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:13  Function Definition: main( (void)

+0:13  Function Definition: main( (global void)

 0:13    Function Parameters: 

 0:?     Sequence

 0:30      'instanceName' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump float f})

-0:31      's' (structure{mediump int i})

-0:32      'i' (mediump int)

-0:33      'u' (mediump uint)

-0:34      'u' (mediump uint)

-0:35      'iv3' (mediump 3-component vector of int)

-0:36      'iv4' (mediump 4-component vector of int)

-0:37      'i' (mediump int)

-0:38      'iv3' (mediump 3-component vector of int)

-0:39      'a' (5-element array of mediump float)

-0:40      'b' (bool)

-0:42      'f' (mediump float)

-0:43      'i' (mediump int)

-0:44      'f' (mediump float)

+0:31      's' (global structure{global mediump int i})

+0:32      'i' (temp mediump int)

+0:33      'u' (temp mediump uint)

+0:34      'u' (temp mediump uint)

+0:35      'iv3' (temp mediump 3-component vector of int)

+0:36      'iv4' (temp mediump 4-component vector of int)

+0:37      'i' (temp mediump int)

+0:38      'iv3' (temp mediump 3-component vector of int)

+0:39      'a' (global 5-element array of mediump float)

+0:40      'b' (temp bool)

+0:42      'f' (temp mediump float)

+0:43      'i' (temp mediump int)

+0:44      'f' (temp mediump float)

 0:45      'instanceName' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump float f})

-0:46      's' (structure{mediump int i})

-0:47      'a' (5-element array of mediump float)

-0:48      'b3' (3-component vector of bool)

+0:46      's' (global structure{global mediump int i})

+0:47      'a' (global 5-element array of mediump float)

+0:48      'b3' (temp 3-component vector of bool)

 0:50      Constant:

 0:50        false (const bool)

 0:51      Constant:

@@ -105,136 +105,136 @@
 0:61        false (const bool)

 0:62      Constant:

 0:62        false (const bool)

-0:64      'u' (mediump uint)

-0:65      'i' (mediump int)

-0:66      'm2' (mediump 2X2 matrix of float)

-0:67      'v3' (mediump 3-component vector of float)

-0:68      'a' (5-element array of mediump float)

-0:70      'f' (mediump float)

-0:71      'm4' (mediump 4X4 matrix of float)

-0:72      'v3' (mediump 3-component vector of float)

-0:73      'a' (5-element array of mediump float)

+0:64      'u' (temp mediump uint)

+0:65      'i' (temp mediump int)

+0:66      'm2' (temp mediump 2X2 matrix of float)

+0:67      'v3' (temp mediump 3-component vector of float)

+0:68      'a' (global 5-element array of mediump float)

+0:70      'f' (temp mediump float)

+0:71      'm4' (temp mediump 4X4 matrix of float)

+0:72      'v3' (temp mediump 3-component vector of float)

+0:73      'a' (global 5-element array of mediump float)

 0:74      'instanceName' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump float f})

-0:76      'i' (mediump int)

-0:77      'u' (mediump uint)

-0:78      'i' (mediump int)

-0:79      'f' (mediump float)

-0:80      'm4' (mediump 4X4 matrix of float)

-0:81      'a' (5-element array of mediump float)

-0:82      'iv3' (mediump 3-component vector of int)

-0:84      'i' (mediump int)

-0:85      'u' (mediump uint)

-0:86      'i' (mediump int)

-0:87      'u' (mediump uint)

-0:88      'm2' (mediump 2X2 matrix of float)

-0:89      's' (structure{mediump int i})

-0:90      move second child to first child (mediump float)

-0:90        move second child to first child (mediump float)

-0:90          'f' (mediump float)

-0:90          'f' (mediump float)

-0:90        'f' (mediump float)

-0:93      vector-scale (mediump 4-component vector of float)

-0:93        'f' (mediump float)

-0:93        'v4' (mediump 4-component vector of float)

-0:94      add (mediump uint)

-0:94        'u' (mediump uint)

-0:94        'u' (mediump uint)

-0:95      divide (mediump 4-component vector of uint)

-0:95        'uv4' (mediump 4-component vector of uint)

-0:95        'u' (mediump uint)

-0:96      subtract second child into first child (mediump 3-component vector of int)

-0:96        'iv3' (mediump 3-component vector of int)

-0:96        'iv3' (mediump 3-component vector of int)

-0:98      mod second child into first child (mediump int)

-0:98        'i' (mediump int)

+0:76      'i' (temp mediump int)

+0:77      'u' (temp mediump uint)

+0:78      'i' (temp mediump int)

+0:79      'f' (temp mediump float)

+0:80      'm4' (temp mediump 4X4 matrix of float)

+0:81      'a' (global 5-element array of mediump float)

+0:82      'iv3' (temp mediump 3-component vector of int)

+0:84      'i' (temp mediump int)

+0:85      'u' (temp mediump uint)

+0:86      'i' (temp mediump int)

+0:87      'u' (temp mediump uint)

+0:88      'm2' (temp mediump 2X2 matrix of float)

+0:89      's' (global structure{global mediump int i})

+0:90      move second child to first child (temp mediump float)

+0:90        move second child to first child (temp mediump float)

+0:90          'f' (temp mediump float)

+0:90          'f' (temp mediump float)

+0:90        'f' (temp mediump float)

+0:93      vector-scale (temp mediump 4-component vector of float)

+0:93        'f' (temp mediump float)

+0:93        'v4' (temp mediump 4-component vector of float)

+0:94      add (temp mediump uint)

+0:94        'u' (temp mediump uint)

+0:94        'u' (temp mediump uint)

+0:95      divide (temp mediump 4-component vector of uint)

+0:95        'uv4' (temp mediump 4-component vector of uint)

+0:95        'u' (temp mediump uint)

+0:96      subtract second child into first child (temp mediump 3-component vector of int)

+0:96        'iv3' (temp mediump 3-component vector of int)

+0:96        'iv3' (temp mediump 3-component vector of int)

+0:98      mod second child into first child (temp mediump int)

+0:98        'i' (temp mediump int)

 0:98        Constant:

 0:98          3 (const int)

-0:99      mod (mediump 3-component vector of uint)

-0:99        'uv3' (mediump 3-component vector of uint)

+0:99      mod (temp mediump 3-component vector of uint)

+0:99        'uv3' (temp mediump 3-component vector of uint)

 0:99        Constant:

 0:99          4 (const uint)

-0:100      Pre-Decrement (mediump 2X2 matrix of float)

-0:100        'm2' (mediump 2X2 matrix of float)

-0:101      Post-Increment (mediump 4-component vector of int)

-0:101        'iv4' (mediump 4-component vector of int)

-0:103      Compare Not Equal (bool)

-0:103        'm4' (mediump 4X4 matrix of float)

-0:103        'm4' (mediump 4X4 matrix of float)

-0:104      Compare Equal (bool)

-0:104        'm2' (mediump 2X2 matrix of float)

-0:104        'm2' (mediump 2X2 matrix of float)

-0:105      Compare Less Than or Equal (bool)

-0:105        'i' (mediump int)

-0:105        'i' (mediump int)

-0:106      Compare Equal (bool)

-0:106        'a' (5-element array of mediump float)

-0:106        'a' (5-element array of mediump float)

-0:107      Compare Not Equal (bool)

-0:107        's' (structure{mediump int i})

-0:107        's' (structure{mediump int i})

-0:109      logical-and (bool)

-0:109        'b' (bool)

-0:109        'b' (bool)

-0:110      logical-or (bool)

-0:110        'b' (bool)

-0:110        'b' (bool)

-0:111      logical-xor (bool)

-0:111        'b' (bool)

-0:111        'b' (bool)

-0:113      Comma (mediump 3-component vector of uint)

-0:113        Negate conditional (bool)

-0:113          'b' (bool)

-0:113        'uv3' (mediump 3-component vector of uint)

-0:115      Bitwise not (mediump int)

-0:115        'i' (mediump int)

-0:116      Bitwise not (mediump uint)

-0:116        'u' (mediump uint)

-0:117      Bitwise not (mediump 3-component vector of uint)

-0:117        'uv3' (mediump 3-component vector of uint)

-0:118      Bitwise not (mediump 3-component vector of int)

-0:118        'iv3' (mediump 3-component vector of int)

-0:120      left shift second child into first child (mediump 3-component vector of uint)

-0:120        'uv3' (mediump 3-component vector of uint)

-0:120        'i' (mediump int)

-0:121      right-shift (mediump int)

-0:121        'i' (mediump int)

-0:121        'i' (mediump int)

-0:122      left-shift (mediump uint)

-0:122        'u' (mediump uint)

-0:122        'u' (mediump uint)

-0:123      right-shift (mediump 3-component vector of int)

-0:123        'iv3' (mediump 3-component vector of int)

-0:123        'iv3' (mediump 3-component vector of int)

-0:125      bitwise and (mediump int)

-0:125        'i' (mediump int)

-0:125        'i' (mediump int)

-0:126      inclusive-or (mediump uint)

-0:126        'u' (mediump uint)

-0:126        'u' (mediump uint)

-0:127      exclusive-or (mediump 3-component vector of int)

-0:127        'iv3' (mediump 3-component vector of int)

-0:127        'iv3' (mediump 3-component vector of int)

-0:128      bitwise and (mediump 3-component vector of uint)

-0:128        'u' (mediump uint)

-0:128        'uv3' (mediump 3-component vector of uint)

-0:129      inclusive-or (mediump 3-component vector of uint)

-0:129        'uv3' (mediump 3-component vector of uint)

-0:129        'u' (mediump uint)

-0:130      and second child into first child (mediump 3-component vector of uint)

-0:130        'uv3' (mediump 3-component vector of uint)

-0:130        'u' (mediump uint)

-0:132      direct index (mediump int)

-0:132        'arr' (2-element array of mediump int)

+0:100      Pre-Decrement (temp mediump 2X2 matrix of float)

+0:100        'm2' (temp mediump 2X2 matrix of float)

+0:101      Post-Increment (temp mediump 4-component vector of int)

+0:101        'iv4' (temp mediump 4-component vector of int)

+0:103      Compare Not Equal (temp bool)

+0:103        'm4' (temp mediump 4X4 matrix of float)

+0:103        'm4' (temp mediump 4X4 matrix of float)

+0:104      Compare Equal (temp bool)

+0:104        'm2' (temp mediump 2X2 matrix of float)

+0:104        'm2' (temp mediump 2X2 matrix of float)

+0:105      Compare Less Than or Equal (temp bool)

+0:105        'i' (temp mediump int)

+0:105        'i' (temp mediump int)

+0:106      Compare Equal (temp bool)

+0:106        'a' (global 5-element array of mediump float)

+0:106        'a' (global 5-element array of mediump float)

+0:107      Compare Not Equal (temp bool)

+0:107        's' (global structure{global mediump int i})

+0:107        's' (global structure{global mediump int i})

+0:109      logical-and (temp bool)

+0:109        'b' (temp bool)

+0:109        'b' (temp bool)

+0:110      logical-or (temp bool)

+0:110        'b' (temp bool)

+0:110        'b' (temp bool)

+0:111      logical-xor (temp bool)

+0:111        'b' (temp bool)

+0:111        'b' (temp bool)

+0:113      Comma (temp mediump 3-component vector of uint)

+0:113        Negate conditional (temp bool)

+0:113          'b' (temp bool)

+0:113        'uv3' (temp mediump 3-component vector of uint)

+0:115      Bitwise not (temp mediump int)

+0:115        'i' (temp mediump int)

+0:116      Bitwise not (temp mediump uint)

+0:116        'u' (temp mediump uint)

+0:117      Bitwise not (temp mediump 3-component vector of uint)

+0:117        'uv3' (temp mediump 3-component vector of uint)

+0:118      Bitwise not (temp mediump 3-component vector of int)

+0:118        'iv3' (temp mediump 3-component vector of int)

+0:120      left shift second child into first child (temp mediump 3-component vector of uint)

+0:120        'uv3' (temp mediump 3-component vector of uint)

+0:120        'i' (temp mediump int)

+0:121      right-shift (temp mediump int)

+0:121        'i' (temp mediump int)

+0:121        'i' (temp mediump int)

+0:122      left-shift (temp mediump uint)

+0:122        'u' (temp mediump uint)

+0:122        'u' (temp mediump uint)

+0:123      right-shift (temp mediump 3-component vector of int)

+0:123        'iv3' (temp mediump 3-component vector of int)

+0:123        'iv3' (temp mediump 3-component vector of int)

+0:125      bitwise and (temp mediump int)

+0:125        'i' (temp mediump int)

+0:125        'i' (temp mediump int)

+0:126      inclusive-or (temp mediump uint)

+0:126        'u' (temp mediump uint)

+0:126        'u' (temp mediump uint)

+0:127      exclusive-or (temp mediump 3-component vector of int)

+0:127        'iv3' (temp mediump 3-component vector of int)

+0:127        'iv3' (temp mediump 3-component vector of int)

+0:128      bitwise and (temp mediump 3-component vector of uint)

+0:128        'u' (temp mediump uint)

+0:128        'uv3' (temp mediump 3-component vector of uint)

+0:129      inclusive-or (temp mediump 3-component vector of uint)

+0:129        'uv3' (temp mediump 3-component vector of uint)

+0:129        'u' (temp mediump uint)

+0:130      and second child into first child (temp mediump 3-component vector of uint)

+0:130        'uv3' (temp mediump 3-component vector of uint)

+0:130        'u' (temp mediump uint)

+0:132      direct index (temp mediump int)

+0:132        'arr' (temp 2-element array of mediump int)

 0:132        Constant:

 0:132          1 (const int)

-0:134      direct index (mediump int)

-0:134        'arr2' (3-element array of mediump int)

+0:134      direct index (temp mediump int)

+0:134        'arr2' (temp 3-element array of mediump int)

 0:134        Constant:

 0:134          2 (const int)

 0:?   Linker Objects

 0:?     'instanceName' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump float f})

-0:?     's' (structure{mediump int i})

-0:?     'a' (5-element array of mediump float)

+0:?     's' (global structure{global mediump int i})

+0:?     'a' (global 5-element array of mediump float)

 

 

 Linked fragment stage:

@@ -242,27 +242,27 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:13  Function Definition: main( (void)

+0:13  Function Definition: main( (global void)

 0:13    Function Parameters: 

 0:?     Sequence

 0:30      'instanceName' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump float f})

-0:31      's' (structure{mediump int i})

-0:32      'i' (mediump int)

-0:33      'u' (mediump uint)

-0:34      'u' (mediump uint)

-0:35      'iv3' (mediump 3-component vector of int)

-0:36      'iv4' (mediump 4-component vector of int)

-0:37      'i' (mediump int)

-0:38      'iv3' (mediump 3-component vector of int)

-0:39      'a' (5-element array of mediump float)

-0:40      'b' (bool)

-0:42      'f' (mediump float)

-0:43      'i' (mediump int)

-0:44      'f' (mediump float)

+0:31      's' (global structure{global mediump int i})

+0:32      'i' (temp mediump int)

+0:33      'u' (temp mediump uint)

+0:34      'u' (temp mediump uint)

+0:35      'iv3' (temp mediump 3-component vector of int)

+0:36      'iv4' (temp mediump 4-component vector of int)

+0:37      'i' (temp mediump int)

+0:38      'iv3' (temp mediump 3-component vector of int)

+0:39      'a' (global 5-element array of mediump float)

+0:40      'b' (temp bool)

+0:42      'f' (temp mediump float)

+0:43      'i' (temp mediump int)

+0:44      'f' (temp mediump float)

 0:45      'instanceName' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump float f})

-0:46      's' (structure{mediump int i})

-0:47      'a' (5-element array of mediump float)

-0:48      'b3' (3-component vector of bool)

+0:46      's' (global structure{global mediump int i})

+0:47      'a' (global 5-element array of mediump float)

+0:48      'b3' (temp 3-component vector of bool)

 0:50      Constant:

 0:50        false (const bool)

 0:51      Constant:

@@ -287,134 +287,134 @@
 0:61        false (const bool)

 0:62      Constant:

 0:62        false (const bool)

-0:64      'u' (mediump uint)

-0:65      'i' (mediump int)

-0:66      'm2' (mediump 2X2 matrix of float)

-0:67      'v3' (mediump 3-component vector of float)

-0:68      'a' (5-element array of mediump float)

-0:70      'f' (mediump float)

-0:71      'm4' (mediump 4X4 matrix of float)

-0:72      'v3' (mediump 3-component vector of float)

-0:73      'a' (5-element array of mediump float)

+0:64      'u' (temp mediump uint)

+0:65      'i' (temp mediump int)

+0:66      'm2' (temp mediump 2X2 matrix of float)

+0:67      'v3' (temp mediump 3-component vector of float)

+0:68      'a' (global 5-element array of mediump float)

+0:70      'f' (temp mediump float)

+0:71      'm4' (temp mediump 4X4 matrix of float)

+0:72      'v3' (temp mediump 3-component vector of float)

+0:73      'a' (global 5-element array of mediump float)

 0:74      'instanceName' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump float f})

-0:76      'i' (mediump int)

-0:77      'u' (mediump uint)

-0:78      'i' (mediump int)

-0:79      'f' (mediump float)

-0:80      'm4' (mediump 4X4 matrix of float)

-0:81      'a' (5-element array of mediump float)

-0:82      'iv3' (mediump 3-component vector of int)

-0:84      'i' (mediump int)

-0:85      'u' (mediump uint)

-0:86      'i' (mediump int)

-0:87      'u' (mediump uint)

-0:88      'm2' (mediump 2X2 matrix of float)

-0:89      's' (structure{mediump int i})

-0:90      move second child to first child (mediump float)

-0:90        move second child to first child (mediump float)

-0:90          'f' (mediump float)

-0:90          'f' (mediump float)

-0:90        'f' (mediump float)

-0:93      vector-scale (mediump 4-component vector of float)

-0:93        'f' (mediump float)

-0:93        'v4' (mediump 4-component vector of float)

-0:94      add (mediump uint)

-0:94        'u' (mediump uint)

-0:94        'u' (mediump uint)

-0:95      divide (mediump 4-component vector of uint)

-0:95        'uv4' (mediump 4-component vector of uint)

-0:95        'u' (mediump uint)

-0:96      subtract second child into first child (mediump 3-component vector of int)

-0:96        'iv3' (mediump 3-component vector of int)

-0:96        'iv3' (mediump 3-component vector of int)

-0:98      mod second child into first child (mediump int)

-0:98        'i' (mediump int)

+0:76      'i' (temp mediump int)

+0:77      'u' (temp mediump uint)

+0:78      'i' (temp mediump int)

+0:79      'f' (temp mediump float)

+0:80      'm4' (temp mediump 4X4 matrix of float)

+0:81      'a' (global 5-element array of mediump float)

+0:82      'iv3' (temp mediump 3-component vector of int)

+0:84      'i' (temp mediump int)

+0:85      'u' (temp mediump uint)

+0:86      'i' (temp mediump int)

+0:87      'u' (temp mediump uint)

+0:88      'm2' (temp mediump 2X2 matrix of float)

+0:89      's' (global structure{global mediump int i})

+0:90      move second child to first child (temp mediump float)

+0:90        move second child to first child (temp mediump float)

+0:90          'f' (temp mediump float)

+0:90          'f' (temp mediump float)

+0:90        'f' (temp mediump float)

+0:93      vector-scale (temp mediump 4-component vector of float)

+0:93        'f' (temp mediump float)

+0:93        'v4' (temp mediump 4-component vector of float)

+0:94      add (temp mediump uint)

+0:94        'u' (temp mediump uint)

+0:94        'u' (temp mediump uint)

+0:95      divide (temp mediump 4-component vector of uint)

+0:95        'uv4' (temp mediump 4-component vector of uint)

+0:95        'u' (temp mediump uint)

+0:96      subtract second child into first child (temp mediump 3-component vector of int)

+0:96        'iv3' (temp mediump 3-component vector of int)

+0:96        'iv3' (temp mediump 3-component vector of int)

+0:98      mod second child into first child (temp mediump int)

+0:98        'i' (temp mediump int)

 0:98        Constant:

 0:98          3 (const int)

-0:99      mod (mediump 3-component vector of uint)

-0:99        'uv3' (mediump 3-component vector of uint)

+0:99      mod (temp mediump 3-component vector of uint)

+0:99        'uv3' (temp mediump 3-component vector of uint)

 0:99        Constant:

 0:99          4 (const uint)

-0:100      Pre-Decrement (mediump 2X2 matrix of float)

-0:100        'm2' (mediump 2X2 matrix of float)

-0:101      Post-Increment (mediump 4-component vector of int)

-0:101        'iv4' (mediump 4-component vector of int)

-0:103      Compare Not Equal (bool)

-0:103        'm4' (mediump 4X4 matrix of float)

-0:103        'm4' (mediump 4X4 matrix of float)

-0:104      Compare Equal (bool)

-0:104        'm2' (mediump 2X2 matrix of float)

-0:104        'm2' (mediump 2X2 matrix of float)

-0:105      Compare Less Than or Equal (bool)

-0:105        'i' (mediump int)

-0:105        'i' (mediump int)

-0:106      Compare Equal (bool)

-0:106        'a' (5-element array of mediump float)

-0:106        'a' (5-element array of mediump float)

-0:107      Compare Not Equal (bool)

-0:107        's' (structure{mediump int i})

-0:107        's' (structure{mediump int i})

-0:109      logical-and (bool)

-0:109        'b' (bool)

-0:109        'b' (bool)

-0:110      logical-or (bool)

-0:110        'b' (bool)

-0:110        'b' (bool)

-0:111      logical-xor (bool)

-0:111        'b' (bool)

-0:111        'b' (bool)

-0:113      Comma (mediump 3-component vector of uint)

-0:113        Negate conditional (bool)

-0:113          'b' (bool)

-0:113        'uv3' (mediump 3-component vector of uint)

-0:115      Bitwise not (mediump int)

-0:115        'i' (mediump int)

-0:116      Bitwise not (mediump uint)

-0:116        'u' (mediump uint)

-0:117      Bitwise not (mediump 3-component vector of uint)

-0:117        'uv3' (mediump 3-component vector of uint)

-0:118      Bitwise not (mediump 3-component vector of int)

-0:118        'iv3' (mediump 3-component vector of int)

-0:120      left shift second child into first child (mediump 3-component vector of uint)

-0:120        'uv3' (mediump 3-component vector of uint)

-0:120        'i' (mediump int)

-0:121      right-shift (mediump int)

-0:121        'i' (mediump int)

-0:121        'i' (mediump int)

-0:122      left-shift (mediump uint)

-0:122        'u' (mediump uint)

-0:122        'u' (mediump uint)

-0:123      right-shift (mediump 3-component vector of int)

-0:123        'iv3' (mediump 3-component vector of int)

-0:123        'iv3' (mediump 3-component vector of int)

-0:125      bitwise and (mediump int)

-0:125        'i' (mediump int)

-0:125        'i' (mediump int)

-0:126      inclusive-or (mediump uint)

-0:126        'u' (mediump uint)

-0:126        'u' (mediump uint)

-0:127      exclusive-or (mediump 3-component vector of int)

-0:127        'iv3' (mediump 3-component vector of int)

-0:127        'iv3' (mediump 3-component vector of int)

-0:128      bitwise and (mediump 3-component vector of uint)

-0:128        'u' (mediump uint)

-0:128        'uv3' (mediump 3-component vector of uint)

-0:129      inclusive-or (mediump 3-component vector of uint)

-0:129        'uv3' (mediump 3-component vector of uint)

-0:129        'u' (mediump uint)

-0:130      and second child into first child (mediump 3-component vector of uint)

-0:130        'uv3' (mediump 3-component vector of uint)

-0:130        'u' (mediump uint)

-0:132      direct index (mediump int)

-0:132        'arr' (2-element array of mediump int)

+0:100      Pre-Decrement (temp mediump 2X2 matrix of float)

+0:100        'm2' (temp mediump 2X2 matrix of float)

+0:101      Post-Increment (temp mediump 4-component vector of int)

+0:101        'iv4' (temp mediump 4-component vector of int)

+0:103      Compare Not Equal (temp bool)

+0:103        'm4' (temp mediump 4X4 matrix of float)

+0:103        'm4' (temp mediump 4X4 matrix of float)

+0:104      Compare Equal (temp bool)

+0:104        'm2' (temp mediump 2X2 matrix of float)

+0:104        'm2' (temp mediump 2X2 matrix of float)

+0:105      Compare Less Than or Equal (temp bool)

+0:105        'i' (temp mediump int)

+0:105        'i' (temp mediump int)

+0:106      Compare Equal (temp bool)

+0:106        'a' (global 5-element array of mediump float)

+0:106        'a' (global 5-element array of mediump float)

+0:107      Compare Not Equal (temp bool)

+0:107        's' (global structure{global mediump int i})

+0:107        's' (global structure{global mediump int i})

+0:109      logical-and (temp bool)

+0:109        'b' (temp bool)

+0:109        'b' (temp bool)

+0:110      logical-or (temp bool)

+0:110        'b' (temp bool)

+0:110        'b' (temp bool)

+0:111      logical-xor (temp bool)

+0:111        'b' (temp bool)

+0:111        'b' (temp bool)

+0:113      Comma (temp mediump 3-component vector of uint)

+0:113        Negate conditional (temp bool)

+0:113          'b' (temp bool)

+0:113        'uv3' (temp mediump 3-component vector of uint)

+0:115      Bitwise not (temp mediump int)

+0:115        'i' (temp mediump int)

+0:116      Bitwise not (temp mediump uint)

+0:116        'u' (temp mediump uint)

+0:117      Bitwise not (temp mediump 3-component vector of uint)

+0:117        'uv3' (temp mediump 3-component vector of uint)

+0:118      Bitwise not (temp mediump 3-component vector of int)

+0:118        'iv3' (temp mediump 3-component vector of int)

+0:120      left shift second child into first child (temp mediump 3-component vector of uint)

+0:120        'uv3' (temp mediump 3-component vector of uint)

+0:120        'i' (temp mediump int)

+0:121      right-shift (temp mediump int)

+0:121        'i' (temp mediump int)

+0:121        'i' (temp mediump int)

+0:122      left-shift (temp mediump uint)

+0:122        'u' (temp mediump uint)

+0:122        'u' (temp mediump uint)

+0:123      right-shift (temp mediump 3-component vector of int)

+0:123        'iv3' (temp mediump 3-component vector of int)

+0:123        'iv3' (temp mediump 3-component vector of int)

+0:125      bitwise and (temp mediump int)

+0:125        'i' (temp mediump int)

+0:125        'i' (temp mediump int)

+0:126      inclusive-or (temp mediump uint)

+0:126        'u' (temp mediump uint)

+0:126        'u' (temp mediump uint)

+0:127      exclusive-or (temp mediump 3-component vector of int)

+0:127        'iv3' (temp mediump 3-component vector of int)

+0:127        'iv3' (temp mediump 3-component vector of int)

+0:128      bitwise and (temp mediump 3-component vector of uint)

+0:128        'u' (temp mediump uint)

+0:128        'uv3' (temp mediump 3-component vector of uint)

+0:129      inclusive-or (temp mediump 3-component vector of uint)

+0:129        'uv3' (temp mediump 3-component vector of uint)

+0:129        'u' (temp mediump uint)

+0:130      and second child into first child (temp mediump 3-component vector of uint)

+0:130        'uv3' (temp mediump 3-component vector of uint)

+0:130        'u' (temp mediump uint)

+0:132      direct index (temp mediump int)

+0:132        'arr' (temp 2-element array of mediump int)

 0:132        Constant:

 0:132          1 (const int)

-0:134      direct index (mediump int)

-0:134        'arr2' (3-element array of mediump int)

+0:134      direct index (temp mediump int)

+0:134        'arr2' (temp 3-element array of mediump int)

 0:134        Constant:

 0:134          2 (const int)

 0:?   Linker Objects

 0:?     'instanceName' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump float f})

-0:?     's' (structure{mediump int i})

-0:?     'a' (5-element array of mediump float)

+0:?     's' (global structure{global mediump int i})

+0:?     'a' (global 5-element array of mediump float)

 

diff --git a/Test/baseResults/300scope.vert.out b/Test/baseResults/300scope.vert.out
index a6e40ba..618ec05 100644
--- a/Test/baseResults/300scope.vert.out
+++ b/Test/baseResults/300scope.vert.out
@@ -23,7 +23,7 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:3  Function Definition: f(i1;i1;i1; (highp int)

+0:3  Function Definition: f(i1;i1;i1; (global highp int)

 0:3    Function Parameters: 

 0:3      'a' (in highp int)

 0:3      'b' (in highp int)

@@ -31,98 +31,98 @@
 0:?     Sequence

 0:8      Sequence

 0:8        Sequence

-0:8          move second child to first child (highp float)

-0:8            'a' (highp float)

-0:8            add (highp float)

-0:8              Convert int to float (highp float)

+0:8          move second child to first child (temp highp float)

+0:8            'a' (temp highp float)

+0:8            add (temp highp float)

+0:8              Convert int to float (temp highp float)

 0:8                'a' (in highp int)

 0:8              Constant:

 0:8                1.000000

 0:11      Branch: Return with expression

 0:11        'a' (in highp int)

-0:25  Function Definition: cos(f1; (highp float)

+0:25  Function Definition: cos(f1; (global highp float)

 0:25    Function Parameters: 

 0:25      'x' (in highp float)

 0:27    Sequence

 0:27      Branch: Return

-0:29  Function Definition: radians(b1; (bool)

+0:29  Function Definition: radians(b1; (global bool)

 0:29    Function Parameters: 

 0:29      'x' (in bool)

 0:31    Sequence

 0:31      Branch: Return

-0:36  Function Definition: main( (void)

+0:36  Function Definition: main( (global void)

 0:36    Function Parameters: 

 0:?     Sequence

-0:39      Function Call: g( (highp int)

-0:42      'sin' (highp float)

+0:39      Function Call: g( (temp highp int)

+0:42      'sin' (temp highp float)

 0:43      Constant:

 0:43        0.000000

-0:44      Function Call: f(i1;i1;i1; (highp int)

+0:44      Function Call: f(i1;i1;i1; (global highp int)

 0:44        Constant:

 0:44          1 (const int)

 0:44        Constant:

 0:44          2 (const int)

 0:44        Constant:

 0:44          3 (const int)

-0:47      move second child to first child (highp float)

-0:47        'f' (highp float)

+0:47      move second child to first child (temp highp float)

+0:47        'f' (temp highp float)

 0:47        Constant:

 0:47          3.000000

-0:49      move second child to first child (highp 4-component vector of float)

+0:49      move second child to first child (temp highp 4-component vector of float)

 0:49        'gl_Position' (invariant gl_Position highp 4-component vector of float)

-0:49        Construct vec4 (highp 4-component vector of float)

-0:49          'f' (highp float)

+0:49        Construct vec4 (temp highp 4-component vector of float)

+0:49          'f' (temp highp float)

 0:51      Sequence

 0:51        Sequence

-0:51          move second child to first child (highp int)

-0:51            'f' (highp int)

+0:51          move second child to first child (temp highp int)

+0:51            'f' (temp highp int)

 0:51            Constant:

 0:51              0 (const int)

 0:51        Loop with condition tested first

 0:51          Loop Condition

-0:51          Compare Less Than (bool)

-0:51            'f' (highp int)

+0:51          Compare Less Than (temp bool)

+0:51            'f' (temp highp int)

 0:51            Constant:

 0:51              10 (const int)

 0:51          Loop Body

-0:52          Pre-Increment (highp int)

-0:52            'f' (highp int)

+0:52          Pre-Increment (temp highp int)

+0:52            'f' (temp highp int)

 0:51          Loop Terminal Expression

-0:51          Pre-Increment (highp int)

-0:51            'f' (highp int)

+0:51          Pre-Increment (temp highp int)

+0:51            'f' (temp highp int)

 0:54      Sequence

-0:54        move second child to first child (highp int)

-0:54          'x' (highp int)

+0:54        move second child to first child (temp highp int)

+0:54          'x' (temp highp int)

 0:54          Constant:

 0:54            1 (const int)

 0:56      Sequence

 0:56        Sequence

-0:56          move second child to first child (highp float)

-0:56            'x' (highp float)

+0:56          move second child to first child (temp highp float)

+0:56            'x' (temp highp float)

 0:56            Constant:

 0:56              2.000000

-0:56          move second child to first child (highp float)

-0:56            'y' (highp float)

-0:56            'x' (highp float)

+0:56          move second child to first child (temp highp float)

+0:56            'y' (temp highp float)

+0:56            'x' (temp highp float)

 0:60      Sequence

 0:60        Sequence

-0:60          move second child to first child (highp int)

-0:60            'x' (highp int)

-0:60            'x' (highp int)

+0:60          move second child to first child (temp highp int)

+0:60            'x' (temp highp int)

+0:60            'x' (temp highp int)

 0:68      Sequence

 0:68        Sequence

-0:68          move second child to first child (structure{highp int x})

-0:68            'S' (structure{highp int x})

+0:68          move second child to first child (temp structure{temp highp int x})

+0:68            'S' (temp structure{temp highp int x})

 0:68            Constant:

 0:68              0 (const int)

-0:69        x: direct index for structure (highp int)

-0:69          'S' (structure{highp int x})

+0:69        x: direct index for structure (temp highp int)

+0:69          'S' (temp structure{temp highp int x})

 0:69          Constant:

 0:69            0 (const int)

 0:73      Constant:

 0:73        0.000000

 0:?   Linker Objects

-0:?     'b' (bool)

+0:?     'b' (global bool)

 0:?     'gl_VertexID' (gl_VertexId highp int)

 0:?     'gl_InstanceID' (gl_InstanceId highp int)

 

@@ -132,7 +132,7 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:3  Function Definition: f(i1;i1;i1; (highp int)

+0:3  Function Definition: f(i1;i1;i1; (global highp int)

 0:3    Function Parameters: 

 0:3      'a' (in highp int)

 0:3      'b' (in highp int)

@@ -140,98 +140,98 @@
 0:?     Sequence

 0:8      Sequence

 0:8        Sequence

-0:8          move second child to first child (highp float)

-0:8            'a' (highp float)

-0:8            add (highp float)

-0:8              Convert int to float (highp float)

+0:8          move second child to first child (temp highp float)

+0:8            'a' (temp highp float)

+0:8            add (temp highp float)

+0:8              Convert int to float (temp highp float)

 0:8                'a' (in highp int)

 0:8              Constant:

 0:8                1.000000

 0:11      Branch: Return with expression

 0:11        'a' (in highp int)

-0:25  Function Definition: cos(f1; (highp float)

+0:25  Function Definition: cos(f1; (global highp float)

 0:25    Function Parameters: 

 0:25      'x' (in highp float)

 0:27    Sequence

 0:27      Branch: Return

-0:29  Function Definition: radians(b1; (bool)

+0:29  Function Definition: radians(b1; (global bool)

 0:29    Function Parameters: 

 0:29      'x' (in bool)

 0:31    Sequence

 0:31      Branch: Return

-0:36  Function Definition: main( (void)

+0:36  Function Definition: main( (global void)

 0:36    Function Parameters: 

 0:?     Sequence

-0:39      Function Call: g( (highp int)

-0:42      'sin' (highp float)

+0:39      Function Call: g( (temp highp int)

+0:42      'sin' (temp highp float)

 0:43      Constant:

 0:43        0.000000

-0:44      Function Call: f(i1;i1;i1; (highp int)

+0:44      Function Call: f(i1;i1;i1; (global highp int)

 0:44        Constant:

 0:44          1 (const int)

 0:44        Constant:

 0:44          2 (const int)

 0:44        Constant:

 0:44          3 (const int)

-0:47      move second child to first child (highp float)

-0:47        'f' (highp float)

+0:47      move second child to first child (temp highp float)

+0:47        'f' (temp highp float)

 0:47        Constant:

 0:47          3.000000

-0:49      move second child to first child (highp 4-component vector of float)

+0:49      move second child to first child (temp highp 4-component vector of float)

 0:49        'gl_Position' (invariant gl_Position highp 4-component vector of float)

-0:49        Construct vec4 (highp 4-component vector of float)

-0:49          'f' (highp float)

+0:49        Construct vec4 (temp highp 4-component vector of float)

+0:49          'f' (temp highp float)

 0:51      Sequence

 0:51        Sequence

-0:51          move second child to first child (highp int)

-0:51            'f' (highp int)

+0:51          move second child to first child (temp highp int)

+0:51            'f' (temp highp int)

 0:51            Constant:

 0:51              0 (const int)

 0:51        Loop with condition tested first

 0:51          Loop Condition

-0:51          Compare Less Than (bool)

-0:51            'f' (highp int)

+0:51          Compare Less Than (temp bool)

+0:51            'f' (temp highp int)

 0:51            Constant:

 0:51              10 (const int)

 0:51          Loop Body

-0:52          Pre-Increment (highp int)

-0:52            'f' (highp int)

+0:52          Pre-Increment (temp highp int)

+0:52            'f' (temp highp int)

 0:51          Loop Terminal Expression

-0:51          Pre-Increment (highp int)

-0:51            'f' (highp int)

+0:51          Pre-Increment (temp highp int)

+0:51            'f' (temp highp int)

 0:54      Sequence

-0:54        move second child to first child (highp int)

-0:54          'x' (highp int)

+0:54        move second child to first child (temp highp int)

+0:54          'x' (temp highp int)

 0:54          Constant:

 0:54            1 (const int)

 0:56      Sequence

 0:56        Sequence

-0:56          move second child to first child (highp float)

-0:56            'x' (highp float)

+0:56          move second child to first child (temp highp float)

+0:56            'x' (temp highp float)

 0:56            Constant:

 0:56              2.000000

-0:56          move second child to first child (highp float)

-0:56            'y' (highp float)

-0:56            'x' (highp float)

+0:56          move second child to first child (temp highp float)

+0:56            'y' (temp highp float)

+0:56            'x' (temp highp float)

 0:60      Sequence

 0:60        Sequence

-0:60          move second child to first child (highp int)

-0:60            'x' (highp int)

-0:60            'x' (highp int)

+0:60          move second child to first child (temp highp int)

+0:60            'x' (temp highp int)

+0:60            'x' (temp highp int)

 0:68      Sequence

 0:68        Sequence

-0:68          move second child to first child (structure{highp int x})

-0:68            'S' (structure{highp int x})

+0:68          move second child to first child (temp structure{temp highp int x})

+0:68            'S' (temp structure{temp highp int x})

 0:68            Constant:

 0:68              0 (const int)

-0:69        x: direct index for structure (highp int)

-0:69          'S' (structure{highp int x})

+0:69        x: direct index for structure (temp highp int)

+0:69          'S' (temp structure{temp highp int x})

 0:69          Constant:

 0:69            0 (const int)

 0:73      Constant:

 0:73        0.000000

 0:?   Linker Objects

-0:?     'b' (bool)

+0:?     'b' (global bool)

 0:?     'gl_VertexID' (gl_VertexId highp int)

 0:?     'gl_InstanceID' (gl_InstanceId highp int)

 

diff --git a/Test/baseResults/310.comp.out b/Test/baseResults/310.comp.out
index 0f759c5..7cc3300 100644
--- a/Test/baseResults/310.comp.out
+++ b/Test/baseResults/310.comp.out
@@ -78,33 +78,33 @@
 Shader version: 310

 local_size = (2, 1, 4096)

 ERROR: node is still EOpNull!

-0:27  Function Definition: main( (void)

+0:27  Function Definition: main( (global void)

 0:27    Function Parameters: 

 0:29    Sequence

-0:29      Barrier (void)

-0:30      MemoryBarrier (void)

-0:31      MemoryBarrierAtomicCounter (void)

-0:32      MemoryBarrierBuffer (void)

-0:33      MemoryBarrierShared (void)

-0:34      MemoryBarrierImage (void)

-0:35      GroupMemoryBarrier (void)

-0:36      move second child to first child (highp int)

+0:29      Barrier (global void)

+0:30      MemoryBarrier (global void)

+0:31      MemoryBarrierAtomicCounter (global void)

+0:32      MemoryBarrierBuffer (global void)

+0:33      MemoryBarrierShared (global void)

+0:34      MemoryBarrierImage (global void)

+0:35      GroupMemoryBarrier (global void)

+0:36      move second child to first child (temp highp int)

 0:36        value: direct index for structure (layout(column_major shared ) buffer highp int)

 0:36          'anon@0' (layout(column_major shared ) buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:36          Constant:

 0:36            0 (const uint)

-0:36        Convert float to int (highp int)

-0:36          indirect index (layout(column_major shared ) highp float)

+0:36        Convert float to int (temp highp int)

+0:36          indirect index (layout(column_major shared ) temp highp float)

 0:36            values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:36              'anon@0' (layout(column_major shared ) buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:36              Constant:

 0:36                1 (const uint)

 0:36            'gl_LocalInvocationIndex' (in highp uint)

-0:59  Function Definition: foo( (void)

+0:59  Function Definition: foo( (global void)

 0:59    Function Parameters: 

 0:61    Sequence

-0:61      move second child to first child (highp float)

-0:61        direct index (layout(column_major shared ) highp float)

+0:61      move second child to first child (temp highp float)

+0:61        direct index (layout(column_major shared ) temp highp float)

 0:61          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:61            'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:61            Constant:

@@ -113,19 +113,19 @@
 0:61            2 (const int)

 0:61        Constant:

 0:61          4.700000

-0:62      array length (highp int)

+0:62      array length (temp highp int)

 0:62        values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:62          'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:62          Constant:

 0:62            1 (const int)

-0:63      Pre-Increment (highp 4-component vector of float)

+0:63      Pre-Increment (temp highp 4-component vector of float)

 0:63        's' (shared highp 4-component vector of float)

-0:84  Function Definition: qux( (void)

+0:84  Function Definition: qux( (global void)

 0:84    Function Parameters: 

 0:86    Sequence

 0:86      Sequence

-0:86        move second child to first child (highp int)

-0:86          'i' (highp int)

+0:86        move second child to first child (temp highp int)

+0:86          'i' (temp highp int)

 0:86          Constant:

 0:86            4 (const int)

 0:87      Constant:

@@ -137,123 +137,123 @@
 0:90      Constant:

 0:90        0.000000

 0:91      Sequence

-0:91        move second child to first child (highp 4-component vector of int)

-0:91          'pos' (highp 4-component vector of int)

-0:91          Function Call: imageLoad(iI21;vi2; (highp 4-component vector of int)

+0:91        move second child to first child (temp highp 4-component vector of int)

+0:91          'pos' (temp highp 4-component vector of int)

+0:91          Function Call: imageLoad(iI21;vi2; (global highp 4-component vector of int)

 0:91            'iimg2D' (layout(r32i ) uniform highp iimage2D)

-0:91            Construct ivec2 (2-component vector of int)

-0:91              'i' (highp int)

-0:91              'i' (highp int)

-0:92      Function Call: imageStore(iIA21;vi3;vi4; (highp void)

+0:91            Construct ivec2 (temp 2-component vector of int)

+0:91              'i' (temp highp int)

+0:91              'i' (temp highp int)

+0:92      Function Call: imageStore(iIA21;vi3;vi4; (global highp void)

 0:92        'ii2da' (writeonly uniform highp iimage2DArray)

-0:92        Construct ivec3 (3-component vector of int)

-0:92          'i' (highp int)

-0:92          'i' (highp int)

-0:92          'i' (highp int)

+0:92        Construct ivec3 (temp 3-component vector of int)

+0:92          'i' (temp highp int)

+0:92          'i' (temp highp int)

+0:92          'i' (temp highp int)

 0:92        Constant:

 0:92          0 (const int)

 0:92          0 (const int)

 0:92          0 (const int)

 0:92          0 (const int)

-0:93      Function Call: imageLoad(I21;vi2; (highp 4-component vector of float)

+0:93      Function Call: imageLoad(I21;vi2; (global highp 4-component vector of float)

 0:93        'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D)

-0:93        Construct ivec2 (2-component vector of int)

-0:93          'i' (highp int)

-0:93          'i' (highp int)

-0:94      Function Call: imageLoad(iIA21;vi3; (highp 4-component vector of int)

+0:93        Construct ivec2 (temp 2-component vector of int)

+0:93          'i' (temp highp int)

+0:93          'i' (temp highp int)

+0:94      Function Call: imageLoad(iIA21;vi3; (global highp 4-component vector of int)

 0:94        'ii2da' (writeonly uniform highp iimage2DArray)

-0:94        Construct ivec3 (3-component vector of int)

-0:94          'i' (highp int)

-0:94          'i' (highp int)

-0:94          'i' (highp int)

-0:100  Function Definition: passr(iI21; (void)

+0:94        Construct ivec3 (temp 3-component vector of int)

+0:94          'i' (temp highp int)

+0:94          'i' (temp highp int)

+0:94          'i' (temp highp int)

+0:100  Function Definition: passr(iI21; (global void)

 0:100    Function Parameters: 

 0:100      'image' (coherent readonly in highp iimage2D)

-0:107  Function Definition: passrc( (void)

+0:107  Function Definition: passrc( (global void)

 0:107    Function Parameters: 

 0:109    Sequence

-0:109      Function Call: passr(iI21; (void)

+0:109      Function Call: passr(iI21; (global void)

 0:109        'qualim1' (layout(r32i ) coherent readonly uniform highp iimage2D)

-0:110      Function Call: passr(iI21; (void)

+0:110      Function Call: passr(iI21; (global void)

 0:110        'qualim2' (layout(r32i ) coherent restrict readonly uniform highp iimage2D)

-0:111      Function Call: passr(iI21; (void)

+0:111      Function Call: passr(iI21; (global void)

 0:111        'iimg2D' (layout(r32i ) uniform highp iimage2D)

-0:123  Function Definition: func(au1; (highp uint)

+0:123  Function Definition: func(au1; (global highp uint)

 0:123    Function Parameters: 

 0:123      'c' (in highp atomic_uint)

 0:125    Sequence

 0:125      Branch: Return with expression

-0:125        Function Call: atomicCounterIncrement(au1; (highp uint)

+0:125        Function Call: atomicCounterIncrement(au1; (global highp uint)

 0:125          'c' (in highp atomic_uint)

-0:128  Function Definition: func2(au1; (highp uint)

+0:128  Function Definition: func2(au1; (global highp uint)

 0:128    Function Parameters: 

 0:128      'c' (out highp atomic_uint)

 0:130    Sequence

 0:130      Branch: Return with expression

 0:130        'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)

 0:131      Branch: Return with expression

-0:131        Function Call: atomicCounter(au1; (highp uint)

+0:131        Function Call: atomicCounter(au1; (global highp uint)

 0:131          'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)

-0:134  Function Definition: mainAC( (void)

+0:134  Function Definition: mainAC( (global void)

 0:134    Function Parameters: 

 0:?     Sequence

 0:137      Sequence

-0:137        move second child to first child (highp uint)

-0:137          'val' (highp uint)

-0:137          Function Call: atomicCounter(au1; (highp uint)

+0:137        move second child to first child (temp highp uint)

+0:137          'val' (temp highp uint)

+0:137          Function Call: atomicCounter(au1; (global highp uint)

 0:137            'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)

-0:138      Function Call: atomicCounterDecrement(au1; (highp uint)

+0:138      Function Call: atomicCounterDecrement(au1; (global highp uint)

 0:138        'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)

-0:146  Function Definition: opac( (void)

+0:146  Function Definition: opac( (global void)

 0:146    Function Parameters: 

 0:?     Sequence

-0:149      indirect index (highp int)

-0:149        'a' (3-element array of highp int)

+0:149      indirect index (temp highp int)

+0:149        'a' (temp 3-element array of highp int)

 0:149        'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)

-0:150      direct index (layout(binding=2 offset=4 ) highp atomic_uint)

+0:150      direct index (layout(binding=2 offset=4 ) temp highp atomic_uint)

 0:150        'countArr' (layout(binding=2 offset=4 ) uniform 4-element array of highp atomic_uint)

 0:150        Constant:

 0:150          2 (const int)

-0:151      indirect index (layout(binding=2 offset=4 ) highp atomic_uint)

+0:151      indirect index (layout(binding=2 offset=4 ) temp highp atomic_uint)

 0:151        'countArr' (layout(binding=2 offset=4 ) uniform 4-element array of highp atomic_uint)

 0:151        'i' (uniform highp int)

-0:157  Function Definition: atoms( (void)

+0:157  Function Definition: atoms( (global void)

 0:157    Function Parameters: 

 0:159    Sequence

 0:159      Sequence

-0:159        move second child to first child (highp int)

-0:159          'origi' (highp int)

-0:159          Function Call: atomicAdd(i1;i1; (highp int)

+0:159        move second child to first child (temp highp int)

+0:159          'origi' (temp highp int)

+0:159          Function Call: atomicAdd(i1;i1; (global highp int)

 0:159            'atomi' (shared highp int)

 0:159            Constant:

 0:159              3 (const int)

 0:160      Sequence

-0:160        move second child to first child (highp uint)

-0:160          'origu' (highp uint)

-0:160          Function Call: atomicAnd(u1;u1; (highp uint)

+0:160        move second child to first child (temp highp uint)

+0:160          'origu' (temp highp uint)

+0:160          Function Call: atomicAnd(u1;u1; (global highp uint)

 0:160            'atomu' (shared highp uint)

 0:160            Constant:

 0:160              7 (const uint)

-0:161      move second child to first child (highp int)

-0:161        'origi' (highp int)

-0:161        Function Call: atomicExchange(i1;i1; (highp int)

+0:161      move second child to first child (temp highp int)

+0:161        'origi' (temp highp int)

+0:161        Function Call: atomicExchange(i1;i1; (global highp int)

 0:161          'atomi' (shared highp int)

 0:161          Constant:

 0:161            4 (const int)

-0:162      move second child to first child (highp uint)

-0:162        'origu' (highp uint)

-0:162        Function Call: atomicCompSwap(u1;u1;u1; (highp uint)

+0:162      move second child to first child (temp highp uint)

+0:162        'origu' (temp highp uint)

+0:162        Function Call: atomicCompSwap(u1;u1;u1; (global highp uint)

 0:162          'atomu' (shared highp uint)

 0:162          Constant:

 0:162            10 (const uint)

 0:162          Constant:

 0:162            8 (const uint)

-0:191  Function Definition: foowo( (void)

+0:191  Function Definition: foowo( (global void)

 0:191    Function Parameters: 

 0:?     Sequence

-0:194      move second child to first child (highp float)

-0:194        'g' (highp float)

-0:194        direct index (layout(column_major shared ) highp float)

+0:194      move second child to first child (temp highp float)

+0:194        'g' (temp highp float)

+0:194        direct index (layout(column_major shared ) temp highp float)

 0:194          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:194            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:194            Constant:

@@ -261,67 +261,67 @@
 0:194          Constant:

 0:194            2 (const int)

 0:195      Sequence

-0:195        move second child to first child (highp float)

-0:195          'f' (highp float)

-0:195          direct index (layout(column_major shared ) highp float)

+0:195        move second child to first child (temp highp float)

+0:195          'f' (temp highp float)

+0:195          direct index (layout(column_major shared ) temp highp float)

 0:195            values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:195              'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:195              Constant:

 0:195                1 (const int)

 0:195            Constant:

 0:195              2 (const int)

-0:196      Pre-Increment (highp float)

-0:196        direct index (layout(column_major shared ) highp float)

+0:196      Pre-Increment (temp highp float)

+0:196        direct index (layout(column_major shared ) temp highp float)

 0:196          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:196            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:196            Constant:

 0:196              1 (const int)

 0:196          Constant:

 0:196            2 (const int)

-0:197      Post-Decrement (highp float)

-0:197        direct index (layout(column_major shared ) highp float)

+0:197      Post-Decrement (temp highp float)

+0:197        direct index (layout(column_major shared ) temp highp float)

 0:197          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:197            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:197            Constant:

 0:197              1 (const int)

 0:197          Constant:

 0:197            2 (const int)

-0:198      add (highp float)

-0:198        'f' (highp float)

-0:198        direct index (layout(column_major shared ) highp float)

+0:198      add (temp highp float)

+0:198        'f' (temp highp float)

+0:198        direct index (layout(column_major shared ) temp highp float)

 0:198          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:198            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:198            Constant:

 0:198              1 (const int)

 0:198          Constant:

 0:198            2 (const int)

-0:199      subtract (highp float)

-0:199        direct index (layout(column_major shared ) highp float)

+0:199      subtract (temp highp float)

+0:199        direct index (layout(column_major shared ) temp highp float)

 0:199          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:199            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:199            Constant:

 0:199              1 (const int)

 0:199          Constant:

 0:199            2 (const int)

-0:199        'f' (highp float)

-0:201      Test condition and select (highp float)

+0:199        'f' (temp highp float)

+0:201      Test condition and select (temp highp float)

 0:201        Condition

-0:201        'b' (bool)

+0:201        'b' (temp bool)

 0:201        true case

-0:201        'f' (highp float)

+0:201        'f' (temp highp float)

 0:201        false case

-0:201        direct index (layout(column_major shared ) highp float)

+0:201        direct index (layout(column_major shared ) temp highp float)

 0:201          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:201            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:201            Constant:

 0:201              1 (const int)

 0:201          Constant:

 0:201            2 (const int)

-0:202      Test condition and select (layout(column_major shared ) highp float)

+0:202      Test condition and select (layout(column_major shared ) temp highp float)

 0:202        Condition

-0:202        'b' (bool)

+0:202        'b' (temp bool)

 0:202        true case

-0:202        direct index (layout(column_major shared ) highp float)

+0:202        direct index (layout(column_major shared ) temp highp float)

 0:202          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:202            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:202            Constant:

@@ -329,12 +329,12 @@
 0:202          Constant:

 0:202            2 (const int)

 0:202        false case

-0:202        'f' (highp float)

-0:203      Test condition and select (void)

+0:202        'f' (temp highp float)

+0:203      Test condition and select (temp void)

 0:203        Condition

-0:203        Compare Equal (bool)

-0:203          'f' (highp float)

-0:203          direct index (layout(column_major shared ) highp float)

+0:203        Compare Equal (temp bool)

+0:203          'f' (temp highp float)

+0:203          direct index (layout(column_major shared ) temp highp float)

 0:203            values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:203              'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:203              Constant:

@@ -342,13 +342,13 @@
 0:203            Constant:

 0:203              2 (const int)

 0:203        true case

-0:204        Pre-Increment (highp float)

-0:204          'f' (highp float)

-0:205      Test condition and select (void)

+0:204        Pre-Increment (temp highp float)

+0:204          'f' (temp highp float)

+0:205      Test condition and select (temp void)

 0:205        Condition

-0:205        Compare Greater Than or Equal (bool)

-0:205          'f' (highp float)

-0:205          direct index (layout(column_major shared ) highp float)

+0:205        Compare Greater Than or Equal (temp bool)

+0:205          'f' (temp highp float)

+0:205          direct index (layout(column_major shared ) temp highp float)

 0:205            values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:205              'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:205              Constant:

@@ -356,13 +356,13 @@
 0:205            Constant:

 0:205              2 (const int)

 0:205        true case

-0:206        Pre-Increment (highp float)

-0:206          'f' (highp float)

-0:207      move second child to first child (highp float)

-0:207        'f' (highp float)

-0:207        direct index (highp float)

-0:207          Construct vec3 (highp 3-component vector of float)

-0:207            direct index (layout(column_major shared ) highp float)

+0:206        Pre-Increment (temp highp float)

+0:206          'f' (temp highp float)

+0:207      move second child to first child (temp highp float)

+0:207        'f' (temp highp float)

+0:207        direct index (temp highp float)

+0:207          Construct vec3 (temp highp 3-component vector of float)

+0:207            direct index (layout(column_major shared ) temp highp float)

 0:207              values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:207                'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:207                Constant:

@@ -371,13 +371,13 @@
 0:207                2 (const int)

 0:207          Constant:

 0:207            0 (const int)

-0:208      Bitwise not (highp int)

+0:208      Bitwise not (temp highp int)

 0:208        value: direct index for structure (layout(column_major shared ) buffer highp int)

 0:208          'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:208          Constant:

 0:208            0 (const int)

-0:209      move second child to first child (highp float)

-0:209        direct index (layout(column_major shared ) highp float)

+0:209      move second child to first child (temp highp float)

+0:209        direct index (layout(column_major shared ) temp highp float)

 0:209          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:209            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:209            Constant:

@@ -386,25 +386,25 @@
 0:209            2 (const int)

 0:209        Constant:

 0:209          3.400000

-0:218  Function Definition: foomultio( (void)

+0:218  Function Definition: foomultio( (global void)

 0:218    Function Parameters: 

 0:?     Sequence

-0:221      move second child to first child (highp float)

-0:221        'g' (highp float)

-0:221        direct index (layout(column_major shared ) highp float)

+0:221      move second child to first child (temp highp float)

+0:221        'g' (temp highp float)

+0:221        direct index (layout(column_major shared ) temp highp float)

 0:221          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:221            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:221            Constant:

 0:221              1 (const int)

 0:221          Constant:

 0:221            2 (const int)

-0:222      Bitwise not (highp int)

+0:222      Bitwise not (temp highp int)

 0:222        value: direct index for structure (layout(column_major shared ) buffer highp int)

 0:222          'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:222          Constant:

 0:222            0 (const int)

-0:223      move second child to first child (highp float)

-0:223        direct index (layout(column_major shared ) highp float)

+0:223      move second child to first child (temp highp float)

+0:223        direct index (layout(column_major shared ) temp highp float)

 0:223          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:223            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:223            Constant:

@@ -413,7 +413,7 @@
 0:223            2 (const int)

 0:223        Constant:

 0:223          3.400000

-0:224      move second child to first child (highp int)

+0:224      move second child to first child (temp highp int)

 0:224        value: direct index for structure (layout(column_major shared ) buffer highp int)

 0:224          'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:224          Constant:

@@ -435,9 +435,9 @@
 0:?     's' (shared highp 4-component vector of float)

 0:?     'sl' (layout(location=2 ) shared highp 4-component vector of float)

 0:?     'fs' (shared highp float)

-0:?     'arrX' (2-element array of highp int)

-0:?     'arrY' (1-element array of highp int)

-0:?     'arrZ' (4096-element array of highp int)

+0:?     'arrX' (global 2-element array of highp int)

+0:?     'arrY' (global 1-element array of highp int)

+0:?     'arrZ' (global 4096-element array of highp int)

 0:?     'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:?     'v' (buffer highp 4-component vector of float)

 0:?     'us2dbad' (uniform mediump usampler2D)

@@ -448,8 +448,8 @@
 0:?     'iimg2Drgba' (layout(rgba32i ) readonly uniform highp iimage2D)

 0:?     'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D)

 0:?     'uimg2D' (layout(r32ui ) uniform highp uimage2D)

-0:?     'vol' (volatile highp float)

-0:?     'vol2' (readonly highp int)

+0:?     'vol' (volatile temp highp float)

+0:?     'vol2' (readonly temp highp int)

 0:?     'qualim1' (layout(r32i ) coherent readonly uniform highp iimage2D)

 0:?     'qualim2' (layout(r32i ) coherent restrict readonly uniform highp iimage2D)

 0:?     'i1bad' (layout(rg8i ) readonly uniform highp uimage2D)

@@ -464,8 +464,8 @@
 0:?     'i' (uniform highp int)

 0:?     'atomi' (shared highp int)

 0:?     'atomu' (shared highp uint)

-0:?     'pfoo' (highp int)

-0:?     'dm' (2X4 matrix of double)

+0:?     'pfoo' (temp highp int)

+0:?     'dm' (global 2X4 matrix of double)

 0:?     'sca' (uniform mediump samplerCubeArray)

 0:?     'i2dr' (uniform mediump iimage2DRect)

 0:?     'i2dms' (uniform lowp image2DMS)

@@ -487,33 +487,33 @@
 Shader version: 310

 local_size = (2, 1, 4096)

 ERROR: node is still EOpNull!

-0:27  Function Definition: main( (void)

+0:27  Function Definition: main( (global void)

 0:27    Function Parameters: 

 0:29    Sequence

-0:29      Barrier (void)

-0:30      MemoryBarrier (void)

-0:31      MemoryBarrierAtomicCounter (void)

-0:32      MemoryBarrierBuffer (void)

-0:33      MemoryBarrierShared (void)

-0:34      MemoryBarrierImage (void)

-0:35      GroupMemoryBarrier (void)

-0:36      move second child to first child (highp int)

+0:29      Barrier (global void)

+0:30      MemoryBarrier (global void)

+0:31      MemoryBarrierAtomicCounter (global void)

+0:32      MemoryBarrierBuffer (global void)

+0:33      MemoryBarrierShared (global void)

+0:34      MemoryBarrierImage (global void)

+0:35      GroupMemoryBarrier (global void)

+0:36      move second child to first child (temp highp int)

 0:36        value: direct index for structure (layout(column_major shared ) buffer highp int)

 0:36          'anon@0' (layout(column_major shared ) buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:36          Constant:

 0:36            0 (const uint)

-0:36        Convert float to int (highp int)

-0:36          indirect index (layout(column_major shared ) highp float)

+0:36        Convert float to int (temp highp int)

+0:36          indirect index (layout(column_major shared ) temp highp float)

 0:36            values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:36              'anon@0' (layout(column_major shared ) buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:36              Constant:

 0:36                1 (const uint)

 0:36            'gl_LocalInvocationIndex' (in highp uint)

-0:59  Function Definition: foo( (void)

+0:59  Function Definition: foo( (global void)

 0:59    Function Parameters: 

 0:61    Sequence

-0:61      move second child to first child (highp float)

-0:61        direct index (layout(column_major shared ) highp float)

+0:61      move second child to first child (temp highp float)

+0:61        direct index (layout(column_major shared ) temp highp float)

 0:61          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:61            'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:61            Constant:

@@ -522,19 +522,19 @@
 0:61            2 (const int)

 0:61        Constant:

 0:61          4.700000

-0:62      array length (highp int)

+0:62      array length (temp highp int)

 0:62        values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:62          'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:62          Constant:

 0:62            1 (const int)

-0:63      Pre-Increment (highp 4-component vector of float)

+0:63      Pre-Increment (temp highp 4-component vector of float)

 0:63        's' (shared highp 4-component vector of float)

-0:84  Function Definition: qux( (void)

+0:84  Function Definition: qux( (global void)

 0:84    Function Parameters: 

 0:86    Sequence

 0:86      Sequence

-0:86        move second child to first child (highp int)

-0:86          'i' (highp int)

+0:86        move second child to first child (temp highp int)

+0:86          'i' (temp highp int)

 0:86          Constant:

 0:86            4 (const int)

 0:87      Constant:

@@ -546,123 +546,123 @@
 0:90      Constant:

 0:90        0.000000

 0:91      Sequence

-0:91        move second child to first child (highp 4-component vector of int)

-0:91          'pos' (highp 4-component vector of int)

-0:91          Function Call: imageLoad(iI21;vi2; (highp 4-component vector of int)

+0:91        move second child to first child (temp highp 4-component vector of int)

+0:91          'pos' (temp highp 4-component vector of int)

+0:91          Function Call: imageLoad(iI21;vi2; (global highp 4-component vector of int)

 0:91            'iimg2D' (layout(r32i ) uniform highp iimage2D)

-0:91            Construct ivec2 (2-component vector of int)

-0:91              'i' (highp int)

-0:91              'i' (highp int)

-0:92      Function Call: imageStore(iIA21;vi3;vi4; (highp void)

+0:91            Construct ivec2 (temp 2-component vector of int)

+0:91              'i' (temp highp int)

+0:91              'i' (temp highp int)

+0:92      Function Call: imageStore(iIA21;vi3;vi4; (global highp void)

 0:92        'ii2da' (writeonly uniform highp iimage2DArray)

-0:92        Construct ivec3 (3-component vector of int)

-0:92          'i' (highp int)

-0:92          'i' (highp int)

-0:92          'i' (highp int)

+0:92        Construct ivec3 (temp 3-component vector of int)

+0:92          'i' (temp highp int)

+0:92          'i' (temp highp int)

+0:92          'i' (temp highp int)

 0:92        Constant:

 0:92          0 (const int)

 0:92          0 (const int)

 0:92          0 (const int)

 0:92          0 (const int)

-0:93      Function Call: imageLoad(I21;vi2; (highp 4-component vector of float)

+0:93      Function Call: imageLoad(I21;vi2; (global highp 4-component vector of float)

 0:93        'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D)

-0:93        Construct ivec2 (2-component vector of int)

-0:93          'i' (highp int)

-0:93          'i' (highp int)

-0:94      Function Call: imageLoad(iIA21;vi3; (highp 4-component vector of int)

+0:93        Construct ivec2 (temp 2-component vector of int)

+0:93          'i' (temp highp int)

+0:93          'i' (temp highp int)

+0:94      Function Call: imageLoad(iIA21;vi3; (global highp 4-component vector of int)

 0:94        'ii2da' (writeonly uniform highp iimage2DArray)

-0:94        Construct ivec3 (3-component vector of int)

-0:94          'i' (highp int)

-0:94          'i' (highp int)

-0:94          'i' (highp int)

-0:100  Function Definition: passr(iI21; (void)

+0:94        Construct ivec3 (temp 3-component vector of int)

+0:94          'i' (temp highp int)

+0:94          'i' (temp highp int)

+0:94          'i' (temp highp int)

+0:100  Function Definition: passr(iI21; (global void)

 0:100    Function Parameters: 

 0:100      'image' (coherent readonly in highp iimage2D)

-0:107  Function Definition: passrc( (void)

+0:107  Function Definition: passrc( (global void)

 0:107    Function Parameters: 

 0:109    Sequence

-0:109      Function Call: passr(iI21; (void)

+0:109      Function Call: passr(iI21; (global void)

 0:109        'qualim1' (layout(r32i ) coherent readonly uniform highp iimage2D)

-0:110      Function Call: passr(iI21; (void)

+0:110      Function Call: passr(iI21; (global void)

 0:110        'qualim2' (layout(r32i ) coherent restrict readonly uniform highp iimage2D)

-0:111      Function Call: passr(iI21; (void)

+0:111      Function Call: passr(iI21; (global void)

 0:111        'iimg2D' (layout(r32i ) uniform highp iimage2D)

-0:123  Function Definition: func(au1; (highp uint)

+0:123  Function Definition: func(au1; (global highp uint)

 0:123    Function Parameters: 

 0:123      'c' (in highp atomic_uint)

 0:125    Sequence

 0:125      Branch: Return with expression

-0:125        Function Call: atomicCounterIncrement(au1; (highp uint)

+0:125        Function Call: atomicCounterIncrement(au1; (global highp uint)

 0:125          'c' (in highp atomic_uint)

-0:128  Function Definition: func2(au1; (highp uint)

+0:128  Function Definition: func2(au1; (global highp uint)

 0:128    Function Parameters: 

 0:128      'c' (out highp atomic_uint)

 0:130    Sequence

 0:130      Branch: Return with expression

 0:130        'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)

 0:131      Branch: Return with expression

-0:131        Function Call: atomicCounter(au1; (highp uint)

+0:131        Function Call: atomicCounter(au1; (global highp uint)

 0:131          'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)

-0:134  Function Definition: mainAC( (void)

+0:134  Function Definition: mainAC( (global void)

 0:134    Function Parameters: 

 0:?     Sequence

 0:137      Sequence

-0:137        move second child to first child (highp uint)

-0:137          'val' (highp uint)

-0:137          Function Call: atomicCounter(au1; (highp uint)

+0:137        move second child to first child (temp highp uint)

+0:137          'val' (temp highp uint)

+0:137          Function Call: atomicCounter(au1; (global highp uint)

 0:137            'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)

-0:138      Function Call: atomicCounterDecrement(au1; (highp uint)

+0:138      Function Call: atomicCounterDecrement(au1; (global highp uint)

 0:138        'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)

-0:146  Function Definition: opac( (void)

+0:146  Function Definition: opac( (global void)

 0:146    Function Parameters: 

 0:?     Sequence

-0:149      indirect index (highp int)

-0:149        'a' (3-element array of highp int)

+0:149      indirect index (temp highp int)

+0:149        'a' (temp 3-element array of highp int)

 0:149        'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)

-0:150      direct index (layout(binding=2 offset=4 ) highp atomic_uint)

+0:150      direct index (layout(binding=2 offset=4 ) temp highp atomic_uint)

 0:150        'countArr' (layout(binding=2 offset=4 ) uniform 4-element array of highp atomic_uint)

 0:150        Constant:

 0:150          2 (const int)

-0:151      indirect index (layout(binding=2 offset=4 ) highp atomic_uint)

+0:151      indirect index (layout(binding=2 offset=4 ) temp highp atomic_uint)

 0:151        'countArr' (layout(binding=2 offset=4 ) uniform 4-element array of highp atomic_uint)

 0:151        'i' (uniform highp int)

-0:157  Function Definition: atoms( (void)

+0:157  Function Definition: atoms( (global void)

 0:157    Function Parameters: 

 0:159    Sequence

 0:159      Sequence

-0:159        move second child to first child (highp int)

-0:159          'origi' (highp int)

-0:159          Function Call: atomicAdd(i1;i1; (highp int)

+0:159        move second child to first child (temp highp int)

+0:159          'origi' (temp highp int)

+0:159          Function Call: atomicAdd(i1;i1; (global highp int)

 0:159            'atomi' (shared highp int)

 0:159            Constant:

 0:159              3 (const int)

 0:160      Sequence

-0:160        move second child to first child (highp uint)

-0:160          'origu' (highp uint)

-0:160          Function Call: atomicAnd(u1;u1; (highp uint)

+0:160        move second child to first child (temp highp uint)

+0:160          'origu' (temp highp uint)

+0:160          Function Call: atomicAnd(u1;u1; (global highp uint)

 0:160            'atomu' (shared highp uint)

 0:160            Constant:

 0:160              7 (const uint)

-0:161      move second child to first child (highp int)

-0:161        'origi' (highp int)

-0:161        Function Call: atomicExchange(i1;i1; (highp int)

+0:161      move second child to first child (temp highp int)

+0:161        'origi' (temp highp int)

+0:161        Function Call: atomicExchange(i1;i1; (global highp int)

 0:161          'atomi' (shared highp int)

 0:161          Constant:

 0:161            4 (const int)

-0:162      move second child to first child (highp uint)

-0:162        'origu' (highp uint)

-0:162        Function Call: atomicCompSwap(u1;u1;u1; (highp uint)

+0:162      move second child to first child (temp highp uint)

+0:162        'origu' (temp highp uint)

+0:162        Function Call: atomicCompSwap(u1;u1;u1; (global highp uint)

 0:162          'atomu' (shared highp uint)

 0:162          Constant:

 0:162            10 (const uint)

 0:162          Constant:

 0:162            8 (const uint)

-0:191  Function Definition: foowo( (void)

+0:191  Function Definition: foowo( (global void)

 0:191    Function Parameters: 

 0:?     Sequence

-0:194      move second child to first child (highp float)

-0:194        'g' (highp float)

-0:194        direct index (layout(column_major shared ) highp float)

+0:194      move second child to first child (temp highp float)

+0:194        'g' (temp highp float)

+0:194        direct index (layout(column_major shared ) temp highp float)

 0:194          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:194            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:194            Constant:

@@ -670,67 +670,67 @@
 0:194          Constant:

 0:194            2 (const int)

 0:195      Sequence

-0:195        move second child to first child (highp float)

-0:195          'f' (highp float)

-0:195          direct index (layout(column_major shared ) highp float)

+0:195        move second child to first child (temp highp float)

+0:195          'f' (temp highp float)

+0:195          direct index (layout(column_major shared ) temp highp float)

 0:195            values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:195              'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:195              Constant:

 0:195                1 (const int)

 0:195            Constant:

 0:195              2 (const int)

-0:196      Pre-Increment (highp float)

-0:196        direct index (layout(column_major shared ) highp float)

+0:196      Pre-Increment (temp highp float)

+0:196        direct index (layout(column_major shared ) temp highp float)

 0:196          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:196            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:196            Constant:

 0:196              1 (const int)

 0:196          Constant:

 0:196            2 (const int)

-0:197      Post-Decrement (highp float)

-0:197        direct index (layout(column_major shared ) highp float)

+0:197      Post-Decrement (temp highp float)

+0:197        direct index (layout(column_major shared ) temp highp float)

 0:197          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:197            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:197            Constant:

 0:197              1 (const int)

 0:197          Constant:

 0:197            2 (const int)

-0:198      add (highp float)

-0:198        'f' (highp float)

-0:198        direct index (layout(column_major shared ) highp float)

+0:198      add (temp highp float)

+0:198        'f' (temp highp float)

+0:198        direct index (layout(column_major shared ) temp highp float)

 0:198          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:198            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:198            Constant:

 0:198              1 (const int)

 0:198          Constant:

 0:198            2 (const int)

-0:199      subtract (highp float)

-0:199        direct index (layout(column_major shared ) highp float)

+0:199      subtract (temp highp float)

+0:199        direct index (layout(column_major shared ) temp highp float)

 0:199          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:199            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:199            Constant:

 0:199              1 (const int)

 0:199          Constant:

 0:199            2 (const int)

-0:199        'f' (highp float)

-0:201      Test condition and select (highp float)

+0:199        'f' (temp highp float)

+0:201      Test condition and select (temp highp float)

 0:201        Condition

-0:201        'b' (bool)

+0:201        'b' (temp bool)

 0:201        true case

-0:201        'f' (highp float)

+0:201        'f' (temp highp float)

 0:201        false case

-0:201        direct index (layout(column_major shared ) highp float)

+0:201        direct index (layout(column_major shared ) temp highp float)

 0:201          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:201            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:201            Constant:

 0:201              1 (const int)

 0:201          Constant:

 0:201            2 (const int)

-0:202      Test condition and select (layout(column_major shared ) highp float)

+0:202      Test condition and select (layout(column_major shared ) temp highp float)

 0:202        Condition

-0:202        'b' (bool)

+0:202        'b' (temp bool)

 0:202        true case

-0:202        direct index (layout(column_major shared ) highp float)

+0:202        direct index (layout(column_major shared ) temp highp float)

 0:202          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:202            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:202            Constant:

@@ -738,12 +738,12 @@
 0:202          Constant:

 0:202            2 (const int)

 0:202        false case

-0:202        'f' (highp float)

-0:203      Test condition and select (void)

+0:202        'f' (temp highp float)

+0:203      Test condition and select (temp void)

 0:203        Condition

-0:203        Compare Equal (bool)

-0:203          'f' (highp float)

-0:203          direct index (layout(column_major shared ) highp float)

+0:203        Compare Equal (temp bool)

+0:203          'f' (temp highp float)

+0:203          direct index (layout(column_major shared ) temp highp float)

 0:203            values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:203              'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:203              Constant:

@@ -751,13 +751,13 @@
 0:203            Constant:

 0:203              2 (const int)

 0:203        true case

-0:204        Pre-Increment (highp float)

-0:204          'f' (highp float)

-0:205      Test condition and select (void)

+0:204        Pre-Increment (temp highp float)

+0:204          'f' (temp highp float)

+0:205      Test condition and select (temp void)

 0:205        Condition

-0:205        Compare Greater Than or Equal (bool)

-0:205          'f' (highp float)

-0:205          direct index (layout(column_major shared ) highp float)

+0:205        Compare Greater Than or Equal (temp bool)

+0:205          'f' (temp highp float)

+0:205          direct index (layout(column_major shared ) temp highp float)

 0:205            values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:205              'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:205              Constant:

@@ -765,13 +765,13 @@
 0:205            Constant:

 0:205              2 (const int)

 0:205        true case

-0:206        Pre-Increment (highp float)

-0:206          'f' (highp float)

-0:207      move second child to first child (highp float)

-0:207        'f' (highp float)

-0:207        direct index (highp float)

-0:207          Construct vec3 (highp 3-component vector of float)

-0:207            direct index (layout(column_major shared ) highp float)

+0:206        Pre-Increment (temp highp float)

+0:206          'f' (temp highp float)

+0:207      move second child to first child (temp highp float)

+0:207        'f' (temp highp float)

+0:207        direct index (temp highp float)

+0:207          Construct vec3 (temp highp 3-component vector of float)

+0:207            direct index (layout(column_major shared ) temp highp float)

 0:207              values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:207                'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:207                Constant:

@@ -780,13 +780,13 @@
 0:207                2 (const int)

 0:207          Constant:

 0:207            0 (const int)

-0:208      Bitwise not (highp int)

+0:208      Bitwise not (temp highp int)

 0:208        value: direct index for structure (layout(column_major shared ) buffer highp int)

 0:208          'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:208          Constant:

 0:208            0 (const int)

-0:209      move second child to first child (highp float)

-0:209        direct index (layout(column_major shared ) highp float)

+0:209      move second child to first child (temp highp float)

+0:209        direct index (layout(column_major shared ) temp highp float)

 0:209          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:209            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:209            Constant:

@@ -795,25 +795,25 @@
 0:209            2 (const int)

 0:209        Constant:

 0:209          3.400000

-0:218  Function Definition: foomultio( (void)

+0:218  Function Definition: foomultio( (global void)

 0:218    Function Parameters: 

 0:?     Sequence

-0:221      move second child to first child (highp float)

-0:221        'g' (highp float)

-0:221        direct index (layout(column_major shared ) highp float)

+0:221      move second child to first child (temp highp float)

+0:221        'g' (temp highp float)

+0:221        direct index (layout(column_major shared ) temp highp float)

 0:221          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:221            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:221            Constant:

 0:221              1 (const int)

 0:221          Constant:

 0:221            2 (const int)

-0:222      Bitwise not (highp int)

+0:222      Bitwise not (temp highp int)

 0:222        value: direct index for structure (layout(column_major shared ) buffer highp int)

 0:222          'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:222          Constant:

 0:222            0 (const int)

-0:223      move second child to first child (highp float)

-0:223        direct index (layout(column_major shared ) highp float)

+0:223      move second child to first child (temp highp float)

+0:223        direct index (layout(column_major shared ) temp highp float)

 0:223          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float)

 0:223            'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:223            Constant:

@@ -822,7 +822,7 @@
 0:223            2 (const int)

 0:223        Constant:

 0:223          3.400000

-0:224      move second child to first child (highp int)

+0:224      move second child to first child (temp highp int)

 0:224        value: direct index for structure (layout(column_major shared ) buffer highp int)

 0:224          'wo' (layout(column_major shared ) writeonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:224          Constant:

@@ -844,9 +844,9 @@
 0:?     's' (shared highp 4-component vector of float)

 0:?     'sl' (layout(location=2 ) shared highp 4-component vector of float)

 0:?     'fs' (shared highp float)

-0:?     'arrX' (2-element array of highp int)

-0:?     'arrY' (1-element array of highp int)

-0:?     'arrZ' (4096-element array of highp int)

+0:?     'arrX' (global 2-element array of highp int)

+0:?     'arrY' (global 1-element array of highp int)

+0:?     'arrZ' (global 4096-element array of highp int)

 0:?     'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values})

 0:?     'v' (buffer highp 4-component vector of float)

 0:?     'us2dbad' (uniform mediump usampler2D)

@@ -857,8 +857,8 @@
 0:?     'iimg2Drgba' (layout(rgba32i ) readonly uniform highp iimage2D)

 0:?     'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D)

 0:?     'uimg2D' (layout(r32ui ) uniform highp uimage2D)

-0:?     'vol' (volatile highp float)

-0:?     'vol2' (readonly highp int)

+0:?     'vol' (volatile temp highp float)

+0:?     'vol2' (readonly temp highp int)

 0:?     'qualim1' (layout(r32i ) coherent readonly uniform highp iimage2D)

 0:?     'qualim2' (layout(r32i ) coherent restrict readonly uniform highp iimage2D)

 0:?     'i1bad' (layout(rg8i ) readonly uniform highp uimage2D)

@@ -873,8 +873,8 @@
 0:?     'i' (uniform highp int)

 0:?     'atomi' (shared highp int)

 0:?     'atomu' (shared highp uint)

-0:?     'pfoo' (highp int)

-0:?     'dm' (2X4 matrix of double)

+0:?     'pfoo' (temp highp int)

+0:?     'dm' (global 2X4 matrix of double)

 0:?     'sca' (uniform mediump samplerCubeArray)

 0:?     'i2dr' (uniform mediump iimage2DRect)

 0:?     'i2dms' (uniform lowp image2DMS)

diff --git a/Test/baseResults/310.frag.out b/Test/baseResults/310.frag.out
index eb3089c..de90472 100644
--- a/Test/baseResults/310.frag.out
+++ b/Test/baseResults/310.frag.out
@@ -9,7 +9,7 @@
 ERROR: 0:15: 'sampler/image' : type requires declaration of default precision qualifier 

 ERROR: 0:23: 'variable indexing sampler array' : not supported with this profile: es

 ERROR: 0:27: 'textureGatherOffsets' : no matching overloaded function found 

-ERROR: 0:27: '=' :  cannot convert from 'const float' to 'mediump 4-component vector of uint'

+ERROR: 0:27: '=' :  cannot convert from 'const float' to 'temp mediump 4-component vector of uint'

 ERROR: 0:30: 'textureGatherOffset(...)' : must be a compile-time constant: component argument

 ERROR: 0:31: 'textureGatherOffset(...)' : must be 0, 1, 2, or 3: component argument

 ERROR: 0:42: 'texel offset' : argument must be compile-time constant 

@@ -47,30 +47,30 @@
 Shader version: 310

 using early_fragment_tests

 ERROR: node is still EOpNull!

-0:21  Function Definition: main( (void)

+0:21  Function Definition: main( (global void)

 0:21    Function Parameters: 

 0:23    Sequence

 0:23      Sequence

-0:23        move second child to first child (highp 4-component vector of float)

-0:23          'v' (mediump 4-component vector of float)

-0:23          Function Call: texture(s21;vf2; (highp 4-component vector of float)

-0:23            indirect index (highp sampler2D)

+0:23        move second child to first child (temp highp 4-component vector of float)

+0:23          'v' (temp mediump 4-component vector of float)

+0:23          Function Call: texture(s21;vf2; (global highp 4-component vector of float)

+0:23            indirect index (temp highp sampler2D)

 0:23              'arrayedSampler' (uniform 5-element array of highp sampler2D)

 0:23              'i' (uniform mediump int)

 0:23            'c2D' (smooth in mediump 2-component vector of float)

 0:28      Sequence

-0:28        move second child to first child (highp 4-component vector of float)

-0:28          'v4' (mediump 4-component vector of float)

-0:28          Function Call: textureGather(s21;vf2; (highp 4-component vector of float)

-0:28            direct index (highp sampler2D)

+0:28        move second child to first child (temp highp 4-component vector of float)

+0:28          'v4' (temp mediump 4-component vector of float)

+0:28          Function Call: textureGather(s21;vf2; (global highp 4-component vector of float)

+0:28            direct index (temp highp sampler2D)

 0:28              'arrayedSampler' (uniform 5-element array of highp sampler2D)

 0:28              Constant:

 0:28                0 (const int)

 0:28            'c2D' (smooth in mediump 2-component vector of float)

 0:29      Sequence

-0:29        move second child to first child (mediump 4-component vector of int)

-0:29          'iv4' (mediump 4-component vector of int)

-0:29          Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (mediump 4-component vector of int)

+0:29        move second child to first child (temp mediump 4-component vector of int)

+0:29          'iv4' (temp mediump 4-component vector of int)

+0:29          Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

 0:29            'isamp2DA' (uniform highp isampler2DArray)

 0:29            Constant:

 0:29              0.100000

@@ -81,9 +81,9 @@
 0:29              1 (const int)

 0:29            Constant:

 0:29              3 (const int)

-0:30      move second child to first child (mediump 4-component vector of int)

-0:30        'iv4' (mediump 4-component vector of int)

-0:30        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (mediump 4-component vector of int)

+0:30      move second child to first child (temp mediump 4-component vector of int)

+0:30        'iv4' (temp mediump 4-component vector of int)

+0:30        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

 0:30          'isamp2DA' (uniform highp isampler2DArray)

 0:30          Constant:

 0:30            0.100000

@@ -93,9 +93,9 @@
 0:30            1 (const int)

 0:30            1 (const int)

 0:30          'i' (uniform mediump int)

-0:31      move second child to first child (mediump 4-component vector of int)

-0:31        'iv4' (mediump 4-component vector of int)

-0:31        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (mediump 4-component vector of int)

+0:31      move second child to first child (temp mediump 4-component vector of int)

+0:31        'iv4' (temp mediump 4-component vector of int)

+0:31        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

 0:31          'isamp2DA' (uniform highp isampler2DArray)

 0:31          Constant:

 0:31            0.100000

@@ -106,9 +106,9 @@
 0:31            1 (const int)

 0:31          Constant:

 0:31            4 (const int)

-0:32      move second child to first child (mediump 4-component vector of int)

-0:32        'iv4' (mediump 4-component vector of int)

-0:32        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (mediump 4-component vector of int)

+0:32      move second child to first child (temp mediump 4-component vector of int)

+0:32        'iv4' (temp mediump 4-component vector of int)

+0:32        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

 0:32          'isamp2DA' (uniform highp isampler2DArray)

 0:32          Constant:

 0:32            0.100000

@@ -119,20 +119,20 @@
 0:32            1 (const int)

 0:32          Constant:

 0:32            3 (const int)

-0:33      move second child to first child (mediump 4-component vector of int)

-0:33        'iv4' (mediump 4-component vector of int)

-0:33        Function Call: textureGatherOffset(isA21;vf3;vi2; (mediump 4-component vector of int)

+0:33      move second child to first child (temp mediump 4-component vector of int)

+0:33        'iv4' (temp mediump 4-component vector of int)

+0:33        Function Call: textureGatherOffset(isA21;vf3;vi2; (global mediump 4-component vector of int)

 0:33          'isamp2DA' (uniform highp isampler2DArray)

 0:33          Constant:

 0:33            0.100000

 0:33            0.100000

 0:33            0.100000

-0:33          Construct ivec2 (2-component vector of int)

+0:33          Construct ivec2 (temp 2-component vector of int)

 0:33            'i' (uniform mediump int)

-0:38  Function Definition: foo23( (void)

+0:38  Function Definition: foo23( (global void)

 0:38    Function Parameters: 

 0:?     Sequence

-0:42      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (mediump 4-component vector of uint)

+0:42      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

 0:42        'usamp2d' (uniform highp usampler2D)

 0:42        'outp' (out mediump 4-component vector of float)

 0:42        Constant:

@@ -141,9 +141,9 @@
 0:42        Constant:

 0:42          0.000000

 0:42          0.000000

-0:42        Convert float to int (2-component vector of int)

+0:42        Convert float to int (temp 2-component vector of int)

 0:42          'c2D' (smooth in mediump 2-component vector of float)

-0:43      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (mediump 4-component vector of uint)

+0:43      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

 0:43        'usamp2d' (uniform highp usampler2D)

 0:43        'outp' (out mediump 4-component vector of float)

 0:43        Constant:

@@ -155,7 +155,7 @@
 0:43        Constant:

 0:43          3 (const int)

 0:43          4 (const int)

-0:44      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (mediump 4-component vector of uint)

+0:44      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

 0:44        'usamp2d' (uniform highp usampler2D)

 0:44        'outp' (out mediump 4-component vector of float)

 0:44        Constant:

@@ -167,7 +167,7 @@
 0:44        Constant:

 0:44          15 (const int)

 0:44          16 (const int)

-0:45      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (mediump 4-component vector of uint)

+0:45      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

 0:45        'usamp2d' (uniform highp usampler2D)

 0:45        'outp' (out mediump 4-component vector of float)

 0:45        Constant:

@@ -179,85 +179,85 @@
 0:45        Constant:

 0:45          -10 (const int)

 0:45          20 (const int)

-0:47      Test condition and select (void)

+0:47      Test condition and select (temp void)

 0:47        Condition

 0:47        'gl_HelperInvocation' (in bool)

 0:47        true case

-0:48        Pre-Increment (mediump 4-component vector of float)

+0:48        Pre-Increment (temp mediump 4-component vector of float)

 0:48          'outp' (out mediump 4-component vector of float)

 0:50      Sequence

-0:50        move second child to first child (mediump int)

-0:50          'sum' (mediump int)

+0:50        move second child to first child (temp mediump int)

+0:50          'sum' (temp mediump int)

 0:50          Constant:

 0:50            32 (const int)

-0:58      move second child to first child (bool)

-0:58        'b1' (bool)

-0:58        mix (bool)

-0:58          'b2' (bool)

-0:58          'b3' (bool)

-0:58          'b' (bool)

+0:58      move second child to first child (temp bool)

+0:58        'b1' (temp bool)

+0:58        mix (global bool)

+0:58          'b2' (temp bool)

+0:58          'b3' (temp bool)

+0:58          'b' (temp bool)

 0:59      Sequence

-0:59        move second child to first child (mediump 3-component vector of uint)

-0:59          'um3' (mediump 3-component vector of uint)

-0:59          mix (mediump 3-component vector of uint)

-0:59            Construct uvec3 (mediump 3-component vector of uint)

-0:59              Convert int to uint (mediump uint)

+0:59        move second child to first child (temp mediump 3-component vector of uint)

+0:59          'um3' (temp mediump 3-component vector of uint)

+0:59          mix (global mediump 3-component vector of uint)

+0:59            Construct uvec3 (temp mediump 3-component vector of uint)

+0:59              Convert int to uint (temp mediump uint)

 0:59                'i' (uniform mediump int)

-0:59            Construct uvec3 (mediump 3-component vector of uint)

-0:59              Convert int to uint (mediump uint)

+0:59            Construct uvec3 (temp mediump 3-component vector of uint)

+0:59              Convert int to uint (temp mediump uint)

 0:59                'i' (uniform mediump int)

-0:59            Construct bvec3 (3-component vector of bool)

-0:59              'b' (bool)

+0:59            Construct bvec3 (temp 3-component vector of bool)

+0:59              'b' (temp bool)

 0:60      Sequence

-0:60        move second child to first child (mediump 4-component vector of int)

-0:60          'im4' (mediump 4-component vector of int)

-0:60          mix (mediump 4-component vector of int)

-0:60            Construct ivec4 (mediump 4-component vector of int)

+0:60        move second child to first child (temp mediump 4-component vector of int)

+0:60          'im4' (temp mediump 4-component vector of int)

+0:60          mix (global mediump 4-component vector of int)

+0:60            Construct ivec4 (temp mediump 4-component vector of int)

 0:60              'i' (uniform mediump int)

-0:60            Construct ivec4 (mediump 4-component vector of int)

+0:60            Construct ivec4 (temp mediump 4-component vector of int)

 0:60              'i' (uniform mediump int)

-0:60            Construct bvec4 (4-component vector of bool)

-0:60              'b' (bool)

-0:98  Function Definition: foots( (void)

+0:60            Construct bvec4 (temp 4-component vector of bool)

+0:60              'b' (temp bool)

+0:98  Function Definition: foots( (global void)

 0:98    Function Parameters: 

 0:100    Sequence

 0:100      Sequence

-0:100        move second child to first child (highp 2-component vector of int)

-0:100          'v2' (highp 2-component vector of int)

-0:100          Function Call: textureSize(s21;i1; (highp 2-component vector of int)

+0:100        move second child to first child (temp highp 2-component vector of int)

+0:100          'v2' (temp highp 2-component vector of int)

+0:100          Function Call: textureSize(s21;i1; (temp highp 2-component vector of int)

 0:100            's1' (layout(binding=3 ) uniform highp sampler2D)

 0:100            Constant:

 0:100              2 (const int)

 0:101      Sequence

-0:101        move second child to first child (highp 3-component vector of int)

-0:101          'v3' (highp 3-component vector of int)

-0:101          Function Call: textureSize(isA21;i1; (highp 3-component vector of int)

+0:101        move second child to first child (temp highp 3-component vector of int)

+0:101          'v3' (temp highp 3-component vector of int)

+0:101          Function Call: textureSize(isA21;i1; (temp highp 3-component vector of int)

 0:101            'isamp2DA' (uniform highp isampler2DArray)

 0:101            Constant:

 0:101              3 (const int)

-0:102      move second child to first child (highp 2-component vector of int)

-0:102        'v2' (highp 2-component vector of int)

-0:102        Function Call: textureSize(s21; (highp 2-component vector of int)

+0:102      move second child to first child (temp highp 2-component vector of int)

+0:102        'v2' (temp highp 2-component vector of int)

+0:102        Function Call: textureSize(s21; (temp highp 2-component vector of int)

 0:102          's2dms' (uniform highp sampler2DMS)

-0:103      move second child to first child (highp 2-component vector of int)

-0:103        'v2' (highp 2-component vector of int)

-0:103        Function Call: imageSize(I21; (highp 2-component vector of int)

+0:103      move second child to first child (temp highp 2-component vector of int)

+0:103        'v2' (temp highp 2-component vector of int)

+0:103        Function Call: imageSize(I21; (temp highp 2-component vector of int)

 0:103          'i2D' (layout(binding=2 ) writeonly uniform highp image2D)

-0:104      move second child to first child (highp 3-component vector of int)

-0:104        'v3' (highp 3-component vector of int)

-0:104        Function Call: imageSize(I31; (highp 3-component vector of int)

+0:104      move second child to first child (temp highp 3-component vector of int)

+0:104        'v3' (temp highp 3-component vector of int)

+0:104        Function Call: imageSize(I31; (temp highp 3-component vector of int)

 0:104          'i3D' (layout(binding=4 ) readonly uniform mediump image3D)

-0:105      move second child to first child (highp 2-component vector of int)

-0:105        'v2' (highp 2-component vector of int)

-0:105        Function Call: imageSize(IC1; (highp 2-component vector of int)

+0:105      move second child to first child (temp highp 2-component vector of int)

+0:105        'v2' (temp highp 2-component vector of int)

+0:105        Function Call: imageSize(IC1; (temp highp 2-component vector of int)

 0:105          'iCube' (layout(binding=5 ) uniform lowp imageCube)

-0:106      move second child to first child (highp 3-component vector of int)

-0:106        'v3' (highp 3-component vector of int)

-0:106        Function Call: imageSize(IA21; (highp 3-component vector of int)

+0:106      move second child to first child (temp highp 3-component vector of int)

+0:106        'v3' (temp highp 3-component vector of int)

+0:106        Function Call: imageSize(IA21; (temp highp 3-component vector of int)

 0:106          'i2DA' (layout(binding=6 ) uniform mediump image2DArray)

-0:107      move second child to first child (highp 2-component vector of int)

-0:107        'v2' (highp 2-component vector of int)

-0:107        Function Call: imageSize(I21; (highp 2-component vector of int)

+0:107      move second child to first child (temp highp 2-component vector of int)

+0:107        'v2' (temp highp 2-component vector of int)

+0:107        Function Call: imageSize(I21; (temp highp 2-component vector of int)

 0:107          'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform highp image2D)

 0:?   Linker Objects

 0:?     'gl_FragCoord' (smooth in mediump 4-component vector of float)

@@ -295,11 +295,11 @@
 0:?     'ino' (smooth in highp sampler2D)

 0:?     'ina' (smooth in 4-element array of mediump float)

 0:?     'inaa' (smooth in 4-element array of mediump float)

-0:?     'ins' (smooth in structure{mediump float f})

-0:?     'inasa' (smooth in 4-element array of structure{mediump float f})

-0:?     'insa' (smooth in 4-element array of structure{mediump float f})

-0:?     'inSA' (smooth in structure{4-element array of mediump float f})

-0:?     'inSS' (smooth in structure{mediump float f, structure{mediump float f} s})

+0:?     'ins' (smooth in structure{global mediump float f})

+0:?     'inasa' (smooth in 4-element array of structure{global mediump float f})

+0:?     'insa' (smooth in 4-element array of structure{global mediump float f})

+0:?     'inSA' (smooth in structure{global 4-element array of mediump float f})

+0:?     'inSS' (smooth in structure{global mediump float f, global structure{global mediump float f} s})

 

 

 Linked fragment stage:

@@ -309,30 +309,30 @@
 Shader version: 310

 using early_fragment_tests

 ERROR: node is still EOpNull!

-0:21  Function Definition: main( (void)

+0:21  Function Definition: main( (global void)

 0:21    Function Parameters: 

 0:23    Sequence

 0:23      Sequence

-0:23        move second child to first child (highp 4-component vector of float)

-0:23          'v' (mediump 4-component vector of float)

-0:23          Function Call: texture(s21;vf2; (highp 4-component vector of float)

-0:23            indirect index (highp sampler2D)

+0:23        move second child to first child (temp highp 4-component vector of float)

+0:23          'v' (temp mediump 4-component vector of float)

+0:23          Function Call: texture(s21;vf2; (global highp 4-component vector of float)

+0:23            indirect index (temp highp sampler2D)

 0:23              'arrayedSampler' (uniform 5-element array of highp sampler2D)

 0:23              'i' (uniform mediump int)

 0:23            'c2D' (smooth in mediump 2-component vector of float)

 0:28      Sequence

-0:28        move second child to first child (highp 4-component vector of float)

-0:28          'v4' (mediump 4-component vector of float)

-0:28          Function Call: textureGather(s21;vf2; (highp 4-component vector of float)

-0:28            direct index (highp sampler2D)

+0:28        move second child to first child (temp highp 4-component vector of float)

+0:28          'v4' (temp mediump 4-component vector of float)

+0:28          Function Call: textureGather(s21;vf2; (global highp 4-component vector of float)

+0:28            direct index (temp highp sampler2D)

 0:28              'arrayedSampler' (uniform 5-element array of highp sampler2D)

 0:28              Constant:

 0:28                0 (const int)

 0:28            'c2D' (smooth in mediump 2-component vector of float)

 0:29      Sequence

-0:29        move second child to first child (mediump 4-component vector of int)

-0:29          'iv4' (mediump 4-component vector of int)

-0:29          Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (mediump 4-component vector of int)

+0:29        move second child to first child (temp mediump 4-component vector of int)

+0:29          'iv4' (temp mediump 4-component vector of int)

+0:29          Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

 0:29            'isamp2DA' (uniform highp isampler2DArray)

 0:29            Constant:

 0:29              0.100000

@@ -343,9 +343,9 @@
 0:29              1 (const int)

 0:29            Constant:

 0:29              3 (const int)

-0:30      move second child to first child (mediump 4-component vector of int)

-0:30        'iv4' (mediump 4-component vector of int)

-0:30        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (mediump 4-component vector of int)

+0:30      move second child to first child (temp mediump 4-component vector of int)

+0:30        'iv4' (temp mediump 4-component vector of int)

+0:30        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

 0:30          'isamp2DA' (uniform highp isampler2DArray)

 0:30          Constant:

 0:30            0.100000

@@ -355,9 +355,9 @@
 0:30            1 (const int)

 0:30            1 (const int)

 0:30          'i' (uniform mediump int)

-0:31      move second child to first child (mediump 4-component vector of int)

-0:31        'iv4' (mediump 4-component vector of int)

-0:31        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (mediump 4-component vector of int)

+0:31      move second child to first child (temp mediump 4-component vector of int)

+0:31        'iv4' (temp mediump 4-component vector of int)

+0:31        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

 0:31          'isamp2DA' (uniform highp isampler2DArray)

 0:31          Constant:

 0:31            0.100000

@@ -368,9 +368,9 @@
 0:31            1 (const int)

 0:31          Constant:

 0:31            4 (const int)

-0:32      move second child to first child (mediump 4-component vector of int)

-0:32        'iv4' (mediump 4-component vector of int)

-0:32        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (mediump 4-component vector of int)

+0:32      move second child to first child (temp mediump 4-component vector of int)

+0:32        'iv4' (temp mediump 4-component vector of int)

+0:32        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

 0:32          'isamp2DA' (uniform highp isampler2DArray)

 0:32          Constant:

 0:32            0.100000

@@ -381,20 +381,20 @@
 0:32            1 (const int)

 0:32          Constant:

 0:32            3 (const int)

-0:33      move second child to first child (mediump 4-component vector of int)

-0:33        'iv4' (mediump 4-component vector of int)

-0:33        Function Call: textureGatherOffset(isA21;vf3;vi2; (mediump 4-component vector of int)

+0:33      move second child to first child (temp mediump 4-component vector of int)

+0:33        'iv4' (temp mediump 4-component vector of int)

+0:33        Function Call: textureGatherOffset(isA21;vf3;vi2; (global mediump 4-component vector of int)

 0:33          'isamp2DA' (uniform highp isampler2DArray)

 0:33          Constant:

 0:33            0.100000

 0:33            0.100000

 0:33            0.100000

-0:33          Construct ivec2 (2-component vector of int)

+0:33          Construct ivec2 (temp 2-component vector of int)

 0:33            'i' (uniform mediump int)

-0:38  Function Definition: foo23( (void)

+0:38  Function Definition: foo23( (global void)

 0:38    Function Parameters: 

 0:?     Sequence

-0:42      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (mediump 4-component vector of uint)

+0:42      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

 0:42        'usamp2d' (uniform highp usampler2D)

 0:42        'outp' (out mediump 4-component vector of float)

 0:42        Constant:

@@ -403,9 +403,9 @@
 0:42        Constant:

 0:42          0.000000

 0:42          0.000000

-0:42        Convert float to int (2-component vector of int)

+0:42        Convert float to int (temp 2-component vector of int)

 0:42          'c2D' (smooth in mediump 2-component vector of float)

-0:43      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (mediump 4-component vector of uint)

+0:43      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

 0:43        'usamp2d' (uniform highp usampler2D)

 0:43        'outp' (out mediump 4-component vector of float)

 0:43        Constant:

@@ -417,7 +417,7 @@
 0:43        Constant:

 0:43          3 (const int)

 0:43          4 (const int)

-0:44      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (mediump 4-component vector of uint)

+0:44      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

 0:44        'usamp2d' (uniform highp usampler2D)

 0:44        'outp' (out mediump 4-component vector of float)

 0:44        Constant:

@@ -429,7 +429,7 @@
 0:44        Constant:

 0:44          15 (const int)

 0:44          16 (const int)

-0:45      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (mediump 4-component vector of uint)

+0:45      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

 0:45        'usamp2d' (uniform highp usampler2D)

 0:45        'outp' (out mediump 4-component vector of float)

 0:45        Constant:

@@ -441,85 +441,85 @@
 0:45        Constant:

 0:45          -10 (const int)

 0:45          20 (const int)

-0:47      Test condition and select (void)

+0:47      Test condition and select (temp void)

 0:47        Condition

 0:47        'gl_HelperInvocation' (in bool)

 0:47        true case

-0:48        Pre-Increment (mediump 4-component vector of float)

+0:48        Pre-Increment (temp mediump 4-component vector of float)

 0:48          'outp' (out mediump 4-component vector of float)

 0:50      Sequence

-0:50        move second child to first child (mediump int)

-0:50          'sum' (mediump int)

+0:50        move second child to first child (temp mediump int)

+0:50          'sum' (temp mediump int)

 0:50          Constant:

 0:50            32 (const int)

-0:58      move second child to first child (bool)

-0:58        'b1' (bool)

-0:58        mix (bool)

-0:58          'b2' (bool)

-0:58          'b3' (bool)

-0:58          'b' (bool)

+0:58      move second child to first child (temp bool)

+0:58        'b1' (temp bool)

+0:58        mix (global bool)

+0:58          'b2' (temp bool)

+0:58          'b3' (temp bool)

+0:58          'b' (temp bool)

 0:59      Sequence

-0:59        move second child to first child (mediump 3-component vector of uint)

-0:59          'um3' (mediump 3-component vector of uint)

-0:59          mix (mediump 3-component vector of uint)

-0:59            Construct uvec3 (mediump 3-component vector of uint)

-0:59              Convert int to uint (mediump uint)

+0:59        move second child to first child (temp mediump 3-component vector of uint)

+0:59          'um3' (temp mediump 3-component vector of uint)

+0:59          mix (global mediump 3-component vector of uint)

+0:59            Construct uvec3 (temp mediump 3-component vector of uint)

+0:59              Convert int to uint (temp mediump uint)

 0:59                'i' (uniform mediump int)

-0:59            Construct uvec3 (mediump 3-component vector of uint)

-0:59              Convert int to uint (mediump uint)

+0:59            Construct uvec3 (temp mediump 3-component vector of uint)

+0:59              Convert int to uint (temp mediump uint)

 0:59                'i' (uniform mediump int)

-0:59            Construct bvec3 (3-component vector of bool)

-0:59              'b' (bool)

+0:59            Construct bvec3 (temp 3-component vector of bool)

+0:59              'b' (temp bool)

 0:60      Sequence

-0:60        move second child to first child (mediump 4-component vector of int)

-0:60          'im4' (mediump 4-component vector of int)

-0:60          mix (mediump 4-component vector of int)

-0:60            Construct ivec4 (mediump 4-component vector of int)

+0:60        move second child to first child (temp mediump 4-component vector of int)

+0:60          'im4' (temp mediump 4-component vector of int)

+0:60          mix (global mediump 4-component vector of int)

+0:60            Construct ivec4 (temp mediump 4-component vector of int)

 0:60              'i' (uniform mediump int)

-0:60            Construct ivec4 (mediump 4-component vector of int)

+0:60            Construct ivec4 (temp mediump 4-component vector of int)

 0:60              'i' (uniform mediump int)

-0:60            Construct bvec4 (4-component vector of bool)

-0:60              'b' (bool)

-0:98  Function Definition: foots( (void)

+0:60            Construct bvec4 (temp 4-component vector of bool)

+0:60              'b' (temp bool)

+0:98  Function Definition: foots( (global void)

 0:98    Function Parameters: 

 0:100    Sequence

 0:100      Sequence

-0:100        move second child to first child (highp 2-component vector of int)

-0:100          'v2' (highp 2-component vector of int)

-0:100          Function Call: textureSize(s21;i1; (highp 2-component vector of int)

+0:100        move second child to first child (temp highp 2-component vector of int)

+0:100          'v2' (temp highp 2-component vector of int)

+0:100          Function Call: textureSize(s21;i1; (temp highp 2-component vector of int)

 0:100            's1' (layout(binding=3 ) uniform highp sampler2D)

 0:100            Constant:

 0:100              2 (const int)

 0:101      Sequence

-0:101        move second child to first child (highp 3-component vector of int)

-0:101          'v3' (highp 3-component vector of int)

-0:101          Function Call: textureSize(isA21;i1; (highp 3-component vector of int)

+0:101        move second child to first child (temp highp 3-component vector of int)

+0:101          'v3' (temp highp 3-component vector of int)

+0:101          Function Call: textureSize(isA21;i1; (temp highp 3-component vector of int)

 0:101            'isamp2DA' (uniform highp isampler2DArray)

 0:101            Constant:

 0:101              3 (const int)

-0:102      move second child to first child (highp 2-component vector of int)

-0:102        'v2' (highp 2-component vector of int)

-0:102        Function Call: textureSize(s21; (highp 2-component vector of int)

+0:102      move second child to first child (temp highp 2-component vector of int)

+0:102        'v2' (temp highp 2-component vector of int)

+0:102        Function Call: textureSize(s21; (temp highp 2-component vector of int)

 0:102          's2dms' (uniform highp sampler2DMS)

-0:103      move second child to first child (highp 2-component vector of int)

-0:103        'v2' (highp 2-component vector of int)

-0:103        Function Call: imageSize(I21; (highp 2-component vector of int)

+0:103      move second child to first child (temp highp 2-component vector of int)

+0:103        'v2' (temp highp 2-component vector of int)

+0:103        Function Call: imageSize(I21; (temp highp 2-component vector of int)

 0:103          'i2D' (layout(binding=2 ) writeonly uniform highp image2D)

-0:104      move second child to first child (highp 3-component vector of int)

-0:104        'v3' (highp 3-component vector of int)

-0:104        Function Call: imageSize(I31; (highp 3-component vector of int)

+0:104      move second child to first child (temp highp 3-component vector of int)

+0:104        'v3' (temp highp 3-component vector of int)

+0:104        Function Call: imageSize(I31; (temp highp 3-component vector of int)

 0:104          'i3D' (layout(binding=4 ) readonly uniform mediump image3D)

-0:105      move second child to first child (highp 2-component vector of int)

-0:105        'v2' (highp 2-component vector of int)

-0:105        Function Call: imageSize(IC1; (highp 2-component vector of int)

+0:105      move second child to first child (temp highp 2-component vector of int)

+0:105        'v2' (temp highp 2-component vector of int)

+0:105        Function Call: imageSize(IC1; (temp highp 2-component vector of int)

 0:105          'iCube' (layout(binding=5 ) uniform lowp imageCube)

-0:106      move second child to first child (highp 3-component vector of int)

-0:106        'v3' (highp 3-component vector of int)

-0:106        Function Call: imageSize(IA21; (highp 3-component vector of int)

+0:106      move second child to first child (temp highp 3-component vector of int)

+0:106        'v3' (temp highp 3-component vector of int)

+0:106        Function Call: imageSize(IA21; (temp highp 3-component vector of int)

 0:106          'i2DA' (layout(binding=6 ) uniform mediump image2DArray)

-0:107      move second child to first child (highp 2-component vector of int)

-0:107        'v2' (highp 2-component vector of int)

-0:107        Function Call: imageSize(I21; (highp 2-component vector of int)

+0:107      move second child to first child (temp highp 2-component vector of int)

+0:107        'v2' (temp highp 2-component vector of int)

+0:107        Function Call: imageSize(I21; (temp highp 2-component vector of int)

 0:107          'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform highp image2D)

 0:?   Linker Objects

 0:?     'gl_FragCoord' (smooth in mediump 4-component vector of float)

@@ -557,9 +557,9 @@
 0:?     'ino' (smooth in highp sampler2D)

 0:?     'ina' (smooth in 4-element array of mediump float)

 0:?     'inaa' (smooth in 4-element array of mediump float)

-0:?     'ins' (smooth in structure{mediump float f})

-0:?     'inasa' (smooth in 4-element array of structure{mediump float f})

-0:?     'insa' (smooth in 4-element array of structure{mediump float f})

-0:?     'inSA' (smooth in structure{4-element array of mediump float f})

-0:?     'inSS' (smooth in structure{mediump float f, structure{mediump float f} s})

+0:?     'ins' (smooth in structure{global mediump float f})

+0:?     'inasa' (smooth in 4-element array of structure{global mediump float f})

+0:?     'insa' (smooth in 4-element array of structure{global mediump float f})

+0:?     'inSA' (smooth in structure{global 4-element array of mediump float f})

+0:?     'inSS' (smooth in structure{global mediump float f, global structure{global mediump float f} s})

 

diff --git a/Test/baseResults/310.vert.out b/Test/baseResults/310.vert.out
index 90033f5..ed004b7 100644
--- a/Test/baseResults/310.vert.out
+++ b/Test/baseResults/310.vert.out
@@ -19,148 +19,148 @@
 

 Shader version: 310

 ERROR: node is still EOpNull!

-0:12  Function Definition: main( (void)

+0:12  Function Definition: main( (global void)

 0:12    Function Parameters: 

 0:?     Sequence

-0:15      move second child to first child (highp 2-component vector of uint)

-0:15        'u2' (highp 2-component vector of uint)

-0:15        Function Call: uaddCarry(vu2;vu2;vu2; (highp 2-component vector of uint)

-0:15          'u2' (highp 2-component vector of uint)

-0:15          'u2' (highp 2-component vector of uint)

-0:15          'u2' (highp 2-component vector of uint)

-0:17      move second child to first child (highp uint)

-0:17        'u1' (highp uint)

-0:17        Function Call: usubBorrow(u1;u1;u1; (highp uint)

-0:17          'u1' (highp uint)

-0:17          'u1' (highp uint)

-0:17          'u1' (highp uint)

-0:19      Function Call: umulExtended(vu4;vu4;vu4;vu4; (void)

-0:19        'u4' (highp 4-component vector of uint)

-0:19        'u4' (highp 4-component vector of uint)

-0:19        'u4' (highp 4-component vector of uint)

-0:19        'u4' (highp 4-component vector of uint)

-0:21      Function Call: imulExtended(vi4;vi4;vi4;vi4; (void)

-0:21        'i4' (highp 4-component vector of int)

-0:21        'i4' (highp 4-component vector of int)

-0:21        'i4' (highp 4-component vector of int)

-0:21        'i4' (highp 4-component vector of int)

-0:23      move second child to first child (highp int)

-0:23        'i1' (highp int)

-0:23        Function Call: bitfieldExtract(i1;i1;i1; (highp int)

-0:23          'i1' (highp int)

+0:15      move second child to first child (temp highp 2-component vector of uint)

+0:15        'u2' (temp highp 2-component vector of uint)

+0:15        Function Call: uaddCarry(vu2;vu2;vu2; (global highp 2-component vector of uint)

+0:15          'u2' (temp highp 2-component vector of uint)

+0:15          'u2' (temp highp 2-component vector of uint)

+0:15          'u2' (temp highp 2-component vector of uint)

+0:17      move second child to first child (temp highp uint)

+0:17        'u1' (temp highp uint)

+0:17        Function Call: usubBorrow(u1;u1;u1; (global highp uint)

+0:17          'u1' (temp highp uint)

+0:17          'u1' (temp highp uint)

+0:17          'u1' (temp highp uint)

+0:19      Function Call: umulExtended(vu4;vu4;vu4;vu4; (global void)

+0:19        'u4' (temp highp 4-component vector of uint)

+0:19        'u4' (temp highp 4-component vector of uint)

+0:19        'u4' (temp highp 4-component vector of uint)

+0:19        'u4' (temp highp 4-component vector of uint)

+0:21      Function Call: imulExtended(vi4;vi4;vi4;vi4; (global void)

+0:21        'i4' (temp highp 4-component vector of int)

+0:21        'i4' (temp highp 4-component vector of int)

+0:21        'i4' (temp highp 4-component vector of int)

+0:21        'i4' (temp highp 4-component vector of int)

+0:23      move second child to first child (temp highp int)

+0:23        'i1' (temp highp int)

+0:23        Function Call: bitfieldExtract(i1;i1;i1; (global highp int)

+0:23          'i1' (temp highp int)

 0:23          Constant:

 0:23            4 (const int)

 0:23          Constant:

 0:23            5 (const int)

-0:25      move second child to first child (highp 3-component vector of uint)

-0:25        'u3' (highp 3-component vector of uint)

-0:25        Function Call: bitfieldExtract(vu3;i1;i1; (highp 3-component vector of uint)

-0:25          'u3' (highp 3-component vector of uint)

+0:25      move second child to first child (temp highp 3-component vector of uint)

+0:25        'u3' (temp highp 3-component vector of uint)

+0:25        Function Call: bitfieldExtract(vu3;i1;i1; (global highp 3-component vector of uint)

+0:25          'u3' (temp highp 3-component vector of uint)

 0:25          Constant:

 0:25            4 (const int)

 0:25          Constant:

 0:25            5 (const int)

-0:27      move second child to first child (highp 3-component vector of int)

-0:27        'i3' (highp 3-component vector of int)

-0:27        Function Call: bitfieldInsert(vi3;vi3;i1;i1; (highp 3-component vector of int)

-0:27          'i3' (highp 3-component vector of int)

-0:27          'i3' (highp 3-component vector of int)

+0:27      move second child to first child (temp highp 3-component vector of int)

+0:27        'i3' (temp highp 3-component vector of int)

+0:27        Function Call: bitfieldInsert(vi3;vi3;i1;i1; (global highp 3-component vector of int)

+0:27          'i3' (temp highp 3-component vector of int)

+0:27          'i3' (temp highp 3-component vector of int)

 0:27          Constant:

 0:27            4 (const int)

 0:27          Constant:

 0:27            5 (const int)

-0:28      move second child to first child (highp uint)

-0:28        'u1' (highp uint)

-0:28        Function Call: bitfieldInsert(u1;u1;i1;i1; (highp uint)

-0:28          'u1' (highp uint)

-0:28          'u1' (highp uint)

+0:28      move second child to first child (temp highp uint)

+0:28        'u1' (temp highp uint)

+0:28        Function Call: bitfieldInsert(u1;u1;i1;i1; (global highp uint)

+0:28          'u1' (temp highp uint)

+0:28          'u1' (temp highp uint)

 0:28          Constant:

 0:28            4 (const int)

 0:28          Constant:

 0:28            5 (const int)

-0:30      move second child to first child (highp 2-component vector of int)

-0:30        'i2' (highp 2-component vector of int)

-0:30        Function Call: bitfieldReverse(vi2; (highp 2-component vector of int)

-0:30          'i2' (highp 2-component vector of int)

-0:31      move second child to first child (highp 4-component vector of uint)

-0:31        'u4' (highp 4-component vector of uint)

-0:31        Function Call: bitfieldReverse(vu4; (highp 4-component vector of uint)

-0:31          'u4' (highp 4-component vector of uint)

-0:32      move second child to first child (highp int)

-0:32        'i1' (highp int)

-0:32        Function Call: bitCount(i1; (highp int)

-0:32          'i1' (highp int)

-0:33      move second child to first child (highp 3-component vector of int)

-0:33        'i3' (highp 3-component vector of int)

-0:33        Function Call: bitCount(vu3; (highp 3-component vector of int)

-0:33          'u3' (highp 3-component vector of uint)

-0:34      move second child to first child (highp 2-component vector of int)

-0:34        'i2' (highp 2-component vector of int)

-0:34        Function Call: findLSB(vi2; (highp 2-component vector of int)

-0:34          'i2' (highp 2-component vector of int)

-0:35      move second child to first child (highp 4-component vector of int)

-0:35        'i4' (highp 4-component vector of int)

-0:35        Function Call: findLSB(vu4; (highp 4-component vector of int)

-0:35          'u4' (highp 4-component vector of uint)

-0:36      move second child to first child (highp int)

-0:36        'i1' (highp int)

-0:36        Function Call: findMSB(i1; (highp int)

-0:36          'i1' (highp int)

-0:37      move second child to first child (highp 2-component vector of int)

-0:37        'i2' (highp 2-component vector of int)

-0:37        Function Call: findMSB(vu2; (highp 2-component vector of int)

-0:37          'u2' (highp 2-component vector of uint)

-0:40      move second child to first child (highp 3-component vector of float)

-0:40        'v3' (highp 3-component vector of float)

-0:40        Function Call: frexp(vf3;vi3; (highp 3-component vector of float)

-0:40          'v3' (highp 3-component vector of float)

-0:40          'i3' (highp 3-component vector of int)

-0:42      move second child to first child (highp 2-component vector of float)

-0:42        'v2' (highp 2-component vector of float)

-0:42        Function Call: ldexp(vf2;vi2; (highp 2-component vector of float)

-0:42          'v2' (highp 2-component vector of float)

-0:42          'i2' (highp 2-component vector of int)

-0:45      move second child to first child (highp uint)

-0:45        'u1' (highp uint)

-0:45        Function Call: packUnorm4x8(vf4; (highp uint)

-0:45          'v4' (mediump 4-component vector of float)

-0:46      move second child to first child (highp uint)

-0:46        'u1' (highp uint)

-0:46        Function Call: packSnorm4x8(vf4; (highp uint)

-0:46          'v4' (mediump 4-component vector of float)

-0:47      move second child to first child (mediump 4-component vector of float)

-0:47        'v4' (mediump 4-component vector of float)

-0:47        Function Call: unpackUnorm4x8(u1; (mediump 4-component vector of float)

-0:47          'u1' (highp uint)

-0:48      move second child to first child (mediump 4-component vector of float)

-0:48        'v4' (mediump 4-component vector of float)

-0:48        Function Call: unpackSnorm4x8(u1; (mediump 4-component vector of float)

-0:48          'u1' (highp uint)

-0:60  Function Definition: foo( (void)

+0:30      move second child to first child (temp highp 2-component vector of int)

+0:30        'i2' (temp highp 2-component vector of int)

+0:30        Function Call: bitfieldReverse(vi2; (global highp 2-component vector of int)

+0:30          'i2' (temp highp 2-component vector of int)

+0:31      move second child to first child (temp highp 4-component vector of uint)

+0:31        'u4' (temp highp 4-component vector of uint)

+0:31        Function Call: bitfieldReverse(vu4; (global highp 4-component vector of uint)

+0:31          'u4' (temp highp 4-component vector of uint)

+0:32      move second child to first child (temp highp int)

+0:32        'i1' (temp highp int)

+0:32        Function Call: bitCount(i1; (global highp int)

+0:32          'i1' (temp highp int)

+0:33      move second child to first child (temp highp 3-component vector of int)

+0:33        'i3' (temp highp 3-component vector of int)

+0:33        Function Call: bitCount(vu3; (global highp 3-component vector of int)

+0:33          'u3' (temp highp 3-component vector of uint)

+0:34      move second child to first child (temp highp 2-component vector of int)

+0:34        'i2' (temp highp 2-component vector of int)

+0:34        Function Call: findLSB(vi2; (global highp 2-component vector of int)

+0:34          'i2' (temp highp 2-component vector of int)

+0:35      move second child to first child (temp highp 4-component vector of int)

+0:35        'i4' (temp highp 4-component vector of int)

+0:35        Function Call: findLSB(vu4; (global highp 4-component vector of int)

+0:35          'u4' (temp highp 4-component vector of uint)

+0:36      move second child to first child (temp highp int)

+0:36        'i1' (temp highp int)

+0:36        Function Call: findMSB(i1; (global highp int)

+0:36          'i1' (temp highp int)

+0:37      move second child to first child (temp highp 2-component vector of int)

+0:37        'i2' (temp highp 2-component vector of int)

+0:37        Function Call: findMSB(vu2; (global highp 2-component vector of int)

+0:37          'u2' (temp highp 2-component vector of uint)

+0:40      move second child to first child (temp highp 3-component vector of float)

+0:40        'v3' (temp highp 3-component vector of float)

+0:40        Function Call: frexp(vf3;vi3; (temp highp 3-component vector of float)

+0:40          'v3' (temp highp 3-component vector of float)

+0:40          'i3' (temp highp 3-component vector of int)

+0:42      move second child to first child (temp highp 2-component vector of float)

+0:42        'v2' (temp highp 2-component vector of float)

+0:42        Function Call: ldexp(vf2;vi2; (temp highp 2-component vector of float)

+0:42          'v2' (temp highp 2-component vector of float)

+0:42          'i2' (temp highp 2-component vector of int)

+0:45      move second child to first child (temp highp uint)

+0:45        'u1' (temp highp uint)

+0:45        Function Call: packUnorm4x8(vf4; (temp highp uint)

+0:45          'v4' (temp mediump 4-component vector of float)

+0:46      move second child to first child (temp highp uint)

+0:46        'u1' (temp highp uint)

+0:46        Function Call: packSnorm4x8(vf4; (temp highp uint)

+0:46          'v4' (temp mediump 4-component vector of float)

+0:47      move second child to first child (temp mediump 4-component vector of float)

+0:47        'v4' (temp mediump 4-component vector of float)

+0:47        Function Call: unpackUnorm4x8(u1; (temp mediump 4-component vector of float)

+0:47          'u1' (temp highp uint)

+0:48      move second child to first child (temp mediump 4-component vector of float)

+0:48        'v4' (temp mediump 4-component vector of float)

+0:48        Function Call: unpackSnorm4x8(u1; (temp mediump 4-component vector of float)

+0:48          'u1' (temp highp uint)

+0:60  Function Definition: foo( (global void)

 0:60    Function Parameters: 

 0:?     Sequence

-0:63      move second child to first child (highp 2-component vector of int)

-0:63        'v2' (highp 2-component vector of int)

-0:63        Function Call: textureSize(s21; (highp 2-component vector of int)

+0:63      move second child to first child (temp highp 2-component vector of int)

+0:63        'v2' (temp highp 2-component vector of int)

+0:63        Function Call: textureSize(s21; (temp highp 2-component vector of int)

 0:63          's2dms' (uniform highp sampler2DMS)

-0:64      move second child to first child (highp 2-component vector of int)

-0:64        'v2' (highp 2-component vector of int)

-0:64        Function Call: textureSize(us21; (highp 2-component vector of int)

+0:64      move second child to first child (temp highp 2-component vector of int)

+0:64        'v2' (temp highp 2-component vector of int)

+0:64        Function Call: textureSize(us21; (temp highp 2-component vector of int)

 0:64          'us2dms' (uniform highp usampler2DMS)

 0:65      Sequence

-0:65        move second child to first child (highp 4-component vector of float)

-0:65          'v4' (highp 4-component vector of float)

-0:65          Function Call: texelFetch(s21;vi2;i1; (highp 4-component vector of float)

+0:65        move second child to first child (temp highp 4-component vector of float)

+0:65          'v4' (temp highp 4-component vector of float)

+0:65          Function Call: texelFetch(s21;vi2;i1; (global highp 4-component vector of float)

 0:65            's2dms' (uniform highp sampler2DMS)

-0:65            'v2' (highp 2-component vector of int)

+0:65            'v2' (temp highp 2-component vector of int)

 0:65            Constant:

 0:65              2 (const int)

 0:66      Sequence

-0:66        move second child to first child (highp 4-component vector of int)

-0:66          'iv4' (highp 4-component vector of int)

-0:66          Function Call: texelFetch(is21;vi2;i1; (highp 4-component vector of int)

+0:66        move second child to first child (temp highp 4-component vector of int)

+0:66          'iv4' (temp highp 4-component vector of int)

+0:66          Function Call: texelFetch(is21;vi2;i1; (global highp 4-component vector of int)

 0:66            'is2dms' (uniform highp isampler2DMS)

-0:66            'v2' (highp 2-component vector of int)

+0:66            'v2' (temp highp 2-component vector of int)

 0:66            Constant:

 0:66              2 (const int)

 0:67      Constant:

@@ -180,11 +180,11 @@
 0:?     'outo' (smooth out highp sampler2D)

 0:?     'outa' (smooth out 4-element array of highp float)

 0:?     'outaa' (smooth out 4-element array of highp float)

-0:?     'outs' (smooth out structure{highp float f})

-0:?     'outasa' (smooth out 4-element array of structure{highp float f})

-0:?     'outsa' (smooth out 4-element array of structure{highp float f})

-0:?     'outSA' (smooth out structure{4-element array of highp float f})

-0:?     'outSS' (smooth out structure{highp float f, structure{highp float f} s})

+0:?     'outs' (smooth out structure{global highp float f})

+0:?     'outasa' (smooth out 4-element array of structure{global highp float f})

+0:?     'outsa' (smooth out 4-element array of structure{global highp float f})

+0:?     'outSA' (smooth out structure{global 4-element array of highp float f})

+0:?     'outSS' (smooth out structure{global highp float f, global structure{global highp float f} s})

 0:?     'gl_VertexID' (gl_VertexId highp int)

 0:?     'gl_InstanceID' (gl_InstanceId highp int)

 

@@ -194,148 +194,148 @@
 

 Shader version: 310

 ERROR: node is still EOpNull!

-0:12  Function Definition: main( (void)

+0:12  Function Definition: main( (global void)

 0:12    Function Parameters: 

 0:?     Sequence

-0:15      move second child to first child (highp 2-component vector of uint)

-0:15        'u2' (highp 2-component vector of uint)

-0:15        Function Call: uaddCarry(vu2;vu2;vu2; (highp 2-component vector of uint)

-0:15          'u2' (highp 2-component vector of uint)

-0:15          'u2' (highp 2-component vector of uint)

-0:15          'u2' (highp 2-component vector of uint)

-0:17      move second child to first child (highp uint)

-0:17        'u1' (highp uint)

-0:17        Function Call: usubBorrow(u1;u1;u1; (highp uint)

-0:17          'u1' (highp uint)

-0:17          'u1' (highp uint)

-0:17          'u1' (highp uint)

-0:19      Function Call: umulExtended(vu4;vu4;vu4;vu4; (void)

-0:19        'u4' (highp 4-component vector of uint)

-0:19        'u4' (highp 4-component vector of uint)

-0:19        'u4' (highp 4-component vector of uint)

-0:19        'u4' (highp 4-component vector of uint)

-0:21      Function Call: imulExtended(vi4;vi4;vi4;vi4; (void)

-0:21        'i4' (highp 4-component vector of int)

-0:21        'i4' (highp 4-component vector of int)

-0:21        'i4' (highp 4-component vector of int)

-0:21        'i4' (highp 4-component vector of int)

-0:23      move second child to first child (highp int)

-0:23        'i1' (highp int)

-0:23        Function Call: bitfieldExtract(i1;i1;i1; (highp int)

-0:23          'i1' (highp int)

+0:15      move second child to first child (temp highp 2-component vector of uint)

+0:15        'u2' (temp highp 2-component vector of uint)

+0:15        Function Call: uaddCarry(vu2;vu2;vu2; (global highp 2-component vector of uint)

+0:15          'u2' (temp highp 2-component vector of uint)

+0:15          'u2' (temp highp 2-component vector of uint)

+0:15          'u2' (temp highp 2-component vector of uint)

+0:17      move second child to first child (temp highp uint)

+0:17        'u1' (temp highp uint)

+0:17        Function Call: usubBorrow(u1;u1;u1; (global highp uint)

+0:17          'u1' (temp highp uint)

+0:17          'u1' (temp highp uint)

+0:17          'u1' (temp highp uint)

+0:19      Function Call: umulExtended(vu4;vu4;vu4;vu4; (global void)

+0:19        'u4' (temp highp 4-component vector of uint)

+0:19        'u4' (temp highp 4-component vector of uint)

+0:19        'u4' (temp highp 4-component vector of uint)

+0:19        'u4' (temp highp 4-component vector of uint)

+0:21      Function Call: imulExtended(vi4;vi4;vi4;vi4; (global void)

+0:21        'i4' (temp highp 4-component vector of int)

+0:21        'i4' (temp highp 4-component vector of int)

+0:21        'i4' (temp highp 4-component vector of int)

+0:21        'i4' (temp highp 4-component vector of int)

+0:23      move second child to first child (temp highp int)

+0:23        'i1' (temp highp int)

+0:23        Function Call: bitfieldExtract(i1;i1;i1; (global highp int)

+0:23          'i1' (temp highp int)

 0:23          Constant:

 0:23            4 (const int)

 0:23          Constant:

 0:23            5 (const int)

-0:25      move second child to first child (highp 3-component vector of uint)

-0:25        'u3' (highp 3-component vector of uint)

-0:25        Function Call: bitfieldExtract(vu3;i1;i1; (highp 3-component vector of uint)

-0:25          'u3' (highp 3-component vector of uint)

+0:25      move second child to first child (temp highp 3-component vector of uint)

+0:25        'u3' (temp highp 3-component vector of uint)

+0:25        Function Call: bitfieldExtract(vu3;i1;i1; (global highp 3-component vector of uint)

+0:25          'u3' (temp highp 3-component vector of uint)

 0:25          Constant:

 0:25            4 (const int)

 0:25          Constant:

 0:25            5 (const int)

-0:27      move second child to first child (highp 3-component vector of int)

-0:27        'i3' (highp 3-component vector of int)

-0:27        Function Call: bitfieldInsert(vi3;vi3;i1;i1; (highp 3-component vector of int)

-0:27          'i3' (highp 3-component vector of int)

-0:27          'i3' (highp 3-component vector of int)

+0:27      move second child to first child (temp highp 3-component vector of int)

+0:27        'i3' (temp highp 3-component vector of int)

+0:27        Function Call: bitfieldInsert(vi3;vi3;i1;i1; (global highp 3-component vector of int)

+0:27          'i3' (temp highp 3-component vector of int)

+0:27          'i3' (temp highp 3-component vector of int)

 0:27          Constant:

 0:27            4 (const int)

 0:27          Constant:

 0:27            5 (const int)

-0:28      move second child to first child (highp uint)

-0:28        'u1' (highp uint)

-0:28        Function Call: bitfieldInsert(u1;u1;i1;i1; (highp uint)

-0:28          'u1' (highp uint)

-0:28          'u1' (highp uint)

+0:28      move second child to first child (temp highp uint)

+0:28        'u1' (temp highp uint)

+0:28        Function Call: bitfieldInsert(u1;u1;i1;i1; (global highp uint)

+0:28          'u1' (temp highp uint)

+0:28          'u1' (temp highp uint)

 0:28          Constant:

 0:28            4 (const int)

 0:28          Constant:

 0:28            5 (const int)

-0:30      move second child to first child (highp 2-component vector of int)

-0:30        'i2' (highp 2-component vector of int)

-0:30        Function Call: bitfieldReverse(vi2; (highp 2-component vector of int)

-0:30          'i2' (highp 2-component vector of int)

-0:31      move second child to first child (highp 4-component vector of uint)

-0:31        'u4' (highp 4-component vector of uint)

-0:31        Function Call: bitfieldReverse(vu4; (highp 4-component vector of uint)

-0:31          'u4' (highp 4-component vector of uint)

-0:32      move second child to first child (highp int)

-0:32        'i1' (highp int)

-0:32        Function Call: bitCount(i1; (highp int)

-0:32          'i1' (highp int)

-0:33      move second child to first child (highp 3-component vector of int)

-0:33        'i3' (highp 3-component vector of int)

-0:33        Function Call: bitCount(vu3; (highp 3-component vector of int)

-0:33          'u3' (highp 3-component vector of uint)

-0:34      move second child to first child (highp 2-component vector of int)

-0:34        'i2' (highp 2-component vector of int)

-0:34        Function Call: findLSB(vi2; (highp 2-component vector of int)

-0:34          'i2' (highp 2-component vector of int)

-0:35      move second child to first child (highp 4-component vector of int)

-0:35        'i4' (highp 4-component vector of int)

-0:35        Function Call: findLSB(vu4; (highp 4-component vector of int)

-0:35          'u4' (highp 4-component vector of uint)

-0:36      move second child to first child (highp int)

-0:36        'i1' (highp int)

-0:36        Function Call: findMSB(i1; (highp int)

-0:36          'i1' (highp int)

-0:37      move second child to first child (highp 2-component vector of int)

-0:37        'i2' (highp 2-component vector of int)

-0:37        Function Call: findMSB(vu2; (highp 2-component vector of int)

-0:37          'u2' (highp 2-component vector of uint)

-0:40      move second child to first child (highp 3-component vector of float)

-0:40        'v3' (highp 3-component vector of float)

-0:40        Function Call: frexp(vf3;vi3; (highp 3-component vector of float)

-0:40          'v3' (highp 3-component vector of float)

-0:40          'i3' (highp 3-component vector of int)

-0:42      move second child to first child (highp 2-component vector of float)

-0:42        'v2' (highp 2-component vector of float)

-0:42        Function Call: ldexp(vf2;vi2; (highp 2-component vector of float)

-0:42          'v2' (highp 2-component vector of float)

-0:42          'i2' (highp 2-component vector of int)

-0:45      move second child to first child (highp uint)

-0:45        'u1' (highp uint)

-0:45        Function Call: packUnorm4x8(vf4; (highp uint)

-0:45          'v4' (mediump 4-component vector of float)

-0:46      move second child to first child (highp uint)

-0:46        'u1' (highp uint)

-0:46        Function Call: packSnorm4x8(vf4; (highp uint)

-0:46          'v4' (mediump 4-component vector of float)

-0:47      move second child to first child (mediump 4-component vector of float)

-0:47        'v4' (mediump 4-component vector of float)

-0:47        Function Call: unpackUnorm4x8(u1; (mediump 4-component vector of float)

-0:47          'u1' (highp uint)

-0:48      move second child to first child (mediump 4-component vector of float)

-0:48        'v4' (mediump 4-component vector of float)

-0:48        Function Call: unpackSnorm4x8(u1; (mediump 4-component vector of float)

-0:48          'u1' (highp uint)

-0:60  Function Definition: foo( (void)

+0:30      move second child to first child (temp highp 2-component vector of int)

+0:30        'i2' (temp highp 2-component vector of int)

+0:30        Function Call: bitfieldReverse(vi2; (global highp 2-component vector of int)

+0:30          'i2' (temp highp 2-component vector of int)

+0:31      move second child to first child (temp highp 4-component vector of uint)

+0:31        'u4' (temp highp 4-component vector of uint)

+0:31        Function Call: bitfieldReverse(vu4; (global highp 4-component vector of uint)

+0:31          'u4' (temp highp 4-component vector of uint)

+0:32      move second child to first child (temp highp int)

+0:32        'i1' (temp highp int)

+0:32        Function Call: bitCount(i1; (global highp int)

+0:32          'i1' (temp highp int)

+0:33      move second child to first child (temp highp 3-component vector of int)

+0:33        'i3' (temp highp 3-component vector of int)

+0:33        Function Call: bitCount(vu3; (global highp 3-component vector of int)

+0:33          'u3' (temp highp 3-component vector of uint)

+0:34      move second child to first child (temp highp 2-component vector of int)

+0:34        'i2' (temp highp 2-component vector of int)

+0:34        Function Call: findLSB(vi2; (global highp 2-component vector of int)

+0:34          'i2' (temp highp 2-component vector of int)

+0:35      move second child to first child (temp highp 4-component vector of int)

+0:35        'i4' (temp highp 4-component vector of int)

+0:35        Function Call: findLSB(vu4; (global highp 4-component vector of int)

+0:35          'u4' (temp highp 4-component vector of uint)

+0:36      move second child to first child (temp highp int)

+0:36        'i1' (temp highp int)

+0:36        Function Call: findMSB(i1; (global highp int)

+0:36          'i1' (temp highp int)

+0:37      move second child to first child (temp highp 2-component vector of int)

+0:37        'i2' (temp highp 2-component vector of int)

+0:37        Function Call: findMSB(vu2; (global highp 2-component vector of int)

+0:37          'u2' (temp highp 2-component vector of uint)

+0:40      move second child to first child (temp highp 3-component vector of float)

+0:40        'v3' (temp highp 3-component vector of float)

+0:40        Function Call: frexp(vf3;vi3; (temp highp 3-component vector of float)

+0:40          'v3' (temp highp 3-component vector of float)

+0:40          'i3' (temp highp 3-component vector of int)

+0:42      move second child to first child (temp highp 2-component vector of float)

+0:42        'v2' (temp highp 2-component vector of float)

+0:42        Function Call: ldexp(vf2;vi2; (temp highp 2-component vector of float)

+0:42          'v2' (temp highp 2-component vector of float)

+0:42          'i2' (temp highp 2-component vector of int)

+0:45      move second child to first child (temp highp uint)

+0:45        'u1' (temp highp uint)

+0:45        Function Call: packUnorm4x8(vf4; (temp highp uint)

+0:45          'v4' (temp mediump 4-component vector of float)

+0:46      move second child to first child (temp highp uint)

+0:46        'u1' (temp highp uint)

+0:46        Function Call: packSnorm4x8(vf4; (temp highp uint)

+0:46          'v4' (temp mediump 4-component vector of float)

+0:47      move second child to first child (temp mediump 4-component vector of float)

+0:47        'v4' (temp mediump 4-component vector of float)

+0:47        Function Call: unpackUnorm4x8(u1; (temp mediump 4-component vector of float)

+0:47          'u1' (temp highp uint)

+0:48      move second child to first child (temp mediump 4-component vector of float)

+0:48        'v4' (temp mediump 4-component vector of float)

+0:48        Function Call: unpackSnorm4x8(u1; (temp mediump 4-component vector of float)

+0:48          'u1' (temp highp uint)

+0:60  Function Definition: foo( (global void)

 0:60    Function Parameters: 

 0:?     Sequence

-0:63      move second child to first child (highp 2-component vector of int)

-0:63        'v2' (highp 2-component vector of int)

-0:63        Function Call: textureSize(s21; (highp 2-component vector of int)

+0:63      move second child to first child (temp highp 2-component vector of int)

+0:63        'v2' (temp highp 2-component vector of int)

+0:63        Function Call: textureSize(s21; (temp highp 2-component vector of int)

 0:63          's2dms' (uniform highp sampler2DMS)

-0:64      move second child to first child (highp 2-component vector of int)

-0:64        'v2' (highp 2-component vector of int)

-0:64        Function Call: textureSize(us21; (highp 2-component vector of int)

+0:64      move second child to first child (temp highp 2-component vector of int)

+0:64        'v2' (temp highp 2-component vector of int)

+0:64        Function Call: textureSize(us21; (temp highp 2-component vector of int)

 0:64          'us2dms' (uniform highp usampler2DMS)

 0:65      Sequence

-0:65        move second child to first child (highp 4-component vector of float)

-0:65          'v4' (highp 4-component vector of float)

-0:65          Function Call: texelFetch(s21;vi2;i1; (highp 4-component vector of float)

+0:65        move second child to first child (temp highp 4-component vector of float)

+0:65          'v4' (temp highp 4-component vector of float)

+0:65          Function Call: texelFetch(s21;vi2;i1; (global highp 4-component vector of float)

 0:65            's2dms' (uniform highp sampler2DMS)

-0:65            'v2' (highp 2-component vector of int)

+0:65            'v2' (temp highp 2-component vector of int)

 0:65            Constant:

 0:65              2 (const int)

 0:66      Sequence

-0:66        move second child to first child (highp 4-component vector of int)

-0:66          'iv4' (highp 4-component vector of int)

-0:66          Function Call: texelFetch(is21;vi2;i1; (highp 4-component vector of int)

+0:66        move second child to first child (temp highp 4-component vector of int)

+0:66          'iv4' (temp highp 4-component vector of int)

+0:66          Function Call: texelFetch(is21;vi2;i1; (global highp 4-component vector of int)

 0:66            'is2dms' (uniform highp isampler2DMS)

-0:66            'v2' (highp 2-component vector of int)

+0:66            'v2' (temp highp 2-component vector of int)

 0:66            Constant:

 0:66              2 (const int)

 0:67      Constant:

@@ -355,11 +355,11 @@
 0:?     'outo' (smooth out highp sampler2D)

 0:?     'outa' (smooth out 4-element array of highp float)

 0:?     'outaa' (smooth out 4-element array of highp float)

-0:?     'outs' (smooth out structure{highp float f})

-0:?     'outasa' (smooth out 4-element array of structure{highp float f})

-0:?     'outsa' (smooth out 4-element array of structure{highp float f})

-0:?     'outSA' (smooth out structure{4-element array of highp float f})

-0:?     'outSS' (smooth out structure{highp float f, structure{highp float f} s})

+0:?     'outs' (smooth out structure{global highp float f})

+0:?     'outasa' (smooth out 4-element array of structure{global highp float f})

+0:?     'outsa' (smooth out 4-element array of structure{global highp float f})

+0:?     'outSA' (smooth out structure{global 4-element array of highp float f})

+0:?     'outSS' (smooth out structure{global highp float f, global structure{global highp float f} s})

 0:?     'gl_VertexID' (gl_VertexId highp int)

 0:?     'gl_InstanceID' (gl_InstanceId highp int)

 

diff --git a/Test/baseResults/330.frag.out b/Test/baseResults/330.frag.out
index e2c4540..2e5114c 100644
--- a/Test/baseResults/330.frag.out
+++ b/Test/baseResults/330.frag.out
@@ -40,34 +40,34 @@
 Requested GL_ARB_enhanced_layouts

 Requested GL_ARB_separate_shader_objects

 ERROR: node is still EOpNull!

-0:8  Function Definition: main( (void)

+0:8  Function Definition: main( (global void)

 0:8    Function Parameters: 

 0:10    Sequence

-0:10      move second child to first child (4-component vector of float)

+0:10      move second child to first child (temp 4-component vector of float)

 0:10        'gl_FragColor' (fragColor 4-component vector of float)

 0:10        'varyingVar' (smooth in 4-component vector of float)

-0:11      move second child to first child (4-component vector of float)

-0:11        direct index (4-component vector of float)

+0:11      move second child to first child (temp 4-component vector of float)

+0:11        direct index (temp 4-component vector of float)

 0:11          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

 0:11          Constant:

 0:11            1 (const int)

 0:11        'inVar' (smooth in 4-component vector of float)

 0:12      Sequence

-0:12        move second child to first child (int)

-0:12          'buffer' (int)

+0:12        move second child to first child (temp int)

+0:12          'buffer' (temp int)

 0:12          Constant:

 0:12            4 (const int)

-0:21  Function Definition: foo( (void)

+0:21  Function Definition: foo( (global void)

 0:21    Function Parameters: 

 0:23    Sequence

 0:23      Sequence

-0:23        move second child to first child (4-component vector of float)

-0:23          'c' (4-component vector of float)

+0:23        move second child to first child (temp 4-component vector of float)

+0:23          'c' (temp 4-component vector of float)

 0:23          gl_Color: direct index for structure (in 4-component vector of float)

 0:23            'anon@0' (in block{in 4-component vector of float gl_Color, })

 0:23            Constant:

 0:23              2 (const uint)

-0:24      move second child to first child (4-component vector of float)

+0:24      move second child to first child (temp 4-component vector of float)

 0:24        'outVar' (layout(location=0 index=0 ) out 4-component vector of float)

 0:24        'inVar' (smooth in 4-component vector of float)

 0:?   Linker Objects

@@ -91,11 +91,11 @@
 0:?     'v6' (layout(location=30 ) smooth in 4-component vector of float)

 0:?     'v23' (layout(location=61 ) smooth in float)

 0:?     'v24' (layout(location=62 ) smooth in float)

-0:?     'ininst2' (in block{layout(location=28 component=0 ) in bool b1, layout(location=29 component=0 ) in float f1, layout(location=25 ) in float f2, layout(location=26 component=0 ) in 4-component vector of float f3, layout(location=21 ) in structure{float f1, float f2} s2, layout(location=23 component=0 ) in 4-component vector of float f4, layout(location=24 component=0 ) in 4-component vector of float f5})

+0:?     'ininst2' (in block{layout(location=28 component=0 ) in bool b1, layout(location=29 component=0 ) in float f1, layout(location=25 ) in float f2, layout(location=26 component=0 ) in 4-component vector of float f3, layout(location=21 ) in structure{global float f1, temp float f2} s2, layout(location=23 component=0 ) in 4-component vector of float f4, layout(location=24 component=0 ) in 4-component vector of float f5})

 0:?     'uinst2' (layout(location=13 column_major shared ) uniform block{layout(column_major shared ) uniform float f1, layout(location=3 column_major shared ) uniform float f2})

 0:?     'in3' (in block{in float f1, layout(location=40 ) in float f2})

 0:?     'in4' (in block{layout(location=50 ) in float f1, layout(location=51 ) in float f2})

-0:?     's' (layout(location=33 ) smooth in structure{3-component vector of float a, 2X2 matrix of float b, 2-element array of 4-component vector of float c, 2-component vector of float A})

+0:?     's' (layout(location=33 ) smooth in structure{global 3-component vector of float a, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c, temp 2-component vector of float A})

 0:?     'anon@2' (in block{layout(location=44 component=0 ) in 4-component vector of float d, layout(location=45 component=0 ) in 4-component vector of float e, layout(location=47 ) in 4-component vector of float f, layout(location=48 component=0 ) in 4-component vector of float g, layout(location=41 ) in 4-component vector of float h, layout(location=42 component=0 ) in 4-component vector of float i, layout(location=43 component=0 ) in 4-component vector of float j, layout(location=44 component=0 ) in 4-component vector of float k})

 0:?     'outVar2' (layout(location=63 index=0 ) out 4-component vector of float)

 0:?     'outVar3' (layout(location=0 index=1 ) out 4-component vector of float)

@@ -113,34 +113,34 @@
 Requested GL_ARB_enhanced_layouts

 Requested GL_ARB_separate_shader_objects

 ERROR: node is still EOpNull!

-0:8  Function Definition: main( (void)

+0:8  Function Definition: main( (global void)

 0:8    Function Parameters: 

 0:10    Sequence

-0:10      move second child to first child (4-component vector of float)

+0:10      move second child to first child (temp 4-component vector of float)

 0:10        'gl_FragColor' (fragColor 4-component vector of float)

 0:10        'varyingVar' (smooth in 4-component vector of float)

-0:11      move second child to first child (4-component vector of float)

-0:11        direct index (4-component vector of float)

+0:11      move second child to first child (temp 4-component vector of float)

+0:11        direct index (temp 4-component vector of float)

 0:11          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

 0:11          Constant:

 0:11            1 (const int)

 0:11        'inVar' (smooth in 4-component vector of float)

 0:12      Sequence

-0:12        move second child to first child (int)

-0:12          'buffer' (int)

+0:12        move second child to first child (temp int)

+0:12          'buffer' (temp int)

 0:12          Constant:

 0:12            4 (const int)

-0:21  Function Definition: foo( (void)

+0:21  Function Definition: foo( (global void)

 0:21    Function Parameters: 

 0:23    Sequence

 0:23      Sequence

-0:23        move second child to first child (4-component vector of float)

-0:23          'c' (4-component vector of float)

+0:23        move second child to first child (temp 4-component vector of float)

+0:23          'c' (temp 4-component vector of float)

 0:23          gl_Color: direct index for structure (in 4-component vector of float)

 0:23            'anon@0' (in block{in 4-component vector of float gl_Color, })

 0:23            Constant:

 0:23              2 (const uint)

-0:24      move second child to first child (4-component vector of float)

+0:24      move second child to first child (temp 4-component vector of float)

 0:24        'outVar' (layout(location=0 index=0 ) out 4-component vector of float)

 0:24        'inVar' (smooth in 4-component vector of float)

 0:?   Linker Objects

@@ -164,11 +164,11 @@
 0:?     'v6' (layout(location=30 ) smooth in 4-component vector of float)

 0:?     'v23' (layout(location=61 ) smooth in float)

 0:?     'v24' (layout(location=62 ) smooth in float)

-0:?     'ininst2' (in block{layout(location=28 component=0 ) in bool b1, layout(location=29 component=0 ) in float f1, layout(location=25 ) in float f2, layout(location=26 component=0 ) in 4-component vector of float f3, layout(location=21 ) in structure{float f1, float f2} s2, layout(location=23 component=0 ) in 4-component vector of float f4, layout(location=24 component=0 ) in 4-component vector of float f5})

+0:?     'ininst2' (in block{layout(location=28 component=0 ) in bool b1, layout(location=29 component=0 ) in float f1, layout(location=25 ) in float f2, layout(location=26 component=0 ) in 4-component vector of float f3, layout(location=21 ) in structure{global float f1, temp float f2} s2, layout(location=23 component=0 ) in 4-component vector of float f4, layout(location=24 component=0 ) in 4-component vector of float f5})

 0:?     'uinst2' (layout(location=13 column_major shared ) uniform block{layout(column_major shared ) uniform float f1, layout(location=3 column_major shared ) uniform float f2})

 0:?     'in3' (in block{in float f1, layout(location=40 ) in float f2})

 0:?     'in4' (in block{layout(location=50 ) in float f1, layout(location=51 ) in float f2})

-0:?     's' (layout(location=33 ) smooth in structure{3-component vector of float a, 2X2 matrix of float b, 2-element array of 4-component vector of float c, 2-component vector of float A})

+0:?     's' (layout(location=33 ) smooth in structure{global 3-component vector of float a, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c, temp 2-component vector of float A})

 0:?     'anon@2' (in block{layout(location=44 component=0 ) in 4-component vector of float d, layout(location=45 component=0 ) in 4-component vector of float e, layout(location=47 ) in 4-component vector of float f, layout(location=48 component=0 ) in 4-component vector of float g, layout(location=41 ) in 4-component vector of float h, layout(location=42 component=0 ) in 4-component vector of float i, layout(location=43 component=0 ) in 4-component vector of float j, layout(location=44 component=0 ) in 4-component vector of float k})

 0:?     'outVar2' (layout(location=63 index=0 ) out 4-component vector of float)

 0:?     'outVar3' (layout(location=0 index=1 ) out 4-component vector of float)

diff --git a/Test/baseResults/330comp.frag.out b/Test/baseResults/330comp.frag.out
index e131ee5..5c666b0 100644
--- a/Test/baseResults/330comp.frag.out
+++ b/Test/baseResults/330comp.frag.out
@@ -2,18 +2,18 @@
 

 Shader version: 330

 0:? Sequence

-0:8  Function Definition: main( (void)

+0:8  Function Definition: main( (global void)

 0:8    Function Parameters: 

 0:10    Sequence

-0:10      move second child to first child (4-component vector of float)

+0:10      move second child to first child (temp 4-component vector of float)

 0:10        'gl_FragColor' (fragColor 4-component vector of float)

 0:10        'varyingVar' (smooth in 4-component vector of float)

-0:11      move second child to first child (4-component vector of float)

-0:11        direct index (4-component vector of float)

+0:11      move second child to first child (temp 4-component vector of float)

+0:11        direct index (temp 4-component vector of float)

 0:11          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

 0:11          Constant:

 0:11            1 (const int)

-0:11        vector-times-matrix (4-component vector of float)

+0:11        vector-times-matrix (temp 4-component vector of float)

 0:11          'inVar' (smooth in 4-component vector of float)

 0:11          'gl_ModelViewMatrix' (uniform 4X4 matrix of float)

 0:?   Linker Objects

@@ -28,18 +28,18 @@
 

 Shader version: 330

 0:? Sequence

-0:8  Function Definition: main( (void)

+0:8  Function Definition: main( (global void)

 0:8    Function Parameters: 

 0:10    Sequence

-0:10      move second child to first child (4-component vector of float)

+0:10      move second child to first child (temp 4-component vector of float)

 0:10        'gl_FragColor' (fragColor 4-component vector of float)

 0:10        'varyingVar' (smooth in 4-component vector of float)

-0:11      move second child to first child (4-component vector of float)

-0:11        direct index (4-component vector of float)

+0:11      move second child to first child (temp 4-component vector of float)

+0:11        direct index (temp 4-component vector of float)

 0:11          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

 0:11          Constant:

 0:11            1 (const int)

-0:11        vector-times-matrix (4-component vector of float)

+0:11        vector-times-matrix (temp 4-component vector of float)

 0:11          'inVar' (smooth in 4-component vector of float)

 0:11          'gl_ModelViewMatrix' (uniform 4X4 matrix of float)

 0:?   Linker Objects

diff --git a/Test/baseResults/400.frag.out b/Test/baseResults/400.frag.out
index a66909e..ca4db39 100644
--- a/Test/baseResults/400.frag.out
+++ b/Test/baseResults/400.frag.out
@@ -28,37 +28,37 @@
 gl_FragCoord pixel center is integer

 gl_FragCoord origin is upper left

 ERROR: node is still EOpNull!

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:?     Sequence

-0:13      move second child to first child (4-component vector of float)

-0:13        'v' (4-component vector of float)

-0:13        Function Call: texture(s21;vf2; (4-component vector of float)

-0:13          indirect index (sampler2D)

+0:13      move second child to first child (temp 4-component vector of float)

+0:13        'v' (temp 4-component vector of float)

+0:13        Function Call: texture(s21;vf2; (global 4-component vector of float)

+0:13          indirect index (temp sampler2D)

 0:13            'arrayedSampler' (uniform 5-element array of sampler2D)

 0:13            'i' (flat in int)

 0:13          'c2D' (smooth in 2-component vector of float)

-0:14      move second child to first child (float)

-0:14        direct index (float)

+0:14      move second child to first child (temp float)

+0:14        direct index (temp float)

 0:14          'outp' (out 4-component vector of float)

 0:14          Constant:

 0:14            0 (const int)

-0:14        direct index (smooth float)

+0:14        direct index (smooth temp float)

 0:14          'gl_ClipDistance' (smooth in 4-element array of float)

 0:14          Constant:

 0:14            1 (const int)

 0:18      Sequence

-0:18        move second child to first child (4-component vector of uint)

-0:18          'uv4' (4-component vector of uint)

-0:18          Function Call: textureGatherOffsets(usR21;vf2;vi2[4];i1; (4-component vector of uint)

+0:18        move second child to first child (temp 4-component vector of uint)

+0:18          'uv4' (temp 4-component vector of uint)

+0:18          Function Call: textureGatherOffsets(usR21;vf2;vi2[4];i1; (global 4-component vector of uint)

 0:18            'samp2dr' (uniform usampler2DRect)

 0:18            'c2D' (smooth in 2-component vector of float)

-0:18            'offsets' (4-element array of 2-component vector of int)

+0:18            'offsets' (temp 4-element array of 2-component vector of int)

 0:18            Constant:

 0:18              2 (const int)

-0:19      move second child to first child (4-component vector of uint)

-0:19        'uv4' (4-component vector of uint)

-0:19        Function Call: textureGatherOffsets(usR21;vf2;vi2[4];i1; (4-component vector of uint)

+0:19      move second child to first child (temp 4-component vector of uint)

+0:19        'uv4' (temp 4-component vector of uint)

+0:19        Function Call: textureGatherOffsets(usR21;vf2;vi2[4];i1; (global 4-component vector of uint)

 0:19          'samp2dr' (uniform usampler2DRect)

 0:19          'c2D' (smooth in 2-component vector of float)

 0:19          Constant:

@@ -73,18 +73,18 @@
 0:19          Constant:

 0:19            2 (const int)

 0:20      Sequence

-0:20        move second child to first child (4-component vector of float)

-0:20          'v4' (4-component vector of float)

-0:20          Function Call: textureGather(s21;vf2; (4-component vector of float)

-0:20            direct index (sampler2D)

+0:20        move second child to first child (temp 4-component vector of float)

+0:20          'v4' (temp 4-component vector of float)

+0:20          Function Call: textureGather(s21;vf2; (global 4-component vector of float)

+0:20            direct index (temp sampler2D)

 0:20              'arrayedSampler' (uniform 5-element array of sampler2D)

 0:20              Constant:

 0:20                0 (const int)

 0:20            'c2D' (smooth in 2-component vector of float)

 0:21      Sequence

-0:21        move second child to first child (4-component vector of int)

-0:21          'iv4' (4-component vector of int)

-0:21          Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (4-component vector of int)

+0:21        move second child to first child (temp 4-component vector of int)

+0:21          'iv4' (temp 4-component vector of int)

+0:21          Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

 0:21            'isamp2DA' (uniform isampler2DArray)

 0:21            Constant:

 0:21              0.100000

@@ -95,9 +95,9 @@
 0:21              1 (const int)

 0:21            Constant:

 0:21              3 (const int)

-0:22      move second child to first child (4-component vector of int)

-0:22        'iv4' (4-component vector of int)

-0:22        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (4-component vector of int)

+0:22      move second child to first child (temp 4-component vector of int)

+0:22        'iv4' (temp 4-component vector of int)

+0:22        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

 0:22          'isamp2DA' (uniform isampler2DArray)

 0:22          Constant:

 0:22            0.100000

@@ -107,9 +107,9 @@
 0:22            1 (const int)

 0:22            1 (const int)

 0:22          'i' (flat in int)

-0:23      move second child to first child (4-component vector of int)

-0:23        'iv4' (4-component vector of int)

-0:23        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (4-component vector of int)

+0:23      move second child to first child (temp 4-component vector of int)

+0:23        'iv4' (temp 4-component vector of int)

+0:23        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

 0:23          'isamp2DA' (uniform isampler2DArray)

 0:23          Constant:

 0:23            0.100000

@@ -120,9 +120,9 @@
 0:23            1 (const int)

 0:23          Constant:

 0:23            4 (const int)

-0:24      move second child to first child (4-component vector of int)

-0:24        'iv4' (4-component vector of int)

-0:24        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (4-component vector of int)

+0:24      move second child to first child (temp 4-component vector of int)

+0:24        'iv4' (temp 4-component vector of int)

+0:24        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

 0:24          'isamp2DA' (uniform isampler2DArray)

 0:24          Constant:

 0:24            0.100000

@@ -133,24 +133,24 @@
 0:24            1 (const int)

 0:24          Constant:

 0:24            3 (const int)

-0:25      move second child to first child (4-component vector of int)

-0:25        'iv4' (4-component vector of int)

-0:25        Function Call: textureGatherOffset(isA21;vf3;vi2; (4-component vector of int)

+0:25      move second child to first child (temp 4-component vector of int)

+0:25        'iv4' (temp 4-component vector of int)

+0:25        Function Call: textureGatherOffset(isA21;vf3;vi2; (global 4-component vector of int)

 0:25          'isamp2DA' (uniform isampler2DArray)

 0:25          Constant:

 0:25            0.100000

 0:25            0.100000

 0:25            0.100000

-0:25          Construct ivec2 (2-component vector of int)

+0:25          Construct ivec2 (temp 2-component vector of int)

 0:25            'i' (flat in int)

 0:27      Sequence

-0:27        move second child to first child (4-component vector of float)

-0:27          'c' (4-component vector of float)

+0:27        move second child to first child (temp 4-component vector of float)

+0:27          'c' (temp 4-component vector of float)

 0:27          'gl_FragCoord' (gl_FragCoord 4-component vector of float)

-0:47  Function Definition: foo23( (void)

+0:47  Function Definition: foo23( (global void)

 0:47    Function Parameters: 

 0:?     Sequence

-0:51      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (float)

+0:51      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

 0:51        'u2drs' (uniform sampler2DRectShadow)

 0:51        'outp' (out 4-component vector of float)

 0:51        Constant:

@@ -159,9 +159,9 @@
 0:51        Constant:

 0:51          0.000000

 0:51          0.000000

-0:51        Convert float to int (2-component vector of int)

+0:51        Convert float to int (temp 2-component vector of int)

 0:51          'c2D' (smooth in 2-component vector of float)

-0:52      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (float)

+0:52      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

 0:52        'u2drs' (uniform sampler2DRectShadow)

 0:52        'outp' (out 4-component vector of float)

 0:52        Constant:

@@ -173,7 +173,7 @@
 0:52        Constant:

 0:52          3 (const int)

 0:52          4 (const int)

-0:53      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (float)

+0:53      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

 0:53        'u2drs' (uniform sampler2DRectShadow)

 0:53        'outp' (out 4-component vector of float)

 0:53        Constant:

@@ -185,7 +185,7 @@
 0:53        Constant:

 0:53          15 (const int)

 0:53          16 (const int)

-0:54      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (float)

+0:54      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

 0:54        'u2drs' (uniform sampler2DRectShadow)

 0:54        'outp' (out 4-component vector of float)

 0:54        Constant:

@@ -197,17 +197,17 @@
 0:54        Constant:

 0:54          -10 (const int)

 0:54          20 (const int)

-0:60  Function Definition: foo24( (void)

+0:60  Function Definition: foo24( (global void)

 0:60    Function Parameters: 

 0:?     Sequence

-0:63      move second child to first child (3-component vector of double)

-0:63        'df' (3-component vector of double)

-0:63        Convert float to double (3-component vector of double)

-0:63          Comma (3-component vector of float)

-0:63            move second child to first child (3-component vector of float)

-0:63              'tempReturn' (3-component vector of float)

-0:63              modf (3-component vector of float)

-0:63                vector swizzle (3-component vector of float)

+0:63      move second child to first child (temp 3-component vector of double)

+0:63        'df' (temp 3-component vector of double)

+0:63        Convert float to double (temp 3-component vector of double)

+0:63          Comma (global 3-component vector of float)

+0:63            move second child to first child (temp 3-component vector of float)

+0:63              'tempReturn' (global 3-component vector of float)

+0:63              modf (global 3-component vector of float)

+0:63                vector swizzle (temp 3-component vector of float)

 0:63                  'outp' (out 4-component vector of float)

 0:63                  Sequence

 0:63                    Constant:

@@ -216,88 +216,88 @@
 0:63                      1 (const int)

 0:63                    Constant:

 0:63                      2 (const int)

-0:63                'tempArg' (3-component vector of float)

-0:63            move second child to first child (3-component vector of double)

-0:63              'di' (3-component vector of double)

-0:63              Convert float to double (3-component vector of double)

-0:63                'tempArg' (3-component vector of float)

-0:63            'tempReturn' (3-component vector of float)

-0:71  Function Definition: foodc1( (void)

+0:63                'tempArg' (temp 3-component vector of float)

+0:63            move second child to first child (temp 3-component vector of double)

+0:63              'di' (temp 3-component vector of double)

+0:63              Convert float to double (temp 3-component vector of double)

+0:63                'tempArg' (temp 3-component vector of float)

+0:63            'tempReturn' (global 3-component vector of float)

+0:71  Function Definition: foodc1( (global void)

 0:71    Function Parameters: 

 0:73    Sequence

 0:73      Sequence

-0:73        move second child to first child (2-component vector of float)

-0:73          'v2' (2-component vector of float)

-0:73          dPdxFine (2-component vector of float)

+0:73        move second child to first child (temp 2-component vector of float)

+0:73          'v2' (temp 2-component vector of float)

+0:73          dPdxFine (global 2-component vector of float)

 0:73            'in2' (smooth in 2-component vector of float)

 0:74      Sequence

-0:74        move second child to first child (3-component vector of float)

-0:74          'v3' (3-component vector of float)

-0:74          dPdyCoarse (3-component vector of float)

+0:74        move second child to first child (temp 3-component vector of float)

+0:74          'v3' (temp 3-component vector of float)

+0:74          dPdyCoarse (global 3-component vector of float)

 0:74            'in3' (smooth in 3-component vector of float)

 0:75      Sequence

-0:75        move second child to first child (4-component vector of float)

-0:75          'v4' (4-component vector of float)

-0:75          add (4-component vector of float)

-0:75            fwidthCoarse (4-component vector of float)

+0:75        move second child to first child (temp 4-component vector of float)

+0:75          'v4' (temp 4-component vector of float)

+0:75          add (temp 4-component vector of float)

+0:75            fwidthCoarse (global 4-component vector of float)

 0:75              'in4' (smooth in 4-component vector of float)

-0:75            fwidthFine (4-component vector of float)

+0:75            fwidthFine (global 4-component vector of float)

 0:75              'in4' (smooth in 4-component vector of float)

-0:80  Function Definition: foodc2( (void)

+0:80  Function Definition: foodc2( (global void)

 0:80    Function Parameters: 

 0:82    Sequence

 0:82      Sequence

-0:82        move second child to first child (2-component vector of float)

-0:82          'v2' (2-component vector of float)

-0:82          dPdxFine (2-component vector of float)

+0:82        move second child to first child (temp 2-component vector of float)

+0:82          'v2' (temp 2-component vector of float)

+0:82          dPdxFine (global 2-component vector of float)

 0:82            'in2' (smooth in 2-component vector of float)

 0:83      Sequence

-0:83        move second child to first child (3-component vector of float)

-0:83          'v3' (3-component vector of float)

-0:83          dPdyCoarse (3-component vector of float)

+0:83        move second child to first child (temp 3-component vector of float)

+0:83          'v3' (temp 3-component vector of float)

+0:83          dPdyCoarse (global 3-component vector of float)

 0:83            'in3' (smooth in 3-component vector of float)

 0:84      Sequence

-0:84        move second child to first child (4-component vector of float)

-0:84          'v4' (4-component vector of float)

-0:84          add (4-component vector of float)

-0:84            fwidthCoarse (4-component vector of float)

+0:84        move second child to first child (temp 4-component vector of float)

+0:84          'v4' (temp 4-component vector of float)

+0:84          add (temp 4-component vector of float)

+0:84            fwidthCoarse (global 4-component vector of float)

 0:84              'in4' (smooth in 4-component vector of float)

-0:84            fwidthFine (4-component vector of float)

+0:84            fwidthFine (global 4-component vector of float)

 0:84              'in4' (smooth in 4-component vector of float)

-0:89      move second child to first child (2-component vector of float)

-0:89        'v2' (2-component vector of float)

-0:89        Function Call: frexp(vf2;vi2; (2-component vector of float)

-0:89          'v2' (2-component vector of float)

-0:89          'i2' (2-component vector of int)

-0:90      move second child to first child (3-component vector of float)

-0:90        'v3' (3-component vector of float)

-0:90        Function Call: ldexp(vf3;vi3; (3-component vector of float)

-0:90          'v3' (3-component vector of float)

-0:90          'i3' (3-component vector of int)

-0:92      move second child to first child (uint)

-0:92        'u1' (uint)

-0:92        Function Call: packUnorm4x8(vf4; (uint)

-0:92          'v4' (4-component vector of float)

-0:93      move second child to first child (uint)

-0:93        'u1' (uint)

-0:93        Function Call: packSnorm4x8(vf4; (uint)

-0:93          'v4' (4-component vector of float)

-0:94      move second child to first child (4-component vector of float)

-0:94        'v4' (4-component vector of float)

-0:94        Function Call: unpackUnorm4x8(u1; (4-component vector of float)

-0:94          'u1' (uint)

-0:95      move second child to first child (4-component vector of float)

-0:95        'v4' (4-component vector of float)

-0:95        Function Call: unpackSnorm4x8(u1; (4-component vector of float)

-0:95          'u1' (uint)

-0:99      move second child to first child (double)

-0:99        'd' (double)

-0:99        Function Call: packDouble2x32(vu2; (double)

-0:99          'u2' (2-component vector of uint)

-0:100      move second child to first child (2-component vector of uint)

-0:100        'u2' (2-component vector of uint)

-0:100        Function Call: unpackDouble2x32(d1; (2-component vector of uint)

-0:100          'd' (double)

+0:89      move second child to first child (temp 2-component vector of float)

+0:89        'v2' (temp 2-component vector of float)

+0:89        Function Call: frexp(vf2;vi2; (temp 2-component vector of float)

+0:89          'v2' (temp 2-component vector of float)

+0:89          'i2' (temp 2-component vector of int)

+0:90      move second child to first child (temp 3-component vector of float)

+0:90        'v3' (temp 3-component vector of float)

+0:90        Function Call: ldexp(vf3;vi3; (temp 3-component vector of float)

+0:90          'v3' (temp 3-component vector of float)

+0:90          'i3' (temp 3-component vector of int)

+0:92      move second child to first child (temp uint)

+0:92        'u1' (temp uint)

+0:92        Function Call: packUnorm4x8(vf4; (temp uint)

+0:92          'v4' (temp 4-component vector of float)

+0:93      move second child to first child (temp uint)

+0:93        'u1' (temp uint)

+0:93        Function Call: packSnorm4x8(vf4; (temp uint)

+0:93          'v4' (temp 4-component vector of float)

+0:94      move second child to first child (temp 4-component vector of float)

+0:94        'v4' (temp 4-component vector of float)

+0:94        Function Call: unpackUnorm4x8(u1; (temp 4-component vector of float)

+0:94          'u1' (temp uint)

+0:95      move second child to first child (temp 4-component vector of float)

+0:95        'v4' (temp 4-component vector of float)

+0:95        Function Call: unpackSnorm4x8(u1; (temp 4-component vector of float)

+0:95          'u1' (temp uint)

+0:99      move second child to first child (temp double)

+0:99        'd' (temp double)

+0:99        Function Call: packDouble2x32(vu2; (global double)

+0:99          'u2' (temp 2-component vector of uint)

+0:100      move second child to first child (temp 2-component vector of uint)

+0:100        'u2' (temp 2-component vector of uint)

+0:100        Function Call: unpackDouble2x32(d1; (global 2-component vector of uint)

+0:100          'd' (temp double)

 0:?   Linker Objects

 0:?     'c2D' (smooth in 2-component vector of float)

 0:?     'i' (flat in int)

@@ -331,37 +331,37 @@
 gl_FragCoord pixel center is integer

 gl_FragCoord origin is upper left

 ERROR: node is still EOpNull!

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:?     Sequence

-0:13      move second child to first child (4-component vector of float)

-0:13        'v' (4-component vector of float)

-0:13        Function Call: texture(s21;vf2; (4-component vector of float)

-0:13          indirect index (sampler2D)

+0:13      move second child to first child (temp 4-component vector of float)

+0:13        'v' (temp 4-component vector of float)

+0:13        Function Call: texture(s21;vf2; (global 4-component vector of float)

+0:13          indirect index (temp sampler2D)

 0:13            'arrayedSampler' (uniform 5-element array of sampler2D)

 0:13            'i' (flat in int)

 0:13          'c2D' (smooth in 2-component vector of float)

-0:14      move second child to first child (float)

-0:14        direct index (float)

+0:14      move second child to first child (temp float)

+0:14        direct index (temp float)

 0:14          'outp' (out 4-component vector of float)

 0:14          Constant:

 0:14            0 (const int)

-0:14        direct index (smooth float)

+0:14        direct index (smooth temp float)

 0:14          'gl_ClipDistance' (smooth in 4-element array of float)

 0:14          Constant:

 0:14            1 (const int)

 0:18      Sequence

-0:18        move second child to first child (4-component vector of uint)

-0:18          'uv4' (4-component vector of uint)

-0:18          Function Call: textureGatherOffsets(usR21;vf2;vi2[4];i1; (4-component vector of uint)

+0:18        move second child to first child (temp 4-component vector of uint)

+0:18          'uv4' (temp 4-component vector of uint)

+0:18          Function Call: textureGatherOffsets(usR21;vf2;vi2[4];i1; (global 4-component vector of uint)

 0:18            'samp2dr' (uniform usampler2DRect)

 0:18            'c2D' (smooth in 2-component vector of float)

-0:18            'offsets' (4-element array of 2-component vector of int)

+0:18            'offsets' (temp 4-element array of 2-component vector of int)

 0:18            Constant:

 0:18              2 (const int)

-0:19      move second child to first child (4-component vector of uint)

-0:19        'uv4' (4-component vector of uint)

-0:19        Function Call: textureGatherOffsets(usR21;vf2;vi2[4];i1; (4-component vector of uint)

+0:19      move second child to first child (temp 4-component vector of uint)

+0:19        'uv4' (temp 4-component vector of uint)

+0:19        Function Call: textureGatherOffsets(usR21;vf2;vi2[4];i1; (global 4-component vector of uint)

 0:19          'samp2dr' (uniform usampler2DRect)

 0:19          'c2D' (smooth in 2-component vector of float)

 0:19          Constant:

@@ -376,18 +376,18 @@
 0:19          Constant:

 0:19            2 (const int)

 0:20      Sequence

-0:20        move second child to first child (4-component vector of float)

-0:20          'v4' (4-component vector of float)

-0:20          Function Call: textureGather(s21;vf2; (4-component vector of float)

-0:20            direct index (sampler2D)

+0:20        move second child to first child (temp 4-component vector of float)

+0:20          'v4' (temp 4-component vector of float)

+0:20          Function Call: textureGather(s21;vf2; (global 4-component vector of float)

+0:20            direct index (temp sampler2D)

 0:20              'arrayedSampler' (uniform 5-element array of sampler2D)

 0:20              Constant:

 0:20                0 (const int)

 0:20            'c2D' (smooth in 2-component vector of float)

 0:21      Sequence

-0:21        move second child to first child (4-component vector of int)

-0:21          'iv4' (4-component vector of int)

-0:21          Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (4-component vector of int)

+0:21        move second child to first child (temp 4-component vector of int)

+0:21          'iv4' (temp 4-component vector of int)

+0:21          Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

 0:21            'isamp2DA' (uniform isampler2DArray)

 0:21            Constant:

 0:21              0.100000

@@ -398,9 +398,9 @@
 0:21              1 (const int)

 0:21            Constant:

 0:21              3 (const int)

-0:22      move second child to first child (4-component vector of int)

-0:22        'iv4' (4-component vector of int)

-0:22        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (4-component vector of int)

+0:22      move second child to first child (temp 4-component vector of int)

+0:22        'iv4' (temp 4-component vector of int)

+0:22        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

 0:22          'isamp2DA' (uniform isampler2DArray)

 0:22          Constant:

 0:22            0.100000

@@ -410,9 +410,9 @@
 0:22            1 (const int)

 0:22            1 (const int)

 0:22          'i' (flat in int)

-0:23      move second child to first child (4-component vector of int)

-0:23        'iv4' (4-component vector of int)

-0:23        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (4-component vector of int)

+0:23      move second child to first child (temp 4-component vector of int)

+0:23        'iv4' (temp 4-component vector of int)

+0:23        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

 0:23          'isamp2DA' (uniform isampler2DArray)

 0:23          Constant:

 0:23            0.100000

@@ -423,9 +423,9 @@
 0:23            1 (const int)

 0:23          Constant:

 0:23            4 (const int)

-0:24      move second child to first child (4-component vector of int)

-0:24        'iv4' (4-component vector of int)

-0:24        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (4-component vector of int)

+0:24      move second child to first child (temp 4-component vector of int)

+0:24        'iv4' (temp 4-component vector of int)

+0:24        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

 0:24          'isamp2DA' (uniform isampler2DArray)

 0:24          Constant:

 0:24            0.100000

@@ -436,24 +436,24 @@
 0:24            1 (const int)

 0:24          Constant:

 0:24            3 (const int)

-0:25      move second child to first child (4-component vector of int)

-0:25        'iv4' (4-component vector of int)

-0:25        Function Call: textureGatherOffset(isA21;vf3;vi2; (4-component vector of int)

+0:25      move second child to first child (temp 4-component vector of int)

+0:25        'iv4' (temp 4-component vector of int)

+0:25        Function Call: textureGatherOffset(isA21;vf3;vi2; (global 4-component vector of int)

 0:25          'isamp2DA' (uniform isampler2DArray)

 0:25          Constant:

 0:25            0.100000

 0:25            0.100000

 0:25            0.100000

-0:25          Construct ivec2 (2-component vector of int)

+0:25          Construct ivec2 (temp 2-component vector of int)

 0:25            'i' (flat in int)

 0:27      Sequence

-0:27        move second child to first child (4-component vector of float)

-0:27          'c' (4-component vector of float)

+0:27        move second child to first child (temp 4-component vector of float)

+0:27          'c' (temp 4-component vector of float)

 0:27          'gl_FragCoord' (gl_FragCoord 4-component vector of float)

-0:47  Function Definition: foo23( (void)

+0:47  Function Definition: foo23( (global void)

 0:47    Function Parameters: 

 0:?     Sequence

-0:51      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (float)

+0:51      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

 0:51        'u2drs' (uniform sampler2DRectShadow)

 0:51        'outp' (out 4-component vector of float)

 0:51        Constant:

@@ -462,9 +462,9 @@
 0:51        Constant:

 0:51          0.000000

 0:51          0.000000

-0:51        Convert float to int (2-component vector of int)

+0:51        Convert float to int (temp 2-component vector of int)

 0:51          'c2D' (smooth in 2-component vector of float)

-0:52      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (float)

+0:52      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

 0:52        'u2drs' (uniform sampler2DRectShadow)

 0:52        'outp' (out 4-component vector of float)

 0:52        Constant:

@@ -476,7 +476,7 @@
 0:52        Constant:

 0:52          3 (const int)

 0:52          4 (const int)

-0:53      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (float)

+0:53      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

 0:53        'u2drs' (uniform sampler2DRectShadow)

 0:53        'outp' (out 4-component vector of float)

 0:53        Constant:

@@ -488,7 +488,7 @@
 0:53        Constant:

 0:53          15 (const int)

 0:53          16 (const int)

-0:54      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (float)

+0:54      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

 0:54        'u2drs' (uniform sampler2DRectShadow)

 0:54        'outp' (out 4-component vector of float)

 0:54        Constant:

@@ -500,17 +500,17 @@
 0:54        Constant:

 0:54          -10 (const int)

 0:54          20 (const int)

-0:60  Function Definition: foo24( (void)

+0:60  Function Definition: foo24( (global void)

 0:60    Function Parameters: 

 0:?     Sequence

-0:63      move second child to first child (3-component vector of double)

-0:63        'df' (3-component vector of double)

-0:63        Convert float to double (3-component vector of double)

-0:63          Comma (3-component vector of float)

-0:63            move second child to first child (3-component vector of float)

-0:63              'tempReturn' (3-component vector of float)

-0:63              modf (3-component vector of float)

-0:63                vector swizzle (3-component vector of float)

+0:63      move second child to first child (temp 3-component vector of double)

+0:63        'df' (temp 3-component vector of double)

+0:63        Convert float to double (temp 3-component vector of double)

+0:63          Comma (global 3-component vector of float)

+0:63            move second child to first child (temp 3-component vector of float)

+0:63              'tempReturn' (global 3-component vector of float)

+0:63              modf (global 3-component vector of float)

+0:63                vector swizzle (temp 3-component vector of float)

 0:63                  'outp' (out 4-component vector of float)

 0:63                  Sequence

 0:63                    Constant:

@@ -519,88 +519,88 @@
 0:63                      1 (const int)

 0:63                    Constant:

 0:63                      2 (const int)

-0:63                'tempArg' (3-component vector of float)

-0:63            move second child to first child (3-component vector of double)

-0:63              'di' (3-component vector of double)

-0:63              Convert float to double (3-component vector of double)

-0:63                'tempArg' (3-component vector of float)

-0:63            'tempReturn' (3-component vector of float)

-0:71  Function Definition: foodc1( (void)

+0:63                'tempArg' (temp 3-component vector of float)

+0:63            move second child to first child (temp 3-component vector of double)

+0:63              'di' (temp 3-component vector of double)

+0:63              Convert float to double (temp 3-component vector of double)

+0:63                'tempArg' (temp 3-component vector of float)

+0:63            'tempReturn' (global 3-component vector of float)

+0:71  Function Definition: foodc1( (global void)

 0:71    Function Parameters: 

 0:73    Sequence

 0:73      Sequence

-0:73        move second child to first child (2-component vector of float)

-0:73          'v2' (2-component vector of float)

-0:73          dPdxFine (2-component vector of float)

+0:73        move second child to first child (temp 2-component vector of float)

+0:73          'v2' (temp 2-component vector of float)

+0:73          dPdxFine (global 2-component vector of float)

 0:73            'in2' (smooth in 2-component vector of float)

 0:74      Sequence

-0:74        move second child to first child (3-component vector of float)

-0:74          'v3' (3-component vector of float)

-0:74          dPdyCoarse (3-component vector of float)

+0:74        move second child to first child (temp 3-component vector of float)

+0:74          'v3' (temp 3-component vector of float)

+0:74          dPdyCoarse (global 3-component vector of float)

 0:74            'in3' (smooth in 3-component vector of float)

 0:75      Sequence

-0:75        move second child to first child (4-component vector of float)

-0:75          'v4' (4-component vector of float)

-0:75          add (4-component vector of float)

-0:75            fwidthCoarse (4-component vector of float)

+0:75        move second child to first child (temp 4-component vector of float)

+0:75          'v4' (temp 4-component vector of float)

+0:75          add (temp 4-component vector of float)

+0:75            fwidthCoarse (global 4-component vector of float)

 0:75              'in4' (smooth in 4-component vector of float)

-0:75            fwidthFine (4-component vector of float)

+0:75            fwidthFine (global 4-component vector of float)

 0:75              'in4' (smooth in 4-component vector of float)

-0:80  Function Definition: foodc2( (void)

+0:80  Function Definition: foodc2( (global void)

 0:80    Function Parameters: 

 0:82    Sequence

 0:82      Sequence

-0:82        move second child to first child (2-component vector of float)

-0:82          'v2' (2-component vector of float)

-0:82          dPdxFine (2-component vector of float)

+0:82        move second child to first child (temp 2-component vector of float)

+0:82          'v2' (temp 2-component vector of float)

+0:82          dPdxFine (global 2-component vector of float)

 0:82            'in2' (smooth in 2-component vector of float)

 0:83      Sequence

-0:83        move second child to first child (3-component vector of float)

-0:83          'v3' (3-component vector of float)

-0:83          dPdyCoarse (3-component vector of float)

+0:83        move second child to first child (temp 3-component vector of float)

+0:83          'v3' (temp 3-component vector of float)

+0:83          dPdyCoarse (global 3-component vector of float)

 0:83            'in3' (smooth in 3-component vector of float)

 0:84      Sequence

-0:84        move second child to first child (4-component vector of float)

-0:84          'v4' (4-component vector of float)

-0:84          add (4-component vector of float)

-0:84            fwidthCoarse (4-component vector of float)

+0:84        move second child to first child (temp 4-component vector of float)

+0:84          'v4' (temp 4-component vector of float)

+0:84          add (temp 4-component vector of float)

+0:84            fwidthCoarse (global 4-component vector of float)

 0:84              'in4' (smooth in 4-component vector of float)

-0:84            fwidthFine (4-component vector of float)

+0:84            fwidthFine (global 4-component vector of float)

 0:84              'in4' (smooth in 4-component vector of float)

-0:89      move second child to first child (2-component vector of float)

-0:89        'v2' (2-component vector of float)

-0:89        Function Call: frexp(vf2;vi2; (2-component vector of float)

-0:89          'v2' (2-component vector of float)

-0:89          'i2' (2-component vector of int)

-0:90      move second child to first child (3-component vector of float)

-0:90        'v3' (3-component vector of float)

-0:90        Function Call: ldexp(vf3;vi3; (3-component vector of float)

-0:90          'v3' (3-component vector of float)

-0:90          'i3' (3-component vector of int)

-0:92      move second child to first child (uint)

-0:92        'u1' (uint)

-0:92        Function Call: packUnorm4x8(vf4; (uint)

-0:92          'v4' (4-component vector of float)

-0:93      move second child to first child (uint)

-0:93        'u1' (uint)

-0:93        Function Call: packSnorm4x8(vf4; (uint)

-0:93          'v4' (4-component vector of float)

-0:94      move second child to first child (4-component vector of float)

-0:94        'v4' (4-component vector of float)

-0:94        Function Call: unpackUnorm4x8(u1; (4-component vector of float)

-0:94          'u1' (uint)

-0:95      move second child to first child (4-component vector of float)

-0:95        'v4' (4-component vector of float)

-0:95        Function Call: unpackSnorm4x8(u1; (4-component vector of float)

-0:95          'u1' (uint)

-0:99      move second child to first child (double)

-0:99        'd' (double)

-0:99        Function Call: packDouble2x32(vu2; (double)

-0:99          'u2' (2-component vector of uint)

-0:100      move second child to first child (2-component vector of uint)

-0:100        'u2' (2-component vector of uint)

-0:100        Function Call: unpackDouble2x32(d1; (2-component vector of uint)

-0:100          'd' (double)

+0:89      move second child to first child (temp 2-component vector of float)

+0:89        'v2' (temp 2-component vector of float)

+0:89        Function Call: frexp(vf2;vi2; (temp 2-component vector of float)

+0:89          'v2' (temp 2-component vector of float)

+0:89          'i2' (temp 2-component vector of int)

+0:90      move second child to first child (temp 3-component vector of float)

+0:90        'v3' (temp 3-component vector of float)

+0:90        Function Call: ldexp(vf3;vi3; (temp 3-component vector of float)

+0:90          'v3' (temp 3-component vector of float)

+0:90          'i3' (temp 3-component vector of int)

+0:92      move second child to first child (temp uint)

+0:92        'u1' (temp uint)

+0:92        Function Call: packUnorm4x8(vf4; (temp uint)

+0:92          'v4' (temp 4-component vector of float)

+0:93      move second child to first child (temp uint)

+0:93        'u1' (temp uint)

+0:93        Function Call: packSnorm4x8(vf4; (temp uint)

+0:93          'v4' (temp 4-component vector of float)

+0:94      move second child to first child (temp 4-component vector of float)

+0:94        'v4' (temp 4-component vector of float)

+0:94        Function Call: unpackUnorm4x8(u1; (temp 4-component vector of float)

+0:94          'u1' (temp uint)

+0:95      move second child to first child (temp 4-component vector of float)

+0:95        'v4' (temp 4-component vector of float)

+0:95        Function Call: unpackSnorm4x8(u1; (temp 4-component vector of float)

+0:95          'u1' (temp uint)

+0:99      move second child to first child (temp double)

+0:99        'd' (temp double)

+0:99        Function Call: packDouble2x32(vu2; (global double)

+0:99          'u2' (temp 2-component vector of uint)

+0:100      move second child to first child (temp 2-component vector of uint)

+0:100        'u2' (temp 2-component vector of uint)

+0:100        Function Call: unpackDouble2x32(d1; (global 2-component vector of uint)

+0:100          'd' (temp double)

 0:?   Linker Objects

 0:?     'c2D' (smooth in 2-component vector of float)

 0:?     'i' (flat in int)

diff --git a/Test/baseResults/400.geom.out b/Test/baseResults/400.geom.out
index 65895a6..fde165c 100644
--- a/Test/baseResults/400.geom.out
+++ b/Test/baseResults/400.geom.out
@@ -29,41 +29,41 @@
 input primitive = triangles

 output primitive = none

 ERROR: node is still EOpNull!

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

 0:5    Sequence

-0:5      EmitStreamVertex (void)

+0:5      EmitStreamVertex (global void)

 0:5        Constant:

 0:5          1 (const int)

-0:6      EndStreamPrimitive (void)

+0:6      EndStreamPrimitive (global void)

 0:6        Constant:

 0:6          0 (const int)

-0:7      EmitVertex (void)

-0:8      EndPrimitive (void)

+0:7      EmitVertex (global void)

+0:8      EndPrimitive (global void)

 0:9      Sequence

-0:9        move second child to first child (int)

-0:9          'id' (int)

+0:9        move second child to first child (temp int)

+0:9          'id' (temp int)

 0:9          'gl_InvocationID' (in int)

-0:23  Function Definition: foo( (void)

+0:23  Function Definition: foo( (global void)

 0:23    Function Parameters: 

 0:25    Sequence

 0:25      Constant:

 0:25        1 (const int)

 0:26      gl_Position: direct index for structure (in 4-component vector of float)

-0:26        direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize})

+0:26        direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize})

 0:26          'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize})

 0:26          Constant:

 0:26            1 (const int)

 0:26        Constant:

 0:26          0 (const int)

-0:34  Function Definition: foo2( (void)

+0:34  Function Definition: foo2( (global void)

 0:34    Function Parameters: 

 0:36    Sequence

 0:36      Constant:

 0:36        1 (const int)

 0:37      Constant:

 0:37        3 (const int)

-0:46  Function Definition: foo3( (void)

+0:46  Function Definition: foo3( (global void)

 0:46    Function Parameters: 

 0:48    Sequence

 0:48      Constant:

@@ -74,97 +74,97 @@
 0:50        3 (const int)

 0:51      Constant:

 0:51        3 (const int)

-0:75  Function Definition: bits( (void)

+0:75  Function Definition: bits( (global void)

 0:75    Function Parameters: 

 0:?     Sequence

-0:78      move second child to first child (2-component vector of uint)

-0:78        'u2' (2-component vector of uint)

-0:78        Function Call: uaddCarry(vu2;vu2;vu2; (2-component vector of uint)

-0:78          'u2' (2-component vector of uint)

-0:78          'u2' (2-component vector of uint)

-0:78          'u2' (2-component vector of uint)

-0:80      move second child to first child (uint)

-0:80        'u1' (uint)

-0:80        Function Call: usubBorrow(u1;u1;u1; (uint)

-0:80          'u1' (uint)

-0:80          'u1' (uint)

-0:80          'u1' (uint)

-0:82      Function Call: umulExtended(vu4;vu4;vu4;vu4; (void)

-0:82        'u4' (4-component vector of uint)

-0:82        'u4' (4-component vector of uint)

-0:82        'u4' (4-component vector of uint)

-0:82        'u4' (4-component vector of uint)

-0:84      Function Call: imulExtended(vi4;vi4;vi4;vi4; (void)

-0:84        'i4' (4-component vector of int)

-0:84        'i4' (4-component vector of int)

-0:84        'i4' (4-component vector of int)

-0:84        'i4' (4-component vector of int)

-0:86      move second child to first child (int)

-0:86        'i1' (int)

-0:86        Function Call: bitfieldExtract(i1;i1;i1; (int)

-0:86          'i1' (int)

+0:78      move second child to first child (temp 2-component vector of uint)

+0:78        'u2' (temp 2-component vector of uint)

+0:78        Function Call: uaddCarry(vu2;vu2;vu2; (global 2-component vector of uint)

+0:78          'u2' (temp 2-component vector of uint)

+0:78          'u2' (temp 2-component vector of uint)

+0:78          'u2' (temp 2-component vector of uint)

+0:80      move second child to first child (temp uint)

+0:80        'u1' (temp uint)

+0:80        Function Call: usubBorrow(u1;u1;u1; (global uint)

+0:80          'u1' (temp uint)

+0:80          'u1' (temp uint)

+0:80          'u1' (temp uint)

+0:82      Function Call: umulExtended(vu4;vu4;vu4;vu4; (global void)

+0:82        'u4' (temp 4-component vector of uint)

+0:82        'u4' (temp 4-component vector of uint)

+0:82        'u4' (temp 4-component vector of uint)

+0:82        'u4' (temp 4-component vector of uint)

+0:84      Function Call: imulExtended(vi4;vi4;vi4;vi4; (global void)

+0:84        'i4' (temp 4-component vector of int)

+0:84        'i4' (temp 4-component vector of int)

+0:84        'i4' (temp 4-component vector of int)

+0:84        'i4' (temp 4-component vector of int)

+0:86      move second child to first child (temp int)

+0:86        'i1' (temp int)

+0:86        Function Call: bitfieldExtract(i1;i1;i1; (global int)

+0:86          'i1' (temp int)

 0:86          Constant:

 0:86            4 (const int)

 0:86          Constant:

 0:86            5 (const int)

-0:88      move second child to first child (3-component vector of uint)

-0:88        'u3' (3-component vector of uint)

-0:88        Function Call: bitfieldExtract(vu3;i1;i1; (3-component vector of uint)

-0:88          'u3' (3-component vector of uint)

+0:88      move second child to first child (temp 3-component vector of uint)

+0:88        'u3' (temp 3-component vector of uint)

+0:88        Function Call: bitfieldExtract(vu3;i1;i1; (global 3-component vector of uint)

+0:88          'u3' (temp 3-component vector of uint)

 0:88          Constant:

 0:88            4 (const int)

 0:88          Constant:

 0:88            5 (const int)

-0:90      move second child to first child (3-component vector of int)

-0:90        'i3' (3-component vector of int)

-0:90        Function Call: bitfieldInsert(vi3;vi3;i1;i1; (3-component vector of int)

-0:90          'i3' (3-component vector of int)

-0:90          'i3' (3-component vector of int)

+0:90      move second child to first child (temp 3-component vector of int)

+0:90        'i3' (temp 3-component vector of int)

+0:90        Function Call: bitfieldInsert(vi3;vi3;i1;i1; (global 3-component vector of int)

+0:90          'i3' (temp 3-component vector of int)

+0:90          'i3' (temp 3-component vector of int)

 0:90          Constant:

 0:90            4 (const int)

 0:90          Constant:

 0:90            5 (const int)

-0:91      move second child to first child (uint)

-0:91        'u1' (uint)

-0:91        Function Call: bitfieldInsert(u1;u1;i1;i1; (uint)

-0:91          'u1' (uint)

-0:91          'u1' (uint)

+0:91      move second child to first child (temp uint)

+0:91        'u1' (temp uint)

+0:91        Function Call: bitfieldInsert(u1;u1;i1;i1; (global uint)

+0:91          'u1' (temp uint)

+0:91          'u1' (temp uint)

 0:91          Constant:

 0:91            4 (const int)

 0:91          Constant:

 0:91            5 (const int)

-0:93      move second child to first child (2-component vector of int)

-0:93        'i2' (2-component vector of int)

-0:93        Function Call: bitfieldReverse(vi2; (2-component vector of int)

-0:93          'i2' (2-component vector of int)

-0:94      move second child to first child (4-component vector of uint)

-0:94        'u4' (4-component vector of uint)

-0:94        Function Call: bitfieldReverse(vu4; (4-component vector of uint)

-0:94          'u4' (4-component vector of uint)

-0:95      move second child to first child (int)

-0:95        'i1' (int)

-0:95        Function Call: bitCount(i1; (int)

-0:95          'i1' (int)

-0:96      move second child to first child (3-component vector of int)

-0:96        'i3' (3-component vector of int)

-0:96        Function Call: bitCount(vu3; (3-component vector of int)

-0:96          'u3' (3-component vector of uint)

-0:97      move second child to first child (2-component vector of int)

-0:97        'i2' (2-component vector of int)

-0:97        Function Call: findLSB(vi2; (2-component vector of int)

-0:97          'i2' (2-component vector of int)

-0:98      move second child to first child (4-component vector of int)

-0:98        'i4' (4-component vector of int)

-0:98        Function Call: findLSB(vu4; (4-component vector of int)

-0:98          'u4' (4-component vector of uint)

-0:99      move second child to first child (int)

-0:99        'i1' (int)

-0:99        Function Call: findMSB(i1; (int)

-0:99          'i1' (int)

-0:100      move second child to first child (2-component vector of int)

-0:100        'i2' (2-component vector of int)

-0:100        Function Call: findMSB(vu2; (2-component vector of int)

-0:100          'u2' (2-component vector of uint)

+0:93      move second child to first child (temp 2-component vector of int)

+0:93        'i2' (temp 2-component vector of int)

+0:93        Function Call: bitfieldReverse(vi2; (global 2-component vector of int)

+0:93          'i2' (temp 2-component vector of int)

+0:94      move second child to first child (temp 4-component vector of uint)

+0:94        'u4' (temp 4-component vector of uint)

+0:94        Function Call: bitfieldReverse(vu4; (global 4-component vector of uint)

+0:94          'u4' (temp 4-component vector of uint)

+0:95      move second child to first child (temp int)

+0:95        'i1' (temp int)

+0:95        Function Call: bitCount(i1; (global int)

+0:95          'i1' (temp int)

+0:96      move second child to first child (temp 3-component vector of int)

+0:96        'i3' (temp 3-component vector of int)

+0:96        Function Call: bitCount(vu3; (global 3-component vector of int)

+0:96          'u3' (temp 3-component vector of uint)

+0:97      move second child to first child (temp 2-component vector of int)

+0:97        'i2' (temp 2-component vector of int)

+0:97        Function Call: findLSB(vi2; (global 2-component vector of int)

+0:97          'i2' (temp 2-component vector of int)

+0:98      move second child to first child (temp 4-component vector of int)

+0:98        'i4' (temp 4-component vector of int)

+0:98        Function Call: findLSB(vu4; (global 4-component vector of int)

+0:98          'u4' (temp 4-component vector of uint)

+0:99      move second child to first child (temp int)

+0:99        'i1' (temp int)

+0:99        Function Call: findMSB(i1; (global int)

+0:99          'i1' (temp int)

+0:100      move second child to first child (temp 2-component vector of int)

+0:100        'i2' (temp 2-component vector of int)

+0:100        Function Call: findMSB(vu2; (global 2-component vector of int)

+0:100          'u2' (temp 2-component vector of uint)

 0:?   Linker Objects

 0:?     'bn' (in 3-element array of block{in int a})

 0:?     'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize})

@@ -195,41 +195,41 @@
 input primitive = triangles

 output primitive = none

 ERROR: node is still EOpNull!

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

 0:5    Sequence

-0:5      EmitStreamVertex (void)

+0:5      EmitStreamVertex (global void)

 0:5        Constant:

 0:5          1 (const int)

-0:6      EndStreamPrimitive (void)

+0:6      EndStreamPrimitive (global void)

 0:6        Constant:

 0:6          0 (const int)

-0:7      EmitVertex (void)

-0:8      EndPrimitive (void)

+0:7      EmitVertex (global void)

+0:8      EndPrimitive (global void)

 0:9      Sequence

-0:9        move second child to first child (int)

-0:9          'id' (int)

+0:9        move second child to first child (temp int)

+0:9          'id' (temp int)

 0:9          'gl_InvocationID' (in int)

-0:23  Function Definition: foo( (void)

+0:23  Function Definition: foo( (global void)

 0:23    Function Parameters: 

 0:25    Sequence

 0:25      Constant:

 0:25        1 (const int)

 0:26      gl_Position: direct index for structure (in 4-component vector of float)

-0:26        direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize})

+0:26        direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize})

 0:26          'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize})

 0:26          Constant:

 0:26            1 (const int)

 0:26        Constant:

 0:26          0 (const int)

-0:34  Function Definition: foo2( (void)

+0:34  Function Definition: foo2( (global void)

 0:34    Function Parameters: 

 0:36    Sequence

 0:36      Constant:

 0:36        1 (const int)

 0:37      Constant:

 0:37        3 (const int)

-0:46  Function Definition: foo3( (void)

+0:46  Function Definition: foo3( (global void)

 0:46    Function Parameters: 

 0:48    Sequence

 0:48      Constant:

@@ -240,97 +240,97 @@
 0:50        3 (const int)

 0:51      Constant:

 0:51        3 (const int)

-0:75  Function Definition: bits( (void)

+0:75  Function Definition: bits( (global void)

 0:75    Function Parameters: 

 0:?     Sequence

-0:78      move second child to first child (2-component vector of uint)

-0:78        'u2' (2-component vector of uint)

-0:78        Function Call: uaddCarry(vu2;vu2;vu2; (2-component vector of uint)

-0:78          'u2' (2-component vector of uint)

-0:78          'u2' (2-component vector of uint)

-0:78          'u2' (2-component vector of uint)

-0:80      move second child to first child (uint)

-0:80        'u1' (uint)

-0:80        Function Call: usubBorrow(u1;u1;u1; (uint)

-0:80          'u1' (uint)

-0:80          'u1' (uint)

-0:80          'u1' (uint)

-0:82      Function Call: umulExtended(vu4;vu4;vu4;vu4; (void)

-0:82        'u4' (4-component vector of uint)

-0:82        'u4' (4-component vector of uint)

-0:82        'u4' (4-component vector of uint)

-0:82        'u4' (4-component vector of uint)

-0:84      Function Call: imulExtended(vi4;vi4;vi4;vi4; (void)

-0:84        'i4' (4-component vector of int)

-0:84        'i4' (4-component vector of int)

-0:84        'i4' (4-component vector of int)

-0:84        'i4' (4-component vector of int)

-0:86      move second child to first child (int)

-0:86        'i1' (int)

-0:86        Function Call: bitfieldExtract(i1;i1;i1; (int)

-0:86          'i1' (int)

+0:78      move second child to first child (temp 2-component vector of uint)

+0:78        'u2' (temp 2-component vector of uint)

+0:78        Function Call: uaddCarry(vu2;vu2;vu2; (global 2-component vector of uint)

+0:78          'u2' (temp 2-component vector of uint)

+0:78          'u2' (temp 2-component vector of uint)

+0:78          'u2' (temp 2-component vector of uint)

+0:80      move second child to first child (temp uint)

+0:80        'u1' (temp uint)

+0:80        Function Call: usubBorrow(u1;u1;u1; (global uint)

+0:80          'u1' (temp uint)

+0:80          'u1' (temp uint)

+0:80          'u1' (temp uint)

+0:82      Function Call: umulExtended(vu4;vu4;vu4;vu4; (global void)

+0:82        'u4' (temp 4-component vector of uint)

+0:82        'u4' (temp 4-component vector of uint)

+0:82        'u4' (temp 4-component vector of uint)

+0:82        'u4' (temp 4-component vector of uint)

+0:84      Function Call: imulExtended(vi4;vi4;vi4;vi4; (global void)

+0:84        'i4' (temp 4-component vector of int)

+0:84        'i4' (temp 4-component vector of int)

+0:84        'i4' (temp 4-component vector of int)

+0:84        'i4' (temp 4-component vector of int)

+0:86      move second child to first child (temp int)

+0:86        'i1' (temp int)

+0:86        Function Call: bitfieldExtract(i1;i1;i1; (global int)

+0:86          'i1' (temp int)

 0:86          Constant:

 0:86            4 (const int)

 0:86          Constant:

 0:86            5 (const int)

-0:88      move second child to first child (3-component vector of uint)

-0:88        'u3' (3-component vector of uint)

-0:88        Function Call: bitfieldExtract(vu3;i1;i1; (3-component vector of uint)

-0:88          'u3' (3-component vector of uint)

+0:88      move second child to first child (temp 3-component vector of uint)

+0:88        'u3' (temp 3-component vector of uint)

+0:88        Function Call: bitfieldExtract(vu3;i1;i1; (global 3-component vector of uint)

+0:88          'u3' (temp 3-component vector of uint)

 0:88          Constant:

 0:88            4 (const int)

 0:88          Constant:

 0:88            5 (const int)

-0:90      move second child to first child (3-component vector of int)

-0:90        'i3' (3-component vector of int)

-0:90        Function Call: bitfieldInsert(vi3;vi3;i1;i1; (3-component vector of int)

-0:90          'i3' (3-component vector of int)

-0:90          'i3' (3-component vector of int)

+0:90      move second child to first child (temp 3-component vector of int)

+0:90        'i3' (temp 3-component vector of int)

+0:90        Function Call: bitfieldInsert(vi3;vi3;i1;i1; (global 3-component vector of int)

+0:90          'i3' (temp 3-component vector of int)

+0:90          'i3' (temp 3-component vector of int)

 0:90          Constant:

 0:90            4 (const int)

 0:90          Constant:

 0:90            5 (const int)

-0:91      move second child to first child (uint)

-0:91        'u1' (uint)

-0:91        Function Call: bitfieldInsert(u1;u1;i1;i1; (uint)

-0:91          'u1' (uint)

-0:91          'u1' (uint)

+0:91      move second child to first child (temp uint)

+0:91        'u1' (temp uint)

+0:91        Function Call: bitfieldInsert(u1;u1;i1;i1; (global uint)

+0:91          'u1' (temp uint)

+0:91          'u1' (temp uint)

 0:91          Constant:

 0:91            4 (const int)

 0:91          Constant:

 0:91            5 (const int)

-0:93      move second child to first child (2-component vector of int)

-0:93        'i2' (2-component vector of int)

-0:93        Function Call: bitfieldReverse(vi2; (2-component vector of int)

-0:93          'i2' (2-component vector of int)

-0:94      move second child to first child (4-component vector of uint)

-0:94        'u4' (4-component vector of uint)

-0:94        Function Call: bitfieldReverse(vu4; (4-component vector of uint)

-0:94          'u4' (4-component vector of uint)

-0:95      move second child to first child (int)

-0:95        'i1' (int)

-0:95        Function Call: bitCount(i1; (int)

-0:95          'i1' (int)

-0:96      move second child to first child (3-component vector of int)

-0:96        'i3' (3-component vector of int)

-0:96        Function Call: bitCount(vu3; (3-component vector of int)

-0:96          'u3' (3-component vector of uint)

-0:97      move second child to first child (2-component vector of int)

-0:97        'i2' (2-component vector of int)

-0:97        Function Call: findLSB(vi2; (2-component vector of int)

-0:97          'i2' (2-component vector of int)

-0:98      move second child to first child (4-component vector of int)

-0:98        'i4' (4-component vector of int)

-0:98        Function Call: findLSB(vu4; (4-component vector of int)

-0:98          'u4' (4-component vector of uint)

-0:99      move second child to first child (int)

-0:99        'i1' (int)

-0:99        Function Call: findMSB(i1; (int)

-0:99          'i1' (int)

-0:100      move second child to first child (2-component vector of int)

-0:100        'i2' (2-component vector of int)

-0:100        Function Call: findMSB(vu2; (2-component vector of int)

-0:100          'u2' (2-component vector of uint)

+0:93      move second child to first child (temp 2-component vector of int)

+0:93        'i2' (temp 2-component vector of int)

+0:93        Function Call: bitfieldReverse(vi2; (global 2-component vector of int)

+0:93          'i2' (temp 2-component vector of int)

+0:94      move second child to first child (temp 4-component vector of uint)

+0:94        'u4' (temp 4-component vector of uint)

+0:94        Function Call: bitfieldReverse(vu4; (global 4-component vector of uint)

+0:94          'u4' (temp 4-component vector of uint)

+0:95      move second child to first child (temp int)

+0:95        'i1' (temp int)

+0:95        Function Call: bitCount(i1; (global int)

+0:95          'i1' (temp int)

+0:96      move second child to first child (temp 3-component vector of int)

+0:96        'i3' (temp 3-component vector of int)

+0:96        Function Call: bitCount(vu3; (global 3-component vector of int)

+0:96          'u3' (temp 3-component vector of uint)

+0:97      move second child to first child (temp 2-component vector of int)

+0:97        'i2' (temp 2-component vector of int)

+0:97        Function Call: findLSB(vi2; (global 2-component vector of int)

+0:97          'i2' (temp 2-component vector of int)

+0:98      move second child to first child (temp 4-component vector of int)

+0:98        'i4' (temp 4-component vector of int)

+0:98        Function Call: findLSB(vu4; (global 4-component vector of int)

+0:98          'u4' (temp 4-component vector of uint)

+0:99      move second child to first child (temp int)

+0:99        'i1' (temp int)

+0:99        Function Call: findMSB(i1; (global int)

+0:99          'i1' (temp int)

+0:100      move second child to first child (temp 2-component vector of int)

+0:100        'i2' (temp 2-component vector of int)

+0:100        Function Call: findMSB(vu2; (global 2-component vector of int)

+0:100          'u2' (temp 2-component vector of uint)

 0:?   Linker Objects

 0:?     'bn' (in 3-element array of block{in int a})

 0:?     'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize})

diff --git a/Test/baseResults/400.tesc.out b/Test/baseResults/400.tesc.out
index b2beb04..8b5b968 100644
--- a/Test/baseResults/400.tesc.out
+++ b/Test/baseResults/400.tesc.out
@@ -25,41 +25,41 @@
 Requested GL_ARB_separate_shader_objects

 vertices = 4

 ERROR: node is still EOpNull!

-0:13  Function Definition: main( (void)

+0:13  Function Definition: main( (global void)

 0:13    Function Parameters: 

 0:15    Sequence

-0:15      Barrier (void)

+0:15      Barrier (global void)

 0:17      Sequence

-0:17        move second child to first child (int)

-0:17          'a' (int)

+0:17        move second child to first child (temp int)

+0:17          'a' (temp int)

 0:17          Constant:

 0:17            5392 (const int)

 0:23      Sequence

-0:23        move second child to first child (4-component vector of float)

-0:23          'p' (4-component vector of float)

+0:23        move second child to first child (temp 4-component vector of float)

+0:23          'p' (temp 4-component vector of float)

 0:23          gl_Position: direct index for structure (in 4-component vector of float)

-0:23            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:23            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:23              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:23              Constant:

 0:23                1 (const int)

 0:23            Constant:

 0:23              0 (const int)

 0:24      Sequence

-0:24        move second child to first child (float)

-0:24          'ps' (float)

+0:24        move second child to first child (temp float)

+0:24          'ps' (temp float)

 0:24          gl_PointSize: direct index for structure (in float)

-0:24            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:24            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:24              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:24              Constant:

 0:24                1 (const int)

 0:24            Constant:

 0:24              1 (const int)

 0:25      Sequence

-0:25        move second child to first child (float)

-0:25          'cd' (float)

-0:25          direct index (float)

+0:25        move second child to first child (temp float)

+0:25          'cd' (temp float)

+0:25          direct index (temp float)

 0:25            gl_ClipDistance: direct index for structure (in implicitly-sized array of float)

-0:25              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:25              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:25                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:25                Constant:

 0:25                  1 (const int)

@@ -68,39 +68,39 @@
 0:25            Constant:

 0:25              2 (const int)

 0:27      Sequence

-0:27        move second child to first child (int)

-0:27          'pvi' (int)

+0:27        move second child to first child (temp int)

+0:27          'pvi' (temp int)

 0:27          'gl_PatchVerticesIn' (in int)

 0:28      Sequence

-0:28        move second child to first child (int)

-0:28          'pid' (int)

+0:28        move second child to first child (temp int)

+0:28          'pid' (temp int)

 0:28          'gl_PrimitiveID' (in int)

 0:29      Sequence

-0:29        move second child to first child (int)

-0:29          'iid' (int)

+0:29        move second child to first child (temp int)

+0:29          'iid' (temp int)

 0:29          'gl_InvocationID' (in int)

-0:31      move second child to first child (4-component vector of float)

+0:31      move second child to first child (temp 4-component vector of float)

 0:31        gl_Position: direct index for structure (out 4-component vector of float)

-0:31          direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:31          direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:31            'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:31            Constant:

 0:31              1 (const int)

 0:31          Constant:

 0:31            0 (const int)

-0:31        'p' (4-component vector of float)

-0:32      move second child to first child (float)

+0:31        'p' (temp 4-component vector of float)

+0:32      move second child to first child (temp float)

 0:32        gl_PointSize: direct index for structure (out float)

-0:32          direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:32          direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:32            'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:32            Constant:

 0:32              1 (const int)

 0:32          Constant:

 0:32            1 (const int)

-0:32        'ps' (float)

-0:33      move second child to first child (float)

-0:33        direct index (float)

+0:32        'ps' (temp float)

+0:33      move second child to first child (temp float)

+0:33        direct index (temp float)

 0:33          gl_ClipDistance: direct index for structure (out implicitly-sized array of float)

-0:33            direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:33            direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:33              'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:33              Constant:

 0:33                1 (const int)

@@ -108,98 +108,98 @@
 0:33              2 (const int)

 0:33          Constant:

 0:33            1 (const int)

-0:33        'cd' (float)

-0:35      move second child to first child (float)

-0:35        direct index (patch float)

+0:33        'cd' (temp float)

+0:35      move second child to first child (temp float)

+0:35        direct index (patch temp float)

 0:35          'gl_TessLevelOuter' (patch out 4-element array of float)

 0:35          Constant:

 0:35            3 (const int)

 0:35        Constant:

 0:35          3.200000

-0:36      move second child to first child (float)

-0:36        direct index (patch float)

+0:36      move second child to first child (temp float)

+0:36        direct index (patch temp float)

 0:36          'gl_TessLevelInner' (patch out 2-element array of float)

 0:36          Constant:

 0:36            1 (const int)

 0:36        Constant:

 0:36          1.300000

-0:38      Test condition and select (void)

+0:38      Test condition and select (temp void)

 0:38        Condition

-0:38        Compare Greater Than (bool)

-0:38          'a' (int)

+0:38        Compare Greater Than (temp bool)

+0:38          'a' (temp int)

 0:38          Constant:

 0:38            10 (const int)

 0:38        true case

-0:39        Barrier (void)

+0:39        Barrier (global void)

 0:38        false case

-0:41        Barrier (void)

-0:43      Barrier (void)

+0:41        Barrier (global void)

+0:43      Barrier (global void)

 0:47      Loop with condition not tested first

 0:47        Loop Condition

-0:47        Compare Greater Than (bool)

-0:47          'a' (int)

+0:47        Compare Greater Than (temp bool)

+0:47          'a' (temp int)

 0:47          Constant:

 0:47            10 (const int)

 0:47        Loop Body

 0:46        Sequence

-0:46          Barrier (void)

+0:46          Barrier (global void)

 0:49      switch

 0:49      condition

-0:49        'a' (int)

+0:49        'a' (temp int)

 0:49      body

 0:49        Sequence

 0:50          default: 

 0:?           Sequence

-0:51            Barrier (void)

+0:51            Barrier (global void)

 0:52            Branch: Break

-0:54      Test condition and select (int)

+0:54      Test condition and select (temp int)

 0:54        Condition

-0:54        Compare Less Than (bool)

-0:54          'a' (int)

+0:54        Compare Less Than (temp bool)

+0:54          'a' (temp int)

 0:54          Constant:

 0:54            12 (const int)

 0:54        true case

-0:54        'a' (int)

+0:54        'a' (temp int)

 0:54        false case

-0:54        Comma (int)

-0:54          Barrier (void)

-0:54          'a' (int)

+0:54        Comma (temp int)

+0:54          Barrier (global void)

+0:54          'a' (temp int)

 0:56      Sequence

-0:56        Barrier (void)

+0:56        Barrier (global void)

 0:59      Branch: Return

-0:61      Barrier (void)

-0:67  Function Definition: foo( (void)

+0:61      Barrier (global void)

+0:67  Function Definition: foo( (global void)

 0:67    Function Parameters: 

 0:69    Sequence

 0:69      gl_PointSize: direct index for structure (out float)

-0:69        direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:69        direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:69          'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:69          Constant:

 0:69            4 (const int)

 0:69        Constant:

 0:69          1 (const int)

-0:71      Barrier (void)

-0:91  Function Definition: foop( (void)

+0:71      Barrier (global void)

+0:91  Function Definition: foop( (global void)

 0:91    Function Parameters: 

 0:?     Sequence

-0:95      multiply second child into first child (3-component vector of float)

-0:95        'pv3' (3-component vector of float)

-0:95        'pv3' (3-component vector of float)

-0:96      move second child to first child (3-component vector of float)

-0:96        'pv3' (3-component vector of float)

-0:96        Function Call: fma(vf3;vf3;vf3; (3-component vector of float)

-0:96          'pv3' (3-component vector of float)

-0:96          'pv3' (3-component vector of float)

-0:96          'pv3' (3-component vector of float)

-0:97      move second child to first child (double)

-0:97        'd' (double)

-0:97        Function Call: fma(d1;d1;d1; (double)

-0:97          'd' (double)

-0:97          'd' (double)

-0:97          'd' (double)

+0:95      multiply second child into first child (temp 3-component vector of float)

+0:95        'pv3' (temp 3-component vector of float)

+0:95        'pv3' (temp 3-component vector of float)

+0:96      move second child to first child (temp 3-component vector of float)

+0:96        'pv3' (temp 3-component vector of float)

+0:96        Function Call: fma(vf3;vf3;vf3; (global 3-component vector of float)

+0:96          'pv3' (temp 3-component vector of float)

+0:96          'pv3' (temp 3-component vector of float)

+0:96          'pv3' (temp 3-component vector of float)

+0:97      move second child to first child (temp double)

+0:97        'd' (temp double)

+0:97        Function Call: fma(d1;d1;d1; (global double)

+0:97          'd' (temp double)

+0:97          'd' (temp double)

+0:97          'd' (temp double)

 0:?   Linker Objects

 0:?     'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

-0:?     'outa' (4-element array of int)

+0:?     'outa' (global 4-element array of int)

 0:?     'patchIn' (patch in 4-component vector of float)

 0:?     'patchOut' (patch out 4-component vector of float)

 0:?     'ina' (in 2-component vector of float)

@@ -212,7 +212,7 @@
 0:?     'ovla' (layout(location=3 ) out 4-element array of 4-component vector of float)

 0:?     'ovlb' (layout(location=4 ) out 4-element array of 4-component vector of float)

 0:?     'ovlc' (layout(location=4 ) out 4-element array of 4-component vector of float)

-0:?     'pv3' (3-component vector of float)

+0:?     'pv3' (temp 3-component vector of float)

 0:?     'pinbi' (patch out block{out int a})

 

 

@@ -223,41 +223,41 @@
 Requested GL_ARB_separate_shader_objects

 vertices = 4

 ERROR: node is still EOpNull!

-0:13  Function Definition: main( (void)

+0:13  Function Definition: main( (global void)

 0:13    Function Parameters: 

 0:15    Sequence

-0:15      Barrier (void)

+0:15      Barrier (global void)

 0:17      Sequence

-0:17        move second child to first child (int)

-0:17          'a' (int)

+0:17        move second child to first child (temp int)

+0:17          'a' (temp int)

 0:17          Constant:

 0:17            5392 (const int)

 0:23      Sequence

-0:23        move second child to first child (4-component vector of float)

-0:23          'p' (4-component vector of float)

+0:23        move second child to first child (temp 4-component vector of float)

+0:23          'p' (temp 4-component vector of float)

 0:23          gl_Position: direct index for structure (in 4-component vector of float)

-0:23            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:23            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:23              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:23              Constant:

 0:23                1 (const int)

 0:23            Constant:

 0:23              0 (const int)

 0:24      Sequence

-0:24        move second child to first child (float)

-0:24          'ps' (float)

+0:24        move second child to first child (temp float)

+0:24          'ps' (temp float)

 0:24          gl_PointSize: direct index for structure (in float)

-0:24            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:24            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:24              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:24              Constant:

 0:24                1 (const int)

 0:24            Constant:

 0:24              1 (const int)

 0:25      Sequence

-0:25        move second child to first child (float)

-0:25          'cd' (float)

-0:25          direct index (float)

+0:25        move second child to first child (temp float)

+0:25          'cd' (temp float)

+0:25          direct index (temp float)

 0:25            gl_ClipDistance: direct index for structure (in 1-element array of float)

-0:25              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:25              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:25                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:25                Constant:

 0:25                  1 (const int)

@@ -266,39 +266,39 @@
 0:25            Constant:

 0:25              2 (const int)

 0:27      Sequence

-0:27        move second child to first child (int)

-0:27          'pvi' (int)

+0:27        move second child to first child (temp int)

+0:27          'pvi' (temp int)

 0:27          'gl_PatchVerticesIn' (in int)

 0:28      Sequence

-0:28        move second child to first child (int)

-0:28          'pid' (int)

+0:28        move second child to first child (temp int)

+0:28          'pid' (temp int)

 0:28          'gl_PrimitiveID' (in int)

 0:29      Sequence

-0:29        move second child to first child (int)

-0:29          'iid' (int)

+0:29        move second child to first child (temp int)

+0:29          'iid' (temp int)

 0:29          'gl_InvocationID' (in int)

-0:31      move second child to first child (4-component vector of float)

+0:31      move second child to first child (temp 4-component vector of float)

 0:31        gl_Position: direct index for structure (out 4-component vector of float)

-0:31          direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:31          direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:31            'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:31            Constant:

 0:31              1 (const int)

 0:31          Constant:

 0:31            0 (const int)

-0:31        'p' (4-component vector of float)

-0:32      move second child to first child (float)

+0:31        'p' (temp 4-component vector of float)

+0:32      move second child to first child (temp float)

 0:32        gl_PointSize: direct index for structure (out float)

-0:32          direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:32          direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:32            'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:32            Constant:

 0:32              1 (const int)

 0:32          Constant:

 0:32            1 (const int)

-0:32        'ps' (float)

-0:33      move second child to first child (float)

-0:33        direct index (float)

+0:32        'ps' (temp float)

+0:33      move second child to first child (temp float)

+0:33        direct index (temp float)

 0:33          gl_ClipDistance: direct index for structure (out 1-element array of float)

-0:33            direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:33            direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:33              'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:33              Constant:

 0:33                1 (const int)

@@ -306,98 +306,98 @@
 0:33              2 (const int)

 0:33          Constant:

 0:33            1 (const int)

-0:33        'cd' (float)

-0:35      move second child to first child (float)

-0:35        direct index (patch float)

+0:33        'cd' (temp float)

+0:35      move second child to first child (temp float)

+0:35        direct index (patch temp float)

 0:35          'gl_TessLevelOuter' (patch out 4-element array of float)

 0:35          Constant:

 0:35            3 (const int)

 0:35        Constant:

 0:35          3.200000

-0:36      move second child to first child (float)

-0:36        direct index (patch float)

+0:36      move second child to first child (temp float)

+0:36        direct index (patch temp float)

 0:36          'gl_TessLevelInner' (patch out 2-element array of float)

 0:36          Constant:

 0:36            1 (const int)

 0:36        Constant:

 0:36          1.300000

-0:38      Test condition and select (void)

+0:38      Test condition and select (temp void)

 0:38        Condition

-0:38        Compare Greater Than (bool)

-0:38          'a' (int)

+0:38        Compare Greater Than (temp bool)

+0:38          'a' (temp int)

 0:38          Constant:

 0:38            10 (const int)

 0:38        true case

-0:39        Barrier (void)

+0:39        Barrier (global void)

 0:38        false case

-0:41        Barrier (void)

-0:43      Barrier (void)

+0:41        Barrier (global void)

+0:43      Barrier (global void)

 0:47      Loop with condition not tested first

 0:47        Loop Condition

-0:47        Compare Greater Than (bool)

-0:47          'a' (int)

+0:47        Compare Greater Than (temp bool)

+0:47          'a' (temp int)

 0:47          Constant:

 0:47            10 (const int)

 0:47        Loop Body

 0:46        Sequence

-0:46          Barrier (void)

+0:46          Barrier (global void)

 0:49      switch

 0:49      condition

-0:49        'a' (int)

+0:49        'a' (temp int)

 0:49      body

 0:49        Sequence

 0:50          default: 

 0:?           Sequence

-0:51            Barrier (void)

+0:51            Barrier (global void)

 0:52            Branch: Break

-0:54      Test condition and select (int)

+0:54      Test condition and select (temp int)

 0:54        Condition

-0:54        Compare Less Than (bool)

-0:54          'a' (int)

+0:54        Compare Less Than (temp bool)

+0:54          'a' (temp int)

 0:54          Constant:

 0:54            12 (const int)

 0:54        true case

-0:54        'a' (int)

+0:54        'a' (temp int)

 0:54        false case

-0:54        Comma (int)

-0:54          Barrier (void)

-0:54          'a' (int)

+0:54        Comma (temp int)

+0:54          Barrier (global void)

+0:54          'a' (temp int)

 0:56      Sequence

-0:56        Barrier (void)

+0:56        Barrier (global void)

 0:59      Branch: Return

-0:61      Barrier (void)

-0:67  Function Definition: foo( (void)

+0:61      Barrier (global void)

+0:67  Function Definition: foo( (global void)

 0:67    Function Parameters: 

 0:69    Sequence

 0:69      gl_PointSize: direct index for structure (out float)

-0:69        direct index (block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:69        direct index (temp block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:69          'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

 0:69          Constant:

 0:69            4 (const int)

 0:69        Constant:

 0:69          1 (const int)

-0:71      Barrier (void)

-0:91  Function Definition: foop( (void)

+0:71      Barrier (global void)

+0:91  Function Definition: foop( (global void)

 0:91    Function Parameters: 

 0:?     Sequence

-0:95      multiply second child into first child (3-component vector of float)

-0:95        'pv3' (3-component vector of float)

-0:95        'pv3' (3-component vector of float)

-0:96      move second child to first child (3-component vector of float)

-0:96        'pv3' (3-component vector of float)

-0:96        Function Call: fma(vf3;vf3;vf3; (3-component vector of float)

-0:96          'pv3' (3-component vector of float)

-0:96          'pv3' (3-component vector of float)

-0:96          'pv3' (3-component vector of float)

-0:97      move second child to first child (double)

-0:97        'd' (double)

-0:97        Function Call: fma(d1;d1;d1; (double)

-0:97          'd' (double)

-0:97          'd' (double)

-0:97          'd' (double)

+0:95      multiply second child into first child (temp 3-component vector of float)

+0:95        'pv3' (temp 3-component vector of float)

+0:95        'pv3' (temp 3-component vector of float)

+0:96      move second child to first child (temp 3-component vector of float)

+0:96        'pv3' (temp 3-component vector of float)

+0:96        Function Call: fma(vf3;vf3;vf3; (global 3-component vector of float)

+0:96          'pv3' (temp 3-component vector of float)

+0:96          'pv3' (temp 3-component vector of float)

+0:96          'pv3' (temp 3-component vector of float)

+0:97      move second child to first child (temp double)

+0:97        'd' (temp double)

+0:97        Function Call: fma(d1;d1;d1; (global double)

+0:97          'd' (temp double)

+0:97          'd' (temp double)

+0:97          'd' (temp double)

 0:?   Linker Objects

 0:?     'gl_out' (out 4-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

-0:?     'outa' (4-element array of int)

+0:?     'outa' (global 4-element array of int)

 0:?     'patchIn' (patch in 4-component vector of float)

 0:?     'patchOut' (patch out 4-component vector of float)

 0:?     'ina' (in 2-component vector of float)

@@ -410,6 +410,6 @@
 0:?     'ovla' (layout(location=3 ) out 4-element array of 4-component vector of float)

 0:?     'ovlb' (layout(location=4 ) out 4-element array of 4-component vector of float)

 0:?     'ovlc' (layout(location=4 ) out 4-element array of 4-component vector of float)

-0:?     'pv3' (3-component vector of float)

+0:?     'pv3' (temp 3-component vector of float)

 0:?     'pinbi' (patch out block{out int a})

 

diff --git a/Test/baseResults/400.tese.out b/Test/baseResults/400.tese.out
index 7fd4b86..cfedb68 100644
--- a/Test/baseResults/400.tese.out
+++ b/Test/baseResults/400.tese.out
@@ -40,42 +40,42 @@
 triangle order = cw

 using point mode

 ERROR: node is still EOpNull!

-0:20  Function Definition: main( (void)

+0:20  Function Definition: main( (global void)

 0:20    Function Parameters: 

 0:22    Sequence

 0:22      Constant:

 0:22        0.000000

 0:24      Sequence

-0:24        move second child to first child (int)

-0:24          'a' (int)

+0:24        move second child to first child (temp int)

+0:24          'a' (temp int)

 0:24          Constant:

 0:24            1512 (const int)

 0:32      Sequence

-0:32        move second child to first child (4-component vector of float)

-0:32          'p' (4-component vector of float)

+0:32        move second child to first child (temp 4-component vector of float)

+0:32          'p' (temp 4-component vector of float)

 0:32          gl_Position: direct index for structure (in 4-component vector of float)

-0:32            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:32            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:32              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:32              Constant:

 0:32                1 (const int)

 0:32            Constant:

 0:32              0 (const int)

 0:33      Sequence

-0:33        move second child to first child (float)

-0:33          'ps' (float)

+0:33        move second child to first child (temp float)

+0:33          'ps' (temp float)

 0:33          gl_PointSize: direct index for structure (in float)

-0:33            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:33            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:33              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:33              Constant:

 0:33                1 (const int)

 0:33            Constant:

 0:33              1 (const int)

 0:34      Sequence

-0:34        move second child to first child (float)

-0:34          'cd' (float)

-0:34          direct index (float)

+0:34        move second child to first child (temp float)

+0:34          'cd' (temp float)

+0:34          direct index (temp float)

 0:34            gl_ClipDistance: direct index for structure (in implicitly-sized array of float)

-0:34              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:34              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:34                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:34                Constant:

 0:34                  1 (const int)

@@ -84,52 +84,52 @@
 0:34            Constant:

 0:34              2 (const int)

 0:36      Sequence

-0:36        move second child to first child (int)

-0:36          'pvi' (int)

+0:36        move second child to first child (temp int)

+0:36          'pvi' (temp int)

 0:36          'gl_PatchVerticesIn' (in int)

 0:37      Sequence

-0:37        move second child to first child (int)

-0:37          'pid' (int)

+0:37        move second child to first child (temp int)

+0:37          'pid' (temp int)

 0:37          'gl_PrimitiveID' (in int)

 0:38      Sequence

-0:38        move second child to first child (3-component vector of float)

-0:38          'tc' (3-component vector of float)

+0:38        move second child to first child (temp 3-component vector of float)

+0:38          'tc' (temp 3-component vector of float)

 0:38          'gl_TessCoord' (in 3-component vector of float)

 0:39      Sequence

-0:39        move second child to first child (float)

-0:39          'tlo' (float)

-0:39          direct index (patch float)

+0:39        move second child to first child (temp float)

+0:39          'tlo' (temp float)

+0:39          direct index (patch temp float)

 0:39            'gl_TessLevelOuter' (patch in 4-element array of float)

 0:39            Constant:

 0:39              3 (const int)

 0:40      Sequence

-0:40        move second child to first child (float)

-0:40          'tli' (float)

-0:40          direct index (patch float)

+0:40        move second child to first child (temp float)

+0:40          'tli' (temp float)

+0:40          direct index (patch temp float)

 0:40            'gl_TessLevelInner' (patch in 2-element array of float)

 0:40            Constant:

 0:40              1 (const int)

-0:42      move second child to first child (4-component vector of float)

+0:42      move second child to first child (temp 4-component vector of float)

 0:42        gl_Position: direct index for structure (gl_Position 4-component vector of float)

 0:42          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:42          Constant:

 0:42            0 (const uint)

-0:42        'p' (4-component vector of float)

-0:43      move second child to first child (float)

+0:42        'p' (temp 4-component vector of float)

+0:43      move second child to first child (temp float)

 0:43        gl_PointSize: direct index for structure (gl_PointSize float)

 0:43          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:43          Constant:

 0:43            1 (const uint)

-0:43        'ps' (float)

-0:44      move second child to first child (float)

-0:44        direct index (float)

+0:43        'ps' (temp float)

+0:44      move second child to first child (temp float)

+0:44        direct index (temp float)

 0:44          gl_ClipDistance: direct index for structure (out implicitly-sized array of float)

 0:44            'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:44            Constant:

 0:44              2 (const uint)

 0:44          Constant:

 0:44            2 (const int)

-0:44        'cd' (float)

+0:44        'cd' (temp float)

 0:?   Linker Objects

 0:?     'patchIn' (patch in 4-component vector of float)

 0:?     'patchOut' (patch out 4-component vector of float)

@@ -165,42 +165,42 @@
 triangle order = cw

 using point mode

 ERROR: node is still EOpNull!

-0:20  Function Definition: main( (void)

+0:20  Function Definition: main( (global void)

 0:20    Function Parameters: 

 0:22    Sequence

 0:22      Constant:

 0:22        0.000000

 0:24      Sequence

-0:24        move second child to first child (int)

-0:24          'a' (int)

+0:24        move second child to first child (temp int)

+0:24          'a' (temp int)

 0:24          Constant:

 0:24            1512 (const int)

 0:32      Sequence

-0:32        move second child to first child (4-component vector of float)

-0:32          'p' (4-component vector of float)

+0:32        move second child to first child (temp 4-component vector of float)

+0:32          'p' (temp 4-component vector of float)

 0:32          gl_Position: direct index for structure (in 4-component vector of float)

-0:32            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:32            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:32              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:32              Constant:

 0:32                1 (const int)

 0:32            Constant:

 0:32              0 (const int)

 0:33      Sequence

-0:33        move second child to first child (float)

-0:33          'ps' (float)

+0:33        move second child to first child (temp float)

+0:33          'ps' (temp float)

 0:33          gl_PointSize: direct index for structure (in float)

-0:33            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:33            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:33              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:33              Constant:

 0:33                1 (const int)

 0:33            Constant:

 0:33              1 (const int)

 0:34      Sequence

-0:34        move second child to first child (float)

-0:34          'cd' (float)

-0:34          direct index (float)

+0:34        move second child to first child (temp float)

+0:34          'cd' (temp float)

+0:34          direct index (temp float)

 0:34            gl_ClipDistance: direct index for structure (in 1-element array of float)

-0:34              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:34              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:34                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:34                Constant:

 0:34                  1 (const int)

@@ -209,52 +209,52 @@
 0:34            Constant:

 0:34              2 (const int)

 0:36      Sequence

-0:36        move second child to first child (int)

-0:36          'pvi' (int)

+0:36        move second child to first child (temp int)

+0:36          'pvi' (temp int)

 0:36          'gl_PatchVerticesIn' (in int)

 0:37      Sequence

-0:37        move second child to first child (int)

-0:37          'pid' (int)

+0:37        move second child to first child (temp int)

+0:37          'pid' (temp int)

 0:37          'gl_PrimitiveID' (in int)

 0:38      Sequence

-0:38        move second child to first child (3-component vector of float)

-0:38          'tc' (3-component vector of float)

+0:38        move second child to first child (temp 3-component vector of float)

+0:38          'tc' (temp 3-component vector of float)

 0:38          'gl_TessCoord' (in 3-component vector of float)

 0:39      Sequence

-0:39        move second child to first child (float)

-0:39          'tlo' (float)

-0:39          direct index (patch float)

+0:39        move second child to first child (temp float)

+0:39          'tlo' (temp float)

+0:39          direct index (patch temp float)

 0:39            'gl_TessLevelOuter' (patch in 4-element array of float)

 0:39            Constant:

 0:39              3 (const int)

 0:40      Sequence

-0:40        move second child to first child (float)

-0:40          'tli' (float)

-0:40          direct index (patch float)

+0:40        move second child to first child (temp float)

+0:40          'tli' (temp float)

+0:40          direct index (patch temp float)

 0:40            'gl_TessLevelInner' (patch in 2-element array of float)

 0:40            Constant:

 0:40              1 (const int)

-0:42      move second child to first child (4-component vector of float)

+0:42      move second child to first child (temp 4-component vector of float)

 0:42        gl_Position: direct index for structure (gl_Position 4-component vector of float)

 0:42          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:42          Constant:

 0:42            0 (const uint)

-0:42        'p' (4-component vector of float)

-0:43      move second child to first child (float)

+0:42        'p' (temp 4-component vector of float)

+0:43      move second child to first child (temp float)

 0:43        gl_PointSize: direct index for structure (gl_PointSize float)

 0:43          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:43          Constant:

 0:43            1 (const uint)

-0:43        'ps' (float)

-0:44      move second child to first child (float)

-0:44        direct index (float)

+0:43        'ps' (temp float)

+0:44      move second child to first child (temp float)

+0:44        direct index (temp float)

 0:44          gl_ClipDistance: direct index for structure (out 3-element array of float)

 0:44            'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:44            Constant:

 0:44              2 (const uint)

 0:44          Constant:

 0:44            2 (const int)

-0:44        'cd' (float)

+0:44        'cd' (temp float)

 0:?   Linker Objects

 0:?     'patchIn' (patch in 4-component vector of float)

 0:?     'patchOut' (patch out 4-component vector of float)

diff --git a/Test/baseResults/410.geom.out b/Test/baseResults/410.geom.out
index e3ca916..2250840 100644
--- a/Test/baseResults/410.geom.out
+++ b/Test/baseResults/410.geom.out
@@ -4,7 +4,7 @@
 ERROR: 0:12: 'gl_myIn' : no declaration found for redeclaration 

 ERROR: 0:20: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use 

 ERROR: 0:32: 'gl_Position' : no such field in structure 

-ERROR: 0:32: '=' :  cannot convert from 'block{in float gl_PointSize}' to '4-component vector of float'

+ERROR: 0:32: '=' :  cannot convert from 'temp block{in float gl_PointSize}' to 'temp 4-component vector of float'

 ERROR: 0:33: 'gl_Position' : member of nameless block was not redeclared 

 ERROR: 0:33: 'assign' :  cannot convert from 'const 4-component vector of float' to 'layout(stream=0 ) gl_Position void'

 WARNING: 0:38: 'return' : type conversion on return values was not explicitly allowed until version 420 

@@ -17,37 +17,37 @@
 input primitive = none

 output primitive = none

 ERROR: node is still EOpNull!

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

 0:5    Sequence

-0:5      move second child to first child (int)

+0:5      move second child to first child (temp int)

 0:5        'gl_ViewportIndex' (layout(stream=0 ) out int)

 0:5        Constant:

 0:5          7 (const int)

-0:28  Function Definition: foo( (void)

+0:28  Function Definition: foo( (global void)

 0:28    Function Parameters: 

 0:30    Sequence

 0:30      Sequence

-0:30        move second child to first child (float)

-0:30          'p' (float)

+0:30        move second child to first child (temp float)

+0:30          'p' (temp float)

 0:30          gl_PointSize: direct index for structure (in float)

-0:30            direct index (block{in float gl_PointSize})

+0:30            direct index (temp block{in float gl_PointSize})

 0:30              'gl_in' (in implicitly-sized array of block{in float gl_PointSize})

 0:30              Constant:

 0:30                1 (const int)

 0:30            Constant:

 0:30              0 (const int)

-0:31      move second child to first child (float)

+0:31      move second child to first child (temp float)

 0:31        gl_PointSize: direct index for structure (layout(stream=0 ) gl_PointSize float)

 0:31          'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) gl_PointSize float gl_PointSize, })

 0:31          Constant:

 0:31            1 (const uint)

-0:31        'p' (float)

+0:31        'p' (temp float)

 0:33      gl_Position: direct index for structure (layout(stream=0 ) gl_Position void)

 0:33        'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) gl_PointSize float gl_PointSize, })

 0:33        Constant:

 0:33          0 (const uint)

-0:36  Function Definition: foo5( (float)

+0:36  Function Definition: foo5( (global float)

 0:36    Function Parameters: 

 0:38    Sequence

 0:38      Branch: Return with expression

@@ -70,37 +70,37 @@
 input primitive = none

 output primitive = none

 ERROR: node is still EOpNull!

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

 0:5    Sequence

-0:5      move second child to first child (int)

+0:5      move second child to first child (temp int)

 0:5        'gl_ViewportIndex' (layout(stream=0 ) out int)

 0:5        Constant:

 0:5          7 (const int)

-0:28  Function Definition: foo( (void)

+0:28  Function Definition: foo( (global void)

 0:28    Function Parameters: 

 0:30    Sequence

 0:30      Sequence

-0:30        move second child to first child (float)

-0:30          'p' (float)

+0:30        move second child to first child (temp float)

+0:30          'p' (temp float)

 0:30          gl_PointSize: direct index for structure (in float)

-0:30            direct index (block{in float gl_PointSize})

+0:30            direct index (temp block{in float gl_PointSize})

 0:30              'gl_in' (in 2-element array of block{in float gl_PointSize})

 0:30              Constant:

 0:30                1 (const int)

 0:30            Constant:

 0:30              0 (const int)

-0:31      move second child to first child (float)

+0:31      move second child to first child (temp float)

 0:31        gl_PointSize: direct index for structure (layout(stream=0 ) gl_PointSize float)

 0:31          'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) gl_PointSize float gl_PointSize, })

 0:31          Constant:

 0:31            1 (const uint)

-0:31        'p' (float)

+0:31        'p' (temp float)

 0:33      gl_Position: direct index for structure (layout(stream=0 ) gl_Position void)

 0:33        'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) gl_PointSize float gl_PointSize, })

 0:33        Constant:

 0:33          0 (const uint)

-0:36  Function Definition: foo5( (float)

+0:36  Function Definition: foo5( (global float)

 0:36    Function Parameters: 

 0:38    Sequence

 0:38      Branch: Return with expression

diff --git a/Test/baseResults/410.tesc.out b/Test/baseResults/410.tesc.out
index 96133c9..5ad2348 100644
--- a/Test/baseResults/410.tesc.out
+++ b/Test/baseResults/410.tesc.out
@@ -7,11 +7,11 @@
 Shader version: 400

 vertices = 0

 ERROR: node is still EOpNull!

-0:8  Function Definition: main( (void)

+0:8  Function Definition: main( (global void)

 0:8    Function Parameters: 

 0:?   Linker Objects

 0:?     'gl_out' (out implicitly-sized array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

-0:?     'outa' (1-element array of int)

+0:?     'outa' (global 1-element array of int)

 0:?     'patchOut' (patch out 4-component vector of float)

 

 

@@ -22,10 +22,10 @@
 Shader version: 400

 vertices = 0

 ERROR: node is still EOpNull!

-0:8  Function Definition: main( (void)

+0:8  Function Definition: main( (global void)

 0:8    Function Parameters: 

 0:?   Linker Objects

 0:?     'gl_out' (out 1-element array of block{out 4-component vector of float gl_Position, out float gl_PointSize, out 1-element array of float gl_ClipDistance})

-0:?     'outa' (1-element array of int)

+0:?     'outa' (global 1-element array of int)

 0:?     'patchOut' (patch out 4-component vector of float)

 

diff --git a/Test/baseResults/420.frag.out b/Test/baseResults/420.frag.out
index 281614d..e47dcbc 100644
--- a/Test/baseResults/420.frag.out
+++ b/Test/baseResults/420.frag.out
@@ -9,10 +9,10 @@
 Shader version: 420

 using depth_any

 ERROR: node is still EOpNull!

-0:6  Function Definition: main( (void)

+0:6  Function Definition: main( (global void)

 0:6    Function Parameters: 

 0:8    Sequence

-0:8      move second child to first child (float)

+0:8      move second child to first child (temp float)

 0:8        'gl_FragDepth' (gl_FragDepth float)

 0:8        Constant:

 0:8          0.300000

@@ -28,10 +28,10 @@
 Shader version: 420

 using depth_any

 ERROR: node is still EOpNull!

-0:6  Function Definition: main( (void)

+0:6  Function Definition: main( (global void)

 0:6    Function Parameters: 

 0:8    Sequence

-0:8      move second child to first child (float)

+0:8      move second child to first child (temp float)

 0:8        'gl_FragDepth' (gl_FragDepth float)

 0:8        Constant:

 0:8          0.300000

diff --git a/Test/baseResults/420.geom.out b/Test/baseResults/420.geom.out
index 1b927b8..100975c 100644
--- a/Test/baseResults/420.geom.out
+++ b/Test/baseResults/420.geom.out
@@ -15,51 +15,51 @@
 input primitive = triangles

 output primitive = none

 ERROR: node is still EOpNull!

-0:7  Function Definition: foo( (void)

+0:7  Function Definition: foo( (global void)

 0:7    Function Parameters: 

 0:9    Sequence

 0:9      Constant:

 0:9        1 (const int)

 0:10      gl_Position: direct index for structure (in 4-component vector of float)

-0:10        direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:10        direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:10          'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:10          Constant:

 0:10            1 (const int)

 0:10        Constant:

 0:10          0 (const int)

 0:11      gl_Position: direct index for structure (in 4-component vector of float)

-0:11        indirect index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:11        indirect index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:11          'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

-0:11          'i' (int)

+0:11          'i' (global int)

 0:11        Constant:

 0:11          0 (const int)

-0:18  Function Definition: foo3( (void)

+0:18  Function Definition: foo3( (global void)

 0:18    Function Parameters: 

 0:20    Sequence

 0:20      Constant:

 0:20        3 (const int)

 0:21      gl_Position: direct index for structure (in 4-component vector of float)

-0:21        indirect index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:21        indirect index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:21          'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

-0:21          'i' (int)

+0:21          'i' (global int)

 0:21        Constant:

 0:21          0 (const int)

 0:22      Constant:

 0:22        3 (const int)

-0:29  Function Definition: foo4( (void)

+0:29  Function Definition: foo4( (global void)

 0:29    Function Parameters: 

 0:?     Sequence

 0:40      Sequence

-0:40        move second child to first child (4-component vector of float)

-0:40          'v' (4-component vector of float)

-0:40          Function Call: textureGatherOffset(s21;vf2;vi2; (4-component vector of float)

+0:40        move second child to first child (temp 4-component vector of float)

+0:40          'v' (temp 4-component vector of float)

+0:40          Function Call: textureGatherOffset(s21;vf2;vi2; (global 4-component vector of float)

 0:40            's2D' (uniform sampler2D)

-0:40            direct index (2-component vector of float)

+0:40            direct index (temp 2-component vector of float)

 0:40              'coord' (in 3-element array of 2-component vector of float)

 0:40              Constant:

 0:40                0 (const int)

-0:40            vector swizzle (2-component vector of int)

-0:40              indirect index (2-component vector of int)

+0:40            vector swizzle (temp 2-component vector of int)

+0:40              indirect index (temp 2-component vector of int)

 0:40                Constant:

 0:40                  0 (const int)

 0:40                  1 (const int)

@@ -71,15 +71,15 @@
 0:40                  0 (const int)

 0:40                  2 (const int)

 0:40                  1 (const int)

-0:40                'i' (int)

+0:40                'i' (global int)

 0:40              Sequence

 0:40                Constant:

 0:40                  0 (const int)

 0:40                Constant:

 0:40                  1 (const int)

-0:42      move second child to first child (2-component vector of int)

-0:42        vector swizzle (2-component vector of int)

-0:42          indirect index (2-component vector of int)

+0:42      move second child to first child (temp 2-component vector of int)

+0:42        vector swizzle (temp 2-component vector of int)

+0:42          indirect index (temp 2-component vector of int)

 0:42            Constant:

 0:42              0 (const int)

 0:42              1 (const int)

@@ -91,7 +91,7 @@
 0:42              0 (const int)

 0:42              2 (const int)

 0:42              1 (const int)

-0:42            'i' (int)

+0:42            'i' (global int)

 0:42          Sequence

 0:42            Constant:

 0:42              0 (const int)

@@ -100,28 +100,28 @@
 0:42        Constant:

 0:42          3 (const int)

 0:42          3 (const int)

-0:43      move second child to first child (float)

-0:43        direct index (float)

+0:43      move second child to first child (temp float)

+0:43        direct index (temp float)

 0:43          'v4' (uniform 4-component vector of float)

 0:43          Constant:

 0:43            0 (const int)

 0:43        Constant:

 0:43          3.200000

-0:44      vector swizzle (2-component vector of float)

+0:44      vector swizzle (temp 2-component vector of float)

 0:44        'v4' (uniform 4-component vector of float)

 0:44        Sequence

 0:44          Constant:

 0:44            0 (const int)

 0:44          Constant:

 0:44            1 (const int)

-0:52  Function Definition: foo5( (float)

+0:52  Function Definition: foo5( (global float)

 0:52    Function Parameters: 

 0:54    Sequence

 0:54      Branch: Return with expression

-0:54        Convert int to float (float)

-0:54          'i' (int)

+0:54        Convert int to float (temp float)

+0:54          'i' (global int)

 0:?   Linker Objects

-0:?     'i' (int)

+0:?     'i' (global int)

 0:?     'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:?     'color3' (in 3-element array of 4-component vector of float)

 0:?     's2D' (uniform sampler2D)

@@ -142,51 +142,51 @@
 input primitive = triangles

 output primitive = none

 ERROR: node is still EOpNull!

-0:7  Function Definition: foo( (void)

+0:7  Function Definition: foo( (global void)

 0:7    Function Parameters: 

 0:9    Sequence

 0:9      Constant:

 0:9        1 (const int)

 0:10      gl_Position: direct index for structure (in 4-component vector of float)

-0:10        direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:10        direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:10          'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:10          Constant:

 0:10            1 (const int)

 0:10        Constant:

 0:10          0 (const int)

 0:11      gl_Position: direct index for structure (in 4-component vector of float)

-0:11        indirect index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:11        indirect index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:11          'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

-0:11          'i' (int)

+0:11          'i' (global int)

 0:11        Constant:

 0:11          0 (const int)

-0:18  Function Definition: foo3( (void)

+0:18  Function Definition: foo3( (global void)

 0:18    Function Parameters: 

 0:20    Sequence

 0:20      Constant:

 0:20        3 (const int)

 0:21      gl_Position: direct index for structure (in 4-component vector of float)

-0:21        indirect index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:21        indirect index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:21          'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

-0:21          'i' (int)

+0:21          'i' (global int)

 0:21        Constant:

 0:21          0 (const int)

 0:22      Constant:

 0:22        3 (const int)

-0:29  Function Definition: foo4( (void)

+0:29  Function Definition: foo4( (global void)

 0:29    Function Parameters: 

 0:?     Sequence

 0:40      Sequence

-0:40        move second child to first child (4-component vector of float)

-0:40          'v' (4-component vector of float)

-0:40          Function Call: textureGatherOffset(s21;vf2;vi2; (4-component vector of float)

+0:40        move second child to first child (temp 4-component vector of float)

+0:40          'v' (temp 4-component vector of float)

+0:40          Function Call: textureGatherOffset(s21;vf2;vi2; (global 4-component vector of float)

 0:40            's2D' (uniform sampler2D)

-0:40            direct index (2-component vector of float)

+0:40            direct index (temp 2-component vector of float)

 0:40              'coord' (in 3-element array of 2-component vector of float)

 0:40              Constant:

 0:40                0 (const int)

-0:40            vector swizzle (2-component vector of int)

-0:40              indirect index (2-component vector of int)

+0:40            vector swizzle (temp 2-component vector of int)

+0:40              indirect index (temp 2-component vector of int)

 0:40                Constant:

 0:40                  0 (const int)

 0:40                  1 (const int)

@@ -198,15 +198,15 @@
 0:40                  0 (const int)

 0:40                  2 (const int)

 0:40                  1 (const int)

-0:40                'i' (int)

+0:40                'i' (global int)

 0:40              Sequence

 0:40                Constant:

 0:40                  0 (const int)

 0:40                Constant:

 0:40                  1 (const int)

-0:42      move second child to first child (2-component vector of int)

-0:42        vector swizzle (2-component vector of int)

-0:42          indirect index (2-component vector of int)

+0:42      move second child to first child (temp 2-component vector of int)

+0:42        vector swizzle (temp 2-component vector of int)

+0:42          indirect index (temp 2-component vector of int)

 0:42            Constant:

 0:42              0 (const int)

 0:42              1 (const int)

@@ -218,7 +218,7 @@
 0:42              0 (const int)

 0:42              2 (const int)

 0:42              1 (const int)

-0:42            'i' (int)

+0:42            'i' (global int)

 0:42          Sequence

 0:42            Constant:

 0:42              0 (const int)

@@ -227,28 +227,28 @@
 0:42        Constant:

 0:42          3 (const int)

 0:42          3 (const int)

-0:43      move second child to first child (float)

-0:43        direct index (float)

+0:43      move second child to first child (temp float)

+0:43        direct index (temp float)

 0:43          'v4' (uniform 4-component vector of float)

 0:43          Constant:

 0:43            0 (const int)

 0:43        Constant:

 0:43          3.200000

-0:44      vector swizzle (2-component vector of float)

+0:44      vector swizzle (temp 2-component vector of float)

 0:44        'v4' (uniform 4-component vector of float)

 0:44        Sequence

 0:44          Constant:

 0:44            0 (const int)

 0:44          Constant:

 0:44            1 (const int)

-0:52  Function Definition: foo5( (float)

+0:52  Function Definition: foo5( (global float)

 0:52    Function Parameters: 

 0:54    Sequence

 0:54      Branch: Return with expression

-0:54        Convert int to float (float)

-0:54          'i' (int)

+0:54        Convert int to float (temp float)

+0:54          'i' (global int)

 0:?   Linker Objects

-0:?     'i' (int)

+0:?     'i' (global int)

 0:?     'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:?     'color3' (in 3-element array of 4-component vector of float)

 0:?     's2D' (uniform sampler2D)

diff --git a/Test/baseResults/420.tesc.out b/Test/baseResults/420.tesc.out
index 1aabe3e..fcabdf2 100644
--- a/Test/baseResults/420.tesc.out
+++ b/Test/baseResults/420.tesc.out
@@ -4,7 +4,7 @@
 ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a

 ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb

 ERROR: 0:26: 'gl_PointSize' : no such field in structure 

-ERROR: 0:26: 'assign' :  cannot convert from 'float' to 'block{out 4-component vector of float gl_Position}'

+ERROR: 0:26: 'assign' :  cannot convert from 'temp float' to 'temp block{out 4-component vector of float gl_Position}'

 ERROR: 0:29: 'out' : type must be an array: outf

 ERROR: 6 compilation errors.  No code generated.

 

@@ -13,35 +13,35 @@
 Requested GL_ARB_separate_shader_objects

 vertices = 4

 ERROR: node is still EOpNull!

-0:15  Function Definition: main( (void)

+0:15  Function Definition: main( (global void)

 0:15    Function Parameters: 

 0:17    Sequence

 0:17      Sequence

-0:17        move second child to first child (4-component vector of float)

-0:17          'p' (4-component vector of float)

+0:17        move second child to first child (temp 4-component vector of float)

+0:17          'p' (temp 4-component vector of float)

 0:17          gl_Position: direct index for structure (in 4-component vector of float)

-0:17            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:17            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:17              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:17              Constant:

 0:17                1 (const int)

 0:17            Constant:

 0:17              0 (const int)

 0:18      Sequence

-0:18        move second child to first child (float)

-0:18          'ps' (float)

+0:18        move second child to first child (temp float)

+0:18          'ps' (temp float)

 0:18          gl_PointSize: direct index for structure (in float)

-0:18            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:18            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:18              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:18              Constant:

 0:18                1 (const int)

 0:18            Constant:

 0:18              1 (const int)

 0:19      Sequence

-0:19        move second child to first child (float)

-0:19          'cd' (float)

-0:19          direct index (float)

+0:19        move second child to first child (temp float)

+0:19          'cd' (temp float)

+0:19          direct index (temp float)

 0:19            gl_ClipDistance: direct index for structure (in implicitly-sized array of float)

-0:19              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:19              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:19                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:19                Constant:

 0:19                  1 (const int)

@@ -50,37 +50,37 @@
 0:19            Constant:

 0:19              2 (const int)

 0:21      Sequence

-0:21        move second child to first child (int)

-0:21          'pvi' (int)

+0:21        move second child to first child (temp int)

+0:21          'pvi' (temp int)

 0:21          'gl_PatchVerticesIn' (in int)

 0:22      Sequence

-0:22        move second child to first child (int)

-0:22          'pid' (int)

+0:22        move second child to first child (temp int)

+0:22          'pid' (temp int)

 0:22          'gl_PrimitiveID' (in int)

 0:23      Sequence

-0:23        move second child to first child (int)

-0:23          'iid' (int)

+0:23        move second child to first child (temp int)

+0:23          'iid' (temp int)

 0:23          'gl_InvocationID' (in int)

-0:25      move second child to first child (4-component vector of float)

+0:25      move second child to first child (temp 4-component vector of float)

 0:25        gl_Position: direct index for structure (out 4-component vector of float)

-0:25          direct index (block{out 4-component vector of float gl_Position})

+0:25          direct index (temp block{out 4-component vector of float gl_Position})

 0:25            'gl_out' (out 3-element array of block{out 4-component vector of float gl_Position})

 0:25            Constant:

 0:25              1 (const int)

 0:25          Constant:

 0:25            0 (const int)

-0:25        'p' (4-component vector of float)

-0:26      direct index (block{out 4-component vector of float gl_Position})

+0:25        'p' (temp 4-component vector of float)

+0:26      direct index (temp block{out 4-component vector of float gl_Position})

 0:26        'gl_out' (out 3-element array of block{out 4-component vector of float gl_Position})

 0:26        Constant:

 0:26          1 (const int)

-0:34  Function Definition: foo( (void)

+0:34  Function Definition: foo( (global void)

 0:34    Function Parameters: 

 0:36    Sequence

-0:36      Test condition and select (void)

+0:36      Test condition and select (temp void)

 0:36        Condition

-0:36        logical-or (bool)

-0:36          Compare Not Equal (bool)

+0:36        logical-or (temp bool)

+0:36          Compare Not Equal (temp bool)

 0:36            Constant:

 0:36              -0.625000

 0:36              -0.500000

@@ -90,11 +90,11 @@
 0:36              -0.250000

 0:36              -0.125000

 0:36              0.000000

-0:36            direct index (layout(location=0 ) 2X4 matrix of double)

+0:36            direct index (layout(location=0 ) temp 2X4 matrix of double)

 0:36              'vs_tcs_first' (layout(location=0 ) in 32-element array of 2X4 matrix of double)

 0:36              Constant:

 0:36                0 (const int)

-0:37          Compare Not Equal (bool)

+0:37          Compare Not Equal (temp bool)

 0:37            Constant:

 0:37              0.375000

 0:37              0.500000

@@ -104,7 +104,7 @@
 0:37              0.750000

 0:37              0.875000

 0:37              -0.625000

-0:37            direct index (layout(location=12 ) 2X4 matrix of double)

+0:37            direct index (layout(location=12 ) temp 2X4 matrix of double)

 0:37              'vs_tcs_last' (layout(location=12 ) in 32-element array of 2X4 matrix of double)

 0:37              Constant:

 0:37                0 (const int)

@@ -126,35 +126,35 @@
 Requested GL_ARB_separate_shader_objects

 vertices = 4

 ERROR: node is still EOpNull!

-0:15  Function Definition: main( (void)

+0:15  Function Definition: main( (global void)

 0:15    Function Parameters: 

 0:17    Sequence

 0:17      Sequence

-0:17        move second child to first child (4-component vector of float)

-0:17          'p' (4-component vector of float)

+0:17        move second child to first child (temp 4-component vector of float)

+0:17          'p' (temp 4-component vector of float)

 0:17          gl_Position: direct index for structure (in 4-component vector of float)

-0:17            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:17            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:17              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:17              Constant:

 0:17                1 (const int)

 0:17            Constant:

 0:17              0 (const int)

 0:18      Sequence

-0:18        move second child to first child (float)

-0:18          'ps' (float)

+0:18        move second child to first child (temp float)

+0:18          'ps' (temp float)

 0:18          gl_PointSize: direct index for structure (in float)

-0:18            direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:18            direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:18              'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:18              Constant:

 0:18                1 (const int)

 0:18            Constant:

 0:18              1 (const int)

 0:19      Sequence

-0:19        move second child to first child (float)

-0:19          'cd' (float)

-0:19          direct index (float)

+0:19        move second child to first child (temp float)

+0:19          'cd' (temp float)

+0:19          direct index (temp float)

 0:19            gl_ClipDistance: direct index for structure (in 1-element array of float)

-0:19              direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:19              direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:19                'gl_in' (in 32-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:19                Constant:

 0:19                  1 (const int)

@@ -163,37 +163,37 @@
 0:19            Constant:

 0:19              2 (const int)

 0:21      Sequence

-0:21        move second child to first child (int)

-0:21          'pvi' (int)

+0:21        move second child to first child (temp int)

+0:21          'pvi' (temp int)

 0:21          'gl_PatchVerticesIn' (in int)

 0:22      Sequence

-0:22        move second child to first child (int)

-0:22          'pid' (int)

+0:22        move second child to first child (temp int)

+0:22          'pid' (temp int)

 0:22          'gl_PrimitiveID' (in int)

 0:23      Sequence

-0:23        move second child to first child (int)

-0:23          'iid' (int)

+0:23        move second child to first child (temp int)

+0:23          'iid' (temp int)

 0:23          'gl_InvocationID' (in int)

-0:25      move second child to first child (4-component vector of float)

+0:25      move second child to first child (temp 4-component vector of float)

 0:25        gl_Position: direct index for structure (out 4-component vector of float)

-0:25          direct index (block{out 4-component vector of float gl_Position})

+0:25          direct index (temp block{out 4-component vector of float gl_Position})

 0:25            'gl_out' (out 3-element array of block{out 4-component vector of float gl_Position})

 0:25            Constant:

 0:25              1 (const int)

 0:25          Constant:

 0:25            0 (const int)

-0:25        'p' (4-component vector of float)

-0:26      direct index (block{out 4-component vector of float gl_Position})

+0:25        'p' (temp 4-component vector of float)

+0:26      direct index (temp block{out 4-component vector of float gl_Position})

 0:26        'gl_out' (out 3-element array of block{out 4-component vector of float gl_Position})

 0:26        Constant:

 0:26          1 (const int)

-0:34  Function Definition: foo( (void)

+0:34  Function Definition: foo( (global void)

 0:34    Function Parameters: 

 0:36    Sequence

-0:36      Test condition and select (void)

+0:36      Test condition and select (temp void)

 0:36        Condition

-0:36        logical-or (bool)

-0:36          Compare Not Equal (bool)

+0:36        logical-or (temp bool)

+0:36          Compare Not Equal (temp bool)

 0:36            Constant:

 0:36              -0.625000

 0:36              -0.500000

@@ -203,11 +203,11 @@
 0:36              -0.250000

 0:36              -0.125000

 0:36              0.000000

-0:36            direct index (layout(location=0 ) 2X4 matrix of double)

+0:36            direct index (layout(location=0 ) temp 2X4 matrix of double)

 0:36              'vs_tcs_first' (layout(location=0 ) in 32-element array of 2X4 matrix of double)

 0:36              Constant:

 0:36                0 (const int)

-0:37          Compare Not Equal (bool)

+0:37          Compare Not Equal (temp bool)

 0:37            Constant:

 0:37              0.375000

 0:37              0.500000

@@ -217,7 +217,7 @@
 0:37              0.750000

 0:37              0.875000

 0:37              -0.625000

-0:37            direct index (layout(location=12 ) 2X4 matrix of double)

+0:37            direct index (layout(location=12 ) temp 2X4 matrix of double)

 0:37              'vs_tcs_last' (layout(location=12 ) in 32-element array of 2X4 matrix of double)

 0:37              Constant:

 0:37                0 (const int)

diff --git a/Test/baseResults/420.tese.out b/Test/baseResults/420.tese.out
index 94bdee7..b39d969 100644
--- a/Test/baseResults/420.tese.out
+++ b/Test/baseResults/420.tese.out
@@ -1,17 +1,17 @@
 420.tese

 Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.

-ERROR: 0:7: '=' :  cannot convert from '3-element array of float' to '2-element array of float'

-ERROR: 0:8: 'initializer list' : wrong vector size (or rows in a matrix column): 2-component vector of float

-ERROR: 0:9: 'initializer list' : wrong number of matrix columns: 3X3 matrix of float

-ERROR: 0:10: 'initializer list' : wrong number of matrix columns: 2X2 matrix of float

+ERROR: 0:7: '=' :  cannot convert from 'global 3-element array of float' to 'global 2-element array of float'

+ERROR: 0:8: 'initializer list' : wrong vector size (or rows in a matrix column): global 2-component vector of float

+ERROR: 0:9: 'initializer list' : wrong number of matrix columns: global 3X3 matrix of float

+ERROR: 0:10: 'initializer list' : wrong number of matrix columns: global 2X2 matrix of float

 ERROR: 0:25: 'initializer list' : wrong number of structure members 

-ERROR: 0:27: '=' :  cannot convert from 'const bool' to 'int'

-ERROR: 0:28: 'constructor' :  cannot convert parameter 2 from 'const float' to '4-component vector of float'

+ERROR: 0:27: '=' :  cannot convert from 'const bool' to 'global int'

+ERROR: 0:28: 'constructor' :  cannot convert parameter 2 from 'const float' to 'global 4-component vector of float'

 ERROR: 0:29: 'constructor' :  cannot convert parameter 2 from 'const 2X2 matrix of float' to 'const 4-component vector of float'

 ERROR: 0:29: 'const 2-element array of 4-component vector of float' : cannot construct with these arguments 

-ERROR: 0:29: '=' :  cannot convert from 'const float' to '2-element array of 4-component vector of float'

-ERROR: 0:30: 'initializer list' : wrong number of matrix columns: 4X2 matrix of float

-ERROR: 0:40: 'constructor' :  cannot convert parameter 1 from 'float' to 'structure{float s, float t}'

+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: global 4X2 matrix of float

+ERROR: 0:40: 'constructor' :  cannot convert parameter 1 from 'temp float' to 'global structure{global float s, global float t}'

 ERROR: 0:58: 'initializer list' : wrong number of structure members 

 ERROR: 13 compilation errors.  No code generated.

 

@@ -22,28 +22,28 @@
 triangle order = none

 ERROR: node is still EOpNull!

 0:4  Sequence

-0:4    move second child to first child (2X2 matrix of float)

-0:4      'b' (2X2 matrix of float)

+0:4    move second child to first child (temp 2X2 matrix of float)

+0:4      'b' (global 2X2 matrix of float)

 0:4      Constant:

 0:4        1.000000

 0:4        0.000000

 0:4        0.000000

 0:4        1.000000

 0:15  Sequence

-0:15    move second child to first child (structure{float a, int b})

-0:15      'e' (structure{float a, int b})

+0:15    move second child to first child (temp structure{global float a, global int b})

+0:15      'e' (global structure{global float a, global int b})

 0:15      Constant:

 0:15        1.200000

 0:15        2 (const int)

 0:20  Sequence

-0:20    move second child to first child (structure{float a, int b})

-0:20      'e2' (structure{float a, int b})

+0:20    move second child to first child (temp structure{global float a, global int b})

+0:20      'e2' (global structure{global float a, global int b})

 0:20      Constant:

 0:20        1.000000

 0:20        3 (const int)

 0:42  Sequence

-0:42    move second child to first child (5-element array of float)

-0:42      'b5' (5-element array of float)

+0:42    move second child to first child (temp 5-element array of float)

+0:42      'b5' (global 5-element array of float)

 0:42      Constant:

 0:42        3.400000

 0:42        4.200000

@@ -51,26 +51,26 @@
 0:42        5.200000

 0:42        1.100000

 0:67  Sequence

-0:67    move second child to first child (3-component vector of float)

-0:67      'av3' (3-component vector of float)

-0:67      Construct vec3 (3-component vector of float)

-0:67        'vc1' (float)

-0:67        'vc2' (float)

-0:67        'vc3' (float)

+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 (3-component vector of float)

-0:68      'bv3' (3-component vector of float)

-0:68      Construct vec3 (3-component vector of float)

-0:68        'vc1' (float)

-0:68        'vc2' (float)

-0:68        'vc3' (float)

-0:70  Function Definition: main( (void)

+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 (global 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 (void)

-0:74      Test condition and select (void)

+0:72      MemoryBarrier (global void)

+0:74      Test condition and select (temp void)

 0:74        Condition

-0:74        Compare Equal (bool)

+0:74        Compare Equal (temp bool)

 0:74          Constant:

 0:74            1 (const uint)

 0:74            2 (const uint)

@@ -88,9 +88,9 @@
 0:74            0.000000

 0:74            6.000000

 0:74            0.000000

-0:74          'curlybad1' (structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

+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 (void)

+0:76      Test condition and select (temp void)

 0:76        Condition

 0:76        Constant:

 0:76          true (const bool)

@@ -101,26 +101,26 @@
 0:?       0.000000

 0:?       0.000000

 0:?       1.000000

-0:?     'b' (2X2 matrix of float)

+0:?     'b' (global 2X2 matrix of float)

 0:?     'c' (const 2X2 matrix of float)

 0:?       1.000000

 0:?       0.000000

 0:?       0.000000

 0:?       1.000000

-0:?     'a2' (2-element array of float)

-0:?     'b2' (2-component vector of float)

-0:?     'c2' (3X3 matrix of float)

-0:?     'd' (2X2 matrix of float)

-0:?     'e' (structure{float a, int b})

-0:?     'e2' (structure{float a, int b})

-0:?     'e3' (structure{float a, int b})

-0:?     'a3' (int)

-0:?     'b3' (2-element array of 4-component vector of float)

-0:?     'b4' (2-element array of 4-component vector of float)

-0:?     'c3' (4X2 matrix of float)

-0:?     'd2' (implicitly-sized array of structure{float s, float t})

-0:?     'b5' (5-element array of float)

-0:?     'constructed' (const structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

+0:?     'a2' (global 2-element array of float)

+0:?     'b2' (global 2-component vector of float)

+0:?     'c2' (global 3X3 matrix of float)

+0:?     'd' (global 2X2 matrix of float)

+0:?     'e' (global structure{global float a, global int b})

+0:?     'e2' (global structure{global float a, global int b})

+0:?     'e3' (global structure{global float a, global int b})

+0:?     'a3' (global int)

+0:?     'b3' (global 2-element array of 4-component vector of float)

+0:?     'b4' (global 2-element array of 4-component vector of float)

+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:?     '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)

 0:?       3.000000

@@ -137,8 +137,8 @@
 0:?       0.000000

 0:?       6.000000

 0:?       0.000000

-0:?     'curlybad1' (structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

-0:?     'curlyInit' (const structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

+0:?     '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:?     'curlyInit' (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)

 0:?       3.000000

@@ -155,11 +155,11 @@
 0:?       0.000000

 0:?       6.000000

 0:?       0.000000

-0:?     'vc1' (float)

-0:?     'vc2' (float)

-0:?     'vc3' (float)

-0:?     'av3' (3-component vector of float)

-0:?     'bv3' (3-component vector of float)

+0:?     'vc1' (global float)

+0:?     'vc2' (global float)

+0:?     'vc3' (global float)

+0:?     'av3' (global 3-component vector of float)

+0:?     'bv3' (global 3-component vector of float)

 

 

 Linked tessellation evaluation stage:

@@ -172,28 +172,28 @@
 triangle order = ccw

 ERROR: node is still EOpNull!

 0:4  Sequence

-0:4    move second child to first child (2X2 matrix of float)

-0:4      'b' (2X2 matrix of float)

+0:4    move second child to first child (temp 2X2 matrix of float)

+0:4      'b' (global 2X2 matrix of float)

 0:4      Constant:

 0:4        1.000000

 0:4        0.000000

 0:4        0.000000

 0:4        1.000000

 0:15  Sequence

-0:15    move second child to first child (structure{float a, int b})

-0:15      'e' (structure{float a, int b})

+0:15    move second child to first child (temp structure{global float a, global int b})

+0:15      'e' (global structure{global float a, global int b})

 0:15      Constant:

 0:15        1.200000

 0:15        2 (const int)

 0:20  Sequence

-0:20    move second child to first child (structure{float a, int b})

-0:20      'e2' (structure{float a, int b})

+0:20    move second child to first child (temp structure{global float a, global int b})

+0:20      'e2' (global structure{global float a, global int b})

 0:20      Constant:

 0:20        1.000000

 0:20        3 (const int)

 0:42  Sequence

-0:42    move second child to first child (5-element array of float)

-0:42      'b5' (5-element array of float)

+0:42    move second child to first child (temp 5-element array of float)

+0:42      'b5' (global 5-element array of float)

 0:42      Constant:

 0:42        3.400000

 0:42        4.200000

@@ -201,26 +201,26 @@
 0:42        5.200000

 0:42        1.100000

 0:67  Sequence

-0:67    move second child to first child (3-component vector of float)

-0:67      'av3' (3-component vector of float)

-0:67      Construct vec3 (3-component vector of float)

-0:67        'vc1' (float)

-0:67        'vc2' (float)

-0:67        'vc3' (float)

+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 (3-component vector of float)

-0:68      'bv3' (3-component vector of float)

-0:68      Construct vec3 (3-component vector of float)

-0:68        'vc1' (float)

-0:68        'vc2' (float)

-0:68        'vc3' (float)

-0:70  Function Definition: main( (void)

+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 (global 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 (void)

-0:74      Test condition and select (void)

+0:72      MemoryBarrier (global void)

+0:74      Test condition and select (temp void)

 0:74        Condition

-0:74        Compare Equal (bool)

+0:74        Compare Equal (temp bool)

 0:74          Constant:

 0:74            1 (const uint)

 0:74            2 (const uint)

@@ -238,9 +238,9 @@
 0:74            0.000000

 0:74            6.000000

 0:74            0.000000

-0:74          'curlybad1' (structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

+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 (void)

+0:76      Test condition and select (temp void)

 0:76        Condition

 0:76        Constant:

 0:76          true (const bool)

@@ -251,26 +251,26 @@
 0:?       0.000000

 0:?       0.000000

 0:?       1.000000

-0:?     'b' (2X2 matrix of float)

+0:?     'b' (global 2X2 matrix of float)

 0:?     'c' (const 2X2 matrix of float)

 0:?       1.000000

 0:?       0.000000

 0:?       0.000000

 0:?       1.000000

-0:?     'a2' (2-element array of float)

-0:?     'b2' (2-component vector of float)

-0:?     'c2' (3X3 matrix of float)

-0:?     'd' (2X2 matrix of float)

-0:?     'e' (structure{float a, int b})

-0:?     'e2' (structure{float a, int b})

-0:?     'e3' (structure{float a, int b})

-0:?     'a3' (int)

-0:?     'b3' (2-element array of 4-component vector of float)

-0:?     'b4' (2-element array of 4-component vector of float)

-0:?     'c3' (4X2 matrix of float)

-0:?     'd2' (1-element array of structure{float s, float t})

-0:?     'b5' (5-element array of float)

-0:?     'constructed' (const structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

+0:?     'a2' (global 2-element array of float)

+0:?     'b2' (global 2-component vector of float)

+0:?     'c2' (global 3X3 matrix of float)

+0:?     'd' (global 2X2 matrix of float)

+0:?     'e' (global structure{global float a, global int b})

+0:?     'e2' (global structure{global float a, global int b})

+0:?     'e3' (global structure{global float a, global int b})

+0:?     'a3' (global int)

+0:?     'b3' (global 2-element array of 4-component vector of float)

+0:?     'b4' (global 2-element array of 4-component vector of float)

+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:?     '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)

 0:?       3.000000

@@ -287,8 +287,8 @@
 0:?       0.000000

 0:?       6.000000

 0:?       0.000000

-0:?     'curlybad1' (structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

-0:?     'curlyInit' (const structure{2-component vector of uint uv2, 2-element array of structure{float f, 2X3 matrix of float m23} s})

+0:?     '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:?     'curlyInit' (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)

 0:?       3.000000

@@ -305,9 +305,9 @@
 0:?       0.000000

 0:?       6.000000

 0:?       0.000000

-0:?     'vc1' (float)

-0:?     'vc2' (float)

-0:?     'vc3' (float)

-0:?     'av3' (3-component vector of float)

-0:?     'bv3' (3-component vector of float)

+0:?     'vc1' (global float)

+0:?     'vc2' (global float)

+0:?     'vc3' (global float)

+0:?     'av3' (global 3-component vector of float)

+0:?     'bv3' (global 3-component vector of float)

 

diff --git a/Test/baseResults/420.vert.out b/Test/baseResults/420.vert.out
index 12e0673..de0f1fa 100644
--- a/Test/baseResults/420.vert.out
+++ b/Test/baseResults/420.vert.out
@@ -12,13 +12,13 @@
 ERROR: 0:27: '' : constant expression required 

 ERROR: 0:27: '' : array size must be a constant integer expression 

 ERROR: 0:38: 'j' : undeclared identifier 

-ERROR: 0:38: '=' :  cannot convert from 'float' to 'int'

+ERROR: 0:38: '=' :  cannot convert from 'temp float' to 'temp int'

 ERROR: 0:39: 'k' : undeclared identifier 

-ERROR: 0:39: '=' :  cannot convert from 'float' to 'int'

+ERROR: 0:39: '=' :  cannot convert from 'temp float' to 'temp int'

 ERROR: 0:40: 'j' : undeclared identifier 

-ERROR: 0:40: '=' :  cannot convert from 'float' to 'int'

+ERROR: 0:40: '=' :  cannot convert from 'temp float' to 'temp int'

 ERROR: 0:44: 'jj' : undeclared identifier 

-ERROR: 0:44: '=' :  cannot convert from 'float' to 'int'

+ERROR: 0:44: '=' :  cannot convert from 'temp float' to 'temp int'

 ERROR: 0:54: 'y' : vector field selection out of range 

 ERROR: 0:62: 'xxxxx' : illegal vector field selection 

 ERROR: 0:63: 'xxy' : vector field selection out of range 

@@ -58,45 +58,45 @@
 0:20    Function Parameters: 

 0:?     Sequence

 0:23      Sequence

-0:23        move second child to first child (int)

+0:23        move second child to first child (temp int)

 0:23          'b' (const (read only) int)

-0:23          'anonconst' (int)

+0:23          'anonconst' (global int)

 0:25      Sequence

-0:25        move second child to first child (int)

+0:25        move second child to first child (temp int)

 0:25          'd' (const (read only) int)

 0:25          'b' (const (read only) int)

 0:29      Branch: Return with expression

 0:29        'b' (const (read only) int)

-0:32  Function Definition: main( (void)

+0:32  Function Definition: main( (global void)

 0:32    Function Parameters: 

 0:?     Sequence

-0:35      Test condition and select (void)

+0:35      Test condition and select (temp void)

 0:35        Condition

-0:35        Compare Equal (bool)

-0:35          'i' (int)

+0:35        Compare Equal (temp bool)

+0:35          'i' (temp int)

 0:35          Constant:

 0:35            3 (const int)

 0:35        true case

 0:36        Sequence

-0:36          move second child to first child (int)

-0:36            'j' (int)

-0:36            'i' (int)

+0:36          move second child to first child (temp int)

+0:36            'j' (temp int)

+0:36            'i' (temp int)

 0:42      Loop with condition tested first

 0:42        Loop Condition

 0:42        Constant:

 0:42          true (const bool)

 0:42        No loop body

-0:50  Function Definition: bar(vf4; (void)

+0:50  Function Definition: bar(vf4; (global void)

 0:50    Function Parameters: 

 0:50      'v' (volatile in 4-component vector of float)

 0:?     Sequence

-0:53      's' (int)

-0:54      's' (int)

-0:55      Test condition and select (void)

+0:53      's' (temp int)

+0:54      's' (temp int)

+0:55      Test condition and select (temp void)

 0:55        Condition

-0:55        Compare Equal (bool)

-0:55          direct index (float)

-0:55            direct index (4-component vector of float)

+0:55        Compare Equal (temp bool)

+0:55          direct index (temp float)

+0:55            direct index (temp 4-component vector of float)

 0:55              'bad' (in 10-element array of 4-component vector of float)

 0:55              Constant:

 0:55                0 (const int)

@@ -105,139 +105,139 @@
 0:55          Constant:

 0:55            4.200000

 0:55        true case is null

-0:57      Test condition and select (void)

+0:57      Test condition and select (temp void)

 0:57        Condition

 0:57        Constant:

 0:57          true (const bool)

 0:57        true case

-0:58        move second child to first child (4-component vector of float)

+0:58        move second child to first child (temp 4-component vector of float)

 0:58          'badorder3' (flat out 4-component vector of float)

-0:58          direct index (4-component vector of float)

+0:58          direct index (temp 4-component vector of float)

 0:58            'bad' (in 10-element array of 4-component vector of float)

 0:58            Constant:

 0:58              0 (const int)

 0:61      Sequence

-0:61        move second child to first child (3-component vector of float)

-0:61          'smeared' (3-component vector of float)

-0:61          Construct vec3 (3-component vector of float)

-0:61            'f' (float)

-0:62      'f' (float)

-0:63      'f' (float)

-0:88  Function Definition: bar23444( (void)

+0:61        move second child to first child (temp 3-component vector of float)

+0:61          'smeared' (temp 3-component vector of float)

+0:61          Construct vec3 (temp 3-component vector of float)

+0:61            'f' (temp float)

+0:62      'f' (temp float)

+0:63      'f' (temp float)

+0:88  Function Definition: bar23444( (global void)

 0:88    Function Parameters: 

 0:?     Sequence

 0:91      Sequence

-0:91        move second child to first child (float)

-0:91          'a1' (float)

-0:91          direct index (float)

-0:91            direct index (3-component vector of float)

-0:91              'm43' (4X3 matrix of float)

+0:91        move second child to first child (temp float)

+0:91          'a1' (temp float)

+0:91          direct index (temp float)

+0:91            direct index (temp 3-component vector of float)

+0:91              'm43' (temp 4X3 matrix of float)

 0:91              Constant:

 0:91                3 (const int)

 0:91            Constant:

 0:91              1 (const int)

 0:93      Sequence

-0:93        move second child to first child (int)

-0:93          'a2' (int)

+0:93        move second child to first child (temp int)

+0:93          'a2' (temp int)

 0:93          Constant:

 0:93            4 (const int)

-0:94      add second child into first child (int)

-0:94        'a2' (int)

+0:94      add second child into first child (temp int)

+0:94        'a2' (temp int)

 0:94        Constant:

 0:94          3 (const int)

-0:95      add second child into first child (int)

-0:95        'a2' (int)

+0:95      add second child into first child (temp int)

+0:95        'a2' (temp int)

 0:95        Constant:

 0:95          3 (const int)

 0:96      Sequence

-0:96        move second child to first child (float)

+0:96        move second child to first child (temp float)

 0:96          'b' (const (read only) float)

-0:96          component-wise multiply (float)

+0:96          component-wise multiply (temp float)

 0:96            Constant:

 0:96              2.000000

-0:96            'a1' (float)

+0:96            'a1' (temp float)

 0:97      Sequence

-0:97        move second child to first child (int)

-0:97          'a' (int)

+0:97        move second child to first child (temp int)

+0:97          'a' (temp int)

 0:97          Constant:

 0:97            -1 (const int)

-0:109  Function Definition: qux( (void)

+0:109  Function Definition: qux( (global void)

 0:109    Function Parameters: 

 0:111    Sequence

 0:111      Sequence

-0:111        move second child to first child (int)

-0:111          'i' (int)

+0:111        move second child to first child (temp int)

+0:111          'i' (temp int)

 0:111          aoeu: direct index for structure (layout(column_major shared ) uniform int)

 0:111            'anon@0' (layout(binding=7 column_major shared ) uniform block{layout(column_major shared ) uniform int aoeu})

 0:111            Constant:

 0:111              0 (const uint)

-0:112      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (int)

+0:112      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global int)

 0:112        'iimg2D' (layout(r32i ) uniform iimage2D)

-0:112        Construct ivec2 (2-component vector of int)

-0:112          'i' (int)

-0:112          'i' (int)

-0:112        'i' (int)

-0:112        'i' (int)

-0:113      Function Call: imageAtomicAdd(uI21;vi2;u1; (uint)

+0:112        Construct ivec2 (temp 2-component vector of int)

+0:112          'i' (temp int)

+0:112          'i' (temp int)

+0:112        'i' (temp int)

+0:112        'i' (temp int)

+0:113      Function Call: imageAtomicAdd(uI21;vi2;u1; (global uint)

 0:113        'uimg2D' (layout(r32ui ) uniform uimage2D)

-0:113        Construct ivec2 (2-component vector of int)

-0:113          'i' (int)

-0:113          'i' (int)

-0:113        Convert int to uint (uint)

-0:113          'i' (int)

-0:114      Function Call: imageAtomicMin(iI21;vi2;i1; (int)

+0:113        Construct ivec2 (temp 2-component vector of int)

+0:113          'i' (temp int)

+0:113          'i' (temp int)

+0:113        Convert int to uint (temp uint)

+0:113          'i' (temp int)

+0:114      Function Call: imageAtomicMin(iI21;vi2;i1; (global int)

 0:114        'iimg2Drgba' (layout(rgba32i ) uniform iimage2D)

-0:114        Construct ivec2 (2-component vector of int)

-0:114          'i' (int)

-0:114          'i' (int)

-0:114        'i' (int)

+0:114        Construct ivec2 (temp 2-component vector of int)

+0:114          'i' (temp int)

+0:114          'i' (temp int)

+0:114        'i' (temp int)

 0:115      Constant:

 0:115        0.000000

 0:116      Sequence

-0:116        move second child to first child (4-component vector of int)

-0:116          'pos' (4-component vector of int)

-0:116          Function Call: imageLoad(iI21;vi2; (4-component vector of int)

+0:116        move second child to first child (temp 4-component vector of int)

+0:116          'pos' (temp 4-component vector of int)

+0:116          Function Call: imageLoad(iI21;vi2; (global 4-component vector of int)

 0:116            'iimg2D' (layout(r32i ) uniform iimage2D)

-0:116            Construct ivec2 (2-component vector of int)

-0:116              'i' (int)

-0:116              'i' (int)

+0:116            Construct ivec2 (temp 2-component vector of int)

+0:116              'i' (temp int)

+0:116              'i' (temp int)

 0:117      Sequence

-0:117        move second child to first child (4-component vector of float)

-0:117          'col' (4-component vector of float)

-0:117          Function Call: imageLoad(I21;vi2;i1; (4-component vector of float)

+0:117        move second child to first child (temp 4-component vector of float)

+0:117          'col' (temp 4-component vector of float)

+0:117          Function Call: imageLoad(I21;vi2;i1; (global 4-component vector of float)

 0:117            'img2DMS' (uniform image2DMS)

-0:117            Construct ivec2 (2-component vector of int)

-0:117              'i' (int)

-0:117              'i' (int)

-0:117            'i' (int)

-0:118      Function Call: imageStore(I21;vi2;i1;vf4; (void)

+0:117            Construct ivec2 (temp 2-component vector of int)

+0:117              'i' (temp int)

+0:117              'i' (temp int)

+0:117            'i' (temp int)

+0:118      Function Call: imageStore(I21;vi2;i1;vf4; (global void)

 0:118        'img2DMSWO' (writeonly uniform image2DMS)

-0:118        Construct ivec2 (2-component vector of int)

-0:118          'i' (int)

-0:118          'i' (int)

-0:118        'i' (int)

+0:118        Construct ivec2 (temp 2-component vector of int)

+0:118          'i' (temp int)

+0:118          'i' (temp int)

+0:118        'i' (temp int)

 0:118        Constant:

 0:118          0.000000

 0:118          0.000000

 0:118          0.000000

 0:118          0.000000

-0:119      Function Call: imageLoad(I21;vi2;i1; (4-component vector of float)

+0:119      Function Call: imageLoad(I21;vi2;i1; (global 4-component vector of float)

 0:119        'img2DMSWO' (writeonly uniform image2DMS)

-0:119        Construct ivec2 (2-component vector of int)

-0:119          'i' (int)

-0:119          'i' (int)

-0:119        'i' (int)

-0:125  Function Definition: passr(iI21; (void)

+0:119        Construct ivec2 (temp 2-component vector of int)

+0:119          'i' (temp int)

+0:119          'i' (temp int)

+0:119        'i' (temp int)

+0:125  Function Definition: passr(iI21; (global void)

 0:125    Function Parameters: 

 0:125      'image' (coherent readonly in iimage2D)

-0:132  Function Definition: passrc( (void)

+0:132  Function Definition: passrc( (global void)

 0:132    Function Parameters: 

 0:134    Sequence

-0:134      Function Call: passr(iI21; (void)

+0:134      Function Call: passr(iI21; (global void)

 0:134        'qualim1' (layout(r32i ) coherent readonly uniform iimage2D)

-0:135      Function Call: passr(iI21; (void)

+0:135      Function Call: passr(iI21; (global void)

 0:135        'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D)

-0:136      Function Call: passr(iI21; (void)

+0:136      Function Call: passr(iI21; (global void)

 0:136        'iimg2D' (layout(r32i ) uniform iimage2D)

 0:?   Linker Objects

 0:?     'v2' (smooth out 2-component vector of float)

@@ -249,12 +249,12 @@
 0:?     'rep' (smooth flat out 4-component vector of float)

 0:?     'rep2' (centroid smooth sample out 4-component vector of float)

 0:?     'rep3' (in 4-component vector of float)

-0:?     'anonconst' (int)

+0:?     'anonconst' (global int)

 0:?     'aconst' (const int)

 0:?       5 (const int)

 0:?     'a' (const int)

 0:?       5 (const int)

-0:?     'b' (int)

+0:?     'b' (temp int)

 0:?     'cx' (const float)

 0:?       4.200000

 0:?     'dx' (const float)

@@ -271,16 +271,16 @@
 0:?     'anon@3' (out block{out implicitly-sized array of float gl_ClipDistance, })

 0:?     'patchIn' (patch in 4-component vector of float)

 0:?     'patchOut' (smooth patch out 4-component vector of float)

-0:?     'comma0' (int)

-0:?     'comma1' (1-element array of int)

+0:?     'comma0' (temp int)

+0:?     'comma1' (global 1-element array of int)

 0:?     'iimg2D' (layout(r32i ) uniform iimage2D)

 0:?     'iimg2Drgba' (layout(rgba32i ) uniform iimage2D)

 0:?     'img2Drgba' (layout(rgba32f ) uniform image2D)

 0:?     'uimg2D' (layout(r32ui ) uniform uimage2D)

 0:?     'img2DMS' (uniform image2DMS)

 0:?     'img2DMSWO' (writeonly uniform image2DMS)

-0:?     'vol' (volatile float)

-0:?     'vol2' (readonly int)

+0:?     'vol' (volatile temp float)

+0:?     'vol2' (readonly temp int)

 0:?     'qualim1' (layout(r32i ) coherent readonly uniform iimage2D)

 0:?     'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D)

 0:?     'i1bad' (layout(rg8i ) uniform uimage2D)

@@ -303,45 +303,45 @@
 0:20    Function Parameters: 

 0:?     Sequence

 0:23      Sequence

-0:23        move second child to first child (int)

+0:23        move second child to first child (temp int)

 0:23          'b' (const (read only) int)

-0:23          'anonconst' (int)

+0:23          'anonconst' (global int)

 0:25      Sequence

-0:25        move second child to first child (int)

+0:25        move second child to first child (temp int)

 0:25          'd' (const (read only) int)

 0:25          'b' (const (read only) int)

 0:29      Branch: Return with expression

 0:29        'b' (const (read only) int)

-0:32  Function Definition: main( (void)

+0:32  Function Definition: main( (global void)

 0:32    Function Parameters: 

 0:?     Sequence

-0:35      Test condition and select (void)

+0:35      Test condition and select (temp void)

 0:35        Condition

-0:35        Compare Equal (bool)

-0:35          'i' (int)

+0:35        Compare Equal (temp bool)

+0:35          'i' (temp int)

 0:35          Constant:

 0:35            3 (const int)

 0:35        true case

 0:36        Sequence

-0:36          move second child to first child (int)

-0:36            'j' (int)

-0:36            'i' (int)

+0:36          move second child to first child (temp int)

+0:36            'j' (temp int)

+0:36            'i' (temp int)

 0:42      Loop with condition tested first

 0:42        Loop Condition

 0:42        Constant:

 0:42          true (const bool)

 0:42        No loop body

-0:50  Function Definition: bar(vf4; (void)

+0:50  Function Definition: bar(vf4; (global void)

 0:50    Function Parameters: 

 0:50      'v' (volatile in 4-component vector of float)

 0:?     Sequence

-0:53      's' (int)

-0:54      's' (int)

-0:55      Test condition and select (void)

+0:53      's' (temp int)

+0:54      's' (temp int)

+0:55      Test condition and select (temp void)

 0:55        Condition

-0:55        Compare Equal (bool)

-0:55          direct index (float)

-0:55            direct index (4-component vector of float)

+0:55        Compare Equal (temp bool)

+0:55          direct index (temp float)

+0:55            direct index (temp 4-component vector of float)

 0:55              'bad' (in 10-element array of 4-component vector of float)

 0:55              Constant:

 0:55                0 (const int)

@@ -350,139 +350,139 @@
 0:55          Constant:

 0:55            4.200000

 0:55        true case is null

-0:57      Test condition and select (void)

+0:57      Test condition and select (temp void)

 0:57        Condition

 0:57        Constant:

 0:57          true (const bool)

 0:57        true case

-0:58        move second child to first child (4-component vector of float)

+0:58        move second child to first child (temp 4-component vector of float)

 0:58          'badorder3' (flat out 4-component vector of float)

-0:58          direct index (4-component vector of float)

+0:58          direct index (temp 4-component vector of float)

 0:58            'bad' (in 10-element array of 4-component vector of float)

 0:58            Constant:

 0:58              0 (const int)

 0:61      Sequence

-0:61        move second child to first child (3-component vector of float)

-0:61          'smeared' (3-component vector of float)

-0:61          Construct vec3 (3-component vector of float)

-0:61            'f' (float)

-0:62      'f' (float)

-0:63      'f' (float)

-0:88  Function Definition: bar23444( (void)

+0:61        move second child to first child (temp 3-component vector of float)

+0:61          'smeared' (temp 3-component vector of float)

+0:61          Construct vec3 (temp 3-component vector of float)

+0:61            'f' (temp float)

+0:62      'f' (temp float)

+0:63      'f' (temp float)

+0:88  Function Definition: bar23444( (global void)

 0:88    Function Parameters: 

 0:?     Sequence

 0:91      Sequence

-0:91        move second child to first child (float)

-0:91          'a1' (float)

-0:91          direct index (float)

-0:91            direct index (3-component vector of float)

-0:91              'm43' (4X3 matrix of float)

+0:91        move second child to first child (temp float)

+0:91          'a1' (temp float)

+0:91          direct index (temp float)

+0:91            direct index (temp 3-component vector of float)

+0:91              'm43' (temp 4X3 matrix of float)

 0:91              Constant:

 0:91                3 (const int)

 0:91            Constant:

 0:91              1 (const int)

 0:93      Sequence

-0:93        move second child to first child (int)

-0:93          'a2' (int)

+0:93        move second child to first child (temp int)

+0:93          'a2' (temp int)

 0:93          Constant:

 0:93            4 (const int)

-0:94      add second child into first child (int)

-0:94        'a2' (int)

+0:94      add second child into first child (temp int)

+0:94        'a2' (temp int)

 0:94        Constant:

 0:94          3 (const int)

-0:95      add second child into first child (int)

-0:95        'a2' (int)

+0:95      add second child into first child (temp int)

+0:95        'a2' (temp int)

 0:95        Constant:

 0:95          3 (const int)

 0:96      Sequence

-0:96        move second child to first child (float)

+0:96        move second child to first child (temp float)

 0:96          'b' (const (read only) float)

-0:96          component-wise multiply (float)

+0:96          component-wise multiply (temp float)

 0:96            Constant:

 0:96              2.000000

-0:96            'a1' (float)

+0:96            'a1' (temp float)

 0:97      Sequence

-0:97        move second child to first child (int)

-0:97          'a' (int)

+0:97        move second child to first child (temp int)

+0:97          'a' (temp int)

 0:97          Constant:

 0:97            -1 (const int)

-0:109  Function Definition: qux( (void)

+0:109  Function Definition: qux( (global void)

 0:109    Function Parameters: 

 0:111    Sequence

 0:111      Sequence

-0:111        move second child to first child (int)

-0:111          'i' (int)

+0:111        move second child to first child (temp int)

+0:111          'i' (temp int)

 0:111          aoeu: direct index for structure (layout(column_major shared ) uniform int)

 0:111            'anon@0' (layout(binding=7 column_major shared ) uniform block{layout(column_major shared ) uniform int aoeu})

 0:111            Constant:

 0:111              0 (const uint)

-0:112      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (int)

+0:112      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global int)

 0:112        'iimg2D' (layout(r32i ) uniform iimage2D)

-0:112        Construct ivec2 (2-component vector of int)

-0:112          'i' (int)

-0:112          'i' (int)

-0:112        'i' (int)

-0:112        'i' (int)

-0:113      Function Call: imageAtomicAdd(uI21;vi2;u1; (uint)

+0:112        Construct ivec2 (temp 2-component vector of int)

+0:112          'i' (temp int)

+0:112          'i' (temp int)

+0:112        'i' (temp int)

+0:112        'i' (temp int)

+0:113      Function Call: imageAtomicAdd(uI21;vi2;u1; (global uint)

 0:113        'uimg2D' (layout(r32ui ) uniform uimage2D)

-0:113        Construct ivec2 (2-component vector of int)

-0:113          'i' (int)

-0:113          'i' (int)

-0:113        Convert int to uint (uint)

-0:113          'i' (int)

-0:114      Function Call: imageAtomicMin(iI21;vi2;i1; (int)

+0:113        Construct ivec2 (temp 2-component vector of int)

+0:113          'i' (temp int)

+0:113          'i' (temp int)

+0:113        Convert int to uint (temp uint)

+0:113          'i' (temp int)

+0:114      Function Call: imageAtomicMin(iI21;vi2;i1; (global int)

 0:114        'iimg2Drgba' (layout(rgba32i ) uniform iimage2D)

-0:114        Construct ivec2 (2-component vector of int)

-0:114          'i' (int)

-0:114          'i' (int)

-0:114        'i' (int)

+0:114        Construct ivec2 (temp 2-component vector of int)

+0:114          'i' (temp int)

+0:114          'i' (temp int)

+0:114        'i' (temp int)

 0:115      Constant:

 0:115        0.000000

 0:116      Sequence

-0:116        move second child to first child (4-component vector of int)

-0:116          'pos' (4-component vector of int)

-0:116          Function Call: imageLoad(iI21;vi2; (4-component vector of int)

+0:116        move second child to first child (temp 4-component vector of int)

+0:116          'pos' (temp 4-component vector of int)

+0:116          Function Call: imageLoad(iI21;vi2; (global 4-component vector of int)

 0:116            'iimg2D' (layout(r32i ) uniform iimage2D)

-0:116            Construct ivec2 (2-component vector of int)

-0:116              'i' (int)

-0:116              'i' (int)

+0:116            Construct ivec2 (temp 2-component vector of int)

+0:116              'i' (temp int)

+0:116              'i' (temp int)

 0:117      Sequence

-0:117        move second child to first child (4-component vector of float)

-0:117          'col' (4-component vector of float)

-0:117          Function Call: imageLoad(I21;vi2;i1; (4-component vector of float)

+0:117        move second child to first child (temp 4-component vector of float)

+0:117          'col' (temp 4-component vector of float)

+0:117          Function Call: imageLoad(I21;vi2;i1; (global 4-component vector of float)

 0:117            'img2DMS' (uniform image2DMS)

-0:117            Construct ivec2 (2-component vector of int)

-0:117              'i' (int)

-0:117              'i' (int)

-0:117            'i' (int)

-0:118      Function Call: imageStore(I21;vi2;i1;vf4; (void)

+0:117            Construct ivec2 (temp 2-component vector of int)

+0:117              'i' (temp int)

+0:117              'i' (temp int)

+0:117            'i' (temp int)

+0:118      Function Call: imageStore(I21;vi2;i1;vf4; (global void)

 0:118        'img2DMSWO' (writeonly uniform image2DMS)

-0:118        Construct ivec2 (2-component vector of int)

-0:118          'i' (int)

-0:118          'i' (int)

-0:118        'i' (int)

+0:118        Construct ivec2 (temp 2-component vector of int)

+0:118          'i' (temp int)

+0:118          'i' (temp int)

+0:118        'i' (temp int)

 0:118        Constant:

 0:118          0.000000

 0:118          0.000000

 0:118          0.000000

 0:118          0.000000

-0:119      Function Call: imageLoad(I21;vi2;i1; (4-component vector of float)

+0:119      Function Call: imageLoad(I21;vi2;i1; (global 4-component vector of float)

 0:119        'img2DMSWO' (writeonly uniform image2DMS)

-0:119        Construct ivec2 (2-component vector of int)

-0:119          'i' (int)

-0:119          'i' (int)

-0:119        'i' (int)

-0:125  Function Definition: passr(iI21; (void)

+0:119        Construct ivec2 (temp 2-component vector of int)

+0:119          'i' (temp int)

+0:119          'i' (temp int)

+0:119        'i' (temp int)

+0:125  Function Definition: passr(iI21; (global void)

 0:125    Function Parameters: 

 0:125      'image' (coherent readonly in iimage2D)

-0:132  Function Definition: passrc( (void)

+0:132  Function Definition: passrc( (global void)

 0:132    Function Parameters: 

 0:134    Sequence

-0:134      Function Call: passr(iI21; (void)

+0:134      Function Call: passr(iI21; (global void)

 0:134        'qualim1' (layout(r32i ) coherent readonly uniform iimage2D)

-0:135      Function Call: passr(iI21; (void)

+0:135      Function Call: passr(iI21; (global void)

 0:135        'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D)

-0:136      Function Call: passr(iI21; (void)

+0:136      Function Call: passr(iI21; (global void)

 0:136        'iimg2D' (layout(r32i ) uniform iimage2D)

 0:?   Linker Objects

 0:?     'v2' (smooth out 2-component vector of float)

@@ -494,12 +494,12 @@
 0:?     'rep' (smooth flat out 4-component vector of float)

 0:?     'rep2' (centroid smooth sample out 4-component vector of float)

 0:?     'rep3' (in 4-component vector of float)

-0:?     'anonconst' (int)

+0:?     'anonconst' (global int)

 0:?     'aconst' (const int)

 0:?       5 (const int)

 0:?     'a' (const int)

 0:?       5 (const int)

-0:?     'b' (int)

+0:?     'b' (temp int)

 0:?     'cx' (const float)

 0:?       4.200000

 0:?     'dx' (const float)

@@ -516,16 +516,16 @@
 0:?     'anon@3' (out block{out 1-element array of float gl_ClipDistance, })

 0:?     'patchIn' (patch in 4-component vector of float)

 0:?     'patchOut' (smooth patch out 4-component vector of float)

-0:?     'comma0' (int)

-0:?     'comma1' (1-element array of int)

+0:?     'comma0' (temp int)

+0:?     'comma1' (global 1-element array of int)

 0:?     'iimg2D' (layout(r32i ) uniform iimage2D)

 0:?     'iimg2Drgba' (layout(rgba32i ) uniform iimage2D)

 0:?     'img2Drgba' (layout(rgba32f ) uniform image2D)

 0:?     'uimg2D' (layout(r32ui ) uniform uimage2D)

 0:?     'img2DMS' (uniform image2DMS)

 0:?     'img2DMSWO' (writeonly uniform image2DMS)

-0:?     'vol' (volatile float)

-0:?     'vol2' (readonly int)

+0:?     'vol' (volatile temp float)

+0:?     'vol2' (readonly temp int)

 0:?     'qualim1' (layout(r32i ) coherent readonly uniform iimage2D)

 0:?     'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D)

 0:?     'i1bad' (layout(rg8i ) uniform uimage2D)

diff --git a/Test/baseResults/420_size_gl_in.geom.out b/Test/baseResults/420_size_gl_in.geom.out
index ed318dd..05a651b 100644
--- a/Test/baseResults/420_size_gl_in.geom.out
+++ b/Test/baseResults/420_size_gl_in.geom.out
@@ -10,13 +10,13 @@
 input primitive = triangles

 output primitive = none

 ERROR: node is still EOpNull!

-0:11  Function Definition: foo( (void)

+0:11  Function Definition: foo( (global void)

 0:11    Function Parameters: 

 0:13    Sequence

 0:13      Constant:

 0:13        3 (const int)

 0:14      gl_Position: direct index for structure (in 4-component vector of float)

-0:14        direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:14        direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:14          'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:14          Constant:

 0:14            1 (const int)

@@ -25,13 +25,13 @@
 0:15      Constant:

 0:15        3 (const int)

 0:16      gl_Position: direct index for structure (in 4-component vector of float)

-0:16        indirect index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

+0:16        indirect index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

 0:16          'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

-0:16          'i' (int)

+0:16          'i' (global int)

 0:16        Constant:

 0:16          0 (const int)

 0:?   Linker Objects

-0:?     'i' (int)

+0:?     'i' (global int)

 0:?     'colorun' (in 3-element array of 4-component vector of float)

 0:?     'color3' (in 3-element array of 4-component vector of float)

 0:?     'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in implicitly-sized array of float gl_ClipDistance})

@@ -49,13 +49,13 @@
 input primitive = triangles

 output primitive = none

 ERROR: node is still EOpNull!

-0:11  Function Definition: foo( (void)

+0:11  Function Definition: foo( (global void)

 0:11    Function Parameters: 

 0:13    Sequence

 0:13      Constant:

 0:13        3 (const int)

 0:14      gl_Position: direct index for structure (in 4-component vector of float)

-0:14        direct index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:14        direct index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:14          'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:14          Constant:

 0:14            1 (const int)

@@ -64,13 +64,13 @@
 0:15      Constant:

 0:15        3 (const int)

 0:16      gl_Position: direct index for structure (in 4-component vector of float)

-0:16        indirect index (block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

+0:16        indirect index (temp block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

 0:16          'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

-0:16          'i' (int)

+0:16          'i' (global int)

 0:16        Constant:

 0:16          0 (const int)

 0:?   Linker Objects

-0:?     'i' (int)

+0:?     'i' (global int)

 0:?     'colorun' (in 3-element array of 4-component vector of float)

 0:?     'color3' (in 3-element array of 4-component vector of float)

 0:?     'gl_in' (in 3-element array of block{in 4-component vector of float gl_Position, in float gl_PointSize, in 1-element array of float gl_ClipDistance})

diff --git a/Test/baseResults/430.comp.out b/Test/baseResults/430.comp.out
index 2e2e7e4..463860b 100644
--- a/Test/baseResults/430.comp.out
+++ b/Test/baseResults/430.comp.out
@@ -14,48 +14,48 @@
 ERROR: 0:51: 'local_size' : can only apply to 'in' 

 ERROR: 0:51: 'local_size' : can only apply to 'in' 

 ERROR: 0:65: 'assign' :  l-value required "ro" (can't modify a readonly buffer)

-ERROR: 0:77: '=' :  cannot convert from 'double' to 'int'

+ERROR: 0:77: '=' :  cannot convert from 'temp double' to 'temp int'

 ERROR: 15 compilation errors.  No code generated.

 

 

 Shader version: 430

 local_size = (2, 1, 4096)

 ERROR: node is still EOpNull!

-0:27  Function Definition: main( (void)

+0:27  Function Definition: main( (global void)

 0:27    Function Parameters: 

 0:29    Sequence

-0:29      Barrier (void)

-0:30      MemoryBarrier (void)

-0:31      MemoryBarrierAtomicCounter (void)

-0:32      MemoryBarrierBuffer (void)

-0:33      MemoryBarrierShared (void)

-0:34      MemoryBarrierImage (void)

-0:35      GroupMemoryBarrier (void)

-0:36      move second child to first child (int)

+0:29      Barrier (global void)

+0:30      MemoryBarrier (global void)

+0:31      MemoryBarrierAtomicCounter (global void)

+0:32      MemoryBarrierBuffer (global void)

+0:33      MemoryBarrierShared (global void)

+0:34      MemoryBarrierImage (global void)

+0:35      GroupMemoryBarrier (global void)

+0:36      move second child to first child (temp int)

 0:36        value: direct index for structure (layout(column_major shared ) buffer int)

 0:36          'anon@0' (layout(column_major shared ) buffer block{layout(column_major shared ) buffer int value, layout(column_major shared ) buffer implicitly-sized array of float values})

 0:36          Constant:

 0:36            0 (const uint)

-0:36        Convert float to int (int)

-0:36          indirect index (layout(column_major shared ) float)

+0:36        Convert float to int (temp int)

+0:36          indirect index (layout(column_major shared ) temp float)

 0:36            values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of float)

 0:36              'anon@0' (layout(column_major shared ) buffer block{layout(column_major shared ) buffer int value, layout(column_major shared ) buffer implicitly-sized array of float values})

 0:36              Constant:

 0:36                1 (const uint)

 0:36            'gl_LocalInvocationIndex' (in uint)

-0:39      Test condition and select (void)

+0:39      Test condition and select (temp void)

 0:39        Condition

-0:39        Compare Greater Than (bool)

-0:39          'a' (int)

+0:39        Compare Greater Than (temp bool)

+0:39          'a' (temp int)

 0:39          Constant:

 0:39            10 (const int)

 0:39        true case

-0:40        Barrier (void)

-0:63  Function Definition: foo( (void)

+0:40        Barrier (global void)

+0:63  Function Definition: foo( (global void)

 0:63    Function Parameters: 

 0:65    Sequence

-0:65      move second child to first child (float)

-0:65        direct index (layout(column_major shared ) float)

+0:65      move second child to first child (temp float)

+0:65        direct index (layout(column_major shared ) temp float)

 0:65          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of float)

 0:65            'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer int value, layout(column_major shared ) buffer implicitly-sized array of float values})

 0:65            Constant:

@@ -64,20 +64,20 @@
 0:65            2 (const int)

 0:65        Constant:

 0:65          4.700000

-0:66      array length (int)

+0:66      array length (temp int)

 0:66        values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of float)

 0:66          'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer int value, layout(column_major shared ) buffer implicitly-sized array of float values})

 0:66          Constant:

 0:66            1 (const int)

-0:67      Barrier (void)

-0:72  Function Definition: fooaoeu( (void)

+0:67      Barrier (global void)

+0:72  Function Definition: fooaoeu( (global void)

 0:72    Function Parameters: 

 0:73    Sequence

 0:73      Sequence

-0:73        move second child to first child (2-component vector of int)

-0:73          'storePos' (2-component vector of int)

-0:73          Convert uint to int (2-component vector of int)

-0:73            vector swizzle (2-component vector of uint)

+0:73        move second child to first child (temp 2-component vector of int)

+0:73          'storePos' (temp 2-component vector of int)

+0:73          Convert uint to int (temp 2-component vector of int)

+0:73            vector swizzle (temp 2-component vector of uint)

 0:73              'gl_GlobalInvocationID' (in 3-component vector of uint)

 0:73              Sequence

 0:73                Constant:

@@ -85,15 +85,15 @@
 0:73                Constant:

 0:73                  1 (const int)

 0:74      Sequence

-0:74        move second child to first child (double)

-0:74          'localCoef' (double)

-0:74          Convert float to double (double)

-0:74            length (float)

-0:74              divide (2-component vector of float)

-0:74                Convert int to float (2-component vector of float)

-0:74                  subtract (2-component vector of int)

-0:74                    Convert uint to int (2-component vector of int)

-0:74                      vector swizzle (2-component vector of uint)

+0:74        move second child to first child (temp double)

+0:74          'localCoef' (temp double)

+0:74          Convert float to double (temp double)

+0:74            length (global float)

+0:74              divide (temp 2-component vector of float)

+0:74                Convert int to float (temp 2-component vector of float)

+0:74                  subtract (temp 2-component vector of int)

+0:74                    Convert uint to int (temp 2-component vector of int)

+0:74                      vector swizzle (temp 2-component vector of uint)

 0:74                        'gl_LocalInvocationID' (in 3-component vector of uint)

 0:74                        Sequence

 0:74                          Constant:

@@ -105,23 +105,23 @@
 0:74                Constant:

 0:74                  8.000000

 0:75      Sequence

-0:75        move second child to first child (4-component vector of double)

-0:75          'aa' (4-component vector of double)

+0:75        move second child to first child (temp 4-component vector of double)

+0:75          'aa' (temp 4-component vector of double)

 0:75          Constant:

 0:75            0.400000

 0:75            0.200000

 0:75            0.300000

 0:75            0.400000

 0:76      Sequence

-0:76        move second child to first child (double)

-0:76          'globalCoef' (double)

+0:76        move second child to first child (temp double)

+0:76          'globalCoef' (temp double)

 0:76          Constant:

 0:76            1.000000

 0:78      Sequence

-0:78        move second child to first child (double)

-0:78          'di' (double)

-0:78          Convert int to double (double)

-0:78            'i' (int)

+0:78        move second child to first child (temp double)

+0:78          'di' (temp double)

+0:78          Convert int to double (temp double)

+0:78            'i' (temp int)

 0:?   Linker Objects

 0:?     'gl_WorkGroupSize' (const 3-component vector of uint)

 0:?       2 (const uint)

@@ -137,9 +137,9 @@
 0:?     's' (shared 4-component vector of float)

 0:?     'sl' (layout(location=2 ) shared 4-component vector of float)

 0:?     'fs' (shared float)

-0:?     'arrX' (2-element array of int)

-0:?     'arrY' (1-element array of int)

-0:?     'arrZ' (4096-element array of int)

+0:?     'arrX' (global 2-element array of int)

+0:?     'arrY' (global 1-element array of int)

+0:?     'arrZ' (global 4096-element array of int)

 0:?     'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer int value, layout(column_major shared ) buffer implicitly-sized array of float values})

 0:?     'roll' (uniform double)

 0:?     'destTex' (writeonly uniform image2D)

@@ -151,41 +151,41 @@
 Shader version: 430

 local_size = (2, 1, 4096)

 ERROR: node is still EOpNull!

-0:27  Function Definition: main( (void)

+0:27  Function Definition: main( (global void)

 0:27    Function Parameters: 

 0:29    Sequence

-0:29      Barrier (void)

-0:30      MemoryBarrier (void)

-0:31      MemoryBarrierAtomicCounter (void)

-0:32      MemoryBarrierBuffer (void)

-0:33      MemoryBarrierShared (void)

-0:34      MemoryBarrierImage (void)

-0:35      GroupMemoryBarrier (void)

-0:36      move second child to first child (int)

+0:29      Barrier (global void)

+0:30      MemoryBarrier (global void)

+0:31      MemoryBarrierAtomicCounter (global void)

+0:32      MemoryBarrierBuffer (global void)

+0:33      MemoryBarrierShared (global void)

+0:34      MemoryBarrierImage (global void)

+0:35      GroupMemoryBarrier (global void)

+0:36      move second child to first child (temp int)

 0:36        value: direct index for structure (layout(column_major shared ) buffer int)

 0:36          'anon@0' (layout(column_major shared ) buffer block{layout(column_major shared ) buffer int value, layout(column_major shared ) buffer implicitly-sized array of float values})

 0:36          Constant:

 0:36            0 (const uint)

-0:36        Convert float to int (int)

-0:36          indirect index (layout(column_major shared ) float)

+0:36        Convert float to int (temp int)

+0:36          indirect index (layout(column_major shared ) temp float)

 0:36            values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of float)

 0:36              'anon@0' (layout(column_major shared ) buffer block{layout(column_major shared ) buffer int value, layout(column_major shared ) buffer implicitly-sized array of float values})

 0:36              Constant:

 0:36                1 (const uint)

 0:36            'gl_LocalInvocationIndex' (in uint)

-0:39      Test condition and select (void)

+0:39      Test condition and select (temp void)

 0:39        Condition

-0:39        Compare Greater Than (bool)

-0:39          'a' (int)

+0:39        Compare Greater Than (temp bool)

+0:39          'a' (temp int)

 0:39          Constant:

 0:39            10 (const int)

 0:39        true case

-0:40        Barrier (void)

-0:63  Function Definition: foo( (void)

+0:40        Barrier (global void)

+0:63  Function Definition: foo( (global void)

 0:63    Function Parameters: 

 0:65    Sequence

-0:65      move second child to first child (float)

-0:65        direct index (layout(column_major shared ) float)

+0:65      move second child to first child (temp float)

+0:65        direct index (layout(column_major shared ) temp float)

 0:65          values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of float)

 0:65            'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer int value, layout(column_major shared ) buffer implicitly-sized array of float values})

 0:65            Constant:

@@ -194,20 +194,20 @@
 0:65            2 (const int)

 0:65        Constant:

 0:65          4.700000

-0:66      array length (int)

+0:66      array length (temp int)

 0:66        values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of float)

 0:66          'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer int value, layout(column_major shared ) buffer implicitly-sized array of float values})

 0:66          Constant:

 0:66            1 (const int)

-0:67      Barrier (void)

-0:72  Function Definition: fooaoeu( (void)

+0:67      Barrier (global void)

+0:72  Function Definition: fooaoeu( (global void)

 0:72    Function Parameters: 

 0:73    Sequence

 0:73      Sequence

-0:73        move second child to first child (2-component vector of int)

-0:73          'storePos' (2-component vector of int)

-0:73          Convert uint to int (2-component vector of int)

-0:73            vector swizzle (2-component vector of uint)

+0:73        move second child to first child (temp 2-component vector of int)

+0:73          'storePos' (temp 2-component vector of int)

+0:73          Convert uint to int (temp 2-component vector of int)

+0:73            vector swizzle (temp 2-component vector of uint)

 0:73              'gl_GlobalInvocationID' (in 3-component vector of uint)

 0:73              Sequence

 0:73                Constant:

@@ -215,15 +215,15 @@
 0:73                Constant:

 0:73                  1 (const int)

 0:74      Sequence

-0:74        move second child to first child (double)

-0:74          'localCoef' (double)

-0:74          Convert float to double (double)

-0:74            length (float)

-0:74              divide (2-component vector of float)

-0:74                Convert int to float (2-component vector of float)

-0:74                  subtract (2-component vector of int)

-0:74                    Convert uint to int (2-component vector of int)

-0:74                      vector swizzle (2-component vector of uint)

+0:74        move second child to first child (temp double)

+0:74          'localCoef' (temp double)

+0:74          Convert float to double (temp double)

+0:74            length (global float)

+0:74              divide (temp 2-component vector of float)

+0:74                Convert int to float (temp 2-component vector of float)

+0:74                  subtract (temp 2-component vector of int)

+0:74                    Convert uint to int (temp 2-component vector of int)

+0:74                      vector swizzle (temp 2-component vector of uint)

 0:74                        'gl_LocalInvocationID' (in 3-component vector of uint)

 0:74                        Sequence

 0:74                          Constant:

@@ -235,23 +235,23 @@
 0:74                Constant:

 0:74                  8.000000

 0:75      Sequence

-0:75        move second child to first child (4-component vector of double)

-0:75          'aa' (4-component vector of double)

+0:75        move second child to first child (temp 4-component vector of double)

+0:75          'aa' (temp 4-component vector of double)

 0:75          Constant:

 0:75            0.400000

 0:75            0.200000

 0:75            0.300000

 0:75            0.400000

 0:76      Sequence

-0:76        move second child to first child (double)

-0:76          'globalCoef' (double)

+0:76        move second child to first child (temp double)

+0:76          'globalCoef' (temp double)

 0:76          Constant:

 0:76            1.000000

 0:78      Sequence

-0:78        move second child to first child (double)

-0:78          'di' (double)

-0:78          Convert int to double (double)

-0:78            'i' (int)

+0:78        move second child to first child (temp double)

+0:78          'di' (temp double)

+0:78          Convert int to double (temp double)

+0:78            'i' (temp int)

 0:?   Linker Objects

 0:?     'gl_WorkGroupSize' (const 3-component vector of uint)

 0:?       2 (const uint)

@@ -267,9 +267,9 @@
 0:?     's' (shared 4-component vector of float)

 0:?     'sl' (layout(location=2 ) shared 4-component vector of float)

 0:?     'fs' (shared float)

-0:?     'arrX' (2-element array of int)

-0:?     'arrY' (1-element array of int)

-0:?     'arrZ' (4096-element array of int)

+0:?     'arrX' (global 2-element array of int)

+0:?     'arrY' (global 1-element array of int)

+0:?     'arrZ' (global 4096-element array of int)

 0:?     'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer int value, layout(column_major shared ) buffer implicitly-sized array of float values})

 0:?     'roll' (uniform double)

 0:?     'destTex' (writeonly uniform image2D)

diff --git a/Test/baseResults/430.vert.out b/Test/baseResults/430.vert.out
index 5f1c35c..52f1a28 100644
--- a/Test/baseResults/430.vert.out
+++ b/Test/baseResults/430.vert.out
@@ -67,11 +67,11 @@
 Requested GL_ARB_shader_texture_image_samples

 in xfb mode

 ERROR: node is still EOpNull!

-0:14  Function Definition: foo( (void)

+0:14  Function Definition: foo( (global void)

 0:14    Function Parameters: 

 0:16    Sequence

-0:16      move second child to first child (float)

-0:16        direct index (float)

+0:16      move second child to first child (temp float)

+0:16        direct index (temp float)

 0:16          gl_ClipDistance: direct index for structure (out 17-element array of float)

 0:16            'anon@0' (out block{out 17-element array of float gl_ClipDistance, })

 0:16            Constant:

@@ -80,72 +80,72 @@
 0:16            2 (const int)

 0:16        Constant:

 0:16          3.700000

-0:31  Function Definition: foo3(vf4;vf3;vf2;vf3; (void)

+0:31  Function Definition: foo3(vf4;vf3;vf2;vf3; (global void)

 0:31    Function Parameters: 

 0:31      'v4' (in 4-component vector of float)

 0:31      'v3' (volatile in 3-component vector of float)

 0:31      'v2' (in 2-component vector of float)

 0:31      'cv3' (in 3-component vector of float)

-0:148  Function Definition: fooBarrier( (void)

+0:148  Function Definition: fooBarrier( (global void)

 0:148    Function Parameters: 

 0:150    Sequence

 0:150      Constant:

 0:150        0.000000

-0:151      MemoryBarrier (void)

-0:152      MemoryBarrierAtomicCounter (void)

-0:153      MemoryBarrierBuffer (void)

+0:151      MemoryBarrier (global void)

+0:152      MemoryBarrierAtomicCounter (global void)

+0:153      MemoryBarrierBuffer (global void)

 0:154      Constant:

 0:154        0.000000

-0:155      MemoryBarrierImage (void)

+0:155      MemoryBarrierImage (global void)

 0:156      Constant:

 0:156        0.000000

-0:166  Function Definition: fooq( (void)

+0:166  Function Definition: fooq( (global void)

 0:166    Function Parameters: 

 0:168    Sequence

 0:168      Sequence

-0:168        move second child to first child (int)

-0:168          's' (int)

-0:168          Function Call: textureSamples(s21; (int)

+0:168        move second child to first child (temp int)

+0:168          's' (temp int)

+0:168          Function Call: textureSamples(s21; (global int)

 0:168            's2dms' (uniform sampler2DMS)

-0:169      add second child into first child (int)

-0:169        's' (int)

-0:169        Function Call: textureSamples(usA21; (int)

+0:169      add second child into first child (temp int)

+0:169        's' (temp int)

+0:169        Function Call: textureSamples(usA21; (global int)

 0:169          'us2dmsa' (uniform usampler2DMSArray)

-0:170      add second child into first child (int)

-0:170        's' (int)

-0:170        Function Call: imageSamples(iI21; (int)

+0:170      add second child into first child (temp int)

+0:170        's' (temp int)

+0:170        Function Call: imageSamples(iI21; (global int)

 0:170          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)

-0:171      add second child into first child (int)

-0:171        's' (int)

-0:171        Function Call: imageSamples(IA21; (int)

+0:171      add second child into first child (temp int)

+0:171        's' (temp int)

+0:171        Function Call: imageSamples(IA21; (global int)

 0:171          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

-0:176  Function Definition: fooq2( (void)

+0:176  Function Definition: fooq2( (global void)

 0:176    Function Parameters: 

 0:178    Sequence

 0:178      Sequence

-0:178        move second child to first child (int)

-0:178          's' (int)

-0:178          Function Call: textureSamples(s21; (int)

+0:178        move second child to first child (temp int)

+0:178          's' (temp int)

+0:178          Function Call: textureSamples(s21; (global int)

 0:178            's2dms' (uniform sampler2DMS)

-0:179      add second child into first child (int)

-0:179        's' (int)

-0:179        Function Call: textureSamples(usA21; (int)

+0:179      add second child into first child (temp int)

+0:179        's' (temp int)

+0:179        Function Call: textureSamples(usA21; (global int)

 0:179          'us2dmsa' (uniform usampler2DMSArray)

-0:180      add second child into first child (int)

-0:180        's' (int)

-0:180        Function Call: imageSamples(iI21; (int)

+0:180      add second child into first child (temp int)

+0:180        's' (temp int)

+0:180        Function Call: imageSamples(iI21; (global int)

 0:180          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)

-0:181      add second child into first child (int)

-0:181        's' (int)

-0:181        Function Call: imageSamples(IA21; (int)

+0:181      add second child into first child (temp int)

+0:181        's' (temp int)

+0:181        Function Call: imageSamples(IA21; (global int)

 0:181          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

 0:?   Linker Objects

-0:?     'v4' (layout(location=3 ) 4-component vector of float)

+0:?     'v4' (layout(location=3 ) temp 4-component vector of float)

 0:?     'uv4' (layout(location=4 ) uniform 4-component vector of float)

 0:?     'b1' (layout(location=2 ) in block{in 4-component vector of float v})

 0:?     'b2' (layout(location=2 ) out block{out 4-component vector of float v})

 0:?     'anon@0' (out block{out 17-element array of float gl_ClipDistance, })

-0:?     'cs' (layout(location=10 ) smooth out 2-element array of structure{7-element array of 3X2 matrix of float m, float f})

+0:?     'cs' (layout(location=10 ) smooth out 2-element array of structure{global 7-element array of 3X2 matrix of float m, global float f})

 0:?     'cf' (layout(location=54 ) smooth out float)

 0:?     'cg' (layout(location=53 ) smooth out float)

 0:?     'alias1' (layout(location=10 ) in 4-component vector of float)

@@ -156,8 +156,8 @@
 0:?     'inst4e' (layout(column_major std140 align=16 ) uniform block{layout(column_major std140 offset=0 align=16 ) uniform int a})

 0:?     'inst9e' (layout(column_major shared align=32 ) uniform block{layout(column_major shared offset=12 align=4 ) uniform float f, layout(column_major shared offset=20 ) uniform float g})

 0:?     'spinste' (layout(column_major std140 ) uniform block{layout(column_major std140 offset=0 ) uniform 4-component vector of float a, layout(column_major std140 offset=32 ) uniform 3-component vector of float b})

-0:?     'aconste' (4-element array of int)

-0:?     'bconste' (64-element array of int)

+0:?     'aconste' (global 4-element array of int)

+0:?     'bconste' (global 64-element array of int)

 0:?     'bbinst2' (out block{layout(xfb_buffer=0 xfb_offset=64 ) out 4-component vector of float bbv})

 0:?     'bge' (layout(xfb_buffer=2 xfb_offset=48 xfb_stride=80 ) smooth out 4-component vector of float)

 0:?     'bhe' (layout(xfb_buffer=3 xfb_offset=32 xfb_stride=64 ) smooth out 4-component vector of float)

@@ -166,8 +166,8 @@
 0:?     'inst4' (layout(column_major std140 align=16 ) uniform block{layout(column_major std140 offset=0 align=16 ) uniform int a})

 0:?     'inst9' (layout(column_major std430 align=32 ) uniform block{layout(column_major std430 offset=12 align=4 ) uniform float f, layout(column_major std430 offset=20 align=32 ) uniform float g})

 0:?     'spinst' (layout(column_major std140 ) uniform block{layout(column_major std140 offset=0 ) uniform 4-component vector of float a, layout(column_major std140 offset=32 ) uniform 3-component vector of float b})

-0:?     'aconst' (4-element array of int)

-0:?     'bconst' (64-element array of int)

+0:?     'aconst' (global 4-element array of int)

+0:?     'bconst' (global 64-element array of int)

 0:?     'start2' (const int)

 0:?       5 (const int)

 0:?     'v6' (layout(location=19 ) in 4-component vector of float)

@@ -199,11 +199,11 @@
 Requested GL_ARB_shader_texture_image_samples

 in xfb mode

 ERROR: node is still EOpNull!

-0:14  Function Definition: foo( (void)

+0:14  Function Definition: foo( (global void)

 0:14    Function Parameters: 

 0:16    Sequence

-0:16      move second child to first child (float)

-0:16        direct index (float)

+0:16      move second child to first child (temp float)

+0:16        direct index (temp float)

 0:16          gl_ClipDistance: direct index for structure (out 17-element array of float)

 0:16            'anon@0' (out block{out 17-element array of float gl_ClipDistance, })

 0:16            Constant:

@@ -212,72 +212,72 @@
 0:16            2 (const int)

 0:16        Constant:

 0:16          3.700000

-0:31  Function Definition: foo3(vf4;vf3;vf2;vf3; (void)

+0:31  Function Definition: foo3(vf4;vf3;vf2;vf3; (global void)

 0:31    Function Parameters: 

 0:31      'v4' (in 4-component vector of float)

 0:31      'v3' (volatile in 3-component vector of float)

 0:31      'v2' (in 2-component vector of float)

 0:31      'cv3' (in 3-component vector of float)

-0:148  Function Definition: fooBarrier( (void)

+0:148  Function Definition: fooBarrier( (global void)

 0:148    Function Parameters: 

 0:150    Sequence

 0:150      Constant:

 0:150        0.000000

-0:151      MemoryBarrier (void)

-0:152      MemoryBarrierAtomicCounter (void)

-0:153      MemoryBarrierBuffer (void)

+0:151      MemoryBarrier (global void)

+0:152      MemoryBarrierAtomicCounter (global void)

+0:153      MemoryBarrierBuffer (global void)

 0:154      Constant:

 0:154        0.000000

-0:155      MemoryBarrierImage (void)

+0:155      MemoryBarrierImage (global void)

 0:156      Constant:

 0:156        0.000000

-0:166  Function Definition: fooq( (void)

+0:166  Function Definition: fooq( (global void)

 0:166    Function Parameters: 

 0:168    Sequence

 0:168      Sequence

-0:168        move second child to first child (int)

-0:168          's' (int)

-0:168          Function Call: textureSamples(s21; (int)

+0:168        move second child to first child (temp int)

+0:168          's' (temp int)

+0:168          Function Call: textureSamples(s21; (global int)

 0:168            's2dms' (uniform sampler2DMS)

-0:169      add second child into first child (int)

-0:169        's' (int)

-0:169        Function Call: textureSamples(usA21; (int)

+0:169      add second child into first child (temp int)

+0:169        's' (temp int)

+0:169        Function Call: textureSamples(usA21; (global int)

 0:169          'us2dmsa' (uniform usampler2DMSArray)

-0:170      add second child into first child (int)

-0:170        's' (int)

-0:170        Function Call: imageSamples(iI21; (int)

+0:170      add second child into first child (temp int)

+0:170        's' (temp int)

+0:170        Function Call: imageSamples(iI21; (global int)

 0:170          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)

-0:171      add second child into first child (int)

-0:171        's' (int)

-0:171        Function Call: imageSamples(IA21; (int)

+0:171      add second child into first child (temp int)

+0:171        's' (temp int)

+0:171        Function Call: imageSamples(IA21; (global int)

 0:171          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

-0:176  Function Definition: fooq2( (void)

+0:176  Function Definition: fooq2( (global void)

 0:176    Function Parameters: 

 0:178    Sequence

 0:178      Sequence

-0:178        move second child to first child (int)

-0:178          's' (int)

-0:178          Function Call: textureSamples(s21; (int)

+0:178        move second child to first child (temp int)

+0:178          's' (temp int)

+0:178          Function Call: textureSamples(s21; (global int)

 0:178            's2dms' (uniform sampler2DMS)

-0:179      add second child into first child (int)

-0:179        's' (int)

-0:179        Function Call: textureSamples(usA21; (int)

+0:179      add second child into first child (temp int)

+0:179        's' (temp int)

+0:179        Function Call: textureSamples(usA21; (global int)

 0:179          'us2dmsa' (uniform usampler2DMSArray)

-0:180      add second child into first child (int)

-0:180        's' (int)

-0:180        Function Call: imageSamples(iI21; (int)

+0:180      add second child into first child (temp int)

+0:180        's' (temp int)

+0:180        Function Call: imageSamples(iI21; (global int)

 0:180          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)

-0:181      add second child into first child (int)

-0:181        's' (int)

-0:181        Function Call: imageSamples(IA21; (int)

+0:181      add second child into first child (temp int)

+0:181        's' (temp int)

+0:181        Function Call: imageSamples(IA21; (global int)

 0:181          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

 0:?   Linker Objects

-0:?     'v4' (layout(location=3 ) 4-component vector of float)

+0:?     'v4' (layout(location=3 ) temp 4-component vector of float)

 0:?     'uv4' (layout(location=4 ) uniform 4-component vector of float)

 0:?     'b1' (layout(location=2 ) in block{in 4-component vector of float v})

 0:?     'b2' (layout(location=2 ) out block{out 4-component vector of float v})

 0:?     'anon@0' (out block{out 17-element array of float gl_ClipDistance, })

-0:?     'cs' (layout(location=10 ) smooth out 2-element array of structure{7-element array of 3X2 matrix of float m, float f})

+0:?     'cs' (layout(location=10 ) smooth out 2-element array of structure{global 7-element array of 3X2 matrix of float m, global float f})

 0:?     'cf' (layout(location=54 ) smooth out float)

 0:?     'cg' (layout(location=53 ) smooth out float)

 0:?     'alias1' (layout(location=10 ) in 4-component vector of float)

@@ -288,8 +288,8 @@
 0:?     'inst4e' (layout(column_major std140 align=16 ) uniform block{layout(column_major std140 offset=0 align=16 ) uniform int a})

 0:?     'inst9e' (layout(column_major shared align=32 ) uniform block{layout(column_major shared offset=12 align=4 ) uniform float f, layout(column_major shared offset=20 ) uniform float g})

 0:?     'spinste' (layout(column_major std140 ) uniform block{layout(column_major std140 offset=0 ) uniform 4-component vector of float a, layout(column_major std140 offset=32 ) uniform 3-component vector of float b})

-0:?     'aconste' (4-element array of int)

-0:?     'bconste' (64-element array of int)

+0:?     'aconste' (global 4-element array of int)

+0:?     'bconste' (global 64-element array of int)

 0:?     'bbinst2' (out block{layout(xfb_buffer=0 xfb_offset=64 ) out 4-component vector of float bbv})

 0:?     'bge' (layout(xfb_buffer=2 xfb_offset=48 xfb_stride=80 ) smooth out 4-component vector of float)

 0:?     'bhe' (layout(xfb_buffer=3 xfb_offset=32 xfb_stride=64 ) smooth out 4-component vector of float)

@@ -298,8 +298,8 @@
 0:?     'inst4' (layout(column_major std140 align=16 ) uniform block{layout(column_major std140 offset=0 align=16 ) uniform int a})

 0:?     'inst9' (layout(column_major std430 align=32 ) uniform block{layout(column_major std430 offset=12 align=4 ) uniform float f, layout(column_major std430 offset=20 align=32 ) uniform float g})

 0:?     'spinst' (layout(column_major std140 ) uniform block{layout(column_major std140 offset=0 ) uniform 4-component vector of float a, layout(column_major std140 offset=32 ) uniform 3-component vector of float b})

-0:?     'aconst' (4-element array of int)

-0:?     'bconst' (64-element array of int)

+0:?     'aconst' (global 4-element array of int)

+0:?     'bconst' (global 64-element array of int)

 0:?     'start2' (const int)

 0:?       5 (const int)

 0:?     'v6' (layout(location=19 ) in 4-component vector of float)

diff --git a/Test/baseResults/430scope.vert.out b/Test/baseResults/430scope.vert.out
index 802c8f3..4255ad1 100644
--- a/Test/baseResults/430scope.vert.out
+++ b/Test/baseResults/430scope.vert.out
@@ -13,7 +13,7 @@
 

 Shader version: 430

 ERROR: node is still EOpNull!

-0:3  Function Definition: f(i1;i1;i1; (int)

+0:3  Function Definition: f(i1;i1;i1; (global int)

 0:3    Function Parameters: 

 0:3      'a' (in int)

 0:3      'b' (in int)

@@ -21,106 +21,106 @@
 0:?     Sequence

 0:8      Sequence

 0:8        Sequence

-0:8          move second child to first child (float)

-0:8            'a' (float)

-0:8            add (float)

-0:8              Convert int to float (float)

+0:8          move second child to first child (temp float)

+0:8            'a' (temp float)

+0:8            add (temp float)

+0:8              Convert int to float (temp float)

 0:8                'a' (in int)

 0:8              Constant:

 0:8                1.000000

 0:11      Branch: Return with expression

 0:11        'a' (in int)

-0:25  Function Definition: cos(f1; (float)

+0:25  Function Definition: cos(f1; (global float)

 0:25    Function Parameters: 

 0:25      'x' (in float)

 0:27    Sequence

 0:27      Branch: Return with expression

 0:27        Constant:

 0:27          1.000000

-0:29  Function Definition: radians(b1; (bool)

+0:29  Function Definition: radians(b1; (global bool)

 0:29    Function Parameters: 

 0:29      'x' (in bool)

 0:31    Sequence

 0:31      Branch: Return with expression

 0:31        Constant:

 0:31          true (const bool)

-0:36  Function Definition: main( (void)

+0:36  Function Definition: main( (global void)

 0:36    Function Parameters: 

 0:?     Sequence

-0:39      Function Call: g( (int)

-0:42      'sin' (float)

+0:39      Function Call: g( (temp int)

+0:42      'sin' (temp float)

 0:43      Constant:

 0:43        0.000000

-0:44      Function Call: f(i1;i1;i1; (int)

+0:44      Function Call: f(i1;i1;i1; (global int)

 0:44        Constant:

 0:44          1 (const int)

 0:44        Constant:

 0:44          2 (const int)

 0:44        Constant:

 0:44          3 (const int)

-0:47      move second child to first child (float)

-0:47        'f' (float)

+0:47      move second child to first child (temp float)

+0:47        'f' (temp float)

 0:47        Constant:

 0:47          3.000000

-0:49      move second child to first child (4-component vector of float)

+0:49      move second child to first child (temp 4-component vector of float)

 0:49        gl_Position: direct index for structure (invariant gl_Position 4-component vector of float)

 0:49          'anon@0' (out block{invariant gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:49          Constant:

 0:49            0 (const uint)

-0:49        Construct vec4 (4-component vector of float)

-0:49          'f' (float)

+0:49        Construct vec4 (temp 4-component vector of float)

+0:49          'f' (temp float)

 0:51      Sequence

 0:51        Sequence

-0:51          move second child to first child (int)

-0:51            'f' (int)

+0:51          move second child to first child (temp int)

+0:51            'f' (temp int)

 0:51            Constant:

 0:51              0 (const int)

 0:51        Loop with condition tested first

 0:51          Loop Condition

-0:51          Compare Less Than (bool)

-0:51            'f' (int)

+0:51          Compare Less Than (temp bool)

+0:51            'f' (temp int)

 0:51            Constant:

 0:51              10 (const int)

 0:51          Loop Body

-0:52          Pre-Increment (int)

-0:52            'f' (int)

+0:52          Pre-Increment (temp int)

+0:52            'f' (temp int)

 0:51          Loop Terminal Expression

-0:51          Pre-Increment (int)

-0:51            'f' (int)

+0:51          Pre-Increment (temp int)

+0:51            'f' (temp int)

 0:54      Sequence

-0:54        move second child to first child (int)

-0:54          'x' (int)

+0:54        move second child to first child (temp int)

+0:54          'x' (temp int)

 0:54          Constant:

 0:54            1 (const int)

 0:56      Sequence

 0:56        Sequence

-0:56          move second child to first child (float)

-0:56            'x' (float)

+0:56          move second child to first child (temp float)

+0:56            'x' (temp float)

 0:56            Constant:

 0:56              2.000000

-0:56          move second child to first child (float)

-0:56            'y' (float)

-0:56            'x' (float)

+0:56          move second child to first child (temp float)

+0:56            'y' (temp float)

+0:56            'x' (temp float)

 0:60      Sequence

 0:60        Sequence

-0:60          move second child to first child (int)

-0:60            'x' (int)

-0:60            'x' (int)

+0:60          move second child to first child (temp int)

+0:60            'x' (temp int)

+0:60            'x' (temp int)

 0:68      Sequence

 0:68        Sequence

-0:68          move second child to first child (structure{int x})

-0:68            'S' (structure{int x})

+0:68          move second child to first child (temp structure{temp int x})

+0:68            'S' (temp structure{temp int x})

 0:68            Constant:

 0:68              0 (const int)

-0:69        x: direct index for structure (int)

-0:69          'S' (structure{int x})

+0:69        x: direct index for structure (temp int)

+0:69          'S' (temp structure{temp int x})

 0:69          Constant:

 0:69            0 (const int)

 0:73      Constant:

 0:73        0.000000

 0:?   Linker Objects

-0:?     'b' (bool)

-0:?     'tan' (float)

+0:?     'b' (global bool)

+0:?     'tan' (global float)

 0:?     'gl_VertexID' (gl_VertexId int)

 0:?     'gl_InstanceID' (gl_InstanceId int)

 

@@ -130,7 +130,7 @@
 

 Shader version: 430

 ERROR: node is still EOpNull!

-0:3  Function Definition: f(i1;i1;i1; (int)

+0:3  Function Definition: f(i1;i1;i1; (global int)

 0:3    Function Parameters: 

 0:3      'a' (in int)

 0:3      'b' (in int)

@@ -138,106 +138,106 @@
 0:?     Sequence

 0:8      Sequence

 0:8        Sequence

-0:8          move second child to first child (float)

-0:8            'a' (float)

-0:8            add (float)

-0:8              Convert int to float (float)

+0:8          move second child to first child (temp float)

+0:8            'a' (temp float)

+0:8            add (temp float)

+0:8              Convert int to float (temp float)

 0:8                'a' (in int)

 0:8              Constant:

 0:8                1.000000

 0:11      Branch: Return with expression

 0:11        'a' (in int)

-0:25  Function Definition: cos(f1; (float)

+0:25  Function Definition: cos(f1; (global float)

 0:25    Function Parameters: 

 0:25      'x' (in float)

 0:27    Sequence

 0:27      Branch: Return with expression

 0:27        Constant:

 0:27          1.000000

-0:29  Function Definition: radians(b1; (bool)

+0:29  Function Definition: radians(b1; (global bool)

 0:29    Function Parameters: 

 0:29      'x' (in bool)

 0:31    Sequence

 0:31      Branch: Return with expression

 0:31        Constant:

 0:31          true (const bool)

-0:36  Function Definition: main( (void)

+0:36  Function Definition: main( (global void)

 0:36    Function Parameters: 

 0:?     Sequence

-0:39      Function Call: g( (int)

-0:42      'sin' (float)

+0:39      Function Call: g( (temp int)

+0:42      'sin' (temp float)

 0:43      Constant:

 0:43        0.000000

-0:44      Function Call: f(i1;i1;i1; (int)

+0:44      Function Call: f(i1;i1;i1; (global int)

 0:44        Constant:

 0:44          1 (const int)

 0:44        Constant:

 0:44          2 (const int)

 0:44        Constant:

 0:44          3 (const int)

-0:47      move second child to first child (float)

-0:47        'f' (float)

+0:47      move second child to first child (temp float)

+0:47        'f' (temp float)

 0:47        Constant:

 0:47          3.000000

-0:49      move second child to first child (4-component vector of float)

+0:49      move second child to first child (temp 4-component vector of float)

 0:49        gl_Position: direct index for structure (invariant gl_Position 4-component vector of float)

 0:49          'anon@0' (out block{invariant gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:49          Constant:

 0:49            0 (const uint)

-0:49        Construct vec4 (4-component vector of float)

-0:49          'f' (float)

+0:49        Construct vec4 (temp 4-component vector of float)

+0:49          'f' (temp float)

 0:51      Sequence

 0:51        Sequence

-0:51          move second child to first child (int)

-0:51            'f' (int)

+0:51          move second child to first child (temp int)

+0:51            'f' (temp int)

 0:51            Constant:

 0:51              0 (const int)

 0:51        Loop with condition tested first

 0:51          Loop Condition

-0:51          Compare Less Than (bool)

-0:51            'f' (int)

+0:51          Compare Less Than (temp bool)

+0:51            'f' (temp int)

 0:51            Constant:

 0:51              10 (const int)

 0:51          Loop Body

-0:52          Pre-Increment (int)

-0:52            'f' (int)

+0:52          Pre-Increment (temp int)

+0:52            'f' (temp int)

 0:51          Loop Terminal Expression

-0:51          Pre-Increment (int)

-0:51            'f' (int)

+0:51          Pre-Increment (temp int)

+0:51            'f' (temp int)

 0:54      Sequence

-0:54        move second child to first child (int)

-0:54          'x' (int)

+0:54        move second child to first child (temp int)

+0:54          'x' (temp int)

 0:54          Constant:

 0:54            1 (const int)

 0:56      Sequence

 0:56        Sequence

-0:56          move second child to first child (float)

-0:56            'x' (float)

+0:56          move second child to first child (temp float)

+0:56            'x' (temp float)

 0:56            Constant:

 0:56              2.000000

-0:56          move second child to first child (float)

-0:56            'y' (float)

-0:56            'x' (float)

+0:56          move second child to first child (temp float)

+0:56            'y' (temp float)

+0:56            'x' (temp float)

 0:60      Sequence

 0:60        Sequence

-0:60          move second child to first child (int)

-0:60            'x' (int)

-0:60            'x' (int)

+0:60          move second child to first child (temp int)

+0:60            'x' (temp int)

+0:60            'x' (temp int)

 0:68      Sequence

 0:68        Sequence

-0:68          move second child to first child (structure{int x})

-0:68            'S' (structure{int x})

+0:68          move second child to first child (temp structure{temp int x})

+0:68            'S' (temp structure{temp int x})

 0:68            Constant:

 0:68              0 (const int)

-0:69        x: direct index for structure (int)

-0:69          'S' (structure{int x})

+0:69        x: direct index for structure (temp int)

+0:69          'S' (temp structure{temp int x})

 0:69          Constant:

 0:69            0 (const int)

 0:73      Constant:

 0:73        0.000000

 0:?   Linker Objects

-0:?     'b' (bool)

-0:?     'tan' (float)

+0:?     'b' (global bool)

+0:?     'tan' (global float)

 0:?     'gl_VertexID' (gl_VertexId int)

 0:?     'gl_InstanceID' (gl_InstanceId int)

 

diff --git a/Test/baseResults/440.frag.out b/Test/baseResults/440.frag.out
index 7f304e3..40e489b 100644
--- a/Test/baseResults/440.frag.out
+++ b/Test/baseResults/440.frag.out
@@ -86,8 +86,8 @@
 0:?     'specExample430' (layout(column_major std430 ) uniform block{layout(column_major std430 offset=0 ) uniform 4-component vector of float a, layout(column_major std430 offset=32 ) uniform 3-component vector of float b, layout(column_major std430 offset=48 ) uniform 2-component vector of float d, layout(column_major std430 offset=64 align=16 ) uniform float e, layout(column_major std430 offset=72 align=2 ) uniform double f, layout(column_major std430 offset=80 ) uniform float h, layout(column_major std430 offset=128 align=64 ) uniform 3-component vector of double i, layout(column_major std430 offset=168 align=8 ) uniform float j})

 0:?     'specExample4300' (layout(column_major std430 align=128 ) uniform block{layout(column_major std430 offset=0 align=128 ) uniform 4-component vector of float a, layout(column_major std430 offset=128 align=128 ) uniform 3-component vector of float b, layout(column_major std430 offset=256 align=128 ) uniform 2-component vector of float d, layout(column_major std430 offset=384 align=128 ) uniform float e, layout(column_major std430 offset=512 align=128 ) uniform double f, layout(column_major std430 offset=640 align=128 ) uniform float h, layout(column_major std430 offset=768 align=128 ) uniform 3-component vector of double i})

 0:?     'specExample4301' (layout(column_major std430 align=128 ) uniform block{layout(column_major std430 offset=0 align=128 ) uniform 4-component vector of float a, layout(column_major std430 offset=128 align=128 ) uniform 3-component vector of float b, layout(column_major std430 offset=256 align=128 ) uniform 2-component vector of float d, layout(column_major std430 offset=512 align=128 ) uniform float e, layout(column_major std430 offset=520 align=8 ) uniform double f, layout(column_major std430 offset=640 align=128 ) uniform float h, layout(column_major std430 offset=768 align=128 ) uniform 3-component vector of double i})

-0:?     'aconst' (4-element array of int)

-0:?     'bconst' (64-element array of int)

+0:?     'aconst' (global 4-element array of int)

+0:?     'bconst' (global 64-element array of int)

 

 

 Linked fragment stage:

@@ -129,6 +129,6 @@
 0:?     'specExample430' (layout(column_major std430 ) uniform block{layout(column_major std430 offset=0 ) uniform 4-component vector of float a, layout(column_major std430 offset=32 ) uniform 3-component vector of float b, layout(column_major std430 offset=48 ) uniform 2-component vector of float d, layout(column_major std430 offset=64 align=16 ) uniform float e, layout(column_major std430 offset=72 align=2 ) uniform double f, layout(column_major std430 offset=80 ) uniform float h, layout(column_major std430 offset=128 align=64 ) uniform 3-component vector of double i, layout(column_major std430 offset=168 align=8 ) uniform float j})

 0:?     'specExample4300' (layout(column_major std430 align=128 ) uniform block{layout(column_major std430 offset=0 align=128 ) uniform 4-component vector of float a, layout(column_major std430 offset=128 align=128 ) uniform 3-component vector of float b, layout(column_major std430 offset=256 align=128 ) uniform 2-component vector of float d, layout(column_major std430 offset=384 align=128 ) uniform float e, layout(column_major std430 offset=512 align=128 ) uniform double f, layout(column_major std430 offset=640 align=128 ) uniform float h, layout(column_major std430 offset=768 align=128 ) uniform 3-component vector of double i})

 0:?     'specExample4301' (layout(column_major std430 align=128 ) uniform block{layout(column_major std430 offset=0 align=128 ) uniform 4-component vector of float a, layout(column_major std430 offset=128 align=128 ) uniform 3-component vector of float b, layout(column_major std430 offset=256 align=128 ) uniform 2-component vector of float d, layout(column_major std430 offset=512 align=128 ) uniform float e, layout(column_major std430 offset=520 align=8 ) uniform double f, layout(column_major std430 offset=640 align=128 ) uniform float h, layout(column_major std430 offset=768 align=128 ) uniform 3-component vector of double i})

-0:?     'aconst' (4-element array of int)

-0:?     'bconst' (64-element array of int)

+0:?     'aconst' (global 4-element array of int)

+0:?     'bconst' (global 64-element array of int)

 

diff --git a/Test/baseResults/440.vert.out b/Test/baseResults/440.vert.out
index 12814f2..5f67d9b 100644
--- a/Test/baseResults/440.vert.out
+++ b/Test/baseResults/440.vert.out
@@ -74,10 +74,10 @@
 0:?     'y' (layout(location=30 component=3 ) smooth out 2-component vector of float)

 0:?     'z' (layout(location=31 component=1 ) smooth out 4-component vector of float)

 0:?     'ba' (layout(location=32 component=1 ) smooth out 4X4 matrix of float)

-0:?     'Ss' (layout(location=33 component=1 ) smooth out structure{int a})

+0:?     'Ss' (layout(location=33 component=1 ) smooth out structure{global int a})

 0:?     'bb' (layout(location=34 component=1 ) out block{out int a})

 0:?     'bc' (layout(location=63 component=1 ) smooth out float)

-0:?     'bd' (out block{layout(location=40 component=2 ) out float u, layout(location=40 component=0 ) out float v, layout(location=40 component=3 ) out float w, layout(location=40 component=1 ) out 2-component vector of float x, layout(location=41 component=3 ) out 2-component vector of float y, layout(location=42 component=1 ) out 4-component vector of float z, layout(location=42 component=1 ) out 4X4 matrix of float ba, layout(location=43 component=1 ) out structure{int a} Ss})

+0:?     'bd' (out block{layout(location=40 component=2 ) out float u, layout(location=40 component=0 ) out float v, layout(location=40 component=3 ) out float w, layout(location=40 component=1 ) out 2-component vector of float x, layout(location=41 component=3 ) out 2-component vector of float y, layout(location=42 component=1 ) out 4-component vector of float z, layout(location=42 component=1 ) out 4X4 matrix of float ba, layout(location=43 component=1 ) out structure{global int a} Ss})

 0:?     'be' (layout(location=50 component=3 ) smooth out int)

 0:?     'bf' (layout(location=50 component=0 ) smooth out 3-component vector of float)

 0:?     'bbinst1' (out block{out 4-component vector of float bbv})

@@ -93,8 +93,8 @@
 0:?     'bk' (layout(xfb_buffer=1 xfb_offset=0 ) smooth out 2-component vector of int)

 0:?     'bl' (layout(xfb_stride=48 ) smooth out float)

 0:?     'bbinst7' (layout(xfb_stride=48 ) out block{layout(xfb_stride=64 ) out 4-component vector of float bbv1, layout(xfb_stride=32 ) out 4-component vector of float bbv2})

-0:?     'bbinst8' (layout(xfb_stride=92 ) out block{layout(xfb_buffer=0 xfb_offset=0 ) out bool b, layout(xfb_buffer=0 xfb_offset=8 ) out structure{bool b, structure{int i, double d, float f} s, 2-component vector of float v2} t, layout(xfb_buffer=0 xfb_offset=48 ) out int i, layout(xfb_buffer=0 xfb_offset=52 ) out 3X3 matrix of float m3, layout(xfb_buffer=0 xfb_offset=88 ) out float f, layout(xfb_buffer=0 xfb_offset=92 ) out float g})

-0:?     'bbinst9' (out block{layout(xfb_buffer=4 xfb_offset=1 ) out bool b, layout(xfb_buffer=4 xfb_offset=12 ) out structure{bool b, structure{int i, double d, float f} s, 2-component vector of float v2} t, layout(xfb_buffer=4 xfb_offset=52 ) out 3X3 matrix of float m3, layout(xfb_buffer=4 xfb_offset=90 ) out int i, layout(xfb_buffer=4 xfb_offset=98 ) out double d, layout(xfb_buffer=4 xfb_offset=108 ) out structure{int a} s})

+0:?     'bbinst8' (layout(xfb_stride=92 ) out block{layout(xfb_buffer=0 xfb_offset=0 ) out bool b, layout(xfb_buffer=0 xfb_offset=8 ) out structure{global bool b, global structure{global int i, global double d, global float f} s, global 2-component vector of float v2} t, layout(xfb_buffer=0 xfb_offset=48 ) out int i, layout(xfb_buffer=0 xfb_offset=52 ) out 3X3 matrix of float m3, layout(xfb_buffer=0 xfb_offset=88 ) out float f, layout(xfb_buffer=0 xfb_offset=92 ) out float g})

+0:?     'bbinst9' (out block{layout(xfb_buffer=4 xfb_offset=1 ) out bool b, layout(xfb_buffer=4 xfb_offset=12 ) out structure{global bool b, global structure{global int i, global double d, global float f} s, global 2-component vector of float v2} t, layout(xfb_buffer=4 xfb_offset=52 ) out 3X3 matrix of float m3, layout(xfb_buffer=4 xfb_offset=90 ) out int i, layout(xfb_buffer=4 xfb_offset=98 ) out double d, layout(xfb_buffer=4 xfb_offset=108 ) out structure{global int a} s})

 0:?     'bm' (layout(xfb_buffer=5 xfb_offset=0 ) smooth out float)

 0:?     'bbinst10' (out block{layout(xfb_buffer=7 xfb_offset=0 ) out 4X4 matrix of double m1, layout(xfb_buffer=7 xfb_offset=128 ) out 4X4 matrix of double m2, layout(xfb_buffer=7 xfb_offset=256 ) out float f})

 0:?     'gl_VertexID' (gl_VertexId int)

@@ -142,10 +142,10 @@
 0:?     'y' (layout(location=30 component=3 ) smooth out 2-component vector of float)

 0:?     'z' (layout(location=31 component=1 ) smooth out 4-component vector of float)

 0:?     'ba' (layout(location=32 component=1 ) smooth out 4X4 matrix of float)

-0:?     'Ss' (layout(location=33 component=1 ) smooth out structure{int a})

+0:?     'Ss' (layout(location=33 component=1 ) smooth out structure{global int a})

 0:?     'bb' (layout(location=34 component=1 ) out block{out int a})

 0:?     'bc' (layout(location=63 component=1 ) smooth out float)

-0:?     'bd' (out block{layout(location=40 component=2 ) out float u, layout(location=40 component=0 ) out float v, layout(location=40 component=3 ) out float w, layout(location=40 component=1 ) out 2-component vector of float x, layout(location=41 component=3 ) out 2-component vector of float y, layout(location=42 component=1 ) out 4-component vector of float z, layout(location=42 component=1 ) out 4X4 matrix of float ba, layout(location=43 component=1 ) out structure{int a} Ss})

+0:?     'bd' (out block{layout(location=40 component=2 ) out float u, layout(location=40 component=0 ) out float v, layout(location=40 component=3 ) out float w, layout(location=40 component=1 ) out 2-component vector of float x, layout(location=41 component=3 ) out 2-component vector of float y, layout(location=42 component=1 ) out 4-component vector of float z, layout(location=42 component=1 ) out 4X4 matrix of float ba, layout(location=43 component=1 ) out structure{global int a} Ss})

 0:?     'be' (layout(location=50 component=3 ) smooth out int)

 0:?     'bf' (layout(location=50 component=0 ) smooth out 3-component vector of float)

 0:?     'bbinst1' (out block{out 4-component vector of float bbv})

@@ -161,8 +161,8 @@
 0:?     'bk' (layout(xfb_buffer=1 xfb_offset=0 ) smooth out 2-component vector of int)

 0:?     'bl' (layout(xfb_stride=48 ) smooth out float)

 0:?     'bbinst7' (layout(xfb_stride=48 ) out block{layout(xfb_stride=64 ) out 4-component vector of float bbv1, layout(xfb_stride=32 ) out 4-component vector of float bbv2})

-0:?     'bbinst8' (layout(xfb_stride=92 ) out block{layout(xfb_buffer=0 xfb_offset=0 ) out bool b, layout(xfb_buffer=0 xfb_offset=8 ) out structure{bool b, structure{int i, double d, float f} s, 2-component vector of float v2} t, layout(xfb_buffer=0 xfb_offset=48 ) out int i, layout(xfb_buffer=0 xfb_offset=52 ) out 3X3 matrix of float m3, layout(xfb_buffer=0 xfb_offset=88 ) out float f, layout(xfb_buffer=0 xfb_offset=92 ) out float g})

-0:?     'bbinst9' (out block{layout(xfb_buffer=4 xfb_offset=1 ) out bool b, layout(xfb_buffer=4 xfb_offset=12 ) out structure{bool b, structure{int i, double d, float f} s, 2-component vector of float v2} t, layout(xfb_buffer=4 xfb_offset=52 ) out 3X3 matrix of float m3, layout(xfb_buffer=4 xfb_offset=90 ) out int i, layout(xfb_buffer=4 xfb_offset=98 ) out double d, layout(xfb_buffer=4 xfb_offset=108 ) out structure{int a} s})

+0:?     'bbinst8' (layout(xfb_stride=92 ) out block{layout(xfb_buffer=0 xfb_offset=0 ) out bool b, layout(xfb_buffer=0 xfb_offset=8 ) out structure{global bool b, global structure{global int i, global double d, global float f} s, global 2-component vector of float v2} t, layout(xfb_buffer=0 xfb_offset=48 ) out int i, layout(xfb_buffer=0 xfb_offset=52 ) out 3X3 matrix of float m3, layout(xfb_buffer=0 xfb_offset=88 ) out float f, layout(xfb_buffer=0 xfb_offset=92 ) out float g})

+0:?     'bbinst9' (out block{layout(xfb_buffer=4 xfb_offset=1 ) out bool b, layout(xfb_buffer=4 xfb_offset=12 ) out structure{global bool b, global structure{global int i, global double d, global float f} s, global 2-component vector of float v2} t, layout(xfb_buffer=4 xfb_offset=52 ) out 3X3 matrix of float m3, layout(xfb_buffer=4 xfb_offset=90 ) out int i, layout(xfb_buffer=4 xfb_offset=98 ) out double d, layout(xfb_buffer=4 xfb_offset=108 ) out structure{global int a} s})

 0:?     'bm' (layout(xfb_buffer=5 xfb_offset=0 ) smooth out float)

 0:?     'bbinst10' (out block{layout(xfb_buffer=7 xfb_offset=0 ) out 4X4 matrix of double m1, layout(xfb_buffer=7 xfb_offset=128 ) out 4X4 matrix of double m2, layout(xfb_buffer=7 xfb_offset=256 ) out float f})

 0:?     'gl_VertexID' (gl_VertexId int)

diff --git a/Test/baseResults/450.frag.out b/Test/baseResults/450.frag.out
index 2d552a4..45d0d9b 100644
--- a/Test/baseResults/450.frag.out
+++ b/Test/baseResults/450.frag.out
@@ -3,128 +3,128 @@
 

 Shader version: 450

 0:? Sequence

-0:8  Function Definition: main( (void)

+0:8  Function Definition: main( (global void)

 0:8    Function Parameters: 

 0:10    Sequence

 0:10      Sequence

-0:10        move second child to first child (2-component vector of float)

-0:10          'v2' (2-component vector of float)

-0:10          dPdxFine (2-component vector of float)

+0:10        move second child to first child (temp 2-component vector of float)

+0:10          'v2' (temp 2-component vector of float)

+0:10          dPdxFine (global 2-component vector of float)

 0:10            'in2' (smooth in 2-component vector of float)

 0:11      Sequence

-0:11        move second child to first child (3-component vector of float)

-0:11          'v3' (3-component vector of float)

-0:11          dPdyCoarse (3-component vector of float)

+0:11        move second child to first child (temp 3-component vector of float)

+0:11          'v3' (temp 3-component vector of float)

+0:11          dPdyCoarse (global 3-component vector of float)

 0:11            'in3' (smooth in 3-component vector of float)

 0:12      Sequence

-0:12        move second child to first child (4-component vector of float)

-0:12          'v4' (4-component vector of float)

-0:12          fwidth (4-component vector of float)

+0:12        move second child to first child (temp 4-component vector of float)

+0:12          'v4' (temp 4-component vector of float)

+0:12          fwidth (global 4-component vector of float)

 0:12            'in4' (smooth in 4-component vector of float)

-0:13      move second child to first child (4-component vector of float)

-0:13        'v4' (4-component vector of float)

-0:13        dPdyFine (4-component vector of float)

+0:13      move second child to first child (temp 4-component vector of float)

+0:13        'v4' (temp 4-component vector of float)

+0:13        dPdyFine (global 4-component vector of float)

 0:13          'in4' (smooth in 4-component vector of float)

-0:14      move second child to first child (3-component vector of float)

-0:14        'v3' (3-component vector of float)

-0:14        dPdyFine (3-component vector of float)

+0:14      move second child to first child (temp 3-component vector of float)

+0:14        'v3' (temp 3-component vector of float)

+0:14        dPdyFine (global 3-component vector of float)

 0:14          'in3' (smooth in 3-component vector of float)

 0:15      Sequence

-0:15        move second child to first child (float)

-0:15          'f' (float)

-0:15          add (float)

-0:15            add (float)

-0:15              dPdx (float)

+0:15        move second child to first child (temp float)

+0:15          'f' (temp float)

+0:15          add (temp float)

+0:15            add (temp float)

+0:15              dPdx (global float)

 0:15                'in1' (smooth in float)

-0:15              dPdxFine (float)

+0:15              dPdxFine (global float)

 0:15                'in1' (smooth in float)

-0:15            dPdxCoarse (float)

+0:15            dPdxCoarse (global float)

 0:15              'in1' (smooth in float)

-0:16      move second child to first child (4-component vector of float)

-0:16        'v4' (4-component vector of float)

-0:16        add (4-component vector of float)

-0:16          fwidthCoarse (4-component vector of float)

+0:16      move second child to first child (temp 4-component vector of float)

+0:16        'v4' (temp 4-component vector of float)

+0:16        add (temp 4-component vector of float)

+0:16          fwidthCoarse (global 4-component vector of float)

 0:16            'in4' (smooth in 4-component vector of float)

-0:16          fwidthFine (4-component vector of float)

+0:16          fwidthFine (global 4-component vector of float)

 0:16            'in4' (smooth in 4-component vector of float)

 0:18      Sequence

-0:18        move second child to first child (float)

-0:18          'cull' (float)

-0:18          direct index (smooth float)

+0:18        move second child to first child (temp float)

+0:18          'cull' (temp float)

+0:18          direct index (smooth temp float)

 0:18            'gl_CullDistance' (smooth in implicitly-sized array of float)

 0:18            Constant:

 0:18              2 (const int)

 0:19      Sequence

-0:19        move second child to first child (float)

-0:19          'consts' (float)

+0:19        move second child to first child (temp float)

+0:19          'consts' (temp float)

 0:19          Constant:

 0:19            20.000000

-0:21      Test condition and select (void)

+0:21      Test condition and select (temp void)

 0:21        Condition

 0:21        'gl_HelperInvocation' (in bool)

 0:21        true case

-0:22        Pre-Increment (4-component vector of float)

-0:22          'v4' (4-component vector of float)

+0:22        Pre-Increment (temp 4-component vector of float)

+0:22          'v4' (temp 4-component vector of float)

 0:24      Sequence

-0:24        move second child to first child (int)

-0:24          'sum' (int)

+0:24        move second child to first child (temp int)

+0:24          'sum' (temp int)

 0:24          Constant:

 0:24            32 (const int)

 0:32      Sequence

-0:32        move second child to first child (2-component vector of bool)

-0:32          'b2' (2-component vector of bool)

-0:32          mix (2-component vector of bool)

-0:32            Construct bvec2 (2-component vector of bool)

-0:32              'b1' (bool)

-0:32            Construct bvec2 (2-component vector of bool)

-0:32              'b3' (bool)

-0:32            Construct bvec2 (2-component vector of bool)

-0:32              'b' (bool)

+0:32        move second child to first child (temp 2-component vector of bool)

+0:32          'b2' (temp 2-component vector of bool)

+0:32          mix (global 2-component vector of bool)

+0:32            Construct bvec2 (temp 2-component vector of bool)

+0:32              'b1' (temp bool)

+0:32            Construct bvec2 (temp 2-component vector of bool)

+0:32              'b3' (temp bool)

+0:32            Construct bvec2 (temp 2-component vector of bool)

+0:32              'b' (temp bool)

 0:33      Sequence

-0:33        move second child to first child (uint)

-0:33          'um' (uint)

-0:33          mix (uint)

-0:33            'uin' (uint)

-0:33            'uin' (uint)

-0:33            'b' (bool)

+0:33        move second child to first child (temp uint)

+0:33          'um' (temp uint)

+0:33          mix (global uint)

+0:33            'uin' (temp uint)

+0:33            'uin' (temp uint)

+0:33            'b' (temp bool)

 0:34      Sequence

-0:34        move second child to first child (3-component vector of int)

-0:34          'im3' (3-component vector of int)

-0:34          mix (3-component vector of int)

-0:34            Construct ivec3 (3-component vector of int)

-0:34              Convert uint to int (int)

-0:34                'uin' (uint)

-0:34            Construct ivec3 (3-component vector of int)

-0:34              Convert uint to int (int)

-0:34                'uin' (uint)

-0:34            Construct bvec3 (3-component vector of bool)

-0:34              'b' (bool)

-0:42  Function Definition: foo( (void)

+0:34        move second child to first child (temp 3-component vector of int)

+0:34          'im3' (temp 3-component vector of int)

+0:34          mix (global 3-component vector of int)

+0:34            Construct ivec3 (temp 3-component vector of int)

+0:34              Convert uint to int (temp int)

+0:34                'uin' (temp uint)

+0:34            Construct ivec3 (temp 3-component vector of int)

+0:34              Convert uint to int (temp int)

+0:34                'uin' (temp uint)

+0:34            Construct bvec3 (temp 3-component vector of bool)

+0:34              'b' (temp bool)

+0:42  Function Definition: foo( (global void)

 0:42    Function Parameters: 

 0:44    Sequence

 0:44      Sequence

-0:44        move second child to first child (int)

-0:44          's' (int)

-0:44          Function Call: textureSamples(s21; (int)

+0:44        move second child to first child (temp int)

+0:44          's' (temp int)

+0:44          Function Call: textureSamples(s21; (global int)

 0:44            's2dms' (uniform sampler2DMS)

-0:45      add second child into first child (int)

-0:45        's' (int)

-0:45        Function Call: textureSamples(usA21; (int)

+0:45      add second child into first child (temp int)

+0:45        's' (temp int)

+0:45        Function Call: textureSamples(usA21; (global int)

 0:45          'us2dmsa' (uniform usampler2DMSArray)

-0:46      add second child into first child (int)

-0:46        's' (int)

-0:46        Function Call: imageSamples(iI21; (int)

+0:46      add second child into first child (temp int)

+0:46        's' (temp int)

+0:46        Function Call: imageSamples(iI21; (global int)

 0:46          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)

-0:47      add second child into first child (int)

-0:47        's' (int)

-0:47        Function Call: imageSamples(IA21; (int)

+0:47      add second child into first child (temp int)

+0:47        's' (temp int)

+0:47        Function Call: imageSamples(IA21; (global int)

 0:47          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

 0:48      Sequence

-0:48        move second child to first child (float)

-0:48          'f' (float)

-0:48          Function Call: imageAtomicExchange(IA21;vi3;i1;f1; (float)

+0:48        move second child to first child (temp float)

+0:48          'f' (temp float)

+0:48          Function Call: imageAtomicExchange(IA21;vi3;i1;f1; (global float)

 0:48            'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

-0:48            Convert float to int (3-component vector of int)

+0:48            Convert float to int (temp 3-component vector of int)

 0:48              'in3' (smooth in 3-component vector of float)

 0:48            Constant:

 0:48              2 (const int)

@@ -147,128 +147,128 @@
 

 Shader version: 450

 0:? Sequence

-0:8  Function Definition: main( (void)

+0:8  Function Definition: main( (global void)

 0:8    Function Parameters: 

 0:10    Sequence

 0:10      Sequence

-0:10        move second child to first child (2-component vector of float)

-0:10          'v2' (2-component vector of float)

-0:10          dPdxFine (2-component vector of float)

+0:10        move second child to first child (temp 2-component vector of float)

+0:10          'v2' (temp 2-component vector of float)

+0:10          dPdxFine (global 2-component vector of float)

 0:10            'in2' (smooth in 2-component vector of float)

 0:11      Sequence

-0:11        move second child to first child (3-component vector of float)

-0:11          'v3' (3-component vector of float)

-0:11          dPdyCoarse (3-component vector of float)

+0:11        move second child to first child (temp 3-component vector of float)

+0:11          'v3' (temp 3-component vector of float)

+0:11          dPdyCoarse (global 3-component vector of float)

 0:11            'in3' (smooth in 3-component vector of float)

 0:12      Sequence

-0:12        move second child to first child (4-component vector of float)

-0:12          'v4' (4-component vector of float)

-0:12          fwidth (4-component vector of float)

+0:12        move second child to first child (temp 4-component vector of float)

+0:12          'v4' (temp 4-component vector of float)

+0:12          fwidth (global 4-component vector of float)

 0:12            'in4' (smooth in 4-component vector of float)

-0:13      move second child to first child (4-component vector of float)

-0:13        'v4' (4-component vector of float)

-0:13        dPdyFine (4-component vector of float)

+0:13      move second child to first child (temp 4-component vector of float)

+0:13        'v4' (temp 4-component vector of float)

+0:13        dPdyFine (global 4-component vector of float)

 0:13          'in4' (smooth in 4-component vector of float)

-0:14      move second child to first child (3-component vector of float)

-0:14        'v3' (3-component vector of float)

-0:14        dPdyFine (3-component vector of float)

+0:14      move second child to first child (temp 3-component vector of float)

+0:14        'v3' (temp 3-component vector of float)

+0:14        dPdyFine (global 3-component vector of float)

 0:14          'in3' (smooth in 3-component vector of float)

 0:15      Sequence

-0:15        move second child to first child (float)

-0:15          'f' (float)

-0:15          add (float)

-0:15            add (float)

-0:15              dPdx (float)

+0:15        move second child to first child (temp float)

+0:15          'f' (temp float)

+0:15          add (temp float)

+0:15            add (temp float)

+0:15              dPdx (global float)

 0:15                'in1' (smooth in float)

-0:15              dPdxFine (float)

+0:15              dPdxFine (global float)

 0:15                'in1' (smooth in float)

-0:15            dPdxCoarse (float)

+0:15            dPdxCoarse (global float)

 0:15              'in1' (smooth in float)

-0:16      move second child to first child (4-component vector of float)

-0:16        'v4' (4-component vector of float)

-0:16        add (4-component vector of float)

-0:16          fwidthCoarse (4-component vector of float)

+0:16      move second child to first child (temp 4-component vector of float)

+0:16        'v4' (temp 4-component vector of float)

+0:16        add (temp 4-component vector of float)

+0:16          fwidthCoarse (global 4-component vector of float)

 0:16            'in4' (smooth in 4-component vector of float)

-0:16          fwidthFine (4-component vector of float)

+0:16          fwidthFine (global 4-component vector of float)

 0:16            'in4' (smooth in 4-component vector of float)

 0:18      Sequence

-0:18        move second child to first child (float)

-0:18          'cull' (float)

-0:18          direct index (smooth float)

+0:18        move second child to first child (temp float)

+0:18          'cull' (temp float)

+0:18          direct index (smooth temp float)

 0:18            'gl_CullDistance' (smooth in 3-element array of float)

 0:18            Constant:

 0:18              2 (const int)

 0:19      Sequence

-0:19        move second child to first child (float)

-0:19          'consts' (float)

+0:19        move second child to first child (temp float)

+0:19          'consts' (temp float)

 0:19          Constant:

 0:19            20.000000

-0:21      Test condition and select (void)

+0:21      Test condition and select (temp void)

 0:21        Condition

 0:21        'gl_HelperInvocation' (in bool)

 0:21        true case

-0:22        Pre-Increment (4-component vector of float)

-0:22          'v4' (4-component vector of float)

+0:22        Pre-Increment (temp 4-component vector of float)

+0:22          'v4' (temp 4-component vector of float)

 0:24      Sequence

-0:24        move second child to first child (int)

-0:24          'sum' (int)

+0:24        move second child to first child (temp int)

+0:24          'sum' (temp int)

 0:24          Constant:

 0:24            32 (const int)

 0:32      Sequence

-0:32        move second child to first child (2-component vector of bool)

-0:32          'b2' (2-component vector of bool)

-0:32          mix (2-component vector of bool)

-0:32            Construct bvec2 (2-component vector of bool)

-0:32              'b1' (bool)

-0:32            Construct bvec2 (2-component vector of bool)

-0:32              'b3' (bool)

-0:32            Construct bvec2 (2-component vector of bool)

-0:32              'b' (bool)

+0:32        move second child to first child (temp 2-component vector of bool)

+0:32          'b2' (temp 2-component vector of bool)

+0:32          mix (global 2-component vector of bool)

+0:32            Construct bvec2 (temp 2-component vector of bool)

+0:32              'b1' (temp bool)

+0:32            Construct bvec2 (temp 2-component vector of bool)

+0:32              'b3' (temp bool)

+0:32            Construct bvec2 (temp 2-component vector of bool)

+0:32              'b' (temp bool)

 0:33      Sequence

-0:33        move second child to first child (uint)

-0:33          'um' (uint)

-0:33          mix (uint)

-0:33            'uin' (uint)

-0:33            'uin' (uint)

-0:33            'b' (bool)

+0:33        move second child to first child (temp uint)

+0:33          'um' (temp uint)

+0:33          mix (global uint)

+0:33            'uin' (temp uint)

+0:33            'uin' (temp uint)

+0:33            'b' (temp bool)

 0:34      Sequence

-0:34        move second child to first child (3-component vector of int)

-0:34          'im3' (3-component vector of int)

-0:34          mix (3-component vector of int)

-0:34            Construct ivec3 (3-component vector of int)

-0:34              Convert uint to int (int)

-0:34                'uin' (uint)

-0:34            Construct ivec3 (3-component vector of int)

-0:34              Convert uint to int (int)

-0:34                'uin' (uint)

-0:34            Construct bvec3 (3-component vector of bool)

-0:34              'b' (bool)

-0:42  Function Definition: foo( (void)

+0:34        move second child to first child (temp 3-component vector of int)

+0:34          'im3' (temp 3-component vector of int)

+0:34          mix (global 3-component vector of int)

+0:34            Construct ivec3 (temp 3-component vector of int)

+0:34              Convert uint to int (temp int)

+0:34                'uin' (temp uint)

+0:34            Construct ivec3 (temp 3-component vector of int)

+0:34              Convert uint to int (temp int)

+0:34                'uin' (temp uint)

+0:34            Construct bvec3 (temp 3-component vector of bool)

+0:34              'b' (temp bool)

+0:42  Function Definition: foo( (global void)

 0:42    Function Parameters: 

 0:44    Sequence

 0:44      Sequence

-0:44        move second child to first child (int)

-0:44          's' (int)

-0:44          Function Call: textureSamples(s21; (int)

+0:44        move second child to first child (temp int)

+0:44          's' (temp int)

+0:44          Function Call: textureSamples(s21; (global int)

 0:44            's2dms' (uniform sampler2DMS)

-0:45      add second child into first child (int)

-0:45        's' (int)

-0:45        Function Call: textureSamples(usA21; (int)

+0:45      add second child into first child (temp int)

+0:45        's' (temp int)

+0:45        Function Call: textureSamples(usA21; (global int)

 0:45          'us2dmsa' (uniform usampler2DMSArray)

-0:46      add second child into first child (int)

-0:46        's' (int)

-0:46        Function Call: imageSamples(iI21; (int)

+0:46      add second child into first child (temp int)

+0:46        's' (temp int)

+0:46        Function Call: imageSamples(iI21; (global int)

 0:46          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)

-0:47      add second child into first child (int)

-0:47        's' (int)

-0:47        Function Call: imageSamples(IA21; (int)

+0:47      add second child into first child (temp int)

+0:47        's' (temp int)

+0:47        Function Call: imageSamples(IA21; (global int)

 0:47          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

 0:48      Sequence

-0:48        move second child to first child (float)

-0:48          'f' (float)

-0:48          Function Call: imageAtomicExchange(IA21;vi3;i1;f1; (float)

+0:48        move second child to first child (temp float)

+0:48          'f' (temp float)

+0:48          Function Call: imageAtomicExchange(IA21;vi3;i1;f1; (global float)

 0:48            'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

-0:48            Convert float to int (3-component vector of int)

+0:48            Convert float to int (temp 3-component vector of int)

 0:48              'in3' (smooth in 3-component vector of float)

 0:48            Constant:

 0:48              2 (const int)

diff --git a/Test/baseResults/450.geom.out b/Test/baseResults/450.geom.out
index b367afc..e2b7b9f 100644
--- a/Test/baseResults/450.geom.out
+++ b/Test/baseResults/450.geom.out
@@ -7,20 +7,20 @@
 input primitive = none

 output primitive = none

 0:? Sequence

-0:11  Function Definition: main( (void)

+0:11  Function Definition: main( (global void)

 0:11    Function Parameters: 

 0:13    Sequence

-0:13      move second child to first child (float)

-0:13        direct index (layout(stream=0 ) float)

+0:13      move second child to first child (temp float)

+0:13        direct index (layout(stream=0 ) temp float)

 0:13          gl_CullDistance: direct index for structure (layout(stream=0 ) out implicitly-sized array of float)

 0:13            'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out implicitly-sized array of float gl_CullDistance})

 0:13            Constant:

 0:13              3 (const uint)

 0:13          Constant:

 0:13            2 (const int)

-0:13        direct index (float)

+0:13        direct index (temp float)

 0:13          gl_CullDistance: direct index for structure (in implicitly-sized array of float)

-0:13            direct index (block{in implicitly-sized array of float gl_CullDistance})

+0:13            direct index (temp block{in implicitly-sized array of float gl_CullDistance})

 0:13              'gl_in' (in implicitly-sized array of block{in implicitly-sized array of float gl_CullDistance})

 0:13              Constant:

 0:13                1 (const int)

@@ -45,20 +45,20 @@
 input primitive = none

 output primitive = none

 0:? Sequence

-0:11  Function Definition: main( (void)

+0:11  Function Definition: main( (global void)

 0:11    Function Parameters: 

 0:13    Sequence

-0:13      move second child to first child (float)

-0:13        direct index (layout(stream=0 ) float)

+0:13      move second child to first child (temp float)

+0:13        direct index (layout(stream=0 ) temp float)

 0:13          gl_CullDistance: direct index for structure (layout(stream=0 ) out 3-element array of float)

 0:13            'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out 3-element array of float gl_CullDistance})

 0:13            Constant:

 0:13              3 (const uint)

 0:13          Constant:

 0:13            2 (const int)

-0:13        direct index (float)

+0:13        direct index (temp float)

 0:13          gl_CullDistance: direct index for structure (in 1-element array of float)

-0:13            direct index (block{in 1-element array of float gl_CullDistance})

+0:13            direct index (temp block{in 1-element array of float gl_CullDistance})

 0:13              'gl_in' (in 2-element array of block{in 1-element array of float gl_CullDistance})

 0:13              Constant:

 0:13                1 (const int)

diff --git a/Test/baseResults/450.tesc.out b/Test/baseResults/450.tesc.out
index df54fa9..9f7be0f 100644
--- a/Test/baseResults/450.tesc.out
+++ b/Test/baseResults/450.tesc.out
@@ -4,13 +4,13 @@
 Shader version: 450

 vertices = 0

 0:? Sequence

-0:11  Function Definition: main( (void)

+0:11  Function Definition: main( (global void)

 0:11    Function Parameters: 

 0:13    Sequence

-0:13      move second child to first child (float)

-0:13        direct index (float)

+0:13      move second child to first child (temp float)

+0:13        direct index (temp float)

 0:13          gl_CullDistance: direct index for structure (out implicitly-sized array of float)

-0:13            direct index (block{out implicitly-sized array of float gl_CullDistance})

+0:13            direct index (temp block{out implicitly-sized array of float gl_CullDistance})

 0:13              'gl_out' (out implicitly-sized array of block{out implicitly-sized array of float gl_CullDistance})

 0:13              Constant:

 0:13                0 (const int)

@@ -18,9 +18,9 @@
 0:13              0 (const int)

 0:13          Constant:

 0:13            2 (const int)

-0:13        direct index (float)

+0:13        direct index (temp float)

 0:13          gl_CullDistance: direct index for structure (in implicitly-sized array of float)

-0:13            direct index (block{in implicitly-sized array of float gl_CullDistance})

+0:13            direct index (temp block{in implicitly-sized array of float gl_CullDistance})

 0:13              'gl_in' (in 32-element array of block{in implicitly-sized array of float gl_CullDistance})

 0:13              Constant:

 0:13                1 (const int)

@@ -40,13 +40,13 @@
 Shader version: 450

 vertices = 0

 0:? Sequence

-0:11  Function Definition: main( (void)

+0:11  Function Definition: main( (global void)

 0:11    Function Parameters: 

 0:13    Sequence

-0:13      move second child to first child (float)

-0:13        direct index (float)

+0:13      move second child to first child (temp float)

+0:13        direct index (temp float)

 0:13          gl_CullDistance: direct index for structure (out 1-element array of float)

-0:13            direct index (block{out 1-element array of float gl_CullDistance})

+0:13            direct index (temp block{out 1-element array of float gl_CullDistance})

 0:13              'gl_out' (out 1-element array of block{out 1-element array of float gl_CullDistance})

 0:13              Constant:

 0:13                0 (const int)

@@ -54,9 +54,9 @@
 0:13              0 (const int)

 0:13          Constant:

 0:13            2 (const int)

-0:13        direct index (float)

+0:13        direct index (temp float)

 0:13          gl_CullDistance: direct index for structure (in 1-element array of float)

-0:13            direct index (block{in 1-element array of float gl_CullDistance})

+0:13            direct index (temp block{in 1-element array of float gl_CullDistance})

 0:13              'gl_in' (in 32-element array of block{in 1-element array of float gl_CullDistance})

 0:13              Constant:

 0:13                1 (const int)

diff --git a/Test/baseResults/450.tese.out b/Test/baseResults/450.tese.out
index ef2e1c7..7c0f70c 100644
--- a/Test/baseResults/450.tese.out
+++ b/Test/baseResults/450.tese.out
@@ -6,20 +6,20 @@
 vertex spacing = none

 triangle order = none

 0:? Sequence

-0:11  Function Definition: main( (void)

+0:11  Function Definition: main( (global void)

 0:11    Function Parameters: 

 0:13    Sequence

-0:13      move second child to first child (float)

-0:13        direct index (float)

+0:13      move second child to first child (temp float)

+0:13        direct index (temp float)

 0:13          gl_CullDistance: direct index for structure (out implicitly-sized array of float)

 0:13            'anon@0' (out block{out implicitly-sized array of float gl_CullDistance})

 0:13            Constant:

 0:13              3 (const uint)

 0:13          Constant:

 0:13            2 (const int)

-0:13        direct index (float)

+0:13        direct index (temp float)

 0:13          gl_CullDistance: direct index for structure (in implicitly-sized array of float)

-0:13            direct index (block{in implicitly-sized array of float gl_CullDistance})

+0:13            direct index (temp block{in implicitly-sized array of float gl_CullDistance})

 0:13              'gl_in' (in 32-element array of block{in implicitly-sized array of float gl_CullDistance})

 0:13              Constant:

 0:13                1 (const int)

@@ -41,20 +41,20 @@
 vertex spacing = equal_spacing

 triangle order = ccw

 0:? Sequence

-0:11  Function Definition: main( (void)

+0:11  Function Definition: main( (global void)

 0:11    Function Parameters: 

 0:13    Sequence

-0:13      move second child to first child (float)

-0:13        direct index (float)

+0:13      move second child to first child (temp float)

+0:13        direct index (temp float)

 0:13          gl_CullDistance: direct index for structure (out 3-element array of float)

 0:13            'anon@0' (out block{out 3-element array of float gl_CullDistance})

 0:13            Constant:

 0:13              3 (const uint)

 0:13          Constant:

 0:13            2 (const int)

-0:13        direct index (float)

+0:13        direct index (temp float)

 0:13          gl_CullDistance: direct index for structure (in 1-element array of float)

-0:13            direct index (block{in 1-element array of float gl_CullDistance})

+0:13            direct index (temp block{in 1-element array of float gl_CullDistance})

 0:13              'gl_in' (in 32-element array of block{in 1-element array of float gl_CullDistance})

 0:13              Constant:

 0:13                1 (const int)

diff --git a/Test/baseResults/450.vert.out b/Test/baseResults/450.vert.out
index 4fd5d90..5298360 100644
--- a/Test/baseResults/450.vert.out
+++ b/Test/baseResults/450.vert.out
@@ -7,11 +7,11 @@
 

 Shader version: 450

 ERROR: node is still EOpNull!

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:9    Sequence

-0:9      move second child to first child (float)

-0:9        direct index (float)

+0:9      move second child to first child (temp float)

+0:9        direct index (temp float)

 0:9          gl_CullDistance: direct index for structure (out implicitly-sized array of float)

 0:9            'anon@0' (out block{out implicitly-sized array of float gl_CullDistance})

 0:9            Constant:

@@ -26,11 +26,11 @@
 0:?     'outo' (smooth out sampler2D)

 0:?     'outa' (smooth out 4-element array of float)

 0:?     'outaa' (smooth out 4-element array of float)

-0:?     'outs' (smooth out structure{float f})

-0:?     'outasa' (smooth out 4-element array of structure{float f})

-0:?     'outsa' (smooth out 4-element array of structure{float f})

-0:?     'outSA' (smooth out structure{4-element array of float f})

-0:?     'outSS' (smooth out structure{float f, structure{float f} s})

+0:?     'outs' (smooth out structure{global float f})

+0:?     'outasa' (smooth out 4-element array of structure{global float f})

+0:?     'outsa' (smooth out 4-element array of structure{global float f})

+0:?     'outSA' (smooth out structure{global 4-element array of float f})

+0:?     'outSS' (smooth out structure{global float f, global structure{global float f} s})

 0:?     'gl_VertexID' (gl_VertexId int)

 0:?     'gl_InstanceID' (gl_InstanceId int)

 

@@ -40,11 +40,11 @@
 

 Shader version: 450

 ERROR: node is still EOpNull!

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:9    Sequence

-0:9      move second child to first child (float)

-0:9        direct index (float)

+0:9      move second child to first child (temp float)

+0:9        direct index (temp float)

 0:9          gl_CullDistance: direct index for structure (out 3-element array of float)

 0:9            'anon@0' (out block{out 3-element array of float gl_CullDistance})

 0:9            Constant:

@@ -59,11 +59,11 @@
 0:?     'outo' (smooth out sampler2D)

 0:?     'outa' (smooth out 4-element array of float)

 0:?     'outaa' (smooth out 4-element array of float)

-0:?     'outs' (smooth out structure{float f})

-0:?     'outasa' (smooth out 4-element array of structure{float f})

-0:?     'outsa' (smooth out 4-element array of structure{float f})

-0:?     'outSA' (smooth out structure{4-element array of float f})

-0:?     'outSS' (smooth out structure{float f, structure{float f} s})

+0:?     'outs' (smooth out structure{global float f})

+0:?     'outasa' (smooth out 4-element array of structure{global float f})

+0:?     'outsa' (smooth out 4-element array of structure{global float f})

+0:?     'outSA' (smooth out structure{global 4-element array of float f})

+0:?     'outSS' (smooth out structure{global float f, global structure{global float f} s})

 0:?     'gl_VertexID' (gl_VertexId int)

 0:?     'gl_InstanceID' (gl_InstanceId int)

 

diff --git a/Test/baseResults/Operations.frag.out b/Test/baseResults/Operations.frag.out
index 5381959..7d51752 100644
--- a/Test/baseResults/Operations.frag.out
+++ b/Test/baseResults/Operations.frag.out
@@ -2,348 +2,348 @@
 

 Shader version: 130

 0:? Sequence

-0:15  Function Definition: main( (void)

+0:15  Function Definition: main( (global void)

 0:15    Function Parameters: 

 0:?     Sequence

-0:27      move second child to first child (4-component vector of float)

-0:27        'v' (4-component vector of float)

-0:27        radians (4-component vector of float)

+0:27      move second child to first child (temp 4-component vector of float)

+0:27        'v' (temp 4-component vector of float)

+0:27        radians (global 4-component vector of float)

 0:27          'uv4' (uniform 4-component vector of float)

-0:28      add second child into first child (4-component vector of float)

-0:28        'v' (4-component vector of float)

-0:28        degrees (4-component vector of float)

-0:28          'v' (4-component vector of float)

-0:29      add second child into first child (4-component vector of float)

-0:29        'v' (4-component vector of float)

-0:29        Comma (4-component vector of float)

-0:29          move second child to first child (int)

-0:29            'i' (int)

-0:29            component-wise multiply (int)

+0:28      add second child into first child (temp 4-component vector of float)

+0:28        'v' (temp 4-component vector of float)

+0:28        degrees (global 4-component vector of float)

+0:28          'v' (temp 4-component vector of float)

+0:29      add second child into first child (temp 4-component vector of float)

+0:29        'v' (temp 4-component vector of float)

+0:29        Comma (temp 4-component vector of float)

+0:29          move second child to first child (temp int)

+0:29            'i' (temp int)

+0:29            component-wise multiply (temp int)

 0:29              'ui' (uniform int)

 0:29              'ui' (uniform int)

-0:29          sine (4-component vector of float)

-0:29            'v' (4-component vector of float)

-0:30      add second child into first child (4-component vector of float)

-0:30        'v' (4-component vector of float)

-0:30        cosine (4-component vector of float)

-0:30          'v' (4-component vector of float)

-0:31      add second child into first child (4-component vector of float)

-0:31        'v' (4-component vector of float)

-0:31        tangent (4-component vector of float)

-0:31          'v' (4-component vector of float)

-0:32      add second child into first child (4-component vector of float)

-0:32        'v' (4-component vector of float)

-0:32        arc sine (4-component vector of float)

-0:32          'v' (4-component vector of float)

-0:33      add second child into first child (4-component vector of float)

-0:33        'v' (4-component vector of float)

-0:33        arc cosine (4-component vector of float)

-0:33          'v' (4-component vector of float)

-0:35      add second child into first child (4-component vector of float)

-0:35        'v' (4-component vector of float)

-0:35        arc tangent (4-component vector of float)

-0:35          'v' (4-component vector of float)

-0:36      add second child into first child (4-component vector of float)

-0:36        'v' (4-component vector of float)

-0:36        hyp. sine (4-component vector of float)

-0:36          'v' (4-component vector of float)

-0:37      add second child into first child (4-component vector of float)

-0:37        'v' (4-component vector of float)

-0:37        hyp. cosine (4-component vector of float)

-0:37          'v' (4-component vector of float)

-0:38      add second child into first child (4-component vector of float)

-0:38        'v' (4-component vector of float)

-0:38        hyp. tangent (4-component vector of float)

-0:38          'v' (4-component vector of float)

-0:39      add second child into first child (4-component vector of float)

-0:39        'v' (4-component vector of float)

-0:39        arc hyp. sine (4-component vector of float)

-0:39          'v' (4-component vector of float)

-0:40      add second child into first child (4-component vector of float)

-0:40        'v' (4-component vector of float)

-0:40        arc hyp. cosine (4-component vector of float)

-0:40          'v' (4-component vector of float)

-0:41      add second child into first child (4-component vector of float)

-0:41        'v' (4-component vector of float)

-0:41        arc hyp. tangent (4-component vector of float)

-0:41          'v' (4-component vector of float)

-0:43      add second child into first child (4-component vector of float)

-0:43        'v' (4-component vector of float)

-0:43        pow (4-component vector of float)

-0:43          'v' (4-component vector of float)

-0:43          'v' (4-component vector of float)

-0:44      add second child into first child (4-component vector of float)

-0:44        'v' (4-component vector of float)

-0:44        exp (4-component vector of float)

-0:44          'v' (4-component vector of float)

-0:45      add second child into first child (4-component vector of float)

-0:45        'v' (4-component vector of float)

-0:45        log (4-component vector of float)

-0:45          'v' (4-component vector of float)

-0:46      add second child into first child (4-component vector of float)

-0:46        'v' (4-component vector of float)

-0:46        exp2 (4-component vector of float)

-0:46          'v' (4-component vector of float)

-0:47      add second child into first child (4-component vector of float)

-0:47        'v' (4-component vector of float)

-0:47        log2 (4-component vector of float)

-0:47          'v' (4-component vector of float)

-0:48      add second child into first child (4-component vector of float)

-0:48        'v' (4-component vector of float)

-0:48        sqrt (4-component vector of float)

-0:48          'v' (4-component vector of float)

-0:49      add second child into first child (4-component vector of float)

-0:49        'v' (4-component vector of float)

-0:49        inverse sqrt (4-component vector of float)

-0:49          'v' (4-component vector of float)

-0:50      add second child into first child (4-component vector of float)

-0:50        'v' (4-component vector of float)

-0:50        Absolute value (4-component vector of float)

-0:50          'v' (4-component vector of float)

-0:51      add second child into first child (4-component vector of float)

-0:51        'v' (4-component vector of float)

-0:51        Sign (4-component vector of float)

-0:51          'v' (4-component vector of float)

-0:52      add second child into first child (4-component vector of float)

-0:52        'v' (4-component vector of float)

-0:52        Floor (4-component vector of float)

-0:52          'v' (4-component vector of float)

-0:60      add second child into first child (4-component vector of float)

-0:60        'v' (4-component vector of float)

-0:60        Ceiling (4-component vector of float)

-0:60          'v' (4-component vector of float)

-0:61      add second child into first child (4-component vector of float)

-0:61        'v' (4-component vector of float)

-0:61        Fraction (4-component vector of float)

-0:61          'v' (4-component vector of float)

-0:62      add second child into first child (4-component vector of float)

-0:62        'v' (4-component vector of float)

-0:62        mod (4-component vector of float)

-0:62          'v' (4-component vector of float)

-0:62          'v' (4-component vector of float)

-0:63      add second child into first child (4-component vector of float)

-0:63        'v' (4-component vector of float)

-0:63        mod (4-component vector of float)

-0:63          'v' (4-component vector of float)

-0:63          direct index (float)

-0:63            'v' (4-component vector of float)

+0:29          sine (global 4-component vector of float)

+0:29            'v' (temp 4-component vector of float)

+0:30      add second child into first child (temp 4-component vector of float)

+0:30        'v' (temp 4-component vector of float)

+0:30        cosine (global 4-component vector of float)

+0:30          'v' (temp 4-component vector of float)

+0:31      add second child into first child (temp 4-component vector of float)

+0:31        'v' (temp 4-component vector of float)

+0:31        tangent (global 4-component vector of float)

+0:31          'v' (temp 4-component vector of float)

+0:32      add second child into first child (temp 4-component vector of float)

+0:32        'v' (temp 4-component vector of float)

+0:32        arc sine (global 4-component vector of float)

+0:32          'v' (temp 4-component vector of float)

+0:33      add second child into first child (temp 4-component vector of float)

+0:33        'v' (temp 4-component vector of float)

+0:33        arc cosine (global 4-component vector of float)

+0:33          'v' (temp 4-component vector of float)

+0:35      add second child into first child (temp 4-component vector of float)

+0:35        'v' (temp 4-component vector of float)

+0:35        arc tangent (global 4-component vector of float)

+0:35          'v' (temp 4-component vector of float)

+0:36      add second child into first child (temp 4-component vector of float)

+0:36        'v' (temp 4-component vector of float)

+0:36        hyp. sine (global 4-component vector of float)

+0:36          'v' (temp 4-component vector of float)

+0:37      add second child into first child (temp 4-component vector of float)

+0:37        'v' (temp 4-component vector of float)

+0:37        hyp. cosine (global 4-component vector of float)

+0:37          'v' (temp 4-component vector of float)

+0:38      add second child into first child (temp 4-component vector of float)

+0:38        'v' (temp 4-component vector of float)

+0:38        hyp. tangent (global 4-component vector of float)

+0:38          'v' (temp 4-component vector of float)

+0:39      add second child into first child (temp 4-component vector of float)

+0:39        'v' (temp 4-component vector of float)

+0:39        arc hyp. sine (global 4-component vector of float)

+0:39          'v' (temp 4-component vector of float)

+0:40      add second child into first child (temp 4-component vector of float)

+0:40        'v' (temp 4-component vector of float)

+0:40        arc hyp. cosine (global 4-component vector of float)

+0:40          'v' (temp 4-component vector of float)

+0:41      add second child into first child (temp 4-component vector of float)

+0:41        'v' (temp 4-component vector of float)

+0:41        arc hyp. tangent (global 4-component vector of float)

+0:41          'v' (temp 4-component vector of float)

+0:43      add second child into first child (temp 4-component vector of float)

+0:43        'v' (temp 4-component vector of float)

+0:43        pow (global 4-component vector of float)

+0:43          'v' (temp 4-component vector of float)

+0:43          'v' (temp 4-component vector of float)

+0:44      add second child into first child (temp 4-component vector of float)

+0:44        'v' (temp 4-component vector of float)

+0:44        exp (global 4-component vector of float)

+0:44          'v' (temp 4-component vector of float)

+0:45      add second child into first child (temp 4-component vector of float)

+0:45        'v' (temp 4-component vector of float)

+0:45        log (global 4-component vector of float)

+0:45          'v' (temp 4-component vector of float)

+0:46      add second child into first child (temp 4-component vector of float)

+0:46        'v' (temp 4-component vector of float)

+0:46        exp2 (global 4-component vector of float)

+0:46          'v' (temp 4-component vector of float)

+0:47      add second child into first child (temp 4-component vector of float)

+0:47        'v' (temp 4-component vector of float)

+0:47        log2 (global 4-component vector of float)

+0:47          'v' (temp 4-component vector of float)

+0:48      add second child into first child (temp 4-component vector of float)

+0:48        'v' (temp 4-component vector of float)

+0:48        sqrt (global 4-component vector of float)

+0:48          'v' (temp 4-component vector of float)

+0:49      add second child into first child (temp 4-component vector of float)

+0:49        'v' (temp 4-component vector of float)

+0:49        inverse sqrt (global 4-component vector of float)

+0:49          'v' (temp 4-component vector of float)

+0:50      add second child into first child (temp 4-component vector of float)

+0:50        'v' (temp 4-component vector of float)

+0:50        Absolute value (global 4-component vector of float)

+0:50          'v' (temp 4-component vector of float)

+0:51      add second child into first child (temp 4-component vector of float)

+0:51        'v' (temp 4-component vector of float)

+0:51        Sign (global 4-component vector of float)

+0:51          'v' (temp 4-component vector of float)

+0:52      add second child into first child (temp 4-component vector of float)

+0:52        'v' (temp 4-component vector of float)

+0:52        Floor (global 4-component vector of float)

+0:52          'v' (temp 4-component vector of float)

+0:60      add second child into first child (temp 4-component vector of float)

+0:60        'v' (temp 4-component vector of float)

+0:60        Ceiling (global 4-component vector of float)

+0:60          'v' (temp 4-component vector of float)

+0:61      add second child into first child (temp 4-component vector of float)

+0:61        'v' (temp 4-component vector of float)

+0:61        Fraction (global 4-component vector of float)

+0:61          'v' (temp 4-component vector of float)

+0:62      add second child into first child (temp 4-component vector of float)

+0:62        'v' (temp 4-component vector of float)

+0:62        mod (global 4-component vector of float)

+0:62          'v' (temp 4-component vector of float)

+0:62          'v' (temp 4-component vector of float)

+0:63      add second child into first child (temp 4-component vector of float)

+0:63        'v' (temp 4-component vector of float)

+0:63        mod (global 4-component vector of float)

+0:63          'v' (temp 4-component vector of float)

+0:63          direct index (temp float)

+0:63            'v' (temp 4-component vector of float)

 0:63            Constant:

 0:63              0 (const int)

-0:69      add second child into first child (4-component vector of float)

-0:69        'v' (4-component vector of float)

-0:69        min (4-component vector of float)

-0:69          'v' (4-component vector of float)

+0:69      add second child into first child (temp 4-component vector of float)

+0:69        'v' (temp 4-component vector of float)

+0:69        min (global 4-component vector of float)

+0:69          'v' (temp 4-component vector of float)

 0:69          'uv4' (uniform 4-component vector of float)

-0:70      add second child into first child (4-component vector of float)

-0:70        'v' (4-component vector of float)

-0:70        max (4-component vector of float)

-0:70          'v' (4-component vector of float)

+0:70      add second child into first child (temp 4-component vector of float)

+0:70        'v' (temp 4-component vector of float)

+0:70        max (global 4-component vector of float)

+0:70          'v' (temp 4-component vector of float)

 0:70          'uv4' (uniform 4-component vector of float)

-0:71      add second child into first child (4-component vector of float)

-0:71        'v' (4-component vector of float)

-0:71        clamp (4-component vector of float)

-0:71          'v' (4-component vector of float)

+0:71      add second child into first child (temp 4-component vector of float)

+0:71        'v' (temp 4-component vector of float)

+0:71        clamp (global 4-component vector of float)

+0:71          'v' (temp 4-component vector of float)

 0:71          'uv4' (uniform 4-component vector of float)

 0:71          'uv4' (uniform 4-component vector of float)

-0:72      add second child into first child (4-component vector of float)

-0:72        'v' (4-component vector of float)

-0:72        mix (4-component vector of float)

-0:72          'v' (4-component vector of float)

-0:72          'v' (4-component vector of float)

-0:72          'v' (4-component vector of float)

-0:86      add second child into first child (4-component vector of float)

-0:86        'v' (4-component vector of float)

-0:86        step (4-component vector of float)

-0:86          'v' (4-component vector of float)

-0:86          'v' (4-component vector of float)

-0:87      add second child into first child (4-component vector of float)

-0:87        'v' (4-component vector of float)

-0:87        smoothstep (4-component vector of float)

-0:87          'v' (4-component vector of float)

-0:87          'v' (4-component vector of float)

-0:87          'v' (4-component vector of float)

-0:88      add second child into first child (4-component vector of float)

-0:88        'v' (4-component vector of float)

-0:88        step (4-component vector of float)

+0:72      add second child into first child (temp 4-component vector of float)

+0:72        'v' (temp 4-component vector of float)

+0:72        mix (global 4-component vector of float)

+0:72          'v' (temp 4-component vector of float)

+0:72          'v' (temp 4-component vector of float)

+0:72          'v' (temp 4-component vector of float)

+0:86      add second child into first child (temp 4-component vector of float)

+0:86        'v' (temp 4-component vector of float)

+0:86        step (global 4-component vector of float)

+0:86          'v' (temp 4-component vector of float)

+0:86          'v' (temp 4-component vector of float)

+0:87      add second child into first child (temp 4-component vector of float)

+0:87        'v' (temp 4-component vector of float)

+0:87        smoothstep (global 4-component vector of float)

+0:87          'v' (temp 4-component vector of float)

+0:87          'v' (temp 4-component vector of float)

+0:87          'v' (temp 4-component vector of float)

+0:88      add second child into first child (temp 4-component vector of float)

+0:88        'v' (temp 4-component vector of float)

+0:88        step (global 4-component vector of float)

 0:88          'uf' (uniform float)

-0:88          'v' (4-component vector of float)

-0:89      add second child into first child (4-component vector of float)

-0:89        'v' (4-component vector of float)

-0:89        smoothstep (4-component vector of float)

+0:88          'v' (temp 4-component vector of float)

+0:89      add second child into first child (temp 4-component vector of float)

+0:89        'v' (temp 4-component vector of float)

+0:89        smoothstep (global 4-component vector of float)

 0:89          'uf' (uniform float)

 0:89          'uf' (uniform float)

-0:89          'v' (4-component vector of float)

-0:90      add second child into first child (4-component vector of float)

-0:90        'v' (4-component vector of float)

-0:90        normalize (4-component vector of float)

-0:90          'v' (4-component vector of float)

-0:91      add second child into first child (4-component vector of float)

-0:91        'v' (4-component vector of float)

-0:91        face-forward (4-component vector of float)

-0:91          'v' (4-component vector of float)

-0:91          'v' (4-component vector of float)

-0:91          'v' (4-component vector of float)

-0:92      add second child into first child (4-component vector of float)

-0:92        'v' (4-component vector of float)

-0:92        reflect (4-component vector of float)

-0:92          'v' (4-component vector of float)

-0:92          'v' (4-component vector of float)

-0:93      add second child into first child (4-component vector of float)

-0:93        'v' (4-component vector of float)

-0:93        refract (4-component vector of float)

-0:93          'v' (4-component vector of float)

-0:93          'v' (4-component vector of float)

+0:89          'v' (temp 4-component vector of float)

+0:90      add second child into first child (temp 4-component vector of float)

+0:90        'v' (temp 4-component vector of float)

+0:90        normalize (global 4-component vector of float)

+0:90          'v' (temp 4-component vector of float)

+0:91      add second child into first child (temp 4-component vector of float)

+0:91        'v' (temp 4-component vector of float)

+0:91        face-forward (global 4-component vector of float)

+0:91          'v' (temp 4-component vector of float)

+0:91          'v' (temp 4-component vector of float)

+0:91          'v' (temp 4-component vector of float)

+0:92      add second child into first child (temp 4-component vector of float)

+0:92        'v' (temp 4-component vector of float)

+0:92        reflect (global 4-component vector of float)

+0:92          'v' (temp 4-component vector of float)

+0:92          'v' (temp 4-component vector of float)

+0:93      add second child into first child (temp 4-component vector of float)

+0:93        'v' (temp 4-component vector of float)

+0:93        refract (global 4-component vector of float)

+0:93          'v' (temp 4-component vector of float)

+0:93          'v' (temp 4-component vector of float)

 0:93          'uf' (uniform float)

-0:94      add second child into first child (4-component vector of float)

-0:94        'v' (4-component vector of float)

-0:94        dPdx (4-component vector of float)

-0:94          'v' (4-component vector of float)

-0:95      add second child into first child (4-component vector of float)

-0:95        'v' (4-component vector of float)

-0:95        dPdy (4-component vector of float)

-0:95          'v' (4-component vector of float)

-0:96      add second child into first child (4-component vector of float)

-0:96        'v' (4-component vector of float)

-0:96        fwidth (4-component vector of float)

-0:96          'v' (4-component vector of float)

-0:130      move second child to first child (bool)

-0:130        'b' (bool)

-0:130        any (bool)

-0:130          Compare Less Than (4-component vector of bool)

-0:130            'v' (4-component vector of float)

+0:94      add second child into first child (temp 4-component vector of float)

+0:94        'v' (temp 4-component vector of float)

+0:94        dPdx (global 4-component vector of float)

+0:94          'v' (temp 4-component vector of float)

+0:95      add second child into first child (temp 4-component vector of float)

+0:95        'v' (temp 4-component vector of float)

+0:95        dPdy (global 4-component vector of float)

+0:95          'v' (temp 4-component vector of float)

+0:96      add second child into first child (temp 4-component vector of float)

+0:96        'v' (temp 4-component vector of float)

+0:96        fwidth (global 4-component vector of float)

+0:96          'v' (temp 4-component vector of float)

+0:130      move second child to first child (temp bool)

+0:130        'b' (temp bool)

+0:130        any (global bool)

+0:130          Compare Less Than (global 4-component vector of bool)

+0:130            'v' (temp 4-component vector of float)

 0:130            'uv4' (uniform 4-component vector of float)

-0:131      move second child to first child (bool)

-0:131        'b' (bool)

-0:131        logical-and (bool)

-0:131          'b' (bool)

-0:131          any (bool)

-0:131            Compare Less Than or Equal (4-component vector of bool)

-0:131              'v' (4-component vector of float)

+0:131      move second child to first child (temp bool)

+0:131        'b' (temp bool)

+0:131        logical-and (temp bool)

+0:131          'b' (temp bool)

+0:131          any (global bool)

+0:131            Compare Less Than or Equal (global 4-component vector of bool)

+0:131              'v' (temp 4-component vector of float)

 0:131              'uv4' (uniform 4-component vector of float)

-0:132      move second child to first child (bool)

-0:132        'b' (bool)

-0:132        logical-and (bool)

-0:132          'b' (bool)

-0:132          any (bool)

-0:132            Compare Greater Than (4-component vector of bool)

-0:132              'v' (4-component vector of float)

+0:132      move second child to first child (temp bool)

+0:132        'b' (temp bool)

+0:132        logical-and (temp bool)

+0:132          'b' (temp bool)

+0:132          any (global bool)

+0:132            Compare Greater Than (global 4-component vector of bool)

+0:132              'v' (temp 4-component vector of float)

 0:132              'uv4' (uniform 4-component vector of float)

-0:133      move second child to first child (bool)

-0:133        'b' (bool)

-0:133        logical-and (bool)

-0:133          'b' (bool)

-0:133          any (bool)

-0:133            Compare Greater Than or Equal (4-component vector of bool)

-0:133              'v' (4-component vector of float)

+0:133      move second child to first child (temp bool)

+0:133        'b' (temp bool)

+0:133        logical-and (temp bool)

+0:133          'b' (temp bool)

+0:133          any (global bool)

+0:133            Compare Greater Than or Equal (global 4-component vector of bool)

+0:133              'v' (temp 4-component vector of float)

 0:133              'uv4' (uniform 4-component vector of float)

-0:134      move second child to first child (bool)

-0:134        'b' (bool)

-0:134        logical-and (bool)

-0:134          'b' (bool)

-0:134          any (bool)

-0:134            Equal (4-component vector of bool)

+0:134      move second child to first child (temp bool)

+0:134        'b' (temp bool)

+0:134        logical-and (temp bool)

+0:134          'b' (temp bool)

+0:134          any (global bool)

+0:134            Equal (global 4-component vector of bool)

 0:134              'ub41' (uniform 4-component vector of bool)

 0:134              'ub42' (uniform 4-component vector of bool)

-0:135      move second child to first child (bool)

-0:135        'b' (bool)

-0:135        logical-and (bool)

-0:135          'b' (bool)

-0:135          any (bool)

-0:135            NotEqual (4-component vector of bool)

+0:135      move second child to first child (temp bool)

+0:135        'b' (temp bool)

+0:135        logical-and (temp bool)

+0:135          'b' (temp bool)

+0:135          any (global bool)

+0:135            NotEqual (global 4-component vector of bool)

 0:135              'ub41' (uniform 4-component vector of bool)

 0:135              'ub42' (uniform 4-component vector of bool)

-0:136      move second child to first child (bool)

-0:136        'b' (bool)

-0:136        logical-and (bool)

-0:136          'b' (bool)

-0:136          any (bool)

+0:136      move second child to first child (temp bool)

+0:136        'b' (temp bool)

+0:136        logical-and (temp bool)

+0:136          'b' (temp bool)

+0:136          any (global bool)

 0:136            'ub41' (uniform 4-component vector of bool)

-0:137      move second child to first child (bool)

-0:137        'b' (bool)

-0:137        logical-and (bool)

-0:137          'b' (bool)

-0:137          all (bool)

+0:137      move second child to first child (temp bool)

+0:137        'b' (temp bool)

+0:137        logical-and (temp bool)

+0:137          'b' (temp bool)

+0:137          all (global bool)

 0:137            'ub41' (uniform 4-component vector of bool)

-0:138      move second child to first child (bool)

-0:138        'b' (bool)

-0:138        logical-and (bool)

-0:138          'b' (bool)

-0:138          any (bool)

-0:138            Negate conditional (4-component vector of bool)

+0:138      move second child to first child (temp bool)

+0:138        'b' (temp bool)

+0:138        logical-and (temp bool)

+0:138          'b' (temp bool)

+0:138          any (global bool)

+0:138            Negate conditional (global 4-component vector of bool)

 0:138              'ub41' (uniform 4-component vector of bool)

-0:140      move second child to first child (int)

-0:140        'i' (int)

-0:140        divide (int)

-0:140          subtract (int)

-0:140            component-wise multiply (int)

-0:140              add (int)

-0:140                'i' (int)

+0:140      move second child to first child (temp int)

+0:140        'i' (temp int)

+0:140        divide (temp int)

+0:140          subtract (temp int)

+0:140            component-wise multiply (temp int)

+0:140              add (temp int)

+0:140                'i' (temp int)

 0:140                'ui' (uniform int)

-0:140              'i' (int)

+0:140              'i' (temp int)

 0:140            'ui' (uniform int)

-0:140          'i' (int)

-0:141      move second child to first child (int)

-0:141        'i' (int)

-0:141        mod (int)

-0:141          'i' (int)

+0:140          'i' (temp int)

+0:141      move second child to first child (temp int)

+0:141        'i' (temp int)

+0:141        mod (temp int)

+0:141          'i' (temp int)

 0:141          'ui' (uniform int)

-0:142      Test condition and select (void)

+0:142      Test condition and select (temp void)

 0:142        Condition

-0:142        logical-or (bool)

-0:142          Compare Equal (bool)

-0:142            'i' (int)

+0:142        logical-or (temp bool)

+0:142          Compare Equal (temp bool)

+0:142            'i' (temp int)

 0:142            'ui' (uniform int)

-0:142          logical-xor (bool)

-0:142            logical-and (bool)

-0:142              Compare Not Equal (bool)

-0:142                'i' (int)

+0:142          logical-xor (temp bool)

+0:142            logical-and (temp bool)

+0:142              Compare Not Equal (temp bool)

+0:142                'i' (temp int)

 0:142                'ui' (uniform int)

-0:142              Compare Equal (bool)

-0:142                'i' (int)

+0:142              Compare Equal (temp bool)

+0:142                'i' (temp int)

 0:142                'ui' (uniform int)

-0:142            Compare Not Equal (bool)

-0:142              'i' (int)

+0:142            Compare Not Equal (temp bool)

+0:142              'i' (temp int)

 0:142              Constant:

 0:142                2 (const int)

 0:142        true case

-0:143        Pre-Increment (int)

-0:143          'i' (int)

-0:145      move second child to first child (float)

-0:145        'f' (float)

-0:145        divide (float)

-0:145          subtract (float)

-0:145            component-wise multiply (float)

-0:145              add (float)

+0:143        Pre-Increment (temp int)

+0:143          'i' (temp int)

+0:145      move second child to first child (temp float)

+0:145        'f' (temp float)

+0:145        divide (temp float)

+0:145          subtract (temp float)

+0:145            component-wise multiply (temp float)

+0:145              add (temp float)

 0:145                'uf' (uniform float)

 0:145                'uf' (uniform float)

 0:145              'uf' (uniform float)

 0:145            'uf' (uniform float)

 0:145          'uf' (uniform float)

-0:147      add second child into first child (float)

-0:147        'f' (float)

-0:147        length (float)

-0:147          'v' (4-component vector of float)

-0:148      add second child into first child (float)

-0:148        'f' (float)

-0:148        distance (float)

-0:148          'v' (4-component vector of float)

-0:148          'v' (4-component vector of float)

-0:149      add second child into first child (float)

-0:149        'f' (float)

-0:149        dot-product (float)

-0:149          'v' (4-component vector of float)

-0:149          'v' (4-component vector of float)

-0:150      add second child into first child (float)

-0:150        'f' (float)

-0:150        dot-product (float)

-0:150          'f' (float)

+0:147      add second child into first child (temp float)

+0:147        'f' (temp float)

+0:147        length (global float)

+0:147          'v' (temp 4-component vector of float)

+0:148      add second child into first child (temp float)

+0:148        'f' (temp float)

+0:148        distance (global float)

+0:148          'v' (temp 4-component vector of float)

+0:148          'v' (temp 4-component vector of float)

+0:149      add second child into first child (temp float)

+0:149        'f' (temp float)

+0:149        dot-product (global float)

+0:149          'v' (temp 4-component vector of float)

+0:149          'v' (temp 4-component vector of float)

+0:150      add second child into first child (temp float)

+0:150        'f' (temp float)

+0:150        dot-product (global float)

+0:150          'f' (temp float)

 0:150          'uf' (uniform float)

-0:151      add second child into first child (float)

-0:151        'f' (float)

-0:151        direct index (float)

-0:151          cross-product (3-component vector of float)

-0:151            vector swizzle (3-component vector of float)

-0:151              'v' (4-component vector of float)

+0:151      add second child into first child (temp float)

+0:151        'f' (temp float)

+0:151        direct index (temp float)

+0:151          cross-product (global 3-component vector of float)

+0:151            vector swizzle (temp 3-component vector of float)

+0:151              'v' (temp 4-component vector of float)

 0:151              Sequence

 0:151                Constant:

 0:151                  0 (const int)

@@ -351,8 +351,8 @@
 0:151                  1 (const int)

 0:151                Constant:

 0:151                  2 (const int)

-0:151            vector swizzle (3-component vector of float)

-0:151              'v' (4-component vector of float)

+0:151            vector swizzle (temp 3-component vector of float)

+0:151              'v' (temp 4-component vector of float)

 0:151              Sequence

 0:151                Constant:

 0:151                  0 (const int)

@@ -362,68 +362,68 @@
 0:151                  2 (const int)

 0:151          Constant:

 0:151            0 (const int)

-0:153      Test condition and select (void)

+0:153      Test condition and select (temp void)

 0:153        Condition

-0:153        logical-or (bool)

-0:153          Compare Equal (bool)

-0:153            'f' (float)

+0:153        logical-or (temp bool)

+0:153          Compare Equal (temp bool)

+0:153            'f' (temp float)

 0:153            'uf' (uniform float)

-0:153          logical-and (bool)

-0:153            Compare Not Equal (bool)

-0:153              'f' (float)

+0:153          logical-and (temp bool)

+0:153            Compare Not Equal (temp bool)

+0:153              'f' (temp float)

 0:153              'uf' (uniform float)

-0:153            Compare Not Equal (bool)

-0:153              'f' (float)

+0:153            Compare Not Equal (temp bool)

+0:153              'f' (temp float)

 0:153              Constant:

 0:153                2.000000

 0:153        true case

-0:154        Pre-Increment (float)

-0:154          'f' (float)

-0:156      and second child into first child (int)

-0:156        'i' (int)

+0:154        Pre-Increment (temp float)

+0:154          'f' (temp float)

+0:156      and second child into first child (temp int)

+0:156        'i' (temp int)

 0:156        'ui' (uniform int)

-0:157      or second child into first child (int)

-0:157        'i' (int)

+0:157      or second child into first child (temp int)

+0:157        'i' (temp int)

 0:157        Constant:

 0:157          66 (const int)

-0:158      exclusive or second child into first child (int)

-0:158        'i' (int)

+0:158      exclusive or second child into first child (temp int)

+0:158        'i' (temp int)

 0:158        'ui' (uniform int)

-0:159      mod second child into first child (int)

-0:159        'i' (int)

+0:159      mod second child into first child (temp int)

+0:159        'i' (temp int)

 0:159        Constant:

 0:159          17 (const int)

-0:160      right shift second child into first child (int)

-0:160        'i' (int)

+0:160      right shift second child into first child (temp int)

+0:160        'i' (temp int)

 0:160        Constant:

 0:160          2 (const int)

-0:161      left shift second child into first child (int)

-0:161        'i' (int)

+0:161      left shift second child into first child (temp int)

+0:161        'i' (temp int)

 0:161        'ui' (uniform int)

-0:162      move second child to first child (int)

-0:162        'i' (int)

-0:162        Bitwise not (int)

-0:162          'i' (int)

-0:163      move second child to first child (bool)

-0:163        'b' (bool)

-0:163        Negate conditional (bool)

-0:163          'b' (bool)

-0:165      move second child to first child (4-component vector of float)

+0:162      move second child to first child (temp int)

+0:162        'i' (temp int)

+0:162        Bitwise not (temp int)

+0:162          'i' (temp int)

+0:163      move second child to first child (temp bool)

+0:163        'b' (temp bool)

+0:163        Negate conditional (temp bool)

+0:163          'b' (temp bool)

+0:165      move second child to first child (temp 4-component vector of float)

 0:165        'gl_FragColor' (fragColor 4-component vector of float)

-0:165        Test condition and select (4-component vector of float)

+0:165        Test condition and select (temp 4-component vector of float)

 0:165          Condition

-0:165          'b' (bool)

+0:165          'b' (temp bool)

 0:165          true case

-0:165          add (4-component vector of float)

-0:165            add (4-component vector of float)

-0:165              Construct vec4 (4-component vector of float)

-0:165                Convert int to float (float)

-0:165                  'i' (int)

-0:165              Construct vec4 (4-component vector of float)

-0:165                'f' (float)

-0:165            'v' (4-component vector of float)

+0:165          add (temp 4-component vector of float)

+0:165            add (temp 4-component vector of float)

+0:165              Construct vec4 (temp 4-component vector of float)

+0:165                Convert int to float (temp float)

+0:165                  'i' (temp int)

+0:165              Construct vec4 (temp 4-component vector of float)

+0:165                'f' (temp float)

+0:165            'v' (temp 4-component vector of float)

 0:165          false case

-0:165          'v' (4-component vector of float)

+0:165          'v' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'uiv4' (uniform 4-component vector of int)

 0:?     'uv4' (uniform 4-component vector of float)

@@ -439,348 +439,348 @@
 

 Shader version: 130

 0:? Sequence

-0:15  Function Definition: main( (void)

+0:15  Function Definition: main( (global void)

 0:15    Function Parameters: 

 0:?     Sequence

-0:27      move second child to first child (4-component vector of float)

-0:27        'v' (4-component vector of float)

-0:27        radians (4-component vector of float)

+0:27      move second child to first child (temp 4-component vector of float)

+0:27        'v' (temp 4-component vector of float)

+0:27        radians (global 4-component vector of float)

 0:27          'uv4' (uniform 4-component vector of float)

-0:28      add second child into first child (4-component vector of float)

-0:28        'v' (4-component vector of float)

-0:28        degrees (4-component vector of float)

-0:28          'v' (4-component vector of float)

-0:29      add second child into first child (4-component vector of float)

-0:29        'v' (4-component vector of float)

-0:29        Comma (4-component vector of float)

-0:29          move second child to first child (int)

-0:29            'i' (int)

-0:29            component-wise multiply (int)

+0:28      add second child into first child (temp 4-component vector of float)

+0:28        'v' (temp 4-component vector of float)

+0:28        degrees (global 4-component vector of float)

+0:28          'v' (temp 4-component vector of float)

+0:29      add second child into first child (temp 4-component vector of float)

+0:29        'v' (temp 4-component vector of float)

+0:29        Comma (temp 4-component vector of float)

+0:29          move second child to first child (temp int)

+0:29            'i' (temp int)

+0:29            component-wise multiply (temp int)

 0:29              'ui' (uniform int)

 0:29              'ui' (uniform int)

-0:29          sine (4-component vector of float)

-0:29            'v' (4-component vector of float)

-0:30      add second child into first child (4-component vector of float)

-0:30        'v' (4-component vector of float)

-0:30        cosine (4-component vector of float)

-0:30          'v' (4-component vector of float)

-0:31      add second child into first child (4-component vector of float)

-0:31        'v' (4-component vector of float)

-0:31        tangent (4-component vector of float)

-0:31          'v' (4-component vector of float)

-0:32      add second child into first child (4-component vector of float)

-0:32        'v' (4-component vector of float)

-0:32        arc sine (4-component vector of float)

-0:32          'v' (4-component vector of float)

-0:33      add second child into first child (4-component vector of float)

-0:33        'v' (4-component vector of float)

-0:33        arc cosine (4-component vector of float)

-0:33          'v' (4-component vector of float)

-0:35      add second child into first child (4-component vector of float)

-0:35        'v' (4-component vector of float)

-0:35        arc tangent (4-component vector of float)

-0:35          'v' (4-component vector of float)

-0:36      add second child into first child (4-component vector of float)

-0:36        'v' (4-component vector of float)

-0:36        hyp. sine (4-component vector of float)

-0:36          'v' (4-component vector of float)

-0:37      add second child into first child (4-component vector of float)

-0:37        'v' (4-component vector of float)

-0:37        hyp. cosine (4-component vector of float)

-0:37          'v' (4-component vector of float)

-0:38      add second child into first child (4-component vector of float)

-0:38        'v' (4-component vector of float)

-0:38        hyp. tangent (4-component vector of float)

-0:38          'v' (4-component vector of float)

-0:39      add second child into first child (4-component vector of float)

-0:39        'v' (4-component vector of float)

-0:39        arc hyp. sine (4-component vector of float)

-0:39          'v' (4-component vector of float)

-0:40      add second child into first child (4-component vector of float)

-0:40        'v' (4-component vector of float)

-0:40        arc hyp. cosine (4-component vector of float)

-0:40          'v' (4-component vector of float)

-0:41      add second child into first child (4-component vector of float)

-0:41        'v' (4-component vector of float)

-0:41        arc hyp. tangent (4-component vector of float)

-0:41          'v' (4-component vector of float)

-0:43      add second child into first child (4-component vector of float)

-0:43        'v' (4-component vector of float)

-0:43        pow (4-component vector of float)

-0:43          'v' (4-component vector of float)

-0:43          'v' (4-component vector of float)

-0:44      add second child into first child (4-component vector of float)

-0:44        'v' (4-component vector of float)

-0:44        exp (4-component vector of float)

-0:44          'v' (4-component vector of float)

-0:45      add second child into first child (4-component vector of float)

-0:45        'v' (4-component vector of float)

-0:45        log (4-component vector of float)

-0:45          'v' (4-component vector of float)

-0:46      add second child into first child (4-component vector of float)

-0:46        'v' (4-component vector of float)

-0:46        exp2 (4-component vector of float)

-0:46          'v' (4-component vector of float)

-0:47      add second child into first child (4-component vector of float)

-0:47        'v' (4-component vector of float)

-0:47        log2 (4-component vector of float)

-0:47          'v' (4-component vector of float)

-0:48      add second child into first child (4-component vector of float)

-0:48        'v' (4-component vector of float)

-0:48        sqrt (4-component vector of float)

-0:48          'v' (4-component vector of float)

-0:49      add second child into first child (4-component vector of float)

-0:49        'v' (4-component vector of float)

-0:49        inverse sqrt (4-component vector of float)

-0:49          'v' (4-component vector of float)

-0:50      add second child into first child (4-component vector of float)

-0:50        'v' (4-component vector of float)

-0:50        Absolute value (4-component vector of float)

-0:50          'v' (4-component vector of float)

-0:51      add second child into first child (4-component vector of float)

-0:51        'v' (4-component vector of float)

-0:51        Sign (4-component vector of float)

-0:51          'v' (4-component vector of float)

-0:52      add second child into first child (4-component vector of float)

-0:52        'v' (4-component vector of float)

-0:52        Floor (4-component vector of float)

-0:52          'v' (4-component vector of float)

-0:60      add second child into first child (4-component vector of float)

-0:60        'v' (4-component vector of float)

-0:60        Ceiling (4-component vector of float)

-0:60          'v' (4-component vector of float)

-0:61      add second child into first child (4-component vector of float)

-0:61        'v' (4-component vector of float)

-0:61        Fraction (4-component vector of float)

-0:61          'v' (4-component vector of float)

-0:62      add second child into first child (4-component vector of float)

-0:62        'v' (4-component vector of float)

-0:62        mod (4-component vector of float)

-0:62          'v' (4-component vector of float)

-0:62          'v' (4-component vector of float)

-0:63      add second child into first child (4-component vector of float)

-0:63        'v' (4-component vector of float)

-0:63        mod (4-component vector of float)

-0:63          'v' (4-component vector of float)

-0:63          direct index (float)

-0:63            'v' (4-component vector of float)

+0:29          sine (global 4-component vector of float)

+0:29            'v' (temp 4-component vector of float)

+0:30      add second child into first child (temp 4-component vector of float)

+0:30        'v' (temp 4-component vector of float)

+0:30        cosine (global 4-component vector of float)

+0:30          'v' (temp 4-component vector of float)

+0:31      add second child into first child (temp 4-component vector of float)

+0:31        'v' (temp 4-component vector of float)

+0:31        tangent (global 4-component vector of float)

+0:31          'v' (temp 4-component vector of float)

+0:32      add second child into first child (temp 4-component vector of float)

+0:32        'v' (temp 4-component vector of float)

+0:32        arc sine (global 4-component vector of float)

+0:32          'v' (temp 4-component vector of float)

+0:33      add second child into first child (temp 4-component vector of float)

+0:33        'v' (temp 4-component vector of float)

+0:33        arc cosine (global 4-component vector of float)

+0:33          'v' (temp 4-component vector of float)

+0:35      add second child into first child (temp 4-component vector of float)

+0:35        'v' (temp 4-component vector of float)

+0:35        arc tangent (global 4-component vector of float)

+0:35          'v' (temp 4-component vector of float)

+0:36      add second child into first child (temp 4-component vector of float)

+0:36        'v' (temp 4-component vector of float)

+0:36        hyp. sine (global 4-component vector of float)

+0:36          'v' (temp 4-component vector of float)

+0:37      add second child into first child (temp 4-component vector of float)

+0:37        'v' (temp 4-component vector of float)

+0:37        hyp. cosine (global 4-component vector of float)

+0:37          'v' (temp 4-component vector of float)

+0:38      add second child into first child (temp 4-component vector of float)

+0:38        'v' (temp 4-component vector of float)

+0:38        hyp. tangent (global 4-component vector of float)

+0:38          'v' (temp 4-component vector of float)

+0:39      add second child into first child (temp 4-component vector of float)

+0:39        'v' (temp 4-component vector of float)

+0:39        arc hyp. sine (global 4-component vector of float)

+0:39          'v' (temp 4-component vector of float)

+0:40      add second child into first child (temp 4-component vector of float)

+0:40        'v' (temp 4-component vector of float)

+0:40        arc hyp. cosine (global 4-component vector of float)

+0:40          'v' (temp 4-component vector of float)

+0:41      add second child into first child (temp 4-component vector of float)

+0:41        'v' (temp 4-component vector of float)

+0:41        arc hyp. tangent (global 4-component vector of float)

+0:41          'v' (temp 4-component vector of float)

+0:43      add second child into first child (temp 4-component vector of float)

+0:43        'v' (temp 4-component vector of float)

+0:43        pow (global 4-component vector of float)

+0:43          'v' (temp 4-component vector of float)

+0:43          'v' (temp 4-component vector of float)

+0:44      add second child into first child (temp 4-component vector of float)

+0:44        'v' (temp 4-component vector of float)

+0:44        exp (global 4-component vector of float)

+0:44          'v' (temp 4-component vector of float)

+0:45      add second child into first child (temp 4-component vector of float)

+0:45        'v' (temp 4-component vector of float)

+0:45        log (global 4-component vector of float)

+0:45          'v' (temp 4-component vector of float)

+0:46      add second child into first child (temp 4-component vector of float)

+0:46        'v' (temp 4-component vector of float)

+0:46        exp2 (global 4-component vector of float)

+0:46          'v' (temp 4-component vector of float)

+0:47      add second child into first child (temp 4-component vector of float)

+0:47        'v' (temp 4-component vector of float)

+0:47        log2 (global 4-component vector of float)

+0:47          'v' (temp 4-component vector of float)

+0:48      add second child into first child (temp 4-component vector of float)

+0:48        'v' (temp 4-component vector of float)

+0:48        sqrt (global 4-component vector of float)

+0:48          'v' (temp 4-component vector of float)

+0:49      add second child into first child (temp 4-component vector of float)

+0:49        'v' (temp 4-component vector of float)

+0:49        inverse sqrt (global 4-component vector of float)

+0:49          'v' (temp 4-component vector of float)

+0:50      add second child into first child (temp 4-component vector of float)

+0:50        'v' (temp 4-component vector of float)

+0:50        Absolute value (global 4-component vector of float)

+0:50          'v' (temp 4-component vector of float)

+0:51      add second child into first child (temp 4-component vector of float)

+0:51        'v' (temp 4-component vector of float)

+0:51        Sign (global 4-component vector of float)

+0:51          'v' (temp 4-component vector of float)

+0:52      add second child into first child (temp 4-component vector of float)

+0:52        'v' (temp 4-component vector of float)

+0:52        Floor (global 4-component vector of float)

+0:52          'v' (temp 4-component vector of float)

+0:60      add second child into first child (temp 4-component vector of float)

+0:60        'v' (temp 4-component vector of float)

+0:60        Ceiling (global 4-component vector of float)

+0:60          'v' (temp 4-component vector of float)

+0:61      add second child into first child (temp 4-component vector of float)

+0:61        'v' (temp 4-component vector of float)

+0:61        Fraction (global 4-component vector of float)

+0:61          'v' (temp 4-component vector of float)

+0:62      add second child into first child (temp 4-component vector of float)

+0:62        'v' (temp 4-component vector of float)

+0:62        mod (global 4-component vector of float)

+0:62          'v' (temp 4-component vector of float)

+0:62          'v' (temp 4-component vector of float)

+0:63      add second child into first child (temp 4-component vector of float)

+0:63        'v' (temp 4-component vector of float)

+0:63        mod (global 4-component vector of float)

+0:63          'v' (temp 4-component vector of float)

+0:63          direct index (temp float)

+0:63            'v' (temp 4-component vector of float)

 0:63            Constant:

 0:63              0 (const int)

-0:69      add second child into first child (4-component vector of float)

-0:69        'v' (4-component vector of float)

-0:69        min (4-component vector of float)

-0:69          'v' (4-component vector of float)

+0:69      add second child into first child (temp 4-component vector of float)

+0:69        'v' (temp 4-component vector of float)

+0:69        min (global 4-component vector of float)

+0:69          'v' (temp 4-component vector of float)

 0:69          'uv4' (uniform 4-component vector of float)

-0:70      add second child into first child (4-component vector of float)

-0:70        'v' (4-component vector of float)

-0:70        max (4-component vector of float)

-0:70          'v' (4-component vector of float)

+0:70      add second child into first child (temp 4-component vector of float)

+0:70        'v' (temp 4-component vector of float)

+0:70        max (global 4-component vector of float)

+0:70          'v' (temp 4-component vector of float)

 0:70          'uv4' (uniform 4-component vector of float)

-0:71      add second child into first child (4-component vector of float)

-0:71        'v' (4-component vector of float)

-0:71        clamp (4-component vector of float)

-0:71          'v' (4-component vector of float)

+0:71      add second child into first child (temp 4-component vector of float)

+0:71        'v' (temp 4-component vector of float)

+0:71        clamp (global 4-component vector of float)

+0:71          'v' (temp 4-component vector of float)

 0:71          'uv4' (uniform 4-component vector of float)

 0:71          'uv4' (uniform 4-component vector of float)

-0:72      add second child into first child (4-component vector of float)

-0:72        'v' (4-component vector of float)

-0:72        mix (4-component vector of float)

-0:72          'v' (4-component vector of float)

-0:72          'v' (4-component vector of float)

-0:72          'v' (4-component vector of float)

-0:86      add second child into first child (4-component vector of float)

-0:86        'v' (4-component vector of float)

-0:86        step (4-component vector of float)

-0:86          'v' (4-component vector of float)

-0:86          'v' (4-component vector of float)

-0:87      add second child into first child (4-component vector of float)

-0:87        'v' (4-component vector of float)

-0:87        smoothstep (4-component vector of float)

-0:87          'v' (4-component vector of float)

-0:87          'v' (4-component vector of float)

-0:87          'v' (4-component vector of float)

-0:88      add second child into first child (4-component vector of float)

-0:88        'v' (4-component vector of float)

-0:88        step (4-component vector of float)

+0:72      add second child into first child (temp 4-component vector of float)

+0:72        'v' (temp 4-component vector of float)

+0:72        mix (global 4-component vector of float)

+0:72          'v' (temp 4-component vector of float)

+0:72          'v' (temp 4-component vector of float)

+0:72          'v' (temp 4-component vector of float)

+0:86      add second child into first child (temp 4-component vector of float)

+0:86        'v' (temp 4-component vector of float)

+0:86        step (global 4-component vector of float)

+0:86          'v' (temp 4-component vector of float)

+0:86          'v' (temp 4-component vector of float)

+0:87      add second child into first child (temp 4-component vector of float)

+0:87        'v' (temp 4-component vector of float)

+0:87        smoothstep (global 4-component vector of float)

+0:87          'v' (temp 4-component vector of float)

+0:87          'v' (temp 4-component vector of float)

+0:87          'v' (temp 4-component vector of float)

+0:88      add second child into first child (temp 4-component vector of float)

+0:88        'v' (temp 4-component vector of float)

+0:88        step (global 4-component vector of float)

 0:88          'uf' (uniform float)

-0:88          'v' (4-component vector of float)

-0:89      add second child into first child (4-component vector of float)

-0:89        'v' (4-component vector of float)

-0:89        smoothstep (4-component vector of float)

+0:88          'v' (temp 4-component vector of float)

+0:89      add second child into first child (temp 4-component vector of float)

+0:89        'v' (temp 4-component vector of float)

+0:89        smoothstep (global 4-component vector of float)

 0:89          'uf' (uniform float)

 0:89          'uf' (uniform float)

-0:89          'v' (4-component vector of float)

-0:90      add second child into first child (4-component vector of float)

-0:90        'v' (4-component vector of float)

-0:90        normalize (4-component vector of float)

-0:90          'v' (4-component vector of float)

-0:91      add second child into first child (4-component vector of float)

-0:91        'v' (4-component vector of float)

-0:91        face-forward (4-component vector of float)

-0:91          'v' (4-component vector of float)

-0:91          'v' (4-component vector of float)

-0:91          'v' (4-component vector of float)

-0:92      add second child into first child (4-component vector of float)

-0:92        'v' (4-component vector of float)

-0:92        reflect (4-component vector of float)

-0:92          'v' (4-component vector of float)

-0:92          'v' (4-component vector of float)

-0:93      add second child into first child (4-component vector of float)

-0:93        'v' (4-component vector of float)

-0:93        refract (4-component vector of float)

-0:93          'v' (4-component vector of float)

-0:93          'v' (4-component vector of float)

+0:89          'v' (temp 4-component vector of float)

+0:90      add second child into first child (temp 4-component vector of float)

+0:90        'v' (temp 4-component vector of float)

+0:90        normalize (global 4-component vector of float)

+0:90          'v' (temp 4-component vector of float)

+0:91      add second child into first child (temp 4-component vector of float)

+0:91        'v' (temp 4-component vector of float)

+0:91        face-forward (global 4-component vector of float)

+0:91          'v' (temp 4-component vector of float)

+0:91          'v' (temp 4-component vector of float)

+0:91          'v' (temp 4-component vector of float)

+0:92      add second child into first child (temp 4-component vector of float)

+0:92        'v' (temp 4-component vector of float)

+0:92        reflect (global 4-component vector of float)

+0:92          'v' (temp 4-component vector of float)

+0:92          'v' (temp 4-component vector of float)

+0:93      add second child into first child (temp 4-component vector of float)

+0:93        'v' (temp 4-component vector of float)

+0:93        refract (global 4-component vector of float)

+0:93          'v' (temp 4-component vector of float)

+0:93          'v' (temp 4-component vector of float)

 0:93          'uf' (uniform float)

-0:94      add second child into first child (4-component vector of float)

-0:94        'v' (4-component vector of float)

-0:94        dPdx (4-component vector of float)

-0:94          'v' (4-component vector of float)

-0:95      add second child into first child (4-component vector of float)

-0:95        'v' (4-component vector of float)

-0:95        dPdy (4-component vector of float)

-0:95          'v' (4-component vector of float)

-0:96      add second child into first child (4-component vector of float)

-0:96        'v' (4-component vector of float)

-0:96        fwidth (4-component vector of float)

-0:96          'v' (4-component vector of float)

-0:130      move second child to first child (bool)

-0:130        'b' (bool)

-0:130        any (bool)

-0:130          Compare Less Than (4-component vector of bool)

-0:130            'v' (4-component vector of float)

+0:94      add second child into first child (temp 4-component vector of float)

+0:94        'v' (temp 4-component vector of float)

+0:94        dPdx (global 4-component vector of float)

+0:94          'v' (temp 4-component vector of float)

+0:95      add second child into first child (temp 4-component vector of float)

+0:95        'v' (temp 4-component vector of float)

+0:95        dPdy (global 4-component vector of float)

+0:95          'v' (temp 4-component vector of float)

+0:96      add second child into first child (temp 4-component vector of float)

+0:96        'v' (temp 4-component vector of float)

+0:96        fwidth (global 4-component vector of float)

+0:96          'v' (temp 4-component vector of float)

+0:130      move second child to first child (temp bool)

+0:130        'b' (temp bool)

+0:130        any (global bool)

+0:130          Compare Less Than (global 4-component vector of bool)

+0:130            'v' (temp 4-component vector of float)

 0:130            'uv4' (uniform 4-component vector of float)

-0:131      move second child to first child (bool)

-0:131        'b' (bool)

-0:131        logical-and (bool)

-0:131          'b' (bool)

-0:131          any (bool)

-0:131            Compare Less Than or Equal (4-component vector of bool)

-0:131              'v' (4-component vector of float)

+0:131      move second child to first child (temp bool)

+0:131        'b' (temp bool)

+0:131        logical-and (temp bool)

+0:131          'b' (temp bool)

+0:131          any (global bool)

+0:131            Compare Less Than or Equal (global 4-component vector of bool)

+0:131              'v' (temp 4-component vector of float)

 0:131              'uv4' (uniform 4-component vector of float)

-0:132      move second child to first child (bool)

-0:132        'b' (bool)

-0:132        logical-and (bool)

-0:132          'b' (bool)

-0:132          any (bool)

-0:132            Compare Greater Than (4-component vector of bool)

-0:132              'v' (4-component vector of float)

+0:132      move second child to first child (temp bool)

+0:132        'b' (temp bool)

+0:132        logical-and (temp bool)

+0:132          'b' (temp bool)

+0:132          any (global bool)

+0:132            Compare Greater Than (global 4-component vector of bool)

+0:132              'v' (temp 4-component vector of float)

 0:132              'uv4' (uniform 4-component vector of float)

-0:133      move second child to first child (bool)

-0:133        'b' (bool)

-0:133        logical-and (bool)

-0:133          'b' (bool)

-0:133          any (bool)

-0:133            Compare Greater Than or Equal (4-component vector of bool)

-0:133              'v' (4-component vector of float)

+0:133      move second child to first child (temp bool)

+0:133        'b' (temp bool)

+0:133        logical-and (temp bool)

+0:133          'b' (temp bool)

+0:133          any (global bool)

+0:133            Compare Greater Than or Equal (global 4-component vector of bool)

+0:133              'v' (temp 4-component vector of float)

 0:133              'uv4' (uniform 4-component vector of float)

-0:134      move second child to first child (bool)

-0:134        'b' (bool)

-0:134        logical-and (bool)

-0:134          'b' (bool)

-0:134          any (bool)

-0:134            Equal (4-component vector of bool)

+0:134      move second child to first child (temp bool)

+0:134        'b' (temp bool)

+0:134        logical-and (temp bool)

+0:134          'b' (temp bool)

+0:134          any (global bool)

+0:134            Equal (global 4-component vector of bool)

 0:134              'ub41' (uniform 4-component vector of bool)

 0:134              'ub42' (uniform 4-component vector of bool)

-0:135      move second child to first child (bool)

-0:135        'b' (bool)

-0:135        logical-and (bool)

-0:135          'b' (bool)

-0:135          any (bool)

-0:135            NotEqual (4-component vector of bool)

+0:135      move second child to first child (temp bool)

+0:135        'b' (temp bool)

+0:135        logical-and (temp bool)

+0:135          'b' (temp bool)

+0:135          any (global bool)

+0:135            NotEqual (global 4-component vector of bool)

 0:135              'ub41' (uniform 4-component vector of bool)

 0:135              'ub42' (uniform 4-component vector of bool)

-0:136      move second child to first child (bool)

-0:136        'b' (bool)

-0:136        logical-and (bool)

-0:136          'b' (bool)

-0:136          any (bool)

+0:136      move second child to first child (temp bool)

+0:136        'b' (temp bool)

+0:136        logical-and (temp bool)

+0:136          'b' (temp bool)

+0:136          any (global bool)

 0:136            'ub41' (uniform 4-component vector of bool)

-0:137      move second child to first child (bool)

-0:137        'b' (bool)

-0:137        logical-and (bool)

-0:137          'b' (bool)

-0:137          all (bool)

+0:137      move second child to first child (temp bool)

+0:137        'b' (temp bool)

+0:137        logical-and (temp bool)

+0:137          'b' (temp bool)

+0:137          all (global bool)

 0:137            'ub41' (uniform 4-component vector of bool)

-0:138      move second child to first child (bool)

-0:138        'b' (bool)

-0:138        logical-and (bool)

-0:138          'b' (bool)

-0:138          any (bool)

-0:138            Negate conditional (4-component vector of bool)

+0:138      move second child to first child (temp bool)

+0:138        'b' (temp bool)

+0:138        logical-and (temp bool)

+0:138          'b' (temp bool)

+0:138          any (global bool)

+0:138            Negate conditional (global 4-component vector of bool)

 0:138              'ub41' (uniform 4-component vector of bool)

-0:140      move second child to first child (int)

-0:140        'i' (int)

-0:140        divide (int)

-0:140          subtract (int)

-0:140            component-wise multiply (int)

-0:140              add (int)

-0:140                'i' (int)

+0:140      move second child to first child (temp int)

+0:140        'i' (temp int)

+0:140        divide (temp int)

+0:140          subtract (temp int)

+0:140            component-wise multiply (temp int)

+0:140              add (temp int)

+0:140                'i' (temp int)

 0:140                'ui' (uniform int)

-0:140              'i' (int)

+0:140              'i' (temp int)

 0:140            'ui' (uniform int)

-0:140          'i' (int)

-0:141      move second child to first child (int)

-0:141        'i' (int)

-0:141        mod (int)

-0:141          'i' (int)

+0:140          'i' (temp int)

+0:141      move second child to first child (temp int)

+0:141        'i' (temp int)

+0:141        mod (temp int)

+0:141          'i' (temp int)

 0:141          'ui' (uniform int)

-0:142      Test condition and select (void)

+0:142      Test condition and select (temp void)

 0:142        Condition

-0:142        logical-or (bool)

-0:142          Compare Equal (bool)

-0:142            'i' (int)

+0:142        logical-or (temp bool)

+0:142          Compare Equal (temp bool)

+0:142            'i' (temp int)

 0:142            'ui' (uniform int)

-0:142          logical-xor (bool)

-0:142            logical-and (bool)

-0:142              Compare Not Equal (bool)

-0:142                'i' (int)

+0:142          logical-xor (temp bool)

+0:142            logical-and (temp bool)

+0:142              Compare Not Equal (temp bool)

+0:142                'i' (temp int)

 0:142                'ui' (uniform int)

-0:142              Compare Equal (bool)

-0:142                'i' (int)

+0:142              Compare Equal (temp bool)

+0:142                'i' (temp int)

 0:142                'ui' (uniform int)

-0:142            Compare Not Equal (bool)

-0:142              'i' (int)

+0:142            Compare Not Equal (temp bool)

+0:142              'i' (temp int)

 0:142              Constant:

 0:142                2 (const int)

 0:142        true case

-0:143        Pre-Increment (int)

-0:143          'i' (int)

-0:145      move second child to first child (float)

-0:145        'f' (float)

-0:145        divide (float)

-0:145          subtract (float)

-0:145            component-wise multiply (float)

-0:145              add (float)

+0:143        Pre-Increment (temp int)

+0:143          'i' (temp int)

+0:145      move second child to first child (temp float)

+0:145        'f' (temp float)

+0:145        divide (temp float)

+0:145          subtract (temp float)

+0:145            component-wise multiply (temp float)

+0:145              add (temp float)

 0:145                'uf' (uniform float)

 0:145                'uf' (uniform float)

 0:145              'uf' (uniform float)

 0:145            'uf' (uniform float)

 0:145          'uf' (uniform float)

-0:147      add second child into first child (float)

-0:147        'f' (float)

-0:147        length (float)

-0:147          'v' (4-component vector of float)

-0:148      add second child into first child (float)

-0:148        'f' (float)

-0:148        distance (float)

-0:148          'v' (4-component vector of float)

-0:148          'v' (4-component vector of float)

-0:149      add second child into first child (float)

-0:149        'f' (float)

-0:149        dot-product (float)

-0:149          'v' (4-component vector of float)

-0:149          'v' (4-component vector of float)

-0:150      add second child into first child (float)

-0:150        'f' (float)

-0:150        dot-product (float)

-0:150          'f' (float)

+0:147      add second child into first child (temp float)

+0:147        'f' (temp float)

+0:147        length (global float)

+0:147          'v' (temp 4-component vector of float)

+0:148      add second child into first child (temp float)

+0:148        'f' (temp float)

+0:148        distance (global float)

+0:148          'v' (temp 4-component vector of float)

+0:148          'v' (temp 4-component vector of float)

+0:149      add second child into first child (temp float)

+0:149        'f' (temp float)

+0:149        dot-product (global float)

+0:149          'v' (temp 4-component vector of float)

+0:149          'v' (temp 4-component vector of float)

+0:150      add second child into first child (temp float)

+0:150        'f' (temp float)

+0:150        dot-product (global float)

+0:150          'f' (temp float)

 0:150          'uf' (uniform float)

-0:151      add second child into first child (float)

-0:151        'f' (float)

-0:151        direct index (float)

-0:151          cross-product (3-component vector of float)

-0:151            vector swizzle (3-component vector of float)

-0:151              'v' (4-component vector of float)

+0:151      add second child into first child (temp float)

+0:151        'f' (temp float)

+0:151        direct index (temp float)

+0:151          cross-product (global 3-component vector of float)

+0:151            vector swizzle (temp 3-component vector of float)

+0:151              'v' (temp 4-component vector of float)

 0:151              Sequence

 0:151                Constant:

 0:151                  0 (const int)

@@ -788,8 +788,8 @@
 0:151                  1 (const int)

 0:151                Constant:

 0:151                  2 (const int)

-0:151            vector swizzle (3-component vector of float)

-0:151              'v' (4-component vector of float)

+0:151            vector swizzle (temp 3-component vector of float)

+0:151              'v' (temp 4-component vector of float)

 0:151              Sequence

 0:151                Constant:

 0:151                  0 (const int)

@@ -799,68 +799,68 @@
 0:151                  2 (const int)

 0:151          Constant:

 0:151            0 (const int)

-0:153      Test condition and select (void)

+0:153      Test condition and select (temp void)

 0:153        Condition

-0:153        logical-or (bool)

-0:153          Compare Equal (bool)

-0:153            'f' (float)

+0:153        logical-or (temp bool)

+0:153          Compare Equal (temp bool)

+0:153            'f' (temp float)

 0:153            'uf' (uniform float)

-0:153          logical-and (bool)

-0:153            Compare Not Equal (bool)

-0:153              'f' (float)

+0:153          logical-and (temp bool)

+0:153            Compare Not Equal (temp bool)

+0:153              'f' (temp float)

 0:153              'uf' (uniform float)

-0:153            Compare Not Equal (bool)

-0:153              'f' (float)

+0:153            Compare Not Equal (temp bool)

+0:153              'f' (temp float)

 0:153              Constant:

 0:153                2.000000

 0:153        true case

-0:154        Pre-Increment (float)

-0:154          'f' (float)

-0:156      and second child into first child (int)

-0:156        'i' (int)

+0:154        Pre-Increment (temp float)

+0:154          'f' (temp float)

+0:156      and second child into first child (temp int)

+0:156        'i' (temp int)

 0:156        'ui' (uniform int)

-0:157      or second child into first child (int)

-0:157        'i' (int)

+0:157      or second child into first child (temp int)

+0:157        'i' (temp int)

 0:157        Constant:

 0:157          66 (const int)

-0:158      exclusive or second child into first child (int)

-0:158        'i' (int)

+0:158      exclusive or second child into first child (temp int)

+0:158        'i' (temp int)

 0:158        'ui' (uniform int)

-0:159      mod second child into first child (int)

-0:159        'i' (int)

+0:159      mod second child into first child (temp int)

+0:159        'i' (temp int)

 0:159        Constant:

 0:159          17 (const int)

-0:160      right shift second child into first child (int)

-0:160        'i' (int)

+0:160      right shift second child into first child (temp int)

+0:160        'i' (temp int)

 0:160        Constant:

 0:160          2 (const int)

-0:161      left shift second child into first child (int)

-0:161        'i' (int)

+0:161      left shift second child into first child (temp int)

+0:161        'i' (temp int)

 0:161        'ui' (uniform int)

-0:162      move second child to first child (int)

-0:162        'i' (int)

-0:162        Bitwise not (int)

-0:162          'i' (int)

-0:163      move second child to first child (bool)

-0:163        'b' (bool)

-0:163        Negate conditional (bool)

-0:163          'b' (bool)

-0:165      move second child to first child (4-component vector of float)

+0:162      move second child to first child (temp int)

+0:162        'i' (temp int)

+0:162        Bitwise not (temp int)

+0:162          'i' (temp int)

+0:163      move second child to first child (temp bool)

+0:163        'b' (temp bool)

+0:163        Negate conditional (temp bool)

+0:163          'b' (temp bool)

+0:165      move second child to first child (temp 4-component vector of float)

 0:165        'gl_FragColor' (fragColor 4-component vector of float)

-0:165        Test condition and select (4-component vector of float)

+0:165        Test condition and select (temp 4-component vector of float)

 0:165          Condition

-0:165          'b' (bool)

+0:165          'b' (temp bool)

 0:165          true case

-0:165          add (4-component vector of float)

-0:165            add (4-component vector of float)

-0:165              Construct vec4 (4-component vector of float)

-0:165                Convert int to float (float)

-0:165                  'i' (int)

-0:165              Construct vec4 (4-component vector of float)

-0:165                'f' (float)

-0:165            'v' (4-component vector of float)

+0:165          add (temp 4-component vector of float)

+0:165            add (temp 4-component vector of float)

+0:165              Construct vec4 (temp 4-component vector of float)

+0:165                Convert int to float (temp float)

+0:165                  'i' (temp int)

+0:165              Construct vec4 (temp 4-component vector of float)

+0:165                'f' (temp float)

+0:165            'v' (temp 4-component vector of float)

 0:165          false case

-0:165          'v' (4-component vector of float)

+0:165          'v' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'uiv4' (uniform 4-component vector of int)

 0:?     'uv4' (uniform 4-component vector of float)

diff --git a/Test/baseResults/aggOps.frag.out b/Test/baseResults/aggOps.frag.out
index d6b717c..58539cb 100644
--- a/Test/baseResults/aggOps.frag.out
+++ b/Test/baseResults/aggOps.frag.out
@@ -4,148 +4,148 @@
 

 Shader version: 130

 0:? Sequence

-0:23  Function Definition: main( (void)

+0:23  Function Definition: main( (global void)

 0:23    Function Parameters: 

 0:?     Sequence

-0:27      move second child to first child (3-element array of structure{int i, float f})

-0:27        'a' (3-element array of structure{int i, float f})

-0:27        Construct structure (3-element array of structure{int i, float f})

-0:27          Construct structure (structure{int i, float f})

-0:27            Convert float to int (int)

-0:27              direct index (float)

+0:27      move second child to first child (temp 3-element array of structure{global int i, global float f})

+0:27        'a' (temp 3-element array of structure{global int i, global float f})

+0:27        Construct structure (temp 3-element array of structure{global int i, global float f})

+0:27          Construct structure (temp structure{global int i, global float f})

+0:27            Convert float to int (temp int)

+0:27              direct index (temp float)

 0:27                'u' (smooth in 4-component vector of float)

 0:27                Constant:

 0:27                  0 (const int)

-0:27            direct index (float)

+0:27            direct index (temp float)

 0:27              'u' (smooth in 4-component vector of float)

 0:27              Constant:

 0:27                1 (const int)

-0:27          Construct structure (structure{int i, float f})

-0:27            Convert float to int (int)

-0:27              direct index (float)

+0:27          Construct structure (temp structure{global int i, global float f})

+0:27            Convert float to int (temp int)

+0:27              direct index (temp float)

 0:27                'u' (smooth in 4-component vector of float)

 0:27                Constant:

 0:27                  2 (const int)

-0:27            direct index (float)

+0:27            direct index (temp float)

 0:27              'u' (smooth in 4-component vector of float)

 0:27              Constant:

 0:27                3 (const int)

 0:27          Constant:

 0:27            14 (const int)

 0:27            14.000000

-0:28      move second child to first child (3-element array of structure{int i, float f})

-0:28        'b' (3-element array of structure{int i, float f})

-0:28        Construct structure (3-element array of structure{int i, float f})

+0:28      move second child to first child (temp 3-element array of structure{global int i, global float f})

+0:28        'b' (temp 3-element array of structure{global int i, global float f})

+0:28        Construct structure (temp 3-element array of structure{global int i, global float f})

 0:28          Constant:

 0:28            17 (const int)

 0:28            17.000000

-0:28          Construct structure (structure{int i, float f})

-0:28            Convert float to int (int)

-0:28              direct index (float)

+0:28          Construct structure (temp structure{global int i, global float f})

+0:28            Convert float to int (temp int)

+0:28              direct index (temp float)

 0:28                'w' (smooth in 4-component vector of float)

 0:28                Constant:

 0:28                  0 (const int)

-0:28            direct index (float)

+0:28            direct index (temp float)

 0:28              'w' (smooth in 4-component vector of float)

 0:28              Constant:

 0:28                1 (const int)

-0:28          Construct structure (structure{int i, float f})

-0:28            Convert float to int (int)

-0:28              direct index (float)

+0:28          Construct structure (temp structure{global int i, global float f})

+0:28            Convert float to int (temp int)

+0:28              direct index (temp float)

 0:28                'w' (smooth in 4-component vector of float)

 0:28                Constant:

 0:28                  2 (const int)

-0:28            direct index (float)

+0:28            direct index (temp float)

 0:28              'w' (smooth in 4-component vector of float)

 0:28              Constant:

 0:28                3 (const int)

-0:30      Test condition and select (void)

+0:30      Test condition and select (temp void)

 0:30        Condition

-0:30        Compare Equal (bool)

-0:30          'foo2a' (uniform structure{int i, float f, structure{int i, float f} s1_1})

-0:30          'foo2b' (uniform structure{int i, float f, structure{int i, float f} s1_1})

+0:30        Compare Equal (temp bool)

+0:30          'foo2a' (uniform structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:30          'foo2b' (uniform structure{global int i, global float f, global structure{global int i, global float f} s1_1})

 0:30        true case

-0:31        move second child to first child (4-component vector of float)

-0:31          'v' (4-component vector of float)

-0:31          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:31        move second child to first child (temp 4-component vector of float)

+0:31          'v' (temp 4-component vector of float)

+0:31          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:31            'sampler' (uniform sampler2D)

 0:31            'coord' (smooth in 2-component vector of float)

 0:30        false case

-0:33        move second child to first child (4-component vector of float)

-0:33          'v' (4-component vector of float)

-0:33          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:33        move second child to first child (temp 4-component vector of float)

+0:33          'v' (temp 4-component vector of float)

+0:33          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:33            'sampler' (uniform sampler2D)

-0:33            vector-scale (2-component vector of float)

+0:33            vector-scale (temp 2-component vector of float)

 0:33              Constant:

 0:33                2.000000

 0:33              'coord' (smooth in 2-component vector of float)

-0:35      Test condition and select (void)

+0:35      Test condition and select (temp void)

 0:35        Condition

-0:35        Compare Equal (bool)

+0:35        Compare Equal (temp bool)

 0:35          'u' (smooth in 4-component vector of float)

-0:35          'v' (4-component vector of float)

+0:35          'v' (temp 4-component vector of float)

 0:35        true case

-0:36        vector scale second child into first child (4-component vector of float)

-0:36          'v' (4-component vector of float)

+0:36        vector scale second child into first child (temp 4-component vector of float)

+0:36          'v' (temp 4-component vector of float)

 0:36          Constant:

 0:36            3.000000

-0:38      Test condition and select (void)

+0:38      Test condition and select (temp void)

 0:38        Condition

-0:38        Compare Not Equal (bool)

+0:38        Compare Not Equal (temp bool)

 0:38          'u' (smooth in 4-component vector of float)

-0:38          'v' (4-component vector of float)

+0:38          'v' (temp 4-component vector of float)

 0:38        true case

-0:39        vector scale second child into first child (4-component vector of float)

-0:39          'v' (4-component vector of float)

+0:39        vector scale second child into first child (temp 4-component vector of float)

+0:39          'v' (temp 4-component vector of float)

 0:39          Constant:

 0:39            4.000000

-0:41      Test condition and select (void)

+0:41      Test condition and select (temp void)

 0:41        Condition

-0:41        Compare Equal (bool)

+0:41        Compare Equal (temp bool)

 0:41          'coord' (smooth in 2-component vector of float)

-0:41          vector swizzle (2-component vector of float)

-0:41            'v' (4-component vector of float)

+0:41          vector swizzle (temp 2-component vector of float)

+0:41            'v' (temp 4-component vector of float)

 0:41            Sequence

 0:41              Constant:

 0:41                1 (const int)

 0:41              Constant:

 0:41                3 (const int)

 0:41        true case

-0:42        vector scale second child into first child (4-component vector of float)

-0:42          'v' (4-component vector of float)

+0:42        vector scale second child into first child (temp 4-component vector of float)

+0:42          'v' (temp 4-component vector of float)

 0:42          Constant:

 0:42            5.000000

-0:44      Test condition and select (void)

+0:44      Test condition and select (temp void)

 0:44        Condition

-0:44        Compare Equal (bool)

-0:44          'a' (3-element array of structure{int i, float f})

-0:44          'b' (3-element array of structure{int i, float f})

+0:44        Compare Equal (temp bool)

+0:44          'a' (temp 3-element array of structure{global int i, global float f})

+0:44          'b' (temp 3-element array of structure{global int i, global float f})

 0:44        true case

-0:45        vector scale second child into first child (4-component vector of float)

-0:45          'v' (4-component vector of float)

+0:45        vector scale second child into first child (temp 4-component vector of float)

+0:45          'v' (temp 4-component vector of float)

 0:45          Constant:

 0:45            6.000000

-0:47      Test condition and select (void)

+0:47      Test condition and select (temp void)

 0:47        Condition

-0:47        Compare Not Equal (bool)

-0:47          'a' (3-element array of structure{int i, float f})

-0:47          'b' (3-element array of structure{int i, float f})

+0:47        Compare Not Equal (temp bool)

+0:47          'a' (temp 3-element array of structure{global int i, global float f})

+0:47          'b' (temp 3-element array of structure{global int i, global float f})

 0:47        true case

-0:48        vector scale second child into first child (4-component vector of float)

-0:48          'v' (4-component vector of float)

+0:48        vector scale second child into first child (temp 4-component vector of float)

+0:48          'v' (temp 4-component vector of float)

 0:48          Constant:

 0:48            7.000000

-0:50      move second child to first child (4-component vector of float)

+0:50      move second child to first child (temp 4-component vector of float)

 0:50        'gl_FragColor' (fragColor 4-component vector of float)

-0:50        'v' (4-component vector of float)

+0:50        'v' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'sampler' (uniform sampler2D)

 0:?     'coord' (smooth in 2-component vector of float)

 0:?     'u' (smooth in 4-component vector of float)

 0:?     'w' (smooth in 4-component vector of float)

-0:?     'foo1' (uniform structure{int i, float f})

-0:?     'foo2a' (uniform structure{int i, float f, structure{int i, float f} s1_1})

-0:?     'foo2b' (uniform structure{int i, float f, structure{int i, float f} s1_1})

+0:?     'foo1' (uniform structure{global int i, global float f})

+0:?     'foo2a' (uniform structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:?     'foo2b' (uniform structure{global int i, global float f, global structure{global int i, global float f} s1_1})

 

 

 Linked fragment stage:

@@ -153,146 +153,146 @@
 

 Shader version: 130

 0:? Sequence

-0:23  Function Definition: main( (void)

+0:23  Function Definition: main( (global void)

 0:23    Function Parameters: 

 0:?     Sequence

-0:27      move second child to first child (3-element array of structure{int i, float f})

-0:27        'a' (3-element array of structure{int i, float f})

-0:27        Construct structure (3-element array of structure{int i, float f})

-0:27          Construct structure (structure{int i, float f})

-0:27            Convert float to int (int)

-0:27              direct index (float)

+0:27      move second child to first child (temp 3-element array of structure{global int i, global float f})

+0:27        'a' (temp 3-element array of structure{global int i, global float f})

+0:27        Construct structure (temp 3-element array of structure{global int i, global float f})

+0:27          Construct structure (temp structure{global int i, global float f})

+0:27            Convert float to int (temp int)

+0:27              direct index (temp float)

 0:27                'u' (smooth in 4-component vector of float)

 0:27                Constant:

 0:27                  0 (const int)

-0:27            direct index (float)

+0:27            direct index (temp float)

 0:27              'u' (smooth in 4-component vector of float)

 0:27              Constant:

 0:27                1 (const int)

-0:27          Construct structure (structure{int i, float f})

-0:27            Convert float to int (int)

-0:27              direct index (float)

+0:27          Construct structure (temp structure{global int i, global float f})

+0:27            Convert float to int (temp int)

+0:27              direct index (temp float)

 0:27                'u' (smooth in 4-component vector of float)

 0:27                Constant:

 0:27                  2 (const int)

-0:27            direct index (float)

+0:27            direct index (temp float)

 0:27              'u' (smooth in 4-component vector of float)

 0:27              Constant:

 0:27                3 (const int)

 0:27          Constant:

 0:27            14 (const int)

 0:27            14.000000

-0:28      move second child to first child (3-element array of structure{int i, float f})

-0:28        'b' (3-element array of structure{int i, float f})

-0:28        Construct structure (3-element array of structure{int i, float f})

+0:28      move second child to first child (temp 3-element array of structure{global int i, global float f})

+0:28        'b' (temp 3-element array of structure{global int i, global float f})

+0:28        Construct structure (temp 3-element array of structure{global int i, global float f})

 0:28          Constant:

 0:28            17 (const int)

 0:28            17.000000

-0:28          Construct structure (structure{int i, float f})

-0:28            Convert float to int (int)

-0:28              direct index (float)

+0:28          Construct structure (temp structure{global int i, global float f})

+0:28            Convert float to int (temp int)

+0:28              direct index (temp float)

 0:28                'w' (smooth in 4-component vector of float)

 0:28                Constant:

 0:28                  0 (const int)

-0:28            direct index (float)

+0:28            direct index (temp float)

 0:28              'w' (smooth in 4-component vector of float)

 0:28              Constant:

 0:28                1 (const int)

-0:28          Construct structure (structure{int i, float f})

-0:28            Convert float to int (int)

-0:28              direct index (float)

+0:28          Construct structure (temp structure{global int i, global float f})

+0:28            Convert float to int (temp int)

+0:28              direct index (temp float)

 0:28                'w' (smooth in 4-component vector of float)

 0:28                Constant:

 0:28                  2 (const int)

-0:28            direct index (float)

+0:28            direct index (temp float)

 0:28              'w' (smooth in 4-component vector of float)

 0:28              Constant:

 0:28                3 (const int)

-0:30      Test condition and select (void)

+0:30      Test condition and select (temp void)

 0:30        Condition

-0:30        Compare Equal (bool)

-0:30          'foo2a' (uniform structure{int i, float f, structure{int i, float f} s1_1})

-0:30          'foo2b' (uniform structure{int i, float f, structure{int i, float f} s1_1})

+0:30        Compare Equal (temp bool)

+0:30          'foo2a' (uniform structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:30          'foo2b' (uniform structure{global int i, global float f, global structure{global int i, global float f} s1_1})

 0:30        true case

-0:31        move second child to first child (4-component vector of float)

-0:31          'v' (4-component vector of float)

-0:31          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:31        move second child to first child (temp 4-component vector of float)

+0:31          'v' (temp 4-component vector of float)

+0:31          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:31            'sampler' (uniform sampler2D)

 0:31            'coord' (smooth in 2-component vector of float)

 0:30        false case

-0:33        move second child to first child (4-component vector of float)

-0:33          'v' (4-component vector of float)

-0:33          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:33        move second child to first child (temp 4-component vector of float)

+0:33          'v' (temp 4-component vector of float)

+0:33          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:33            'sampler' (uniform sampler2D)

-0:33            vector-scale (2-component vector of float)

+0:33            vector-scale (temp 2-component vector of float)

 0:33              Constant:

 0:33                2.000000

 0:33              'coord' (smooth in 2-component vector of float)

-0:35      Test condition and select (void)

+0:35      Test condition and select (temp void)

 0:35        Condition

-0:35        Compare Equal (bool)

+0:35        Compare Equal (temp bool)

 0:35          'u' (smooth in 4-component vector of float)

-0:35          'v' (4-component vector of float)

+0:35          'v' (temp 4-component vector of float)

 0:35        true case

-0:36        vector scale second child into first child (4-component vector of float)

-0:36          'v' (4-component vector of float)

+0:36        vector scale second child into first child (temp 4-component vector of float)

+0:36          'v' (temp 4-component vector of float)

 0:36          Constant:

 0:36            3.000000

-0:38      Test condition and select (void)

+0:38      Test condition and select (temp void)

 0:38        Condition

-0:38        Compare Not Equal (bool)

+0:38        Compare Not Equal (temp bool)

 0:38          'u' (smooth in 4-component vector of float)

-0:38          'v' (4-component vector of float)

+0:38          'v' (temp 4-component vector of float)

 0:38        true case

-0:39        vector scale second child into first child (4-component vector of float)

-0:39          'v' (4-component vector of float)

+0:39        vector scale second child into first child (temp 4-component vector of float)

+0:39          'v' (temp 4-component vector of float)

 0:39          Constant:

 0:39            4.000000

-0:41      Test condition and select (void)

+0:41      Test condition and select (temp void)

 0:41        Condition

-0:41        Compare Equal (bool)

+0:41        Compare Equal (temp bool)

 0:41          'coord' (smooth in 2-component vector of float)

-0:41          vector swizzle (2-component vector of float)

-0:41            'v' (4-component vector of float)

+0:41          vector swizzle (temp 2-component vector of float)

+0:41            'v' (temp 4-component vector of float)

 0:41            Sequence

 0:41              Constant:

 0:41                1 (const int)

 0:41              Constant:

 0:41                3 (const int)

 0:41        true case

-0:42        vector scale second child into first child (4-component vector of float)

-0:42          'v' (4-component vector of float)

+0:42        vector scale second child into first child (temp 4-component vector of float)

+0:42          'v' (temp 4-component vector of float)

 0:42          Constant:

 0:42            5.000000

-0:44      Test condition and select (void)

+0:44      Test condition and select (temp void)

 0:44        Condition

-0:44        Compare Equal (bool)

-0:44          'a' (3-element array of structure{int i, float f})

-0:44          'b' (3-element array of structure{int i, float f})

+0:44        Compare Equal (temp bool)

+0:44          'a' (temp 3-element array of structure{global int i, global float f})

+0:44          'b' (temp 3-element array of structure{global int i, global float f})

 0:44        true case

-0:45        vector scale second child into first child (4-component vector of float)

-0:45          'v' (4-component vector of float)

+0:45        vector scale second child into first child (temp 4-component vector of float)

+0:45          'v' (temp 4-component vector of float)

 0:45          Constant:

 0:45            6.000000

-0:47      Test condition and select (void)

+0:47      Test condition and select (temp void)

 0:47        Condition

-0:47        Compare Not Equal (bool)

-0:47          'a' (3-element array of structure{int i, float f})

-0:47          'b' (3-element array of structure{int i, float f})

+0:47        Compare Not Equal (temp bool)

+0:47          'a' (temp 3-element array of structure{global int i, global float f})

+0:47          'b' (temp 3-element array of structure{global int i, global float f})

 0:47        true case

-0:48        vector scale second child into first child (4-component vector of float)

-0:48          'v' (4-component vector of float)

+0:48        vector scale second child into first child (temp 4-component vector of float)

+0:48          'v' (temp 4-component vector of float)

 0:48          Constant:

 0:48            7.000000

-0:50      move second child to first child (4-component vector of float)

+0:50      move second child to first child (temp 4-component vector of float)

 0:50        'gl_FragColor' (fragColor 4-component vector of float)

-0:50        'v' (4-component vector of float)

+0:50        'v' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'sampler' (uniform sampler2D)

 0:?     'coord' (smooth in 2-component vector of float)

 0:?     'u' (smooth in 4-component vector of float)

 0:?     'w' (smooth in 4-component vector of float)

-0:?     'foo1' (uniform structure{int i, float f})

-0:?     'foo2a' (uniform structure{int i, float f, structure{int i, float f} s1_1})

-0:?     'foo2b' (uniform structure{int i, float f, structure{int i, float f} s1_1})

+0:?     'foo1' (uniform structure{global int i, global float f})

+0:?     'foo2a' (uniform structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:?     'foo2b' (uniform structure{global int i, global float f, global structure{global int i, global float f} s1_1})

 

diff --git a/Test/baseResults/always-discard.frag.out b/Test/baseResults/always-discard.frag.out
index c190049..22238ff 100644
--- a/Test/baseResults/always-discard.frag.out
+++ b/Test/baseResults/always-discard.frag.out
@@ -2,35 +2,35 @@
 

 Shader version: 110

 0:? Sequence

-0:4  Function Definition: main( (void)

+0:4  Function Definition: main( (global void)

 0:4    Function Parameters: 

 0:6    Sequence

 0:6      Sequence

-0:6        move second child to first child (4-component vector of float)

-0:6          'white' (4-component vector of float)

+0:6        move second child to first child (temp 4-component vector of float)

+0:6          'white' (temp 4-component vector of float)

 0:6          Constant:

 0:6            1.000000

 0:6            1.000000

 0:6            1.000000

 0:6            1.000000

 0:7      Sequence

-0:7        move second child to first child (4-component vector of float)

-0:7          'black' (4-component vector of float)

+0:7        move second child to first child (temp 4-component vector of float)

+0:7          'black' (temp 4-component vector of float)

 0:7          Constant:

 0:7            0.200000

 0:7            0.200000

 0:7            0.200000

 0:7            0.200000

 0:8      Sequence

-0:8        move second child to first child (4-component vector of float)

-0:8          'color' (4-component vector of float)

-0:8          'white' (4-component vector of float)

+0:8        move second child to first child (temp 4-component vector of float)

+0:8          'color' (temp 4-component vector of float)

+0:8          'white' (temp 4-component vector of float)

 0:11      Sequence

-0:11        move second child to first child (float)

-0:11          'x' (float)

-0:11          subtract (float)

-0:11            component-wise multiply (float)

-0:11              direct index (float)

+0:11        move second child to first child (temp float)

+0:11          'x' (temp float)

+0:11          subtract (temp float)

+0:11            component-wise multiply (temp float)

+0:11              direct index (temp float)

 0:11                'tex_coord' (smooth in 2-component vector of float)

 0:11                Constant:

 0:11                  0 (const int)

@@ -39,11 +39,11 @@
 0:11            Constant:

 0:11              1.000000

 0:12      Sequence

-0:12        move second child to first child (float)

-0:12          'y' (float)

-0:12          subtract (float)

-0:12            component-wise multiply (float)

-0:12              direct index (float)

+0:12        move second child to first child (temp float)

+0:12          'y' (temp float)

+0:12          subtract (temp float)

+0:12            component-wise multiply (temp float)

+0:12              direct index (temp float)

 0:12                'tex_coord' (smooth in 2-component vector of float)

 0:12                Constant:

 0:12                  1 (const int)

@@ -52,68 +52,68 @@
 0:12            Constant:

 0:12              1.000000

 0:14      Sequence

-0:14        move second child to first child (float)

-0:14          'radius' (float)

-0:14          sqrt (float)

-0:14            add (float)

-0:14              component-wise multiply (float)

-0:14                'x' (float)

-0:14                'x' (float)

-0:14              component-wise multiply (float)

-0:14                'y' (float)

-0:14                'y' (float)

-0:15      Test condition and select (void)

+0:14        move second child to first child (temp float)

+0:14          'radius' (temp float)

+0:14          sqrt (global float)

+0:14            add (temp float)

+0:14              component-wise multiply (temp float)

+0:14                'x' (temp float)

+0:14                'x' (temp float)

+0:14              component-wise multiply (temp float)

+0:14                'y' (temp float)

+0:14                'y' (temp float)

+0:15      Test condition and select (temp void)

 0:15        Condition

-0:15        Compare Greater Than (bool)

-0:15          'radius' (float)

+0:15        Compare Greater Than (temp bool)

+0:15          'radius' (temp float)

 0:15          Constant:

 0:15            1.000000

 0:15        true case

 0:16        Sequence

-0:16          Test condition and select (void)

+0:16          Test condition and select (temp void)

 0:16            Condition

-0:16            Compare Greater Than (bool)

-0:16              'radius' (float)

+0:16            Compare Greater Than (temp bool)

+0:16              'radius' (temp float)

 0:16              Constant:

 0:16                1.100000

 0:16            true case

 0:17            Sequence

-0:17              Pre-Increment (4-component vector of float)

-0:17                'color' (4-component vector of float)

-0:20          move second child to first child (4-component vector of float)

+0:17              Pre-Increment (temp 4-component vector of float)

+0:17                'color' (temp 4-component vector of float)

+0:20          move second child to first child (temp 4-component vector of float)

 0:20            'gl_FragColor' (fragColor 4-component vector of float)

-0:20            'color' (4-component vector of float)

-0:22          Test condition and select (void)

+0:20            'color' (temp 4-component vector of float)

+0:22          Test condition and select (temp void)

 0:22            Condition

-0:22            Compare Greater Than (bool)

-0:22              'radius' (float)

+0:22            Compare Greater Than (temp bool)

+0:22              'radius' (temp float)

 0:22              Constant:

 0:22                1.200000

 0:22            true case

 0:23            Sequence

-0:23              Pre-Increment (4-component vector of float)

-0:23                'color' (4-component vector of float)

+0:23              Pre-Increment (temp 4-component vector of float)

+0:23                'color' (temp 4-component vector of float)

 0:28      Branch: Kill

-0:31      Test condition and select (void)

+0:31      Test condition and select (temp void)

 0:31        Condition

-0:31        Compare Greater Than or Equal (bool)

-0:31          'radius' (float)

+0:31        Compare Greater Than or Equal (temp bool)

+0:31          'radius' (temp float)

 0:31          Constant:

 0:31            0.750000

 0:31        true case

-0:32        subtract second child into first child (4-component vector of float)

-0:32          'color' (4-component vector of float)

-0:32          Absolute value (float)

-0:32            divide (float)

-0:32              pow (float)

-0:32                'radius' (float)

+0:32        subtract second child into first child (temp 4-component vector of float)

+0:32          'color' (temp 4-component vector of float)

+0:32          Absolute value (global float)

+0:32            divide (temp float)

+0:32              pow (global float)

+0:32                'radius' (temp float)

 0:32                Constant:

 0:32                  16.000000

 0:32              Constant:

 0:32                2.000000

-0:34      move second child to first child (4-component vector of float)

+0:34      move second child to first child (temp 4-component vector of float)

 0:34        'gl_FragColor' (fragColor 4-component vector of float)

-0:34        'color' (4-component vector of float)

+0:34        'color' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'tex_coord' (smooth in 2-component vector of float)

 

@@ -123,35 +123,35 @@
 

 Shader version: 110

 0:? Sequence

-0:4  Function Definition: main( (void)

+0:4  Function Definition: main( (global void)

 0:4    Function Parameters: 

 0:6    Sequence

 0:6      Sequence

-0:6        move second child to first child (4-component vector of float)

-0:6          'white' (4-component vector of float)

+0:6        move second child to first child (temp 4-component vector of float)

+0:6          'white' (temp 4-component vector of float)

 0:6          Constant:

 0:6            1.000000

 0:6            1.000000

 0:6            1.000000

 0:6            1.000000

 0:7      Sequence

-0:7        move second child to first child (4-component vector of float)

-0:7          'black' (4-component vector of float)

+0:7        move second child to first child (temp 4-component vector of float)

+0:7          'black' (temp 4-component vector of float)

 0:7          Constant:

 0:7            0.200000

 0:7            0.200000

 0:7            0.200000

 0:7            0.200000

 0:8      Sequence

-0:8        move second child to first child (4-component vector of float)

-0:8          'color' (4-component vector of float)

-0:8          'white' (4-component vector of float)

+0:8        move second child to first child (temp 4-component vector of float)

+0:8          'color' (temp 4-component vector of float)

+0:8          'white' (temp 4-component vector of float)

 0:11      Sequence

-0:11        move second child to first child (float)

-0:11          'x' (float)

-0:11          subtract (float)

-0:11            component-wise multiply (float)

-0:11              direct index (float)

+0:11        move second child to first child (temp float)

+0:11          'x' (temp float)

+0:11          subtract (temp float)

+0:11            component-wise multiply (temp float)

+0:11              direct index (temp float)

 0:11                'tex_coord' (smooth in 2-component vector of float)

 0:11                Constant:

 0:11                  0 (const int)

@@ -160,11 +160,11 @@
 0:11            Constant:

 0:11              1.000000

 0:12      Sequence

-0:12        move second child to first child (float)

-0:12          'y' (float)

-0:12          subtract (float)

-0:12            component-wise multiply (float)

-0:12              direct index (float)

+0:12        move second child to first child (temp float)

+0:12          'y' (temp float)

+0:12          subtract (temp float)

+0:12            component-wise multiply (temp float)

+0:12              direct index (temp float)

 0:12                'tex_coord' (smooth in 2-component vector of float)

 0:12                Constant:

 0:12                  1 (const int)

@@ -173,68 +173,68 @@
 0:12            Constant:

 0:12              1.000000

 0:14      Sequence

-0:14        move second child to first child (float)

-0:14          'radius' (float)

-0:14          sqrt (float)

-0:14            add (float)

-0:14              component-wise multiply (float)

-0:14                'x' (float)

-0:14                'x' (float)

-0:14              component-wise multiply (float)

-0:14                'y' (float)

-0:14                'y' (float)

-0:15      Test condition and select (void)

+0:14        move second child to first child (temp float)

+0:14          'radius' (temp float)

+0:14          sqrt (global float)

+0:14            add (temp float)

+0:14              component-wise multiply (temp float)

+0:14                'x' (temp float)

+0:14                'x' (temp float)

+0:14              component-wise multiply (temp float)

+0:14                'y' (temp float)

+0:14                'y' (temp float)

+0:15      Test condition and select (temp void)

 0:15        Condition

-0:15        Compare Greater Than (bool)

-0:15          'radius' (float)

+0:15        Compare Greater Than (temp bool)

+0:15          'radius' (temp float)

 0:15          Constant:

 0:15            1.000000

 0:15        true case

 0:16        Sequence

-0:16          Test condition and select (void)

+0:16          Test condition and select (temp void)

 0:16            Condition

-0:16            Compare Greater Than (bool)

-0:16              'radius' (float)

+0:16            Compare Greater Than (temp bool)

+0:16              'radius' (temp float)

 0:16              Constant:

 0:16                1.100000

 0:16            true case

 0:17            Sequence

-0:17              Pre-Increment (4-component vector of float)

-0:17                'color' (4-component vector of float)

-0:20          move second child to first child (4-component vector of float)

+0:17              Pre-Increment (temp 4-component vector of float)

+0:17                'color' (temp 4-component vector of float)

+0:20          move second child to first child (temp 4-component vector of float)

 0:20            'gl_FragColor' (fragColor 4-component vector of float)

-0:20            'color' (4-component vector of float)

-0:22          Test condition and select (void)

+0:20            'color' (temp 4-component vector of float)

+0:22          Test condition and select (temp void)

 0:22            Condition

-0:22            Compare Greater Than (bool)

-0:22              'radius' (float)

+0:22            Compare Greater Than (temp bool)

+0:22              'radius' (temp float)

 0:22              Constant:

 0:22                1.200000

 0:22            true case

 0:23            Sequence

-0:23              Pre-Increment (4-component vector of float)

-0:23                'color' (4-component vector of float)

+0:23              Pre-Increment (temp 4-component vector of float)

+0:23                'color' (temp 4-component vector of float)

 0:28      Branch: Kill

-0:31      Test condition and select (void)

+0:31      Test condition and select (temp void)

 0:31        Condition

-0:31        Compare Greater Than or Equal (bool)

-0:31          'radius' (float)

+0:31        Compare Greater Than or Equal (temp bool)

+0:31          'radius' (temp float)

 0:31          Constant:

 0:31            0.750000

 0:31        true case

-0:32        subtract second child into first child (4-component vector of float)

-0:32          'color' (4-component vector of float)

-0:32          Absolute value (float)

-0:32            divide (float)

-0:32              pow (float)

-0:32                'radius' (float)

+0:32        subtract second child into first child (temp 4-component vector of float)

+0:32          'color' (temp 4-component vector of float)

+0:32          Absolute value (global float)

+0:32            divide (temp float)

+0:32              pow (global float)

+0:32                'radius' (temp float)

 0:32                Constant:

 0:32                  16.000000

 0:32              Constant:

 0:32                2.000000

-0:34      move second child to first child (4-component vector of float)

+0:34      move second child to first child (temp 4-component vector of float)

 0:34        'gl_FragColor' (fragColor 4-component vector of float)

-0:34        'color' (4-component vector of float)

+0:34        'color' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'tex_coord' (smooth in 2-component vector of float)

 

diff --git a/Test/baseResults/always-discard2.frag.out b/Test/baseResults/always-discard2.frag.out
index c656faf..52681a4 100644
--- a/Test/baseResults/always-discard2.frag.out
+++ b/Test/baseResults/always-discard2.frag.out
@@ -2,35 +2,35 @@
 

 Shader version: 110

 0:? Sequence

-0:4  Function Definition: main( (void)

+0:4  Function Definition: main( (global void)

 0:4    Function Parameters: 

 0:6    Sequence

 0:6      Sequence

-0:6        move second child to first child (4-component vector of float)

-0:6          'white' (4-component vector of float)

+0:6        move second child to first child (temp 4-component vector of float)

+0:6          'white' (temp 4-component vector of float)

 0:6          Constant:

 0:6            1.000000

 0:6            1.000000

 0:6            1.000000

 0:6            1.000000

 0:7      Sequence

-0:7        move second child to first child (4-component vector of float)

-0:7          'black' (4-component vector of float)

+0:7        move second child to first child (temp 4-component vector of float)

+0:7          'black' (temp 4-component vector of float)

 0:7          Constant:

 0:7            0.200000

 0:7            0.200000

 0:7            0.200000

 0:7            0.200000

 0:8      Sequence

-0:8        move second child to first child (4-component vector of float)

-0:8          'color' (4-component vector of float)

-0:8          'white' (4-component vector of float)

+0:8        move second child to first child (temp 4-component vector of float)

+0:8          'color' (temp 4-component vector of float)

+0:8          'white' (temp 4-component vector of float)

 0:11      Sequence

-0:11        move second child to first child (float)

-0:11          'x' (float)

-0:11          subtract (float)

-0:11            component-wise multiply (float)

-0:11              direct index (float)

+0:11        move second child to first child (temp float)

+0:11          'x' (temp float)

+0:11          subtract (temp float)

+0:11            component-wise multiply (temp float)

+0:11              direct index (temp float)

 0:11                'tex_coord' (smooth in 2-component vector of float)

 0:11                Constant:

 0:11                  0 (const int)

@@ -39,11 +39,11 @@
 0:11            Constant:

 0:11              1.000000

 0:12      Sequence

-0:12        move second child to first child (float)

-0:12          'y' (float)

-0:12          subtract (float)

-0:12            component-wise multiply (float)

-0:12              direct index (float)

+0:12        move second child to first child (temp float)

+0:12          'y' (temp float)

+0:12          subtract (temp float)

+0:12            component-wise multiply (temp float)

+0:12              direct index (temp float)

 0:12                'tex_coord' (smooth in 2-component vector of float)

 0:12                Constant:

 0:12                  1 (const int)

@@ -52,9 +52,9 @@
 0:12            Constant:

 0:12              1.000000

 0:14      Branch: Kill

-0:17      move second child to first child (4-component vector of float)

+0:17      move second child to first child (temp 4-component vector of float)

 0:17        'gl_FragColor' (fragColor 4-component vector of float)

-0:17        'color' (4-component vector of float)

+0:17        'color' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'tex_coord' (smooth in 2-component vector of float)

 

@@ -64,35 +64,35 @@
 

 Shader version: 110

 0:? Sequence

-0:4  Function Definition: main( (void)

+0:4  Function Definition: main( (global void)

 0:4    Function Parameters: 

 0:6    Sequence

 0:6      Sequence

-0:6        move second child to first child (4-component vector of float)

-0:6          'white' (4-component vector of float)

+0:6        move second child to first child (temp 4-component vector of float)

+0:6          'white' (temp 4-component vector of float)

 0:6          Constant:

 0:6            1.000000

 0:6            1.000000

 0:6            1.000000

 0:6            1.000000

 0:7      Sequence

-0:7        move second child to first child (4-component vector of float)

-0:7          'black' (4-component vector of float)

+0:7        move second child to first child (temp 4-component vector of float)

+0:7          'black' (temp 4-component vector of float)

 0:7          Constant:

 0:7            0.200000

 0:7            0.200000

 0:7            0.200000

 0:7            0.200000

 0:8      Sequence

-0:8        move second child to first child (4-component vector of float)

-0:8          'color' (4-component vector of float)

-0:8          'white' (4-component vector of float)

+0:8        move second child to first child (temp 4-component vector of float)

+0:8          'color' (temp 4-component vector of float)

+0:8          'white' (temp 4-component vector of float)

 0:11      Sequence

-0:11        move second child to first child (float)

-0:11          'x' (float)

-0:11          subtract (float)

-0:11            component-wise multiply (float)

-0:11              direct index (float)

+0:11        move second child to first child (temp float)

+0:11          'x' (temp float)

+0:11          subtract (temp float)

+0:11            component-wise multiply (temp float)

+0:11              direct index (temp float)

 0:11                'tex_coord' (smooth in 2-component vector of float)

 0:11                Constant:

 0:11                  0 (const int)

@@ -101,11 +101,11 @@
 0:11            Constant:

 0:11              1.000000

 0:12      Sequence

-0:12        move second child to first child (float)

-0:12          'y' (float)

-0:12          subtract (float)

-0:12            component-wise multiply (float)

-0:12              direct index (float)

+0:12        move second child to first child (temp float)

+0:12          'y' (temp float)

+0:12          subtract (temp float)

+0:12            component-wise multiply (temp float)

+0:12              direct index (temp float)

 0:12                'tex_coord' (smooth in 2-component vector of float)

 0:12                Constant:

 0:12                  1 (const int)

@@ -114,9 +114,9 @@
 0:12            Constant:

 0:12              1.000000

 0:14      Branch: Kill

-0:17      move second child to first child (4-component vector of float)

+0:17      move second child to first child (temp 4-component vector of float)

 0:17        'gl_FragColor' (fragColor 4-component vector of float)

-0:17        'color' (4-component vector of float)

+0:17        'color' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'tex_coord' (smooth in 2-component vector of float)

 

diff --git a/Test/baseResults/array.frag.out b/Test/baseResults/array.frag.out
index f20b967..d2641e1 100644
--- a/Test/baseResults/array.frag.out
+++ b/Test/baseResults/array.frag.out
@@ -1,22 +1,22 @@
 array.frag

 ERROR: 0:21: '[' :  array index out of range '2'

 ERROR: 0:27: '[' :  array must be redeclared with a size before being indexed with a variable

-ERROR: 0:30: 'assign' :  cannot convert from '4-element array of float' to '5-element array of float'

-ERROR: 0:31: 'assign' :  cannot convert from '4-element array of float' to 'implicitly-sized array of float'

+ERROR: 0:30: 'assign' :  cannot convert from 'global 4-element array of float' to 'global 5-element array of float'

+ERROR: 0:31: 'assign' :  cannot convert from 'global 4-element array of float' to 'global implicitly-sized array of float'

 ERROR: 0:33: 'foo' : no matching overloaded function found 

 ERROR: 0:42: '[' :  array index out of range '5'

 ERROR: 0:45: '[' :  array index out of range '1000'

 ERROR: 0:46: '[' :  index out of range '-1'

 ERROR: 0:52: '[' :  array index out of range '2'

 ERROR: 0:54: 'const' : non-matching or non-convertible constant type for const initializer 

-ERROR: 0:56: '=' :  cannot convert from 'const 2-element array of int' to '3-element array of int'

+ERROR: 0:56: '=' :  cannot convert from 'const 2-element array of int' to 'temp 3-element array of int'

 ERROR: 0:57: '[]' : scalar integer expression required 

 ERROR: 0:57: '[' :  index out of range '-858993459'

 ERROR: 0:58: '[]' : scalar integer expression required 

 ERROR: 0:61: '' : array size required 

 ERROR: 0:62: '' : array size required 

 ERROR: 0:63: '' : array size required 

-ERROR: 0:66: '=' :  cannot convert from '3-component vector of float' to 'float'

+ERROR: 0:66: '=' :  cannot convert from 'temp 3-component vector of float' to 'global float'

 ERROR: 0:76: 'bar' : no matching overloaded function found 

 ERROR: 0:79: '' : array size required 

 ERROR: 0:84: 'return' : type does not match, or is not convertible to, the function's return type 

@@ -27,107 +27,107 @@
 

 Shader version: 130

 ERROR: node is still EOpNull!

-0:9  Function Definition: foo(f1[5]; (4-element array of float)

+0:9  Function Definition: foo(f1[5]; (global 4-element array of float)

 0:9    Function Parameters: 

 0:9      'a' (in 5-element array of float)

 0:11    Sequence

 0:11      Branch: Return with expression

-0:11        Construct float (4-element array of float)

-0:11          direct index (float)

+0:11        Construct float (temp 4-element array of float)

+0:11          direct index (temp float)

 0:11            'a' (in 5-element array of float)

 0:11            Constant:

 0:11              0 (const int)

-0:11          direct index (float)

+0:11          direct index (temp float)

 0:11            'a' (in 5-element array of float)

 0:11            Constant:

 0:11              1 (const int)

-0:11          direct index (float)

+0:11          direct index (temp float)

 0:11            'a' (in 5-element array of float)

 0:11            Constant:

 0:11              2 (const int)

-0:11          direct index (float)

+0:11          direct index (temp float)

 0:11            'a' (in 5-element array of float)

 0:11            Constant:

 0:11              3 (const int)

-0:14  Function Definition: bar(f1[5]; (void)

+0:14  Function Definition: bar(f1[5]; (global void)

 0:14    Function Parameters: 

 0:14      '' (in 5-element array of float)

-0:16  Function Definition: main( (void)

+0:16  Function Definition: main( (global void)

 0:16    Function Parameters: 

 0:?     Sequence

 0:?       Sequence

-0:21        move second child to first child (float)

-0:21          direct index (float)

-0:21            'gu' (2-element array of float)

+0:21        move second child to first child (temp float)

+0:21          direct index (temp float)

+0:21            'gu' (temp 2-element array of float)

 0:21            Constant:

 0:21              2 (const int)

 0:21          Constant:

 0:21            4.000000

-0:24      move second child to first child (float)

-0:24        direct index (float)

-0:24          'gu' (implicitly-sized array of float)

+0:24      move second child to first child (temp float)

+0:24        direct index (temp float)

+0:24          'gu' (global implicitly-sized array of float)

 0:24          Constant:

 0:24            2 (const int)

 0:24        Constant:

 0:24          4.000000

-0:26      move second child to first child (float)

-0:26        direct index (float)

-0:26          'gu' (implicitly-sized array of float)

+0:26      move second child to first child (temp float)

+0:26        direct index (temp float)

+0:26          'gu' (global implicitly-sized array of float)

 0:26          Constant:

 0:26            3 (const int)

 0:26        Constant:

 0:26          3.000000

-0:27      move second child to first child (float)

-0:27        indirect index (float)

-0:27          'gu' (implicitly-sized array of float)

+0:27      move second child to first child (temp float)

+0:27        indirect index (temp float)

+0:27          'gu' (global implicitly-sized array of float)

 0:27          'a' (uniform int)

 0:27        Constant:

 0:27          5.000000

-0:29      move second child to first child (4-element array of float)

-0:29        'g4' (4-element array of float)

-0:29        Function Call: foo(f1[5]; (4-element array of float)

-0:29          'g5' (5-element array of float)

-0:30      'g5' (5-element array of float)

-0:31      'gu' (implicitly-sized array of float)

+0:29      move second child to first child (temp 4-element array of float)

+0:29        'g4' (global 4-element array of float)

+0:29        Function Call: foo(f1[5]; (global 4-element array of float)

+0:29          'g5' (global 5-element array of float)

+0:30      'g5' (global 5-element array of float)

+0:31      'gu' (global implicitly-sized array of float)

 0:33      Constant:

 0:33        0.000000

-0:34      Function Call: bar(f1[5]; (void)

-0:34        'g5' (5-element array of float)

-0:36      Test condition and select (void)

+0:34      Function Call: bar(f1[5]; (global void)

+0:34        'g5' (global 5-element array of float)

+0:36      Test condition and select (temp void)

 0:36        Condition

-0:36        Compare Equal (bool)

+0:36        Compare Equal (temp bool)

 0:36          Constant:

 0:36            1.000000

 0:36            2.000000

 0:36            3.000000

 0:36            4.000000

-0:36          'g4' (4-element array of float)

+0:36          'g4' (global 4-element array of float)

 0:36        true case

-0:37        move second child to first child (float)

-0:37          direct index (float)

-0:37            'gu' (implicitly-sized array of float)

+0:37        move second child to first child (temp float)

+0:37          direct index (temp float)

+0:37            'gu' (global implicitly-sized array of float)

 0:37            Constant:

 0:37              0 (const int)

 0:37          Constant:

 0:37            2.000000

-0:40      move second child to first child (float)

-0:40        direct index (float)

-0:40          'u' (5-element array of float)

+0:40      move second child to first child (temp float)

+0:40        direct index (temp float)

+0:40          'u' (temp 5-element array of float)

 0:40          Constant:

 0:40            2 (const int)

 0:40        Constant:

 0:40          3.000000

-0:42      move second child to first child (float)

-0:42        direct index (float)

-0:42          'u' (5-element array of float)

+0:42      move second child to first child (temp float)

+0:42        direct index (temp float)

+0:42          'u' (temp 5-element array of float)

 0:42          Constant:

 0:42            5 (const int)

 0:42        Constant:

 0:42          5.000000

-0:43      Function Call: foo(f1[5]; (4-element array of float)

-0:43        'u' (5-element array of float)

-0:45      move second child to first child (4-component vector of float)

-0:45        direct index (4-component vector of float)

+0:43      Function Call: foo(f1[5]; (global 4-element array of float)

+0:43        'u' (temp 5-element array of float)

+0:45      move second child to first child (temp 4-component vector of float)

+0:45        direct index (temp 4-component vector of float)

 0:45          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

 0:45          Constant:

 0:45            1000 (const int)

@@ -136,8 +136,8 @@
 0:45          1.000000

 0:45          1.000000

 0:45          1.000000

-0:46      move second child to first child (4-component vector of float)

-0:46        direct index (4-component vector of float)

+0:46      move second child to first child (temp 4-component vector of float)

+0:46        direct index (temp 4-component vector of float)

 0:46          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

 0:46          Constant:

 0:46            -1 (const int)

@@ -146,8 +146,8 @@
 0:46          1.000000

 0:46          1.000000

 0:46          1.000000

-0:47      move second child to first child (4-component vector of float)

-0:47        direct index (4-component vector of float)

+0:47      move second child to first child (temp 4-component vector of float)

+0:47        direct index (temp 4-component vector of float)

 0:47          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

 0:47          Constant:

 0:47            3 (const int)

@@ -157,60 +157,60 @@
 0:47          1.000000

 0:47          1.000000

 0:50      Sequence

-0:50        move second child to first child (int)

-0:50          'sum' (int)

+0:50        move second child to first child (temp int)

+0:50          'sum' (temp int)

 0:50          Constant:

 0:50            3 (const int)

-0:51      add second child into first child (int)

-0:51        'sum' (int)

+0:51      add second child into first child (temp int)

+0:51        'sum' (temp int)

 0:51        Constant:

 0:51          2 (const int)

-0:52      add second child into first child (int)

-0:52        'sum' (int)

+0:52      add second child into first child (temp int)

+0:52        'sum' (temp int)

 0:52        Constant:

 0:52          2 (const int)

 0:55      Sequence

-0:55        move second child to first child (2-element array of int)

-0:55          'ica' (2-element array of int)

+0:55        move second child to first child (temp 2-element array of int)

+0:55          'ica' (temp 2-element array of int)

 0:55          Constant:

 0:55            3 (const int)

 0:55            2 (const int)

-0:57      move second child to first child (int)

-0:57        direct index (int)

-0:57          'ica' (2-element array of int)

+0:57      move second child to first child (temp int)

+0:57        direct index (temp int)

+0:57          'ica' (temp 2-element array of int)

 0:57          Constant:

 0:57            3.100000

 0:57        Constant:

 0:57          3 (const int)

-0:58      move second child to first child (int)

-0:58        indirect index (int)

-0:58          'ica' (2-element array of int)

-0:58          direct index (float)

-0:58            'u' (5-element array of float)

+0:58      move second child to first child (temp int)

+0:58        indirect index (temp int)

+0:58          'ica' (temp 2-element array of int)

+0:58          direct index (temp float)

+0:58            'u' (temp 5-element array of float)

 0:58            Constant:

 0:58              1 (const int)

 0:58        Constant:

 0:58          4 (const int)

-0:68  Function Definition: foo( (void)

+0:68  Function Definition: foo( (global void)

 0:68    Function Parameters: 

 0:?     Sequence

-0:71      move second child to first child (int)

-0:71        direct index (int)

-0:71          'uns' (implicitly-sized array of int)

+0:71      move second child to first child (temp int)

+0:71        direct index (temp int)

+0:71          'uns' (temp implicitly-sized array of int)

 0:71          Constant:

 0:71            3 (const int)

 0:71        Constant:

 0:71          40 (const int)

-0:72      move second child to first child (int)

-0:72        direct index (int)

-0:72          'uns' (implicitly-sized array of int)

+0:72      move second child to first child (temp int)

+0:72        direct index (temp int)

+0:72          'uns' (temp implicitly-sized array of int)

 0:72          Constant:

 0:72            1 (const int)

 0:72        Constant:

 0:72          30 (const int)

-0:73      move second child to first child (3-component vector of float)

-0:73        direct index (3-component vector of float)

-0:73          'guns' (implicitly-sized array of 3-component vector of float)

+0:73      move second child to first child (temp 3-component vector of float)

+0:73        direct index (temp 3-component vector of float)

+0:73          'guns' (global implicitly-sized array of 3-component vector of float)

 0:73          Constant:

 0:73            2 (const int)

 0:73        Constant:

@@ -219,19 +219,19 @@
 0:73          2.400000

 0:76      Constant:

 0:76        0.000000

-0:79  Function Definition: foo2( (implicitly-sized array of float)

+0:79  Function Definition: foo2( (global implicitly-sized array of float)

 0:79    Function Parameters: 

 0:?     Sequence

 0:82      Branch: Return with expression

-0:82        'f' (implicitly-sized array of float)

+0:82        'f' (temp implicitly-sized array of float)

 0:84      Branch: Return with expression

-0:84        'g' (9-element array of float)

-0:89  Function Definition: foo3( (void)

+0:84        'g' (temp 9-element array of float)

+0:89  Function Definition: foo3( (global void)

 0:89    Function Parameters: 

 0:?     Sequence

-0:92      move second child to first child (float)

-0:92        direct index (float)

-0:92          'resize1' (3-element array of float)

+0:92      move second child to first child (temp float)

+0:92        direct index (temp float)

+0:92          'resize1' (temp 3-element array of float)

 0:92          Constant:

 0:92            2 (const int)

 0:92        Constant:

@@ -240,30 +240,30 @@
 0:93        1 (const int)

 0:95      Constant:

 0:95        3 (const int)

-0:98      move second child to first child (float)

-0:98        direct index (float)

-0:98          'resize2' (5-element array of float)

+0:98      move second child to first child (temp float)

+0:98        direct index (temp float)

+0:98          'resize2' (temp 5-element array of float)

 0:98          Constant:

 0:98            5 (const int)

 0:98        Constant:

 0:98          4.000000

 0:100      Constant:

 0:100        5 (const int)

-0:101      move second child to first child (float)

-0:101        direct index (float)

-0:101          'resize2' (5-element array of float)

+0:101      move second child to first child (temp float)

+0:101        direct index (temp float)

+0:101          'resize2' (temp 5-element array of float)

 0:101          Constant:

 0:101            5 (const int)

 0:101        Constant:

 0:101          4.000000

 0:?   Linker Objects

-0:?     'gu' (implicitly-sized array of float)

-0:?     'g4' (4-element array of float)

-0:?     'g5' (5-element array of float)

+0:?     'gu' (global implicitly-sized array of float)

+0:?     'g4' (global 4-element array of float)

+0:?     'g5' (global 5-element array of float)

 0:?     'a' (uniform int)

-0:?     'guns' (implicitly-sized array of 3-component vector of float)

-0:?     'f' (float)

-0:?     'gUnusedUnsized' (implicitly-sized array of float)

+0:?     'guns' (global implicitly-sized array of 3-component vector of float)

+0:?     'f' (global float)

+0:?     'gUnusedUnsized' (global implicitly-sized array of float)

 

 

 Linked fragment stage:

@@ -271,107 +271,107 @@
 

 Shader version: 130

 ERROR: node is still EOpNull!

-0:9  Function Definition: foo(f1[5]; (4-element array of float)

+0:9  Function Definition: foo(f1[5]; (global 4-element array of float)

 0:9    Function Parameters: 

 0:9      'a' (in 5-element array of float)

 0:11    Sequence

 0:11      Branch: Return with expression

-0:11        Construct float (4-element array of float)

-0:11          direct index (float)

+0:11        Construct float (temp 4-element array of float)

+0:11          direct index (temp float)

 0:11            'a' (in 5-element array of float)

 0:11            Constant:

 0:11              0 (const int)

-0:11          direct index (float)

+0:11          direct index (temp float)

 0:11            'a' (in 5-element array of float)

 0:11            Constant:

 0:11              1 (const int)

-0:11          direct index (float)

+0:11          direct index (temp float)

 0:11            'a' (in 5-element array of float)

 0:11            Constant:

 0:11              2 (const int)

-0:11          direct index (float)

+0:11          direct index (temp float)

 0:11            'a' (in 5-element array of float)

 0:11            Constant:

 0:11              3 (const int)

-0:14  Function Definition: bar(f1[5]; (void)

+0:14  Function Definition: bar(f1[5]; (global void)

 0:14    Function Parameters: 

 0:14      '' (in 5-element array of float)

-0:16  Function Definition: main( (void)

+0:16  Function Definition: main( (global void)

 0:16    Function Parameters: 

 0:?     Sequence

 0:?       Sequence

-0:21        move second child to first child (float)

-0:21          direct index (float)

-0:21            'gu' (2-element array of float)

+0:21        move second child to first child (temp float)

+0:21          direct index (temp float)

+0:21            'gu' (temp 2-element array of float)

 0:21            Constant:

 0:21              2 (const int)

 0:21          Constant:

 0:21            4.000000

-0:24      move second child to first child (float)

-0:24        direct index (float)

-0:24          'gu' (4-element array of float)

+0:24      move second child to first child (temp float)

+0:24        direct index (temp float)

+0:24          'gu' (global 4-element array of float)

 0:24          Constant:

 0:24            2 (const int)

 0:24        Constant:

 0:24          4.000000

-0:26      move second child to first child (float)

-0:26        direct index (float)

-0:26          'gu' (4-element array of float)

+0:26      move second child to first child (temp float)

+0:26        direct index (temp float)

+0:26          'gu' (global 4-element array of float)

 0:26          Constant:

 0:26            3 (const int)

 0:26        Constant:

 0:26          3.000000

-0:27      move second child to first child (float)

-0:27        indirect index (float)

-0:27          'gu' (4-element array of float)

+0:27      move second child to first child (temp float)

+0:27        indirect index (temp float)

+0:27          'gu' (global 4-element array of float)

 0:27          'a' (uniform int)

 0:27        Constant:

 0:27          5.000000

-0:29      move second child to first child (4-element array of float)

-0:29        'g4' (4-element array of float)

-0:29        Function Call: foo(f1[5]; (4-element array of float)

-0:29          'g5' (5-element array of float)

-0:30      'g5' (5-element array of float)

-0:31      'gu' (4-element array of float)

+0:29      move second child to first child (temp 4-element array of float)

+0:29        'g4' (global 4-element array of float)

+0:29        Function Call: foo(f1[5]; (global 4-element array of float)

+0:29          'g5' (global 5-element array of float)

+0:30      'g5' (global 5-element array of float)

+0:31      'gu' (global 4-element array of float)

 0:33      Constant:

 0:33        0.000000

-0:34      Function Call: bar(f1[5]; (void)

-0:34        'g5' (5-element array of float)

-0:36      Test condition and select (void)

+0:34      Function Call: bar(f1[5]; (global void)

+0:34        'g5' (global 5-element array of float)

+0:36      Test condition and select (temp void)

 0:36        Condition

-0:36        Compare Equal (bool)

+0:36        Compare Equal (temp bool)

 0:36          Constant:

 0:36            1.000000

 0:36            2.000000

 0:36            3.000000

 0:36            4.000000

-0:36          'g4' (4-element array of float)

+0:36          'g4' (global 4-element array of float)

 0:36        true case

-0:37        move second child to first child (float)

-0:37          direct index (float)

-0:37            'gu' (4-element array of float)

+0:37        move second child to first child (temp float)

+0:37          direct index (temp float)

+0:37            'gu' (global 4-element array of float)

 0:37            Constant:

 0:37              0 (const int)

 0:37          Constant:

 0:37            2.000000

-0:40      move second child to first child (float)

-0:40        direct index (float)

-0:40          'u' (5-element array of float)

+0:40      move second child to first child (temp float)

+0:40        direct index (temp float)

+0:40          'u' (temp 5-element array of float)

 0:40          Constant:

 0:40            2 (const int)

 0:40        Constant:

 0:40          3.000000

-0:42      move second child to first child (float)

-0:42        direct index (float)

-0:42          'u' (5-element array of float)

+0:42      move second child to first child (temp float)

+0:42        direct index (temp float)

+0:42          'u' (temp 5-element array of float)

 0:42          Constant:

 0:42            5 (const int)

 0:42        Constant:

 0:42          5.000000

-0:43      Function Call: foo(f1[5]; (4-element array of float)

-0:43        'u' (5-element array of float)

-0:45      move second child to first child (4-component vector of float)

-0:45        direct index (4-component vector of float)

+0:43      Function Call: foo(f1[5]; (global 4-element array of float)

+0:43        'u' (temp 5-element array of float)

+0:45      move second child to first child (temp 4-component vector of float)

+0:45        direct index (temp 4-component vector of float)

 0:45          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

 0:45          Constant:

 0:45            1000 (const int)

@@ -380,8 +380,8 @@
 0:45          1.000000

 0:45          1.000000

 0:45          1.000000

-0:46      move second child to first child (4-component vector of float)

-0:46        direct index (4-component vector of float)

+0:46      move second child to first child (temp 4-component vector of float)

+0:46        direct index (temp 4-component vector of float)

 0:46          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

 0:46          Constant:

 0:46            -1 (const int)

@@ -390,8 +390,8 @@
 0:46          1.000000

 0:46          1.000000

 0:46          1.000000

-0:47      move second child to first child (4-component vector of float)

-0:47        direct index (4-component vector of float)

+0:47      move second child to first child (temp 4-component vector of float)

+0:47        direct index (temp 4-component vector of float)

 0:47          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

 0:47          Constant:

 0:47            3 (const int)

@@ -401,60 +401,60 @@
 0:47          1.000000

 0:47          1.000000

 0:50      Sequence

-0:50        move second child to first child (int)

-0:50          'sum' (int)

+0:50        move second child to first child (temp int)

+0:50          'sum' (temp int)

 0:50          Constant:

 0:50            3 (const int)

-0:51      add second child into first child (int)

-0:51        'sum' (int)

+0:51      add second child into first child (temp int)

+0:51        'sum' (temp int)

 0:51        Constant:

 0:51          2 (const int)

-0:52      add second child into first child (int)

-0:52        'sum' (int)

+0:52      add second child into first child (temp int)

+0:52        'sum' (temp int)

 0:52        Constant:

 0:52          2 (const int)

 0:55      Sequence

-0:55        move second child to first child (2-element array of int)

-0:55          'ica' (2-element array of int)

+0:55        move second child to first child (temp 2-element array of int)

+0:55          'ica' (temp 2-element array of int)

 0:55          Constant:

 0:55            3 (const int)

 0:55            2 (const int)

-0:57      move second child to first child (int)

-0:57        direct index (int)

-0:57          'ica' (2-element array of int)

+0:57      move second child to first child (temp int)

+0:57        direct index (temp int)

+0:57          'ica' (temp 2-element array of int)

 0:57          Constant:

 0:57            3.100000

 0:57        Constant:

 0:57          3 (const int)

-0:58      move second child to first child (int)

-0:58        indirect index (int)

-0:58          'ica' (2-element array of int)

-0:58          direct index (float)

-0:58            'u' (5-element array of float)

+0:58      move second child to first child (temp int)

+0:58        indirect index (temp int)

+0:58          'ica' (temp 2-element array of int)

+0:58          direct index (temp float)

+0:58            'u' (temp 5-element array of float)

 0:58            Constant:

 0:58              1 (const int)

 0:58        Constant:

 0:58          4 (const int)

-0:68  Function Definition: foo( (void)

+0:68  Function Definition: foo( (global void)

 0:68    Function Parameters: 

 0:?     Sequence

-0:71      move second child to first child (int)

-0:71        direct index (int)

-0:71          'uns' (4-element array of int)

+0:71      move second child to first child (temp int)

+0:71        direct index (temp int)

+0:71          'uns' (temp 4-element array of int)

 0:71          Constant:

 0:71            3 (const int)

 0:71        Constant:

 0:71          40 (const int)

-0:72      move second child to first child (int)

-0:72        direct index (int)

-0:72          'uns' (4-element array of int)

+0:72      move second child to first child (temp int)

+0:72        direct index (temp int)

+0:72          'uns' (temp 4-element array of int)

 0:72          Constant:

 0:72            1 (const int)

 0:72        Constant:

 0:72          30 (const int)

-0:73      move second child to first child (3-component vector of float)

-0:73        direct index (3-component vector of float)

-0:73          'guns' (8-element array of 3-component vector of float)

+0:73      move second child to first child (temp 3-component vector of float)

+0:73        direct index (temp 3-component vector of float)

+0:73          'guns' (global 8-element array of 3-component vector of float)

 0:73          Constant:

 0:73            2 (const int)

 0:73        Constant:

@@ -463,19 +463,19 @@
 0:73          2.400000

 0:76      Constant:

 0:76        0.000000

-0:79  Function Definition: foo2( (implicitly-sized array of float)

+0:79  Function Definition: foo2( (global implicitly-sized array of float)

 0:79    Function Parameters: 

 0:?     Sequence

 0:82      Branch: Return with expression

-0:82        'f' (1-element array of float)

+0:82        'f' (temp 1-element array of float)

 0:84      Branch: Return with expression

-0:84        'g' (9-element array of float)

-0:89  Function Definition: foo3( (void)

+0:84        'g' (temp 9-element array of float)

+0:89  Function Definition: foo3( (global void)

 0:89    Function Parameters: 

 0:?     Sequence

-0:92      move second child to first child (float)

-0:92        direct index (float)

-0:92          'resize1' (3-element array of float)

+0:92      move second child to first child (temp float)

+0:92        direct index (temp float)

+0:92          'resize1' (temp 3-element array of float)

 0:92          Constant:

 0:92            2 (const int)

 0:92        Constant:

@@ -484,28 +484,28 @@
 0:93        1 (const int)

 0:95      Constant:

 0:95        3 (const int)

-0:98      move second child to first child (float)

-0:98        direct index (float)

-0:98          'resize2' (5-element array of float)

+0:98      move second child to first child (temp float)

+0:98        direct index (temp float)

+0:98          'resize2' (temp 5-element array of float)

 0:98          Constant:

 0:98            5 (const int)

 0:98        Constant:

 0:98          4.000000

 0:100      Constant:

 0:100        5 (const int)

-0:101      move second child to first child (float)

-0:101        direct index (float)

-0:101          'resize2' (5-element array of float)

+0:101      move second child to first child (temp float)

+0:101        direct index (temp float)

+0:101          'resize2' (temp 5-element array of float)

 0:101          Constant:

 0:101            5 (const int)

 0:101        Constant:

 0:101          4.000000

 0:?   Linker Objects

-0:?     'gu' (4-element array of float)

-0:?     'g4' (4-element array of float)

-0:?     'g5' (5-element array of float)

+0:?     'gu' (global 4-element array of float)

+0:?     'g4' (global 4-element array of float)

+0:?     'g5' (global 5-element array of float)

 0:?     'a' (uniform int)

-0:?     'guns' (8-element array of 3-component vector of float)

-0:?     'f' (float)

-0:?     'gUnusedUnsized' (1-element array of float)

+0:?     'guns' (global 8-element array of 3-component vector of float)

+0:?     'f' (global float)

+0:?     'gUnusedUnsized' (global 1-element array of float)

 

diff --git a/Test/baseResults/array100.frag.out b/Test/baseResults/array100.frag.out
index cc31468..3f3f862 100644
--- a/Test/baseResults/array100.frag.out
+++ b/Test/baseResults/array100.frag.out
@@ -8,9 +8,9 @@
 ERROR: 0:21: '[' :  array index out of range '2'

 ERROR: 0:24: 'array assignment' : not supported for this version or the enabled extensions 

 ERROR: 0:25: 'array assignment' : not supported for this version or the enabled extensions 

-ERROR: 0:25: 'assign' :  cannot convert from '4-element array of mediump float' to '5-element array of mediump float'

+ERROR: 0:25: 'assign' :  cannot convert from 'global 4-element array of mediump float' to 'global 5-element array of mediump float'

 ERROR: 0:26: 'array assignment' : not supported for this version or the enabled extensions 

-ERROR: 0:26: 'assign' :  cannot convert from '4-element array of mediump float' to 'implicitly-sized array of mediump float'

+ERROR: 0:26: 'assign' :  cannot convert from 'global 4-element array of mediump float' to 'global implicitly-sized array of mediump float'

 ERROR: 0:28: 'foo' : no matching overloaded function found 

 ERROR: 0:31: 'arrayed constructor' : not supported for this version or the enabled extensions 

 ERROR: 0:31: 'array comparison' : not supported for this version or the enabled extensions 

@@ -26,80 +26,80 @@
 

 Shader version: 100

 ERROR: node is still EOpNull!

-0:9  Function Definition: foo(f1[5]; (4-element array of mediump float)

+0:9  Function Definition: foo(f1[5]; (global 4-element array of mediump float)

 0:9    Function Parameters: 

 0:9      'a' (in 5-element array of mediump float)

 0:11    Sequence

 0:11      Branch: Return with expression

-0:11        Construct float (4-element array of float)

-0:11          direct index (mediump float)

+0:11        Construct float (temp 4-element array of float)

+0:11          direct index (temp mediump float)

 0:11            'a' (in 5-element array of mediump float)

 0:11            Constant:

 0:11              0 (const int)

-0:11          direct index (mediump float)

+0:11          direct index (temp mediump float)

 0:11            'a' (in 5-element array of mediump float)

 0:11            Constant:

 0:11              1 (const int)

-0:11          direct index (mediump float)

+0:11          direct index (temp mediump float)

 0:11            'a' (in 5-element array of mediump float)

 0:11            Constant:

 0:11              2 (const int)

-0:11          direct index (mediump float)

+0:11          direct index (temp mediump float)

 0:11            'a' (in 5-element array of mediump float)

 0:11            Constant:

 0:11              3 (const int)

-0:14  Function Definition: bar(f1[5]; (void)

+0:14  Function Definition: bar(f1[5]; (global void)

 0:14    Function Parameters: 

 0:14      '' (in 5-element array of mediump float)

-0:16  Function Definition: main( (void)

+0:16  Function Definition: main( (global void)

 0:16    Function Parameters: 

 0:?     Sequence

 0:?       Sequence

-0:21        move second child to first child (mediump float)

-0:21          direct index (mediump float)

-0:21            'gu' (2-element array of mediump float)

+0:21        move second child to first child (temp mediump float)

+0:21          direct index (temp mediump float)

+0:21            'gu' (temp 2-element array of mediump float)

 0:21            Constant:

 0:21              2 (const int)

 0:21          Constant:

 0:21            4.000000

-0:24      move second child to first child (4-element array of mediump float)

-0:24        'g4' (4-element array of mediump float)

-0:24        Function Call: foo(f1[5]; (4-element array of mediump float)

-0:24          'g5' (5-element array of mediump float)

-0:25      'g5' (5-element array of mediump float)

-0:26      'gu' (implicitly-sized array of mediump float)

+0:24      move second child to first child (temp 4-element array of mediump float)

+0:24        'g4' (global 4-element array of mediump float)

+0:24        Function Call: foo(f1[5]; (global 4-element array of mediump float)

+0:24          'g5' (global 5-element array of mediump float)

+0:25      'g5' (global 5-element array of mediump float)

+0:26      'gu' (global implicitly-sized array of mediump float)

 0:28      Constant:

 0:28        0.000000

-0:29      Function Call: bar(f1[5]; (void)

-0:29        'g5' (5-element array of mediump float)

-0:31      Test condition and select (void)

+0:29      Function Call: bar(f1[5]; (global void)

+0:29        'g5' (global 5-element array of mediump float)

+0:31      Test condition and select (temp void)

 0:31        Condition

-0:31        Compare Equal (bool)

+0:31        Compare Equal (temp bool)

 0:31          Constant:

 0:31            1.000000

 0:31            2.000000

 0:31            3.000000

 0:31            4.000000

-0:31          'g4' (4-element array of mediump float)

+0:31          'g4' (global 4-element array of mediump float)

 0:31        true case

-0:32        move second child to first child (mediump float)

-0:32          direct index (mediump float)

-0:32            'gu' (implicitly-sized array of mediump float)

+0:32        move second child to first child (temp mediump float)

+0:32          direct index (temp mediump float)

+0:32            'gu' (global implicitly-sized array of mediump float)

 0:32            Constant:

 0:32              0 (const int)

 0:32          Constant:

 0:32            2.000000

-0:35      move second child to first child (mediump float)

-0:35        direct index (mediump float)

-0:35          'u' (5-element array of mediump float)

+0:35      move second child to first child (temp mediump float)

+0:35        direct index (temp mediump float)

+0:35          'u' (temp 5-element array of mediump float)

 0:35          Constant:

 0:35            5 (const int)

 0:35        Constant:

 0:35          5.000000

-0:36      Function Call: foo(f1[5]; (4-element array of mediump float)

-0:36        'u' (5-element array of mediump float)

-0:38      move second child to first child (mediump 4-component vector of float)

-0:38        direct index (mediump 4-component vector of float)

+0:36      Function Call: foo(f1[5]; (global 4-element array of mediump float)

+0:36        'u' (temp 5-element array of mediump float)

+0:38      move second child to first child (temp mediump 4-component vector of float)

+0:38        direct index (temp mediump 4-component vector of float)

 0:38          'gl_FragData' (fragColor 32-element array of mediump 4-component vector of float)

 0:38          Constant:

 0:38            1000 (const int)

@@ -108,8 +108,8 @@
 0:38          1.000000

 0:38          1.000000

 0:38          1.000000

-0:39      move second child to first child (mediump 4-component vector of float)

-0:39        direct index (mediump 4-component vector of float)

+0:39      move second child to first child (temp mediump 4-component vector of float)

+0:39        direct index (temp mediump 4-component vector of float)

 0:39          'gl_FragData' (fragColor 32-element array of mediump 4-component vector of float)

 0:39          Constant:

 0:39            -1 (const int)

@@ -118,8 +118,8 @@
 0:39          1.000000

 0:39          1.000000

 0:39          1.000000

-0:40      move second child to first child (mediump 4-component vector of float)

-0:40        direct index (mediump 4-component vector of float)

+0:40      move second child to first child (temp mediump 4-component vector of float)

+0:40        direct index (temp mediump 4-component vector of float)

 0:40          'gl_FragData' (fragColor 32-element array of mediump 4-component vector of float)

 0:40          Constant:

 0:40            3 (const int)

@@ -128,33 +128,33 @@
 0:40          1.000000

 0:40          1.000000

 0:40          1.000000

-0:53  Function Definition: bar9( (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

+0:53  Function Definition: bar9( (global structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

 0:53    Function Parameters: 

 0:?     Sequence

 0:56      Branch: Return with expression

-0:56        's' (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:59  Function Definition: bar10(struct-SB-vf4-struct-SA-vf3-vf2[4]11; (void)

+0:56        's' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:59  Function Definition: bar10(struct-SB-vf4-struct-SA-vf3-vf2[4]11; (global void)

 0:59    Function Parameters: 

-0:59      's' (in structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:63  Function Definition: bar11( (void)

+0:59      's' (in structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:63  Function Definition: bar11( (global void)

 0:63    Function Parameters: 

 0:?     Sequence

-0:66      move second child to first child (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:66        's1' (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:66        's2' (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:67      Function Call: bar10(struct-SB-vf4-struct-SA-vf3-vf2[4]11; (void)

-0:67        's1' (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:68      move second child to first child (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:68        's2' (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:68        Function Call: bar9( (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

+0:66      move second child to first child (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:66        's1' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:66        's2' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:67      Function Call: bar10(struct-SB-vf4-struct-SA-vf3-vf2[4]11; (global void)

+0:67        's1' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:68      move second child to first child (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:68        's2' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:68        Function Call: bar9( (global structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

 0:69      Sequence

-0:69        move second child to first child (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:69          'initSb' (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:69          's1' (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

+0:69        move second child to first child (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:69          'initSb' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:69          's1' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

 0:?   Linker Objects

-0:?     'gu' (implicitly-sized array of mediump float)

-0:?     'g4' (4-element array of mediump float)

-0:?     'g5' (5-element array of mediump float)

+0:?     'gu' (global implicitly-sized array of mediump float)

+0:?     'g4' (global 4-element array of mediump float)

+0:?     'g5' (global 5-element array of mediump float)

 0:?     'a' (uniform mediump int)

 

 

@@ -163,80 +163,80 @@
 

 Shader version: 100

 ERROR: node is still EOpNull!

-0:9  Function Definition: foo(f1[5]; (4-element array of mediump float)

+0:9  Function Definition: foo(f1[5]; (global 4-element array of mediump float)

 0:9    Function Parameters: 

 0:9      'a' (in 5-element array of mediump float)

 0:11    Sequence

 0:11      Branch: Return with expression

-0:11        Construct float (4-element array of float)

-0:11          direct index (mediump float)

+0:11        Construct float (temp 4-element array of float)

+0:11          direct index (temp mediump float)

 0:11            'a' (in 5-element array of mediump float)

 0:11            Constant:

 0:11              0 (const int)

-0:11          direct index (mediump float)

+0:11          direct index (temp mediump float)

 0:11            'a' (in 5-element array of mediump float)

 0:11            Constant:

 0:11              1 (const int)

-0:11          direct index (mediump float)

+0:11          direct index (temp mediump float)

 0:11            'a' (in 5-element array of mediump float)

 0:11            Constant:

 0:11              2 (const int)

-0:11          direct index (mediump float)

+0:11          direct index (temp mediump float)

 0:11            'a' (in 5-element array of mediump float)

 0:11            Constant:

 0:11              3 (const int)

-0:14  Function Definition: bar(f1[5]; (void)

+0:14  Function Definition: bar(f1[5]; (global void)

 0:14    Function Parameters: 

 0:14      '' (in 5-element array of mediump float)

-0:16  Function Definition: main( (void)

+0:16  Function Definition: main( (global void)

 0:16    Function Parameters: 

 0:?     Sequence

 0:?       Sequence

-0:21        move second child to first child (mediump float)

-0:21          direct index (mediump float)

-0:21            'gu' (2-element array of mediump float)

+0:21        move second child to first child (temp mediump float)

+0:21          direct index (temp mediump float)

+0:21            'gu' (temp 2-element array of mediump float)

 0:21            Constant:

 0:21              2 (const int)

 0:21          Constant:

 0:21            4.000000

-0:24      move second child to first child (4-element array of mediump float)

-0:24        'g4' (4-element array of mediump float)

-0:24        Function Call: foo(f1[5]; (4-element array of mediump float)

-0:24          'g5' (5-element array of mediump float)

-0:25      'g5' (5-element array of mediump float)

-0:26      'gu' (1-element array of mediump float)

+0:24      move second child to first child (temp 4-element array of mediump float)

+0:24        'g4' (global 4-element array of mediump float)

+0:24        Function Call: foo(f1[5]; (global 4-element array of mediump float)

+0:24          'g5' (global 5-element array of mediump float)

+0:25      'g5' (global 5-element array of mediump float)

+0:26      'gu' (global 1-element array of mediump float)

 0:28      Constant:

 0:28        0.000000

-0:29      Function Call: bar(f1[5]; (void)

-0:29        'g5' (5-element array of mediump float)

-0:31      Test condition and select (void)

+0:29      Function Call: bar(f1[5]; (global void)

+0:29        'g5' (global 5-element array of mediump float)

+0:31      Test condition and select (temp void)

 0:31        Condition

-0:31        Compare Equal (bool)

+0:31        Compare Equal (temp bool)

 0:31          Constant:

 0:31            1.000000

 0:31            2.000000

 0:31            3.000000

 0:31            4.000000

-0:31          'g4' (4-element array of mediump float)

+0:31          'g4' (global 4-element array of mediump float)

 0:31        true case

-0:32        move second child to first child (mediump float)

-0:32          direct index (mediump float)

-0:32            'gu' (1-element array of mediump float)

+0:32        move second child to first child (temp mediump float)

+0:32          direct index (temp mediump float)

+0:32            'gu' (global 1-element array of mediump float)

 0:32            Constant:

 0:32              0 (const int)

 0:32          Constant:

 0:32            2.000000

-0:35      move second child to first child (mediump float)

-0:35        direct index (mediump float)

-0:35          'u' (5-element array of mediump float)

+0:35      move second child to first child (temp mediump float)

+0:35        direct index (temp mediump float)

+0:35          'u' (temp 5-element array of mediump float)

 0:35          Constant:

 0:35            5 (const int)

 0:35        Constant:

 0:35          5.000000

-0:36      Function Call: foo(f1[5]; (4-element array of mediump float)

-0:36        'u' (5-element array of mediump float)

-0:38      move second child to first child (mediump 4-component vector of float)

-0:38        direct index (mediump 4-component vector of float)

+0:36      Function Call: foo(f1[5]; (global 4-element array of mediump float)

+0:36        'u' (temp 5-element array of mediump float)

+0:38      move second child to first child (temp mediump 4-component vector of float)

+0:38        direct index (temp mediump 4-component vector of float)

 0:38          'gl_FragData' (fragColor 32-element array of mediump 4-component vector of float)

 0:38          Constant:

 0:38            1000 (const int)

@@ -245,8 +245,8 @@
 0:38          1.000000

 0:38          1.000000

 0:38          1.000000

-0:39      move second child to first child (mediump 4-component vector of float)

-0:39        direct index (mediump 4-component vector of float)

+0:39      move second child to first child (temp mediump 4-component vector of float)

+0:39        direct index (temp mediump 4-component vector of float)

 0:39          'gl_FragData' (fragColor 32-element array of mediump 4-component vector of float)

 0:39          Constant:

 0:39            -1 (const int)

@@ -255,8 +255,8 @@
 0:39          1.000000

 0:39          1.000000

 0:39          1.000000

-0:40      move second child to first child (mediump 4-component vector of float)

-0:40        direct index (mediump 4-component vector of float)

+0:40      move second child to first child (temp mediump 4-component vector of float)

+0:40        direct index (temp mediump 4-component vector of float)

 0:40          'gl_FragData' (fragColor 32-element array of mediump 4-component vector of float)

 0:40          Constant:

 0:40            3 (const int)

@@ -265,32 +265,32 @@
 0:40          1.000000

 0:40          1.000000

 0:40          1.000000

-0:53  Function Definition: bar9( (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

+0:53  Function Definition: bar9( (global structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

 0:53    Function Parameters: 

 0:?     Sequence

 0:56      Branch: Return with expression

-0:56        's' (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:59  Function Definition: bar10(struct-SB-vf4-struct-SA-vf3-vf2[4]11; (void)

+0:56        's' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:59  Function Definition: bar10(struct-SB-vf4-struct-SA-vf3-vf2[4]11; (global void)

 0:59    Function Parameters: 

-0:59      's' (in structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:63  Function Definition: bar11( (void)

+0:59      's' (in structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:63  Function Definition: bar11( (global void)

 0:63    Function Parameters: 

 0:?     Sequence

-0:66      move second child to first child (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:66        's1' (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:66        's2' (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:67      Function Call: bar10(struct-SB-vf4-struct-SA-vf3-vf2[4]11; (void)

-0:67        's1' (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:68      move second child to first child (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:68        's2' (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:68        Function Call: bar9( (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

+0:66      move second child to first child (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:66        's1' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:66        's2' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:67      Function Call: bar10(struct-SB-vf4-struct-SA-vf3-vf2[4]11; (global void)

+0:67        's1' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:68      move second child to first child (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:68        's2' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:68        Function Call: bar9( (global structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

 0:69      Sequence

-0:69        move second child to first child (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:69          'initSb' (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

-0:69          's1' (structure{mediump 4-component vector of float v4, structure{mediump 3-component vector of float v3, 4-element array of mediump 2-component vector of float v2} sa})

+0:69        move second child to first child (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:69          'initSb' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

+0:69          's1' (temp structure{global mediump 4-component vector of float v4, global structure{global mediump 3-component vector of float v3, global 4-element array of mediump 2-component vector of float v2} sa})

 0:?   Linker Objects

-0:?     'gu' (1-element array of mediump float)

-0:?     'g4' (4-element array of mediump float)

-0:?     'g5' (5-element array of mediump float)

+0:?     'gu' (global 1-element array of mediump float)

+0:?     'g4' (global 4-element array of mediump float)

+0:?     'g5' (global 5-element array of mediump float)

 0:?     'a' (uniform mediump int)

 

diff --git a/Test/baseResults/atomic_uint.frag.out b/Test/baseResults/atomic_uint.frag.out
index ddea17f..23728b7 100644
--- a/Test/baseResults/atomic_uint.frag.out
+++ b/Test/baseResults/atomic_uint.frag.out
@@ -23,45 +23,45 @@
 

 Shader version: 420

 ERROR: node is still EOpNull!

-0:5  Function Definition: func(au1; (uint)

+0:5  Function Definition: func(au1; (global uint)

 0:5    Function Parameters: 

 0:5      'c' (in atomic_uint)

 0:7    Sequence

 0:7      Branch: Return with expression

-0:7        Function Call: atomicCounterIncrement(au1; (uint)

+0:7        Function Call: atomicCounterIncrement(au1; (global uint)

 0:7          'c' (in atomic_uint)

-0:10  Function Definition: func2(au1; (uint)

+0:10  Function Definition: func2(au1; (global uint)

 0:10    Function Parameters: 

 0:10      'c' (out atomic_uint)

 0:12    Sequence

 0:12      Branch: Return with expression

 0:12        'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

 0:13      Branch: Return with expression

-0:13        Function Call: atomicCounter(au1; (uint)

+0:13        Function Call: atomicCounter(au1; (global uint)

 0:13          'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

-0:16  Function Definition: main( (void)

+0:16  Function Definition: main( (global void)

 0:16    Function Parameters: 

 0:?     Sequence

 0:19      Sequence

-0:19        move second child to first child (uint)

-0:19          'val' (uint)

-0:19          Function Call: atomicCounter(au1; (uint)

+0:19        move second child to first child (temp uint)

+0:19          'val' (temp uint)

+0:19          Function Call: atomicCounter(au1; (global uint)

 0:19            'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

-0:20      Function Call: atomicCounterDecrement(au1; (uint)

+0:20      Function Call: atomicCounterDecrement(au1; (global uint)

 0:20        'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

-0:26  Function Definition: opac( (void)

+0:26  Function Definition: opac( (global void)

 0:26    Function Parameters: 

 0:28    Sequence

 0:28      'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

 0:29      'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

-0:31      indirect index (int)

-0:31        'a' (3-element array of int)

+0:31      indirect index (temp int)

+0:31        'a' (temp 3-element array of int)

 0:31        'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

-0:32      direct index (layout(binding=1 offset=3 ) atomic_uint)

+0:32      direct index (layout(binding=1 offset=3 ) temp atomic_uint)

 0:32        'countArr' (layout(binding=1 offset=3 ) uniform 4-element array of atomic_uint)

 0:32        Constant:

 0:32          2 (const int)

-0:33      indirect index (layout(binding=1 offset=3 ) atomic_uint)

+0:33      indirect index (layout(binding=1 offset=3 ) temp atomic_uint)

 0:33        'countArr' (layout(binding=1 offset=3 ) uniform 4-element array of atomic_uint)

 0:33        'i' (uniform int)

 0:34      'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

@@ -70,7 +70,7 @@
 0:?     'countArr' (layout(binding=1 offset=3 ) uniform 4-element array of atomic_uint)

 0:?     'i' (uniform int)

 0:?     'acin' (smooth in atomic_uint)

-0:?     'acg' (atomic_uint)

+0:?     'acg' (global atomic_uint)

 0:?     'aNoBind' (uniform atomic_uint)

 0:?     'aOffset' (layout(binding=0 offset=32 ) uniform atomic_uint)

 0:?     'bar3' (layout(binding=0 offset=4 ) uniform atomic_uint)

@@ -86,45 +86,45 @@
 

 Shader version: 420

 ERROR: node is still EOpNull!

-0:5  Function Definition: func(au1; (uint)

+0:5  Function Definition: func(au1; (global uint)

 0:5    Function Parameters: 

 0:5      'c' (in atomic_uint)

 0:7    Sequence

 0:7      Branch: Return with expression

-0:7        Function Call: atomicCounterIncrement(au1; (uint)

+0:7        Function Call: atomicCounterIncrement(au1; (global uint)

 0:7          'c' (in atomic_uint)

-0:10  Function Definition: func2(au1; (uint)

+0:10  Function Definition: func2(au1; (global uint)

 0:10    Function Parameters: 

 0:10      'c' (out atomic_uint)

 0:12    Sequence

 0:12      Branch: Return with expression

 0:12        'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

 0:13      Branch: Return with expression

-0:13        Function Call: atomicCounter(au1; (uint)

+0:13        Function Call: atomicCounter(au1; (global uint)

 0:13          'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

-0:16  Function Definition: main( (void)

+0:16  Function Definition: main( (global void)

 0:16    Function Parameters: 

 0:?     Sequence

 0:19      Sequence

-0:19        move second child to first child (uint)

-0:19          'val' (uint)

-0:19          Function Call: atomicCounter(au1; (uint)

+0:19        move second child to first child (temp uint)

+0:19          'val' (temp uint)

+0:19          Function Call: atomicCounter(au1; (global uint)

 0:19            'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

-0:20      Function Call: atomicCounterDecrement(au1; (uint)

+0:20      Function Call: atomicCounterDecrement(au1; (global uint)

 0:20        'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

-0:26  Function Definition: opac( (void)

+0:26  Function Definition: opac( (global void)

 0:26    Function Parameters: 

 0:28    Sequence

 0:28      'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

 0:29      'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

-0:31      indirect index (int)

-0:31        'a' (3-element array of int)

+0:31      indirect index (temp int)

+0:31        'a' (temp 3-element array of int)

 0:31        'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

-0:32      direct index (layout(binding=1 offset=3 ) atomic_uint)

+0:32      direct index (layout(binding=1 offset=3 ) temp atomic_uint)

 0:32        'countArr' (layout(binding=1 offset=3 ) uniform 4-element array of atomic_uint)

 0:32        Constant:

 0:32          2 (const int)

-0:33      indirect index (layout(binding=1 offset=3 ) atomic_uint)

+0:33      indirect index (layout(binding=1 offset=3 ) temp atomic_uint)

 0:33        'countArr' (layout(binding=1 offset=3 ) uniform 4-element array of atomic_uint)

 0:33        'i' (uniform int)

 0:34      'counter' (layout(binding=0 offset=0 ) uniform atomic_uint)

@@ -133,7 +133,7 @@
 0:?     'countArr' (layout(binding=1 offset=3 ) uniform 4-element array of atomic_uint)

 0:?     'i' (uniform int)

 0:?     'acin' (smooth in atomic_uint)

-0:?     'acg' (atomic_uint)

+0:?     'acg' (global atomic_uint)

 0:?     'aNoBind' (uniform atomic_uint)

 0:?     'aOffset' (layout(binding=0 offset=32 ) uniform atomic_uint)

 0:?     'bar3' (layout(binding=0 offset=4 ) uniform atomic_uint)

diff --git a/Test/baseResults/comment.frag.out b/Test/baseResults/comment.frag.out
index 3c8de13..cf008a6 100644
--- a/Test/baseResults/comment.frag.out
+++ b/Test/baseResults/comment.frag.out
@@ -5,7 +5,7 @@
 

 Shader version: 430

 0:? Sequence

-0:17  Function Definition: main( (void)

+0:17  Function Definition: main( (global void)

 0:17    Function Parameters: 

 0:?   Linker Objects

 0:?     'v' (smooth in 4-component vector of float)

@@ -16,7 +16,7 @@
 

 Shader version: 430

 0:? Sequence

-0:17  Function Definition: main( (void)

+0:17  Function Definition: main( (global void)

 0:17    Function Parameters: 

 0:?   Linker Objects

 0:?     'v' (smooth in 4-component vector of float)

diff --git a/Test/baseResults/conditionalDiscard.frag.out b/Test/baseResults/conditionalDiscard.frag.out
index 50197c8..94cba9d 100644
--- a/Test/baseResults/conditionalDiscard.frag.out
+++ b/Test/baseResults/conditionalDiscard.frag.out
@@ -2,19 +2,19 @@
 

 Shader version: 110

 0:? Sequence

-0:6  Function Definition: main( (void)

+0:6  Function Definition: main( (global void)

 0:6    Function Parameters: 

 0:8    Sequence

 0:8      Sequence

-0:8        move second child to first child (4-component vector of float)

-0:8          'v' (4-component vector of float)

-0:8          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:8        move second child to first child (temp 4-component vector of float)

+0:8          'v' (temp 4-component vector of float)

+0:8          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:8            'tex' (uniform sampler2D)

 0:8            'coord' (smooth in 2-component vector of float)

-0:10      Test condition and select (void)

+0:10      Test condition and select (temp void)

 0:10        Condition

-0:10        Compare Equal (bool)

-0:10          'v' (4-component vector of float)

+0:10        Compare Equal (temp bool)

+0:10          'v' (temp 4-component vector of float)

 0:10          Constant:

 0:10            0.100000

 0:10            0.200000

@@ -22,9 +22,9 @@
 0:10            0.400000

 0:10        true case

 0:11        Branch: Kill

-0:13      move second child to first child (4-component vector of float)

+0:13      move second child to first child (temp 4-component vector of float)

 0:13        'gl_FragColor' (fragColor 4-component vector of float)

-0:13        'v' (4-component vector of float)

+0:13        'v' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'tex' (uniform sampler2D)

 0:?     'coord' (smooth in 2-component vector of float)

@@ -35,19 +35,19 @@
 

 Shader version: 110

 0:? Sequence

-0:6  Function Definition: main( (void)

+0:6  Function Definition: main( (global void)

 0:6    Function Parameters: 

 0:8    Sequence

 0:8      Sequence

-0:8        move second child to first child (4-component vector of float)

-0:8          'v' (4-component vector of float)

-0:8          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:8        move second child to first child (temp 4-component vector of float)

+0:8          'v' (temp 4-component vector of float)

+0:8          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:8            'tex' (uniform sampler2D)

 0:8            'coord' (smooth in 2-component vector of float)

-0:10      Test condition and select (void)

+0:10      Test condition and select (temp void)

 0:10        Condition

-0:10        Compare Equal (bool)

-0:10          'v' (4-component vector of float)

+0:10        Compare Equal (temp bool)

+0:10          'v' (temp 4-component vector of float)

 0:10          Constant:

 0:10            0.100000

 0:10            0.200000

@@ -55,9 +55,9 @@
 0:10            0.400000

 0:10        true case

 0:11        Branch: Kill

-0:13      move second child to first child (4-component vector of float)

+0:13      move second child to first child (temp 4-component vector of float)

 0:13        'gl_FragColor' (fragColor 4-component vector of float)

-0:13        'v' (4-component vector of float)

+0:13        'v' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'tex' (uniform sampler2D)

 0:?     'coord' (smooth in 2-component vector of float)

diff --git a/Test/baseResults/constErrors.frag.out b/Test/baseResults/constErrors.frag.out
index 2381b35..9ecf330 100644
--- a/Test/baseResults/constErrors.frag.out
+++ b/Test/baseResults/constErrors.frag.out
@@ -6,18 +6,18 @@
 ERROR: 0:18: '' : array size must be a constant integer expression 

 ERROR: 0:19: '' : constant expression required 

 ERROR: 0:19: '' : array size must be a constant integer expression 

-ERROR: 0:27: '=' : global const initializers must be constant 'const structure{3-component vector of float v3, 2-component vector of int iv2}'

-ERROR: 0:33: '=' : global const initializers must be constant 'const structure{3-component vector of float v3, 2-component vector of int iv2, 2X4 matrix of float m}'

+ERROR: 0:27: '=' : global const initializers must be constant 'const structure{global 3-component vector of float v3, global 2-component vector of int iv2}'

+ERROR: 0:33: '=' : global const initializers must be constant 'const structure{global 3-component vector of float v3, global 2-component vector of int iv2, global 2X4 matrix of float m}'

 ERROR: 9 compilation errors.  No code generated.

 

 

 Shader version: 330

 ERROR: node is still EOpNull!

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:?     Sequence

 0:14      Sequence

-0:14        move second child to first child (int)

+0:14        move second child to first child (temp int)

 0:14          'a3' (const (read only) int)

 0:14          'uniformInt' (uniform int)

 0:?   Linker Objects

@@ -26,8 +26,8 @@
 0:?     'constInt' (const int)

 0:?       3 (const int)

 0:?     'uniformInt' (uniform int)

-0:?     's' (structure{3-component vector of float v3, 2-component vector of int iv2})

-0:?     's2' (structure{3-component vector of float v3, 2-component vector of int iv2, 2X4 matrix of float m})

+0:?     's' (temp structure{global 3-component vector of float v3, global 2-component vector of int iv2})

+0:?     's2' (temp structure{global 3-component vector of float v3, global 2-component vector of int iv2, global 2X4 matrix of float m})

 0:?     'f' (const float)

 0:?       3.000000

 

@@ -37,11 +37,11 @@
 

 Shader version: 330

 ERROR: node is still EOpNull!

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:?     Sequence

 0:14      Sequence

-0:14        move second child to first child (int)

+0:14        move second child to first child (temp int)

 0:14          'a3' (const (read only) int)

 0:14          'uniformInt' (uniform int)

 0:?   Linker Objects

@@ -50,8 +50,8 @@
 0:?     'constInt' (const int)

 0:?       3 (const int)

 0:?     'uniformInt' (uniform int)

-0:?     's' (structure{3-component vector of float v3, 2-component vector of int iv2})

-0:?     's2' (structure{3-component vector of float v3, 2-component vector of int iv2, 2X4 matrix of float m})

+0:?     's' (temp structure{global 3-component vector of float v3, global 2-component vector of int iv2})

+0:?     's2' (temp structure{global 3-component vector of float v3, global 2-component vector of int iv2, global 2X4 matrix of float m})

 0:?     'f' (const float)

 0:?       3.000000

 

diff --git a/Test/baseResults/constFold.frag.out b/Test/baseResults/constFold.frag.out
index 06fc020..ed8c0ea 100644
--- a/Test/baseResults/constFold.frag.out
+++ b/Test/baseResults/constFold.frag.out
@@ -11,165 +11,165 @@
 

 Shader version: 430

 ERROR: node is still EOpNull!

-0:28  Function Definition: main( (void)

+0:28  Function Definition: main( (global void)

 0:28    Function Parameters: 

 0:30    Sequence

 0:30      Sequence

-0:30        move second child to first child (4-component vector of float)

-0:30          'dx' (4-component vector of float)

-0:30          dPdx (4-component vector of float)

+0:30        move second child to first child (temp 4-component vector of float)

+0:30          'dx' (temp 4-component vector of float)

+0:30          dPdx (global 4-component vector of float)

 0:30            'inv' (smooth in 4-component vector of float)

-0:37      move second child to first child (4-component vector of float)

+0:37      move second child to first child (temp 4-component vector of float)

 0:37        'FragColor' (out 4-component vector of float)

 0:37        Constant:

 0:37          2.000000

 0:37          6.000000

 0:37          3.000000

 0:37          171.887339

-0:42      move second child to first child (4-component vector of float)

+0:42      move second child to first child (temp 4-component vector of float)

 0:42        'FragColor' (out 4-component vector of float)

 0:42        Constant:

 0:42          3.000000

 0:42          2.000000

 0:42          0.001593

 0:42          -0.999999

-0:43      move second child to first child (2-component vector of float)

+0:43      move second child to first child (temp 2-component vector of float)

 0:43        'out2' (out 2-component vector of float)

 0:43        Constant:

 0:43          5.600000

 0:43          5.800000

-0:44      move second child to first child (4-component vector of float)

+0:44      move second child to first child (temp 4-component vector of float)

 0:44        'out3' (out 4-component vector of float)

 0:44        Constant:

 0:44          20.085537

 0:44          2.302585

 0:44          16.000000

 0:44          8.000000

-0:45      move second child to first child (4-component vector of float)

+0:45      move second child to first child (temp 4-component vector of float)

 0:45        'out4' (out 4-component vector of float)

 0:45        Constant:

 0:45          10.000000

 0:45          0.100000

 0:45          4.700000

 0:45          10.900000

-0:46      move second child to first child (4-component vector of int)

+0:46      move second child to first child (temp 4-component vector of int)

 0:46        'out5' (out 4-component vector of int)

 0:46        Constant:

 0:46          8 (const int)

 0:46          17 (const int)

 0:46          -1 (const int)

 0:46          1 (const int)

-0:47      move second child to first child (3-component vector of float)

+0:47      move second child to first child (temp 3-component vector of float)

 0:47        'out6' (out 3-component vector of float)

 0:47        Constant:

 0:47          -1.000000

 0:47          1.000000

 0:47          0.000000

-0:48      move second child to first child (4-component vector of float)

+0:48      move second child to first child (temp 4-component vector of float)

 0:48        'out7' (out 4-component vector of float)

 0:48        Constant:

 0:48          4.000000

 0:48          -4.000000

 0:48          5.000000

 0:48          -5.000000

-0:49      move second child to first child (4-component vector of float)

+0:49      move second child to first child (temp 4-component vector of float)

 0:49        'out8' (out 4-component vector of float)

 0:49        Constant:

 0:49          4.000000

 0:49          5.000000

 0:49          4.000000

 0:49          -6.000000

-0:50      move second child to first child (4-component vector of float)

+0:50      move second child to first child (temp 4-component vector of float)

 0:50        'out9' (out 4-component vector of float)

 0:50        Constant:

 0:50          8.000000

 0:50          -4.000000

 0:50          0.345000

 0:50          0.400000

-0:51      move second child to first child (4-component vector of float)

+0:51      move second child to first child (temp 4-component vector of float)

 0:51        'out10' (out 4-component vector of float)

 0:51        Constant:

 0:51          1.000000

 0:51          1.000000

 0:51          0.000000

 0:51          0.000000

-0:52      move second child to first child (4-component vector of float)

+0:52      move second child to first child (temp 4-component vector of float)

 0:52        'out11' (out 4-component vector of float)

 0:52        Constant:

 0:52          0.000000

 0:52          0.000000

 0:52          1.000000

 0:52          0.000000

-0:53      move second child to first child (4-component vector of float)

+0:53      move second child to first child (temp 4-component vector of float)

 0:53        'out11' (out 4-component vector of float)

 0:53        Constant:

 0:53          1.029639

 0:53          0.799690

 0:53          0.674741

 0:53          1.570696

-0:54      move second child to first child (4-component vector of float)

+0:54      move second child to first child (temp 4-component vector of float)

 0:54        'out11' (out 4-component vector of float)

 0:54        Constant:

 0:54          0.000000

 0:54          0.523599

 0:54          1.570796

 0:54          1.047198

-0:58      move second child to first child (4-component vector of float)

+0:58      move second child to first child (temp 4-component vector of float)

 0:58        'out11' (out 4-component vector of float)

 0:58        Constant:

 0:58          1.373401

 0:58          0.000000

 0:58          0.896055

 0:58          -0.380506

-0:62      move second child to first child (2-component vector of int)

+0:62      move second child to first child (temp 2-component vector of int)

 0:62        'out12' (out 2-component vector of int)

 0:62        Constant:

 0:62          15 (const int)

 0:62          16 (const int)

-0:63      move second child to first child (2-component vector of int)

+0:63      move second child to first child (temp 2-component vector of int)

 0:63        'out12' (out 2-component vector of int)

 0:63        Constant:

 0:63          17 (const int)

 0:63          17 (const int)

-0:64      move second child to first child (2-component vector of float)

+0:64      move second child to first child (temp 2-component vector of float)

 0:64        'out2' (out 2-component vector of float)

 0:64        Constant:

 0:64          871.421253

 0:64          4913.000000

-0:65      move second child to first child (3-component vector of uint)

+0:65      move second child to first child (temp 3-component vector of uint)

 0:65        'out13' (out 3-component vector of uint)

 0:65        Constant:

 0:65          10 (const uint)

 0:65          20 (const uint)

 0:65          30 (const uint)

-0:66      move second child to first child (2-component vector of float)

+0:66      move second child to first child (temp 2-component vector of float)

 0:66        'out2' (out 2-component vector of float)

 0:66        Constant:

 0:66          3.000000

 0:66          6.000000

-0:67      move second child to first child (2-component vector of float)

+0:67      move second child to first child (temp 2-component vector of float)

 0:67        'out2' (out 2-component vector of float)

 0:67        Constant:

 0:67          3.500000

 0:67          4.500000

-0:68      move second child to first child (2-component vector of float)

+0:68      move second child to first child (temp 2-component vector of float)

 0:68        'out2' (out 2-component vector of float)

 0:68        Constant:

 0:68          0.000000

 0:68          1.000000

-0:69      move second child to first child (4-component vector of float)

+0:69      move second child to first child (temp 4-component vector of float)

 0:69        'out11' (out 4-component vector of float)

 0:69        Constant:

 0:69          0.000000

 0:69          0.028000

 0:69          0.500000

 0:69          1.000000

-0:78  Function Definition: foo( (void)

+0:78  Function Definition: foo( (global void)

 0:78    Function Parameters: 

 0:?     Sequence

-0:81      move second child to first child (float)

-0:81        direct index (float)

-0:81          'a' (3-element array of float)

+0:81      move second child to first child (temp float)

+0:81        direct index (temp float)

+0:81          'a' (temp 3-element array of float)

 0:81          Constant:

 0:81            0 (const int)

 0:81        Constant:

@@ -188,23 +188,23 @@
 0:90      Constant:

 0:90        6 (const uint)

 0:90        7 (const uint)

-0:103  Function Definition: foo2( (void)

+0:103  Function Definition: foo2( (global void)

 0:103    Function Parameters: 

 0:105    Sequence

-0:105      direct index (float)

-0:105        'a1' (1-element array of float)

+0:105      direct index (temp float)

+0:105        'a1' (global 1-element array of float)

 0:105        Constant:

 0:105          0 (const int)

-0:106      direct index (float)

-0:106        'a2' (2-element array of float)

+0:106      direct index (temp float)

+0:106        'a2' (global 2-element array of float)

 0:106        Constant:

 0:106          0 (const int)

-0:107      direct index (float)

-0:107        'a3' (4-element array of float)

+0:107      direct index (temp float)

+0:107        'a3' (global 4-element array of float)

 0:107        Constant:

 0:107          0 (const int)

-0:108      direct index (float)

-0:108        'a4' (2-element array of float)

+0:108      direct index (temp float)

+0:108        'a4' (global 2-element array of float)

 0:108        Constant:

 0:108          0 (const int)

 0:109      Constant:

@@ -219,31 +219,31 @@
 0:113        0.000000

 0:114      Constant:

 0:114        0.000000

-0:116      move second child to first child (int)

-0:116        'p' (int)

+0:116      move second child to first child (temp int)

+0:116        'p' (temp int)

 0:116        Constant:

 0:116          2147483647 (const int)

-0:117      move second child to first child (int)

-0:117        'p' (int)

+0:117      move second child to first child (temp int)

+0:117        'p' (temp int)

 0:117        Constant:

 0:117          -2147483648 (const int)

-0:118      move second child to first child (int)

-0:118        'p' (int)

+0:118      move second child to first child (temp int)

+0:118        'p' (temp int)

 0:118        Constant:

 0:118          -2147483647 (const int)

 0:119      Sequence

-0:119        move second child to first child (float)

-0:119          'f' (float)

+0:119        move second child to first child (temp float)

+0:119          'f' (temp float)

 0:119          Constant:

 0:119            1.444000

-0:120      move second child to first child (float)

-0:120        'f' (float)

-0:120        direct index (float)

-0:120          Construct vec4 (4-component vector of float)

-0:120            Test condition and select (float)

+0:120      move second child to first child (temp float)

+0:120        'f' (temp float)

+0:120        direct index (temp float)

+0:120          Construct vec4 (temp 4-component vector of float)

+0:120            Test condition and select (temp float)

 0:120              Condition

-0:120              Compare Less Than (bool)

-0:120                direct index (float)

+0:120              Compare Less Than (temp bool)

+0:120                direct index (temp float)

 0:120                  'inv' (smooth in 4-component vector of float)

 0:120                  Constant:

 0:120                    0 (const int)

@@ -289,7 +289,7 @@
 0:?     'out11' (out 4-component vector of float)

 0:?     'out12' (out 2-component vector of int)

 0:?     'out13' (out 3-component vector of uint)

-0:?     's' (const structure{3-component vector of float v3, 2-component vector of int iv2, 2X4 matrix of float m})

+0:?     's' (const structure{global 3-component vector of float v3, global 2-component vector of int iv2, global 2X4 matrix of float m})

 0:?       3.000000

 0:?       3.000000

 0:?       3.000000

@@ -320,9 +320,9 @@
 0:?       1.000000

 0:?     'mc' (const int)

 0:?       1 (const int)

-0:?     'a1' (1-element array of float)

-0:?     'a2' (2-element array of float)

-0:?     'a3' (4-element array of float)

+0:?     'a1' (global 1-element array of float)

+0:?     'a2' (global 2-element array of float)

+0:?     'a3' (global 4-element array of float)

 0:?     'v2' (const 2-component vector of float)

 0:?       1.000000

 0:?       2.000000

@@ -330,7 +330,7 @@
 0:?       3.000000

 0:?       4.000000

 0:?       5.000000

-0:?     'a4' (2-element array of float)

+0:?     'a4' (global 2-element array of float)

 

 

 Linked fragment stage:

@@ -338,165 +338,165 @@
 

 Shader version: 430

 ERROR: node is still EOpNull!

-0:28  Function Definition: main( (void)

+0:28  Function Definition: main( (global void)

 0:28    Function Parameters: 

 0:30    Sequence

 0:30      Sequence

-0:30        move second child to first child (4-component vector of float)

-0:30          'dx' (4-component vector of float)

-0:30          dPdx (4-component vector of float)

+0:30        move second child to first child (temp 4-component vector of float)

+0:30          'dx' (temp 4-component vector of float)

+0:30          dPdx (global 4-component vector of float)

 0:30            'inv' (smooth in 4-component vector of float)

-0:37      move second child to first child (4-component vector of float)

+0:37      move second child to first child (temp 4-component vector of float)

 0:37        'FragColor' (out 4-component vector of float)

 0:37        Constant:

 0:37          2.000000

 0:37          6.000000

 0:37          3.000000

 0:37          171.887339

-0:42      move second child to first child (4-component vector of float)

+0:42      move second child to first child (temp 4-component vector of float)

 0:42        'FragColor' (out 4-component vector of float)

 0:42        Constant:

 0:42          3.000000

 0:42          2.000000

 0:42          0.001593

 0:42          -0.999999

-0:43      move second child to first child (2-component vector of float)

+0:43      move second child to first child (temp 2-component vector of float)

 0:43        'out2' (out 2-component vector of float)

 0:43        Constant:

 0:43          5.600000

 0:43          5.800000

-0:44      move second child to first child (4-component vector of float)

+0:44      move second child to first child (temp 4-component vector of float)

 0:44        'out3' (out 4-component vector of float)

 0:44        Constant:

 0:44          20.085537

 0:44          2.302585

 0:44          16.000000

 0:44          8.000000

-0:45      move second child to first child (4-component vector of float)

+0:45      move second child to first child (temp 4-component vector of float)

 0:45        'out4' (out 4-component vector of float)

 0:45        Constant:

 0:45          10.000000

 0:45          0.100000

 0:45          4.700000

 0:45          10.900000

-0:46      move second child to first child (4-component vector of int)

+0:46      move second child to first child (temp 4-component vector of int)

 0:46        'out5' (out 4-component vector of int)

 0:46        Constant:

 0:46          8 (const int)

 0:46          17 (const int)

 0:46          -1 (const int)

 0:46          1 (const int)

-0:47      move second child to first child (3-component vector of float)

+0:47      move second child to first child (temp 3-component vector of float)

 0:47        'out6' (out 3-component vector of float)

 0:47        Constant:

 0:47          -1.000000

 0:47          1.000000

 0:47          0.000000

-0:48      move second child to first child (4-component vector of float)

+0:48      move second child to first child (temp 4-component vector of float)

 0:48        'out7' (out 4-component vector of float)

 0:48        Constant:

 0:48          4.000000

 0:48          -4.000000

 0:48          5.000000

 0:48          -5.000000

-0:49      move second child to first child (4-component vector of float)

+0:49      move second child to first child (temp 4-component vector of float)

 0:49        'out8' (out 4-component vector of float)

 0:49        Constant:

 0:49          4.000000

 0:49          5.000000

 0:49          4.000000

 0:49          -6.000000

-0:50      move second child to first child (4-component vector of float)

+0:50      move second child to first child (temp 4-component vector of float)

 0:50        'out9' (out 4-component vector of float)

 0:50        Constant:

 0:50          8.000000

 0:50          -4.000000

 0:50          0.345000

 0:50          0.400000

-0:51      move second child to first child (4-component vector of float)

+0:51      move second child to first child (temp 4-component vector of float)

 0:51        'out10' (out 4-component vector of float)

 0:51        Constant:

 0:51          1.000000

 0:51          1.000000

 0:51          0.000000

 0:51          0.000000

-0:52      move second child to first child (4-component vector of float)

+0:52      move second child to first child (temp 4-component vector of float)

 0:52        'out11' (out 4-component vector of float)

 0:52        Constant:

 0:52          0.000000

 0:52          0.000000

 0:52          1.000000

 0:52          0.000000

-0:53      move second child to first child (4-component vector of float)

+0:53      move second child to first child (temp 4-component vector of float)

 0:53        'out11' (out 4-component vector of float)

 0:53        Constant:

 0:53          1.029639

 0:53          0.799690

 0:53          0.674741

 0:53          1.570696

-0:54      move second child to first child (4-component vector of float)

+0:54      move second child to first child (temp 4-component vector of float)

 0:54        'out11' (out 4-component vector of float)

 0:54        Constant:

 0:54          0.000000

 0:54          0.523599

 0:54          1.570796

 0:54          1.047198

-0:58      move second child to first child (4-component vector of float)

+0:58      move second child to first child (temp 4-component vector of float)

 0:58        'out11' (out 4-component vector of float)

 0:58        Constant:

 0:58          1.373401

 0:58          0.000000

 0:58          0.896055

 0:58          -0.380506

-0:62      move second child to first child (2-component vector of int)

+0:62      move second child to first child (temp 2-component vector of int)

 0:62        'out12' (out 2-component vector of int)

 0:62        Constant:

 0:62          15 (const int)

 0:62          16 (const int)

-0:63      move second child to first child (2-component vector of int)

+0:63      move second child to first child (temp 2-component vector of int)

 0:63        'out12' (out 2-component vector of int)

 0:63        Constant:

 0:63          17 (const int)

 0:63          17 (const int)

-0:64      move second child to first child (2-component vector of float)

+0:64      move second child to first child (temp 2-component vector of float)

 0:64        'out2' (out 2-component vector of float)

 0:64        Constant:

 0:64          871.421253

 0:64          4913.000000

-0:65      move second child to first child (3-component vector of uint)

+0:65      move second child to first child (temp 3-component vector of uint)

 0:65        'out13' (out 3-component vector of uint)

 0:65        Constant:

 0:65          10 (const uint)

 0:65          20 (const uint)

 0:65          30 (const uint)

-0:66      move second child to first child (2-component vector of float)

+0:66      move second child to first child (temp 2-component vector of float)

 0:66        'out2' (out 2-component vector of float)

 0:66        Constant:

 0:66          3.000000

 0:66          6.000000

-0:67      move second child to first child (2-component vector of float)

+0:67      move second child to first child (temp 2-component vector of float)

 0:67        'out2' (out 2-component vector of float)

 0:67        Constant:

 0:67          3.500000

 0:67          4.500000

-0:68      move second child to first child (2-component vector of float)

+0:68      move second child to first child (temp 2-component vector of float)

 0:68        'out2' (out 2-component vector of float)

 0:68        Constant:

 0:68          0.000000

 0:68          1.000000

-0:69      move second child to first child (4-component vector of float)

+0:69      move second child to first child (temp 4-component vector of float)

 0:69        'out11' (out 4-component vector of float)

 0:69        Constant:

 0:69          0.000000

 0:69          0.028000

 0:69          0.500000

 0:69          1.000000

-0:78  Function Definition: foo( (void)

+0:78  Function Definition: foo( (global void)

 0:78    Function Parameters: 

 0:?     Sequence

-0:81      move second child to first child (float)

-0:81        direct index (float)

-0:81          'a' (3-element array of float)

+0:81      move second child to first child (temp float)

+0:81        direct index (temp float)

+0:81          'a' (temp 3-element array of float)

 0:81          Constant:

 0:81            0 (const int)

 0:81        Constant:

@@ -515,23 +515,23 @@
 0:90      Constant:

 0:90        6 (const uint)

 0:90        7 (const uint)

-0:103  Function Definition: foo2( (void)

+0:103  Function Definition: foo2( (global void)

 0:103    Function Parameters: 

 0:105    Sequence

-0:105      direct index (float)

-0:105        'a1' (1-element array of float)

+0:105      direct index (temp float)

+0:105        'a1' (global 1-element array of float)

 0:105        Constant:

 0:105          0 (const int)

-0:106      direct index (float)

-0:106        'a2' (2-element array of float)

+0:106      direct index (temp float)

+0:106        'a2' (global 2-element array of float)

 0:106        Constant:

 0:106          0 (const int)

-0:107      direct index (float)

-0:107        'a3' (4-element array of float)

+0:107      direct index (temp float)

+0:107        'a3' (global 4-element array of float)

 0:107        Constant:

 0:107          0 (const int)

-0:108      direct index (float)

-0:108        'a4' (2-element array of float)

+0:108      direct index (temp float)

+0:108        'a4' (global 2-element array of float)

 0:108        Constant:

 0:108          0 (const int)

 0:109      Constant:

@@ -546,31 +546,31 @@
 0:113        0.000000

 0:114      Constant:

 0:114        0.000000

-0:116      move second child to first child (int)

-0:116        'p' (int)

+0:116      move second child to first child (temp int)

+0:116        'p' (temp int)

 0:116        Constant:

 0:116          2147483647 (const int)

-0:117      move second child to first child (int)

-0:117        'p' (int)

+0:117      move second child to first child (temp int)

+0:117        'p' (temp int)

 0:117        Constant:

 0:117          -2147483648 (const int)

-0:118      move second child to first child (int)

-0:118        'p' (int)

+0:118      move second child to first child (temp int)

+0:118        'p' (temp int)

 0:118        Constant:

 0:118          -2147483647 (const int)

 0:119      Sequence

-0:119        move second child to first child (float)

-0:119          'f' (float)

+0:119        move second child to first child (temp float)

+0:119          'f' (temp float)

 0:119          Constant:

 0:119            1.444000

-0:120      move second child to first child (float)

-0:120        'f' (float)

-0:120        direct index (float)

-0:120          Construct vec4 (4-component vector of float)

-0:120            Test condition and select (float)

+0:120      move second child to first child (temp float)

+0:120        'f' (temp float)

+0:120        direct index (temp float)

+0:120          Construct vec4 (temp 4-component vector of float)

+0:120            Test condition and select (temp float)

 0:120              Condition

-0:120              Compare Less Than (bool)

-0:120                direct index (float)

+0:120              Compare Less Than (temp bool)

+0:120                direct index (temp float)

 0:120                  'inv' (smooth in 4-component vector of float)

 0:120                  Constant:

 0:120                    0 (const int)

@@ -616,7 +616,7 @@
 0:?     'out11' (out 4-component vector of float)

 0:?     'out12' (out 2-component vector of int)

 0:?     'out13' (out 3-component vector of uint)

-0:?     's' (const structure{3-component vector of float v3, 2-component vector of int iv2, 2X4 matrix of float m})

+0:?     's' (const structure{global 3-component vector of float v3, global 2-component vector of int iv2, global 2X4 matrix of float m})

 0:?       3.000000

 0:?       3.000000

 0:?       3.000000

@@ -647,9 +647,9 @@
 0:?       1.000000

 0:?     'mc' (const int)

 0:?       1 (const int)

-0:?     'a1' (1-element array of float)

-0:?     'a2' (2-element array of float)

-0:?     'a3' (4-element array of float)

+0:?     'a1' (global 1-element array of float)

+0:?     'a2' (global 2-element array of float)

+0:?     'a3' (global 4-element array of float)

 0:?     'v2' (const 2-component vector of float)

 0:?       1.000000

 0:?       2.000000

@@ -657,5 +657,5 @@
 0:?       3.000000

 0:?       4.000000

 0:?       5.000000

-0:?     'a4' (2-element array of float)

+0:?     'a4' (global 2-element array of float)

 

diff --git a/Test/baseResults/conversion.frag.out b/Test/baseResults/conversion.frag.out
index 7320a1f..f9768ce 100644
--- a/Test/baseResults/conversion.frag.out
+++ b/Test/baseResults/conversion.frag.out
@@ -2,427 +2,427 @@
 

 Shader version: 130

 0:? Sequence

-0:33  Function Definition: main( (void)

+0:33  Function Definition: main( (global void)

 0:33    Function Parameters: 

 0:35    Sequence

 0:35      Sequence

-0:35        move second child to first child (bool)

-0:35          'b' (bool)

-0:35          logical-xor (bool)

-0:35            Convert int to bool (bool)

+0:35        move second child to first child (temp bool)

+0:35          'b' (temp bool)

+0:35          logical-xor (temp bool)

+0:35            Convert int to bool (temp bool)

 0:35              'u_i' (uniform int)

-0:35            Convert float to bool (bool)

+0:35            Convert float to bool (temp bool)

 0:35              'u_f' (uniform float)

 0:36      Sequence

-0:36        move second child to first child (2-component vector of bool)

-0:36          'b2' (2-component vector of bool)

-0:36          Construct bvec2 (2-component vector of bool)

-0:36            Convert int to bool (bool)

+0:36        move second child to first child (temp 2-component vector of bool)

+0:36          'b2' (temp 2-component vector of bool)

+0:36          Construct bvec2 (temp 2-component vector of bool)

+0:36            Convert int to bool (temp bool)

 0:36              'u_i' (uniform int)

-0:36            Convert float to bool (bool)

+0:36            Convert float to bool (temp bool)

 0:36              'u_f' (uniform float)

 0:37      Sequence

-0:37        move second child to first child (3-component vector of bool)

-0:37          'b3' (3-component vector of bool)

-0:37          Construct bvec3 (3-component vector of bool)

-0:37            Convert int to bool (bool)

+0:37        move second child to first child (temp 3-component vector of bool)

+0:37          'b3' (temp 3-component vector of bool)

+0:37          Construct bvec3 (temp 3-component vector of bool)

+0:37            Convert int to bool (temp bool)

 0:37              'u_i' (uniform int)

-0:37            Convert float to bool (bool)

+0:37            Convert float to bool (temp bool)

 0:37              'u_f' (uniform float)

-0:37            Convert int to bool (bool)

+0:37            Convert int to bool (temp bool)

 0:37              'i_i' (flat in int)

 0:38      Sequence

-0:38        move second child to first child (4-component vector of bool)

-0:38          'b4' (4-component vector of bool)

-0:38          Construct bvec4 (4-component vector of bool)

-0:38            Convert int to bool (bool)

+0:38        move second child to first child (temp 4-component vector of bool)

+0:38          'b4' (temp 4-component vector of bool)

+0:38          Construct bvec4 (temp 4-component vector of bool)

+0:38            Convert int to bool (temp bool)

 0:38              'u_i' (uniform int)

-0:38            Convert float to bool (bool)

+0:38            Convert float to bool (temp bool)

 0:38              'u_f' (uniform float)

-0:38            Convert int to bool (bool)

+0:38            Convert int to bool (temp bool)

 0:38              'i_i' (flat in int)

-0:38            Convert float to bool (bool)

+0:38            Convert float to bool (temp bool)

 0:38              'i_f' (smooth in float)

 0:40      Sequence

-0:40        move second child to first child (int)

-0:40          'i' (int)

-0:40          add (int)

-0:40            Convert float to int (int)

+0:40        move second child to first child (temp int)

+0:40          'i' (temp int)

+0:40          add (temp int)

+0:40            Convert float to int (temp int)

 0:40              'u_f' (uniform float)

-0:40            Convert bool to int (int)

-0:40              'b' (bool)

+0:40            Convert bool to int (temp int)

+0:40              'b' (temp bool)

 0:41      Sequence

-0:41        move second child to first child (2-component vector of int)

-0:41          'i2' (2-component vector of int)

-0:41          add (2-component vector of int)

-0:41            Convert float to int (2-component vector of int)

+0:41        move second child to first child (temp 2-component vector of int)

+0:41          'i2' (temp 2-component vector of int)

+0:41          add (temp 2-component vector of int)

+0:41            Convert float to int (temp 2-component vector of int)

 0:41              'u_f2' (uniform 2-component vector of float)

-0:41            Convert bool to int (2-component vector of int)

-0:41              'b2' (2-component vector of bool)

+0:41            Convert bool to int (temp 2-component vector of int)

+0:41              'b2' (temp 2-component vector of bool)

 0:42      Sequence

-0:42        move second child to first child (3-component vector of int)

-0:42          'i3' (3-component vector of int)

-0:42          add (3-component vector of int)

-0:42            Convert float to int (3-component vector of int)

+0:42        move second child to first child (temp 3-component vector of int)

+0:42          'i3' (temp 3-component vector of int)

+0:42          add (temp 3-component vector of int)

+0:42            Convert float to int (temp 3-component vector of int)

 0:42              'u_f3' (uniform 3-component vector of float)

-0:42            Convert bool to int (3-component vector of int)

-0:42              'b3' (3-component vector of bool)

+0:42            Convert bool to int (temp 3-component vector of int)

+0:42              'b3' (temp 3-component vector of bool)

 0:43      Sequence

-0:43        move second child to first child (4-component vector of int)

-0:43          'i4' (4-component vector of int)

-0:43          add (4-component vector of int)

-0:43            Convert float to int (4-component vector of int)

+0:43        move second child to first child (temp 4-component vector of int)

+0:43          'i4' (temp 4-component vector of int)

+0:43          add (temp 4-component vector of int)

+0:43            Convert float to int (temp 4-component vector of int)

 0:43              'u_f4' (uniform 4-component vector of float)

-0:43            Convert bool to int (4-component vector of int)

-0:43              'b4' (4-component vector of bool)

+0:43            Convert bool to int (temp 4-component vector of int)

+0:43              'b4' (temp 4-component vector of bool)

 0:45      Sequence

-0:45        move second child to first child (float)

-0:45          'f' (float)

-0:45          Convert int to float (float)

-0:45            'i' (int)

+0:45        move second child to first child (temp float)

+0:45          'f' (temp float)

+0:45          Convert int to float (temp float)

+0:45            'i' (temp int)

 0:46      Sequence

-0:46        move second child to first child (2-component vector of float)

-0:46          'f2' (2-component vector of float)

-0:46          Convert int to float (2-component vector of float)

-0:46            'i2' (2-component vector of int)

+0:46        move second child to first child (temp 2-component vector of float)

+0:46          'f2' (temp 2-component vector of float)

+0:46          Convert int to float (temp 2-component vector of float)

+0:46            'i2' (temp 2-component vector of int)

 0:47      Sequence

-0:47        move second child to first child (3-component vector of float)

-0:47          'f3' (3-component vector of float)

-0:47          Convert int to float (3-component vector of float)

-0:47            'i3' (3-component vector of int)

+0:47        move second child to first child (temp 3-component vector of float)

+0:47          'f3' (temp 3-component vector of float)

+0:47          Convert int to float (temp 3-component vector of float)

+0:47            'i3' (temp 3-component vector of int)

 0:48      Sequence

-0:48        move second child to first child (4-component vector of float)

-0:48          'f4' (4-component vector of float)

-0:48          Convert int to float (4-component vector of float)

-0:48            'i4' (4-component vector of int)

-0:50      add second child into first child (float)

-0:50        'f' (float)

-0:50        add (float)

-0:50          Convert int to float (float)

-0:50            'i' (int)

-0:50          Convert bool to float (float)

-0:50            'b' (bool)

-0:51      subtract second child into first child (2-component vector of float)

-0:51        'f2' (2-component vector of float)

-0:51        add (2-component vector of float)

-0:51          Convert int to float (2-component vector of float)

-0:51            'i2' (2-component vector of int)

-0:51          Convert bool to float (2-component vector of float)

-0:51            'b2' (2-component vector of bool)

-0:52      divide second child into first child (3-component vector of float)

-0:52        'f3' (3-component vector of float)

-0:52        add (3-component vector of float)

-0:52          Convert int to float (3-component vector of float)

-0:52            'i3' (3-component vector of int)

-0:52          Convert bool to float (3-component vector of float)

-0:52            'b3' (3-component vector of bool)

-0:53      add second child into first child (4-component vector of float)

-0:53        'f4' (4-component vector of float)

-0:53        add (4-component vector of float)

-0:53          Convert int to float (4-component vector of float)

-0:53            'i4' (4-component vector of int)

-0:53          Convert bool to float (4-component vector of float)

-0:53            'b4' (4-component vector of bool)

-0:55      add second child into first child (4-component vector of float)

-0:55        'f4' (4-component vector of float)

-0:55        Convert bool to float (4-component vector of float)

-0:55          Convert int to bool (4-component vector of bool)

+0:48        move second child to first child (temp 4-component vector of float)

+0:48          'f4' (temp 4-component vector of float)

+0:48          Convert int to float (temp 4-component vector of float)

+0:48            'i4' (temp 4-component vector of int)

+0:50      add second child into first child (temp float)

+0:50        'f' (temp float)

+0:50        add (temp float)

+0:50          Convert int to float (temp float)

+0:50            'i' (temp int)

+0:50          Convert bool to float (temp float)

+0:50            'b' (temp bool)

+0:51      subtract second child into first child (temp 2-component vector of float)

+0:51        'f2' (temp 2-component vector of float)

+0:51        add (temp 2-component vector of float)

+0:51          Convert int to float (temp 2-component vector of float)

+0:51            'i2' (temp 2-component vector of int)

+0:51          Convert bool to float (temp 2-component vector of float)

+0:51            'b2' (temp 2-component vector of bool)

+0:52      divide second child into first child (temp 3-component vector of float)

+0:52        'f3' (temp 3-component vector of float)

+0:52        add (temp 3-component vector of float)

+0:52          Convert int to float (temp 3-component vector of float)

+0:52            'i3' (temp 3-component vector of int)

+0:52          Convert bool to float (temp 3-component vector of float)

+0:52            'b3' (temp 3-component vector of bool)

+0:53      add second child into first child (temp 4-component vector of float)

+0:53        'f4' (temp 4-component vector of float)

+0:53        add (temp 4-component vector of float)

+0:53          Convert int to float (temp 4-component vector of float)

+0:53            'i4' (temp 4-component vector of int)

+0:53          Convert bool to float (temp 4-component vector of float)

+0:53            'b4' (temp 4-component vector of bool)

+0:55      add second child into first child (temp 4-component vector of float)

+0:55        'f4' (temp 4-component vector of float)

+0:55        Convert bool to float (temp 4-component vector of float)

+0:55          Convert int to bool (temp 4-component vector of bool)

 0:55            'i_i4' (flat in 4-component vector of int)

-0:56      add second child into first child (4-component vector of float)

-0:56        'f4' (4-component vector of float)

-0:56        Convert bool to float (4-component vector of float)

-0:56          Convert float to bool (4-component vector of bool)

+0:56      add second child into first child (temp 4-component vector of float)

+0:56        'f4' (temp 4-component vector of float)

+0:56        Convert bool to float (temp 4-component vector of float)

+0:56          Convert float to bool (temp 4-component vector of bool)

 0:56            'u_f4' (uniform 4-component vector of float)

-0:58      add second child into first child (float)

-0:58        'f' (float)

-0:58        subtract (float)

-0:58          'f' (float)

-0:58          Convert int to float (float)

-0:58            'i' (int)

-0:59      add second child into first child (2-component vector of float)

-0:59        'f2' (2-component vector of float)

-0:59        add (2-component vector of float)

-0:59          Construct vec2 (2-component vector of float)

-0:59            'f' (float)

-0:59            Convert int to float (float)

-0:59              'i' (int)

-0:59          Convert int to float (2-component vector of float)

-0:59            'i2' (2-component vector of int)

-0:60      add second child into first child (3-component vector of float)

-0:60        'f3' (3-component vector of float)

-0:60        add (3-component vector of float)

-0:60          Convert int to float (3-component vector of float)

-0:60            'i3' (3-component vector of int)

-0:60          Construct vec3 (3-component vector of float)

-0:60            'f' (float)

-0:60            Convert int to float (float)

-0:60              'i' (int)

-0:60            'f' (float)

-0:61      add second child into first child (4-component vector of float)

-0:61        'f4' (4-component vector of float)

-0:61        add (4-component vector of float)

-0:61          Construct vec4 (4-component vector of float)

-0:61            Convert bool to float (float)

-0:61              'b' (bool)

-0:61            Convert int to float (float)

-0:61              'i' (int)

-0:61            'f' (float)

-0:61            Convert int to float (float)

-0:61              'i' (int)

-0:61          Convert int to float (4-component vector of float)

-0:61            'i4' (4-component vector of int)

-0:63      add second child into first child (2-component vector of float)

-0:63        'f2' (2-component vector of float)

-0:63        vector-scale (2-component vector of float)

-0:63          Construct vec2 (2-component vector of float)

-0:63            'f' (float)

-0:63            Convert int to float (float)

-0:63              'i' (int)

-0:63          Convert int to float (float)

-0:63            'i' (int)

-0:64      add second child into first child (3-component vector of float)

-0:64        'f3' (3-component vector of float)

-0:64        add (3-component vector of float)

-0:64          Construct vec3 (3-component vector of float)

-0:64            'f' (float)

-0:64            Convert int to float (float)

-0:64              'i' (int)

-0:64            'f' (float)

-0:64          Convert int to float (float)

-0:64            'i' (int)

-0:65      add second child into first child (4-component vector of float)

-0:65        'f4' (4-component vector of float)

-0:65        subtract (4-component vector of float)

-0:65          Convert int to float (float)

-0:65            'i' (int)

-0:65          Construct vec4 (4-component vector of float)

-0:65            Convert bool to float (float)

-0:65              'b' (bool)

-0:65            Convert int to float (float)

-0:65              'i' (int)

-0:65            'f' (float)

-0:65            Convert int to float (float)

-0:65              'i' (int)

-0:67      add second child into first child (2-component vector of int)

-0:67        'i2' (2-component vector of int)

-0:67        Construct ivec2 (2-component vector of int)

-0:67          Convert float to int (int)

-0:67            'f' (float)

-0:67          'i' (int)

-0:68      add second child into first child (3-component vector of int)

-0:68        'i3' (3-component vector of int)

-0:68        Construct ivec3 (3-component vector of int)

-0:68          Convert float to int (int)

-0:68            'f' (float)

-0:68          'i' (int)

-0:68          Convert float to int (int)

-0:68            'f' (float)

-0:69      add second child into first child (4-component vector of int)

-0:69        'i4' (4-component vector of int)

-0:69        Construct ivec4 (4-component vector of int)

-0:69          Convert bool to int (int)

-0:69            'b' (bool)

-0:69          'i' (int)

-0:69          Convert float to int (int)

-0:69            'f' (float)

-0:69          'i' (int)

-0:71      Test condition and select (void)

+0:58      add second child into first child (temp float)

+0:58        'f' (temp float)

+0:58        subtract (temp float)

+0:58          'f' (temp float)

+0:58          Convert int to float (temp float)

+0:58            'i' (temp int)

+0:59      add second child into first child (temp 2-component vector of float)

+0:59        'f2' (temp 2-component vector of float)

+0:59        add (temp 2-component vector of float)

+0:59          Construct vec2 (temp 2-component vector of float)

+0:59            'f' (temp float)

+0:59            Convert int to float (temp float)

+0:59              'i' (temp int)

+0:59          Convert int to float (temp 2-component vector of float)

+0:59            'i2' (temp 2-component vector of int)

+0:60      add second child into first child (temp 3-component vector of float)

+0:60        'f3' (temp 3-component vector of float)

+0:60        add (temp 3-component vector of float)

+0:60          Convert int to float (temp 3-component vector of float)

+0:60            'i3' (temp 3-component vector of int)

+0:60          Construct vec3 (temp 3-component vector of float)

+0:60            'f' (temp float)

+0:60            Convert int to float (temp float)

+0:60              'i' (temp int)

+0:60            'f' (temp float)

+0:61      add second child into first child (temp 4-component vector of float)

+0:61        'f4' (temp 4-component vector of float)

+0:61        add (temp 4-component vector of float)

+0:61          Construct vec4 (temp 4-component vector of float)

+0:61            Convert bool to float (temp float)

+0:61              'b' (temp bool)

+0:61            Convert int to float (temp float)

+0:61              'i' (temp int)

+0:61            'f' (temp float)

+0:61            Convert int to float (temp float)

+0:61              'i' (temp int)

+0:61          Convert int to float (temp 4-component vector of float)

+0:61            'i4' (temp 4-component vector of int)

+0:63      add second child into first child (temp 2-component vector of float)

+0:63        'f2' (temp 2-component vector of float)

+0:63        vector-scale (temp 2-component vector of float)

+0:63          Construct vec2 (temp 2-component vector of float)

+0:63            'f' (temp float)

+0:63            Convert int to float (temp float)

+0:63              'i' (temp int)

+0:63          Convert int to float (temp float)

+0:63            'i' (temp int)

+0:64      add second child into first child (temp 3-component vector of float)

+0:64        'f3' (temp 3-component vector of float)

+0:64        add (temp 3-component vector of float)

+0:64          Construct vec3 (temp 3-component vector of float)

+0:64            'f' (temp float)

+0:64            Convert int to float (temp float)

+0:64              'i' (temp int)

+0:64            'f' (temp float)

+0:64          Convert int to float (temp float)

+0:64            'i' (temp int)

+0:65      add second child into first child (temp 4-component vector of float)

+0:65        'f4' (temp 4-component vector of float)

+0:65        subtract (temp 4-component vector of float)

+0:65          Convert int to float (temp float)

+0:65            'i' (temp int)

+0:65          Construct vec4 (temp 4-component vector of float)

+0:65            Convert bool to float (temp float)

+0:65              'b' (temp bool)

+0:65            Convert int to float (temp float)

+0:65              'i' (temp int)

+0:65            'f' (temp float)

+0:65            Convert int to float (temp float)

+0:65              'i' (temp int)

+0:67      add second child into first child (temp 2-component vector of int)

+0:67        'i2' (temp 2-component vector of int)

+0:67        Construct ivec2 (temp 2-component vector of int)

+0:67          Convert float to int (temp int)

+0:67            'f' (temp float)

+0:67          'i' (temp int)

+0:68      add second child into first child (temp 3-component vector of int)

+0:68        'i3' (temp 3-component vector of int)

+0:68        Construct ivec3 (temp 3-component vector of int)

+0:68          Convert float to int (temp int)

+0:68            'f' (temp float)

+0:68          'i' (temp int)

+0:68          Convert float to int (temp int)

+0:68            'f' (temp float)

+0:69      add second child into first child (temp 4-component vector of int)

+0:69        'i4' (temp 4-component vector of int)

+0:69        Construct ivec4 (temp 4-component vector of int)

+0:69          Convert bool to int (temp int)

+0:69            'b' (temp bool)

+0:69          'i' (temp int)

+0:69          Convert float to int (temp int)

+0:69            'f' (temp float)

+0:69          'i' (temp int)

+0:71      Test condition and select (temp void)

 0:71        Condition

-0:72        logical-or (bool)

-0:71          logical-or (bool)

-0:71            logical-or (bool)

-0:71              Compare Less Than (bool)

-0:71                'f' (float)

-0:71                Convert int to float (float)

-0:71                  'i' (int)

-0:71              Compare Less Than (bool)

-0:71                Convert int to float (float)

-0:71                  'i' (int)

-0:71                'f' (float)

-0:72            Compare Equal (bool)

-0:72              'f2' (2-component vector of float)

-0:72              Convert int to float (2-component vector of float)

-0:72                'i2' (2-component vector of int)

-0:73          Compare Not Equal (bool)

-0:73            Convert int to float (3-component vector of float)

-0:73              'i3' (3-component vector of int)

-0:73            'f3' (3-component vector of float)

+0:72        logical-or (temp bool)

+0:71          logical-or (temp bool)

+0:71            logical-or (temp bool)

+0:71              Compare Less Than (temp bool)

+0:71                'f' (temp float)

+0:71                Convert int to float (temp float)

+0:71                  'i' (temp int)

+0:71              Compare Less Than (temp bool)

+0:71                Convert int to float (temp float)

+0:71                  'i' (temp int)

+0:71                'f' (temp float)

+0:72            Compare Equal (temp bool)

+0:72              'f2' (temp 2-component vector of float)

+0:72              Convert int to float (temp 2-component vector of float)

+0:72                'i2' (temp 2-component vector of int)

+0:73          Compare Not Equal (temp bool)

+0:73            Convert int to float (temp 3-component vector of float)

+0:73              'i3' (temp 3-component vector of int)

+0:73            'f3' (temp 3-component vector of float)

 0:71        true case

-0:74        move second child to first child (float)

-0:74          'f' (float)

-0:74          add (float)

-0:74            Test condition and select (float)

+0:74        move second child to first child (temp float)

+0:74          'f' (temp float)

+0:74          add (temp float)

+0:74            Test condition and select (temp float)

 0:74              Condition

-0:74              'b' (bool)

+0:74              'b' (temp bool)

 0:74              true case

-0:74              Convert int to float (float)

-0:74                'i' (int)

+0:74              Convert int to float (temp float)

+0:74                'i' (temp int)

 0:74              false case

-0:74              direct index (float)

-0:74                'f2' (2-component vector of float)

+0:74              direct index (temp float)

+0:74                'f2' (temp 2-component vector of float)

 0:74                Constant:

 0:74                  0 (const int)

-0:74            Test condition and select (float)

+0:74            Test condition and select (temp float)

 0:74              Condition

-0:74              direct index (bool)

-0:74                'b2' (2-component vector of bool)

+0:74              direct index (temp bool)

+0:74                'b2' (temp 2-component vector of bool)

 0:74                Constant:

 0:74                  0 (const int)

 0:74              true case

-0:74              direct index (float)

-0:74                'f3' (3-component vector of float)

+0:74              direct index (temp float)

+0:74                'f3' (temp 3-component vector of float)

 0:74                Constant:

 0:74                  0 (const int)

 0:74              false case

-0:74              Convert int to float (float)

-0:74                direct index (int)

-0:74                  'i2' (2-component vector of int)

+0:74              Convert int to float (temp float)

+0:74                direct index (temp int)

+0:74                  'i2' (temp 2-component vector of int)

 0:74                  Constant:

 0:74                    1 (const int)

-0:76      move second child to first child (4-component vector of float)

+0:76      move second child to first child (temp 4-component vector of float)

 0:76        'gl_FragColor' (fragColor 4-component vector of float)

-0:86        Test condition and select (4-component vector of float)

+0:86        Test condition and select (temp 4-component vector of float)

 0:86          Condition

-0:85          logical-or (bool)

-0:84            logical-or (bool)

-0:83              logical-or (bool)

-0:82                logical-or (bool)

-0:81                  logical-or (bool)

-0:80                    logical-or (bool)

-0:79                      logical-or (bool)

-0:78                        logical-or (bool)

-0:77                          logical-or (bool)

-0:77                            'b' (bool)

-0:78                            direct index (bool)

-0:78                              'b2' (2-component vector of bool)

+0:85          logical-or (temp bool)

+0:84            logical-or (temp bool)

+0:83              logical-or (temp bool)

+0:82                logical-or (temp bool)

+0:81                  logical-or (temp bool)

+0:80                    logical-or (temp bool)

+0:79                      logical-or (temp bool)

+0:78                        logical-or (temp bool)

+0:77                          logical-or (temp bool)

+0:77                            'b' (temp bool)

+0:78                            direct index (temp bool)

+0:78                              'b2' (temp 2-component vector of bool)

 0:78                              Constant:

 0:78                                0 (const int)

-0:79                          direct index (bool)

-0:79                            'b2' (2-component vector of bool)

+0:79                          direct index (temp bool)

+0:79                            'b2' (temp 2-component vector of bool)

 0:79                            Constant:

 0:79                              1 (const int)

-0:80                        direct index (bool)

-0:80                          'b3' (3-component vector of bool)

+0:80                        direct index (temp bool)

+0:80                          'b3' (temp 3-component vector of bool)

 0:80                          Constant:

 0:80                            0 (const int)

-0:81                      direct index (bool)

-0:81                        'b3' (3-component vector of bool)

+0:81                      direct index (temp bool)

+0:81                        'b3' (temp 3-component vector of bool)

 0:81                        Constant:

 0:81                          1 (const int)

-0:82                    direct index (bool)

-0:82                      'b3' (3-component vector of bool)

+0:82                    direct index (temp bool)

+0:82                      'b3' (temp 3-component vector of bool)

 0:82                      Constant:

 0:82                        2 (const int)

-0:83                  direct index (bool)

-0:83                    'b4' (4-component vector of bool)

+0:83                  direct index (temp bool)

+0:83                    'b4' (temp 4-component vector of bool)

 0:83                    Constant:

 0:83                      0 (const int)

-0:84                direct index (bool)

-0:84                  'b4' (4-component vector of bool)

+0:84                direct index (temp bool)

+0:84                  'b4' (temp 4-component vector of bool)

 0:84                  Constant:

 0:84                    1 (const int)

-0:85              direct index (bool)

-0:85                'b4' (4-component vector of bool)

+0:85              direct index (temp bool)

+0:85                'b4' (temp 4-component vector of bool)

 0:85                Constant:

 0:85                  2 (const int)

-0:86            direct index (bool)

-0:86              'b4' (4-component vector of bool)

+0:86            direct index (temp bool)

+0:86              'b4' (temp 4-component vector of bool)

 0:86              Constant:

 0:86                3 (const int)

 0:86          true case

-0:105          Construct vec4 (4-component vector of float)

-0:105            add (float)

-0:104              add (float)

-0:103                add (float)

-0:102                  add (float)

-0:101                    add (float)

-0:100                      add (float)

-0:99                        add (float)

-0:98                          add (float)

-0:97                            add (float)

-0:96                              add (float)

-0:95                                Convert int to float (float)

-0:95                                  add (int)

-0:94                                    add (int)

-0:93                                      add (int)

-0:92                                        add (int)

-0:91                                          add (int)

-0:90                                            add (int)

-0:89                                              add (int)

-0:88                                                add (int)

-0:87                                                  add (int)

-0:87                                                    'i' (int)

-0:88                                                    direct index (int)

-0:88                                                      'i2' (2-component vector of int)

+0:105          Construct vec4 (temp 4-component vector of float)

+0:105            add (temp float)

+0:104              add (temp float)

+0:103                add (temp float)

+0:102                  add (temp float)

+0:101                    add (temp float)

+0:100                      add (temp float)

+0:99                        add (temp float)

+0:98                          add (temp float)

+0:97                            add (temp float)

+0:96                              add (temp float)

+0:95                                Convert int to float (temp float)

+0:95                                  add (temp int)

+0:94                                    add (temp int)

+0:93                                      add (temp int)

+0:92                                        add (temp int)

+0:91                                          add (temp int)

+0:90                                            add (temp int)

+0:89                                              add (temp int)

+0:88                                                add (temp int)

+0:87                                                  add (temp int)

+0:87                                                    'i' (temp int)

+0:88                                                    direct index (temp int)

+0:88                                                      'i2' (temp 2-component vector of int)

 0:88                                                      Constant:

 0:88                                                        0 (const int)

-0:89                                                  direct index (int)

-0:89                                                    'i2' (2-component vector of int)

+0:89                                                  direct index (temp int)

+0:89                                                    'i2' (temp 2-component vector of int)

 0:89                                                    Constant:

 0:89                                                      1 (const int)

-0:90                                                direct index (int)

-0:90                                                  'i3' (3-component vector of int)

+0:90                                                direct index (temp int)

+0:90                                                  'i3' (temp 3-component vector of int)

 0:90                                                  Constant:

 0:90                                                    0 (const int)

-0:91                                              direct index (int)

-0:91                                                'i3' (3-component vector of int)

+0:91                                              direct index (temp int)

+0:91                                                'i3' (temp 3-component vector of int)

 0:91                                                Constant:

 0:91                                                  1 (const int)

-0:92                                            direct index (int)

-0:92                                              'i3' (3-component vector of int)

+0:92                                            direct index (temp int)

+0:92                                              'i3' (temp 3-component vector of int)

 0:92                                              Constant:

 0:92                                                2 (const int)

-0:93                                          direct index (int)

-0:93                                            'i4' (4-component vector of int)

+0:93                                          direct index (temp int)

+0:93                                            'i4' (temp 4-component vector of int)

 0:93                                            Constant:

 0:93                                              0 (const int)

-0:94                                        direct index (int)

-0:94                                          'i4' (4-component vector of int)

+0:94                                        direct index (temp int)

+0:94                                          'i4' (temp 4-component vector of int)

 0:94                                          Constant:

 0:94                                            1 (const int)

-0:95                                      direct index (int)

-0:95                                        'i4' (4-component vector of int)

+0:95                                      direct index (temp int)

+0:95                                        'i4' (temp 4-component vector of int)

 0:95                                        Constant:

 0:95                                          2 (const int)

-0:96                                    direct index (int)

-0:96                                      'i4' (4-component vector of int)

+0:96                                    direct index (temp int)

+0:96                                      'i4' (temp 4-component vector of int)

 0:96                                      Constant:

 0:96                                        3 (const int)

-0:97                                'f' (float)

-0:98                              direct index (float)

-0:98                                'f2' (2-component vector of float)

+0:97                                'f' (temp float)

+0:98                              direct index (temp float)

+0:98                                'f2' (temp 2-component vector of float)

 0:98                                Constant:

 0:98                                  0 (const int)

-0:99                            direct index (float)

-0:99                              'f2' (2-component vector of float)

+0:99                            direct index (temp float)

+0:99                              'f2' (temp 2-component vector of float)

 0:99                              Constant:

 0:99                                1 (const int)

-0:100                          direct index (float)

-0:100                            'f3' (3-component vector of float)

+0:100                          direct index (temp float)

+0:100                            'f3' (temp 3-component vector of float)

 0:100                            Constant:

 0:100                              0 (const int)

-0:101                        direct index (float)

-0:101                          'f3' (3-component vector of float)

+0:101                        direct index (temp float)

+0:101                          'f3' (temp 3-component vector of float)

 0:101                          Constant:

 0:101                            1 (const int)

-0:102                      direct index (float)

-0:102                        'f3' (3-component vector of float)

+0:102                      direct index (temp float)

+0:102                        'f3' (temp 3-component vector of float)

 0:102                        Constant:

 0:102                          2 (const int)

-0:103                    direct index (float)

-0:103                      'f4' (4-component vector of float)

+0:103                    direct index (temp float)

+0:103                      'f4' (temp 4-component vector of float)

 0:103                      Constant:

 0:103                        0 (const int)

-0:104                  direct index (float)

-0:104                    'f4' (4-component vector of float)

+0:104                  direct index (temp float)

+0:104                    'f4' (temp 4-component vector of float)

 0:104                    Constant:

 0:104                      1 (const int)

-0:105                direct index (float)

-0:105                  'f4' (4-component vector of float)

+0:105                direct index (temp float)

+0:105                  'f4' (temp 4-component vector of float)

 0:105                  Constant:

 0:105                    2 (const int)

-0:106              direct index (float)

-0:106                'f4' (4-component vector of float)

+0:106              direct index (temp float)

+0:106                'f4' (temp 4-component vector of float)

 0:106                Constant:

 0:106                  3 (const int)

 0:86          false case

@@ -432,23 +432,23 @@
 0:106            1.000000

 0:106            1.000000

 0:109      Sequence

-0:109        move second child to first child (4-component vector of int)

-0:109          'cv2' (4-component vector of int)

+0:109        move second child to first child (temp 4-component vector of int)

+0:109          'cv2' (temp 4-component vector of int)

 0:109          Constant:

 0:109            1 (const int)

 0:109            1 (const int)

 0:109            1 (const int)

 0:109            1 (const int)

 0:110      Sequence

-0:110        move second child to first child (4-component vector of bool)

-0:110          'cv5' (4-component vector of bool)

-0:110          Convert int to bool (4-component vector of bool)

-0:110            'cv2' (4-component vector of int)

-0:111      add second child into first child (4-component vector of float)

+0:110        move second child to first child (temp 4-component vector of bool)

+0:110          'cv5' (temp 4-component vector of bool)

+0:110          Convert int to bool (temp 4-component vector of bool)

+0:110            'cv2' (temp 4-component vector of int)

+0:111      add second child into first child (temp 4-component vector of float)

 0:111        'gl_FragColor' (fragColor 4-component vector of float)

-0:111        Construct float (float)

-0:111          Convert bool to float (4-component vector of float)

-0:111            'cv5' (4-component vector of bool)

+0:111        Construct float (temp float)

+0:111          Convert bool to float (temp 4-component vector of float)

+0:111            'cv5' (temp 4-component vector of bool)

 0:?   Linker Objects

 0:?     'u_b' (uniform bool)

 0:?     'u_b2' (uniform 2-component vector of bool)

@@ -481,427 +481,427 @@
 

 Shader version: 130

 0:? Sequence

-0:33  Function Definition: main( (void)

+0:33  Function Definition: main( (global void)

 0:33    Function Parameters: 

 0:35    Sequence

 0:35      Sequence

-0:35        move second child to first child (bool)

-0:35          'b' (bool)

-0:35          logical-xor (bool)

-0:35            Convert int to bool (bool)

+0:35        move second child to first child (temp bool)

+0:35          'b' (temp bool)

+0:35          logical-xor (temp bool)

+0:35            Convert int to bool (temp bool)

 0:35              'u_i' (uniform int)

-0:35            Convert float to bool (bool)

+0:35            Convert float to bool (temp bool)

 0:35              'u_f' (uniform float)

 0:36      Sequence

-0:36        move second child to first child (2-component vector of bool)

-0:36          'b2' (2-component vector of bool)

-0:36          Construct bvec2 (2-component vector of bool)

-0:36            Convert int to bool (bool)

+0:36        move second child to first child (temp 2-component vector of bool)

+0:36          'b2' (temp 2-component vector of bool)

+0:36          Construct bvec2 (temp 2-component vector of bool)

+0:36            Convert int to bool (temp bool)

 0:36              'u_i' (uniform int)

-0:36            Convert float to bool (bool)

+0:36            Convert float to bool (temp bool)

 0:36              'u_f' (uniform float)

 0:37      Sequence

-0:37        move second child to first child (3-component vector of bool)

-0:37          'b3' (3-component vector of bool)

-0:37          Construct bvec3 (3-component vector of bool)

-0:37            Convert int to bool (bool)

+0:37        move second child to first child (temp 3-component vector of bool)

+0:37          'b3' (temp 3-component vector of bool)

+0:37          Construct bvec3 (temp 3-component vector of bool)

+0:37            Convert int to bool (temp bool)

 0:37              'u_i' (uniform int)

-0:37            Convert float to bool (bool)

+0:37            Convert float to bool (temp bool)

 0:37              'u_f' (uniform float)

-0:37            Convert int to bool (bool)

+0:37            Convert int to bool (temp bool)

 0:37              'i_i' (flat in int)

 0:38      Sequence

-0:38        move second child to first child (4-component vector of bool)

-0:38          'b4' (4-component vector of bool)

-0:38          Construct bvec4 (4-component vector of bool)

-0:38            Convert int to bool (bool)

+0:38        move second child to first child (temp 4-component vector of bool)

+0:38          'b4' (temp 4-component vector of bool)

+0:38          Construct bvec4 (temp 4-component vector of bool)

+0:38            Convert int to bool (temp bool)

 0:38              'u_i' (uniform int)

-0:38            Convert float to bool (bool)

+0:38            Convert float to bool (temp bool)

 0:38              'u_f' (uniform float)

-0:38            Convert int to bool (bool)

+0:38            Convert int to bool (temp bool)

 0:38              'i_i' (flat in int)

-0:38            Convert float to bool (bool)

+0:38            Convert float to bool (temp bool)

 0:38              'i_f' (smooth in float)

 0:40      Sequence

-0:40        move second child to first child (int)

-0:40          'i' (int)

-0:40          add (int)

-0:40            Convert float to int (int)

+0:40        move second child to first child (temp int)

+0:40          'i' (temp int)

+0:40          add (temp int)

+0:40            Convert float to int (temp int)

 0:40              'u_f' (uniform float)

-0:40            Convert bool to int (int)

-0:40              'b' (bool)

+0:40            Convert bool to int (temp int)

+0:40              'b' (temp bool)

 0:41      Sequence

-0:41        move second child to first child (2-component vector of int)

-0:41          'i2' (2-component vector of int)

-0:41          add (2-component vector of int)

-0:41            Convert float to int (2-component vector of int)

+0:41        move second child to first child (temp 2-component vector of int)

+0:41          'i2' (temp 2-component vector of int)

+0:41          add (temp 2-component vector of int)

+0:41            Convert float to int (temp 2-component vector of int)

 0:41              'u_f2' (uniform 2-component vector of float)

-0:41            Convert bool to int (2-component vector of int)

-0:41              'b2' (2-component vector of bool)

+0:41            Convert bool to int (temp 2-component vector of int)

+0:41              'b2' (temp 2-component vector of bool)

 0:42      Sequence

-0:42        move second child to first child (3-component vector of int)

-0:42          'i3' (3-component vector of int)

-0:42          add (3-component vector of int)

-0:42            Convert float to int (3-component vector of int)

+0:42        move second child to first child (temp 3-component vector of int)

+0:42          'i3' (temp 3-component vector of int)

+0:42          add (temp 3-component vector of int)

+0:42            Convert float to int (temp 3-component vector of int)

 0:42              'u_f3' (uniform 3-component vector of float)

-0:42            Convert bool to int (3-component vector of int)

-0:42              'b3' (3-component vector of bool)

+0:42            Convert bool to int (temp 3-component vector of int)

+0:42              'b3' (temp 3-component vector of bool)

 0:43      Sequence

-0:43        move second child to first child (4-component vector of int)

-0:43          'i4' (4-component vector of int)

-0:43          add (4-component vector of int)

-0:43            Convert float to int (4-component vector of int)

+0:43        move second child to first child (temp 4-component vector of int)

+0:43          'i4' (temp 4-component vector of int)

+0:43          add (temp 4-component vector of int)

+0:43            Convert float to int (temp 4-component vector of int)

 0:43              'u_f4' (uniform 4-component vector of float)

-0:43            Convert bool to int (4-component vector of int)

-0:43              'b4' (4-component vector of bool)

+0:43            Convert bool to int (temp 4-component vector of int)

+0:43              'b4' (temp 4-component vector of bool)

 0:45      Sequence

-0:45        move second child to first child (float)

-0:45          'f' (float)

-0:45          Convert int to float (float)

-0:45            'i' (int)

+0:45        move second child to first child (temp float)

+0:45          'f' (temp float)

+0:45          Convert int to float (temp float)

+0:45            'i' (temp int)

 0:46      Sequence

-0:46        move second child to first child (2-component vector of float)

-0:46          'f2' (2-component vector of float)

-0:46          Convert int to float (2-component vector of float)

-0:46            'i2' (2-component vector of int)

+0:46        move second child to first child (temp 2-component vector of float)

+0:46          'f2' (temp 2-component vector of float)

+0:46          Convert int to float (temp 2-component vector of float)

+0:46            'i2' (temp 2-component vector of int)

 0:47      Sequence

-0:47        move second child to first child (3-component vector of float)

-0:47          'f3' (3-component vector of float)

-0:47          Convert int to float (3-component vector of float)

-0:47            'i3' (3-component vector of int)

+0:47        move second child to first child (temp 3-component vector of float)

+0:47          'f3' (temp 3-component vector of float)

+0:47          Convert int to float (temp 3-component vector of float)

+0:47            'i3' (temp 3-component vector of int)

 0:48      Sequence

-0:48        move second child to first child (4-component vector of float)

-0:48          'f4' (4-component vector of float)

-0:48          Convert int to float (4-component vector of float)

-0:48            'i4' (4-component vector of int)

-0:50      add second child into first child (float)

-0:50        'f' (float)

-0:50        add (float)

-0:50          Convert int to float (float)

-0:50            'i' (int)

-0:50          Convert bool to float (float)

-0:50            'b' (bool)

-0:51      subtract second child into first child (2-component vector of float)

-0:51        'f2' (2-component vector of float)

-0:51        add (2-component vector of float)

-0:51          Convert int to float (2-component vector of float)

-0:51            'i2' (2-component vector of int)

-0:51          Convert bool to float (2-component vector of float)

-0:51            'b2' (2-component vector of bool)

-0:52      divide second child into first child (3-component vector of float)

-0:52        'f3' (3-component vector of float)

-0:52        add (3-component vector of float)

-0:52          Convert int to float (3-component vector of float)

-0:52            'i3' (3-component vector of int)

-0:52          Convert bool to float (3-component vector of float)

-0:52            'b3' (3-component vector of bool)

-0:53      add second child into first child (4-component vector of float)

-0:53        'f4' (4-component vector of float)

-0:53        add (4-component vector of float)

-0:53          Convert int to float (4-component vector of float)

-0:53            'i4' (4-component vector of int)

-0:53          Convert bool to float (4-component vector of float)

-0:53            'b4' (4-component vector of bool)

-0:55      add second child into first child (4-component vector of float)

-0:55        'f4' (4-component vector of float)

-0:55        Convert bool to float (4-component vector of float)

-0:55          Convert int to bool (4-component vector of bool)

+0:48        move second child to first child (temp 4-component vector of float)

+0:48          'f4' (temp 4-component vector of float)

+0:48          Convert int to float (temp 4-component vector of float)

+0:48            'i4' (temp 4-component vector of int)

+0:50      add second child into first child (temp float)

+0:50        'f' (temp float)

+0:50        add (temp float)

+0:50          Convert int to float (temp float)

+0:50            'i' (temp int)

+0:50          Convert bool to float (temp float)

+0:50            'b' (temp bool)

+0:51      subtract second child into first child (temp 2-component vector of float)

+0:51        'f2' (temp 2-component vector of float)

+0:51        add (temp 2-component vector of float)

+0:51          Convert int to float (temp 2-component vector of float)

+0:51            'i2' (temp 2-component vector of int)

+0:51          Convert bool to float (temp 2-component vector of float)

+0:51            'b2' (temp 2-component vector of bool)

+0:52      divide second child into first child (temp 3-component vector of float)

+0:52        'f3' (temp 3-component vector of float)

+0:52        add (temp 3-component vector of float)

+0:52          Convert int to float (temp 3-component vector of float)

+0:52            'i3' (temp 3-component vector of int)

+0:52          Convert bool to float (temp 3-component vector of float)

+0:52            'b3' (temp 3-component vector of bool)

+0:53      add second child into first child (temp 4-component vector of float)

+0:53        'f4' (temp 4-component vector of float)

+0:53        add (temp 4-component vector of float)

+0:53          Convert int to float (temp 4-component vector of float)

+0:53            'i4' (temp 4-component vector of int)

+0:53          Convert bool to float (temp 4-component vector of float)

+0:53            'b4' (temp 4-component vector of bool)

+0:55      add second child into first child (temp 4-component vector of float)

+0:55        'f4' (temp 4-component vector of float)

+0:55        Convert bool to float (temp 4-component vector of float)

+0:55          Convert int to bool (temp 4-component vector of bool)

 0:55            'i_i4' (flat in 4-component vector of int)

-0:56      add second child into first child (4-component vector of float)

-0:56        'f4' (4-component vector of float)

-0:56        Convert bool to float (4-component vector of float)

-0:56          Convert float to bool (4-component vector of bool)

+0:56      add second child into first child (temp 4-component vector of float)

+0:56        'f4' (temp 4-component vector of float)

+0:56        Convert bool to float (temp 4-component vector of float)

+0:56          Convert float to bool (temp 4-component vector of bool)

 0:56            'u_f4' (uniform 4-component vector of float)

-0:58      add second child into first child (float)

-0:58        'f' (float)

-0:58        subtract (float)

-0:58          'f' (float)

-0:58          Convert int to float (float)

-0:58            'i' (int)

-0:59      add second child into first child (2-component vector of float)

-0:59        'f2' (2-component vector of float)

-0:59        add (2-component vector of float)

-0:59          Construct vec2 (2-component vector of float)

-0:59            'f' (float)

-0:59            Convert int to float (float)

-0:59              'i' (int)

-0:59          Convert int to float (2-component vector of float)

-0:59            'i2' (2-component vector of int)

-0:60      add second child into first child (3-component vector of float)

-0:60        'f3' (3-component vector of float)

-0:60        add (3-component vector of float)

-0:60          Convert int to float (3-component vector of float)

-0:60            'i3' (3-component vector of int)

-0:60          Construct vec3 (3-component vector of float)

-0:60            'f' (float)

-0:60            Convert int to float (float)

-0:60              'i' (int)

-0:60            'f' (float)

-0:61      add second child into first child (4-component vector of float)

-0:61        'f4' (4-component vector of float)

-0:61        add (4-component vector of float)

-0:61          Construct vec4 (4-component vector of float)

-0:61            Convert bool to float (float)

-0:61              'b' (bool)

-0:61            Convert int to float (float)

-0:61              'i' (int)

-0:61            'f' (float)

-0:61            Convert int to float (float)

-0:61              'i' (int)

-0:61          Convert int to float (4-component vector of float)

-0:61            'i4' (4-component vector of int)

-0:63      add second child into first child (2-component vector of float)

-0:63        'f2' (2-component vector of float)

-0:63        vector-scale (2-component vector of float)

-0:63          Construct vec2 (2-component vector of float)

-0:63            'f' (float)

-0:63            Convert int to float (float)

-0:63              'i' (int)

-0:63          Convert int to float (float)

-0:63            'i' (int)

-0:64      add second child into first child (3-component vector of float)

-0:64        'f3' (3-component vector of float)

-0:64        add (3-component vector of float)

-0:64          Construct vec3 (3-component vector of float)

-0:64            'f' (float)

-0:64            Convert int to float (float)

-0:64              'i' (int)

-0:64            'f' (float)

-0:64          Convert int to float (float)

-0:64            'i' (int)

-0:65      add second child into first child (4-component vector of float)

-0:65        'f4' (4-component vector of float)

-0:65        subtract (4-component vector of float)

-0:65          Convert int to float (float)

-0:65            'i' (int)

-0:65          Construct vec4 (4-component vector of float)

-0:65            Convert bool to float (float)

-0:65              'b' (bool)

-0:65            Convert int to float (float)

-0:65              'i' (int)

-0:65            'f' (float)

-0:65            Convert int to float (float)

-0:65              'i' (int)

-0:67      add second child into first child (2-component vector of int)

-0:67        'i2' (2-component vector of int)

-0:67        Construct ivec2 (2-component vector of int)

-0:67          Convert float to int (int)

-0:67            'f' (float)

-0:67          'i' (int)

-0:68      add second child into first child (3-component vector of int)

-0:68        'i3' (3-component vector of int)

-0:68        Construct ivec3 (3-component vector of int)

-0:68          Convert float to int (int)

-0:68            'f' (float)

-0:68          'i' (int)

-0:68          Convert float to int (int)

-0:68            'f' (float)

-0:69      add second child into first child (4-component vector of int)

-0:69        'i4' (4-component vector of int)

-0:69        Construct ivec4 (4-component vector of int)

-0:69          Convert bool to int (int)

-0:69            'b' (bool)

-0:69          'i' (int)

-0:69          Convert float to int (int)

-0:69            'f' (float)

-0:69          'i' (int)

-0:71      Test condition and select (void)

+0:58      add second child into first child (temp float)

+0:58        'f' (temp float)

+0:58        subtract (temp float)

+0:58          'f' (temp float)

+0:58          Convert int to float (temp float)

+0:58            'i' (temp int)

+0:59      add second child into first child (temp 2-component vector of float)

+0:59        'f2' (temp 2-component vector of float)

+0:59        add (temp 2-component vector of float)

+0:59          Construct vec2 (temp 2-component vector of float)

+0:59            'f' (temp float)

+0:59            Convert int to float (temp float)

+0:59              'i' (temp int)

+0:59          Convert int to float (temp 2-component vector of float)

+0:59            'i2' (temp 2-component vector of int)

+0:60      add second child into first child (temp 3-component vector of float)

+0:60        'f3' (temp 3-component vector of float)

+0:60        add (temp 3-component vector of float)

+0:60          Convert int to float (temp 3-component vector of float)

+0:60            'i3' (temp 3-component vector of int)

+0:60          Construct vec3 (temp 3-component vector of float)

+0:60            'f' (temp float)

+0:60            Convert int to float (temp float)

+0:60              'i' (temp int)

+0:60            'f' (temp float)

+0:61      add second child into first child (temp 4-component vector of float)

+0:61        'f4' (temp 4-component vector of float)

+0:61        add (temp 4-component vector of float)

+0:61          Construct vec4 (temp 4-component vector of float)

+0:61            Convert bool to float (temp float)

+0:61              'b' (temp bool)

+0:61            Convert int to float (temp float)

+0:61              'i' (temp int)

+0:61            'f' (temp float)

+0:61            Convert int to float (temp float)

+0:61              'i' (temp int)

+0:61          Convert int to float (temp 4-component vector of float)

+0:61            'i4' (temp 4-component vector of int)

+0:63      add second child into first child (temp 2-component vector of float)

+0:63        'f2' (temp 2-component vector of float)

+0:63        vector-scale (temp 2-component vector of float)

+0:63          Construct vec2 (temp 2-component vector of float)

+0:63            'f' (temp float)

+0:63            Convert int to float (temp float)

+0:63              'i' (temp int)

+0:63          Convert int to float (temp float)

+0:63            'i' (temp int)

+0:64      add second child into first child (temp 3-component vector of float)

+0:64        'f3' (temp 3-component vector of float)

+0:64        add (temp 3-component vector of float)

+0:64          Construct vec3 (temp 3-component vector of float)

+0:64            'f' (temp float)

+0:64            Convert int to float (temp float)

+0:64              'i' (temp int)

+0:64            'f' (temp float)

+0:64          Convert int to float (temp float)

+0:64            'i' (temp int)

+0:65      add second child into first child (temp 4-component vector of float)

+0:65        'f4' (temp 4-component vector of float)

+0:65        subtract (temp 4-component vector of float)

+0:65          Convert int to float (temp float)

+0:65            'i' (temp int)

+0:65          Construct vec4 (temp 4-component vector of float)

+0:65            Convert bool to float (temp float)

+0:65              'b' (temp bool)

+0:65            Convert int to float (temp float)

+0:65              'i' (temp int)

+0:65            'f' (temp float)

+0:65            Convert int to float (temp float)

+0:65              'i' (temp int)

+0:67      add second child into first child (temp 2-component vector of int)

+0:67        'i2' (temp 2-component vector of int)

+0:67        Construct ivec2 (temp 2-component vector of int)

+0:67          Convert float to int (temp int)

+0:67            'f' (temp float)

+0:67          'i' (temp int)

+0:68      add second child into first child (temp 3-component vector of int)

+0:68        'i3' (temp 3-component vector of int)

+0:68        Construct ivec3 (temp 3-component vector of int)

+0:68          Convert float to int (temp int)

+0:68            'f' (temp float)

+0:68          'i' (temp int)

+0:68          Convert float to int (temp int)

+0:68            'f' (temp float)

+0:69      add second child into first child (temp 4-component vector of int)

+0:69        'i4' (temp 4-component vector of int)

+0:69        Construct ivec4 (temp 4-component vector of int)

+0:69          Convert bool to int (temp int)

+0:69            'b' (temp bool)

+0:69          'i' (temp int)

+0:69          Convert float to int (temp int)

+0:69            'f' (temp float)

+0:69          'i' (temp int)

+0:71      Test condition and select (temp void)

 0:71        Condition

-0:72        logical-or (bool)

-0:71          logical-or (bool)

-0:71            logical-or (bool)

-0:71              Compare Less Than (bool)

-0:71                'f' (float)

-0:71                Convert int to float (float)

-0:71                  'i' (int)

-0:71              Compare Less Than (bool)

-0:71                Convert int to float (float)

-0:71                  'i' (int)

-0:71                'f' (float)

-0:72            Compare Equal (bool)

-0:72              'f2' (2-component vector of float)

-0:72              Convert int to float (2-component vector of float)

-0:72                'i2' (2-component vector of int)

-0:73          Compare Not Equal (bool)

-0:73            Convert int to float (3-component vector of float)

-0:73              'i3' (3-component vector of int)

-0:73            'f3' (3-component vector of float)

+0:72        logical-or (temp bool)

+0:71          logical-or (temp bool)

+0:71            logical-or (temp bool)

+0:71              Compare Less Than (temp bool)

+0:71                'f' (temp float)

+0:71                Convert int to float (temp float)

+0:71                  'i' (temp int)

+0:71              Compare Less Than (temp bool)

+0:71                Convert int to float (temp float)

+0:71                  'i' (temp int)

+0:71                'f' (temp float)

+0:72            Compare Equal (temp bool)

+0:72              'f2' (temp 2-component vector of float)

+0:72              Convert int to float (temp 2-component vector of float)

+0:72                'i2' (temp 2-component vector of int)

+0:73          Compare Not Equal (temp bool)

+0:73            Convert int to float (temp 3-component vector of float)

+0:73              'i3' (temp 3-component vector of int)

+0:73            'f3' (temp 3-component vector of float)

 0:71        true case

-0:74        move second child to first child (float)

-0:74          'f' (float)

-0:74          add (float)

-0:74            Test condition and select (float)

+0:74        move second child to first child (temp float)

+0:74          'f' (temp float)

+0:74          add (temp float)

+0:74            Test condition and select (temp float)

 0:74              Condition

-0:74              'b' (bool)

+0:74              'b' (temp bool)

 0:74              true case

-0:74              Convert int to float (float)

-0:74                'i' (int)

+0:74              Convert int to float (temp float)

+0:74                'i' (temp int)

 0:74              false case

-0:74              direct index (float)

-0:74                'f2' (2-component vector of float)

+0:74              direct index (temp float)

+0:74                'f2' (temp 2-component vector of float)

 0:74                Constant:

 0:74                  0 (const int)

-0:74            Test condition and select (float)

+0:74            Test condition and select (temp float)

 0:74              Condition

-0:74              direct index (bool)

-0:74                'b2' (2-component vector of bool)

+0:74              direct index (temp bool)

+0:74                'b2' (temp 2-component vector of bool)

 0:74                Constant:

 0:74                  0 (const int)

 0:74              true case

-0:74              direct index (float)

-0:74                'f3' (3-component vector of float)

+0:74              direct index (temp float)

+0:74                'f3' (temp 3-component vector of float)

 0:74                Constant:

 0:74                  0 (const int)

 0:74              false case

-0:74              Convert int to float (float)

-0:74                direct index (int)

-0:74                  'i2' (2-component vector of int)

+0:74              Convert int to float (temp float)

+0:74                direct index (temp int)

+0:74                  'i2' (temp 2-component vector of int)

 0:74                  Constant:

 0:74                    1 (const int)

-0:76      move second child to first child (4-component vector of float)

+0:76      move second child to first child (temp 4-component vector of float)

 0:76        'gl_FragColor' (fragColor 4-component vector of float)

-0:86        Test condition and select (4-component vector of float)

+0:86        Test condition and select (temp 4-component vector of float)

 0:86          Condition

-0:85          logical-or (bool)

-0:84            logical-or (bool)

-0:83              logical-or (bool)

-0:82                logical-or (bool)

-0:81                  logical-or (bool)

-0:80                    logical-or (bool)

-0:79                      logical-or (bool)

-0:78                        logical-or (bool)

-0:77                          logical-or (bool)

-0:77                            'b' (bool)

-0:78                            direct index (bool)

-0:78                              'b2' (2-component vector of bool)

+0:85          logical-or (temp bool)

+0:84            logical-or (temp bool)

+0:83              logical-or (temp bool)

+0:82                logical-or (temp bool)

+0:81                  logical-or (temp bool)

+0:80                    logical-or (temp bool)

+0:79                      logical-or (temp bool)

+0:78                        logical-or (temp bool)

+0:77                          logical-or (temp bool)

+0:77                            'b' (temp bool)

+0:78                            direct index (temp bool)

+0:78                              'b2' (temp 2-component vector of bool)

 0:78                              Constant:

 0:78                                0 (const int)

-0:79                          direct index (bool)

-0:79                            'b2' (2-component vector of bool)

+0:79                          direct index (temp bool)

+0:79                            'b2' (temp 2-component vector of bool)

 0:79                            Constant:

 0:79                              1 (const int)

-0:80                        direct index (bool)

-0:80                          'b3' (3-component vector of bool)

+0:80                        direct index (temp bool)

+0:80                          'b3' (temp 3-component vector of bool)

 0:80                          Constant:

 0:80                            0 (const int)

-0:81                      direct index (bool)

-0:81                        'b3' (3-component vector of bool)

+0:81                      direct index (temp bool)

+0:81                        'b3' (temp 3-component vector of bool)

 0:81                        Constant:

 0:81                          1 (const int)

-0:82                    direct index (bool)

-0:82                      'b3' (3-component vector of bool)

+0:82                    direct index (temp bool)

+0:82                      'b3' (temp 3-component vector of bool)

 0:82                      Constant:

 0:82                        2 (const int)

-0:83                  direct index (bool)

-0:83                    'b4' (4-component vector of bool)

+0:83                  direct index (temp bool)

+0:83                    'b4' (temp 4-component vector of bool)

 0:83                    Constant:

 0:83                      0 (const int)

-0:84                direct index (bool)

-0:84                  'b4' (4-component vector of bool)

+0:84                direct index (temp bool)

+0:84                  'b4' (temp 4-component vector of bool)

 0:84                  Constant:

 0:84                    1 (const int)

-0:85              direct index (bool)

-0:85                'b4' (4-component vector of bool)

+0:85              direct index (temp bool)

+0:85                'b4' (temp 4-component vector of bool)

 0:85                Constant:

 0:85                  2 (const int)

-0:86            direct index (bool)

-0:86              'b4' (4-component vector of bool)

+0:86            direct index (temp bool)

+0:86              'b4' (temp 4-component vector of bool)

 0:86              Constant:

 0:86                3 (const int)

 0:86          true case

-0:105          Construct vec4 (4-component vector of float)

-0:105            add (float)

-0:104              add (float)

-0:103                add (float)

-0:102                  add (float)

-0:101                    add (float)

-0:100                      add (float)

-0:99                        add (float)

-0:98                          add (float)

-0:97                            add (float)

-0:96                              add (float)

-0:95                                Convert int to float (float)

-0:95                                  add (int)

-0:94                                    add (int)

-0:93                                      add (int)

-0:92                                        add (int)

-0:91                                          add (int)

-0:90                                            add (int)

-0:89                                              add (int)

-0:88                                                add (int)

-0:87                                                  add (int)

-0:87                                                    'i' (int)

-0:88                                                    direct index (int)

-0:88                                                      'i2' (2-component vector of int)

+0:105          Construct vec4 (temp 4-component vector of float)

+0:105            add (temp float)

+0:104              add (temp float)

+0:103                add (temp float)

+0:102                  add (temp float)

+0:101                    add (temp float)

+0:100                      add (temp float)

+0:99                        add (temp float)

+0:98                          add (temp float)

+0:97                            add (temp float)

+0:96                              add (temp float)

+0:95                                Convert int to float (temp float)

+0:95                                  add (temp int)

+0:94                                    add (temp int)

+0:93                                      add (temp int)

+0:92                                        add (temp int)

+0:91                                          add (temp int)

+0:90                                            add (temp int)

+0:89                                              add (temp int)

+0:88                                                add (temp int)

+0:87                                                  add (temp int)

+0:87                                                    'i' (temp int)

+0:88                                                    direct index (temp int)

+0:88                                                      'i2' (temp 2-component vector of int)

 0:88                                                      Constant:

 0:88                                                        0 (const int)

-0:89                                                  direct index (int)

-0:89                                                    'i2' (2-component vector of int)

+0:89                                                  direct index (temp int)

+0:89                                                    'i2' (temp 2-component vector of int)

 0:89                                                    Constant:

 0:89                                                      1 (const int)

-0:90                                                direct index (int)

-0:90                                                  'i3' (3-component vector of int)

+0:90                                                direct index (temp int)

+0:90                                                  'i3' (temp 3-component vector of int)

 0:90                                                  Constant:

 0:90                                                    0 (const int)

-0:91                                              direct index (int)

-0:91                                                'i3' (3-component vector of int)

+0:91                                              direct index (temp int)

+0:91                                                'i3' (temp 3-component vector of int)

 0:91                                                Constant:

 0:91                                                  1 (const int)

-0:92                                            direct index (int)

-0:92                                              'i3' (3-component vector of int)

+0:92                                            direct index (temp int)

+0:92                                              'i3' (temp 3-component vector of int)

 0:92                                              Constant:

 0:92                                                2 (const int)

-0:93                                          direct index (int)

-0:93                                            'i4' (4-component vector of int)

+0:93                                          direct index (temp int)

+0:93                                            'i4' (temp 4-component vector of int)

 0:93                                            Constant:

 0:93                                              0 (const int)

-0:94                                        direct index (int)

-0:94                                          'i4' (4-component vector of int)

+0:94                                        direct index (temp int)

+0:94                                          'i4' (temp 4-component vector of int)

 0:94                                          Constant:

 0:94                                            1 (const int)

-0:95                                      direct index (int)

-0:95                                        'i4' (4-component vector of int)

+0:95                                      direct index (temp int)

+0:95                                        'i4' (temp 4-component vector of int)

 0:95                                        Constant:

 0:95                                          2 (const int)

-0:96                                    direct index (int)

-0:96                                      'i4' (4-component vector of int)

+0:96                                    direct index (temp int)

+0:96                                      'i4' (temp 4-component vector of int)

 0:96                                      Constant:

 0:96                                        3 (const int)

-0:97                                'f' (float)

-0:98                              direct index (float)

-0:98                                'f2' (2-component vector of float)

+0:97                                'f' (temp float)

+0:98                              direct index (temp float)

+0:98                                'f2' (temp 2-component vector of float)

 0:98                                Constant:

 0:98                                  0 (const int)

-0:99                            direct index (float)

-0:99                              'f2' (2-component vector of float)

+0:99                            direct index (temp float)

+0:99                              'f2' (temp 2-component vector of float)

 0:99                              Constant:

 0:99                                1 (const int)

-0:100                          direct index (float)

-0:100                            'f3' (3-component vector of float)

+0:100                          direct index (temp float)

+0:100                            'f3' (temp 3-component vector of float)

 0:100                            Constant:

 0:100                              0 (const int)

-0:101                        direct index (float)

-0:101                          'f3' (3-component vector of float)

+0:101                        direct index (temp float)

+0:101                          'f3' (temp 3-component vector of float)

 0:101                          Constant:

 0:101                            1 (const int)

-0:102                      direct index (float)

-0:102                        'f3' (3-component vector of float)

+0:102                      direct index (temp float)

+0:102                        'f3' (temp 3-component vector of float)

 0:102                        Constant:

 0:102                          2 (const int)

-0:103                    direct index (float)

-0:103                      'f4' (4-component vector of float)

+0:103                    direct index (temp float)

+0:103                      'f4' (temp 4-component vector of float)

 0:103                      Constant:

 0:103                        0 (const int)

-0:104                  direct index (float)

-0:104                    'f4' (4-component vector of float)

+0:104                  direct index (temp float)

+0:104                    'f4' (temp 4-component vector of float)

 0:104                    Constant:

 0:104                      1 (const int)

-0:105                direct index (float)

-0:105                  'f4' (4-component vector of float)

+0:105                direct index (temp float)

+0:105                  'f4' (temp 4-component vector of float)

 0:105                  Constant:

 0:105                    2 (const int)

-0:106              direct index (float)

-0:106                'f4' (4-component vector of float)

+0:106              direct index (temp float)

+0:106                'f4' (temp 4-component vector of float)

 0:106                Constant:

 0:106                  3 (const int)

 0:86          false case

@@ -911,23 +911,23 @@
 0:106            1.000000

 0:106            1.000000

 0:109      Sequence

-0:109        move second child to first child (4-component vector of int)

-0:109          'cv2' (4-component vector of int)

+0:109        move second child to first child (temp 4-component vector of int)

+0:109          'cv2' (temp 4-component vector of int)

 0:109          Constant:

 0:109            1 (const int)

 0:109            1 (const int)

 0:109            1 (const int)

 0:109            1 (const int)

 0:110      Sequence

-0:110        move second child to first child (4-component vector of bool)

-0:110          'cv5' (4-component vector of bool)

-0:110          Convert int to bool (4-component vector of bool)

-0:110            'cv2' (4-component vector of int)

-0:111      add second child into first child (4-component vector of float)

+0:110        move second child to first child (temp 4-component vector of bool)

+0:110          'cv5' (temp 4-component vector of bool)

+0:110          Convert int to bool (temp 4-component vector of bool)

+0:110            'cv2' (temp 4-component vector of int)

+0:111      add second child into first child (temp 4-component vector of float)

 0:111        'gl_FragColor' (fragColor 4-component vector of float)

-0:111        Construct float (float)

-0:111          Convert bool to float (4-component vector of float)

-0:111            'cv5' (4-component vector of bool)

+0:111        Construct float (temp float)

+0:111          Convert bool to float (temp 4-component vector of float)

+0:111            'cv5' (temp 4-component vector of bool)

 0:?   Linker Objects

 0:?     'u_b' (uniform bool)

 0:?     'u_b2' (uniform 2-component vector of bool)

diff --git a/Test/baseResults/cppComplexExpr.vert.out b/Test/baseResults/cppComplexExpr.vert.out
index 100123a..a49beba 100644
--- a/Test/baseResults/cppComplexExpr.vert.out
+++ b/Test/baseResults/cppComplexExpr.vert.out
@@ -49,72 +49,72 @@
 Shader version: 300

 ERROR: node is still EOpNull!

 0:4  Sequence

-0:4    move second child to first child (highp float)

-0:4      'sum' (highp float)

+0:4    move second child to first child (temp highp float)

+0:4      'sum' (global highp float)

 0:4      Constant:

 0:4        0.000000

-0:6  Function Definition: main( (void)

+0:6  Function Definition: main( (global void)

 0:6    Function Parameters: 

 0:10    Sequence

-0:10      add second child into first child (highp float)

-0:10        'sum' (highp float)

+0:10      add second child into first child (temp highp float)

+0:10        'sum' (global highp float)

 0:10        Constant:

 0:10          1.000000

-0:15      add second child into first child (highp float)

-0:15        'sum' (highp float)

+0:15      add second child into first child (temp highp float)

+0:15        'sum' (global highp float)

 0:15        Constant:

 0:15          20.000000

-0:30      add second child into first child (highp float)

-0:30        'sum' (highp float)

+0:30      add second child into first child (temp highp float)

+0:30        'sum' (global highp float)

 0:30        Constant:

 0:30          300.000000

-0:39      move second child to first child (highp 4-component vector of float)

+0:39      move second child to first child (temp highp 4-component vector of float)

 0:39        'gl_Position' (gl_Position highp 4-component vector of float)

-0:39        Construct vec4 (highp 4-component vector of float)

-0:39          'sum' (highp float)

-0:44  Function Definition: foo( (highp float)

+0:39        Construct vec4 (temp highp 4-component vector of float)

+0:39          'sum' (global highp float)

+0:44  Function Definition: foo( (global highp float)

 0:44    Function Parameters: 

 0:46    Sequence

 0:46      Branch: Return with expression

-0:46        add (highp float)

-0:46          add (highp float)

-0:46            direct index (highp float)

+0:46        add (temp highp float)

+0:46          add (temp highp float)

+0:46            direct index (temp highp float)

 0:46              'gl_Position' (gl_Position highp 4-component vector of float)

 0:46              Constant:

 0:46                0 (const int)

 0:46            Constant:

 0:46              3.000000

-0:46          add (highp float)

-0:46            direct index (highp float)

+0:46          add (temp highp float)

+0:46            direct index (temp highp float)

 0:46              'gl_Position' (gl_Position highp 4-component vector of float)

 0:46              Constant:

 0:46                0 (const int)

 0:46            Constant:

 0:46              3.000000

 0:47      Branch: Return with expression

-0:47        add (highp float)

-0:47          add (highp float)

-0:47            direct index (highp float)

+0:47        add (temp highp float)

+0:47          add (temp highp float)

+0:47            direct index (temp highp float)

 0:47              'gl_Position' (gl_Position highp 4-component vector of float)

 0:47              Constant:

 0:47                1 (const int)

 0:47            Constant:

 0:47              3.000000

-0:47          add (highp float)

-0:47            direct index (highp float)

+0:47          add (temp highp float)

+0:47            direct index (temp highp float)

 0:47              'gl_Position' (gl_Position highp 4-component vector of float)

 0:47              Constant:

 0:47                1 (const int)

 0:47            Constant:

 0:47              3.000000

 0:97  Sequence

-0:97    move second child to first child (highp float)

-0:97      'c' (highp float)

+0:97    move second child to first child (temp highp float)

+0:97      'c' (global highp float)

 0:98      Constant:

 0:98        3.300000

 0:?   Linker Objects

-0:?     'sum' (highp float)

-0:?     'c' (highp float)

+0:?     'sum' (global highp float)

+0:?     'c' (global highp float)

 0:?     'gl_VertexID' (gl_VertexId highp int)

 0:?     'gl_InstanceID' (gl_InstanceId highp int)

 

@@ -125,72 +125,72 @@
 Shader version: 300

 ERROR: node is still EOpNull!

 0:4  Sequence

-0:4    move second child to first child (highp float)

-0:4      'sum' (highp float)

+0:4    move second child to first child (temp highp float)

+0:4      'sum' (global highp float)

 0:4      Constant:

 0:4        0.000000

-0:6  Function Definition: main( (void)

+0:6  Function Definition: main( (global void)

 0:6    Function Parameters: 

 0:10    Sequence

-0:10      add second child into first child (highp float)

-0:10        'sum' (highp float)

+0:10      add second child into first child (temp highp float)

+0:10        'sum' (global highp float)

 0:10        Constant:

 0:10          1.000000

-0:15      add second child into first child (highp float)

-0:15        'sum' (highp float)

+0:15      add second child into first child (temp highp float)

+0:15        'sum' (global highp float)

 0:15        Constant:

 0:15          20.000000

-0:30      add second child into first child (highp float)

-0:30        'sum' (highp float)

+0:30      add second child into first child (temp highp float)

+0:30        'sum' (global highp float)

 0:30        Constant:

 0:30          300.000000

-0:39      move second child to first child (highp 4-component vector of float)

+0:39      move second child to first child (temp highp 4-component vector of float)

 0:39        'gl_Position' (gl_Position highp 4-component vector of float)

-0:39        Construct vec4 (highp 4-component vector of float)

-0:39          'sum' (highp float)

-0:44  Function Definition: foo( (highp float)

+0:39        Construct vec4 (temp highp 4-component vector of float)

+0:39          'sum' (global highp float)

+0:44  Function Definition: foo( (global highp float)

 0:44    Function Parameters: 

 0:46    Sequence

 0:46      Branch: Return with expression

-0:46        add (highp float)

-0:46          add (highp float)

-0:46            direct index (highp float)

+0:46        add (temp highp float)

+0:46          add (temp highp float)

+0:46            direct index (temp highp float)

 0:46              'gl_Position' (gl_Position highp 4-component vector of float)

 0:46              Constant:

 0:46                0 (const int)

 0:46            Constant:

 0:46              3.000000

-0:46          add (highp float)

-0:46            direct index (highp float)

+0:46          add (temp highp float)

+0:46            direct index (temp highp float)

 0:46              'gl_Position' (gl_Position highp 4-component vector of float)

 0:46              Constant:

 0:46                0 (const int)

 0:46            Constant:

 0:46              3.000000

 0:47      Branch: Return with expression

-0:47        add (highp float)

-0:47          add (highp float)

-0:47            direct index (highp float)

+0:47        add (temp highp float)

+0:47          add (temp highp float)

+0:47            direct index (temp highp float)

 0:47              'gl_Position' (gl_Position highp 4-component vector of float)

 0:47              Constant:

 0:47                1 (const int)

 0:47            Constant:

 0:47              3.000000

-0:47          add (highp float)

-0:47            direct index (highp float)

+0:47          add (temp highp float)

+0:47            direct index (temp highp float)

 0:47              'gl_Position' (gl_Position highp 4-component vector of float)

 0:47              Constant:

 0:47                1 (const int)

 0:47            Constant:

 0:47              3.000000

 0:97  Sequence

-0:97    move second child to first child (highp float)

-0:97      'c' (highp float)

+0:97    move second child to first child (temp highp float)

+0:97      'c' (global highp float)

 0:98      Constant:

 0:98        3.300000

 0:?   Linker Objects

-0:?     'sum' (highp float)

-0:?     'c' (highp float)

+0:?     'sum' (global highp float)

+0:?     'c' (global highp float)

 0:?     'gl_VertexID' (gl_VertexId highp int)

 0:?     'gl_InstanceID' (gl_InstanceId highp int)

 

diff --git a/Test/baseResults/cppIndent.vert.out b/Test/baseResults/cppIndent.vert.out
index bc36e8e..a8c4c3c 100644
--- a/Test/baseResults/cppIndent.vert.out
+++ b/Test/baseResults/cppIndent.vert.out
@@ -7,39 +7,39 @@
 Shader version: 110

 ERROR: node is still EOpNull!

 0:5  Sequence

-0:5    move second child to first child (float)

-0:5      'sum' (float)

+0:5    move second child to first child (temp float)

+0:5      'sum' (global float)

 0:5      Constant:

 0:5        0.000000

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:12    Sequence

-0:12      add second child into first child (float)

-0:12        'sum' (float)

+0:12      add second child into first child (temp float)

+0:12        'sum' (global float)

 0:12        Constant:

 0:12          1.000000

-0:22      add second child into first child (float)

-0:22        'sum' (float)

+0:22      add second child into first child (temp float)

+0:22        'sum' (global float)

 0:22        Constant:

 0:22          300.000000

-0:37      add second child into first child (float)

-0:37        'sum' (float)

+0:37      add second child into first child (temp float)

+0:37        'sum' (global float)

 0:37        Constant:

 0:37          600000.000000

-0:47      add second child into first child (float)

-0:47        'sum' (float)

+0:47      add second child into first child (temp float)

+0:47        'sum' (global float)

 0:47        Constant:

 0:47          80000000.000000

-0:52      add second child into first child (float)

-0:52        'sum' (float)

+0:52      add second child into first child (temp float)

+0:52        'sum' (global float)

 0:52        Constant:

 0:52          900000000.000000

-0:56      move second child to first child (4-component vector of float)

+0:56      move second child to first child (temp 4-component vector of float)

 0:56        'gl_Position' (gl_Position 4-component vector of float)

-0:56        Construct vec4 (4-component vector of float)

-0:56          'sum' (float)

+0:56        Construct vec4 (temp 4-component vector of float)

+0:56          'sum' (global float)

 0:?   Linker Objects

-0:?     'sum' (float)

+0:?     'sum' (global float)

 

 

 Linked vertex stage:

@@ -48,37 +48,37 @@
 Shader version: 110

 ERROR: node is still EOpNull!

 0:5  Sequence

-0:5    move second child to first child (float)

-0:5      'sum' (float)

+0:5    move second child to first child (temp float)

+0:5      'sum' (global float)

 0:5      Constant:

 0:5        0.000000

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:12    Sequence

-0:12      add second child into first child (float)

-0:12        'sum' (float)

+0:12      add second child into first child (temp float)

+0:12        'sum' (global float)

 0:12        Constant:

 0:12          1.000000

-0:22      add second child into first child (float)

-0:22        'sum' (float)

+0:22      add second child into first child (temp float)

+0:22        'sum' (global float)

 0:22        Constant:

 0:22          300.000000

-0:37      add second child into first child (float)

-0:37        'sum' (float)

+0:37      add second child into first child (temp float)

+0:37        'sum' (global float)

 0:37        Constant:

 0:37          600000.000000

-0:47      add second child into first child (float)

-0:47        'sum' (float)

+0:47      add second child into first child (temp float)

+0:47        'sum' (global float)

 0:47        Constant:

 0:47          80000000.000000

-0:52      add second child into first child (float)

-0:52        'sum' (float)

+0:52      add second child into first child (temp float)

+0:52        'sum' (global float)

 0:52        Constant:

 0:52          900000000.000000

-0:56      move second child to first child (4-component vector of float)

+0:56      move second child to first child (temp 4-component vector of float)

 0:56        'gl_Position' (gl_Position 4-component vector of float)

-0:56        Construct vec4 (4-component vector of float)

-0:56          'sum' (float)

+0:56        Construct vec4 (temp 4-component vector of float)

+0:56          'sum' (global float)

 0:?   Linker Objects

-0:?     'sum' (float)

+0:?     'sum' (global float)

 

diff --git a/Test/baseResults/cppNest.vert.out b/Test/baseResults/cppNest.vert.out
index 4fbf61e..ac47911 100644
--- a/Test/baseResults/cppNest.vert.out
+++ b/Test/baseResults/cppNest.vert.out
@@ -11,72 +11,72 @@
 Shader version: 110

 ERROR: node is still EOpNull!

 0:5  Sequence

-0:5    move second child to first child (float)

-0:5      'sum' (float)

+0:5    move second child to first child (temp float)

+0:5      'sum' (global float)

 0:5      Constant:

 0:5        0.000000

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:12    Sequence

-0:12      add second child into first child (float)

-0:12        'sum' (float)

+0:12      add second child into first child (temp float)

+0:12        'sum' (global float)

 0:12        Constant:

 0:12          1.000000

-0:21      add second child into first child (float)

-0:21        'sum' (float)

+0:21      add second child into first child (temp float)

+0:21        'sum' (global float)

 0:21        Constant:

 0:21          300.000000

-0:61      add second child into first child (float)

-0:61        'sum' (float)

+0:61      add second child into first child (temp float)

+0:61        'sum' (global float)

 0:61        Constant:

 0:61          600000.000000

-0:65      add second child into first child (float)

-0:65        'sum' (float)

+0:65      add second child into first child (temp float)

+0:65        'sum' (global float)

 0:65        Constant:

 0:65          80000000.000000

-0:69      add second child into first child (float)

-0:69        'sum' (float)

+0:69      add second child into first child (temp float)

+0:69        'sum' (global float)

 0:69        Constant:

 0:69          900000000.000000

-0:76      add second child into first child (float)

-0:76        'sum' (float)

+0:76      add second child into first child (temp float)

+0:76        'sum' (global float)

 0:76        Constant:

 0:76          7000000.000000

-0:86      move second child to first child (4-component vector of float)

+0:86      move second child to first child (temp 4-component vector of float)

 0:86        'gl_Position' (gl_Position 4-component vector of float)

-0:86        Construct vec4 (4-component vector of float)

-0:86          'sum' (float)

+0:86        Construct vec4 (temp 4-component vector of float)

+0:86          'sum' (global float)

 0:103  Sequence

-0:103    move second child to first child (int)

-0:103      'selected4' (int)

+0:103    move second child to first child (temp int)

+0:103      'selected4' (global int)

 0:103      Constant:

 0:103        4 (const int)

 0:115  Sequence

-0:115    move second child to first child (int)

-0:115      'selected2' (int)

+0:115    move second child to first child (temp int)

+0:115      'selected2' (global int)

 0:115      Constant:

 0:115        2 (const int)

 0:133  Sequence

-0:133    move second child to first child (int)

-0:133      'selected3' (int)

+0:133    move second child to first child (temp int)

+0:133      'selected3' (global int)

 0:133      Constant:

 0:133        3 (const int)

-0:175  Function Definition: foo985( (void)

+0:175  Function Definition: foo985( (global void)

 0:175    Function Parameters: 

 0:175    Sequence

-0:175      add (int)

+0:175      add (temp int)

 0:175        Constant:

 0:175          2 (const int)

-0:175        Comma (int)

+0:175        Comma (temp int)

 0:175          Constant:

 0:175            3 (const int)

 0:175          Constant:

 0:175            4 (const int)

 0:?   Linker Objects

-0:?     'sum' (float)

-0:?     'selected4' (int)

-0:?     'selected2' (int)

-0:?     'selected3' (int)

+0:?     'sum' (global float)

+0:?     'selected4' (global int)

+0:?     'selected2' (global int)

+0:?     'selected3' (global int)

 

 

 Linked vertex stage:

@@ -85,70 +85,70 @@
 Shader version: 110

 ERROR: node is still EOpNull!

 0:5  Sequence

-0:5    move second child to first child (float)

-0:5      'sum' (float)

+0:5    move second child to first child (temp float)

+0:5      'sum' (global float)

 0:5      Constant:

 0:5        0.000000

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:12    Sequence

-0:12      add second child into first child (float)

-0:12        'sum' (float)

+0:12      add second child into first child (temp float)

+0:12        'sum' (global float)

 0:12        Constant:

 0:12          1.000000

-0:21      add second child into first child (float)

-0:21        'sum' (float)

+0:21      add second child into first child (temp float)

+0:21        'sum' (global float)

 0:21        Constant:

 0:21          300.000000

-0:61      add second child into first child (float)

-0:61        'sum' (float)

+0:61      add second child into first child (temp float)

+0:61        'sum' (global float)

 0:61        Constant:

 0:61          600000.000000

-0:65      add second child into first child (float)

-0:65        'sum' (float)

+0:65      add second child into first child (temp float)

+0:65        'sum' (global float)

 0:65        Constant:

 0:65          80000000.000000

-0:69      add second child into first child (float)

-0:69        'sum' (float)

+0:69      add second child into first child (temp float)

+0:69        'sum' (global float)

 0:69        Constant:

 0:69          900000000.000000

-0:76      add second child into first child (float)

-0:76        'sum' (float)

+0:76      add second child into first child (temp float)

+0:76        'sum' (global float)

 0:76        Constant:

 0:76          7000000.000000

-0:86      move second child to first child (4-component vector of float)

+0:86      move second child to first child (temp 4-component vector of float)

 0:86        'gl_Position' (gl_Position 4-component vector of float)

-0:86        Construct vec4 (4-component vector of float)

-0:86          'sum' (float)

+0:86        Construct vec4 (temp 4-component vector of float)

+0:86          'sum' (global float)

 0:103  Sequence

-0:103    move second child to first child (int)

-0:103      'selected4' (int)

+0:103    move second child to first child (temp int)

+0:103      'selected4' (global int)

 0:103      Constant:

 0:103        4 (const int)

 0:115  Sequence

-0:115    move second child to first child (int)

-0:115      'selected2' (int)

+0:115    move second child to first child (temp int)

+0:115      'selected2' (global int)

 0:115      Constant:

 0:115        2 (const int)

 0:133  Sequence

-0:133    move second child to first child (int)

-0:133      'selected3' (int)

+0:133    move second child to first child (temp int)

+0:133      'selected3' (global int)

 0:133      Constant:

 0:133        3 (const int)

-0:175  Function Definition: foo985( (void)

+0:175  Function Definition: foo985( (global void)

 0:175    Function Parameters: 

 0:175    Sequence

-0:175      add (int)

+0:175      add (temp int)

 0:175        Constant:

 0:175          2 (const int)

-0:175        Comma (int)

+0:175        Comma (temp int)

 0:175          Constant:

 0:175            3 (const int)

 0:175          Constant:

 0:175            4 (const int)

 0:?   Linker Objects

-0:?     'sum' (float)

-0:?     'selected4' (int)

-0:?     'selected2' (int)

-0:?     'selected3' (int)

+0:?     'sum' (global float)

+0:?     'selected4' (global int)

+0:?     'selected2' (global int)

+0:?     'selected3' (global int)

 

diff --git a/Test/baseResults/cppSimple.vert.out b/Test/baseResults/cppSimple.vert.out
index 2e6a9b4..5711904 100644
--- a/Test/baseResults/cppSimple.vert.out
+++ b/Test/baseResults/cppSimple.vert.out
@@ -22,7 +22,7 @@
 ERROR: 0:135: '""' : string literals not supported 

 ERROR: 0:136: '""' : string literals not supported 

 ERROR: 0:136: 'length' : no matching overloaded function found 

-ERROR: 0:136: '=' :  cannot convert from 'const float' to 'int'

+ERROR: 0:136: '=' :  cannot convert from 'const float' to 'global int'

 ERROR: 0:138: ''' : character literals not supported 

 ERROR: 0:138: ''' : character literals not supported 

 ERROR: 0:141: '#define' : names beginning with "GL_" can't be (un)defined: GL_

@@ -78,7 +78,7 @@
 ERROR: 12:9002: '#if' : unexpected tokens following directive 

 ERROR: 12:9014: 'macro expansion' : expected '(' following FOOOM

 ERROR: 12:9014: 'FOOOM' : undeclared identifier 

-ERROR: 12:9014: '=' :  cannot convert from 'float' to 'int'

+ERROR: 12:9014: '=' :  cannot convert from 'temp float' to 'global int'

 ERROR: 12:9015: 'macro expansion' : expected '(' following FOOOM

 ERROR: 12:9016: 'preprocessor evaluation' : can't evaluate expression 

 ERROR: 12:9016: 'preprocessor evaluation' : bad expression 

@@ -89,82 +89,82 @@
 Shader version: 400

 ERROR: node is still EOpNull!

 0:5  Sequence

-0:5    move second child to first child (float)

-0:5      'sum' (float)

+0:5    move second child to first child (temp float)

+0:5      'sum' (global float)

 0:5      Constant:

 0:5        0.000000

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:12    Sequence

-0:12      add second child into first child (float)

-0:12        'sum' (float)

+0:12      add second child into first child (temp float)

+0:12        'sum' (global float)

 0:12        Constant:

 0:12          1.000000

-0:22      add second child into first child (float)

-0:22        'sum' (float)

+0:22      add second child into first child (temp float)

+0:22        'sum' (global float)

 0:22        Constant:

 0:22          300.000000

-0:37      add second child into first child (float)

-0:37        'sum' (float)

+0:37      add second child into first child (temp float)

+0:37        'sum' (global float)

 0:37        Constant:

 0:37          600000.000000

-0:48      add second child into first child (float)

-0:48        'sum' (float)

+0:48      add second child into first child (temp float)

+0:48        'sum' (global float)

 0:48        Constant:

 0:48          7000000.000000

-0:53      add second child into first child (float)

-0:53        'sum' (float)

+0:53      add second child into first child (temp float)

+0:53        'sum' (global float)

 0:53        Constant:

 0:53          80000000.000000

-0:58      add second child into first child (float)

-0:58        'sum' (float)

+0:58      add second child into first child (temp float)

+0:58        'sum' (global float)

 0:58        Constant:

 0:58          900000000.000000

-0:65      add second child into first child (float)

-0:65        'sum' (float)

+0:65      add second child into first child (temp float)

+0:65        'sum' (global float)

 0:65        Constant:

 0:65          0.050000

-0:69      move second child to first child (4-component vector of float)

+0:69      move second child to first child (temp 4-component vector of float)

 0:69        gl_Position: direct index for structure (gl_Position 4-component vector of float)

 0:69          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:69          Constant:

 0:69            0 (const uint)

-0:69        Construct vec4 (4-component vector of float)

-0:69          'sum' (float)

+0:69        Construct vec4 (temp 4-component vector of float)

+0:69          'sum' (global float)

 0:124  Sequence

-0:124    move second child to first child (int)

-0:124      'linenumber' (int)

+0:124    move second child to first child (temp int)

+0:124      'linenumber' (global int)

 0:124      Constant:

 0:124        124 (const int)

 0:125  Sequence

-0:125    move second child to first child (int)

-0:125      'filenumber' (int)

+0:125    move second child to first child (temp int)

+0:125      'filenumber' (global int)

 0:125      Constant:

 0:125        0 (const int)

 0:126  Sequence

-0:126    move second child to first child (int)

-0:126      'version' (int)

+0:126    move second child to first child (temp int)

+0:126      'version' (global int)

 0:126      Constant:

 0:126        400 (const int)

 0:130  Sequence

-0:130    move second child to first child (float)

-0:130      'twoPi' (float)

+0:130    move second child to first child (temp float)

+0:130      'twoPi' (global float)

 0:130      Constant:

 0:130        6.280000

 0:199  Sequence

-0:199    move second child to first child (int)

-0:199      'n' (int)

+0:199    move second child to first child (temp int)

+0:199      'n' (global int)

 0:199      Constant:

 0:199        15 (const int)

 0:202  Sequence

-0:202    move second child to first child (double)

-0:202      'f' (double)

+0:202    move second child to first child (temp double)

+0:202      'f' (global double)

 0:202      Constant:

 0:202        0.000800

-12:20031  Function Definition: foo234( (void)

+12:20031  Function Definition: foo234( (global void)

 12:20031    Function Parameters: 

 12:20033    Sequence

-12:20033      move second child to first child (4-component vector of float)

+12:20033      move second child to first child (temp 4-component vector of float)

 12:20033        gl_Position: direct index for structure (gl_Position 4-component vector of float)

 12:20033          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 12:20033          Constant:

@@ -175,22 +175,22 @@
 12:20033          6.000000

 12:20033          6.000000

 12:9011  Sequence

-12:9011    move second child to first child (int)

-12:9011      'R1' (int)

-12:9011      'RECURSE' (int)

+12:9011    move second child to first child (temp int)

+12:9011      'R1' (global int)

+12:9011      'RECURSE' (global int)

 0:?   Linker Objects

-0:?     'sum' (float)

+0:?     'sum' (global float)

 0:?     'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

-0:?     'linenumber' (int)

-0:?     'filenumber' (int)

-0:?     'version' (int)

-0:?     'twoPi' (float)

-0:?     'a' (int)

-0:?     'n' (int)

-0:?     'f' (double)

-0:?     'RECURSE' (int)

-0:?     'R1' (int)

-0:?     'aoeua' (int)

+0:?     'linenumber' (global int)

+0:?     'filenumber' (global int)

+0:?     'version' (global int)

+0:?     'twoPi' (global float)

+0:?     'a' (global int)

+0:?     'n' (global int)

+0:?     'f' (global double)

+0:?     'RECURSE' (global int)

+0:?     'R1' (global int)

+0:?     'aoeua' (global int)

 0:?     'gl_VertexID' (gl_VertexId int)

 0:?     'gl_InstanceID' (gl_InstanceId int)

 

@@ -201,82 +201,82 @@
 Shader version: 400

 ERROR: node is still EOpNull!

 0:5  Sequence

-0:5    move second child to first child (float)

-0:5      'sum' (float)

+0:5    move second child to first child (temp float)

+0:5      'sum' (global float)

 0:5      Constant:

 0:5        0.000000

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:12    Sequence

-0:12      add second child into first child (float)

-0:12        'sum' (float)

+0:12      add second child into first child (temp float)

+0:12        'sum' (global float)

 0:12        Constant:

 0:12          1.000000

-0:22      add second child into first child (float)

-0:22        'sum' (float)

+0:22      add second child into first child (temp float)

+0:22        'sum' (global float)

 0:22        Constant:

 0:22          300.000000

-0:37      add second child into first child (float)

-0:37        'sum' (float)

+0:37      add second child into first child (temp float)

+0:37        'sum' (global float)

 0:37        Constant:

 0:37          600000.000000

-0:48      add second child into first child (float)

-0:48        'sum' (float)

+0:48      add second child into first child (temp float)

+0:48        'sum' (global float)

 0:48        Constant:

 0:48          7000000.000000

-0:53      add second child into first child (float)

-0:53        'sum' (float)

+0:53      add second child into first child (temp float)

+0:53        'sum' (global float)

 0:53        Constant:

 0:53          80000000.000000

-0:58      add second child into first child (float)

-0:58        'sum' (float)

+0:58      add second child into first child (temp float)

+0:58        'sum' (global float)

 0:58        Constant:

 0:58          900000000.000000

-0:65      add second child into first child (float)

-0:65        'sum' (float)

+0:65      add second child into first child (temp float)

+0:65        'sum' (global float)

 0:65        Constant:

 0:65          0.050000

-0:69      move second child to first child (4-component vector of float)

+0:69      move second child to first child (temp 4-component vector of float)

 0:69        gl_Position: direct index for structure (gl_Position 4-component vector of float)

 0:69          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:69          Constant:

 0:69            0 (const uint)

-0:69        Construct vec4 (4-component vector of float)

-0:69          'sum' (float)

+0:69        Construct vec4 (temp 4-component vector of float)

+0:69          'sum' (global float)

 0:124  Sequence

-0:124    move second child to first child (int)

-0:124      'linenumber' (int)

+0:124    move second child to first child (temp int)

+0:124      'linenumber' (global int)

 0:124      Constant:

 0:124        124 (const int)

 0:125  Sequence

-0:125    move second child to first child (int)

-0:125      'filenumber' (int)

+0:125    move second child to first child (temp int)

+0:125      'filenumber' (global int)

 0:125      Constant:

 0:125        0 (const int)

 0:126  Sequence

-0:126    move second child to first child (int)

-0:126      'version' (int)

+0:126    move second child to first child (temp int)

+0:126      'version' (global int)

 0:126      Constant:

 0:126        400 (const int)

 0:130  Sequence

-0:130    move second child to first child (float)

-0:130      'twoPi' (float)

+0:130    move second child to first child (temp float)

+0:130      'twoPi' (global float)

 0:130      Constant:

 0:130        6.280000

 0:199  Sequence

-0:199    move second child to first child (int)

-0:199      'n' (int)

+0:199    move second child to first child (temp int)

+0:199      'n' (global int)

 0:199      Constant:

 0:199        15 (const int)

 0:202  Sequence

-0:202    move second child to first child (double)

-0:202      'f' (double)

+0:202    move second child to first child (temp double)

+0:202      'f' (global double)

 0:202      Constant:

 0:202        0.000800

-12:20031  Function Definition: foo234( (void)

+12:20031  Function Definition: foo234( (global void)

 12:20031    Function Parameters: 

 12:20033    Sequence

-12:20033      move second child to first child (4-component vector of float)

+12:20033      move second child to first child (temp 4-component vector of float)

 12:20033        gl_Position: direct index for structure (gl_Position 4-component vector of float)

 12:20033          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 12:20033          Constant:

@@ -287,22 +287,22 @@
 12:20033          6.000000

 12:20033          6.000000

 12:9011  Sequence

-12:9011    move second child to first child (int)

-12:9011      'R1' (int)

-12:9011      'RECURSE' (int)

+12:9011    move second child to first child (temp int)

+12:9011      'R1' (global int)

+12:9011      'RECURSE' (global int)

 0:?   Linker Objects

-0:?     'sum' (float)

+0:?     'sum' (global float)

 0:?     'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

-0:?     'linenumber' (int)

-0:?     'filenumber' (int)

-0:?     'version' (int)

-0:?     'twoPi' (float)

-0:?     'a' (int)

-0:?     'n' (int)

-0:?     'f' (double)

-0:?     'RECURSE' (int)

-0:?     'R1' (int)

-0:?     'aoeua' (int)

+0:?     'linenumber' (global int)

+0:?     'filenumber' (global int)

+0:?     'version' (global int)

+0:?     'twoPi' (global float)

+0:?     'a' (global int)

+0:?     'n' (global int)

+0:?     'f' (global double)

+0:?     'RECURSE' (global int)

+0:?     'R1' (global int)

+0:?     'aoeua' (global int)

 0:?     'gl_VertexID' (gl_VertexId int)

 0:?     'gl_InstanceID' (gl_InstanceId int)

 

diff --git a/Test/baseResults/dataOut.frag.out b/Test/baseResults/dataOut.frag.out
index eca985e..29c52a8 100644
--- a/Test/baseResults/dataOut.frag.out
+++ b/Test/baseResults/dataOut.frag.out
@@ -3,11 +3,11 @@
 

 Shader version: 130

 0:? Sequence

-0:5  Function Definition: main( (void)

+0:5  Function Definition: main( (global void)

 0:5    Function Parameters: 

 0:7    Sequence

-0:7      move second child to first child (4-component vector of float)

-0:7        direct index (4-component vector of float)

+0:7      move second child to first child (temp 4-component vector of float)

+0:7        direct index (temp 4-component vector of float)

 0:7          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

 0:7          Constant:

 0:7            1 (const int)

@@ -21,11 +21,11 @@
 

 Shader version: 130

 0:? Sequence

-0:5  Function Definition: main( (void)

+0:5  Function Definition: main( (global void)

 0:5    Function Parameters: 

 0:7    Sequence

-0:7      move second child to first child (4-component vector of float)

-0:7        direct index (4-component vector of float)

+0:7      move second child to first child (temp 4-component vector of float)

+0:7        direct index (temp 4-component vector of float)

 0:7          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

 0:7          Constant:

 0:7            1 (const int)

diff --git a/Test/baseResults/dataOutIndirect.frag.out b/Test/baseResults/dataOutIndirect.frag.out
index f61ba1c..82228a2 100644
--- a/Test/baseResults/dataOutIndirect.frag.out
+++ b/Test/baseResults/dataOutIndirect.frag.out
@@ -3,11 +3,11 @@
 

 Shader version: 130

 0:? Sequence

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:9    Sequence

-0:9      move second child to first child (4-component vector of float)

-0:9        indirect index (4-component vector of float)

+0:9      move second child to first child (temp 4-component vector of float)

+0:9        indirect index (temp 4-component vector of float)

 0:9          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

 0:9          'i' (uniform int)

 0:9        'Color' (smooth in 4-component vector of float)

@@ -21,11 +21,11 @@
 

 Shader version: 130

 0:? Sequence

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:9    Sequence

-0:9      move second child to first child (4-component vector of float)

-0:9        indirect index (4-component vector of float)

+0:9      move second child to first child (temp 4-component vector of float)

+0:9        indirect index (temp 4-component vector of float)

 0:9          'gl_FragData' (fragColor 32-element array of 4-component vector of float)

 0:9          'i' (uniform int)

 0:9        'Color' (smooth in 4-component vector of float)

diff --git a/Test/baseResults/dce.frag.out b/Test/baseResults/dce.frag.out
index 0b99f98..6ae66f9 100644
--- a/Test/baseResults/dce.frag.out
+++ b/Test/baseResults/dce.frag.out
@@ -4,118 +4,118 @@
 Shader version: 400

 0:? Sequence

 0:5  Sequence

-0:5    move second child to first child (int)

-0:5      'c' (int)

+0:5    move second child to first child (temp int)

+0:5      'c' (global int)

 0:5      Constant:

 0:5        0 (const int)

-0:7  Function Definition: bar( (void)

+0:7  Function Definition: bar( (global void)

 0:7    Function Parameters: 

 0:9    Sequence

-0:9      Test condition and select (void)

+0:9      Test condition and select (temp void)

 0:9        Condition

 0:9        Constant:

 0:9          false (const bool)

 0:9        true case

-0:10        Pre-Increment (int)

-0:10          'c' (int)

+0:10        Pre-Increment (temp int)

+0:10          'c' (global int)

 0:9        false case

-0:12        Pre-Increment (int)

-0:12          'c' (int)

-0:14      Test condition and select (int)

+0:12        Pre-Increment (temp int)

+0:12          'c' (global int)

+0:14      Test condition and select (temp int)

 0:14        Condition

 0:14        Constant:

 0:14          false (const bool)

 0:14        true case

-0:14        Pre-Increment (int)

-0:14          'c' (int)

+0:14        Pre-Increment (temp int)

+0:14          'c' (global int)

 0:14        false case

-0:14        Pre-Increment (int)

-0:14          'c' (int)

+0:14        Pre-Increment (temp int)

+0:14          'c' (global int)

 0:16      switch

 0:16      condition

-0:16        'c' (int)

+0:16        'c' (global int)

 0:16      body

 0:16        Sequence

 0:17          case:  with expression

 0:17            Constant:

 0:17              1 (const int)

 0:?           Sequence

-0:18            Pre-Increment (int)

-0:18              'c' (int)

+0:18            Pre-Increment (temp int)

+0:18              'c' (global int)

 0:19            Branch: Break

-0:20            Pre-Increment (int)

-0:20              'c' (int)

+0:20            Pre-Increment (temp int)

+0:20              'c' (global int)

 0:21          case:  with expression

 0:21            Constant:

 0:21              2 (const int)

 0:?           Sequence

 0:22            Branch: Break

-0:23            Pre-Increment (int)

-0:23              'c' (int)

+0:23            Pre-Increment (temp int)

+0:23              'c' (global 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          move second child to first child (temp int)

+0:28            'i' (temp int)

 0:28            Constant:

 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          Compare Less Than (temp bool)

+0:28            'i' (temp int)

 0:28            Constant:

 0:28              0 (const int)

 0:28          Loop Body

-0:29          Pre-Increment (int)

-0:29            'c' (int)

+0:29          Pre-Increment (temp int)

+0:29            'c' (global int)

 0:28          Loop Terminal Expression

-0:28          Pre-Increment (int)

-0:28            'i' (int)

+0:28          Pre-Increment (temp int)

+0:28            'i' (temp int)

 0:31      Sequence

 0:31        Sequence

-0:31          move second child to first child (int)

-0:31            'i' (int)

+0:31          move second child to first child (temp int)

+0:31            'i' (temp int)

 0:31            Constant:

 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          Compare Less Than (temp bool)

+0:31            'i' (temp int)

 0:31            Constant:

 0:31              10 (const int)

 0:31          Loop Body

 0:32          Sequence

-0:32            Test condition and select (void)

+0:32            Test condition and select (temp void)

 0:32              Condition

-0:32              Compare Less Than (bool)

-0:32                'c' (int)

+0:32              Compare Less Than (temp bool)

+0:32                'c' (global int)

 0:32                Constant:

 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:34                Pre-Increment (temp int)

+0:34                  'c' (global int)

 0:32              false case

 0:36              Sequence

 0:36                Branch: Continue

-0:37                Pre-Increment (int)

-0:37                  'c' (int)

+0:37                Pre-Increment (temp int)

+0:37                  'c' (global int)

 0:31          Loop Terminal Expression

-0:31          Pre-Increment (int)

-0:31            'i' (int)

+0:31          Pre-Increment (temp int)

+0:31            'i' (temp int)

 0:41      Branch: Return

-0:43      Pre-Increment (int)

-0:43        'c' (int)

-0:46  Function Definition: foo( (int)

+0:43      Pre-Increment (temp int)

+0:43        'c' (global int)

+0:46  Function Definition: foo( (global int)

 0:46    Function Parameters: 

 0:48    Sequence

-0:48      Test condition and select (void)

+0:48      Test condition and select (temp void)

 0:48        Condition

-0:48        Compare Greater Than (bool)

-0:48          'c' (int)

+0:48        Compare Greater Than (temp bool)

+0:48          'c' (global int)

 0:48          Constant:

 0:48            4 (const int)

 0:48        true case

@@ -123,17 +123,17 @@
 0:49          Branch: Return with expression

 0:49            Constant:

 0:49              4 (const int)

-0:50          Pre-Increment (int)

-0:50            'c' (int)

+0:50          Pre-Increment (temp int)

+0:50            'c' (global int)

 0:53      Branch: Return with expression

 0:53        Constant:

 0:53          5 (const int)

-0:55      Pre-Increment (int)

-0:55        'c' (int)

+0:55      Pre-Increment (temp int)

+0:55        'c' (global int)

 0:?   Linker Objects

 0:?     'flag' (const bool)

 0:?       false (const bool)

-0:?     'c' (int)

+0:?     'c' (global int)

 

 

 Linked fragment stage:

@@ -143,118 +143,118 @@
 Shader version: 400

 0:? Sequence

 0:5  Sequence

-0:5    move second child to first child (int)

-0:5      'c' (int)

+0:5    move second child to first child (temp int)

+0:5      'c' (global int)

 0:5      Constant:

 0:5        0 (const int)

-0:7  Function Definition: bar( (void)

+0:7  Function Definition: bar( (global void)

 0:7    Function Parameters: 

 0:9    Sequence

-0:9      Test condition and select (void)

+0:9      Test condition and select (temp void)

 0:9        Condition

 0:9        Constant:

 0:9          false (const bool)

 0:9        true case

-0:10        Pre-Increment (int)

-0:10          'c' (int)

+0:10        Pre-Increment (temp int)

+0:10          'c' (global int)

 0:9        false case

-0:12        Pre-Increment (int)

-0:12          'c' (int)

-0:14      Test condition and select (int)

+0:12        Pre-Increment (temp int)

+0:12          'c' (global int)

+0:14      Test condition and select (temp int)

 0:14        Condition

 0:14        Constant:

 0:14          false (const bool)

 0:14        true case

-0:14        Pre-Increment (int)

-0:14          'c' (int)

+0:14        Pre-Increment (temp int)

+0:14          'c' (global int)

 0:14        false case

-0:14        Pre-Increment (int)

-0:14          'c' (int)

+0:14        Pre-Increment (temp int)

+0:14          'c' (global int)

 0:16      switch

 0:16      condition

-0:16        'c' (int)

+0:16        'c' (global int)

 0:16      body

 0:16        Sequence

 0:17          case:  with expression

 0:17            Constant:

 0:17              1 (const int)

 0:?           Sequence

-0:18            Pre-Increment (int)

-0:18              'c' (int)

+0:18            Pre-Increment (temp int)

+0:18              'c' (global int)

 0:19            Branch: Break

-0:20            Pre-Increment (int)

-0:20              'c' (int)

+0:20            Pre-Increment (temp int)

+0:20              'c' (global int)

 0:21          case:  with expression

 0:21            Constant:

 0:21              2 (const int)

 0:?           Sequence

 0:22            Branch: Break

-0:23            Pre-Increment (int)

-0:23              'c' (int)

+0:23            Pre-Increment (temp int)

+0:23              'c' (global 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          move second child to first child (temp int)

+0:28            'i' (temp int)

 0:28            Constant:

 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          Compare Less Than (temp bool)

+0:28            'i' (temp int)

 0:28            Constant:

 0:28              0 (const int)

 0:28          Loop Body

-0:29          Pre-Increment (int)

-0:29            'c' (int)

+0:29          Pre-Increment (temp int)

+0:29            'c' (global int)

 0:28          Loop Terminal Expression

-0:28          Pre-Increment (int)

-0:28            'i' (int)

+0:28          Pre-Increment (temp int)

+0:28            'i' (temp int)

 0:31      Sequence

 0:31        Sequence

-0:31          move second child to first child (int)

-0:31            'i' (int)

+0:31          move second child to first child (temp int)

+0:31            'i' (temp int)

 0:31            Constant:

 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          Compare Less Than (temp bool)

+0:31            'i' (temp int)

 0:31            Constant:

 0:31              10 (const int)

 0:31          Loop Body

 0:32          Sequence

-0:32            Test condition and select (void)

+0:32            Test condition and select (temp void)

 0:32              Condition

-0:32              Compare Less Than (bool)

-0:32                'c' (int)

+0:32              Compare Less Than (temp bool)

+0:32                'c' (global int)

 0:32                Constant:

 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:34                Pre-Increment (temp int)

+0:34                  'c' (global int)

 0:32              false case

 0:36              Sequence

 0:36                Branch: Continue

-0:37                Pre-Increment (int)

-0:37                  'c' (int)

+0:37                Pre-Increment (temp int)

+0:37                  'c' (global int)

 0:31          Loop Terminal Expression

-0:31          Pre-Increment (int)

-0:31            'i' (int)

+0:31          Pre-Increment (temp int)

+0:31            'i' (temp int)

 0:41      Branch: Return

-0:43      Pre-Increment (int)

-0:43        'c' (int)

-0:46  Function Definition: foo( (int)

+0:43      Pre-Increment (temp int)

+0:43        'c' (global int)

+0:46  Function Definition: foo( (global int)

 0:46    Function Parameters: 

 0:48    Sequence

-0:48      Test condition and select (void)

+0:48      Test condition and select (temp void)

 0:48        Condition

-0:48        Compare Greater Than (bool)

-0:48          'c' (int)

+0:48        Compare Greater Than (temp bool)

+0:48          'c' (global int)

 0:48          Constant:

 0:48            4 (const int)

 0:48        true case

@@ -262,15 +262,15 @@
 0:49          Branch: Return with expression

 0:49            Constant:

 0:49              4 (const int)

-0:50          Pre-Increment (int)

-0:50            'c' (int)

+0:50          Pre-Increment (temp int)

+0:50            'c' (global int)

 0:53      Branch: Return with expression

 0:53        Constant:

 0:53          5 (const int)

-0:55      Pre-Increment (int)

-0:55        'c' (int)

+0:55      Pre-Increment (temp int)

+0:55        'c' (global int)

 0:?   Linker Objects

 0:?     'flag' (const bool)

 0:?       false (const bool)

-0:?     'c' (int)

+0:?     'c' (global int)

 

diff --git a/Test/baseResults/decls.frag.out b/Test/baseResults/decls.frag.out
index 16501b5..f2d9b64 100644
--- a/Test/baseResults/decls.frag.out
+++ b/Test/baseResults/decls.frag.out
@@ -30,31 +30,31 @@
 Shader version: 120

 ERROR: node is still EOpNull!

 0:5  Sequence

-0:5    move second child to first child (int)

-0:5      'd1' (int)

+0:5    move second child to first child (temp int)

+0:5      'd1' (global int)

 0:5      Constant:

 0:5        1 (const int)

 0:6  Sequence

-0:6    move second child to first child (int)

-0:6      'e2' (int)

+0:6    move second child to first child (temp int)

+0:6      'e2' (global int)

 0:6      Constant:

 0:6        2 (const int)

 0:7  Sequence

-0:7    move second child to first child (int)

-0:7      'h3' (int)

+0:7    move second child to first child (temp int)

+0:7      'h3' (global int)

 0:7      Constant:

 0:7        3 (const int)

 0:14  Sequence

-0:14    move second child to first child (4-element array of int)

-0:14      'ii4' (4-element array of int)

+0:14    move second child to first child (temp 4-element array of int)

+0:14      'ii4' (global 4-element array of int)

 0:14      Constant:

 0:14        1 (const int)

 0:14        2 (const int)

 0:14        3 (const int)

 0:14        4 (const int)

 0:15  Sequence

-0:15    move second child to first child (5-element array of int)

-0:15      'ik5' (5-element array of int)

+0:15    move second child to first child (temp 5-element array of int)

+0:15      'ik5' (global 5-element array of int)

 0:15      Constant:

 0:15        5 (const int)

 0:15        6 (const int)

@@ -62,36 +62,36 @@
 0:15        8 (const int)

 0:15        9 (const int)

 0:16  Sequence

-0:16    move second child to first child (2-element array of int)

-0:16      'im2' (2-element array of int)

+0:16    move second child to first child (temp 2-element array of int)

+0:16      'im2' (global 2-element array of int)

 0:16      Constant:

 0:16        10 (const int)

 0:16        11 (const int)

-0:16    move second child to first child (3-element array of int)

-0:16      'im3' (3-element array of int)

+0:16    move second child to first child (temp 3-element array of int)

+0:16      'im3' (global 3-element array of int)

 0:16      Constant:

 0:16        12 (const int)

 0:16        13 (const int)

 0:16        14 (const int)

 0:17  Sequence

-0:17    move second child to first child (4-element array of int)

-0:17      'in8' (4-element array of int)

+0:17    move second child to first child (temp 4-element array of int)

+0:17      'in8' (global 4-element array of int)

 0:17      Constant:

 0:17        21 (const int)

 0:17        22 (const int)

 0:17        23 (const int)

 0:17        24 (const int)

 0:34  Sequence

-0:34    move second child to first child (4-element array of int)

-0:34      'gl_vi4' (4-element array of int)

+0:34    move second child to first child (temp 4-element array of int)

+0:34      'gl_vi4' (global 4-element array of int)

 0:34      Constant:

 0:34        1 (const int)

 0:34        2 (const int)

 0:34        3 (const int)

 0:34        4 (const int)

 0:35  Sequence

-0:35    move second child to first child (5-element array of int)

-0:35      'gl_vk5' (5-element array of int)

+0:35    move second child to first child (temp 5-element array of int)

+0:35      'gl_vk5' (global 5-element array of int)

 0:35      Constant:

 0:35        5 (const int)

 0:35        6 (const int)

@@ -99,61 +99,61 @@
 0:35        8 (const int)

 0:35        9 (const int)

 0:36  Sequence

-0:36    move second child to first child (2-element array of int)

-0:36      'gl_vm2' (2-element array of int)

+0:36    move second child to first child (temp 2-element array of int)

+0:36      'gl_vm2' (global 2-element array of int)

 0:36      Constant:

 0:36        10 (const int)

 0:36        11 (const int)

-0:36    move second child to first child (3-element array of int)

-0:36      'gl_vm3' (3-element array of int)

+0:36    move second child to first child (temp 3-element array of int)

+0:36      'gl_vm3' (global 3-element array of int)

 0:36      Constant:

 0:36        12 (const int)

 0:36        13 (const int)

 0:36        14 (const int)

 0:37  Sequence

-0:37    move second child to first child (4-element array of int)

-0:37      'gl_vn8' (4-element array of int)

+0:37    move second child to first child (temp 4-element array of int)

+0:37      'gl_vn8' (global 4-element array of int)

 0:37      Constant:

 0:37        21 (const int)

 0:37        22 (const int)

 0:37        23 (const int)

 0:37        24 (const int)

-0:39  Function Definition: main( (void)

+0:39  Function Definition: main( (global void)

 0:39    Function Parameters: 

 0:41    Sequence

 0:41      Loop with condition tested first

 0:41        Loop Condition

-0:41        move second child to first child (bool)

-0:41          'cond' (bool)

-0:41          Compare Less Than (bool)

-0:41            'b' (int)

-0:41            'c' (int)

+0:41        move second child to first child (temp bool)

+0:41          'cond' (temp bool)

+0:41          Compare Less Than (temp bool)

+0:41            'b' (global int)

+0:41            'c' (global int)

 0:41        No loop body

 0:42      Loop with condition tested first

 0:42        Loop Condition

-0:42        move second child to first child (int)

-0:42          'icond' (int)

-0:42          'b' (int)

+0:42        move second child to first child (temp int)

+0:42          'icond' (temp int)

+0:42          'b' (global int)

 0:42        No loop body

 0:43      Loop with condition tested first

 0:43        Loop Condition

-0:43        move second child to first child (bool)

-0:43          'gl_cond' (bool)

-0:43          Compare Less Than (bool)

-0:43            'b' (int)

-0:43            'c' (int)

+0:43        move second child to first child (temp bool)

+0:43          'gl_cond' (temp bool)

+0:43          Compare Less Than (temp bool)

+0:43            'b' (global int)

+0:43            'c' (global int)

 0:43        No loop body

 0:46  Sequence

-0:46    move second child to first child (4-element array of int)

-0:46      'foob__vi4' (4-element array of int)

+0:46    move second child to first child (temp 4-element array of int)

+0:46      'foob__vi4' (global 4-element array of int)

 0:46      Constant:

 0:46        1 (const int)

 0:46        2 (const int)

 0:46        3 (const int)

 0:46        4 (const int)

 0:47  Sequence

-0:47    move second child to first child (5-element array of int)

-0:47      'foob__vk5' (5-element array of int)

+0:47    move second child to first child (temp 5-element array of int)

+0:47      'foob__vk5' (global 5-element array of int)

 0:47      Constant:

 0:47        5 (const int)

 0:47        6 (const int)

@@ -161,54 +161,54 @@
 0:47        8 (const int)

 0:47        9 (const int)

 0:48  Sequence

-0:48    move second child to first child (2-element array of int)

-0:48      '__foobvm2' (2-element array of int)

+0:48    move second child to first child (temp 2-element array of int)

+0:48      '__foobvm2' (global 2-element array of int)

 0:48      Constant:

 0:48        10 (const int)

 0:48        11 (const int)

-0:48    move second child to first child (3-element array of int)

-0:48      '__foobvm3' (3-element array of int)

+0:48    move second child to first child (temp 3-element array of int)

+0:48      '__foobvm3' (global 3-element array of int)

 0:48      Constant:

 0:48        12 (const int)

 0:48        13 (const int)

 0:48        14 (const int)

 0:49  Sequence

-0:49    move second child to first child (4-element array of int)

-0:49      'foob__vn8' (4-element array of int)

+0:49    move second child to first child (temp 4-element array of int)

+0:49      'foob__vn8' (global 4-element array of int)

 0:49      Constant:

 0:49        21 (const int)

 0:49        22 (const int)

 0:49        23 (const int)

 0:49        24 (const int)

 0:?   Linker Objects

-0:?     'a' (int)

-0:?     'b' (int)

-0:?     'c' (int)

-0:?     'd1' (int)

-0:?     'e2' (int)

-0:?     'f' (int)

-0:?     'g' (int)

-0:?     'h3' (int)

-0:?     'i4' (4-element array of int)

-0:?     'j' (int)

-0:?     'k5' (5-element array of int)

-0:?     'm6' (6-element array of int)

-0:?     'm7' (7-element array of int)

-0:?     'n8' (8-element array of int)

-0:?     'p' (int)

-0:?     'ii4' (4-element array of int)

-0:?     'ij' (int)

-0:?     'ik5' (5-element array of int)

-0:?     'im2' (2-element array of int)

-0:?     'im3' (3-element array of int)

-0:?     'in8' (4-element array of int)

-0:?     'ip' (int)

+0:?     'a' (global int)

+0:?     'b' (global int)

+0:?     'c' (global int)

+0:?     'd1' (global int)

+0:?     'e2' (global int)

+0:?     'f' (global int)

+0:?     'g' (global int)

+0:?     'h3' (global int)

+0:?     'i4' (global 4-element array of int)

+0:?     'j' (global int)

+0:?     'k5' (global 5-element array of int)

+0:?     'm6' (global 6-element array of int)

+0:?     'm7' (global 7-element array of int)

+0:?     'n8' (global 8-element array of int)

+0:?     'p' (global int)

+0:?     'ii4' (global 4-element array of int)

+0:?     'ij' (global int)

+0:?     'ik5' (global 5-element array of int)

+0:?     'im2' (global 2-element array of int)

+0:?     'im3' (global 3-element array of int)

+0:?     'in8' (global 4-element array of int)

+0:?     'ip' (global int)

 0:?     'cii4' (const 4-element array of int)

 0:?       1 (const int)

 0:?       2 (const int)

 0:?       3 (const int)

 0:?       4 (const int)

-0:?     'cij' (int)

+0:?     'cij' (temp int)

 0:?     'cik5' (const 5-element array of int)

 0:?       5 (const int)

 0:?       6 (const int)

@@ -227,7 +227,7 @@
 0:?       22 (const int)

 0:?       23 (const int)

 0:?       24 (const int)

-0:?     'cip' (int)

+0:?     'cip' (temp int)

 0:?     'uii4' (uniform 4-element array of int)

 0:?       1 (const int)

 0:?       2 (const int)

@@ -253,20 +253,20 @@
 0:?       23 (const int)

 0:?       24 (const int)

 0:?     'uip' (uniform int)

-0:?     'gl_vi4' (4-element array of int)

-0:?     'gl_vj' (int)

-0:?     'gl_vk5' (5-element array of int)

-0:?     'gl_vm2' (2-element array of int)

-0:?     'gl_vm3' (3-element array of int)

-0:?     'gl_vn8' (4-element array of int)

-0:?     'gl_vp' (int)

-0:?     'foob__vi4' (4-element array of int)

-0:?     'foob__vj' (int)

-0:?     'foob__vk5' (5-element array of int)

-0:?     '__foobvm2' (2-element array of int)

-0:?     '__foobvm3' (3-element array of int)

-0:?     'foob__vn8' (4-element array of int)

-0:?     'foob__vp' (int)

+0:?     'gl_vi4' (global 4-element array of int)

+0:?     'gl_vj' (global int)

+0:?     'gl_vk5' (global 5-element array of int)

+0:?     'gl_vm2' (global 2-element array of int)

+0:?     'gl_vm3' (global 3-element array of int)

+0:?     'gl_vn8' (global 4-element array of int)

+0:?     'gl_vp' (global int)

+0:?     'foob__vi4' (global 4-element array of int)

+0:?     'foob__vj' (global int)

+0:?     'foob__vk5' (global 5-element array of int)

+0:?     '__foobvm2' (global 2-element array of int)

+0:?     '__foobvm3' (global 3-element array of int)

+0:?     'foob__vn8' (global 4-element array of int)

+0:?     'foob__vp' (global int)

 

 

 Linked fragment stage:

@@ -275,31 +275,31 @@
 Shader version: 120

 ERROR: node is still EOpNull!

 0:5  Sequence

-0:5    move second child to first child (int)

-0:5      'd1' (int)

+0:5    move second child to first child (temp int)

+0:5      'd1' (global int)

 0:5      Constant:

 0:5        1 (const int)

 0:6  Sequence

-0:6    move second child to first child (int)

-0:6      'e2' (int)

+0:6    move second child to first child (temp int)

+0:6      'e2' (global int)

 0:6      Constant:

 0:6        2 (const int)

 0:7  Sequence

-0:7    move second child to first child (int)

-0:7      'h3' (int)

+0:7    move second child to first child (temp int)

+0:7      'h3' (global int)

 0:7      Constant:

 0:7        3 (const int)

 0:14  Sequence

-0:14    move second child to first child (4-element array of int)

-0:14      'ii4' (4-element array of int)

+0:14    move second child to first child (temp 4-element array of int)

+0:14      'ii4' (global 4-element array of int)

 0:14      Constant:

 0:14        1 (const int)

 0:14        2 (const int)

 0:14        3 (const int)

 0:14        4 (const int)

 0:15  Sequence

-0:15    move second child to first child (5-element array of int)

-0:15      'ik5' (5-element array of int)

+0:15    move second child to first child (temp 5-element array of int)

+0:15      'ik5' (global 5-element array of int)

 0:15      Constant:

 0:15        5 (const int)

 0:15        6 (const int)

@@ -307,36 +307,36 @@
 0:15        8 (const int)

 0:15        9 (const int)

 0:16  Sequence

-0:16    move second child to first child (2-element array of int)

-0:16      'im2' (2-element array of int)

+0:16    move second child to first child (temp 2-element array of int)

+0:16      'im2' (global 2-element array of int)

 0:16      Constant:

 0:16        10 (const int)

 0:16        11 (const int)

-0:16    move second child to first child (3-element array of int)

-0:16      'im3' (3-element array of int)

+0:16    move second child to first child (temp 3-element array of int)

+0:16      'im3' (global 3-element array of int)

 0:16      Constant:

 0:16        12 (const int)

 0:16        13 (const int)

 0:16        14 (const int)

 0:17  Sequence

-0:17    move second child to first child (4-element array of int)

-0:17      'in8' (4-element array of int)

+0:17    move second child to first child (temp 4-element array of int)

+0:17      'in8' (global 4-element array of int)

 0:17      Constant:

 0:17        21 (const int)

 0:17        22 (const int)

 0:17        23 (const int)

 0:17        24 (const int)

 0:34  Sequence

-0:34    move second child to first child (4-element array of int)

-0:34      'gl_vi4' (4-element array of int)

+0:34    move second child to first child (temp 4-element array of int)

+0:34      'gl_vi4' (global 4-element array of int)

 0:34      Constant:

 0:34        1 (const int)

 0:34        2 (const int)

 0:34        3 (const int)

 0:34        4 (const int)

 0:35  Sequence

-0:35    move second child to first child (5-element array of int)

-0:35      'gl_vk5' (5-element array of int)

+0:35    move second child to first child (temp 5-element array of int)

+0:35      'gl_vk5' (global 5-element array of int)

 0:35      Constant:

 0:35        5 (const int)

 0:35        6 (const int)

@@ -344,61 +344,61 @@
 0:35        8 (const int)

 0:35        9 (const int)

 0:36  Sequence

-0:36    move second child to first child (2-element array of int)

-0:36      'gl_vm2' (2-element array of int)

+0:36    move second child to first child (temp 2-element array of int)

+0:36      'gl_vm2' (global 2-element array of int)

 0:36      Constant:

 0:36        10 (const int)

 0:36        11 (const int)

-0:36    move second child to first child (3-element array of int)

-0:36      'gl_vm3' (3-element array of int)

+0:36    move second child to first child (temp 3-element array of int)

+0:36      'gl_vm3' (global 3-element array of int)

 0:36      Constant:

 0:36        12 (const int)

 0:36        13 (const int)

 0:36        14 (const int)

 0:37  Sequence

-0:37    move second child to first child (4-element array of int)

-0:37      'gl_vn8' (4-element array of int)

+0:37    move second child to first child (temp 4-element array of int)

+0:37      'gl_vn8' (global 4-element array of int)

 0:37      Constant:

 0:37        21 (const int)

 0:37        22 (const int)

 0:37        23 (const int)

 0:37        24 (const int)

-0:39  Function Definition: main( (void)

+0:39  Function Definition: main( (global void)

 0:39    Function Parameters: 

 0:41    Sequence

 0:41      Loop with condition tested first

 0:41        Loop Condition

-0:41        move second child to first child (bool)

-0:41          'cond' (bool)

-0:41          Compare Less Than (bool)

-0:41            'b' (int)

-0:41            'c' (int)

+0:41        move second child to first child (temp bool)

+0:41          'cond' (temp bool)

+0:41          Compare Less Than (temp bool)

+0:41            'b' (global int)

+0:41            'c' (global int)

 0:41        No loop body

 0:42      Loop with condition tested first

 0:42        Loop Condition

-0:42        move second child to first child (int)

-0:42          'icond' (int)

-0:42          'b' (int)

+0:42        move second child to first child (temp int)

+0:42          'icond' (temp int)

+0:42          'b' (global int)

 0:42        No loop body

 0:43      Loop with condition tested first

 0:43        Loop Condition

-0:43        move second child to first child (bool)

-0:43          'gl_cond' (bool)

-0:43          Compare Less Than (bool)

-0:43            'b' (int)

-0:43            'c' (int)

+0:43        move second child to first child (temp bool)

+0:43          'gl_cond' (temp bool)

+0:43          Compare Less Than (temp bool)

+0:43            'b' (global int)

+0:43            'c' (global int)

 0:43        No loop body

 0:46  Sequence

-0:46    move second child to first child (4-element array of int)

-0:46      'foob__vi4' (4-element array of int)

+0:46    move second child to first child (temp 4-element array of int)

+0:46      'foob__vi4' (global 4-element array of int)

 0:46      Constant:

 0:46        1 (const int)

 0:46        2 (const int)

 0:46        3 (const int)

 0:46        4 (const int)

 0:47  Sequence

-0:47    move second child to first child (5-element array of int)

-0:47      'foob__vk5' (5-element array of int)

+0:47    move second child to first child (temp 5-element array of int)

+0:47      'foob__vk5' (global 5-element array of int)

 0:47      Constant:

 0:47        5 (const int)

 0:47        6 (const int)

@@ -406,54 +406,54 @@
 0:47        8 (const int)

 0:47        9 (const int)

 0:48  Sequence

-0:48    move second child to first child (2-element array of int)

-0:48      '__foobvm2' (2-element array of int)

+0:48    move second child to first child (temp 2-element array of int)

+0:48      '__foobvm2' (global 2-element array of int)

 0:48      Constant:

 0:48        10 (const int)

 0:48        11 (const int)

-0:48    move second child to first child (3-element array of int)

-0:48      '__foobvm3' (3-element array of int)

+0:48    move second child to first child (temp 3-element array of int)

+0:48      '__foobvm3' (global 3-element array of int)

 0:48      Constant:

 0:48        12 (const int)

 0:48        13 (const int)

 0:48        14 (const int)

 0:49  Sequence

-0:49    move second child to first child (4-element array of int)

-0:49      'foob__vn8' (4-element array of int)

+0:49    move second child to first child (temp 4-element array of int)

+0:49      'foob__vn8' (global 4-element array of int)

 0:49      Constant:

 0:49        21 (const int)

 0:49        22 (const int)

 0:49        23 (const int)

 0:49        24 (const int)

 0:?   Linker Objects

-0:?     'a' (int)

-0:?     'b' (int)

-0:?     'c' (int)

-0:?     'd1' (int)

-0:?     'e2' (int)

-0:?     'f' (int)

-0:?     'g' (int)

-0:?     'h3' (int)

-0:?     'i4' (4-element array of int)

-0:?     'j' (int)

-0:?     'k5' (5-element array of int)

-0:?     'm6' (6-element array of int)

-0:?     'm7' (7-element array of int)

-0:?     'n8' (8-element array of int)

-0:?     'p' (int)

-0:?     'ii4' (4-element array of int)

-0:?     'ij' (int)

-0:?     'ik5' (5-element array of int)

-0:?     'im2' (2-element array of int)

-0:?     'im3' (3-element array of int)

-0:?     'in8' (4-element array of int)

-0:?     'ip' (int)

+0:?     'a' (global int)

+0:?     'b' (global int)

+0:?     'c' (global int)

+0:?     'd1' (global int)

+0:?     'e2' (global int)

+0:?     'f' (global int)

+0:?     'g' (global int)

+0:?     'h3' (global int)

+0:?     'i4' (global 4-element array of int)

+0:?     'j' (global int)

+0:?     'k5' (global 5-element array of int)

+0:?     'm6' (global 6-element array of int)

+0:?     'm7' (global 7-element array of int)

+0:?     'n8' (global 8-element array of int)

+0:?     'p' (global int)

+0:?     'ii4' (global 4-element array of int)

+0:?     'ij' (global int)

+0:?     'ik5' (global 5-element array of int)

+0:?     'im2' (global 2-element array of int)

+0:?     'im3' (global 3-element array of int)

+0:?     'in8' (global 4-element array of int)

+0:?     'ip' (global int)

 0:?     'cii4' (const 4-element array of int)

 0:?       1 (const int)

 0:?       2 (const int)

 0:?       3 (const int)

 0:?       4 (const int)

-0:?     'cij' (int)

+0:?     'cij' (temp int)

 0:?     'cik5' (const 5-element array of int)

 0:?       5 (const int)

 0:?       6 (const int)

@@ -472,7 +472,7 @@
 0:?       22 (const int)

 0:?       23 (const int)

 0:?       24 (const int)

-0:?     'cip' (int)

+0:?     'cip' (temp int)

 0:?     'uii4' (uniform 4-element array of int)

 0:?       1 (const int)

 0:?       2 (const int)

@@ -498,18 +498,18 @@
 0:?       23 (const int)

 0:?       24 (const int)

 0:?     'uip' (uniform int)

-0:?     'gl_vi4' (4-element array of int)

-0:?     'gl_vj' (int)

-0:?     'gl_vk5' (5-element array of int)

-0:?     'gl_vm2' (2-element array of int)

-0:?     'gl_vm3' (3-element array of int)

-0:?     'gl_vn8' (4-element array of int)

-0:?     'gl_vp' (int)

-0:?     'foob__vi4' (4-element array of int)

-0:?     'foob__vj' (int)

-0:?     'foob__vk5' (5-element array of int)

-0:?     '__foobvm2' (2-element array of int)

-0:?     '__foobvm3' (3-element array of int)

-0:?     'foob__vn8' (4-element array of int)

-0:?     'foob__vp' (int)

+0:?     'gl_vi4' (global 4-element array of int)

+0:?     'gl_vj' (global int)

+0:?     'gl_vk5' (global 5-element array of int)

+0:?     'gl_vm2' (global 2-element array of int)

+0:?     'gl_vm3' (global 3-element array of int)

+0:?     'gl_vn8' (global 4-element array of int)

+0:?     'gl_vp' (global int)

+0:?     'foob__vi4' (global 4-element array of int)

+0:?     'foob__vj' (global int)

+0:?     'foob__vk5' (global 5-element array of int)

+0:?     '__foobvm2' (global 2-element array of int)

+0:?     '__foobvm3' (global 3-element array of int)

+0:?     'foob__vn8' (global 4-element array of int)

+0:?     'foob__vp' (global int)

 

diff --git a/Test/baseResults/deepRvalue.frag.out b/Test/baseResults/deepRvalue.frag.out
index 2c6557c..f2fd5fe 100644
--- a/Test/baseResults/deepRvalue.frag.out
+++ b/Test/baseResults/deepRvalue.frag.out
@@ -3,114 +3,114 @@
 Shader version: 120

 0:? Sequence

 0:5  Sequence

-0:5    move second child to first child (4-component vector of float)

-0:5      'v1' (4-component vector of float)

+0:5    move second child to first child (temp 4-component vector of float)

+0:5      'v1' (global 4-component vector of float)

 0:5      Constant:

 0:5        2.000000

 0:5        3.000000

 0:5        5.000000

 0:5        7.000000

 0:6  Sequence

-0:6    move second child to first child (4-component vector of float)

-0:6      'v2' (4-component vector of float)

+0:6    move second child to first child (temp 4-component vector of float)

+0:6      'v2' (global 4-component vector of float)

 0:6      Constant:

 0:6        11.000000

 0:6        13.000000

 0:6        17.000000

 0:6        19.000000

 0:7  Sequence

-0:7    move second child to first child (4-component vector of float)

-0:7      'v3' (4-component vector of float)

+0:7    move second child to first child (temp 4-component vector of float)

+0:7      'v3' (global 4-component vector of float)

 0:7      Constant:

 0:7        23.000000

 0:7        29.000000

 0:7        31.000000

 0:7        37.000000

 0:8  Sequence

-0:8    move second child to first child (4-component vector of float)

-0:8      'v4' (4-component vector of float)

+0:8    move second child to first child (temp 4-component vector of float)

+0:8      'v4' (global 4-component vector of float)

 0:8      Constant:

 0:8        41.000000

 0:8        43.000000

 0:8        47.000000

 0:8        53.000000

-0:16  Function Definition: main( (void)

+0:16  Function Definition: main( (global void)

 0:16    Function Parameters: 

 0:18    Sequence

 0:18      Sequence

-0:18        move second child to first child (4X4 matrix of float)

-0:18          'm' (4X4 matrix of float)

-0:18          Construct mat4 (4X4 matrix of float)

-0:18            'v1' (4-component vector of float)

-0:18            'v2' (4-component vector of float)

-0:18            'v3' (4-component vector of float)

-0:18            'v4' (4-component vector of float)

+0:18        move second child to first child (temp 4X4 matrix of float)

+0:18          'm' (temp 4X4 matrix of float)

+0:18          Construct mat4 (temp 4X4 matrix of float)

+0:18            'v1' (global 4-component vector of float)

+0:18            'v2' (global 4-component vector of float)

+0:18            'v3' (global 4-component vector of float)

+0:18            'v4' (global 4-component vector of float)

 0:20      Sequence

-0:20        move second child to first child (4X4 matrix of float)

-0:20          'mm' (4X4 matrix of float)

-0:20          component-wise multiply (4X4 matrix of float)

-0:20            'm' (4X4 matrix of float)

-0:20            'm' (4X4 matrix of float)

+0:20        move second child to first child (temp 4X4 matrix of float)

+0:20          'mm' (temp 4X4 matrix of float)

+0:20          component-wise multiply (global 4X4 matrix of float)

+0:20            'm' (temp 4X4 matrix of float)

+0:20            'm' (temp 4X4 matrix of float)

 0:21      Sequence

-0:21        move second child to first child (float)

-0:21          'f' (float)

-0:21          direct index (float)

-0:21            direct index (4-component vector of float)

-0:21              'mm' (4X4 matrix of float)

+0:21        move second child to first child (temp float)

+0:21          'f' (temp float)

+0:21          direct index (temp float)

+0:21            direct index (temp 4-component vector of float)

+0:21              'mm' (temp 4X4 matrix of float)

 0:21              Constant:

 0:21                1 (const int)

 0:21            Constant:

 0:21              3 (const int)

 0:24      Sequence

-0:24        move second child to first child (float)

-0:24          'g' (float)

-0:24          direct index (float)

-0:24            direct index (4-component vector of float)

-0:24              component-wise multiply (4X4 matrix of float)

-0:24                'm' (4X4 matrix of float)

-0:24                'm' (4X4 matrix of float)

+0:24        move second child to first child (temp float)

+0:24          'g' (temp float)

+0:24          direct index (temp float)

+0:24            direct index (temp 4-component vector of float)

+0:24              component-wise multiply (global 4X4 matrix of float)

+0:24                'm' (temp 4X4 matrix of float)

+0:24                'm' (temp 4X4 matrix of float)

 0:24              Constant:

 0:24                2 (const int)

 0:24            Constant:

 0:24              1 (const int)

 0:26      Sequence

-0:26        move second child to first child (float)

-0:26          'h' (float)

+0:26        move second child to first child (temp float)

+0:26          'h' (temp float)

 0:26          Constant:

 0:26            5.000000

 0:28      Sequence

-0:28        move second child to first child (float)

-0:28          'i' (float)

-0:28          direct index (float)

-0:28            Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:28        move second child to first child (temp float)

+0:28          'i' (temp float)

+0:28          direct index (temp float)

+0:28            Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:28              'sampler' (uniform sampler2D)

 0:28              Constant:

 0:28                0.500000

 0:28                0.500000

 0:28            Constant:

 0:28              1 (const int)

-0:30      add second child into first child (float)

-0:30        'i' (float)

-0:30        direct index (float)

-0:30          Test condition and select (4-component vector of float)

+0:30      add second child into first child (temp float)

+0:30        'i' (temp float)

+0:30        direct index (temp float)

+0:30          Test condition and select (temp 4-component vector of float)

 0:30            Condition

-0:30            Compare Greater Than (bool)

-0:30              'i' (float)

+0:30            Compare Greater Than (temp bool)

+0:30              'i' (temp float)

 0:30              Constant:

 0:30                0.100000

 0:30            true case

-0:30            'v1' (4-component vector of float)

+0:30            'v1' (global 4-component vector of float)

 0:30            false case

-0:30            'v2' (4-component vector of float)

+0:30            'v2' (global 4-component vector of float)

 0:30          Constant:

 0:30            3 (const int)

-0:33      add second child into first child (float)

-0:33        'i' (float)

-0:33        direct index (float)

-0:33          direct index (2-component vector of float)

-0:33            b: direct index for structure (3-element array of 2-component vector of float)

-0:33              move second child to first child (structure{int a, 3-element array of 2-component vector of float b, bool c})

-0:33                't' (structure{int a, 3-element array of 2-component vector of float b, bool c})

+0:33      add second child into first child (temp float)

+0:33        'i' (temp float)

+0:33        direct index (temp float)

+0:33          direct index (temp 2-component vector of float)

+0:33            b: direct index for structure (global 3-element array of 2-component vector of float)

+0:33              move second child to first child (temp structure{global int a, global 3-element array of 2-component vector of float b, global bool c})

+0:33                't' (temp structure{global int a, global 3-element array of 2-component vector of float b, global bool c})

 0:33                Constant:

 0:33                  1 (const int)

 0:33                  2.000000

@@ -126,19 +126,19 @@
 0:33              2 (const int)

 0:33          Constant:

 0:33            1 (const int)

-0:35      move second child to first child (4-component vector of float)

+0:35      move second child to first child (temp 4-component vector of float)

 0:35        'gl_FragColor' (fragColor 4-component vector of float)

-0:35        Construct vec4 (4-component vector of float)

-0:35          'f' (float)

-0:35          'g' (float)

-0:35          'h' (float)

-0:35          'i' (float)

+0:35        Construct vec4 (temp 4-component vector of float)

+0:35          'f' (temp float)

+0:35          'g' (temp float)

+0:35          'h' (temp float)

+0:35          'i' (temp float)

 0:?   Linker Objects

 0:?     'sampler' (uniform sampler2D)

-0:?     'v1' (4-component vector of float)

-0:?     'v2' (4-component vector of float)

-0:?     'v3' (4-component vector of float)

-0:?     'v4' (4-component vector of float)

+0:?     'v1' (global 4-component vector of float)

+0:?     'v2' (global 4-component vector of float)

+0:?     'v3' (global 4-component vector of float)

+0:?     'v4' (global 4-component vector of float)

 

 

 Linked fragment stage:

@@ -147,114 +147,114 @@
 Shader version: 120

 0:? Sequence

 0:5  Sequence

-0:5    move second child to first child (4-component vector of float)

-0:5      'v1' (4-component vector of float)

+0:5    move second child to first child (temp 4-component vector of float)

+0:5      'v1' (global 4-component vector of float)

 0:5      Constant:

 0:5        2.000000

 0:5        3.000000

 0:5        5.000000

 0:5        7.000000

 0:6  Sequence

-0:6    move second child to first child (4-component vector of float)

-0:6      'v2' (4-component vector of float)

+0:6    move second child to first child (temp 4-component vector of float)

+0:6      'v2' (global 4-component vector of float)

 0:6      Constant:

 0:6        11.000000

 0:6        13.000000

 0:6        17.000000

 0:6        19.000000

 0:7  Sequence

-0:7    move second child to first child (4-component vector of float)

-0:7      'v3' (4-component vector of float)

+0:7    move second child to first child (temp 4-component vector of float)

+0:7      'v3' (global 4-component vector of float)

 0:7      Constant:

 0:7        23.000000

 0:7        29.000000

 0:7        31.000000

 0:7        37.000000

 0:8  Sequence

-0:8    move second child to first child (4-component vector of float)

-0:8      'v4' (4-component vector of float)

+0:8    move second child to first child (temp 4-component vector of float)

+0:8      'v4' (global 4-component vector of float)

 0:8      Constant:

 0:8        41.000000

 0:8        43.000000

 0:8        47.000000

 0:8        53.000000

-0:16  Function Definition: main( (void)

+0:16  Function Definition: main( (global void)

 0:16    Function Parameters: 

 0:18    Sequence

 0:18      Sequence

-0:18        move second child to first child (4X4 matrix of float)

-0:18          'm' (4X4 matrix of float)

-0:18          Construct mat4 (4X4 matrix of float)

-0:18            'v1' (4-component vector of float)

-0:18            'v2' (4-component vector of float)

-0:18            'v3' (4-component vector of float)

-0:18            'v4' (4-component vector of float)

+0:18        move second child to first child (temp 4X4 matrix of float)

+0:18          'm' (temp 4X4 matrix of float)

+0:18          Construct mat4 (temp 4X4 matrix of float)

+0:18            'v1' (global 4-component vector of float)

+0:18            'v2' (global 4-component vector of float)

+0:18            'v3' (global 4-component vector of float)

+0:18            'v4' (global 4-component vector of float)

 0:20      Sequence

-0:20        move second child to first child (4X4 matrix of float)

-0:20          'mm' (4X4 matrix of float)

-0:20          component-wise multiply (4X4 matrix of float)

-0:20            'm' (4X4 matrix of float)

-0:20            'm' (4X4 matrix of float)

+0:20        move second child to first child (temp 4X4 matrix of float)

+0:20          'mm' (temp 4X4 matrix of float)

+0:20          component-wise multiply (global 4X4 matrix of float)

+0:20            'm' (temp 4X4 matrix of float)

+0:20            'm' (temp 4X4 matrix of float)

 0:21      Sequence

-0:21        move second child to first child (float)

-0:21          'f' (float)

-0:21          direct index (float)

-0:21            direct index (4-component vector of float)

-0:21              'mm' (4X4 matrix of float)

+0:21        move second child to first child (temp float)

+0:21          'f' (temp float)

+0:21          direct index (temp float)

+0:21            direct index (temp 4-component vector of float)

+0:21              'mm' (temp 4X4 matrix of float)

 0:21              Constant:

 0:21                1 (const int)

 0:21            Constant:

 0:21              3 (const int)

 0:24      Sequence

-0:24        move second child to first child (float)

-0:24          'g' (float)

-0:24          direct index (float)

-0:24            direct index (4-component vector of float)

-0:24              component-wise multiply (4X4 matrix of float)

-0:24                'm' (4X4 matrix of float)

-0:24                'm' (4X4 matrix of float)

+0:24        move second child to first child (temp float)

+0:24          'g' (temp float)

+0:24          direct index (temp float)

+0:24            direct index (temp 4-component vector of float)

+0:24              component-wise multiply (global 4X4 matrix of float)

+0:24                'm' (temp 4X4 matrix of float)

+0:24                'm' (temp 4X4 matrix of float)

 0:24              Constant:

 0:24                2 (const int)

 0:24            Constant:

 0:24              1 (const int)

 0:26      Sequence

-0:26        move second child to first child (float)

-0:26          'h' (float)

+0:26        move second child to first child (temp float)

+0:26          'h' (temp float)

 0:26          Constant:

 0:26            5.000000

 0:28      Sequence

-0:28        move second child to first child (float)

-0:28          'i' (float)

-0:28          direct index (float)

-0:28            Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:28        move second child to first child (temp float)

+0:28          'i' (temp float)

+0:28          direct index (temp float)

+0:28            Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:28              'sampler' (uniform sampler2D)

 0:28              Constant:

 0:28                0.500000

 0:28                0.500000

 0:28            Constant:

 0:28              1 (const int)

-0:30      add second child into first child (float)

-0:30        'i' (float)

-0:30        direct index (float)

-0:30          Test condition and select (4-component vector of float)

+0:30      add second child into first child (temp float)

+0:30        'i' (temp float)

+0:30        direct index (temp float)

+0:30          Test condition and select (temp 4-component vector of float)

 0:30            Condition

-0:30            Compare Greater Than (bool)

-0:30              'i' (float)

+0:30            Compare Greater Than (temp bool)

+0:30              'i' (temp float)

 0:30              Constant:

 0:30                0.100000

 0:30            true case

-0:30            'v1' (4-component vector of float)

+0:30            'v1' (global 4-component vector of float)

 0:30            false case

-0:30            'v2' (4-component vector of float)

+0:30            'v2' (global 4-component vector of float)

 0:30          Constant:

 0:30            3 (const int)

-0:33      add second child into first child (float)

-0:33        'i' (float)

-0:33        direct index (float)

-0:33          direct index (2-component vector of float)

-0:33            b: direct index for structure (3-element array of 2-component vector of float)

-0:33              move second child to first child (structure{int a, 3-element array of 2-component vector of float b, bool c})

-0:33                't' (structure{int a, 3-element array of 2-component vector of float b, bool c})

+0:33      add second child into first child (temp float)

+0:33        'i' (temp float)

+0:33        direct index (temp float)

+0:33          direct index (temp 2-component vector of float)

+0:33            b: direct index for structure (global 3-element array of 2-component vector of float)

+0:33              move second child to first child (temp structure{global int a, global 3-element array of 2-component vector of float b, global bool c})

+0:33                't' (temp structure{global int a, global 3-element array of 2-component vector of float b, global bool c})

 0:33                Constant:

 0:33                  1 (const int)

 0:33                  2.000000

@@ -270,17 +270,17 @@
 0:33              2 (const int)

 0:33          Constant:

 0:33            1 (const int)

-0:35      move second child to first child (4-component vector of float)

+0:35      move second child to first child (temp 4-component vector of float)

 0:35        'gl_FragColor' (fragColor 4-component vector of float)

-0:35        Construct vec4 (4-component vector of float)

-0:35          'f' (float)

-0:35          'g' (float)

-0:35          'h' (float)

-0:35          'i' (float)

+0:35        Construct vec4 (temp 4-component vector of float)

+0:35          'f' (temp float)

+0:35          'g' (temp float)

+0:35          'h' (temp float)

+0:35          'i' (temp float)

 0:?   Linker Objects

 0:?     'sampler' (uniform sampler2D)

-0:?     'v1' (4-component vector of float)

-0:?     'v2' (4-component vector of float)

-0:?     'v3' (4-component vector of float)

-0:?     'v4' (4-component vector of float)

+0:?     'v1' (global 4-component vector of float)

+0:?     'v2' (global 4-component vector of float)

+0:?     'v3' (global 4-component vector of float)

+0:?     'v4' (global 4-component vector of float)

 

diff --git a/Test/baseResults/depthOut.frag.out b/Test/baseResults/depthOut.frag.out
index c70365f..d510095 100644
--- a/Test/baseResults/depthOut.frag.out
+++ b/Test/baseResults/depthOut.frag.out
@@ -4,13 +4,13 @@
 

 Shader version: 130

 0:? Sequence

-0:6  Function Definition: main( (void)

+0:6  Function Definition: main( (global void)

 0:6    Function Parameters: 

 0:8    Sequence

-0:8      move second child to first child (float)

+0:8      move second child to first child (temp float)

 0:8        'gl_FragDepth' (gl_FragDepth float)

 0:8        'Depth' (smooth in float)

-0:9      move second child to first child (4-component vector of float)

+0:9      move second child to first child (temp 4-component vector of float)

 0:9        'gl_FragColor' (fragColor 4-component vector of float)

 0:9        'Color' (smooth in 4-component vector of float)

 0:?   Linker Objects

@@ -23,13 +23,13 @@
 

 Shader version: 130

 0:? Sequence

-0:6  Function Definition: main( (void)

+0:6  Function Definition: main( (global void)

 0:6    Function Parameters: 

 0:8    Sequence

-0:8      move second child to first child (float)

+0:8      move second child to first child (temp float)

 0:8        'gl_FragDepth' (gl_FragDepth float)

 0:8        'Depth' (smooth in float)

-0:9      move second child to first child (4-component vector of float)

+0:9      move second child to first child (temp 4-component vector of float)

 0:9        'gl_FragColor' (fragColor 4-component vector of float)

 0:9        'Color' (smooth in 4-component vector of float)

 0:?   Linker Objects

diff --git a/Test/baseResults/discard-dce.frag.out b/Test/baseResults/discard-dce.frag.out
index 446eabc..4ff0fac 100644
--- a/Test/baseResults/discard-dce.frag.out
+++ b/Test/baseResults/discard-dce.frag.out
@@ -2,35 +2,35 @@
 

 Shader version: 110

 0:? Sequence

-0:4  Function Definition: main( (void)

+0:4  Function Definition: main( (global void)

 0:4    Function Parameters: 

 0:6    Sequence

 0:6      Sequence

-0:6        move second child to first child (4-component vector of float)

-0:6          'white' (4-component vector of float)

+0:6        move second child to first child (temp 4-component vector of float)

+0:6          'white' (temp 4-component vector of float)

 0:6          Constant:

 0:6            1.000000

 0:6            1.000000

 0:6            1.000000

 0:6            1.000000

 0:7      Sequence

-0:7        move second child to first child (4-component vector of float)

-0:7          'black' (4-component vector of float)

+0:7        move second child to first child (temp 4-component vector of float)

+0:7          'black' (temp 4-component vector of float)

 0:7          Constant:

 0:7            0.200000

 0:7            0.200000

 0:7            0.200000

 0:7            0.200000

 0:8      Sequence

-0:8        move second child to first child (4-component vector of float)

-0:8          'color' (4-component vector of float)

-0:8          'white' (4-component vector of float)

+0:8        move second child to first child (temp 4-component vector of float)

+0:8          'color' (temp 4-component vector of float)

+0:8          'white' (temp 4-component vector of float)

 0:11      Sequence

-0:11        move second child to first child (float)

-0:11          'x' (float)

-0:11          subtract (float)

-0:11            component-wise multiply (float)

-0:11              direct index (float)

+0:11        move second child to first child (temp float)

+0:11          'x' (temp float)

+0:11          subtract (temp float)

+0:11            component-wise multiply (temp float)

+0:11              direct index (temp float)

 0:11                'tex_coord' (smooth in 2-component vector of float)

 0:11                Constant:

 0:11                  0 (const int)

@@ -39,11 +39,11 @@
 0:11            Constant:

 0:11              1.000000

 0:12      Sequence

-0:12        move second child to first child (float)

-0:12          'y' (float)

-0:12          subtract (float)

-0:12            component-wise multiply (float)

-0:12              direct index (float)

+0:12        move second child to first child (temp float)

+0:12          'y' (temp float)

+0:12          subtract (temp float)

+0:12            component-wise multiply (temp float)

+0:12              direct index (temp float)

 0:12                'tex_coord' (smooth in 2-component vector of float)

 0:12                Constant:

 0:12                  1 (const int)

@@ -52,68 +52,68 @@
 0:12            Constant:

 0:12              1.000000

 0:14      Sequence

-0:14        move second child to first child (float)

-0:14          'radius' (float)

-0:14          sqrt (float)

-0:14            add (float)

-0:14              component-wise multiply (float)

-0:14                'x' (float)

-0:14                'x' (float)

-0:14              component-wise multiply (float)

-0:14                'y' (float)

-0:14                'y' (float)

-0:15      Test condition and select (void)

+0:14        move second child to first child (temp float)

+0:14          'radius' (temp float)

+0:14          sqrt (global float)

+0:14            add (temp float)

+0:14              component-wise multiply (temp float)

+0:14                'x' (temp float)

+0:14                'x' (temp float)

+0:14              component-wise multiply (temp float)

+0:14                'y' (temp float)

+0:14                'y' (temp float)

+0:15      Test condition and select (temp void)

 0:15        Condition

-0:15        Compare Greater Than (bool)

-0:15          'radius' (float)

+0:15        Compare Greater Than (temp bool)

+0:15          'radius' (temp float)

 0:15          Constant:

 0:15            1.000000

 0:15        true case

 0:16        Sequence

-0:16          Test condition and select (void)

+0:16          Test condition and select (temp void)

 0:16            Condition

-0:16            Compare Greater Than (bool)

-0:16              'radius' (float)

+0:16            Compare Greater Than (temp bool)

+0:16              'radius' (temp float)

 0:16              Constant:

 0:16                1.100000

 0:16            true case

 0:17            Sequence

-0:17              Pre-Increment (4-component vector of float)

-0:17                'color' (4-component vector of float)

-0:20          move second child to first child (4-component vector of float)

+0:17              Pre-Increment (temp 4-component vector of float)

+0:17                'color' (temp 4-component vector of float)

+0:20          move second child to first child (temp 4-component vector of float)

 0:20            'gl_FragColor' (fragColor 4-component vector of float)

-0:20            'color' (4-component vector of float)

-0:22          Test condition and select (void)

+0:20            'color' (temp 4-component vector of float)

+0:22          Test condition and select (temp void)

 0:22            Condition

-0:22            Compare Greater Than (bool)

-0:22              'radius' (float)

+0:22            Compare Greater Than (temp bool)

+0:22              'radius' (temp float)

 0:22              Constant:

 0:22                1.200000

 0:22            true case

 0:23            Sequence

-0:23              Pre-Increment (4-component vector of float)

-0:23                'color' (4-component vector of float)

+0:23              Pre-Increment (temp 4-component vector of float)

+0:23                'color' (temp 4-component vector of float)

 0:26          Branch: Kill

-0:30      Test condition and select (void)

+0:30      Test condition and select (temp void)

 0:30        Condition

-0:30        Compare Greater Than or Equal (bool)

-0:30          'radius' (float)

+0:30        Compare Greater Than or Equal (temp bool)

+0:30          'radius' (temp float)

 0:30          Constant:

 0:30            0.750000

 0:30        true case

-0:31        subtract second child into first child (4-component vector of float)

-0:31          'color' (4-component vector of float)

-0:31          Absolute value (float)

-0:31            divide (float)

-0:31              pow (float)

-0:31                'radius' (float)

+0:31        subtract second child into first child (temp 4-component vector of float)

+0:31          'color' (temp 4-component vector of float)

+0:31          Absolute value (global float)

+0:31            divide (temp float)

+0:31              pow (global float)

+0:31                'radius' (temp float)

 0:31                Constant:

 0:31                  16.000000

 0:31              Constant:

 0:31                2.000000

-0:33      move second child to first child (4-component vector of float)

+0:33      move second child to first child (temp 4-component vector of float)

 0:33        'gl_FragColor' (fragColor 4-component vector of float)

-0:33        'color' (4-component vector of float)

+0:33        'color' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'tex_coord' (smooth in 2-component vector of float)

 

@@ -123,35 +123,35 @@
 

 Shader version: 110

 0:? Sequence

-0:4  Function Definition: main( (void)

+0:4  Function Definition: main( (global void)

 0:4    Function Parameters: 

 0:6    Sequence

 0:6      Sequence

-0:6        move second child to first child (4-component vector of float)

-0:6          'white' (4-component vector of float)

+0:6        move second child to first child (temp 4-component vector of float)

+0:6          'white' (temp 4-component vector of float)

 0:6          Constant:

 0:6            1.000000

 0:6            1.000000

 0:6            1.000000

 0:6            1.000000

 0:7      Sequence

-0:7        move second child to first child (4-component vector of float)

-0:7          'black' (4-component vector of float)

+0:7        move second child to first child (temp 4-component vector of float)

+0:7          'black' (temp 4-component vector of float)

 0:7          Constant:

 0:7            0.200000

 0:7            0.200000

 0:7            0.200000

 0:7            0.200000

 0:8      Sequence

-0:8        move second child to first child (4-component vector of float)

-0:8          'color' (4-component vector of float)

-0:8          'white' (4-component vector of float)

+0:8        move second child to first child (temp 4-component vector of float)

+0:8          'color' (temp 4-component vector of float)

+0:8          'white' (temp 4-component vector of float)

 0:11      Sequence

-0:11        move second child to first child (float)

-0:11          'x' (float)

-0:11          subtract (float)

-0:11            component-wise multiply (float)

-0:11              direct index (float)

+0:11        move second child to first child (temp float)

+0:11          'x' (temp float)

+0:11          subtract (temp float)

+0:11            component-wise multiply (temp float)

+0:11              direct index (temp float)

 0:11                'tex_coord' (smooth in 2-component vector of float)

 0:11                Constant:

 0:11                  0 (const int)

@@ -160,11 +160,11 @@
 0:11            Constant:

 0:11              1.000000

 0:12      Sequence

-0:12        move second child to first child (float)

-0:12          'y' (float)

-0:12          subtract (float)

-0:12            component-wise multiply (float)

-0:12              direct index (float)

+0:12        move second child to first child (temp float)

+0:12          'y' (temp float)

+0:12          subtract (temp float)

+0:12            component-wise multiply (temp float)

+0:12              direct index (temp float)

 0:12                'tex_coord' (smooth in 2-component vector of float)

 0:12                Constant:

 0:12                  1 (const int)

@@ -173,68 +173,68 @@
 0:12            Constant:

 0:12              1.000000

 0:14      Sequence

-0:14        move second child to first child (float)

-0:14          'radius' (float)

-0:14          sqrt (float)

-0:14            add (float)

-0:14              component-wise multiply (float)

-0:14                'x' (float)

-0:14                'x' (float)

-0:14              component-wise multiply (float)

-0:14                'y' (float)

-0:14                'y' (float)

-0:15      Test condition and select (void)

+0:14        move second child to first child (temp float)

+0:14          'radius' (temp float)

+0:14          sqrt (global float)

+0:14            add (temp float)

+0:14              component-wise multiply (temp float)

+0:14                'x' (temp float)

+0:14                'x' (temp float)

+0:14              component-wise multiply (temp float)

+0:14                'y' (temp float)

+0:14                'y' (temp float)

+0:15      Test condition and select (temp void)

 0:15        Condition

-0:15        Compare Greater Than (bool)

-0:15          'radius' (float)

+0:15        Compare Greater Than (temp bool)

+0:15          'radius' (temp float)

 0:15          Constant:

 0:15            1.000000

 0:15        true case

 0:16        Sequence

-0:16          Test condition and select (void)

+0:16          Test condition and select (temp void)

 0:16            Condition

-0:16            Compare Greater Than (bool)

-0:16              'radius' (float)

+0:16            Compare Greater Than (temp bool)

+0:16              'radius' (temp float)

 0:16              Constant:

 0:16                1.100000

 0:16            true case

 0:17            Sequence

-0:17              Pre-Increment (4-component vector of float)

-0:17                'color' (4-component vector of float)

-0:20          move second child to first child (4-component vector of float)

+0:17              Pre-Increment (temp 4-component vector of float)

+0:17                'color' (temp 4-component vector of float)

+0:20          move second child to first child (temp 4-component vector of float)

 0:20            'gl_FragColor' (fragColor 4-component vector of float)

-0:20            'color' (4-component vector of float)

-0:22          Test condition and select (void)

+0:20            'color' (temp 4-component vector of float)

+0:22          Test condition and select (temp void)

 0:22            Condition

-0:22            Compare Greater Than (bool)

-0:22              'radius' (float)

+0:22            Compare Greater Than (temp bool)

+0:22              'radius' (temp float)

 0:22              Constant:

 0:22                1.200000

 0:22            true case

 0:23            Sequence

-0:23              Pre-Increment (4-component vector of float)

-0:23                'color' (4-component vector of float)

+0:23              Pre-Increment (temp 4-component vector of float)

+0:23                'color' (temp 4-component vector of float)

 0:26          Branch: Kill

-0:30      Test condition and select (void)

+0:30      Test condition and select (temp void)

 0:30        Condition

-0:30        Compare Greater Than or Equal (bool)

-0:30          'radius' (float)

+0:30        Compare Greater Than or Equal (temp bool)

+0:30          'radius' (temp float)

 0:30          Constant:

 0:30            0.750000

 0:30        true case

-0:31        subtract second child into first child (4-component vector of float)

-0:31          'color' (4-component vector of float)

-0:31          Absolute value (float)

-0:31            divide (float)

-0:31              pow (float)

-0:31                'radius' (float)

+0:31        subtract second child into first child (temp 4-component vector of float)

+0:31          'color' (temp 4-component vector of float)

+0:31          Absolute value (global float)

+0:31            divide (temp float)

+0:31              pow (global float)

+0:31                'radius' (temp float)

 0:31                Constant:

 0:31                  16.000000

 0:31              Constant:

 0:31                2.000000

-0:33      move second child to first child (4-component vector of float)

+0:33      move second child to first child (temp 4-component vector of float)

 0:33        'gl_FragColor' (fragColor 4-component vector of float)

-0:33        'color' (4-component vector of float)

+0:33        'color' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'tex_coord' (smooth in 2-component vector of float)

 

diff --git a/Test/baseResults/doWhileLoop.frag.out b/Test/baseResults/doWhileLoop.frag.out
index b9f2c4b..0ef812f 100644
--- a/Test/baseResults/doWhileLoop.frag.out
+++ b/Test/baseResults/doWhileLoop.frag.out
@@ -2,29 +2,29 @@
 

 Shader version: 110

 0:? Sequence

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:9    Sequence

 0:9      Sequence

-0:9        move second child to first child (4-component vector of float)

-0:9          'color' (4-component vector of float)

+0:9        move second child to first child (temp 4-component vector of float)

+0:9          'color' (temp 4-component vector of float)

 0:9          'BaseColor' (smooth in 4-component vector of float)

 0:13      Loop with condition not tested first

 0:13        Loop Condition

-0:13        Compare Less Than (bool)

-0:13          direct index (float)

-0:13            'color' (4-component vector of float)

+0:13        Compare Less Than (temp bool)

+0:13          direct index (temp float)

+0:13            'color' (temp 4-component vector of float)

 0:13            Constant:

 0:13              0 (const int)

 0:13          'd' (uniform float)

 0:13        Loop Body

 0:12        Sequence

-0:12          add second child into first child (4-component vector of float)

-0:12            'color' (4-component vector of float)

+0:12          add second child into first child (temp 4-component vector of float)

+0:12            'color' (temp 4-component vector of float)

 0:12            'bigColor' (uniform 4-component vector of float)

-0:15      move second child to first child (4-component vector of float)

+0:15      move second child to first child (temp 4-component vector of float)

 0:15        'gl_FragColor' (fragColor 4-component vector of float)

-0:15        'color' (4-component vector of float)

+0:15        'color' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'bigColor' (uniform 4-component vector of float)

 0:?     'BaseColor' (smooth in 4-component vector of float)

@@ -36,29 +36,29 @@
 

 Shader version: 110

 0:? Sequence

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:9    Sequence

 0:9      Sequence

-0:9        move second child to first child (4-component vector of float)

-0:9          'color' (4-component vector of float)

+0:9        move second child to first child (temp 4-component vector of float)

+0:9          'color' (temp 4-component vector of float)

 0:9          'BaseColor' (smooth in 4-component vector of float)

 0:13      Loop with condition not tested first

 0:13        Loop Condition

-0:13        Compare Less Than (bool)

-0:13          direct index (float)

-0:13            'color' (4-component vector of float)

+0:13        Compare Less Than (temp bool)

+0:13          direct index (temp float)

+0:13            'color' (temp 4-component vector of float)

 0:13            Constant:

 0:13              0 (const int)

 0:13          'd' (uniform float)

 0:13        Loop Body

 0:12        Sequence

-0:12          add second child into first child (4-component vector of float)

-0:12            'color' (4-component vector of float)

+0:12          add second child into first child (temp 4-component vector of float)

+0:12            'color' (temp 4-component vector of float)

 0:12            'bigColor' (uniform 4-component vector of float)

-0:15      move second child to first child (4-component vector of float)

+0:15      move second child to first child (temp 4-component vector of float)

 0:15        'gl_FragColor' (fragColor 4-component vector of float)

-0:15        'color' (4-component vector of float)

+0:15        'color' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'bigColor' (uniform 4-component vector of float)

 0:?     'BaseColor' (smooth in 4-component vector of float)

diff --git a/Test/baseResults/earlyReturnDiscard.frag.out b/Test/baseResults/earlyReturnDiscard.frag.out
index ff44572..afc4253 100644
--- a/Test/baseResults/earlyReturnDiscard.frag.out
+++ b/Test/baseResults/earlyReturnDiscard.frag.out
@@ -2,93 +2,93 @@
 

 Shader version: 110

 0:? Sequence

-0:19  Function Definition: main( (void)

+0:19  Function Definition: main( (global void)

 0:19    Function Parameters: 

 0:21    Sequence

 0:21      Sequence

-0:21        move second child to first child (4-component vector of float)

-0:21          'color' (4-component vector of float)

+0:21        move second child to first child (temp 4-component vector of float)

+0:21          'color' (temp 4-component vector of float)

 0:21          'BaseColor' (smooth in 4-component vector of float)

-0:24      move second child to first child (4-component vector of float)

-0:24        'color2' (4-component vector of float)

+0:24      move second child to first child (temp 4-component vector of float)

+0:24        'color2' (temp 4-component vector of float)

 0:24        'otherColor' (uniform 4-component vector of float)

-0:26      Test condition and select (void)

+0:26      Test condition and select (temp void)

 0:26        Condition

-0:26        Compare Greater Than (bool)

+0:26        Compare Greater Than (temp bool)

 0:26          'c' (smooth in float)

 0:26          'd' (uniform float)

 0:26        true case

-0:27        add second child into first child (4-component vector of float)

-0:27          'color' (4-component vector of float)

+0:27        add second child into first child (temp 4-component vector of float)

+0:27          'color' (temp 4-component vector of float)

 0:27          'bigColor' (uniform 4-component vector of float)

 0:26        false case

-0:29        add second child into first child (4-component vector of float)

-0:29          'color' (4-component vector of float)

+0:29        add second child into first child (temp 4-component vector of float)

+0:29          'color' (temp 4-component vector of float)

 0:29          'smallColor' (uniform 4-component vector of float)

-0:31      Test condition and select (void)

+0:31      Test condition and select (temp void)

 0:31        Condition

-0:31        Compare Less Than (bool)

-0:31          direct index (float)

-0:31            'color' (4-component vector of float)

+0:31        Compare Less Than (temp bool)

+0:31          direct index (temp float)

+0:31            'color' (temp 4-component vector of float)

 0:31            Constant:

 0:31              2 (const int)

 0:31          'minimum' (uniform float)

 0:31        true case

 0:32        Branch: Return

-0:34      Post-Increment (float)

-0:34        direct index (float)

-0:34          'color' (4-component vector of float)

+0:34      Post-Increment (temp float)

+0:34        direct index (temp float)

+0:34          'color' (temp 4-component vector of float)

 0:34          Constant:

 0:34            2 (const int)

-0:36      Test condition and select (void)

+0:36      Test condition and select (temp void)

 0:36        Condition

-0:36        Compare Greater Than (bool)

-0:36          direct index (float)

-0:36            'color' (4-component vector of float)

+0:36        Compare Greater Than (temp bool)

+0:36          direct index (temp float)

+0:36            'color' (temp 4-component vector of float)

 0:36            Constant:

 0:36              2 (const int)

 0:36          'threshhold' (uniform float)

 0:36        true case

 0:37        Branch: Kill

-0:39      Post-Increment (4-component vector of float)

-0:39        'color' (4-component vector of float)

-0:42      Test condition and select (void)

+0:39      Post-Increment (temp 4-component vector of float)

+0:39        'color' (temp 4-component vector of float)

+0:42      Test condition and select (temp void)

 0:42        Condition

-0:42        Compare Greater Than (bool)

-0:42          direct index (float)

-0:42            'color' (4-component vector of float)

+0:42        Compare Greater Than (temp bool)

+0:42          direct index (temp float)

+0:42            'color' (temp 4-component vector of float)

 0:42            Constant:

 0:42              3 (const int)

 0:42          'threshhold2' (uniform float)

 0:42        true case

 0:43        Sequence

-0:43          Test condition and select (void)

+0:43          Test condition and select (temp void)

 0:43            Condition

-0:43            Compare Greater Than (bool)

-0:43              direct index (float)

-0:43                'color' (4-component vector of float)

+0:43            Compare Greater Than (temp bool)

+0:43              direct index (temp float)

+0:43                'color' (temp 4-component vector of float)

 0:43                Constant:

 0:43                  2 (const int)

 0:43              'threshhold2' (uniform float)

 0:43            true case

 0:44            Branch: Return

 0:43            false case

-0:45            Test condition and select (void)

+0:45            Test condition and select (temp void)

 0:45              Condition

 0:45              'b' (uniform bool)

 0:45              true case

-0:46              Post-Increment (float)

-0:46                direct index (float)

-0:46                  'color' (4-component vector of float)

+0:46              Post-Increment (temp float)

+0:46                direct index (temp float)

+0:46                  'color' (temp 4-component vector of float)

 0:46                  Constant:

 0:46                    2 (const int)

 0:45              false case

 0:48              Sequence

-0:48                Test condition and select (void)

+0:48                Test condition and select (temp void)

 0:48                  Condition

-0:48                  Compare Less Than (bool)

-0:48                    direct index (float)

-0:48                      'color' (4-component vector of float)

+0:48                  Compare Less Than (temp bool)

+0:48                    direct index (temp float)

+0:48                      'color' (temp 4-component vector of float)

 0:48                      Constant:

 0:48                        0 (const int)

 0:48                    'minimum' (uniform float)

@@ -97,22 +97,22 @@
 0:49                    Branch: Kill

 0:48                  false case

 0:51                  Sequence

-0:51                    Post-Increment (4-component vector of float)

-0:51                      'color' (4-component vector of float)

+0:51                    Post-Increment (temp 4-component vector of float)

+0:51                      'color' (temp 4-component vector of float)

 0:42        false case

 0:55        Sequence

-0:55          Test condition and select (void)

+0:55          Test condition and select (temp void)

 0:55            Condition

 0:55            'b' (uniform bool)

 0:55            true case

 0:56            Branch: Kill

 0:55            false case

 0:58            Branch: Return

-0:101      move second child to first child (4-component vector of float)

+0:101      move second child to first child (temp 4-component vector of float)

 0:101        'gl_FragColor' (fragColor 4-component vector of float)

-0:101        component-wise multiply (4-component vector of float)

-0:101          'color' (4-component vector of float)

-0:101          'color2' (4-component vector of float)

+0:101        component-wise multiply (temp 4-component vector of float)

+0:101          'color' (temp 4-component vector of float)

+0:101          'color2' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'd' (uniform float)

 0:?     'bigColor' (uniform 4-component vector of float)

@@ -132,93 +132,93 @@
 

 Shader version: 110

 0:? Sequence

-0:19  Function Definition: main( (void)

+0:19  Function Definition: main( (global void)

 0:19    Function Parameters: 

 0:21    Sequence

 0:21      Sequence

-0:21        move second child to first child (4-component vector of float)

-0:21          'color' (4-component vector of float)

+0:21        move second child to first child (temp 4-component vector of float)

+0:21          'color' (temp 4-component vector of float)

 0:21          'BaseColor' (smooth in 4-component vector of float)

-0:24      move second child to first child (4-component vector of float)

-0:24        'color2' (4-component vector of float)

+0:24      move second child to first child (temp 4-component vector of float)

+0:24        'color2' (temp 4-component vector of float)

 0:24        'otherColor' (uniform 4-component vector of float)

-0:26      Test condition and select (void)

+0:26      Test condition and select (temp void)

 0:26        Condition

-0:26        Compare Greater Than (bool)

+0:26        Compare Greater Than (temp bool)

 0:26          'c' (smooth in float)

 0:26          'd' (uniform float)

 0:26        true case

-0:27        add second child into first child (4-component vector of float)

-0:27          'color' (4-component vector of float)

+0:27        add second child into first child (temp 4-component vector of float)

+0:27          'color' (temp 4-component vector of float)

 0:27          'bigColor' (uniform 4-component vector of float)

 0:26        false case

-0:29        add second child into first child (4-component vector of float)

-0:29          'color' (4-component vector of float)

+0:29        add second child into first child (temp 4-component vector of float)

+0:29          'color' (temp 4-component vector of float)

 0:29          'smallColor' (uniform 4-component vector of float)

-0:31      Test condition and select (void)

+0:31      Test condition and select (temp void)

 0:31        Condition

-0:31        Compare Less Than (bool)

-0:31          direct index (float)

-0:31            'color' (4-component vector of float)

+0:31        Compare Less Than (temp bool)

+0:31          direct index (temp float)

+0:31            'color' (temp 4-component vector of float)

 0:31            Constant:

 0:31              2 (const int)

 0:31          'minimum' (uniform float)

 0:31        true case

 0:32        Branch: Return

-0:34      Post-Increment (float)

-0:34        direct index (float)

-0:34          'color' (4-component vector of float)

+0:34      Post-Increment (temp float)

+0:34        direct index (temp float)

+0:34          'color' (temp 4-component vector of float)

 0:34          Constant:

 0:34            2 (const int)

-0:36      Test condition and select (void)

+0:36      Test condition and select (temp void)

 0:36        Condition

-0:36        Compare Greater Than (bool)

-0:36          direct index (float)

-0:36            'color' (4-component vector of float)

+0:36        Compare Greater Than (temp bool)

+0:36          direct index (temp float)

+0:36            'color' (temp 4-component vector of float)

 0:36            Constant:

 0:36              2 (const int)

 0:36          'threshhold' (uniform float)

 0:36        true case

 0:37        Branch: Kill

-0:39      Post-Increment (4-component vector of float)

-0:39        'color' (4-component vector of float)

-0:42      Test condition and select (void)

+0:39      Post-Increment (temp 4-component vector of float)

+0:39        'color' (temp 4-component vector of float)

+0:42      Test condition and select (temp void)

 0:42        Condition

-0:42        Compare Greater Than (bool)

-0:42          direct index (float)

-0:42            'color' (4-component vector of float)

+0:42        Compare Greater Than (temp bool)

+0:42          direct index (temp float)

+0:42            'color' (temp 4-component vector of float)

 0:42            Constant:

 0:42              3 (const int)

 0:42          'threshhold2' (uniform float)

 0:42        true case

 0:43        Sequence

-0:43          Test condition and select (void)

+0:43          Test condition and select (temp void)

 0:43            Condition

-0:43            Compare Greater Than (bool)

-0:43              direct index (float)

-0:43                'color' (4-component vector of float)

+0:43            Compare Greater Than (temp bool)

+0:43              direct index (temp float)

+0:43                'color' (temp 4-component vector of float)

 0:43                Constant:

 0:43                  2 (const int)

 0:43              'threshhold2' (uniform float)

 0:43            true case

 0:44            Branch: Return

 0:43            false case

-0:45            Test condition and select (void)

+0:45            Test condition and select (temp void)

 0:45              Condition

 0:45              'b' (uniform bool)

 0:45              true case

-0:46              Post-Increment (float)

-0:46                direct index (float)

-0:46                  'color' (4-component vector of float)

+0:46              Post-Increment (temp float)

+0:46                direct index (temp float)

+0:46                  'color' (temp 4-component vector of float)

 0:46                  Constant:

 0:46                    2 (const int)

 0:45              false case

 0:48              Sequence

-0:48                Test condition and select (void)

+0:48                Test condition and select (temp void)

 0:48                  Condition

-0:48                  Compare Less Than (bool)

-0:48                    direct index (float)

-0:48                      'color' (4-component vector of float)

+0:48                  Compare Less Than (temp bool)

+0:48                    direct index (temp float)

+0:48                      'color' (temp 4-component vector of float)

 0:48                      Constant:

 0:48                        0 (const int)

 0:48                    'minimum' (uniform float)

@@ -227,22 +227,22 @@
 0:49                    Branch: Kill

 0:48                  false case

 0:51                  Sequence

-0:51                    Post-Increment (4-component vector of float)

-0:51                      'color' (4-component vector of float)

+0:51                    Post-Increment (temp 4-component vector of float)

+0:51                      'color' (temp 4-component vector of float)

 0:42        false case

 0:55        Sequence

-0:55          Test condition and select (void)

+0:55          Test condition and select (temp void)

 0:55            Condition

 0:55            'b' (uniform bool)

 0:55            true case

 0:56            Branch: Kill

 0:55            false case

 0:58            Branch: Return

-0:101      move second child to first child (4-component vector of float)

+0:101      move second child to first child (temp 4-component vector of float)

 0:101        'gl_FragColor' (fragColor 4-component vector of float)

-0:101        component-wise multiply (4-component vector of float)

-0:101          'color' (4-component vector of float)

-0:101          'color2' (4-component vector of float)

+0:101        component-wise multiply (temp 4-component vector of float)

+0:101          'color' (temp 4-component vector of float)

+0:101          'color2' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'd' (uniform float)

 0:?     'bigColor' (uniform 4-component vector of float)

diff --git a/Test/baseResults/errors.frag.out b/Test/baseResults/errors.frag.out
index 4b08a46..1d7939b 100644
--- a/Test/baseResults/errors.frag.out
+++ b/Test/baseResults/errors.frag.out
@@ -6,7 +6,7 @@
 

 Shader version: 100

 ERROR: node is still EOpNull!

-0:1  Function Definition: main(i1; (mediump int)

+0:1  Function Definition: main(i1; (global mediump int)

 0:1    Function Parameters: 

 0:1      'foo' (in mediump int)

 0:3    Sequence

@@ -21,7 +21,7 @@
 

 Shader version: 100

 ERROR: node is still EOpNull!

-0:1  Function Definition: main(i1; (mediump int)

+0:1  Function Definition: main(i1; (global mediump int)

 0:1    Function Parameters: 

 0:1      'foo' (in mediump int)

 0:3    Sequence

diff --git a/Test/baseResults/flowControl.frag.out b/Test/baseResults/flowControl.frag.out
index 21e12d6..f323b02 100644
--- a/Test/baseResults/flowControl.frag.out
+++ b/Test/baseResults/flowControl.frag.out
@@ -2,34 +2,34 @@
 

 Shader version: 120

 0:? Sequence

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:12    Sequence

 0:12      Sequence

-0:12        move second child to first child (4-component vector of float)

-0:12          'color' (4-component vector of float)

+0:12        move second child to first child (temp 4-component vector of float)

+0:12          'color' (temp 4-component vector of float)

 0:12          'BaseColor' (smooth in 4-component vector of float)

-0:15      move second child to first child (4-component vector of float)

-0:15        'color2' (4-component vector of float)

+0:15      move second child to first child (temp 4-component vector of float)

+0:15        'color2' (temp 4-component vector of float)

 0:15        'otherColor' (uniform 4-component vector of float)

-0:17      Test condition and select (void)

+0:17      Test condition and select (temp void)

 0:17        Condition

-0:17        Compare Greater Than (bool)

+0:17        Compare Greater Than (temp bool)

 0:17          'c' (smooth in float)

 0:17          'd' (uniform float)

 0:17        true case

-0:18        add second child into first child (4-component vector of float)

-0:18          'color' (4-component vector of float)

+0:18        add second child into first child (temp 4-component vector of float)

+0:18          'color' (temp 4-component vector of float)

 0:18          'bigColor' (uniform 4-component vector of float)

 0:17        false case

-0:20        add second child into first child (4-component vector of float)

-0:20          'color' (4-component vector of float)

+0:20        add second child into first child (temp 4-component vector of float)

+0:20          'color' (temp 4-component vector of float)

 0:20          'smallColor' (uniform 4-component vector of float)

-0:22      move second child to first child (4-component vector of float)

+0:22      move second child to first child (temp 4-component vector of float)

 0:22        'gl_FragColor' (fragColor 4-component vector of float)

-0:22        component-wise multiply (4-component vector of float)

-0:22          'color' (4-component vector of float)

-0:22          'color2' (4-component vector of float)

+0:22        component-wise multiply (temp 4-component vector of float)

+0:22          'color' (temp 4-component vector of float)

+0:22          'color2' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'd' (uniform float)

 0:?     'bigColor' (uniform 4-component vector of float)

@@ -44,34 +44,34 @@
 

 Shader version: 120

 0:? Sequence

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:12    Sequence

 0:12      Sequence

-0:12        move second child to first child (4-component vector of float)

-0:12          'color' (4-component vector of float)

+0:12        move second child to first child (temp 4-component vector of float)

+0:12          'color' (temp 4-component vector of float)

 0:12          'BaseColor' (smooth in 4-component vector of float)

-0:15      move second child to first child (4-component vector of float)

-0:15        'color2' (4-component vector of float)

+0:15      move second child to first child (temp 4-component vector of float)

+0:15        'color2' (temp 4-component vector of float)

 0:15        'otherColor' (uniform 4-component vector of float)

-0:17      Test condition and select (void)

+0:17      Test condition and select (temp void)

 0:17        Condition

-0:17        Compare Greater Than (bool)

+0:17        Compare Greater Than (temp bool)

 0:17          'c' (smooth in float)

 0:17          'd' (uniform float)

 0:17        true case

-0:18        add second child into first child (4-component vector of float)

-0:18          'color' (4-component vector of float)

+0:18        add second child into first child (temp 4-component vector of float)

+0:18          'color' (temp 4-component vector of float)

 0:18          'bigColor' (uniform 4-component vector of float)

 0:17        false case

-0:20        add second child into first child (4-component vector of float)

-0:20          'color' (4-component vector of float)

+0:20        add second child into first child (temp 4-component vector of float)

+0:20          'color' (temp 4-component vector of float)

 0:20          'smallColor' (uniform 4-component vector of float)

-0:22      move second child to first child (4-component vector of float)

+0:22      move second child to first child (temp 4-component vector of float)

 0:22        'gl_FragColor' (fragColor 4-component vector of float)

-0:22        component-wise multiply (4-component vector of float)

-0:22          'color' (4-component vector of float)

-0:22          'color2' (4-component vector of float)

+0:22        component-wise multiply (temp 4-component vector of float)

+0:22          'color' (temp 4-component vector of float)

+0:22          'color2' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'd' (uniform float)

 0:?     'bigColor' (uniform 4-component vector of float)

diff --git a/Test/baseResults/forLoop.frag.out b/Test/baseResults/forLoop.frag.out
index f91c6cf..8720451 100644
--- a/Test/baseResults/forLoop.frag.out
+++ b/Test/baseResults/forLoop.frag.out
@@ -2,98 +2,98 @@
 

 Shader version: 130

 0:? Sequence

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:12    Sequence

 0:12      Sequence

-0:12        move second child to first child (4-component vector of float)

-0:12          'color' (4-component vector of float)

+0:12        move second child to first child (temp 4-component vector of float)

+0:12          'color' (temp 4-component vector of float)

 0:12          'BaseColor' (smooth in 4-component vector of float)

 0:14      Sequence

 0:14        Sequence

-0:14          move second child to first child (int)

-0:14            'i' (int)

+0:14          move second child to first child (temp int)

+0:14            'i' (temp int)

 0:14            Constant:

 0:14              0 (const int)

 0:14        Loop with condition tested first

 0:14          Loop Condition

-0:14          Compare Less Than (bool)

-0:14            'i' (int)

+0:14          Compare Less Than (temp bool)

+0:14            'i' (temp int)

 0:14            'Count' (uniform int)

 0:14          Loop Body

 0:15          Sequence

-0:15            add second child into first child (4-component vector of float)

-0:15              'color' (4-component vector of float)

+0:15            add second child into first child (temp 4-component vector of float)

+0:15              'color' (temp 4-component vector of float)

 0:15              'bigColor' (uniform 4-component vector of float)

 0:14          Loop Terminal Expression

-0:14          Pre-Increment (int)

-0:14            'i' (int)

-0:18      move second child to first child (4-component vector of float)

+0:14          Pre-Increment (temp int)

+0:14            'i' (temp int)

+0:18      move second child to first child (temp 4-component vector of float)

 0:18        'gl_FragColor' (fragColor 4-component vector of float)

-0:18        'color' (4-component vector of float)

+0:18        'color' (temp 4-component vector of float)

 0:20      Sequence

-0:20        move second child to first child (float)

-0:20          'sum' (float)

+0:20        move second child to first child (temp float)

+0:20          'sum' (temp float)

 0:20          Constant:

 0:20            0.000000

 0:21      Sequence

 0:21        Sequence

-0:21          move second child to first child (int)

-0:21            'i' (int)

+0:21          move second child to first child (temp int)

+0:21            'i' (temp int)

 0:21            Constant:

 0:21              0 (const int)

 0:21        Loop with condition tested first

 0:21          Loop Condition

-0:21          Compare Less Than (bool)

-0:21            'i' (int)

+0:21          Compare Less Than (temp bool)

+0:21            'i' (temp int)

 0:21            Constant:

 0:21              4 (const int)

 0:21          Loop Body

-0:22          add second child into first child (float)

-0:22            'sum' (float)

-0:22            Convert uint to float (float)

-0:22              indirect index (uint)

+0:22          add second child into first child (temp float)

+0:22            'sum' (temp float)

+0:22            Convert uint to float (temp float)

+0:22              indirect index (temp uint)

 0:22                'v4' (uniform 4-component vector of uint)

-0:22                'i' (int)

+0:22                'i' (temp int)

 0:21          Loop Terminal Expression

-0:21          Pre-Increment (int)

-0:21            'i' (int)

+0:21          Pre-Increment (temp int)

+0:21            'i' (temp int)

 0:26      Sequence

 0:26        Sequence

-0:26          move second child to first child (int)

-0:26            'i' (int)

+0:26          move second child to first child (temp int)

+0:26            'i' (temp int)

 0:26            Constant:

 0:26              0 (const int)

 0:26        Loop with condition tested first

 0:26          Loop Condition

-0:26          Compare Less Than (bool)

-0:26            'i' (int)

+0:26          Compare Less Than (temp bool)

+0:26            'i' (temp int)

 0:26            Constant:

 0:26              4 (const int)

 0:26          Loop Body

-0:27          move second child to first child (float)

-0:27            indirect index (float)

-0:27              'tv4' (4-component vector of float)

-0:27              'i' (int)

-0:27            Convert uint to float (float)

-0:27              component-wise multiply (uint)

-0:27                indirect index (uint)

+0:27          move second child to first child (temp float)

+0:27            indirect index (temp float)

+0:27              'tv4' (temp 4-component vector of float)

+0:27              'i' (temp int)

+0:27            Convert uint to float (temp float)

+0:27              component-wise multiply (temp uint)

+0:27                indirect index (temp uint)

 0:27                  'v4' (uniform 4-component vector of uint)

-0:27                  'i' (int)

+0:27                  'i' (temp int)

 0:27                Constant:

 0:27                  4 (const uint)

 0:26          Loop Terminal Expression

-0:26          Pre-Increment (int)

-0:26            'i' (int)

-0:29      add second child into first child (4-component vector of float)

+0:26          Pre-Increment (temp int)

+0:26            'i' (temp int)

+0:29      add second child into first child (temp 4-component vector of float)

 0:29        'gl_FragColor' (fragColor 4-component vector of float)

-0:29        add (4-component vector of float)

-0:29          Construct vec4 (4-component vector of float)

-0:29            'sum' (float)

-0:29          'tv4' (4-component vector of float)

-0:32      move second child to first child (3-component vector of float)

-0:32        vector swizzle (3-component vector of float)

-0:32          'r' (4-component vector of float)

+0:29        add (temp 4-component vector of float)

+0:29          Construct vec4 (temp 4-component vector of float)

+0:29            'sum' (temp float)

+0:29          'tv4' (temp 4-component vector of float)

+0:32      move second child to first child (temp 3-component vector of float)

+0:32        vector swizzle (temp 3-component vector of float)

+0:32          'r' (temp 4-component vector of float)

 0:32          Sequence

 0:32            Constant:

 0:32              0 (const int)

@@ -101,7 +101,7 @@
 0:32              1 (const int)

 0:32            Constant:

 0:32              2 (const int)

-0:32        vector swizzle (3-component vector of float)

+0:32        vector swizzle (temp 3-component vector of float)

 0:32          'BaseColor' (smooth in 4-component vector of float)

 0:32          Sequence

 0:32            Constant:

@@ -112,27 +112,27 @@
 0:32              2 (const int)

 0:34      Sequence

 0:34        Sequence

-0:34          move second child to first child (int)

-0:34            'i' (int)

+0:34          move second child to first child (temp int)

+0:34            'i' (temp int)

 0:34            Constant:

 0:34              0 (const int)

 0:34        Loop with condition tested first

 0:34          Loop Condition

-0:34          Compare Less Than (bool)

-0:34            'i' (int)

+0:34          Compare Less Than (temp bool)

+0:34            'i' (temp int)

 0:34            'Count' (uniform int)

 0:34          Loop Body

-0:35          move second child to first child (float)

-0:35            direct index (float)

-0:35              'r' (4-component vector of float)

+0:35          move second child to first child (temp float)

+0:35            direct index (temp float)

+0:35              'r' (temp 4-component vector of float)

 0:35              Constant:

 0:35                3 (const int)

 0:35            'f' (smooth in float)

 0:34          Loop Terminal Expression

-0:34          Pre-Increment (int)

-0:34            'i' (int)

-0:37      add second child into first child (3-component vector of float)

-0:37        vector swizzle (3-component vector of float)

+0:34          Pre-Increment (temp int)

+0:34            'i' (temp int)

+0:37      add second child into first child (temp 3-component vector of float)

+0:37        vector swizzle (temp 3-component vector of float)

 0:37          'gl_FragColor' (fragColor 4-component vector of float)

 0:37          Sequence

 0:37            Constant:

@@ -141,8 +141,8 @@
 0:37              1 (const int)

 0:37            Constant:

 0:37              2 (const int)

-0:37        vector swizzle (3-component vector of float)

-0:37          'r' (4-component vector of float)

+0:37        vector swizzle (temp 3-component vector of float)

+0:37          'r' (temp 4-component vector of float)

 0:37          Sequence

 0:37            Constant:

 0:37              0 (const int)

@@ -152,23 +152,23 @@
 0:37              2 (const int)

 0:39      Sequence

 0:39        Sequence

-0:39          move second child to first child (int)

-0:39            'i' (int)

+0:39          move second child to first child (temp int)

+0:39            'i' (temp int)

 0:39            Constant:

 0:39              0 (const int)

 0:39        Loop with condition tested first

 0:39          Loop Condition

-0:39          Compare Less Than (bool)

-0:39            'i' (int)

+0:39          Compare Less Than (temp bool)

+0:39            'i' (temp int)

 0:39            Constant:

 0:39              16 (const int)

 0:39          Loop Body

-0:40          vector scale second child into first child (4-component vector of float)

+0:40          vector scale second child into first child (temp 4-component vector of float)

 0:40            'gl_FragColor' (fragColor 4-component vector of float)

 0:40            'f' (smooth in float)

 0:39          Loop Terminal Expression

-0:39          add second child into first child (int)

-0:39            'i' (int)

+0:39          add second child into first child (temp int)

+0:39            'i' (temp int)

 0:39            Constant:

 0:39              4 (const int)

 0:?   Linker Objects

@@ -184,98 +184,98 @@
 

 Shader version: 130

 0:? Sequence

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:12    Sequence

 0:12      Sequence

-0:12        move second child to first child (4-component vector of float)

-0:12          'color' (4-component vector of float)

+0:12        move second child to first child (temp 4-component vector of float)

+0:12          'color' (temp 4-component vector of float)

 0:12          'BaseColor' (smooth in 4-component vector of float)

 0:14      Sequence

 0:14        Sequence

-0:14          move second child to first child (int)

-0:14            'i' (int)

+0:14          move second child to first child (temp int)

+0:14            'i' (temp int)

 0:14            Constant:

 0:14              0 (const int)

 0:14        Loop with condition tested first

 0:14          Loop Condition

-0:14          Compare Less Than (bool)

-0:14            'i' (int)

+0:14          Compare Less Than (temp bool)

+0:14            'i' (temp int)

 0:14            'Count' (uniform int)

 0:14          Loop Body

 0:15          Sequence

-0:15            add second child into first child (4-component vector of float)

-0:15              'color' (4-component vector of float)

+0:15            add second child into first child (temp 4-component vector of float)

+0:15              'color' (temp 4-component vector of float)

 0:15              'bigColor' (uniform 4-component vector of float)

 0:14          Loop Terminal Expression

-0:14          Pre-Increment (int)

-0:14            'i' (int)

-0:18      move second child to first child (4-component vector of float)

+0:14          Pre-Increment (temp int)

+0:14            'i' (temp int)

+0:18      move second child to first child (temp 4-component vector of float)

 0:18        'gl_FragColor' (fragColor 4-component vector of float)

-0:18        'color' (4-component vector of float)

+0:18        'color' (temp 4-component vector of float)

 0:20      Sequence

-0:20        move second child to first child (float)

-0:20          'sum' (float)

+0:20        move second child to first child (temp float)

+0:20          'sum' (temp float)

 0:20          Constant:

 0:20            0.000000

 0:21      Sequence

 0:21        Sequence

-0:21          move second child to first child (int)

-0:21            'i' (int)

+0:21          move second child to first child (temp int)

+0:21            'i' (temp int)

 0:21            Constant:

 0:21              0 (const int)

 0:21        Loop with condition tested first

 0:21          Loop Condition

-0:21          Compare Less Than (bool)

-0:21            'i' (int)

+0:21          Compare Less Than (temp bool)

+0:21            'i' (temp int)

 0:21            Constant:

 0:21              4 (const int)

 0:21          Loop Body

-0:22          add second child into first child (float)

-0:22            'sum' (float)

-0:22            Convert uint to float (float)

-0:22              indirect index (uint)

+0:22          add second child into first child (temp float)

+0:22            'sum' (temp float)

+0:22            Convert uint to float (temp float)

+0:22              indirect index (temp uint)

 0:22                'v4' (uniform 4-component vector of uint)

-0:22                'i' (int)

+0:22                'i' (temp int)

 0:21          Loop Terminal Expression

-0:21          Pre-Increment (int)

-0:21            'i' (int)

+0:21          Pre-Increment (temp int)

+0:21            'i' (temp int)

 0:26      Sequence

 0:26        Sequence

-0:26          move second child to first child (int)

-0:26            'i' (int)

+0:26          move second child to first child (temp int)

+0:26            'i' (temp int)

 0:26            Constant:

 0:26              0 (const int)

 0:26        Loop with condition tested first

 0:26          Loop Condition

-0:26          Compare Less Than (bool)

-0:26            'i' (int)

+0:26          Compare Less Than (temp bool)

+0:26            'i' (temp int)

 0:26            Constant:

 0:26              4 (const int)

 0:26          Loop Body

-0:27          move second child to first child (float)

-0:27            indirect index (float)

-0:27              'tv4' (4-component vector of float)

-0:27              'i' (int)

-0:27            Convert uint to float (float)

-0:27              component-wise multiply (uint)

-0:27                indirect index (uint)

+0:27          move second child to first child (temp float)

+0:27            indirect index (temp float)

+0:27              'tv4' (temp 4-component vector of float)

+0:27              'i' (temp int)

+0:27            Convert uint to float (temp float)

+0:27              component-wise multiply (temp uint)

+0:27                indirect index (temp uint)

 0:27                  'v4' (uniform 4-component vector of uint)

-0:27                  'i' (int)

+0:27                  'i' (temp int)

 0:27                Constant:

 0:27                  4 (const uint)

 0:26          Loop Terminal Expression

-0:26          Pre-Increment (int)

-0:26            'i' (int)

-0:29      add second child into first child (4-component vector of float)

+0:26          Pre-Increment (temp int)

+0:26            'i' (temp int)

+0:29      add second child into first child (temp 4-component vector of float)

 0:29        'gl_FragColor' (fragColor 4-component vector of float)

-0:29        add (4-component vector of float)

-0:29          Construct vec4 (4-component vector of float)

-0:29            'sum' (float)

-0:29          'tv4' (4-component vector of float)

-0:32      move second child to first child (3-component vector of float)

-0:32        vector swizzle (3-component vector of float)

-0:32          'r' (4-component vector of float)

+0:29        add (temp 4-component vector of float)

+0:29          Construct vec4 (temp 4-component vector of float)

+0:29            'sum' (temp float)

+0:29          'tv4' (temp 4-component vector of float)

+0:32      move second child to first child (temp 3-component vector of float)

+0:32        vector swizzle (temp 3-component vector of float)

+0:32          'r' (temp 4-component vector of float)

 0:32          Sequence

 0:32            Constant:

 0:32              0 (const int)

@@ -283,7 +283,7 @@
 0:32              1 (const int)

 0:32            Constant:

 0:32              2 (const int)

-0:32        vector swizzle (3-component vector of float)

+0:32        vector swizzle (temp 3-component vector of float)

 0:32          'BaseColor' (smooth in 4-component vector of float)

 0:32          Sequence

 0:32            Constant:

@@ -294,27 +294,27 @@
 0:32              2 (const int)

 0:34      Sequence

 0:34        Sequence

-0:34          move second child to first child (int)

-0:34            'i' (int)

+0:34          move second child to first child (temp int)

+0:34            'i' (temp int)

 0:34            Constant:

 0:34              0 (const int)

 0:34        Loop with condition tested first

 0:34          Loop Condition

-0:34          Compare Less Than (bool)

-0:34            'i' (int)

+0:34          Compare Less Than (temp bool)

+0:34            'i' (temp int)

 0:34            'Count' (uniform int)

 0:34          Loop Body

-0:35          move second child to first child (float)

-0:35            direct index (float)

-0:35              'r' (4-component vector of float)

+0:35          move second child to first child (temp float)

+0:35            direct index (temp float)

+0:35              'r' (temp 4-component vector of float)

 0:35              Constant:

 0:35                3 (const int)

 0:35            'f' (smooth in float)

 0:34          Loop Terminal Expression

-0:34          Pre-Increment (int)

-0:34            'i' (int)

-0:37      add second child into first child (3-component vector of float)

-0:37        vector swizzle (3-component vector of float)

+0:34          Pre-Increment (temp int)

+0:34            'i' (temp int)

+0:37      add second child into first child (temp 3-component vector of float)

+0:37        vector swizzle (temp 3-component vector of float)

 0:37          'gl_FragColor' (fragColor 4-component vector of float)

 0:37          Sequence

 0:37            Constant:

@@ -323,8 +323,8 @@
 0:37              1 (const int)

 0:37            Constant:

 0:37              2 (const int)

-0:37        vector swizzle (3-component vector of float)

-0:37          'r' (4-component vector of float)

+0:37        vector swizzle (temp 3-component vector of float)

+0:37          'r' (temp 4-component vector of float)

 0:37          Sequence

 0:37            Constant:

 0:37              0 (const int)

@@ -334,23 +334,23 @@
 0:37              2 (const int)

 0:39      Sequence

 0:39        Sequence

-0:39          move second child to first child (int)

-0:39            'i' (int)

+0:39          move second child to first child (temp int)

+0:39            'i' (temp int)

 0:39            Constant:

 0:39              0 (const int)

 0:39        Loop with condition tested first

 0:39          Loop Condition

-0:39          Compare Less Than (bool)

-0:39            'i' (int)

+0:39          Compare Less Than (temp bool)

+0:39            'i' (temp int)

 0:39            Constant:

 0:39              16 (const int)

 0:39          Loop Body

-0:40          vector scale second child into first child (4-component vector of float)

+0:40          vector scale second child into first child (temp 4-component vector of float)

 0:40            'gl_FragColor' (fragColor 4-component vector of float)

 0:40            'f' (smooth in float)

 0:39          Loop Terminal Expression

-0:39          add second child into first child (int)

-0:39            'i' (int)

+0:39          add second child into first child (temp int)

+0:39            'i' (temp int)

 0:39            Constant:

 0:39              4 (const int)

 0:?   Linker Objects

diff --git a/Test/baseResults/forwardRef.frag.out b/Test/baseResults/forwardRef.frag.out
index b7f2cc4..7c4c689 100644
--- a/Test/baseResults/forwardRef.frag.out
+++ b/Test/baseResults/forwardRef.frag.out
@@ -2,34 +2,34 @@
 

 Shader version: 110

 0:? Sequence

-0:11  Function Definition: main( (void)

+0:11  Function Definition: main( (global void)

 0:11    Function Parameters: 

 0:13    Sequence

 0:13      Sequence

-0:13        move second child to first child (4-component vector of float)

-0:13          'color' (4-component vector of float)

-0:13          Construct vec4 (4-component vector of float)

-0:13            Function Call: foo(vf4; (float)

+0:13        move second child to first child (temp 4-component vector of float)

+0:13          'color' (temp 4-component vector of float)

+0:13          Construct vec4 (temp 4-component vector of float)

+0:13            Function Call: foo(vf4; (global float)

 0:13              'BaseColor' (smooth in 4-component vector of float)

-0:15      Function Call: bar( (void)

+0:15      Function Call: bar( (global void)

 0:16      Sequence

-0:16        move second child to first child (float)

-0:16          'f' (float)

-0:16          Function Call: unreachableReturn( (float)

-0:18      move second child to first child (4-component vector of float)

+0:16        move second child to first child (temp float)

+0:16          'f' (temp float)

+0:16          Function Call: unreachableReturn( (global float)

+0:18      move second child to first child (temp 4-component vector of float)

 0:18        'gl_FragColor' (fragColor 4-component vector of float)

-0:18        vector-scale (4-component vector of float)

-0:18          'color' (4-component vector of float)

-0:18          'f' (float)

-0:21  Function Definition: bar( (void)

+0:18        vector-scale (temp 4-component vector of float)

+0:18          'color' (temp 4-component vector of float)

+0:18          'f' (temp float)

+0:21  Function Definition: bar( (global void)

 0:21    Function Parameters: 

-0:25  Function Definition: unreachableReturn( (float)

+0:25  Function Definition: unreachableReturn( (global float)

 0:25    Function Parameters: 

 0:27    Sequence

-0:27      Function Call: bar( (void)

-0:28      Test condition and select (void)

+0:27      Function Call: bar( (global void)

+0:28      Test condition and select (temp void)

 0:28        Condition

-0:28        Compare Less Than (bool)

+0:28        Compare Less Than (temp bool)

 0:28          'd' (uniform float)

 0:28          Constant:

 0:28            4.200000

@@ -41,17 +41,17 @@
 0:31        Branch: Return with expression

 0:31          Constant:

 0:31            4.500000

-0:34  Function Definition: foo(vf4; (float)

+0:34  Function Definition: foo(vf4; (global float)

 0:34    Function Parameters: 

 0:34      'bar' (in 4-component vector of float)

 0:36    Sequence

 0:36      Branch: Return with expression

-0:36        add (float)

-0:36          direct index (float)

+0:36        add (temp float)

+0:36          direct index (temp float)

 0:36            'bar' (in 4-component vector of float)

 0:36            Constant:

 0:36              0 (const int)

-0:36          direct index (float)

+0:36          direct index (temp float)

 0:36            'bar' (in 4-component vector of float)

 0:36            Constant:

 0:36              1 (const int)

@@ -66,34 +66,34 @@
 

 Shader version: 110

 0:? Sequence

-0:11  Function Definition: main( (void)

+0:11  Function Definition: main( (global void)

 0:11    Function Parameters: 

 0:13    Sequence

 0:13      Sequence

-0:13        move second child to first child (4-component vector of float)

-0:13          'color' (4-component vector of float)

-0:13          Construct vec4 (4-component vector of float)

-0:13            Function Call: foo(vf4; (float)

+0:13        move second child to first child (temp 4-component vector of float)

+0:13          'color' (temp 4-component vector of float)

+0:13          Construct vec4 (temp 4-component vector of float)

+0:13            Function Call: foo(vf4; (global float)

 0:13              'BaseColor' (smooth in 4-component vector of float)

-0:15      Function Call: bar( (void)

+0:15      Function Call: bar( (global void)

 0:16      Sequence

-0:16        move second child to first child (float)

-0:16          'f' (float)

-0:16          Function Call: unreachableReturn( (float)

-0:18      move second child to first child (4-component vector of float)

+0:16        move second child to first child (temp float)

+0:16          'f' (temp float)

+0:16          Function Call: unreachableReturn( (global float)

+0:18      move second child to first child (temp 4-component vector of float)

 0:18        'gl_FragColor' (fragColor 4-component vector of float)

-0:18        vector-scale (4-component vector of float)

-0:18          'color' (4-component vector of float)

-0:18          'f' (float)

-0:21  Function Definition: bar( (void)

+0:18        vector-scale (temp 4-component vector of float)

+0:18          'color' (temp 4-component vector of float)

+0:18          'f' (temp float)

+0:21  Function Definition: bar( (global void)

 0:21    Function Parameters: 

-0:25  Function Definition: unreachableReturn( (float)

+0:25  Function Definition: unreachableReturn( (global float)

 0:25    Function Parameters: 

 0:27    Sequence

-0:27      Function Call: bar( (void)

-0:28      Test condition and select (void)

+0:27      Function Call: bar( (global void)

+0:28      Test condition and select (temp void)

 0:28        Condition

-0:28        Compare Less Than (bool)

+0:28        Compare Less Than (temp bool)

 0:28          'd' (uniform float)

 0:28          Constant:

 0:28            4.200000

@@ -105,17 +105,17 @@
 0:31        Branch: Return with expression

 0:31          Constant:

 0:31            4.500000

-0:34  Function Definition: foo(vf4; (float)

+0:34  Function Definition: foo(vf4; (global float)

 0:34    Function Parameters: 

 0:34      'bar' (in 4-component vector of float)

 0:36    Sequence

 0:36      Branch: Return with expression

-0:36        add (float)

-0:36          direct index (float)

+0:36        add (temp float)

+0:36          direct index (temp float)

 0:36            'bar' (in 4-component vector of float)

 0:36            Constant:

 0:36              0 (const int)

-0:36          direct index (float)

+0:36          direct index (temp float)

 0:36            'bar' (in 4-component vector of float)

 0:36            Constant:

 0:36              1 (const int)

diff --git a/Test/baseResults/functionCall.frag.out b/Test/baseResults/functionCall.frag.out
index a4ce77b..7e06fb1 100644
--- a/Test/baseResults/functionCall.frag.out
+++ b/Test/baseResults/functionCall.frag.out
@@ -4,32 +4,32 @@
 Shader version: 130

 0:? Sequence

 0:7  Sequence

-0:7    move second child to first child (float)

-0:7      'h' (float)

+0:7    move second child to first child (temp float)

+0:7      'h' (global float)

 0:7      Constant:

 0:7        0.000000

-0:9  Function Definition: foo(vf4; (float)

+0:9  Function Definition: foo(vf4; (global float)

 0:9    Function Parameters: 

 0:9      'bar' (in 4-component vector of float)

 0:11    Sequence

 0:11      Branch: Return with expression

-0:11        add (float)

-0:11          direct index (float)

+0:11        add (temp float)

+0:11          direct index (temp float)

 0:11            'bar' (in 4-component vector of float)

 0:11            Constant:

 0:11              0 (const int)

-0:11          direct index (float)

+0:11          direct index (temp float)

 0:11            'bar' (in 4-component vector of float)

 0:11            Constant:

 0:11              1 (const int)

-0:14  Function Definition: bar( (void)

+0:14  Function Definition: bar( (global void)

 0:14    Function Parameters: 

-0:18  Function Definition: unreachableReturn( (float)

+0:18  Function Definition: unreachableReturn( (global float)

 0:18    Function Parameters: 

 0:20    Sequence

-0:20      Test condition and select (void)

+0:20      Test condition and select (temp void)

 0:20        Condition

-0:20        Compare Less Than (bool)

+0:20        Compare Less Than (temp bool)

 0:20          'd' (uniform float)

 0:20          Constant:

 0:20            4.200000

@@ -41,53 +41,53 @@
 0:23        Branch: Return with expression

 0:23          Constant:

 0:23            4.500000

-0:27  Function Definition: missingReturn( (float)

+0:27  Function Definition: missingReturn( (global float)

 0:27    Function Parameters: 

 0:29    Sequence

-0:29      Test condition and select (void)

+0:29      Test condition and select (temp void)

 0:29        Condition

-0:29        Compare Less Than (bool)

+0:29        Compare Less Than (temp bool)

 0:29          'd' (uniform float)

 0:29          Constant:

 0:29            4.500000

 0:29        true case

 0:30        Sequence

-0:30          move second child to first child (float)

-0:30            'h' (float)

+0:30          move second child to first child (temp float)

+0:30            'h' (global float)

 0:30            'd' (uniform float)

 0:31          Branch: Return with expression

 0:31            Constant:

 0:31              3.900000

-0:35  Function Definition: main( (void)

+0:35  Function Definition: main( (global void)

 0:35    Function Parameters: 

 0:37    Sequence

 0:37      Sequence

-0:37        move second child to first child (4-component vector of float)

-0:37          'color' (4-component vector of float)

-0:37          Construct vec4 (4-component vector of float)

-0:37            Function Call: foo(vf4; (float)

+0:37        move second child to first child (temp 4-component vector of float)

+0:37          'color' (temp 4-component vector of float)

+0:37          Construct vec4 (temp 4-component vector of float)

+0:37            Function Call: foo(vf4; (global float)

 0:37              'BaseColor' (smooth in 4-component vector of float)

-0:39      Function Call: bar( (void)

+0:39      Function Call: bar( (global void)

 0:40      Sequence

-0:40        move second child to first child (float)

-0:40          'f' (float)

-0:40          Function Call: unreachableReturn( (float)

+0:40        move second child to first child (temp float)

+0:40          'f' (temp float)

+0:40          Function Call: unreachableReturn( (global float)

 0:41      Sequence

-0:41        move second child to first child (float)

-0:41          'g' (float)

-0:41          Function Call: missingReturn( (float)

-0:43      move second child to first child (4-component vector of float)

+0:41        move second child to first child (temp float)

+0:41          'g' (temp float)

+0:41          Function Call: missingReturn( (global float)

+0:43      move second child to first child (temp 4-component vector of float)

 0:43        'gl_FragColor' (fragColor 4-component vector of float)

-0:43        vector-scale (4-component vector of float)

-0:43          vector-scale (4-component vector of float)

-0:43            'color' (4-component vector of float)

-0:43            'f' (float)

-0:43          'h' (float)

+0:43        vector-scale (temp 4-component vector of float)

+0:43          vector-scale (temp 4-component vector of float)

+0:43            'color' (temp 4-component vector of float)

+0:43            'f' (temp float)

+0:43          'h' (global float)

 0:?   Linker Objects

 0:?     'bigColor' (uniform 4-component vector of float)

 0:?     'BaseColor' (smooth in 4-component vector of float)

 0:?     'd' (uniform float)

-0:?     'h' (float)

+0:?     'h' (global float)

 

 

 Linked fragment stage:

@@ -96,32 +96,32 @@
 Shader version: 130

 0:? Sequence

 0:7  Sequence

-0:7    move second child to first child (float)

-0:7      'h' (float)

+0:7    move second child to first child (temp float)

+0:7      'h' (global float)

 0:7      Constant:

 0:7        0.000000

-0:9  Function Definition: foo(vf4; (float)

+0:9  Function Definition: foo(vf4; (global float)

 0:9    Function Parameters: 

 0:9      'bar' (in 4-component vector of float)

 0:11    Sequence

 0:11      Branch: Return with expression

-0:11        add (float)

-0:11          direct index (float)

+0:11        add (temp float)

+0:11          direct index (temp float)

 0:11            'bar' (in 4-component vector of float)

 0:11            Constant:

 0:11              0 (const int)

-0:11          direct index (float)

+0:11          direct index (temp float)

 0:11            'bar' (in 4-component vector of float)

 0:11            Constant:

 0:11              1 (const int)

-0:14  Function Definition: bar( (void)

+0:14  Function Definition: bar( (global void)

 0:14    Function Parameters: 

-0:18  Function Definition: unreachableReturn( (float)

+0:18  Function Definition: unreachableReturn( (global float)

 0:18    Function Parameters: 

 0:20    Sequence

-0:20      Test condition and select (void)

+0:20      Test condition and select (temp void)

 0:20        Condition

-0:20        Compare Less Than (bool)

+0:20        Compare Less Than (temp bool)

 0:20          'd' (uniform float)

 0:20          Constant:

 0:20            4.200000

@@ -133,51 +133,51 @@
 0:23        Branch: Return with expression

 0:23          Constant:

 0:23            4.500000

-0:27  Function Definition: missingReturn( (float)

+0:27  Function Definition: missingReturn( (global float)

 0:27    Function Parameters: 

 0:29    Sequence

-0:29      Test condition and select (void)

+0:29      Test condition and select (temp void)

 0:29        Condition

-0:29        Compare Less Than (bool)

+0:29        Compare Less Than (temp bool)

 0:29          'd' (uniform float)

 0:29          Constant:

 0:29            4.500000

 0:29        true case

 0:30        Sequence

-0:30          move second child to first child (float)

-0:30            'h' (float)

+0:30          move second child to first child (temp float)

+0:30            'h' (global float)

 0:30            'd' (uniform float)

 0:31          Branch: Return with expression

 0:31            Constant:

 0:31              3.900000

-0:35  Function Definition: main( (void)

+0:35  Function Definition: main( (global void)

 0:35    Function Parameters: 

 0:37    Sequence

 0:37      Sequence

-0:37        move second child to first child (4-component vector of float)

-0:37          'color' (4-component vector of float)

-0:37          Construct vec4 (4-component vector of float)

-0:37            Function Call: foo(vf4; (float)

+0:37        move second child to first child (temp 4-component vector of float)

+0:37          'color' (temp 4-component vector of float)

+0:37          Construct vec4 (temp 4-component vector of float)

+0:37            Function Call: foo(vf4; (global float)

 0:37              'BaseColor' (smooth in 4-component vector of float)

-0:39      Function Call: bar( (void)

+0:39      Function Call: bar( (global void)

 0:40      Sequence

-0:40        move second child to first child (float)

-0:40          'f' (float)

-0:40          Function Call: unreachableReturn( (float)

+0:40        move second child to first child (temp float)

+0:40          'f' (temp float)

+0:40          Function Call: unreachableReturn( (global float)

 0:41      Sequence

-0:41        move second child to first child (float)

-0:41          'g' (float)

-0:41          Function Call: missingReturn( (float)

-0:43      move second child to first child (4-component vector of float)

+0:41        move second child to first child (temp float)

+0:41          'g' (temp float)

+0:41          Function Call: missingReturn( (global float)

+0:43      move second child to first child (temp 4-component vector of float)

 0:43        'gl_FragColor' (fragColor 4-component vector of float)

-0:43        vector-scale (4-component vector of float)

-0:43          vector-scale (4-component vector of float)

-0:43            'color' (4-component vector of float)

-0:43            'f' (float)

-0:43          'h' (float)

+0:43        vector-scale (temp 4-component vector of float)

+0:43          vector-scale (temp 4-component vector of float)

+0:43            'color' (temp 4-component vector of float)

+0:43            'f' (temp float)

+0:43          'h' (global float)

 0:?   Linker Objects

 0:?     'bigColor' (uniform 4-component vector of float)

 0:?     'BaseColor' (smooth in 4-component vector of float)

 0:?     'd' (uniform float)

-0:?     'h' (float)

+0:?     'h' (global float)

 

diff --git a/Test/baseResults/functionSemantics.frag.out b/Test/baseResults/functionSemantics.frag.out
index eff0a02..f569fd9 100644
--- a/Test/baseResults/functionSemantics.frag.out
+++ b/Test/baseResults/functionSemantics.frag.out
@@ -3,7 +3,7 @@
 

 Shader version: 400

 0:? Sequence

-0:5  Function Definition: foo(i1;i1;i1;i1;i1;i1; (int)

+0:5  Function Definition: foo(i1;i1;i1;i1;i1;i1; (global int)

 0:5    Function Parameters: 

 0:5      'a' (in int)

 0:5      'b' (const (read only) int)

@@ -13,82 +13,82 @@
 0:5      'f' (inout int)

 0:7    Sequence

 0:7      Sequence

-0:7        move second child to first child (int)

-0:7          'sum' (int)

-0:7          add (int)

-0:7            add (int)

-0:7              add (int)

-0:7                add (int)

+0:7        move second child to first child (temp int)

+0:7          'sum' (temp int)

+0:7          add (temp int)

+0:7            add (temp int)

+0:7              add (temp int)

+0:7                add (temp int)

 0:7                  'a' (in int)

 0:7                  'b' (const (read only) int)

 0:7                'c' (in int)

 0:7              'd' (const (read only) int)

 0:7            'f' (inout int)

-0:10      multiply second child into first child (int)

+0:10      multiply second child into first child (temp int)

 0:10        'a' (in int)

 0:10        Constant:

 0:10          64 (const int)

-0:12      multiply second child into first child (int)

+0:12      multiply second child into first child (temp int)

 0:12        'c' (in int)

 0:12        Constant:

 0:12          64 (const int)

-0:14      move second child to first child (int)

+0:14      move second child to first child (temp int)

 0:14        'e' (out int)

 0:14        Constant:

 0:14          1024 (const int)

-0:15      multiply second child into first child (int)

+0:15      multiply second child into first child (temp int)

 0:15        'f' (inout int)

 0:15        Constant:

 0:15          64 (const int)

-0:17      add second child into first child (int)

-0:17        'sum' (int)

-0:17        add (int)

-0:17          add (int)

-0:17            add (int)

-0:17              add (int)

-0:17                add (int)

+0:17      add second child into first child (temp int)

+0:17        'sum' (temp int)

+0:17        add (temp int)

+0:17          add (temp int)

+0:17            add (temp int)

+0:17              add (temp int)

+0:17                add (temp int)

 0:17                  'a' (in int)

-0:17                  component-wise multiply (int)

+0:17                  component-wise multiply (temp int)

 0:17                    Constant:

 0:17                      64 (const int)

 0:17                    'b' (const (read only) int)

 0:17                'c' (in int)

-0:17              component-wise multiply (int)

+0:17              component-wise multiply (temp int)

 0:17                Constant:

 0:17                  64 (const int)

 0:17                'd' (const (read only) int)

 0:17            'e' (out int)

 0:17          'f' (inout int)

 0:20      Branch: Return with expression

-0:20        'sum' (int)

-0:23  Function Definition: foo2(f1;vf3;i1; (int)

+0:20        'sum' (temp int)

+0:23  Function Definition: foo2(f1;vf3;i1; (global int)

 0:23    Function Parameters: 

 0:23      'a' (in float)

 0:23      'b' (in 3-component vector of float)

 0:23      'r' (out int)

 0:25    Sequence

-0:25      move second child to first child (int)

+0:25      move second child to first child (temp int)

 0:25        'r' (out int)

-0:25        Convert float to int (int)

-0:25          component-wise multiply (float)

+0:25        Convert float to int (temp int)

+0:25          component-wise multiply (temp float)

 0:25            Constant:

 0:25              3.000000

 0:25            'a' (in float)

 0:26      Branch: Return with expression

-0:26        Convert float to int (int)

-0:26          component-wise multiply (float)

+0:26        Convert float to int (temp int)

+0:26          component-wise multiply (temp float)

 0:26            Constant:

 0:26              5.000000

-0:26            direct index (float)

+0:26            direct index (temp float)

 0:26              'b' (in 3-component vector of float)

 0:26              Constant:

 0:26                1 (const int)

-0:29  Function Definition: foo3( (int)

+0:29  Function Definition: foo3( (global int)

 0:29    Function Parameters: 

 0:31    Sequence

-0:31      Test condition and select (void)

+0:31      Test condition and select (temp void)

 0:31        Condition

-0:31        Compare Greater Than (bool)

+0:31        Compare Greater Than (temp bool)

 0:31          'u' (uniform float)

 0:31          Constant:

 0:31            3.200000

@@ -101,18 +101,18 @@
 0:36      Branch: Return with expression

 0:36        Constant:

 0:36          2000000 (const int)

-0:39  Function Definition: main( (void)

+0:39  Function Definition: main( (global void)

 0:39    Function Parameters: 

 0:?     Sequence

 0:42      Sequence

-0:42        move second child to first child (int)

-0:42          't' (int)

+0:42        move second child to first child (temp int)

+0:42          't' (temp int)

 0:42          Constant:

 0:42            2 (const int)

-0:46      move second child to first child (int)

-0:46        direct index (int)

-0:46          t: direct index for structure (4-component vector of int)

-0:46            'f' (structure{4-component vector of int t})

+0:46      move second child to first child (temp int)

+0:46        direct index (temp int)

+0:46          t: direct index for structure (temp 4-component vector of int)

+0:46            'f' (temp structure{temp 4-component vector of int t})

 0:46            Constant:

 0:46              0 (const int)

 0:46          Constant:

@@ -120,73 +120,73 @@
 0:46        Constant:

 0:46          32 (const int)

 0:49      Sequence

-0:49        move second child to first child (int)

-0:49          'color' (int)

-0:49          Function Call: foo(i1;i1;i1;i1;i1;i1; (int)

+0:49        move second child to first child (temp int)

+0:49          'color' (temp int)

+0:49          Function Call: foo(i1;i1;i1;i1;i1;i1; (global int)

 0:49            Constant:

 0:49              1 (const int)

 0:49            Constant:

 0:49              2 (const int)

-0:49            add (int)

-0:49              't' (int)

-0:49              't' (int)

+0:49            add (temp int)

+0:49              't' (temp int)

+0:49              't' (temp int)

 0:49            Constant:

 0:49              8 (const int)

-0:49            'e' (int)

-0:49            direct index (int)

-0:49              t: direct index for structure (4-component vector of int)

-0:49                'f' (structure{4-component vector of int t})

+0:49            'e' (temp int)

+0:49            direct index (temp int)

+0:49              t: direct index for structure (temp 4-component vector of int)

+0:49                'f' (temp structure{temp 4-component vector of int t})

 0:49                Constant:

 0:49                  0 (const int)

 0:49              Constant:

 0:49                1 (const int)

-0:51      add second child into first child (int)

-0:51        'color' (int)

-0:51        component-wise multiply (int)

+0:51      add second child into first child (temp int)

+0:51        'color' (temp int)

+0:51        component-wise multiply (temp int)

 0:51          Constant:

 0:51            128 (const int)

-0:51          add (int)

-0:51            'e' (int)

-0:51            direct index (int)

-0:51              t: direct index for structure (4-component vector of int)

-0:51                'f' (structure{4-component vector of int t})

+0:51          add (temp int)

+0:51            'e' (temp int)

+0:51            direct index (temp int)

+0:51              t: direct index for structure (temp 4-component vector of int)

+0:51                'f' (temp structure{temp 4-component vector of int t})

 0:51                Constant:

 0:51                  0 (const int)

 0:51              Constant:

 0:51                1 (const int)

-0:57      move second child to first child (float)

-0:57        'ret' (float)

-0:57        Convert int to float (float)

-0:57          Comma (int)

-0:57            move second child to first child (int)

-0:57              'tempReturn' (int)

-0:57              Function Call: foo2(f1;vf3;i1; (int)

+0:57      move second child to first child (temp float)

+0:57        'ret' (temp float)

+0:57        Convert int to float (temp float)

+0:57          Comma (global int)

+0:57            move second child to first child (temp int)

+0:57              'tempReturn' (global int)

+0:57              Function Call: foo2(f1;vf3;i1; (global int)

 0:57                Constant:

 0:57                  4.000000

 0:57                Constant:

 0:57                  1.000000

 0:57                  2.000000

 0:57                  3.000000

-0:57                'tempArg' (int)

-0:57            move second child to first child (float)

-0:57              'arg' (float)

-0:57              Convert int to float (float)

-0:57                'tempArg' (int)

-0:57            'tempReturn' (int)

-0:58      add second child into first child (int)

-0:58        'color' (int)

-0:58        Convert float to int (int)

-0:58          add (float)

-0:58            'ret' (float)

-0:58            'arg' (float)

-0:60      add second child into first child (int)

-0:60        'color' (int)

-0:60        Function Call: foo3( (int)

-0:62      move second child to first child (4-component vector of float)

+0:57                'tempArg' (temp int)

+0:57            move second child to first child (temp float)

+0:57              'arg' (temp float)

+0:57              Convert int to float (temp float)

+0:57                'tempArg' (temp int)

+0:57            'tempReturn' (global int)

+0:58      add second child into first child (temp int)

+0:58        'color' (temp int)

+0:58        Convert float to int (temp int)

+0:58          add (temp float)

+0:58            'ret' (temp float)

+0:58            'arg' (temp float)

+0:60      add second child into first child (temp int)

+0:60        'color' (temp int)

+0:60        Function Call: foo3( (global int)

+0:62      move second child to first child (temp 4-component vector of float)

 0:62        'gl_FragColor' (fragColor 4-component vector of float)

-0:62        Construct vec4 (4-component vector of float)

-0:62          Convert int to float (float)

-0:62            'color' (int)

+0:62        Construct vec4 (temp 4-component vector of float)

+0:62          Convert int to float (temp float)

+0:62            'color' (temp int)

 0:?   Linker Objects

 0:?     'u' (uniform float)

 

@@ -196,7 +196,7 @@
 

 Shader version: 400

 0:? Sequence

-0:5  Function Definition: foo(i1;i1;i1;i1;i1;i1; (int)

+0:5  Function Definition: foo(i1;i1;i1;i1;i1;i1; (global int)

 0:5    Function Parameters: 

 0:5      'a' (in int)

 0:5      'b' (const (read only) int)

@@ -206,82 +206,82 @@
 0:5      'f' (inout int)

 0:7    Sequence

 0:7      Sequence

-0:7        move second child to first child (int)

-0:7          'sum' (int)

-0:7          add (int)

-0:7            add (int)

-0:7              add (int)

-0:7                add (int)

+0:7        move second child to first child (temp int)

+0:7          'sum' (temp int)

+0:7          add (temp int)

+0:7            add (temp int)

+0:7              add (temp int)

+0:7                add (temp int)

 0:7                  'a' (in int)

 0:7                  'b' (const (read only) int)

 0:7                'c' (in int)

 0:7              'd' (const (read only) int)

 0:7            'f' (inout int)

-0:10      multiply second child into first child (int)

+0:10      multiply second child into first child (temp int)

 0:10        'a' (in int)

 0:10        Constant:

 0:10          64 (const int)

-0:12      multiply second child into first child (int)

+0:12      multiply second child into first child (temp int)

 0:12        'c' (in int)

 0:12        Constant:

 0:12          64 (const int)

-0:14      move second child to first child (int)

+0:14      move second child to first child (temp int)

 0:14        'e' (out int)

 0:14        Constant:

 0:14          1024 (const int)

-0:15      multiply second child into first child (int)

+0:15      multiply second child into first child (temp int)

 0:15        'f' (inout int)

 0:15        Constant:

 0:15          64 (const int)

-0:17      add second child into first child (int)

-0:17        'sum' (int)

-0:17        add (int)

-0:17          add (int)

-0:17            add (int)

-0:17              add (int)

-0:17                add (int)

+0:17      add second child into first child (temp int)

+0:17        'sum' (temp int)

+0:17        add (temp int)

+0:17          add (temp int)

+0:17            add (temp int)

+0:17              add (temp int)

+0:17                add (temp int)

 0:17                  'a' (in int)

-0:17                  component-wise multiply (int)

+0:17                  component-wise multiply (temp int)

 0:17                    Constant:

 0:17                      64 (const int)

 0:17                    'b' (const (read only) int)

 0:17                'c' (in int)

-0:17              component-wise multiply (int)

+0:17              component-wise multiply (temp int)

 0:17                Constant:

 0:17                  64 (const int)

 0:17                'd' (const (read only) int)

 0:17            'e' (out int)

 0:17          'f' (inout int)

 0:20      Branch: Return with expression

-0:20        'sum' (int)

-0:23  Function Definition: foo2(f1;vf3;i1; (int)

+0:20        'sum' (temp int)

+0:23  Function Definition: foo2(f1;vf3;i1; (global int)

 0:23    Function Parameters: 

 0:23      'a' (in float)

 0:23      'b' (in 3-component vector of float)

 0:23      'r' (out int)

 0:25    Sequence

-0:25      move second child to first child (int)

+0:25      move second child to first child (temp int)

 0:25        'r' (out int)

-0:25        Convert float to int (int)

-0:25          component-wise multiply (float)

+0:25        Convert float to int (temp int)

+0:25          component-wise multiply (temp float)

 0:25            Constant:

 0:25              3.000000

 0:25            'a' (in float)

 0:26      Branch: Return with expression

-0:26        Convert float to int (int)

-0:26          component-wise multiply (float)

+0:26        Convert float to int (temp int)

+0:26          component-wise multiply (temp float)

 0:26            Constant:

 0:26              5.000000

-0:26            direct index (float)

+0:26            direct index (temp float)

 0:26              'b' (in 3-component vector of float)

 0:26              Constant:

 0:26                1 (const int)

-0:29  Function Definition: foo3( (int)

+0:29  Function Definition: foo3( (global int)

 0:29    Function Parameters: 

 0:31    Sequence

-0:31      Test condition and select (void)

+0:31      Test condition and select (temp void)

 0:31        Condition

-0:31        Compare Greater Than (bool)

+0:31        Compare Greater Than (temp bool)

 0:31          'u' (uniform float)

 0:31          Constant:

 0:31            3.200000

@@ -294,18 +294,18 @@
 0:36      Branch: Return with expression

 0:36        Constant:

 0:36          2000000 (const int)

-0:39  Function Definition: main( (void)

+0:39  Function Definition: main( (global void)

 0:39    Function Parameters: 

 0:?     Sequence

 0:42      Sequence

-0:42        move second child to first child (int)

-0:42          't' (int)

+0:42        move second child to first child (temp int)

+0:42          't' (temp int)

 0:42          Constant:

 0:42            2 (const int)

-0:46      move second child to first child (int)

-0:46        direct index (int)

-0:46          t: direct index for structure (4-component vector of int)

-0:46            'f' (structure{4-component vector of int t})

+0:46      move second child to first child (temp int)

+0:46        direct index (temp int)

+0:46          t: direct index for structure (temp 4-component vector of int)

+0:46            'f' (temp structure{temp 4-component vector of int t})

 0:46            Constant:

 0:46              0 (const int)

 0:46          Constant:

@@ -313,73 +313,73 @@
 0:46        Constant:

 0:46          32 (const int)

 0:49      Sequence

-0:49        move second child to first child (int)

-0:49          'color' (int)

-0:49          Function Call: foo(i1;i1;i1;i1;i1;i1; (int)

+0:49        move second child to first child (temp int)

+0:49          'color' (temp int)

+0:49          Function Call: foo(i1;i1;i1;i1;i1;i1; (global int)

 0:49            Constant:

 0:49              1 (const int)

 0:49            Constant:

 0:49              2 (const int)

-0:49            add (int)

-0:49              't' (int)

-0:49              't' (int)

+0:49            add (temp int)

+0:49              't' (temp int)

+0:49              't' (temp int)

 0:49            Constant:

 0:49              8 (const int)

-0:49            'e' (int)

-0:49            direct index (int)

-0:49              t: direct index for structure (4-component vector of int)

-0:49                'f' (structure{4-component vector of int t})

+0:49            'e' (temp int)

+0:49            direct index (temp int)

+0:49              t: direct index for structure (temp 4-component vector of int)

+0:49                'f' (temp structure{temp 4-component vector of int t})

 0:49                Constant:

 0:49                  0 (const int)

 0:49              Constant:

 0:49                1 (const int)

-0:51      add second child into first child (int)

-0:51        'color' (int)

-0:51        component-wise multiply (int)

+0:51      add second child into first child (temp int)

+0:51        'color' (temp int)

+0:51        component-wise multiply (temp int)

 0:51          Constant:

 0:51            128 (const int)

-0:51          add (int)

-0:51            'e' (int)

-0:51            direct index (int)

-0:51              t: direct index for structure (4-component vector of int)

-0:51                'f' (structure{4-component vector of int t})

+0:51          add (temp int)

+0:51            'e' (temp int)

+0:51            direct index (temp int)

+0:51              t: direct index for structure (temp 4-component vector of int)

+0:51                'f' (temp structure{temp 4-component vector of int t})

 0:51                Constant:

 0:51                  0 (const int)

 0:51              Constant:

 0:51                1 (const int)

-0:57      move second child to first child (float)

-0:57        'ret' (float)

-0:57        Convert int to float (float)

-0:57          Comma (int)

-0:57            move second child to first child (int)

-0:57              'tempReturn' (int)

-0:57              Function Call: foo2(f1;vf3;i1; (int)

+0:57      move second child to first child (temp float)

+0:57        'ret' (temp float)

+0:57        Convert int to float (temp float)

+0:57          Comma (global int)

+0:57            move second child to first child (temp int)

+0:57              'tempReturn' (global int)

+0:57              Function Call: foo2(f1;vf3;i1; (global int)

 0:57                Constant:

 0:57                  4.000000

 0:57                Constant:

 0:57                  1.000000

 0:57                  2.000000

 0:57                  3.000000

-0:57                'tempArg' (int)

-0:57            move second child to first child (float)

-0:57              'arg' (float)

-0:57              Convert int to float (float)

-0:57                'tempArg' (int)

-0:57            'tempReturn' (int)

-0:58      add second child into first child (int)

-0:58        'color' (int)

-0:58        Convert float to int (int)

-0:58          add (float)

-0:58            'ret' (float)

-0:58            'arg' (float)

-0:60      add second child into first child (int)

-0:60        'color' (int)

-0:60        Function Call: foo3( (int)

-0:62      move second child to first child (4-component vector of float)

+0:57                'tempArg' (temp int)

+0:57            move second child to first child (temp float)

+0:57              'arg' (temp float)

+0:57              Convert int to float (temp float)

+0:57                'tempArg' (temp int)

+0:57            'tempReturn' (global int)

+0:58      add second child into first child (temp int)

+0:58        'color' (temp int)

+0:58        Convert float to int (temp int)

+0:58          add (temp float)

+0:58            'ret' (temp float)

+0:58            'arg' (temp float)

+0:60      add second child into first child (temp int)

+0:60        'color' (temp int)

+0:60        Function Call: foo3( (global int)

+0:62      move second child to first child (temp 4-component vector of float)

 0:62        'gl_FragColor' (fragColor 4-component vector of float)

-0:62        Construct vec4 (4-component vector of float)

-0:62          Convert int to float (float)

-0:62            'color' (int)

+0:62        Construct vec4 (temp 4-component vector of float)

+0:62          Convert int to float (temp float)

+0:62            'color' (temp int)

 0:?   Linker Objects

 0:?     'u' (uniform float)

 

diff --git a/Test/baseResults/length.frag.out b/Test/baseResults/length.frag.out
index 3df41ba..be0b19c 100644
--- a/Test/baseResults/length.frag.out
+++ b/Test/baseResults/length.frag.out
@@ -2,22 +2,22 @@
 

 Shader version: 120

 0:? Sequence

-0:11  Function Definition: main( (void)

+0:11  Function Definition: main( (global void)

 0:11    Function Parameters: 

 0:?     Sequence

 0:15      Sequence

-0:15        move second child to first child (2-component vector of float)

-0:15          't' (2-component vector of float)

-0:15          add (2-component vector of float)

-0:15            direct index (smooth 2-component vector of float)

+0:15        move second child to first child (temp 2-component vector of float)

+0:15          't' (temp 2-component vector of float)

+0:15          add (temp 2-component vector of float)

+0:15            direct index (smooth temp 2-component vector of float)

 0:15              'v' (smooth in 2-element array of 2-component vector of float)

 0:15              Constant:

 0:15                0 (const int)

-0:15            direct index (smooth 2-component vector of float)

+0:15            direct index (smooth temp 2-component vector of float)

 0:15              'v' (smooth in 2-element array of 2-component vector of float)

 0:15              Constant:

 0:15                1 (const int)

-0:17      move second child to first child (4-component vector of float)

+0:17      move second child to first child (temp 4-component vector of float)

 0:17        'gl_FragColor' (fragColor 4-component vector of float)

 0:17        Constant:

 0:17          30.000000

@@ -34,22 +34,22 @@
 

 Shader version: 120

 0:? Sequence

-0:11  Function Definition: main( (void)

+0:11  Function Definition: main( (global void)

 0:11    Function Parameters: 

 0:?     Sequence

 0:15      Sequence

-0:15        move second child to first child (2-component vector of float)

-0:15          't' (2-component vector of float)

-0:15          add (2-component vector of float)

-0:15            direct index (smooth 2-component vector of float)

+0:15        move second child to first child (temp 2-component vector of float)

+0:15          't' (temp 2-component vector of float)

+0:15          add (temp 2-component vector of float)

+0:15            direct index (smooth temp 2-component vector of float)

 0:15              'v' (smooth in 2-element array of 2-component vector of float)

 0:15              Constant:

 0:15                0 (const int)

-0:15            direct index (smooth 2-component vector of float)

+0:15            direct index (smooth temp 2-component vector of float)

 0:15              'v' (smooth in 2-element array of 2-component vector of float)

 0:15              Constant:

 0:15                1 (const int)

-0:17      move second child to first child (4-component vector of float)

+0:17      move second child to first child (temp 4-component vector of float)

 0:17        'gl_FragColor' (fragColor 4-component vector of float)

 0:17        Constant:

 0:17          30.000000

diff --git a/Test/baseResults/lineContinuation.vert.out b/Test/baseResults/lineContinuation.vert.out
index dd718d8..d6e5147 100644
--- a/Test/baseResults/lineContinuation.vert.out
+++ b/Test/baseResults/lineContinuation.vert.out
@@ -25,163 +25,163 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:20  Function Definition: main( (void)

+0:20  Function Definition: main( (global void)

 0:20    Function Parameters: 

 0:20    Sequence

-0:20      move second child to first child (highp 4-component vector of float)

+0:20      move second child to first child (temp highp 4-component vector of float)

 0:20        'gl_Position' (gl_Position highp 4-component vector of float)

-0:20        Construct vec4 (highp 4-component vector of float)

-0:20          'foo' (highp float)

-0:22  Function Definition: foo2(vf4; (highp 4-component vector of float)

+0:20        Construct vec4 (temp highp 4-component vector of float)

+0:20          'foo' (global highp float)

+0:22  Function Definition: foo2(vf4; (global highp 4-component vector of float)

 0:22    Function Parameters: 

 0:22      'a' (in highp 4-component vector of float)

 0:24    Sequence

 0:24      Sequence

-0:24        move second child to first child (highp 4-component vector of float)

-0:24          'b' (highp 4-component vector of float)

+0:24        move second child to first child (temp highp 4-component vector of float)

+0:24          'b' (temp highp 4-component vector of float)

 0:24          'a' (in highp 4-component vector of float)

 0:25      Branch: Return with expression

-0:25        'b' (highp 4-component vector of float)

+0:25        'b' (temp highp 4-component vector of float)

 0:42  Sequence

-0:42    move second child to first child (highp int)

-0:42      'a1' (highp int)

+0:42    move second child to first child (temp highp int)

+0:42      'a1' (global highp int)

 0:42      Constant:

 0:42        4 (const int)

 0:43  Sequence

-0:43    move second child to first child (highp int)

-0:43      'a2' (highp int)

+0:43    move second child to first child (temp highp int)

+0:43      'a2' (global highp int)

 0:43      Constant:

 0:43        3 (const int)

 0:44  Sequence

-0:44    move second child to first child (highp int)

-0:44      'a3' (highp int)

+0:44    move second child to first child (temp highp int)

+0:44      'a3' (global highp int)

 0:44      Constant:

 0:44        4 (const int)

 0:45  Sequence

-0:45    move second child to first child (highp int)

-0:45      'a4' (highp int)

-0:45      'a2' (highp int)

+0:45    move second child to first child (temp highp int)

+0:45      'a4' (global highp int)

+0:45      'a2' (global highp int)

 0:47  Sequence

-0:47    move second child to first child (highp int)

-0:47      'q1' (highp int)

+0:47    move second child to first child (temp highp int)

+0:47      'q1' (global highp int)

 0:47      Constant:

 0:47        1 (const int)

 0:48  Sequence

-0:48    move second child to first child (highp int)

-0:48      'q2' (highp int)

+0:48    move second child to first child (temp highp int)

+0:48      'q2' (global highp int)

 0:48      Constant:

 0:48        1 (const int)

 0:49  Sequence

-0:49    move second child to first child (highp int)

-0:49      'q3' (highp int)

+0:49    move second child to first child (temp highp int)

+0:49      'q3' (global highp int)

 0:49      Constant:

 0:49        1 (const int)

 0:50  Sequence

-0:50    move second child to first child (highp int)

-0:50      'q4' (highp int)

+0:50    move second child to first child (temp highp int)

+0:50      'q4' (global highp int)

 0:50      Constant:

 0:50        1 (const int)

 0:65  Sequence

-0:65    move second child to first child (highp int)

-0:65      'abdece' (highp int)

+0:65    move second child to first child (temp highp int)

+0:65      'abdece' (global highp int)

 0:65      Constant:

 0:65        10 (const int)

 0:66  Sequence

-0:66    move second child to first child (highp int)

-0:66      'aoeuntaoehu' (highp int)

-0:66      'abdece' (highp int)

+0:66    move second child to first child (temp highp int)

+0:66      'aoeuntaoehu' (global highp int)

+0:66      'abdece' (global highp int)

 0:74  Sequence

-0:74    move second child to first child (highp float)

-0:74      'funkyf' (highp float)

+0:74    move second child to first child (temp highp float)

+0:74      'funkyf' (global highp float)

 0:75      Constant:

 0:75        12300000000000000.000000

 0:85  Sequence

-0:84    move second child to first child (highp int)

-0:84      'funkyh' (highp int)

+0:84    move second child to first child (temp highp int)

+0:84      'funkyh' (global highp int)

 0:86      Constant:

 0:86        244 (const int)

 0:91  Sequence

-0:91    move second child to first child (highp int)

-0:91      'funkyo' (highp int)

+0:91    move second child to first child (temp highp int)

+0:91      'funkyo' (global highp int)

 0:92      Constant:

 0:92        34 (const int)

 0:96  Sequence

-0:96    move second child to first child (highp int)

-0:96      'c' (highp int)

+0:96    move second child to first child (temp highp int)

+0:96      'c' (global highp int)

 0:97      Constant:

 0:97        11 (const int)

 0:98  Sequence

-0:98    move second child to first child (highp int)

-0:98      'd' (highp int)

+0:98    move second child to first child (temp highp int)

+0:98      'd' (global highp int)

 0:98      Constant:

 0:98        12 (const int)

 0:107  Sequence

-0:107    move second child to first child (highp int)

-0:107      'bar103' (highp int)

+0:107    move second child to first child (temp highp int)

+0:107      'bar103' (global highp int)

 0:107      Constant:

 0:107        17 (const int)

 0:113  Sequence

-0:113    move second child to first child (highp int)

-0:113      'bar104' (highp int)

+0:113    move second child to first child (temp highp int)

+0:113      'bar104' (global highp int)

 0:113      Constant:

 0:113        19 (const int)

 0:119  Sequence

-0:119    move second child to first child (highp int)

-0:119      'bar105' (highp int)

+0:119    move second child to first child (temp highp int)

+0:119      'bar105' (global highp int)

 0:119      Constant:

 0:119        19 (const int)

 0:122  Sequence

-0:122    move second child to first child (highp int)

-0:122      'bar106' (highp int)

+0:122    move second child to first child (temp highp int)

+0:122      'bar106' (global highp int)

 0:122      Constant:

 0:122        12 (const int)

 0:123  Sequence

-0:123    move second child to first child (highp int)

-0:123      'bar107' (highp int)

+0:123    move second child to first child (temp highp int)

+0:123      'bar107' (global highp int)

 0:128      Constant:

 0:128        5 (const int)

-0:131  Function Definition: foo203209409( (void)

+0:131  Function Definition: foo203209409( (global void)

 0:131    Function Parameters: 

 0:134    Sequence

-0:134      add second child into first child (highp int)

-0:133        'bar107' (highp int)

+0:134      add second child into first child (temp highp int)

+0:133        'bar107' (global highp int)

 0:134        Constant:

 0:134          37 (const int)

-0:135      multiply second child into first child (highp int)

-0:135        'bar107' (highp int)

+0:135      multiply second child into first child (temp highp int)

+0:135        'bar107' (global highp int)

 0:136        Constant:

 0:136          38 (const int)

-0:137      divide second child into first child (highp int)

-0:137        'bar107' (highp int)

+0:137      divide second child into first child (temp highp int)

+0:137        'bar107' (global highp int)

 0:138        Constant:

 0:138          39 (const int)

-0:139      add (highp int)

-0:139        'bar107' (highp int)

+0:139      add (temp highp int)

+0:139        'bar107' (global highp int)

 0:140        Constant:

 0:140          41 (const int)

 0:?   Linker Objects

-0:?     'foo' (highp float)

-0:?     'goodDecl' (highp int)

-0:?     'a1' (highp int)

-0:?     'a2' (highp int)

-0:?     'a3' (highp int)

-0:?     'a4' (highp int)

-0:?     'q1' (highp int)

-0:?     'q2' (highp int)

-0:?     'q3' (highp int)

-0:?     'q4' (highp int)

-0:?     'abdece' (highp int)

-0:?     'aoeuntaoehu' (highp int)

-0:?     'funkyf' (highp float)

-0:?     'funkyh' (highp int)

-0:?     'funkyo' (highp int)

-0:?     'c' (highp int)

-0:?     'd' (highp int)

-0:?     'bar103' (highp int)

-0:?     'bar104' (highp int)

-0:?     'bar105' (highp int)

-0:?     'bar106' (highp int)

-0:?     'bar107' (highp int)

+0:?     'foo' (global highp float)

+0:?     'goodDecl' (global highp int)

+0:?     'a1' (global highp int)

+0:?     'a2' (global highp int)

+0:?     'a3' (global highp int)

+0:?     'a4' (global highp int)

+0:?     'q1' (global highp int)

+0:?     'q2' (global highp int)

+0:?     'q3' (global highp int)

+0:?     'q4' (global highp int)

+0:?     'abdece' (global highp int)

+0:?     'aoeuntaoehu' (global highp int)

+0:?     'funkyf' (global highp float)

+0:?     'funkyh' (global highp int)

+0:?     'funkyo' (global highp int)

+0:?     'c' (global highp int)

+0:?     'd' (global highp int)

+0:?     'bar103' (global highp int)

+0:?     'bar104' (global highp int)

+0:?     'bar105' (global highp int)

+0:?     'bar106' (global highp int)

+0:?     'bar107' (global highp int)

 0:?     'gl_VertexID' (gl_VertexId highp int)

 0:?     'gl_InstanceID' (gl_InstanceId highp int)

 

@@ -191,163 +191,163 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:20  Function Definition: main( (void)

+0:20  Function Definition: main( (global void)

 0:20    Function Parameters: 

 0:20    Sequence

-0:20      move second child to first child (highp 4-component vector of float)

+0:20      move second child to first child (temp highp 4-component vector of float)

 0:20        'gl_Position' (gl_Position highp 4-component vector of float)

-0:20        Construct vec4 (highp 4-component vector of float)

-0:20          'foo' (highp float)

-0:22  Function Definition: foo2(vf4; (highp 4-component vector of float)

+0:20        Construct vec4 (temp highp 4-component vector of float)

+0:20          'foo' (global highp float)

+0:22  Function Definition: foo2(vf4; (global highp 4-component vector of float)

 0:22    Function Parameters: 

 0:22      'a' (in highp 4-component vector of float)

 0:24    Sequence

 0:24      Sequence

-0:24        move second child to first child (highp 4-component vector of float)

-0:24          'b' (highp 4-component vector of float)

+0:24        move second child to first child (temp highp 4-component vector of float)

+0:24          'b' (temp highp 4-component vector of float)

 0:24          'a' (in highp 4-component vector of float)

 0:25      Branch: Return with expression

-0:25        'b' (highp 4-component vector of float)

+0:25        'b' (temp highp 4-component vector of float)

 0:42  Sequence

-0:42    move second child to first child (highp int)

-0:42      'a1' (highp int)

+0:42    move second child to first child (temp highp int)

+0:42      'a1' (global highp int)

 0:42      Constant:

 0:42        4 (const int)

 0:43  Sequence

-0:43    move second child to first child (highp int)

-0:43      'a2' (highp int)

+0:43    move second child to first child (temp highp int)

+0:43      'a2' (global highp int)

 0:43      Constant:

 0:43        3 (const int)

 0:44  Sequence

-0:44    move second child to first child (highp int)

-0:44      'a3' (highp int)

+0:44    move second child to first child (temp highp int)

+0:44      'a3' (global highp int)

 0:44      Constant:

 0:44        4 (const int)

 0:45  Sequence

-0:45    move second child to first child (highp int)

-0:45      'a4' (highp int)

-0:45      'a2' (highp int)

+0:45    move second child to first child (temp highp int)

+0:45      'a4' (global highp int)

+0:45      'a2' (global highp int)

 0:47  Sequence

-0:47    move second child to first child (highp int)

-0:47      'q1' (highp int)

+0:47    move second child to first child (temp highp int)

+0:47      'q1' (global highp int)

 0:47      Constant:

 0:47        1 (const int)

 0:48  Sequence

-0:48    move second child to first child (highp int)

-0:48      'q2' (highp int)

+0:48    move second child to first child (temp highp int)

+0:48      'q2' (global highp int)

 0:48      Constant:

 0:48        1 (const int)

 0:49  Sequence

-0:49    move second child to first child (highp int)

-0:49      'q3' (highp int)

+0:49    move second child to first child (temp highp int)

+0:49      'q3' (global highp int)

 0:49      Constant:

 0:49        1 (const int)

 0:50  Sequence

-0:50    move second child to first child (highp int)

-0:50      'q4' (highp int)

+0:50    move second child to first child (temp highp int)

+0:50      'q4' (global highp int)

 0:50      Constant:

 0:50        1 (const int)

 0:65  Sequence

-0:65    move second child to first child (highp int)

-0:65      'abdece' (highp int)

+0:65    move second child to first child (temp highp int)

+0:65      'abdece' (global highp int)

 0:65      Constant:

 0:65        10 (const int)

 0:66  Sequence

-0:66    move second child to first child (highp int)

-0:66      'aoeuntaoehu' (highp int)

-0:66      'abdece' (highp int)

+0:66    move second child to first child (temp highp int)

+0:66      'aoeuntaoehu' (global highp int)

+0:66      'abdece' (global highp int)

 0:74  Sequence

-0:74    move second child to first child (highp float)

-0:74      'funkyf' (highp float)

+0:74    move second child to first child (temp highp float)

+0:74      'funkyf' (global highp float)

 0:75      Constant:

 0:75        12300000000000000.000000

 0:85  Sequence

-0:84    move second child to first child (highp int)

-0:84      'funkyh' (highp int)

+0:84    move second child to first child (temp highp int)

+0:84      'funkyh' (global highp int)

 0:86      Constant:

 0:86        244 (const int)

 0:91  Sequence

-0:91    move second child to first child (highp int)

-0:91      'funkyo' (highp int)

+0:91    move second child to first child (temp highp int)

+0:91      'funkyo' (global highp int)

 0:92      Constant:

 0:92        34 (const int)

 0:96  Sequence

-0:96    move second child to first child (highp int)

-0:96      'c' (highp int)

+0:96    move second child to first child (temp highp int)

+0:96      'c' (global highp int)

 0:97      Constant:

 0:97        11 (const int)

 0:98  Sequence

-0:98    move second child to first child (highp int)

-0:98      'd' (highp int)

+0:98    move second child to first child (temp highp int)

+0:98      'd' (global highp int)

 0:98      Constant:

 0:98        12 (const int)

 0:107  Sequence

-0:107    move second child to first child (highp int)

-0:107      'bar103' (highp int)

+0:107    move second child to first child (temp highp int)

+0:107      'bar103' (global highp int)

 0:107      Constant:

 0:107        17 (const int)

 0:113  Sequence

-0:113    move second child to first child (highp int)

-0:113      'bar104' (highp int)

+0:113    move second child to first child (temp highp int)

+0:113      'bar104' (global highp int)

 0:113      Constant:

 0:113        19 (const int)

 0:119  Sequence

-0:119    move second child to first child (highp int)

-0:119      'bar105' (highp int)

+0:119    move second child to first child (temp highp int)

+0:119      'bar105' (global highp int)

 0:119      Constant:

 0:119        19 (const int)

 0:122  Sequence

-0:122    move second child to first child (highp int)

-0:122      'bar106' (highp int)

+0:122    move second child to first child (temp highp int)

+0:122      'bar106' (global highp int)

 0:122      Constant:

 0:122        12 (const int)

 0:123  Sequence

-0:123    move second child to first child (highp int)

-0:123      'bar107' (highp int)

+0:123    move second child to first child (temp highp int)

+0:123      'bar107' (global highp int)

 0:128      Constant:

 0:128        5 (const int)

-0:131  Function Definition: foo203209409( (void)

+0:131  Function Definition: foo203209409( (global void)

 0:131    Function Parameters: 

 0:134    Sequence

-0:134      add second child into first child (highp int)

-0:133        'bar107' (highp int)

+0:134      add second child into first child (temp highp int)

+0:133        'bar107' (global highp int)

 0:134        Constant:

 0:134          37 (const int)

-0:135      multiply second child into first child (highp int)

-0:135        'bar107' (highp int)

+0:135      multiply second child into first child (temp highp int)

+0:135        'bar107' (global highp int)

 0:136        Constant:

 0:136          38 (const int)

-0:137      divide second child into first child (highp int)

-0:137        'bar107' (highp int)

+0:137      divide second child into first child (temp highp int)

+0:137        'bar107' (global highp int)

 0:138        Constant:

 0:138          39 (const int)

-0:139      add (highp int)

-0:139        'bar107' (highp int)

+0:139      add (temp highp int)

+0:139        'bar107' (global highp int)

 0:140        Constant:

 0:140          41 (const int)

 0:?   Linker Objects

-0:?     'foo' (highp float)

-0:?     'goodDecl' (highp int)

-0:?     'a1' (highp int)

-0:?     'a2' (highp int)

-0:?     'a3' (highp int)

-0:?     'a4' (highp int)

-0:?     'q1' (highp int)

-0:?     'q2' (highp int)

-0:?     'q3' (highp int)

-0:?     'q4' (highp int)

-0:?     'abdece' (highp int)

-0:?     'aoeuntaoehu' (highp int)

-0:?     'funkyf' (highp float)

-0:?     'funkyh' (highp int)

-0:?     'funkyo' (highp int)

-0:?     'c' (highp int)

-0:?     'd' (highp int)

-0:?     'bar103' (highp int)

-0:?     'bar104' (highp int)

-0:?     'bar105' (highp int)

-0:?     'bar106' (highp int)

-0:?     'bar107' (highp int)

+0:?     'foo' (global highp float)

+0:?     'goodDecl' (global highp int)

+0:?     'a1' (global highp int)

+0:?     'a2' (global highp int)

+0:?     'a3' (global highp int)

+0:?     'a4' (global highp int)

+0:?     'q1' (global highp int)

+0:?     'q2' (global highp int)

+0:?     'q3' (global highp int)

+0:?     'q4' (global highp int)

+0:?     'abdece' (global highp int)

+0:?     'aoeuntaoehu' (global highp int)

+0:?     'funkyf' (global highp float)

+0:?     'funkyh' (global highp int)

+0:?     'funkyo' (global highp int)

+0:?     'c' (global highp int)

+0:?     'd' (global highp int)

+0:?     'bar103' (global highp int)

+0:?     'bar104' (global highp int)

+0:?     'bar105' (global highp int)

+0:?     'bar106' (global highp int)

+0:?     'bar107' (global highp int)

 0:?     'gl_VertexID' (gl_VertexId highp int)

 0:?     'gl_InstanceID' (gl_InstanceId highp int)

 

diff --git a/Test/baseResults/lineContinuation100.vert.out b/Test/baseResults/lineContinuation100.vert.out
index 6f1e0ec..54f7494 100644
--- a/Test/baseResults/lineContinuation100.vert.out
+++ b/Test/baseResults/lineContinuation100.vert.out
@@ -25,72 +25,72 @@
 

 Shader version: 100

 ERROR: node is still EOpNull!

-0:20  Function Definition: main( (void)

+0:20  Function Definition: main( (global void)

 0:20    Function Parameters: 

 0:20    Sequence

-0:20      move second child to first child (highp 4-component vector of float)

+0:20      move second child to first child (temp highp 4-component vector of float)

 0:20        'gl_Position' (gl_Position highp 4-component vector of float)

-0:20        Construct vec4 (highp 4-component vector of float)

-0:20          'foo' (highp float)

-0:22  Function Definition: foo2(vf4; (highp 4-component vector of float)

+0:20        Construct vec4 (temp highp 4-component vector of float)

+0:20          'foo' (global highp float)

+0:22  Function Definition: foo2(vf4; (global highp 4-component vector of float)

 0:22    Function Parameters: 

 0:22      'a' (in highp 4-component vector of float)

 0:24    Sequence

 0:24      Sequence

-0:24        move second child to first child (highp 4-component vector of float)

-0:24          'b' (highp 4-component vector of float)

+0:24        move second child to first child (temp highp 4-component vector of float)

+0:24          'b' (temp highp 4-component vector of float)

 0:24          'a' (in highp 4-component vector of float)

 0:25      Branch: Return with expression

-0:25        'b' (highp 4-component vector of float)

+0:25        'b' (temp highp 4-component vector of float)

 0:40  Sequence

-0:40    move second child to first child (highp int)

-0:40      'a1' (highp int)

+0:40    move second child to first child (temp highp int)

+0:40      'a1' (global highp int)

 0:40      Constant:

 0:40        4 (const int)

 0:41  Sequence

-0:41    move second child to first child (highp int)

-0:41      'a2' (highp int)

+0:41    move second child to first child (temp highp int)

+0:41      'a2' (global highp int)

 0:41      Constant:

 0:41        3 (const int)

 0:42  Sequence

-0:42    move second child to first child (highp int)

-0:42      'a3' (highp int)

+0:42    move second child to first child (temp highp int)

+0:42      'a3' (global highp int)

 0:42      Constant:

 0:42        4 (const int)

 0:43  Sequence

-0:43    move second child to first child (highp int)

-0:43      'a4' (highp int)

-0:43      'a2' (highp int)

+0:43    move second child to first child (temp highp int)

+0:43      'a4' (global highp int)

+0:43      'a2' (global highp int)

 0:45  Sequence

-0:45    move second child to first child (highp int)

-0:45      'q1' (highp int)

+0:45    move second child to first child (temp highp int)

+0:45      'q1' (global highp int)

 0:45      Constant:

 0:45        1 (const int)

 0:46  Sequence

-0:46    move second child to first child (highp int)

-0:46      'q2' (highp int)

+0:46    move second child to first child (temp highp int)

+0:46      'q2' (global highp int)

 0:46      Constant:

 0:46        1 (const int)

 0:47  Sequence

-0:47    move second child to first child (highp int)

-0:47      'q3' (highp int)

+0:47    move second child to first child (temp highp int)

+0:47      'q3' (global highp int)

 0:47      Constant:

 0:47        1 (const int)

 0:48  Sequence

-0:48    move second child to first child (highp int)

-0:48      'q4' (highp int)

+0:48    move second child to first child (temp highp int)

+0:48      'q4' (global highp int)

 0:48      Constant:

 0:48        1 (const int)

 0:?   Linker Objects

-0:?     'foo' (highp float)

-0:?     'a1' (highp int)

-0:?     'a2' (highp int)

-0:?     'a3' (highp int)

-0:?     'a4' (highp int)

-0:?     'q1' (highp int)

-0:?     'q2' (highp int)

-0:?     'q3' (highp int)

-0:?     'q4' (highp int)

+0:?     'foo' (global highp float)

+0:?     'a1' (global highp int)

+0:?     'a2' (global highp int)

+0:?     'a3' (global highp int)

+0:?     'a4' (global highp int)

+0:?     'q1' (global highp int)

+0:?     'q2' (global highp int)

+0:?     'q3' (global highp int)

+0:?     'q4' (global highp int)

 

 

 Linked vertex stage:

@@ -98,70 +98,70 @@
 

 Shader version: 100

 ERROR: node is still EOpNull!

-0:20  Function Definition: main( (void)

+0:20  Function Definition: main( (global void)

 0:20    Function Parameters: 

 0:20    Sequence

-0:20      move second child to first child (highp 4-component vector of float)

+0:20      move second child to first child (temp highp 4-component vector of float)

 0:20        'gl_Position' (gl_Position highp 4-component vector of float)

-0:20        Construct vec4 (highp 4-component vector of float)

-0:20          'foo' (highp float)

-0:22  Function Definition: foo2(vf4; (highp 4-component vector of float)

+0:20        Construct vec4 (temp highp 4-component vector of float)

+0:20          'foo' (global highp float)

+0:22  Function Definition: foo2(vf4; (global highp 4-component vector of float)

 0:22    Function Parameters: 

 0:22      'a' (in highp 4-component vector of float)

 0:24    Sequence

 0:24      Sequence

-0:24        move second child to first child (highp 4-component vector of float)

-0:24          'b' (highp 4-component vector of float)

+0:24        move second child to first child (temp highp 4-component vector of float)

+0:24          'b' (temp highp 4-component vector of float)

 0:24          'a' (in highp 4-component vector of float)

 0:25      Branch: Return with expression

-0:25        'b' (highp 4-component vector of float)

+0:25        'b' (temp highp 4-component vector of float)

 0:40  Sequence

-0:40    move second child to first child (highp int)

-0:40      'a1' (highp int)

+0:40    move second child to first child (temp highp int)

+0:40      'a1' (global highp int)

 0:40      Constant:

 0:40        4 (const int)

 0:41  Sequence

-0:41    move second child to first child (highp int)

-0:41      'a2' (highp int)

+0:41    move second child to first child (temp highp int)

+0:41      'a2' (global highp int)

 0:41      Constant:

 0:41        3 (const int)

 0:42  Sequence

-0:42    move second child to first child (highp int)

-0:42      'a3' (highp int)

+0:42    move second child to first child (temp highp int)

+0:42      'a3' (global highp int)

 0:42      Constant:

 0:42        4 (const int)

 0:43  Sequence

-0:43    move second child to first child (highp int)

-0:43      'a4' (highp int)

-0:43      'a2' (highp int)

+0:43    move second child to first child (temp highp int)

+0:43      'a4' (global highp int)

+0:43      'a2' (global highp int)

 0:45  Sequence

-0:45    move second child to first child (highp int)

-0:45      'q1' (highp int)

+0:45    move second child to first child (temp highp int)

+0:45      'q1' (global highp int)

 0:45      Constant:

 0:45        1 (const int)

 0:46  Sequence

-0:46    move second child to first child (highp int)

-0:46      'q2' (highp int)

+0:46    move second child to first child (temp highp int)

+0:46      'q2' (global highp int)

 0:46      Constant:

 0:46        1 (const int)

 0:47  Sequence

-0:47    move second child to first child (highp int)

-0:47      'q3' (highp int)

+0:47    move second child to first child (temp highp int)

+0:47      'q3' (global highp int)

 0:47      Constant:

 0:47        1 (const int)

 0:48  Sequence

-0:48    move second child to first child (highp int)

-0:48      'q4' (highp int)

+0:48    move second child to first child (temp highp int)

+0:48      'q4' (global highp int)

 0:48      Constant:

 0:48        1 (const int)

 0:?   Linker Objects

-0:?     'foo' (highp float)

-0:?     'a1' (highp int)

-0:?     'a2' (highp int)

-0:?     'a3' (highp int)

-0:?     'a4' (highp int)

-0:?     'q1' (highp int)

-0:?     'q2' (highp int)

-0:?     'q3' (highp int)

-0:?     'q4' (highp int)

+0:?     'foo' (global highp float)

+0:?     'a1' (global highp int)

+0:?     'a2' (global highp int)

+0:?     'a3' (global highp int)

+0:?     'a4' (global highp int)

+0:?     'q1' (global highp int)

+0:?     'q2' (global highp int)

+0:?     'q3' (global highp int)

+0:?     'q4' (global highp int)

 

diff --git a/Test/baseResults/link1.frag.out b/Test/baseResults/link1.frag.out
index e460461..aa31c5f 100644
--- a/Test/baseResults/link1.frag.out
+++ b/Test/baseResults/link1.frag.out
@@ -3,47 +3,47 @@
 Shader version: 130

 0:? Sequence

 0:8  Sequence

-0:8    move second child to first child (4-component vector of float)

-0:8      'a' (4-component vector of float)

-0:8      vector-scale (4-component vector of float)

+0:8    move second child to first child (temp 4-component vector of float)

+0:8      'a' (global 4-component vector of float)

+0:8      vector-scale (temp 4-component vector of float)

 0:8        Constant:

 0:8          8.000000

 0:8        'uv4' (uniform 4-component vector of float)

-0:13  Function Definition: main( (void)

+0:13  Function Definition: main( (global void)

 0:13    Function Parameters: 

 0:17  Sequence

-0:17    move second child to first child (4-component vector of float)

-0:17      'b' (4-component vector of float)

-0:17      vector-scale (4-component vector of float)

+0:17    move second child to first child (temp 4-component vector of float)

+0:17      'b' (global 4-component vector of float)

+0:17      vector-scale (temp 4-component vector of float)

 0:17        Constant:

 0:17          8.000000

-0:17        'a' (4-component vector of float)

-0:19  Function Definition: foo(mf22; (2-component vector of int)

+0:17        'a' (global 4-component vector of float)

+0:19  Function Definition: foo(mf22; (global 2-component vector of int)

 0:19    Function Parameters: 

 0:19      'm' (in 2X2 matrix of float)

 0:21    Sequence

 0:21      Branch: Return with expression

-0:21        Convert float to int (2-component vector of int)

-0:21          direct index (2-component vector of float)

+0:21        Convert float to int (temp 2-component vector of int)

+0:21          direct index (temp 2-component vector of float)

 0:21            'm' (in 2X2 matrix of float)

 0:21            Constant:

 0:21              0 (const int)

 0:24  Sequence

-0:24    move second child to first child (4-component vector of float)

-0:24      'c' (4-component vector of float)

-0:24      component-wise multiply (4-component vector of float)

-0:24        'b' (4-component vector of float)

-0:24        'b' (4-component vector of float)

+0:24    move second child to first child (temp 4-component vector of float)

+0:24      'c' (global 4-component vector of float)

+0:24      component-wise multiply (temp 4-component vector of float)

+0:24        'b' (global 4-component vector of float)

+0:24        'b' (global 4-component vector of float)

 0:?   Linker Objects

 0:?     'uv4' (uniform 4-component vector of float)

 0:?     'glass' (uniform 3-component vector of float)

 0:?     'ci' (const int)

 0:?       8 (const int)

-0:?     'a' (4-component vector of float)

+0:?     'a' (global 4-component vector of float)

 0:?     'iv3' (smooth in 3-component vector of float)

 0:?     'cup' (smooth in 4-component vector of float)

-0:?     'b' (4-component vector of float)

-0:?     'c' (4-component vector of float)

+0:?     'b' (global 4-component vector of float)

+0:?     'c' (global 4-component vector of float)

 0:?     'cv3' (const 3-component vector of float)

 0:?       43.000000

 0:?       0.340000

@@ -71,11 +71,11 @@
 0:?       0.000000

 0:?       0.000000

 0:?       4.000000

-0:?     's' (uniform structure{int a, float b})

+0:?     's' (uniform structure{global int a, global float b})

 0:?       82 (const int)

 0:?       3.900000

-0:?     'sn' (uniform structure{int a, float b})

-0:?     'se' (uniform structure{int a, float b})

+0:?     'sn' (uniform structure{global int a, global float b})

+0:?     'se' (uniform structure{global int a, global float b})

 0:?       82 (const int)

 0:?       3.900000

 

@@ -86,20 +86,20 @@
 Requested GL_OES_texture_3D

 0:? Sequence

 0:8  Sequence

-0:8    move second child to first child (4-component vector of float)

-0:8      'd' (4-component vector of float)

-0:8      vector-scale (4-component vector of float)

+0:8    move second child to first child (temp 4-component vector of float)

+0:8      'd' (global 4-component vector of float)

+0:8      vector-scale (temp 4-component vector of float)

 0:8        Constant:

 0:8          8.000000

 0:8        'uv4' (uniform 4-component vector of float)

 0:13  Sequence

-0:13    move second child to first child (4-component vector of float)

-0:13      'e' (4-component vector of float)

-0:13      vector-scale (4-component vector of float)

+0:13    move second child to first child (temp 4-component vector of float)

+0:13      'e' (global 4-component vector of float)

+0:13      vector-scale (temp 4-component vector of float)

 0:13        Constant:

 0:13          8.000000

-0:13        'd' (4-component vector of float)

-0:15  Function Definition: foo( (2-component vector of int)

+0:13        'd' (global 4-component vector of float)

+0:15  Function Definition: foo( (global 2-component vector of int)

 0:15    Function Parameters: 

 0:17    Sequence

 0:17      Branch: Return with expression

@@ -107,21 +107,21 @@
 0:17          2 (const int)

 0:17          2 (const int)

 0:20  Sequence

-0:20    move second child to first child (4-component vector of float)

-0:20      'f' (4-component vector of float)

-0:20      component-wise multiply (4-component vector of float)

-0:20        'e' (4-component vector of float)

-0:20        'e' (4-component vector of float)

+0:20    move second child to first child (temp 4-component vector of float)

+0:20      'f' (global 4-component vector of float)

+0:20      component-wise multiply (temp 4-component vector of float)

+0:20        'e' (global 4-component vector of float)

+0:20        'e' (global 4-component vector of float)

 0:?   Linker Objects

 0:?     'uv4' (uniform 4-component vector of float)

 0:?     'glass' (uniform 2-component vector of float)

 0:?     'ci' (const int)

 0:?       8 (const int)

-0:?     'd' (4-component vector of float)

+0:?     'd' (global 4-component vector of float)

 0:?     'iv3' (smooth in 3-component vector of float)

 0:?     'cup' (flat in 4-component vector of float)

-0:?     'e' (4-component vector of float)

-0:?     'f' (4-component vector of float)

+0:?     'e' (global 4-component vector of float)

+0:?     'f' (global 4-component vector of float)

 0:?     'cv3' (const 3-component vector of float)

 0:?       43.000000

 0:?       0.340000

@@ -141,13 +141,13 @@
 0:?       0.000000

 0:?       0.000000

 0:?       3.000000

-0:?     's' (uniform structure{int a, float b})

+0:?     's' (uniform structure{global int a, global float b})

 0:?       82 (const int)

 0:?       3.900000

-0:?     'sn' (uniform structure{int a, float b})

+0:?     'sn' (uniform structure{global int a, global float b})

 0:?       82 (const int)

 0:?       3.900000

-0:?     'se' (uniform structure{int a, float b})

+0:?     'se' (uniform structure{global int a, global float b})

 0:?       81 (const int)

 0:?       3.900000

 

@@ -186,52 +186,52 @@
 Requested GL_OES_texture_3D

 0:? Sequence

 0:8  Sequence

-0:8    move second child to first child (4-component vector of float)

-0:8      'a' (4-component vector of float)

-0:8      vector-scale (4-component vector of float)

+0:8    move second child to first child (temp 4-component vector of float)

+0:8      'a' (global 4-component vector of float)

+0:8      vector-scale (temp 4-component vector of float)

 0:8        Constant:

 0:8          8.000000

 0:8        'uv4' (uniform 4-component vector of float)

-0:13  Function Definition: main( (void)

+0:13  Function Definition: main( (global void)

 0:13    Function Parameters: 

 0:17  Sequence

-0:17    move second child to first child (4-component vector of float)

-0:17      'b' (4-component vector of float)

-0:17      vector-scale (4-component vector of float)

+0:17    move second child to first child (temp 4-component vector of float)

+0:17      'b' (global 4-component vector of float)

+0:17      vector-scale (temp 4-component vector of float)

 0:17        Constant:

 0:17          8.000000

-0:17        'a' (4-component vector of float)

-0:19  Function Definition: foo(mf22; (2-component vector of int)

+0:17        'a' (global 4-component vector of float)

+0:19  Function Definition: foo(mf22; (global 2-component vector of int)

 0:19    Function Parameters: 

 0:19      'm' (in 2X2 matrix of float)

 0:21    Sequence

 0:21      Branch: Return with expression

-0:21        Convert float to int (2-component vector of int)

-0:21          direct index (2-component vector of float)

+0:21        Convert float to int (temp 2-component vector of int)

+0:21          direct index (temp 2-component vector of float)

 0:21            'm' (in 2X2 matrix of float)

 0:21            Constant:

 0:21              0 (const int)

 0:24  Sequence

-0:24    move second child to first child (4-component vector of float)

-0:24      'c' (4-component vector of float)

-0:24      component-wise multiply (4-component vector of float)

-0:24        'b' (4-component vector of float)

-0:24        'b' (4-component vector of float)

+0:24    move second child to first child (temp 4-component vector of float)

+0:24      'c' (global 4-component vector of float)

+0:24      component-wise multiply (temp 4-component vector of float)

+0:24        'b' (global 4-component vector of float)

+0:24        'b' (global 4-component vector of float)

 0:8  Sequence

-0:8    move second child to first child (4-component vector of float)

-0:8      'd' (4-component vector of float)

-0:8      vector-scale (4-component vector of float)

+0:8    move second child to first child (temp 4-component vector of float)

+0:8      'd' (global 4-component vector of float)

+0:8      vector-scale (temp 4-component vector of float)

 0:8        Constant:

 0:8          8.000000

 0:8        'uv4' (uniform 4-component vector of float)

 0:13  Sequence

-0:13    move second child to first child (4-component vector of float)

-0:13      'e' (4-component vector of float)

-0:13      vector-scale (4-component vector of float)

+0:13    move second child to first child (temp 4-component vector of float)

+0:13      'e' (global 4-component vector of float)

+0:13      vector-scale (temp 4-component vector of float)

 0:13        Constant:

 0:13          8.000000

-0:13        'd' (4-component vector of float)

-0:15  Function Definition: foo( (2-component vector of int)

+0:13        'd' (global 4-component vector of float)

+0:15  Function Definition: foo( (global 2-component vector of int)

 0:15    Function Parameters: 

 0:17    Sequence

 0:17      Branch: Return with expression

@@ -239,21 +239,21 @@
 0:17          2 (const int)

 0:17          2 (const int)

 0:20  Sequence

-0:20    move second child to first child (4-component vector of float)

-0:20      'f' (4-component vector of float)

-0:20      component-wise multiply (4-component vector of float)

-0:20        'e' (4-component vector of float)

-0:20        'e' (4-component vector of float)

+0:20    move second child to first child (temp 4-component vector of float)

+0:20      'f' (global 4-component vector of float)

+0:20      component-wise multiply (temp 4-component vector of float)

+0:20        'e' (global 4-component vector of float)

+0:20        'e' (global 4-component vector of float)

 0:?   Linker Objects

 0:?     'uv4' (uniform 4-component vector of float)

 0:?     'glass' (uniform 3-component vector of float)

 0:?     'ci' (const int)

 0:?       8 (const int)

-0:?     'a' (4-component vector of float)

+0:?     'a' (global 4-component vector of float)

 0:?     'iv3' (smooth in 3-component vector of float)

 0:?     'cup' (smooth in 4-component vector of float)

-0:?     'b' (4-component vector of float)

-0:?     'c' (4-component vector of float)

+0:?     'b' (global 4-component vector of float)

+0:?     'c' (global 4-component vector of float)

 0:?     'cv3' (const 3-component vector of float)

 0:?       43.000000

 0:?       0.340000

@@ -281,16 +281,16 @@
 0:?       0.000000

 0:?       0.000000

 0:?       4.000000

-0:?     's' (uniform structure{int a, float b})

+0:?     's' (uniform structure{global int a, global float b})

 0:?       82 (const int)

 0:?       3.900000

-0:?     'sn' (uniform structure{int a, float b})

+0:?     'sn' (uniform structure{global int a, global float b})

 0:?       82 (const int)

 0:?       3.900000

-0:?     'se' (uniform structure{int a, float b})

+0:?     'se' (uniform structure{global int a, global float b})

 0:?       82 (const int)

 0:?       3.900000

-0:?     'd' (4-component vector of float)

-0:?     'e' (4-component vector of float)

-0:?     'f' (4-component vector of float)

+0:?     'd' (global 4-component vector of float)

+0:?     'e' (global 4-component vector of float)

+0:?     'f' (global 4-component vector of float)

 

diff --git a/Test/baseResults/localAggregates.frag.out b/Test/baseResults/localAggregates.frag.out
index f6db0b8..4efabde 100644
--- a/Test/baseResults/localAggregates.frag.out
+++ b/Test/baseResults/localAggregates.frag.out
@@ -4,21 +4,21 @@
 

 Shader version: 130

 0:? Sequence

-0:34  Function Definition: main( (void)

+0:34  Function Definition: main( (global void)

 0:34    Function Parameters: 

 0:?     Sequence

-0:41      move second child to first child (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

-0:41        'locals2' (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

-0:41        s2_1: direct index for structure (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

-0:41          'foo3' (uniform structure{structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:41      move second child to first child (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

+0:41        'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

+0:41        s2_1: direct index for structure (global structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

+0:41          'foo3' (uniform structure{global structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:41          Constant:

 0:41            0 (const int)

-0:43      Test condition and select (void)

+0:43      Test condition and select (temp void)

 0:43        Condition

-0:43        Compare Greater Than (bool)

-0:43          i: direct index for structure (int)

-0:43            s2_1: direct index for structure (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

-0:43              'foo3' (uniform structure{structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:43        Compare Greater Than (temp bool)

+0:43          i: direct index for structure (global int)

+0:43            s2_1: direct index for structure (global structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

+0:43              'foo3' (uniform structure{global structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:43              Constant:

 0:43                0 (const int)

 0:43            Constant:

@@ -27,181 +27,181 @@
 0:43            0 (const int)

 0:43        true case

 0:44        Sequence

-0:44          move second child to first child (float)

-0:44            f: direct index for structure (float)

-0:44              s1_1: direct index for structure (structure{int i, float f})

-0:44                'locals2' (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

+0:44          move second child to first child (temp float)

+0:44            f: direct index for structure (global float)

+0:44              s1_1: direct index for structure (global structure{global int i, global float f})

+0:44                'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

 0:44                Constant:

 0:44                  2 (const int)

 0:44              Constant:

 0:44                1 (const int)

 0:44            Constant:

 0:44              1.000000

-0:45          move second child to first child (float)

-0:45            direct index (float)

-0:45              'localFArray' (16-element array of float)

+0:45          move second child to first child (temp float)

+0:45            direct index (temp float)

+0:45              'localFArray' (temp 16-element array of float)

 0:45              Constant:

 0:45                4 (const int)

-0:45            direct index (float)

+0:45            direct index (temp float)

 0:45              'coord' (smooth in 2-component vector of float)

 0:45              Constant:

 0:45                0 (const int)

-0:46          move second child to first child (int)

-0:46            direct index (int)

-0:46              'localIArray' (8-element array of int)

+0:46          move second child to first child (temp int)

+0:46            direct index (temp int)

+0:46              'localIArray' (temp 8-element array of int)

 0:46              Constant:

 0:46                2 (const int)

-0:46            i: direct index for structure (int)

-0:46              s2_1: direct index for structure (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

-0:46                'foo3' (uniform structure{structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:46            i: direct index for structure (global int)

+0:46              s2_1: direct index for structure (global structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

+0:46                'foo3' (uniform structure{global structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:46                Constant:

 0:46                  0 (const int)

 0:46              Constant:

 0:46                0 (const int)

 0:43        false case

 0:48        Sequence

-0:48          move second child to first child (float)

-0:48            f: direct index for structure (float)

-0:48              s1_1: direct index for structure (structure{int i, float f})

-0:48                'locals2' (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

+0:48          move second child to first child (temp float)

+0:48            f: direct index for structure (global float)

+0:48              s1_1: direct index for structure (global structure{global int i, global float f})

+0:48                'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

 0:48                Constant:

 0:48                  2 (const int)

 0:48              Constant:

 0:48                1 (const int)

-0:48            direct index (float)

+0:48            direct index (temp float)

 0:48              'coord' (smooth in 2-component vector of float)

 0:48              Constant:

 0:48                0 (const int)

-0:49          move second child to first child (float)

-0:49            direct index (float)

-0:49              'localFArray' (16-element array of float)

+0:49          move second child to first child (temp float)

+0:49            direct index (temp float)

+0:49              'localFArray' (temp 16-element array of float)

 0:49              Constant:

 0:49                4 (const int)

 0:49            Constant:

 0:49              1.000000

-0:50          move second child to first child (int)

-0:50            direct index (int)

-0:50              'localIArray' (8-element array of int)

+0:50          move second child to first child (temp int)

+0:50            direct index (temp int)

+0:50              'localIArray' (temp 8-element array of int)

 0:50              Constant:

 0:50                2 (const int)

 0:50            Constant:

 0:50              0 (const int)

-0:53      Test condition and select (void)

+0:53      Test condition and select (temp void)

 0:53        Condition

-0:53        Compare Equal (bool)

-0:53          direct index (int)

-0:53            'localIArray' (8-element array of int)

+0:53        Compare Equal (temp bool)

+0:53          direct index (temp int)

+0:53            'localIArray' (temp 8-element array of int)

 0:53            Constant:

 0:53              2 (const int)

 0:53          Constant:

 0:53            0 (const int)

 0:53        true case

-0:54        Pre-Increment (float)

-0:54          direct index (float)

-0:54            'localFArray' (16-element array of float)

+0:54        Pre-Increment (temp float)

+0:54          direct index (temp float)

+0:54            'localFArray' (temp 16-element array of float)

 0:54            Constant:

 0:54              4 (const int)

 0:57      Sequence

-0:57        move second child to first child (int)

-0:57          'x' (int)

+0:57        move second child to first child (temp int)

+0:57          'x' (temp int)

 0:57          Constant:

 0:57            5 (const int)

-0:58      move second child to first child (float)

-0:58        indirect index (float)

-0:58          'localArray' (16-element array of float)

-0:58          'x' (int)

-0:58        direct index (float)

+0:58      move second child to first child (temp float)

+0:58        indirect index (temp float)

+0:58          'localArray' (temp 16-element array of float)

+0:58          'x' (temp int)

+0:58        direct index (temp float)

 0:58          'coord' (smooth in 2-component vector of float)

 0:58          Constant:

 0:58            0 (const int)

 0:62      Sequence

 0:62        Sequence

-0:62          move second child to first child (int)

-0:62            'i' (int)

+0:62          move second child to first child (temp int)

+0:62            'i' (temp int)

 0:62            Constant:

 0:62              0 (const int)

 0:62        Loop with condition tested first

 0:62          Loop Condition

-0:62          Compare Less Than (bool)

-0:62            'i' (int)

+0:62          Compare Less Than (temp bool)

+0:62            'i' (temp int)

 0:62            Constant:

 0:62              16 (const int)

 0:62          Loop Body

-0:63          move second child to first child (float)

-0:63            indirect index (float)

-0:63              'a' (16-element array of float)

-0:63              'i' (int)

+0:63          move second child to first child (temp float)

+0:63            indirect index (temp float)

+0:63              'a' (temp 16-element array of float)

+0:63              'i' (temp int)

 0:63            Constant:

 0:63              0.000000

 0:62          Loop Terminal Expression

-0:62          Post-Increment (int)

-0:62            'i' (int)

-0:65      Test condition and select (void)

+0:62          Post-Increment (temp int)

+0:62            'i' (temp int)

+0:65      Test condition and select (temp void)

 0:65        Condition

-0:65        Compare Equal (bool)

+0:65        Compare Equal (temp bool)

 0:65          'condition' (uniform int)

 0:65          Constant:

 0:65            1 (const int)

 0:65        true case

-0:66        move second child to first child (16-element array of float)

-0:66          'a' (16-element array of float)

-0:66          'localArray' (16-element array of float)

-0:68      move second child to first child (4-component vector of float)

-0:68        bleh: direct index for structure (4-component vector of float)

-0:68          'locals2' (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

+0:66        move second child to first child (temp 16-element array of float)

+0:66          'a' (temp 16-element array of float)

+0:66          'localArray' (temp 16-element array of float)

+0:68      move second child to first child (temp 4-component vector of float)

+0:68        bleh: direct index for structure (global 4-component vector of float)

+0:68          'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

 0:68          Constant:

 0:68            3 (const int)

 0:68        'color' (smooth in 4-component vector of float)

-0:69      move second child to first child (float)

-0:69        direct index (float)

-0:69          bleh: direct index for structure (4-component vector of float)

-0:69            'locals2' (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

+0:69      move second child to first child (temp float)

+0:69        direct index (temp float)

+0:69          bleh: direct index for structure (global 4-component vector of float)

+0:69            'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

 0:69            Constant:

 0:69              3 (const int)

 0:69          Constant:

 0:69            2 (const int)

-0:69        direct index (float)

+0:69        direct index (temp float)

 0:69          'coord' (smooth in 2-component vector of float)

 0:69          Constant:

 0:69            1 (const int)

-0:71      move second child to first child (4-component vector of float)

+0:71      move second child to first child (temp 4-component vector of float)

 0:71        'gl_FragColor' (fragColor 4-component vector of float)

-0:71        component-wise multiply (4-component vector of float)

-0:71          vector-scale (4-component vector of float)

-0:71            bleh: direct index for structure (4-component vector of float)

-0:71              'locals2' (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

+0:71        component-wise multiply (temp 4-component vector of float)

+0:71          vector-scale (temp 4-component vector of float)

+0:71            bleh: direct index for structure (global 4-component vector of float)

+0:71              'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

 0:71              Constant:

 0:71                3 (const int)

-0:71            add (float)

-0:71              add (float)

-0:71                add (float)

-0:71                  direct index (float)

-0:71                    'localFArray' (16-element array of float)

+0:71            add (temp float)

+0:71              add (temp float)

+0:71                add (temp float)

+0:71                  direct index (temp float)

+0:71                    'localFArray' (temp 16-element array of float)

 0:71                    Constant:

 0:71                      4 (const int)

-0:71                  f: direct index for structure (float)

-0:71                    s1_1: direct index for structure (structure{int i, float f})

-0:71                      'locals2' (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

+0:71                  f: direct index for structure (global float)

+0:71                    s1_1: direct index for structure (global structure{global int i, global float f})

+0:71                      'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

 0:71                      Constant:

 0:71                        2 (const int)

 0:71                    Constant:

 0:71                      1 (const int)

-0:71                indirect index (float)

-0:71                  'localArray' (16-element array of float)

-0:71                  'x' (int)

-0:71              indirect index (float)

-0:71                'a' (16-element array of float)

-0:71                'x' (int)

-0:71          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:71                indirect index (temp float)

+0:71                  'localArray' (temp 16-element array of float)

+0:71                  'x' (temp int)

+0:71              indirect index (temp float)

+0:71                'a' (temp 16-element array of float)

+0:71                'x' (temp int)

+0:71          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:71            'sampler' (uniform sampler2D)

 0:71            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

 0:?     'sampler' (uniform sampler2D)

 0:?     'coord' (smooth in 2-component vector of float)

 0:?     'color' (smooth in 4-component vector of float)

-0:?     'foo' (uniform structure{int i, float f})

-0:?     'foo2' (uniform structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

-0:?     'foo3' (uniform structure{structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:?     'foo' (uniform structure{global int i, global float f})

+0:?     'foo2' (uniform structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

+0:?     'foo3' (uniform structure{global structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:?     'uFloatArray' (uniform 16-element array of float)

 0:?     'condition' (uniform int)

 

@@ -211,21 +211,21 @@
 

 Shader version: 130

 0:? Sequence

-0:34  Function Definition: main( (void)

+0:34  Function Definition: main( (global void)

 0:34    Function Parameters: 

 0:?     Sequence

-0:41      move second child to first child (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

-0:41        'locals2' (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

-0:41        s2_1: direct index for structure (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

-0:41          'foo3' (uniform structure{structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:41      move second child to first child (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

+0:41        'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

+0:41        s2_1: direct index for structure (global structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

+0:41          'foo3' (uniform structure{global structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:41          Constant:

 0:41            0 (const int)

-0:43      Test condition and select (void)

+0:43      Test condition and select (temp void)

 0:43        Condition

-0:43        Compare Greater Than (bool)

-0:43          i: direct index for structure (int)

-0:43            s2_1: direct index for structure (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

-0:43              'foo3' (uniform structure{structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:43        Compare Greater Than (temp bool)

+0:43          i: direct index for structure (global int)

+0:43            s2_1: direct index for structure (global structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

+0:43              'foo3' (uniform structure{global structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:43              Constant:

 0:43                0 (const int)

 0:43            Constant:

@@ -234,181 +234,181 @@
 0:43            0 (const int)

 0:43        true case

 0:44        Sequence

-0:44          move second child to first child (float)

-0:44            f: direct index for structure (float)

-0:44              s1_1: direct index for structure (structure{int i, float f})

-0:44                'locals2' (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

+0:44          move second child to first child (temp float)

+0:44            f: direct index for structure (global float)

+0:44              s1_1: direct index for structure (global structure{global int i, global float f})

+0:44                'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

 0:44                Constant:

 0:44                  2 (const int)

 0:44              Constant:

 0:44                1 (const int)

 0:44            Constant:

 0:44              1.000000

-0:45          move second child to first child (float)

-0:45            direct index (float)

-0:45              'localFArray' (16-element array of float)

+0:45          move second child to first child (temp float)

+0:45            direct index (temp float)

+0:45              'localFArray' (temp 16-element array of float)

 0:45              Constant:

 0:45                4 (const int)

-0:45            direct index (float)

+0:45            direct index (temp float)

 0:45              'coord' (smooth in 2-component vector of float)

 0:45              Constant:

 0:45                0 (const int)

-0:46          move second child to first child (int)

-0:46            direct index (int)

-0:46              'localIArray' (8-element array of int)

+0:46          move second child to first child (temp int)

+0:46            direct index (temp int)

+0:46              'localIArray' (temp 8-element array of int)

 0:46              Constant:

 0:46                2 (const int)

-0:46            i: direct index for structure (int)

-0:46              s2_1: direct index for structure (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

-0:46                'foo3' (uniform structure{structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:46            i: direct index for structure (global int)

+0:46              s2_1: direct index for structure (global structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

+0:46                'foo3' (uniform structure{global structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:46                Constant:

 0:46                  0 (const int)

 0:46              Constant:

 0:46                0 (const int)

 0:43        false case

 0:48        Sequence

-0:48          move second child to first child (float)

-0:48            f: direct index for structure (float)

-0:48              s1_1: direct index for structure (structure{int i, float f})

-0:48                'locals2' (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

+0:48          move second child to first child (temp float)

+0:48            f: direct index for structure (global float)

+0:48              s1_1: direct index for structure (global structure{global int i, global float f})

+0:48                'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

 0:48                Constant:

 0:48                  2 (const int)

 0:48              Constant:

 0:48                1 (const int)

-0:48            direct index (float)

+0:48            direct index (temp float)

 0:48              'coord' (smooth in 2-component vector of float)

 0:48              Constant:

 0:48                0 (const int)

-0:49          move second child to first child (float)

-0:49            direct index (float)

-0:49              'localFArray' (16-element array of float)

+0:49          move second child to first child (temp float)

+0:49            direct index (temp float)

+0:49              'localFArray' (temp 16-element array of float)

 0:49              Constant:

 0:49                4 (const int)

 0:49            Constant:

 0:49              1.000000

-0:50          move second child to first child (int)

-0:50            direct index (int)

-0:50              'localIArray' (8-element array of int)

+0:50          move second child to first child (temp int)

+0:50            direct index (temp int)

+0:50              'localIArray' (temp 8-element array of int)

 0:50              Constant:

 0:50                2 (const int)

 0:50            Constant:

 0:50              0 (const int)

-0:53      Test condition and select (void)

+0:53      Test condition and select (temp void)

 0:53        Condition

-0:53        Compare Equal (bool)

-0:53          direct index (int)

-0:53            'localIArray' (8-element array of int)

+0:53        Compare Equal (temp bool)

+0:53          direct index (temp int)

+0:53            'localIArray' (temp 8-element array of int)

 0:53            Constant:

 0:53              2 (const int)

 0:53          Constant:

 0:53            0 (const int)

 0:53        true case

-0:54        Pre-Increment (float)

-0:54          direct index (float)

-0:54            'localFArray' (16-element array of float)

+0:54        Pre-Increment (temp float)

+0:54          direct index (temp float)

+0:54            'localFArray' (temp 16-element array of float)

 0:54            Constant:

 0:54              4 (const int)

 0:57      Sequence

-0:57        move second child to first child (int)

-0:57          'x' (int)

+0:57        move second child to first child (temp int)

+0:57          'x' (temp int)

 0:57          Constant:

 0:57            5 (const int)

-0:58      move second child to first child (float)

-0:58        indirect index (float)

-0:58          'localArray' (16-element array of float)

-0:58          'x' (int)

-0:58        direct index (float)

+0:58      move second child to first child (temp float)

+0:58        indirect index (temp float)

+0:58          'localArray' (temp 16-element array of float)

+0:58          'x' (temp int)

+0:58        direct index (temp float)

 0:58          'coord' (smooth in 2-component vector of float)

 0:58          Constant:

 0:58            0 (const int)

 0:62      Sequence

 0:62        Sequence

-0:62          move second child to first child (int)

-0:62            'i' (int)

+0:62          move second child to first child (temp int)

+0:62            'i' (temp int)

 0:62            Constant:

 0:62              0 (const int)

 0:62        Loop with condition tested first

 0:62          Loop Condition

-0:62          Compare Less Than (bool)

-0:62            'i' (int)

+0:62          Compare Less Than (temp bool)

+0:62            'i' (temp int)

 0:62            Constant:

 0:62              16 (const int)

 0:62          Loop Body

-0:63          move second child to first child (float)

-0:63            indirect index (float)

-0:63              'a' (16-element array of float)

-0:63              'i' (int)

+0:63          move second child to first child (temp float)

+0:63            indirect index (temp float)

+0:63              'a' (temp 16-element array of float)

+0:63              'i' (temp int)

 0:63            Constant:

 0:63              0.000000

 0:62          Loop Terminal Expression

-0:62          Post-Increment (int)

-0:62            'i' (int)

-0:65      Test condition and select (void)

+0:62          Post-Increment (temp int)

+0:62            'i' (temp int)

+0:65      Test condition and select (temp void)

 0:65        Condition

-0:65        Compare Equal (bool)

+0:65        Compare Equal (temp bool)

 0:65          'condition' (uniform int)

 0:65          Constant:

 0:65            1 (const int)

 0:65        true case

-0:66        move second child to first child (16-element array of float)

-0:66          'a' (16-element array of float)

-0:66          'localArray' (16-element array of float)

-0:68      move second child to first child (4-component vector of float)

-0:68        bleh: direct index for structure (4-component vector of float)

-0:68          'locals2' (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

+0:66        move second child to first child (temp 16-element array of float)

+0:66          'a' (temp 16-element array of float)

+0:66          'localArray' (temp 16-element array of float)

+0:68      move second child to first child (temp 4-component vector of float)

+0:68        bleh: direct index for structure (global 4-component vector of float)

+0:68          'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

 0:68          Constant:

 0:68            3 (const int)

 0:68        'color' (smooth in 4-component vector of float)

-0:69      move second child to first child (float)

-0:69        direct index (float)

-0:69          bleh: direct index for structure (4-component vector of float)

-0:69            'locals2' (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

+0:69      move second child to first child (temp float)

+0:69        direct index (temp float)

+0:69          bleh: direct index for structure (global 4-component vector of float)

+0:69            'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

 0:69            Constant:

 0:69              3 (const int)

 0:69          Constant:

 0:69            2 (const int)

-0:69        direct index (float)

+0:69        direct index (temp float)

 0:69          'coord' (smooth in 2-component vector of float)

 0:69          Constant:

 0:69            1 (const int)

-0:71      move second child to first child (4-component vector of float)

+0:71      move second child to first child (temp 4-component vector of float)

 0:71        'gl_FragColor' (fragColor 4-component vector of float)

-0:71        component-wise multiply (4-component vector of float)

-0:71          vector-scale (4-component vector of float)

-0:71            bleh: direct index for structure (4-component vector of float)

-0:71              'locals2' (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

+0:71        component-wise multiply (temp 4-component vector of float)

+0:71          vector-scale (temp 4-component vector of float)

+0:71            bleh: direct index for structure (global 4-component vector of float)

+0:71              'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

 0:71              Constant:

 0:71                3 (const int)

-0:71            add (float)

-0:71              add (float)

-0:71                add (float)

-0:71                  direct index (float)

-0:71                    'localFArray' (16-element array of float)

+0:71            add (temp float)

+0:71              add (temp float)

+0:71                add (temp float)

+0:71                  direct index (temp float)

+0:71                    'localFArray' (temp 16-element array of float)

 0:71                    Constant:

 0:71                      4 (const int)

-0:71                  f: direct index for structure (float)

-0:71                    s1_1: direct index for structure (structure{int i, float f})

-0:71                      'locals2' (structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

+0:71                  f: direct index for structure (global float)

+0:71                    s1_1: direct index for structure (global structure{global int i, global float f})

+0:71                      'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

 0:71                      Constant:

 0:71                        2 (const int)

 0:71                    Constant:

 0:71                      1 (const int)

-0:71                indirect index (float)

-0:71                  'localArray' (16-element array of float)

-0:71                  'x' (int)

-0:71              indirect index (float)

-0:71                'a' (16-element array of float)

-0:71                'x' (int)

-0:71          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:71                indirect index (temp float)

+0:71                  'localArray' (temp 16-element array of float)

+0:71                  'x' (temp int)

+0:71              indirect index (temp float)

+0:71                'a' (temp 16-element array of float)

+0:71                'x' (temp int)

+0:71          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:71            'sampler' (uniform sampler2D)

 0:71            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

 0:?     'sampler' (uniform sampler2D)

 0:?     'coord' (smooth in 2-component vector of float)

 0:?     'color' (smooth in 4-component vector of float)

-0:?     'foo' (uniform structure{int i, float f})

-0:?     'foo2' (uniform structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh})

-0:?     'foo3' (uniform structure{structure{int i, float f, structure{int i, float f} s1_1, 4-component vector of float bleh} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:?     'foo' (uniform structure{global int i, global float f})

+0:?     'foo2' (uniform structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh})

+0:?     'foo3' (uniform structure{global structure{global int i, global float f, global structure{global int i, global float f} s1_1, global 4-component vector of float bleh} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:?     'uFloatArray' (uniform 16-element array of float)

 0:?     'condition' (uniform int)

 

diff --git a/Test/baseResults/loops.frag.out b/Test/baseResults/loops.frag.out
index 0ecaaf7..b6cb852 100644
--- a/Test/baseResults/loops.frag.out
+++ b/Test/baseResults/loops.frag.out
@@ -3,12 +3,12 @@
 

 Shader version: 130

 0:? Sequence

-0:53  Function Definition: main( (void)

+0:53  Function Definition: main( (global void)

 0:53    Function Parameters: 

 0:55    Sequence

 0:55      Sequence

-0:55        move second child to first child (4-component vector of float)

-0:55          'color' (4-component vector of float)

+0:55        move second child to first child (temp 4-component vector of float)

+0:55          'color' (temp 4-component vector of float)

 0:55          'BaseColor' (smooth in 4-component vector of float)

 0:58      Loop with condition tested first

 0:58        Loop Condition

@@ -16,46 +16,46 @@
 0:58          true (const bool)

 0:58        Loop Body

 0:59        Sequence

-0:59          Test condition and select (void)

+0:59          Test condition and select (temp void)

 0:59            Condition

-0:59            Compare Less Than (bool)

-0:59              direct index (float)

-0:59                'color' (4-component vector of float)

+0:59            Compare Less Than (temp bool)

+0:59              direct index (temp float)

+0:59                'color' (temp 4-component vector of float)

 0:59                Constant:

 0:59                  0 (const int)

 0:59              Constant:

 0:59                0.330000

 0:59            true case

 0:60            Sequence

-0:60              add second child into first child (4-component vector of float)

-0:60                'color' (4-component vector of float)

+0:60              add second child into first child (temp 4-component vector of float)

+0:60                'color' (temp 4-component vector of float)

 0:60                Constant:

 0:60                  0.330000

 0:60                  0.330000

 0:60                  0.330000

 0:60                  0.330000

 0:61              Branch: Break

-0:63          Test condition and select (void)

+0:63          Test condition and select (temp void)

 0:63            Condition

-0:63            Compare Less Than (bool)

-0:63              direct index (float)

-0:63                'color' (4-component vector of float)

+0:63            Compare Less Than (temp bool)

+0:63              direct index (temp float)

+0:63                'color' (temp 4-component vector of float)

 0:63                Constant:

 0:63                  0 (const int)

 0:63              Constant:

 0:63                0.660000

 0:63            true case

 0:64            Sequence

-0:64              add second child into first child (4-component vector of float)

-0:64                'color' (4-component vector of float)

+0:64              add second child into first child (temp 4-component vector of float)

+0:64                'color' (temp 4-component vector of float)

 0:64                Constant:

 0:64                  0.660000

 0:64                  0.660000

 0:64                  0.660000

 0:64                  0.660000

 0:65              Branch: Break

-0:68          add second child into first child (4-component vector of float)

-0:68            'color' (4-component vector of float)

+0:68          add second child into first child (temp 4-component vector of float)

+0:68            'color' (temp 4-component vector of float)

 0:68            Constant:

 0:68              0.330000

 0:68              0.330000

@@ -64,411 +64,411 @@
 0:69          Branch: Break

 0:73      Loop with condition tested first

 0:73        Loop Condition

-0:73        Compare Less Than (bool)

-0:73          direct index (float)

-0:73            'color' (4-component vector of float)

+0:73        Compare Less Than (temp bool)

+0:73          direct index (temp float)

+0:73            'color' (temp 4-component vector of float)

 0:73            Constant:

 0:73              0 (const int)

 0:73          'd' (uniform float)

 0:73        Loop Body

 0:74        Sequence

-0:74          add second child into first child (4-component vector of float)

-0:74            'color' (4-component vector of float)

+0:74          add second child into first child (temp 4-component vector of float)

+0:74            'color' (temp 4-component vector of float)

 0:74            'bigColor' (uniform 4-component vector of float)

 0:78      Loop with condition tested first

 0:78        Loop Condition

-0:78        Compare Less Than (bool)

-0:78          direct index (float)

-0:78            'color' (4-component vector of float)

+0:78        Compare Less Than (temp bool)

+0:78          direct index (temp float)

+0:78            'color' (temp 4-component vector of float)

 0:78            Constant:

 0:78              2 (const int)

 0:78          'd' (uniform float)

 0:78        Loop Body

 0:79        Sequence

-0:79          add second child into first child (4-component vector of float)

-0:79            'color' (4-component vector of float)

+0:79          add second child into first child (temp 4-component vector of float)

+0:79            'color' (temp 4-component vector of float)

 0:79            'bigColor1_1' (uniform 4-component vector of float)

-0:80          Test condition and select (void)

+0:80          Test condition and select (temp void)

 0:80            Condition

-0:80            Compare Less Than (bool)

-0:80              direct index (float)

-0:80                'color' (4-component vector of float)

+0:80            Compare Less Than (temp bool)

+0:80              direct index (temp float)

+0:80                'color' (temp 4-component vector of float)

 0:80                Constant:

 0:80                  3 (const int)

 0:80              'd' (uniform float)

 0:80            true case

 0:81            Branch: Continue

-0:83          add second child into first child (4-component vector of float)

-0:83            'color' (4-component vector of float)

+0:83          add second child into first child (temp 4-component vector of float)

+0:83            'color' (temp 4-component vector of float)

 0:83            'bigColor1_1' (uniform 4-component vector of float)

 0:87      Loop with condition tested first

 0:87        Loop Condition

-0:87        Compare Less Than (bool)

-0:87          direct index (float)

-0:87            'color' (4-component vector of float)

+0:87        Compare Less Than (temp bool)

+0:87          direct index (temp float)

+0:87            'color' (temp 4-component vector of float)

 0:87            Constant:

 0:87              0 (const int)

 0:87          Constant:

 0:87            42.000000

 0:87        Loop Body

 0:88        Sequence

-0:88          Pre-Increment (4-component vector of float)

-0:88            'color' (4-component vector of float)

+0:88          Pre-Increment (temp 4-component vector of float)

+0:88            'color' (temp 4-component vector of float)

 0:92      Loop with condition tested first

 0:92        Loop Condition

-0:92        logical-and (bool)

-0:92          Compare Less Than (bool)

-0:92            direct index (float)

-0:92              'color' (4-component vector of float)

+0:92        logical-and (temp bool)

+0:92          Compare Less Than (temp bool)

+0:92            direct index (temp float)

+0:92              'color' (temp 4-component vector of float)

 0:92              Constant:

 0:92                3 (const int)

 0:92            'd2' (uniform float)

-0:92          Compare Less Than (bool)

-0:92            direct index (float)

-0:92              'color' (4-component vector of float)

+0:92          Compare Less Than (temp bool)

+0:92            direct index (temp float)

+0:92              'color' (temp 4-component vector of float)

 0:92              Constant:

 0:92                1 (const int)

 0:92            'd3' (uniform float)

 0:92        Loop Body

 0:93        Sequence

-0:93          add second child into first child (4-component vector of float)

-0:93            'color' (4-component vector of float)

+0:93          add second child into first child (temp 4-component vector of float)

+0:93            'color' (temp 4-component vector of float)

 0:93            'bigColor1_2' (uniform 4-component vector of float)

 0:97      Loop with condition tested first

 0:97        Loop Condition

-0:97        Compare Less Than (bool)

-0:97          direct index (float)

-0:97            'color' (4-component vector of float)

+0:97        Compare Less Than (temp bool)

+0:97          direct index (temp float)

+0:97            'color' (temp 4-component vector of float)

 0:97            Constant:

 0:97              2 (const int)

 0:97          'd3' (uniform float)

 0:97        Loop Body

 0:98        Sequence

-0:98          add second child into first child (4-component vector of float)

-0:98            'color' (4-component vector of float)

+0:98          add second child into first child (temp 4-component vector of float)

+0:98            'color' (temp 4-component vector of float)

 0:98            'bigColor1_3' (uniform 4-component vector of float)

-0:99          Test condition and select (void)

+0:99          Test condition and select (temp void)

 0:99            Condition

-0:99            Compare Less Than (bool)

-0:99              direct index (float)

-0:99                'color' (4-component vector of float)

+0:99            Compare Less Than (temp bool)

+0:99              direct index (temp float)

+0:99                'color' (temp 4-component vector of float)

 0:99                Constant:

 0:99                  1 (const int)

 0:99              'd4' (uniform float)

 0:99            true case

 0:100            Branch: Break

-0:101          add second child into first child (4-component vector of float)

-0:101            'color' (4-component vector of float)

+0:101          add second child into first child (temp 4-component vector of float)

+0:101            'color' (temp 4-component vector of float)

 0:101            'bigColor1_3' (uniform 4-component vector of float)

 0:105      Sequence

 0:105        Sequence

-0:105          move second child to first child (int)

-0:105            'i' (int)

+0:105          move second child to first child (temp int)

+0:105            'i' (temp int)

 0:105            Constant:

 0:105              0 (const int)

 0:105        Loop with condition tested first

 0:105          Loop Condition

-0:105          Compare Less Than (bool)

-0:105            'i' (int)

+0:105          Compare Less Than (temp bool)

+0:105            'i' (temp int)

 0:105            'Count' (uniform int)

 0:105          Loop Body

 0:106          Sequence

-0:106            add second child into first child (4-component vector of float)

-0:106              'color' (4-component vector of float)

+0:106            add second child into first child (temp 4-component vector of float)

+0:106              'color' (temp 4-component vector of float)

 0:106              'bigColor2' (uniform 4-component vector of float)

 0:105          Loop Terminal Expression

-0:105          Pre-Increment (int)

-0:105            'i' (int)

+0:105          Pre-Increment (temp int)

+0:105            'i' (temp int)

 0:112      Loop with condition not tested first

 0:112        Loop Condition

-0:112        Compare Less Than (bool)

-0:112          direct index (float)

-0:112            'color' (4-component vector of float)

+0:112        Compare Less Than (temp bool)

+0:112          direct index (temp float)

+0:112            'color' (temp 4-component vector of float)

 0:112            Constant:

 0:112              0 (const int)

 0:112          'd2' (uniform float)

 0:112        Loop Body

 0:111        Sequence

-0:111          add second child into first child (4-component vector of float)

-0:111            'color' (4-component vector of float)

+0:111          add second child into first child (temp 4-component vector of float)

+0:111            'color' (temp 4-component vector of float)

 0:111            'bigColor3' (uniform 4-component vector of float)

 0:115      Sequence

 0:115        Sequence

-0:115          move second child to first child (int)

-0:115            'i' (int)

+0:115          move second child to first child (temp int)

+0:115            'i' (temp int)

 0:115            Constant:

 0:115              0 (const int)

 0:115        Loop with condition tested first

 0:115          Loop Condition

-0:115          Compare Less Than (bool)

-0:115            'i' (int)

+0:115          Compare Less Than (temp bool)

+0:115            'i' (temp int)

 0:115            Constant:

 0:115              42 (const int)

 0:115          Loop Body

 0:116          Sequence

-0:116            add second child into first child (float)

-0:116              direct index (float)

-0:116                'color' (4-component vector of float)

+0:116            add second child into first child (temp float)

+0:116              direct index (temp float)

+0:116                'color' (temp 4-component vector of float)

 0:116                Constant:

 0:116                  2 (const int)

 0:116              'd3' (uniform float)

 0:115          Loop Terminal Expression

-0:115          Pre-Increment (int)

-0:115            'i' (int)

+0:115          Pre-Increment (temp int)

+0:115            'i' (temp int)

 0:120      Sequence

 0:120        Sequence

-0:120          move second child to first child (int)

-0:120            'i' (int)

+0:120          move second child to first child (temp int)

+0:120            'i' (temp int)

 0:120            Constant:

 0:120              0 (const int)

 0:120        Loop with condition tested first

 0:120          Loop Condition

-0:120          Compare Less Than (bool)

-0:120            'i' (int)

+0:120          Compare Less Than (temp bool)

+0:120            'i' (temp int)

 0:120            Constant:

 0:120              100 (const int)

 0:120          Loop Body

 0:121          Sequence

-0:121            Test condition and select (void)

+0:121            Test condition and select (temp void)

 0:121              Condition

-0:121              Compare Less Than (bool)

-0:121                direct index (float)

-0:121                  'color' (4-component vector of float)

+0:121              Compare Less Than (temp bool)

+0:121                direct index (temp float)

+0:121                  'color' (temp 4-component vector of float)

 0:121                  Constant:

 0:121                    2 (const int)

 0:121                Constant:

 0:121                  20.000000

 0:121              true case

-0:122              Post-Increment (float)

-0:122                direct index (float)

-0:122                  'color' (4-component vector of float)

+0:122              Post-Increment (temp float)

+0:122                direct index (temp float)

+0:122                  'color' (temp 4-component vector of float)

 0:122                  Constant:

 0:122                    0 (const int)

 0:121              false case

-0:124              Post-Increment (float)

-0:124                direct index (float)

-0:124                  'color' (4-component vector of float)

+0:124              Post-Increment (temp float)

+0:124                direct index (temp float)

+0:124                  'color' (temp 4-component vector of float)

 0:124                  Constant:

 0:124                    1 (const int)

-0:125            Test condition and select (void)

+0:125            Test condition and select (temp void)

 0:125              Condition

-0:125              Compare Less Than (bool)

-0:125                direct index (float)

-0:125                  'color' (4-component vector of float)

+0:125              Compare Less Than (temp bool)

+0:125                direct index (temp float)

+0:125                  'color' (temp 4-component vector of float)

 0:125                  Constant:

 0:125                    3 (const int)

 0:125                Constant:

 0:125                  20.000000

 0:125              true case

-0:126              Test condition and select (void)

+0:126              Test condition and select (temp void)

 0:126                Condition

-0:126                Compare Greater Than (bool)

-0:126                  direct index (float)

-0:126                    'color' (4-component vector of float)

+0:126                Compare Greater Than (temp bool)

+0:126                  direct index (temp float)

+0:126                    'color' (temp 4-component vector of float)

 0:126                    Constant:

 0:126                      2 (const int)

-0:126                  direct index (float)

-0:126                    'color' (4-component vector of float)

+0:126                  direct index (temp float)

+0:126                    'color' (temp 4-component vector of float)

 0:126                    Constant:

 0:126                      1 (const int)

 0:126                true case

 0:127                Constant:

 0:127                  0 (const int)

 0:120          Loop Terminal Expression

-0:120          Pre-Increment (int)

-0:120            'i' (int)

+0:120          Pre-Increment (temp int)

+0:120            'i' (temp int)

 0:131      Sequence

 0:131        Sequence

-0:131          move second child to first child (int)

-0:131            'i' (int)

+0:131          move second child to first child (temp int)

+0:131            'i' (temp int)

 0:131            Constant:

 0:131              0 (const int)

 0:131        Loop with condition tested first

 0:131          Loop Condition

-0:131          Compare Less Than (bool)

-0:131            'i' (int)

+0:131          Compare Less Than (temp bool)

+0:131            'i' (temp int)

 0:131            Constant:

 0:131              120 (const int)

 0:131          Loop Body

 0:132          Sequence

-0:132            Test condition and select (void)

+0:132            Test condition and select (temp void)

 0:132              Condition

-0:132              Compare Less Than (bool)

-0:132                direct index (float)

-0:132                  'color' (4-component vector of float)

+0:132              Compare Less Than (temp bool)

+0:132                direct index (temp float)

+0:132                  'color' (temp 4-component vector of float)

 0:132                  Constant:

 0:132                    2 (const int)

 0:132                Constant:

 0:132                  20.000000

 0:132              true case

-0:133              Post-Increment (float)

-0:133                direct index (float)

-0:133                  'color' (4-component vector of float)

+0:133              Post-Increment (temp float)

+0:133                direct index (temp float)

+0:133                  'color' (temp 4-component vector of float)

 0:133                  Constant:

 0:133                    0 (const int)

 0:132              false case

-0:135              Post-Increment (float)

-0:135                direct index (float)

-0:135                  'color' (4-component vector of float)

+0:135              Post-Increment (temp float)

+0:135                direct index (temp float)

+0:135                  'color' (temp 4-component vector of float)

 0:135                  Constant:

 0:135                    1 (const int)

 0:131          Loop Terminal Expression

-0:131          Pre-Increment (int)

-0:131            'i' (int)

+0:131          Pre-Increment (temp int)

+0:131            'i' (temp int)

 0:139      Sequence

 0:139        Sequence

-0:139          move second child to first child (int)

-0:139            'i' (int)

+0:139          move second child to first child (temp int)

+0:139            'i' (temp int)

 0:139            Constant:

 0:139              0 (const int)

 0:139        Loop with condition tested first

 0:139          Loop Condition

-0:139          Compare Less Than (bool)

-0:139            'i' (int)

+0:139          Compare Less Than (temp bool)

+0:139            'i' (temp int)

 0:139            Constant:

 0:139              42 (const int)

 0:139          Loop Body

 0:140          Sequence

-0:140            add second child into first child (float)

-0:140              direct index (float)

-0:140                'color' (4-component vector of float)

+0:140            add second child into first child (temp float)

+0:140              direct index (temp float)

+0:140                'color' (temp 4-component vector of float)

 0:140                Constant:

 0:140                  2 (const int)

 0:140              'd3' (uniform float)

-0:141            Test condition and select (void)

+0:141            Test condition and select (temp void)

 0:141              Condition

-0:141              Compare Less Than (bool)

-0:141                direct index (float)

-0:141                  'color' (4-component vector of float)

+0:141              Compare Less Than (temp bool)

+0:141                direct index (temp float)

+0:141                  'color' (temp 4-component vector of float)

 0:141                  Constant:

 0:141                    0 (const int)

 0:141                'd4' (uniform float)

 0:141              true case

 0:142              Branch: Continue

-0:143            Pre-Increment (float)

-0:143              direct index (float)

-0:143                'color' (4-component vector of float)

+0:143            Pre-Increment (temp float)

+0:143              direct index (temp float)

+0:143                'color' (temp 4-component vector of float)

 0:143                Constant:

 0:143                  3 (const int)

 0:139          Loop Terminal Expression

-0:139          Pre-Increment (int)

-0:139            'i' (int)

+0:139          Pre-Increment (temp int)

+0:139            'i' (temp int)

 0:147      Sequence

 0:147        Sequence

-0:147          move second child to first child (int)

-0:147            'i' (int)

+0:147          move second child to first child (temp int)

+0:147            'i' (temp int)

 0:147            Constant:

 0:147              0 (const int)

 0:147        Loop with condition tested first

 0:147          Loop Condition

-0:147          Compare Less Than (bool)

-0:147            'i' (int)

+0:147          Compare Less Than (temp bool)

+0:147            'i' (temp int)

 0:147            Constant:

 0:147              42 (const int)

 0:147          Loop Body

 0:148          Sequence

-0:148            add second child into first child (float)

-0:148              direct index (float)

-0:148                'color' (4-component vector of float)

+0:148            add second child into first child (temp float)

+0:148              direct index (temp float)

+0:148                'color' (temp 4-component vector of float)

 0:148                Constant:

 0:148                  2 (const int)

 0:148              'd3' (uniform float)

-0:149            Test condition and select (void)

+0:149            Test condition and select (temp void)

 0:149              Condition

-0:149              Compare Less Than (bool)

-0:149                direct index (float)

-0:149                  'color' (4-component vector of float)

+0:149              Compare Less Than (temp bool)

+0:149                direct index (temp float)

+0:149                  'color' (temp 4-component vector of float)

 0:149                  Constant:

 0:149                    0 (const int)

 0:149                'd4' (uniform float)

 0:149              true case

 0:150              Branch: Break

-0:151            Pre-Increment (float)

-0:151              direct index (float)

-0:151                'color' (4-component vector of float)

+0:151            Pre-Increment (temp float)

+0:151              direct index (temp float)

+0:151                'color' (temp 4-component vector of float)

 0:151                Constant:

 0:151                  3 (const int)

 0:147          Loop Terminal Expression

-0:147          Pre-Increment (int)

-0:147            'i' (int)

+0:147          Pre-Increment (temp int)

+0:147            'i' (temp int)

 0:163      Loop with condition not tested first

 0:163        Loop Condition

-0:163        Compare Less Than (bool)

-0:163          direct index (float)

-0:163            'color' (4-component vector of float)

+0:163        Compare Less Than (temp bool)

+0:163          direct index (temp float)

+0:163            'color' (temp 4-component vector of float)

 0:163            Constant:

 0:163              2 (const int)

 0:163          'd4' (uniform float)

 0:163        Loop Body

 0:156        Sequence

-0:156          add second child into first child (4-component vector of float)

-0:156            'color' (4-component vector of float)

+0:156          add second child into first child (temp 4-component vector of float)

+0:156            'color' (temp 4-component vector of float)

 0:156            'bigColor4' (uniform 4-component vector of float)

-0:157          Test condition and select (void)

+0:157          Test condition and select (temp void)

 0:157            Condition

-0:157            Compare Less Than (bool)

-0:157              direct index (float)

-0:157                'color' (4-component vector of float)

+0:157            Compare Less Than (temp bool)

+0:157              direct index (temp float)

+0:157                'color' (temp 4-component vector of float)

 0:157                Constant:

 0:157                  0 (const int)

 0:157              'd4' (uniform float)

 0:157            true case

 0:158            Branch: Continue

-0:159          Test condition and select (void)

+0:159          Test condition and select (temp void)

 0:159            Condition

-0:159            Compare Less Than (bool)

-0:159              direct index (float)

-0:159                'color' (4-component vector of float)

+0:159            Compare Less Than (temp bool)

+0:159              direct index (temp float)

+0:159                'color' (temp 4-component vector of float)

 0:159                Constant:

 0:159                  1 (const int)

 0:159              'd4' (uniform float)

 0:159            true case

-0:160            add second child into first child (float)

-0:160              direct index (float)

-0:160                'color' (4-component vector of float)

+0:160            add second child into first child (temp float)

+0:160              direct index (temp float)

+0:160                'color' (temp 4-component vector of float)

 0:160                Constant:

 0:160                  1 (const int)

 0:160              'd4' (uniform float)

 0:159            false case

-0:162            add second child into first child (float)

-0:162              direct index (float)

-0:162                'color' (4-component vector of float)

+0:162            add second child into first child (temp float)

+0:162              direct index (temp float)

+0:162                'color' (temp 4-component vector of float)

 0:162                Constant:

 0:162                  0 (const int)

 0:162              'd4' (uniform float)

 0:170      Loop with condition not tested first

 0:170        Loop Condition

-0:170        Compare Less Than (bool)

-0:170          direct index (float)

-0:170            'color' (4-component vector of float)

+0:170        Compare Less Than (temp bool)

+0:170          direct index (temp float)

+0:170            'color' (temp 4-component vector of float)

 0:170            Constant:

 0:170              0 (const int)

 0:170          'd5' (uniform float)

 0:170        Loop Body

 0:167        Sequence

-0:167          add second child into first child (4-component vector of float)

-0:167            'color' (4-component vector of float)

+0:167          add second child into first child (temp 4-component vector of float)

+0:167            'color' (temp 4-component vector of float)

 0:167            'bigColor5' (uniform 4-component vector of float)

-0:168          Test condition and select (void)

+0:168          Test condition and select (temp void)

 0:168            Condition

-0:168            Compare Less Than (bool)

-0:168              direct index (float)

-0:168                'color' (4-component vector of float)

+0:168            Compare Less Than (temp bool)

+0:168              direct index (temp float)

+0:168                'color' (temp 4-component vector of float)

 0:168                Constant:

 0:168                  1 (const int)

 0:168              'd5' (uniform float)

 0:168            true case

-0:169            add second child into first child (float)

-0:169              direct index (float)

-0:169                'color' (4-component vector of float)

+0:169            add second child into first child (temp float)

+0:169              direct index (temp float)

+0:169                'color' (temp 4-component vector of float)

 0:169                Constant:

 0:169                  1 (const int)

 0:169              'd5' (uniform float)

-0:173      Test condition and select (void)

+0:173      Test condition and select (temp void)

 0:173        Condition

-0:173        Compare Less Than (bool)

-0:173          direct index (float)

-0:173            'color' (4-component vector of float)

+0:173        Compare Less Than (temp bool)

+0:173          direct index (temp float)

+0:173            'color' (temp 4-component vector of float)

 0:173            Constant:

 0:173              0 (const int)

 0:173          'd6' (uniform float)

@@ -476,41 +476,41 @@
 0:174        Sequence

 0:174          Loop with condition tested first

 0:174            Loop Condition

-0:174            Compare Less Than (bool)

-0:174              direct index (float)

-0:174                'color' (4-component vector of float)

+0:174            Compare Less Than (temp bool)

+0:174              direct index (temp float)

+0:174                'color' (temp 4-component vector of float)

 0:174                Constant:

 0:174                  1 (const int)

 0:174              'd6' (uniform float)

 0:174            Loop Body

-0:175            add second child into first child (4-component vector of float)

-0:175              'color' (4-component vector of float)

+0:175            add second child into first child (temp 4-component vector of float)

+0:175              'color' (temp 4-component vector of float)

 0:175              'bigColor6' (uniform 4-component vector of float)

 0:173        false case

 0:177        Sequence

 0:177          Loop with condition tested first

 0:177            Loop Condition

-0:177            Compare Less Than (bool)

-0:177              direct index (float)

-0:177                'color' (4-component vector of float)

+0:177            Compare Less Than (temp bool)

+0:177              direct index (temp float)

+0:177                'color' (temp 4-component vector of float)

 0:177                Constant:

 0:177                  2 (const int)

 0:177              'd6' (uniform float)

 0:177            Loop Body

-0:178            add second child into first child (float)

-0:178              direct index (float)

-0:178                'color' (4-component vector of float)

+0:178            add second child into first child (temp float)

+0:178              direct index (temp float)

+0:178                'color' (temp 4-component vector of float)

 0:178                Constant:

 0:178                  2 (const int)

-0:178              direct index (float)

+0:178              direct index (temp float)

 0:178                'bigColor6' (uniform 4-component vector of float)

 0:178                Constant:

 0:178                  2 (const int)

-0:182      Test condition and select (void)

+0:182      Test condition and select (temp void)

 0:182        Condition

-0:182        Compare Less Than (bool)

-0:182          direct index (float)

-0:182            'color' (4-component vector of float)

+0:182        Compare Less Than (temp bool)

+0:182          direct index (temp float)

+0:182            'color' (temp 4-component vector of float)

 0:182            Constant:

 0:182              0 (const int)

 0:182          'd6' (uniform float)

@@ -518,20 +518,20 @@
 0:183        Sequence

 0:183          Loop with condition tested first

 0:183            Loop Condition

-0:183            Compare Less Than (bool)

-0:183              direct index (float)

-0:183                'color' (4-component vector of float)

+0:183            Compare Less Than (temp bool)

+0:183              direct index (temp float)

+0:183                'color' (temp 4-component vector of float)

 0:183                Constant:

 0:183                  1 (const int)

 0:183              'd6' (uniform float)

 0:183            Loop Body

 0:184            Sequence

-0:184              add second child into first child (4-component vector of float)

-0:184                'color' (4-component vector of float)

+0:184              add second child into first child (temp 4-component vector of float)

+0:184                'color' (temp 4-component vector of float)

 0:184                'bigColor6' (uniform 4-component vector of float)

-0:185              Test condition and select (void)

+0:185              Test condition and select (temp void)

 0:185                Condition

-0:185                Compare Less Than (bool)

+0:185                Compare Less Than (temp bool)

 0:185                  'd7' (uniform float)

 0:185                  Constant:

 0:185                    1.000000

@@ -541,19 +541,19 @@
 0:190        Sequence

 0:190          Loop with condition tested first

 0:190            Loop Condition

-0:190            Compare Less Than (bool)

-0:190              direct index (float)

-0:190                'color' (4-component vector of float)

+0:190            Compare Less Than (temp bool)

+0:190              direct index (temp float)

+0:190                'color' (temp 4-component vector of float)

 0:190                Constant:

 0:190                  2 (const int)

 0:190              'd6' (uniform float)

 0:190            Loop Body

-0:191            add second child into first child (float)

-0:191              direct index (float)

-0:191                'color' (4-component vector of float)

+0:191            add second child into first child (temp float)

+0:191              direct index (temp float)

+0:191                'color' (temp 4-component vector of float)

 0:191                Constant:

 0:191                  2 (const int)

-0:191              direct index (float)

+0:191              direct index (temp float)

 0:191                'bigColor6' (uniform 4-component vector of float)

 0:191                Constant:

 0:191                  2 (const int)

@@ -563,252 +563,252 @@
 0:209          true (const bool)

 0:209        Loop Body

 0:197        Sequence

-0:197          Test condition and select (void)

+0:197          Test condition and select (temp void)

 0:197            Condition

-0:197            Compare Less Than (bool)

+0:197            Compare Less Than (temp bool)

 0:197              'd7' (uniform float)

 0:197              Constant:

 0:197                0.000000

 0:197            true case

 0:198            Branch: Break

-0:200          add second child into first child (4-component vector of float)

-0:200            'color' (4-component vector of float)

+0:200          add second child into first child (temp 4-component vector of float)

+0:200            'color' (temp 4-component vector of float)

 0:200            'bigColor7' (uniform 4-component vector of float)

-0:202          Test condition and select (void)

+0:202          Test condition and select (temp void)

 0:202            Condition

-0:202            Compare Less Than (bool)

+0:202            Compare Less Than (temp bool)

 0:202              'd7' (uniform float)

 0:202              Constant:

 0:202                1.000000

 0:202            true case

 0:203            Sequence

-0:203              Post-Increment (float)

-0:203                direct index (float)

-0:203                  'color' (4-component vector of float)

+0:203              Post-Increment (temp float)

+0:203                direct index (temp float)

+0:203                  'color' (temp 4-component vector of float)

 0:203                  Constant:

 0:203                    2 (const int)

 0:204              Branch: Break

-0:207          add second child into first child (4-component vector of float)

-0:207            'color' (4-component vector of float)

+0:207          add second child into first child (temp 4-component vector of float)

+0:207            'color' (temp 4-component vector of float)

 0:207            'BaseColor' (smooth in 4-component vector of float)

 0:234      Loop with condition not tested first

 0:234        Loop Condition

-0:234        Compare Less Than (bool)

-0:234          direct index (float)

-0:234            'color' (4-component vector of float)

+0:234        Compare Less Than (temp bool)

+0:234          direct index (temp float)

+0:234            'color' (temp 4-component vector of float)

 0:234            Constant:

 0:234              2 (const int)

 0:234          'd8' (uniform float)

 0:234        Loop Body

 0:217        Sequence

-0:217          Test condition and select (void)

+0:217          Test condition and select (temp void)

 0:217            Condition

-0:217            Compare Less Than (bool)

+0:217            Compare Less Than (temp bool)

 0:217              'd8' (uniform float)

 0:217              Constant:

 0:217                0.000000

 0:217            true case

 0:218            Branch: Break

-0:220          add second child into first child (4-component vector of float)

-0:220            'color' (4-component vector of float)

+0:220          add second child into first child (temp 4-component vector of float)

+0:220            'color' (temp 4-component vector of float)

 0:220            'bigColor7' (uniform 4-component vector of float)

-0:222          Test condition and select (void)

+0:222          Test condition and select (temp void)

 0:222            Condition

-0:222            Compare Less Than (bool)

+0:222            Compare Less Than (temp bool)

 0:222              'd8' (uniform float)

 0:222              Constant:

 0:222                1.000000

 0:222            true case

 0:223            Sequence

-0:223              Post-Increment (float)

-0:223                direct index (float)

-0:223                  'color' (4-component vector of float)

+0:223              Post-Increment (temp float)

+0:223                direct index (temp float)

+0:223                  'color' (temp 4-component vector of float)

 0:223                  Constant:

 0:223                    2 (const int)

-0:224              Test condition and select (void)

+0:224              Test condition and select (temp void)

 0:224                Condition

-0:224                Compare Less Than (bool)

+0:224                Compare Less Than (temp bool)

 0:224                  'd8' (uniform float)

 0:224                  Constant:

 0:224                    2.000000

 0:224                true case

 0:225                Sequence

-0:225                  Post-Increment (float)

-0:225                    direct index (float)

-0:225                      'color' (4-component vector of float)

+0:225                  Post-Increment (temp float)

+0:225                    direct index (temp float)

+0:225                      'color' (temp 4-component vector of float)

 0:225                      Constant:

 0:225                        1 (const int)

 0:224                false case

 0:227                Sequence

-0:227                  Post-Increment (float)

-0:227                    direct index (float)

-0:227                      'color' (4-component vector of float)

+0:227                  Post-Increment (temp float)

+0:227                    direct index (temp float)

+0:227                      'color' (temp 4-component vector of float)

 0:227                      Constant:

 0:227                        0 (const int)

 0:229              Branch: Break

-0:232          add second child into first child (4-component vector of float)

-0:232            'color' (4-component vector of float)

+0:232          add second child into first child (temp 4-component vector of float)

+0:232            'color' (temp 4-component vector of float)

 0:232            'BaseColor' (smooth in 4-component vector of float)

 0:237      Loop with condition tested first

 0:237        Loop Condition

-0:237        Compare Less Than (bool)

-0:237          direct index (float)

-0:237            'color' (4-component vector of float)

+0:237        Compare Less Than (temp bool)

+0:237          direct index (temp float)

+0:237            'color' (temp 4-component vector of float)

 0:237            Constant:

 0:237              3 (const int)

 0:237          'd9' (uniform float)

 0:237        Loop Body

 0:238        Sequence

-0:238          Test condition and select (void)

+0:238          Test condition and select (temp void)

 0:238            Condition

-0:238            Compare Greater Than (bool)

+0:238            Compare Greater Than (temp bool)

 0:238              'd9' (uniform float)

 0:238              'd8' (uniform float)

 0:238            true case

 0:239            Sequence

-0:239              Test condition and select (void)

+0:239              Test condition and select (temp void)

 0:239                Condition

-0:239                Compare Less Than or Equal (bool)

-0:239                  direct index (float)

-0:239                    'color' (4-component vector of float)

+0:239                Compare Less Than or Equal (temp bool)

+0:239                  direct index (temp float)

+0:239                    'color' (temp 4-component vector of float)

 0:239                    Constant:

 0:239                      0 (const int)

 0:239                  'd7' (uniform float)

 0:239                true case

 0:240                Sequence

-0:240                  Test condition and select (void)

+0:240                  Test condition and select (temp void)

 0:240                    Condition

-0:240                    Compare Equal (bool)

-0:240                      direct index (float)

-0:240                        'color' (4-component vector of float)

+0:240                    Compare Equal (temp bool)

+0:240                      direct index (temp float)

+0:240                        'color' (temp 4-component vector of float)

 0:240                        Constant:

 0:240                          2 (const int)

 0:240                      Constant:

 0:240                        5.000000

 0:240                    true case

-0:241                    Post-Increment (float)

-0:241                      direct index (float)

-0:241                        'color' (4-component vector of float)

+0:241                    Post-Increment (temp float)

+0:241                      direct index (temp float)

+0:241                        'color' (temp 4-component vector of float)

 0:241                        Constant:

 0:241                          3 (const int)

 0:240                    false case

 0:243                    Branch: Break

 0:250      Loop with condition tested first

 0:250        Loop Condition

-0:250        Compare Less Than (bool)

-0:250          direct index (float)

-0:250            'color' (4-component vector of float)

+0:250        Compare Less Than (temp bool)

+0:250          direct index (temp float)

+0:250            'color' (temp 4-component vector of float)

 0:250            Constant:

 0:250              2 (const int)

 0:250          'd10' (uniform float)

 0:250        Loop Body

 0:251        Sequence

-0:251          Post-Increment (float)

-0:251            direct index (float)

-0:251              'color' (4-component vector of float)

+0:251          Post-Increment (temp float)

+0:251            direct index (temp float)

+0:251              'color' (temp 4-component vector of float)

 0:251              Constant:

 0:251                1 (const int)

-0:252          Test condition and select (void)

+0:252          Test condition and select (temp void)

 0:252            Condition

-0:252            Compare Less Than (bool)

-0:252              direct index (float)

-0:252                'color' (4-component vector of float)

+0:252            Compare Less Than (temp bool)

+0:252              direct index (temp float)

+0:252                'color' (temp 4-component vector of float)

 0:252                Constant:

 0:252                  1 (const int)

 0:252              'd11' (uniform float)

 0:252            true case

 0:253            Sequence

-0:253              Post-Increment (float)

-0:253                direct index (float)

-0:253                  'color' (4-component vector of float)

+0:253              Post-Increment (temp float)

+0:253                direct index (temp float)

+0:253                  'color' (temp 4-component vector of float)

 0:253                  Constant:

 0:253                    2 (const int)

-0:254              Test condition and select (void)

+0:254              Test condition and select (temp void)

 0:254                Condition

-0:254                Compare Less Than (bool)

-0:254                  direct index (float)

-0:254                    'color' (4-component vector of float)

+0:254                Compare Less Than (temp bool)

+0:254                  direct index (temp float)

+0:254                    'color' (temp 4-component vector of float)

 0:254                    Constant:

 0:254                      3 (const int)

 0:254                  'd12' (uniform float)

 0:254                true case

-0:255                Post-Increment (float)

-0:255                  direct index (float)

-0:255                    'color' (4-component vector of float)

+0:255                Post-Increment (temp float)

+0:255                  direct index (temp float)

+0:255                    'color' (temp 4-component vector of float)

 0:255                    Constant:

 0:255                      3 (const int)

 0:254                false case

-0:257                Post-Increment (float)

-0:257                  direct index (float)

-0:257                    'color' (4-component vector of float)

+0:257                Post-Increment (temp float)

+0:257                  direct index (temp float)

+0:257                    'color' (temp 4-component vector of float)

 0:257                    Constant:

 0:257                      0 (const int)

 0:258              Branch: Continue

-0:261          Post-Increment (4-component vector of float)

-0:261            'color' (4-component vector of float)

+0:261          Post-Increment (temp 4-component vector of float)

+0:261            'color' (temp 4-component vector of float)

 0:262          Branch: Break

 0:266      Loop with condition tested first

 0:266        Loop Condition

-0:266        Compare Less Than (bool)

-0:266          direct index (float)

-0:266            'color' (4-component vector of float)

+0:266        Compare Less Than (temp bool)

+0:266          direct index (temp float)

+0:266            'color' (temp 4-component vector of float)

 0:266            Constant:

 0:266              0 (const int)

 0:266          Constant:

 0:266            10.000000

 0:266        Loop Body

 0:267        Sequence

-0:267          add second child into first child (4-component vector of float)

-0:267            'color' (4-component vector of float)

+0:267          add second child into first child (temp 4-component vector of float)

+0:267            'color' (temp 4-component vector of float)

 0:267            'bigColor8' (uniform 4-component vector of float)

-0:269          Test condition and select (void)

+0:269          Test condition and select (temp void)

 0:269            Condition

-0:269            Compare Less Than (bool)

-0:269              direct index (float)

-0:269                'color' (4-component vector of float)

+0:269            Compare Less Than (temp bool)

+0:269              direct index (temp float)

+0:269                'color' (temp 4-component vector of float)

 0:269                Constant:

 0:269                  2 (const int)

 0:269              'd8' (uniform float)

 0:269            true case

-0:270            Test condition and select (void)

+0:270            Test condition and select (temp void)

 0:270              Condition

-0:270              Compare Less Than (bool)

-0:270                direct index (float)

-0:270                  'color' (4-component vector of float)

+0:270              Compare Less Than (temp bool)

+0:270                direct index (temp float)

+0:270                  'color' (temp 4-component vector of float)

 0:270                  Constant:

 0:270                    3 (const int)

 0:270                'd6' (uniform float)

 0:270              true case

 0:271              Branch: Continue

-0:273          add second child into first child (float)

-0:273            direct index (float)

-0:273              'color' (4-component vector of float)

+0:273          add second child into first child (temp float)

+0:273            direct index (temp float)

+0:273              'color' (temp 4-component vector of float)

 0:273              Constant:

 0:273                1 (const int)

-0:273            direct index (float)

+0:273            direct index (temp float)

 0:273              'bigColor8' (uniform 4-component vector of float)

 0:273              Constant:

 0:273                0 (const int)

-0:276      Post-Increment (4-component vector of float)

-0:276        'color' (4-component vector of float)

-0:277      move second child to first child (4-component vector of float)

+0:276      Post-Increment (temp 4-component vector of float)

+0:276        'color' (temp 4-component vector of float)

+0:277      move second child to first child (temp 4-component vector of float)

 0:277        'gl_FragColor' (fragColor 4-component vector of float)

-0:277        'color' (4-component vector of float)

+0:277        'color' (temp 4-component vector of float)

 0:280      Loop with condition tested first

 0:280        Loop Condition

-0:280        Compare Less Than (bool)

-0:280          direct index (float)

-0:280            'color' (4-component vector of float)

+0:280        Compare Less Than (temp bool)

+0:280          direct index (temp float)

+0:280            'color' (temp 4-component vector of float)

 0:280            Constant:

 0:280              0 (const int)

 0:280          'd14' (uniform float)

 0:280        Loop Body

 0:281        Sequence

-0:281          Test condition and select (void)

+0:281          Test condition and select (temp void)

 0:281            Condition

-0:281            Compare Less Than (bool)

-0:281              direct index (float)

-0:281                'color' (4-component vector of float)

+0:281            Compare Less Than (temp bool)

+0:281              direct index (temp float)

+0:281                'color' (temp 4-component vector of float)

 0:281                Constant:

 0:281                  1 (const int)

 0:281              'd15' (uniform float)

@@ -816,50 +816,50 @@
 0:282            Sequence

 0:282              Branch: Return

 0:281            false case

-0:285            Post-Increment (4-component vector of float)

-0:285              'color' (4-component vector of float)

-0:288      Post-Increment (4-component vector of float)

-0:288        'color' (4-component vector of float)

+0:285            Post-Increment (temp 4-component vector of float)

+0:285              'color' (temp 4-component vector of float)

+0:288      Post-Increment (temp 4-component vector of float)

+0:288        'color' (temp 4-component vector of float)

 0:290      Loop with condition tested first

 0:290        Loop Condition

-0:290        Compare Less Than (bool)

-0:290          direct index (float)

-0:290            'color' (4-component vector of float)

+0:290        Compare Less Than (temp bool)

+0:290          direct index (temp float)

+0:290            'color' (temp 4-component vector of float)

 0:290            Constant:

 0:290              3 (const int)

 0:290          'd16' (uniform float)

 0:290        Loop Body

 0:291        Sequence

-0:291          Post-Increment (float)

-0:291            direct index (float)

-0:291              'color' (4-component vector of float)

+0:291          Post-Increment (temp float)

+0:291            direct index (temp float)

+0:291              'color' (temp 4-component vector of float)

 0:291              Constant:

 0:291                3 (const int)

 0:296      Loop with condition tested first

 0:296        Loop Condition

-0:296        logical-and (bool)

-0:296          Compare Less Than (bool)

-0:296            direct index (float)

-0:296              'color' (4-component vector of float)

+0:296        logical-and (temp bool)

+0:296          Compare Less Than (temp bool)

+0:296            direct index (temp float)

+0:296              'color' (temp 4-component vector of float)

 0:296              Constant:

 0:296                3 (const int)

 0:296            'd2' (uniform float)

-0:296          Compare Less Than (bool)

-0:296            direct index (float)

-0:296              'color' (4-component vector of float)

+0:296          Compare Less Than (temp bool)

+0:296            direct index (temp float)

+0:296              'color' (temp 4-component vector of float)

 0:296              Constant:

 0:296                1 (const int)

 0:296            'd3' (uniform float)

 0:296        Loop Body

 0:297        Sequence

-0:297          add second child into first child (4-component vector of float)

-0:297            'color' (4-component vector of float)

+0:297          add second child into first child (temp 4-component vector of float)

+0:297            'color' (temp 4-component vector of float)

 0:297            'bigColor1_2' (uniform 4-component vector of float)

-0:298          Test condition and select (void)

+0:298          Test condition and select (temp void)

 0:298            Condition

-0:298            Compare Less Than (bool)

-0:298              direct index (float)

-0:298                'color' (4-component vector of float)

+0:298            Compare Less Than (temp bool)

+0:298              direct index (temp float)

+0:298                'color' (temp 4-component vector of float)

 0:298                Constant:

 0:298                  2 (const int)

 0:298              'd3' (uniform float)

@@ -867,41 +867,41 @@
 0:299            Branch: Return

 0:307      Loop with condition not tested first

 0:307        Loop Condition

-0:307        Compare Less Than (bool)

-0:307          direct index (float)

-0:307            'color' (4-component vector of float)

+0:307        Compare Less Than (temp bool)

+0:307          direct index (temp float)

+0:307            'color' (temp 4-component vector of float)

 0:307            Constant:

 0:307              0 (const int)

 0:307          'd17' (uniform float)

 0:307        Loop Body

 0:304        Sequence

-0:304          Test condition and select (void)

+0:304          Test condition and select (temp void)

 0:304            Condition

-0:304            Compare Less Than (bool)

-0:304              direct index (float)

-0:304                'color' (4-component vector of float)

+0:304            Compare Less Than (temp bool)

+0:304              direct index (temp float)

+0:304                'color' (temp 4-component vector of float)

 0:304                Constant:

 0:304                  1 (const int)

 0:304              'd18' (uniform float)

 0:304            true case

 0:305            Branch: Return

-0:306          Post-Increment (4-component vector of float)

-0:306            'color' (4-component vector of float)

+0:306          Post-Increment (temp 4-component vector of float)

+0:306            'color' (temp 4-component vector of float)

 0:310      Loop with condition tested first

 0:310        Loop Condition

-0:310        Compare Less Than (bool)

-0:310          direct index (float)

-0:310            'color' (4-component vector of float)

+0:310        Compare Less Than (temp bool)

+0:310          direct index (temp float)

+0:310            'color' (temp 4-component vector of float)

 0:310            Constant:

 0:310              1 (const int)

 0:310          'd16' (uniform float)

 0:310        Loop Body

 0:311        Sequence

-0:311          Test condition and select (void)

+0:311          Test condition and select (temp void)

 0:311            Condition

-0:311            Compare Less Than (bool)

-0:311              direct index (float)

-0:311                'color' (4-component vector of float)

+0:311            Compare Less Than (temp bool)

+0:311              direct index (temp float)

+0:311                'color' (temp 4-component vector of float)

 0:311                Constant:

 0:311                  3 (const int)

 0:311              'd16' (uniform float)

@@ -909,13 +909,13 @@
 0:312            Sequence

 0:312              Branch: Kill

 0:311            false case

-0:314            Post-Increment (4-component vector of float)

-0:314              'color' (4-component vector of float)

-0:317      Post-Increment (4-component vector of float)

-0:317        'color' (4-component vector of float)

-0:319      move second child to first child (4-component vector of float)

+0:314            Post-Increment (temp 4-component vector of float)

+0:314              'color' (temp 4-component vector of float)

+0:317      Post-Increment (temp 4-component vector of float)

+0:317        'color' (temp 4-component vector of float)

+0:319      move second child to first child (temp 4-component vector of float)

 0:319        'gl_FragColor' (fragColor 4-component vector of float)

-0:319        'color' (4-component vector of float)

+0:319        'color' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'bigColor' (uniform 4-component vector of float)

 0:?     'bigColor1_1' (uniform 4-component vector of float)

@@ -971,12 +971,12 @@
 

 Shader version: 130

 0:? Sequence

-0:53  Function Definition: main( (void)

+0:53  Function Definition: main( (global void)

 0:53    Function Parameters: 

 0:55    Sequence

 0:55      Sequence

-0:55        move second child to first child (4-component vector of float)

-0:55          'color' (4-component vector of float)

+0:55        move second child to first child (temp 4-component vector of float)

+0:55          'color' (temp 4-component vector of float)

 0:55          'BaseColor' (smooth in 4-component vector of float)

 0:58      Loop with condition tested first

 0:58        Loop Condition

@@ -984,46 +984,46 @@
 0:58          true (const bool)

 0:58        Loop Body

 0:59        Sequence

-0:59          Test condition and select (void)

+0:59          Test condition and select (temp void)

 0:59            Condition

-0:59            Compare Less Than (bool)

-0:59              direct index (float)

-0:59                'color' (4-component vector of float)

+0:59            Compare Less Than (temp bool)

+0:59              direct index (temp float)

+0:59                'color' (temp 4-component vector of float)

 0:59                Constant:

 0:59                  0 (const int)

 0:59              Constant:

 0:59                0.330000

 0:59            true case

 0:60            Sequence

-0:60              add second child into first child (4-component vector of float)

-0:60                'color' (4-component vector of float)

+0:60              add second child into first child (temp 4-component vector of float)

+0:60                'color' (temp 4-component vector of float)

 0:60                Constant:

 0:60                  0.330000

 0:60                  0.330000

 0:60                  0.330000

 0:60                  0.330000

 0:61              Branch: Break

-0:63          Test condition and select (void)

+0:63          Test condition and select (temp void)

 0:63            Condition

-0:63            Compare Less Than (bool)

-0:63              direct index (float)

-0:63                'color' (4-component vector of float)

+0:63            Compare Less Than (temp bool)

+0:63              direct index (temp float)

+0:63                'color' (temp 4-component vector of float)

 0:63                Constant:

 0:63                  0 (const int)

 0:63              Constant:

 0:63                0.660000

 0:63            true case

 0:64            Sequence

-0:64              add second child into first child (4-component vector of float)

-0:64                'color' (4-component vector of float)

+0:64              add second child into first child (temp 4-component vector of float)

+0:64                'color' (temp 4-component vector of float)

 0:64                Constant:

 0:64                  0.660000

 0:64                  0.660000

 0:64                  0.660000

 0:64                  0.660000

 0:65              Branch: Break

-0:68          add second child into first child (4-component vector of float)

-0:68            'color' (4-component vector of float)

+0:68          add second child into first child (temp 4-component vector of float)

+0:68            'color' (temp 4-component vector of float)

 0:68            Constant:

 0:68              0.330000

 0:68              0.330000

@@ -1032,411 +1032,411 @@
 0:69          Branch: Break

 0:73      Loop with condition tested first

 0:73        Loop Condition

-0:73        Compare Less Than (bool)

-0:73          direct index (float)

-0:73            'color' (4-component vector of float)

+0:73        Compare Less Than (temp bool)

+0:73          direct index (temp float)

+0:73            'color' (temp 4-component vector of float)

 0:73            Constant:

 0:73              0 (const int)

 0:73          'd' (uniform float)

 0:73        Loop Body

 0:74        Sequence

-0:74          add second child into first child (4-component vector of float)

-0:74            'color' (4-component vector of float)

+0:74          add second child into first child (temp 4-component vector of float)

+0:74            'color' (temp 4-component vector of float)

 0:74            'bigColor' (uniform 4-component vector of float)

 0:78      Loop with condition tested first

 0:78        Loop Condition

-0:78        Compare Less Than (bool)

-0:78          direct index (float)

-0:78            'color' (4-component vector of float)

+0:78        Compare Less Than (temp bool)

+0:78          direct index (temp float)

+0:78            'color' (temp 4-component vector of float)

 0:78            Constant:

 0:78              2 (const int)

 0:78          'd' (uniform float)

 0:78        Loop Body

 0:79        Sequence

-0:79          add second child into first child (4-component vector of float)

-0:79            'color' (4-component vector of float)

+0:79          add second child into first child (temp 4-component vector of float)

+0:79            'color' (temp 4-component vector of float)

 0:79            'bigColor1_1' (uniform 4-component vector of float)

-0:80          Test condition and select (void)

+0:80          Test condition and select (temp void)

 0:80            Condition

-0:80            Compare Less Than (bool)

-0:80              direct index (float)

-0:80                'color' (4-component vector of float)

+0:80            Compare Less Than (temp bool)

+0:80              direct index (temp float)

+0:80                'color' (temp 4-component vector of float)

 0:80                Constant:

 0:80                  3 (const int)

 0:80              'd' (uniform float)

 0:80            true case

 0:81            Branch: Continue

-0:83          add second child into first child (4-component vector of float)

-0:83            'color' (4-component vector of float)

+0:83          add second child into first child (temp 4-component vector of float)

+0:83            'color' (temp 4-component vector of float)

 0:83            'bigColor1_1' (uniform 4-component vector of float)

 0:87      Loop with condition tested first

 0:87        Loop Condition

-0:87        Compare Less Than (bool)

-0:87          direct index (float)

-0:87            'color' (4-component vector of float)

+0:87        Compare Less Than (temp bool)

+0:87          direct index (temp float)

+0:87            'color' (temp 4-component vector of float)

 0:87            Constant:

 0:87              0 (const int)

 0:87          Constant:

 0:87            42.000000

 0:87        Loop Body

 0:88        Sequence

-0:88          Pre-Increment (4-component vector of float)

-0:88            'color' (4-component vector of float)

+0:88          Pre-Increment (temp 4-component vector of float)

+0:88            'color' (temp 4-component vector of float)

 0:92      Loop with condition tested first

 0:92        Loop Condition

-0:92        logical-and (bool)

-0:92          Compare Less Than (bool)

-0:92            direct index (float)

-0:92              'color' (4-component vector of float)

+0:92        logical-and (temp bool)

+0:92          Compare Less Than (temp bool)

+0:92            direct index (temp float)

+0:92              'color' (temp 4-component vector of float)

 0:92              Constant:

 0:92                3 (const int)

 0:92            'd2' (uniform float)

-0:92          Compare Less Than (bool)

-0:92            direct index (float)

-0:92              'color' (4-component vector of float)

+0:92          Compare Less Than (temp bool)

+0:92            direct index (temp float)

+0:92              'color' (temp 4-component vector of float)

 0:92              Constant:

 0:92                1 (const int)

 0:92            'd3' (uniform float)

 0:92        Loop Body

 0:93        Sequence

-0:93          add second child into first child (4-component vector of float)

-0:93            'color' (4-component vector of float)

+0:93          add second child into first child (temp 4-component vector of float)

+0:93            'color' (temp 4-component vector of float)

 0:93            'bigColor1_2' (uniform 4-component vector of float)

 0:97      Loop with condition tested first

 0:97        Loop Condition

-0:97        Compare Less Than (bool)

-0:97          direct index (float)

-0:97            'color' (4-component vector of float)

+0:97        Compare Less Than (temp bool)

+0:97          direct index (temp float)

+0:97            'color' (temp 4-component vector of float)

 0:97            Constant:

 0:97              2 (const int)

 0:97          'd3' (uniform float)

 0:97        Loop Body

 0:98        Sequence

-0:98          add second child into first child (4-component vector of float)

-0:98            'color' (4-component vector of float)

+0:98          add second child into first child (temp 4-component vector of float)

+0:98            'color' (temp 4-component vector of float)

 0:98            'bigColor1_3' (uniform 4-component vector of float)

-0:99          Test condition and select (void)

+0:99          Test condition and select (temp void)

 0:99            Condition

-0:99            Compare Less Than (bool)

-0:99              direct index (float)

-0:99                'color' (4-component vector of float)

+0:99            Compare Less Than (temp bool)

+0:99              direct index (temp float)

+0:99                'color' (temp 4-component vector of float)

 0:99                Constant:

 0:99                  1 (const int)

 0:99              'd4' (uniform float)

 0:99            true case

 0:100            Branch: Break

-0:101          add second child into first child (4-component vector of float)

-0:101            'color' (4-component vector of float)

+0:101          add second child into first child (temp 4-component vector of float)

+0:101            'color' (temp 4-component vector of float)

 0:101            'bigColor1_3' (uniform 4-component vector of float)

 0:105      Sequence

 0:105        Sequence

-0:105          move second child to first child (int)

-0:105            'i' (int)

+0:105          move second child to first child (temp int)

+0:105            'i' (temp int)

 0:105            Constant:

 0:105              0 (const int)

 0:105        Loop with condition tested first

 0:105          Loop Condition

-0:105          Compare Less Than (bool)

-0:105            'i' (int)

+0:105          Compare Less Than (temp bool)

+0:105            'i' (temp int)

 0:105            'Count' (uniform int)

 0:105          Loop Body

 0:106          Sequence

-0:106            add second child into first child (4-component vector of float)

-0:106              'color' (4-component vector of float)

+0:106            add second child into first child (temp 4-component vector of float)

+0:106              'color' (temp 4-component vector of float)

 0:106              'bigColor2' (uniform 4-component vector of float)

 0:105          Loop Terminal Expression

-0:105          Pre-Increment (int)

-0:105            'i' (int)

+0:105          Pre-Increment (temp int)

+0:105            'i' (temp int)

 0:112      Loop with condition not tested first

 0:112        Loop Condition

-0:112        Compare Less Than (bool)

-0:112          direct index (float)

-0:112            'color' (4-component vector of float)

+0:112        Compare Less Than (temp bool)

+0:112          direct index (temp float)

+0:112            'color' (temp 4-component vector of float)

 0:112            Constant:

 0:112              0 (const int)

 0:112          'd2' (uniform float)

 0:112        Loop Body

 0:111        Sequence

-0:111          add second child into first child (4-component vector of float)

-0:111            'color' (4-component vector of float)

+0:111          add second child into first child (temp 4-component vector of float)

+0:111            'color' (temp 4-component vector of float)

 0:111            'bigColor3' (uniform 4-component vector of float)

 0:115      Sequence

 0:115        Sequence

-0:115          move second child to first child (int)

-0:115            'i' (int)

+0:115          move second child to first child (temp int)

+0:115            'i' (temp int)

 0:115            Constant:

 0:115              0 (const int)

 0:115        Loop with condition tested first

 0:115          Loop Condition

-0:115          Compare Less Than (bool)

-0:115            'i' (int)

+0:115          Compare Less Than (temp bool)

+0:115            'i' (temp int)

 0:115            Constant:

 0:115              42 (const int)

 0:115          Loop Body

 0:116          Sequence

-0:116            add second child into first child (float)

-0:116              direct index (float)

-0:116                'color' (4-component vector of float)

+0:116            add second child into first child (temp float)

+0:116              direct index (temp float)

+0:116                'color' (temp 4-component vector of float)

 0:116                Constant:

 0:116                  2 (const int)

 0:116              'd3' (uniform float)

 0:115          Loop Terminal Expression

-0:115          Pre-Increment (int)

-0:115            'i' (int)

+0:115          Pre-Increment (temp int)

+0:115            'i' (temp int)

 0:120      Sequence

 0:120        Sequence

-0:120          move second child to first child (int)

-0:120            'i' (int)

+0:120          move second child to first child (temp int)

+0:120            'i' (temp int)

 0:120            Constant:

 0:120              0 (const int)

 0:120        Loop with condition tested first

 0:120          Loop Condition

-0:120          Compare Less Than (bool)

-0:120            'i' (int)

+0:120          Compare Less Than (temp bool)

+0:120            'i' (temp int)

 0:120            Constant:

 0:120              100 (const int)

 0:120          Loop Body

 0:121          Sequence

-0:121            Test condition and select (void)

+0:121            Test condition and select (temp void)

 0:121              Condition

-0:121              Compare Less Than (bool)

-0:121                direct index (float)

-0:121                  'color' (4-component vector of float)

+0:121              Compare Less Than (temp bool)

+0:121                direct index (temp float)

+0:121                  'color' (temp 4-component vector of float)

 0:121                  Constant:

 0:121                    2 (const int)

 0:121                Constant:

 0:121                  20.000000

 0:121              true case

-0:122              Post-Increment (float)

-0:122                direct index (float)

-0:122                  'color' (4-component vector of float)

+0:122              Post-Increment (temp float)

+0:122                direct index (temp float)

+0:122                  'color' (temp 4-component vector of float)

 0:122                  Constant:

 0:122                    0 (const int)

 0:121              false case

-0:124              Post-Increment (float)

-0:124                direct index (float)

-0:124                  'color' (4-component vector of float)

+0:124              Post-Increment (temp float)

+0:124                direct index (temp float)

+0:124                  'color' (temp 4-component vector of float)

 0:124                  Constant:

 0:124                    1 (const int)

-0:125            Test condition and select (void)

+0:125            Test condition and select (temp void)

 0:125              Condition

-0:125              Compare Less Than (bool)

-0:125                direct index (float)

-0:125                  'color' (4-component vector of float)

+0:125              Compare Less Than (temp bool)

+0:125                direct index (temp float)

+0:125                  'color' (temp 4-component vector of float)

 0:125                  Constant:

 0:125                    3 (const int)

 0:125                Constant:

 0:125                  20.000000

 0:125              true case

-0:126              Test condition and select (void)

+0:126              Test condition and select (temp void)

 0:126                Condition

-0:126                Compare Greater Than (bool)

-0:126                  direct index (float)

-0:126                    'color' (4-component vector of float)

+0:126                Compare Greater Than (temp bool)

+0:126                  direct index (temp float)

+0:126                    'color' (temp 4-component vector of float)

 0:126                    Constant:

 0:126                      2 (const int)

-0:126                  direct index (float)

-0:126                    'color' (4-component vector of float)

+0:126                  direct index (temp float)

+0:126                    'color' (temp 4-component vector of float)

 0:126                    Constant:

 0:126                      1 (const int)

 0:126                true case

 0:127                Constant:

 0:127                  0 (const int)

 0:120          Loop Terminal Expression

-0:120          Pre-Increment (int)

-0:120            'i' (int)

+0:120          Pre-Increment (temp int)

+0:120            'i' (temp int)

 0:131      Sequence

 0:131        Sequence

-0:131          move second child to first child (int)

-0:131            'i' (int)

+0:131          move second child to first child (temp int)

+0:131            'i' (temp int)

 0:131            Constant:

 0:131              0 (const int)

 0:131        Loop with condition tested first

 0:131          Loop Condition

-0:131          Compare Less Than (bool)

-0:131            'i' (int)

+0:131          Compare Less Than (temp bool)

+0:131            'i' (temp int)

 0:131            Constant:

 0:131              120 (const int)

 0:131          Loop Body

 0:132          Sequence

-0:132            Test condition and select (void)

+0:132            Test condition and select (temp void)

 0:132              Condition

-0:132              Compare Less Than (bool)

-0:132                direct index (float)

-0:132                  'color' (4-component vector of float)

+0:132              Compare Less Than (temp bool)

+0:132                direct index (temp float)

+0:132                  'color' (temp 4-component vector of float)

 0:132                  Constant:

 0:132                    2 (const int)

 0:132                Constant:

 0:132                  20.000000

 0:132              true case

-0:133              Post-Increment (float)

-0:133                direct index (float)

-0:133                  'color' (4-component vector of float)

+0:133              Post-Increment (temp float)

+0:133                direct index (temp float)

+0:133                  'color' (temp 4-component vector of float)

 0:133                  Constant:

 0:133                    0 (const int)

 0:132              false case

-0:135              Post-Increment (float)

-0:135                direct index (float)

-0:135                  'color' (4-component vector of float)

+0:135              Post-Increment (temp float)

+0:135                direct index (temp float)

+0:135                  'color' (temp 4-component vector of float)

 0:135                  Constant:

 0:135                    1 (const int)

 0:131          Loop Terminal Expression

-0:131          Pre-Increment (int)

-0:131            'i' (int)

+0:131          Pre-Increment (temp int)

+0:131            'i' (temp int)

 0:139      Sequence

 0:139        Sequence

-0:139          move second child to first child (int)

-0:139            'i' (int)

+0:139          move second child to first child (temp int)

+0:139            'i' (temp int)

 0:139            Constant:

 0:139              0 (const int)

 0:139        Loop with condition tested first

 0:139          Loop Condition

-0:139          Compare Less Than (bool)

-0:139            'i' (int)

+0:139          Compare Less Than (temp bool)

+0:139            'i' (temp int)

 0:139            Constant:

 0:139              42 (const int)

 0:139          Loop Body

 0:140          Sequence

-0:140            add second child into first child (float)

-0:140              direct index (float)

-0:140                'color' (4-component vector of float)

+0:140            add second child into first child (temp float)

+0:140              direct index (temp float)

+0:140                'color' (temp 4-component vector of float)

 0:140                Constant:

 0:140                  2 (const int)

 0:140              'd3' (uniform float)

-0:141            Test condition and select (void)

+0:141            Test condition and select (temp void)

 0:141              Condition

-0:141              Compare Less Than (bool)

-0:141                direct index (float)

-0:141                  'color' (4-component vector of float)

+0:141              Compare Less Than (temp bool)

+0:141                direct index (temp float)

+0:141                  'color' (temp 4-component vector of float)

 0:141                  Constant:

 0:141                    0 (const int)

 0:141                'd4' (uniform float)

 0:141              true case

 0:142              Branch: Continue

-0:143            Pre-Increment (float)

-0:143              direct index (float)

-0:143                'color' (4-component vector of float)

+0:143            Pre-Increment (temp float)

+0:143              direct index (temp float)

+0:143                'color' (temp 4-component vector of float)

 0:143                Constant:

 0:143                  3 (const int)

 0:139          Loop Terminal Expression

-0:139          Pre-Increment (int)

-0:139            'i' (int)

+0:139          Pre-Increment (temp int)

+0:139            'i' (temp int)

 0:147      Sequence

 0:147        Sequence

-0:147          move second child to first child (int)

-0:147            'i' (int)

+0:147          move second child to first child (temp int)

+0:147            'i' (temp int)

 0:147            Constant:

 0:147              0 (const int)

 0:147        Loop with condition tested first

 0:147          Loop Condition

-0:147          Compare Less Than (bool)

-0:147            'i' (int)

+0:147          Compare Less Than (temp bool)

+0:147            'i' (temp int)

 0:147            Constant:

 0:147              42 (const int)

 0:147          Loop Body

 0:148          Sequence

-0:148            add second child into first child (float)

-0:148              direct index (float)

-0:148                'color' (4-component vector of float)

+0:148            add second child into first child (temp float)

+0:148              direct index (temp float)

+0:148                'color' (temp 4-component vector of float)

 0:148                Constant:

 0:148                  2 (const int)

 0:148              'd3' (uniform float)

-0:149            Test condition and select (void)

+0:149            Test condition and select (temp void)

 0:149              Condition

-0:149              Compare Less Than (bool)

-0:149                direct index (float)

-0:149                  'color' (4-component vector of float)

+0:149              Compare Less Than (temp bool)

+0:149                direct index (temp float)

+0:149                  'color' (temp 4-component vector of float)

 0:149                  Constant:

 0:149                    0 (const int)

 0:149                'd4' (uniform float)

 0:149              true case

 0:150              Branch: Break

-0:151            Pre-Increment (float)

-0:151              direct index (float)

-0:151                'color' (4-component vector of float)

+0:151            Pre-Increment (temp float)

+0:151              direct index (temp float)

+0:151                'color' (temp 4-component vector of float)

 0:151                Constant:

 0:151                  3 (const int)

 0:147          Loop Terminal Expression

-0:147          Pre-Increment (int)

-0:147            'i' (int)

+0:147          Pre-Increment (temp int)

+0:147            'i' (temp int)

 0:163      Loop with condition not tested first

 0:163        Loop Condition

-0:163        Compare Less Than (bool)

-0:163          direct index (float)

-0:163            'color' (4-component vector of float)

+0:163        Compare Less Than (temp bool)

+0:163          direct index (temp float)

+0:163            'color' (temp 4-component vector of float)

 0:163            Constant:

 0:163              2 (const int)

 0:163          'd4' (uniform float)

 0:163        Loop Body

 0:156        Sequence

-0:156          add second child into first child (4-component vector of float)

-0:156            'color' (4-component vector of float)

+0:156          add second child into first child (temp 4-component vector of float)

+0:156            'color' (temp 4-component vector of float)

 0:156            'bigColor4' (uniform 4-component vector of float)

-0:157          Test condition and select (void)

+0:157          Test condition and select (temp void)

 0:157            Condition

-0:157            Compare Less Than (bool)

-0:157              direct index (float)

-0:157                'color' (4-component vector of float)

+0:157            Compare Less Than (temp bool)

+0:157              direct index (temp float)

+0:157                'color' (temp 4-component vector of float)

 0:157                Constant:

 0:157                  0 (const int)

 0:157              'd4' (uniform float)

 0:157            true case

 0:158            Branch: Continue

-0:159          Test condition and select (void)

+0:159          Test condition and select (temp void)

 0:159            Condition

-0:159            Compare Less Than (bool)

-0:159              direct index (float)

-0:159                'color' (4-component vector of float)

+0:159            Compare Less Than (temp bool)

+0:159              direct index (temp float)

+0:159                'color' (temp 4-component vector of float)

 0:159                Constant:

 0:159                  1 (const int)

 0:159              'd4' (uniform float)

 0:159            true case

-0:160            add second child into first child (float)

-0:160              direct index (float)

-0:160                'color' (4-component vector of float)

+0:160            add second child into first child (temp float)

+0:160              direct index (temp float)

+0:160                'color' (temp 4-component vector of float)

 0:160                Constant:

 0:160                  1 (const int)

 0:160              'd4' (uniform float)

 0:159            false case

-0:162            add second child into first child (float)

-0:162              direct index (float)

-0:162                'color' (4-component vector of float)

+0:162            add second child into first child (temp float)

+0:162              direct index (temp float)

+0:162                'color' (temp 4-component vector of float)

 0:162                Constant:

 0:162                  0 (const int)

 0:162              'd4' (uniform float)

 0:170      Loop with condition not tested first

 0:170        Loop Condition

-0:170        Compare Less Than (bool)

-0:170          direct index (float)

-0:170            'color' (4-component vector of float)

+0:170        Compare Less Than (temp bool)

+0:170          direct index (temp float)

+0:170            'color' (temp 4-component vector of float)

 0:170            Constant:

 0:170              0 (const int)

 0:170          'd5' (uniform float)

 0:170        Loop Body

 0:167        Sequence

-0:167          add second child into first child (4-component vector of float)

-0:167            'color' (4-component vector of float)

+0:167          add second child into first child (temp 4-component vector of float)

+0:167            'color' (temp 4-component vector of float)

 0:167            'bigColor5' (uniform 4-component vector of float)

-0:168          Test condition and select (void)

+0:168          Test condition and select (temp void)

 0:168            Condition

-0:168            Compare Less Than (bool)

-0:168              direct index (float)

-0:168                'color' (4-component vector of float)

+0:168            Compare Less Than (temp bool)

+0:168              direct index (temp float)

+0:168                'color' (temp 4-component vector of float)

 0:168                Constant:

 0:168                  1 (const int)

 0:168              'd5' (uniform float)

 0:168            true case

-0:169            add second child into first child (float)

-0:169              direct index (float)

-0:169                'color' (4-component vector of float)

+0:169            add second child into first child (temp float)

+0:169              direct index (temp float)

+0:169                'color' (temp 4-component vector of float)

 0:169                Constant:

 0:169                  1 (const int)

 0:169              'd5' (uniform float)

-0:173      Test condition and select (void)

+0:173      Test condition and select (temp void)

 0:173        Condition

-0:173        Compare Less Than (bool)

-0:173          direct index (float)

-0:173            'color' (4-component vector of float)

+0:173        Compare Less Than (temp bool)

+0:173          direct index (temp float)

+0:173            'color' (temp 4-component vector of float)

 0:173            Constant:

 0:173              0 (const int)

 0:173          'd6' (uniform float)

@@ -1444,41 +1444,41 @@
 0:174        Sequence

 0:174          Loop with condition tested first

 0:174            Loop Condition

-0:174            Compare Less Than (bool)

-0:174              direct index (float)

-0:174                'color' (4-component vector of float)

+0:174            Compare Less Than (temp bool)

+0:174              direct index (temp float)

+0:174                'color' (temp 4-component vector of float)

 0:174                Constant:

 0:174                  1 (const int)

 0:174              'd6' (uniform float)

 0:174            Loop Body

-0:175            add second child into first child (4-component vector of float)

-0:175              'color' (4-component vector of float)

+0:175            add second child into first child (temp 4-component vector of float)

+0:175              'color' (temp 4-component vector of float)

 0:175              'bigColor6' (uniform 4-component vector of float)

 0:173        false case

 0:177        Sequence

 0:177          Loop with condition tested first

 0:177            Loop Condition

-0:177            Compare Less Than (bool)

-0:177              direct index (float)

-0:177                'color' (4-component vector of float)

+0:177            Compare Less Than (temp bool)

+0:177              direct index (temp float)

+0:177                'color' (temp 4-component vector of float)

 0:177                Constant:

 0:177                  2 (const int)

 0:177              'd6' (uniform float)

 0:177            Loop Body

-0:178            add second child into first child (float)

-0:178              direct index (float)

-0:178                'color' (4-component vector of float)

+0:178            add second child into first child (temp float)

+0:178              direct index (temp float)

+0:178                'color' (temp 4-component vector of float)

 0:178                Constant:

 0:178                  2 (const int)

-0:178              direct index (float)

+0:178              direct index (temp float)

 0:178                'bigColor6' (uniform 4-component vector of float)

 0:178                Constant:

 0:178                  2 (const int)

-0:182      Test condition and select (void)

+0:182      Test condition and select (temp void)

 0:182        Condition

-0:182        Compare Less Than (bool)

-0:182          direct index (float)

-0:182            'color' (4-component vector of float)

+0:182        Compare Less Than (temp bool)

+0:182          direct index (temp float)

+0:182            'color' (temp 4-component vector of float)

 0:182            Constant:

 0:182              0 (const int)

 0:182          'd6' (uniform float)

@@ -1486,20 +1486,20 @@
 0:183        Sequence

 0:183          Loop with condition tested first

 0:183            Loop Condition

-0:183            Compare Less Than (bool)

-0:183              direct index (float)

-0:183                'color' (4-component vector of float)

+0:183            Compare Less Than (temp bool)

+0:183              direct index (temp float)

+0:183                'color' (temp 4-component vector of float)

 0:183                Constant:

 0:183                  1 (const int)

 0:183              'd6' (uniform float)

 0:183            Loop Body

 0:184            Sequence

-0:184              add second child into first child (4-component vector of float)

-0:184                'color' (4-component vector of float)

+0:184              add second child into first child (temp 4-component vector of float)

+0:184                'color' (temp 4-component vector of float)

 0:184                'bigColor6' (uniform 4-component vector of float)

-0:185              Test condition and select (void)

+0:185              Test condition and select (temp void)

 0:185                Condition

-0:185                Compare Less Than (bool)

+0:185                Compare Less Than (temp bool)

 0:185                  'd7' (uniform float)

 0:185                  Constant:

 0:185                    1.000000

@@ -1509,19 +1509,19 @@
 0:190        Sequence

 0:190          Loop with condition tested first

 0:190            Loop Condition

-0:190            Compare Less Than (bool)

-0:190              direct index (float)

-0:190                'color' (4-component vector of float)

+0:190            Compare Less Than (temp bool)

+0:190              direct index (temp float)

+0:190                'color' (temp 4-component vector of float)

 0:190                Constant:

 0:190                  2 (const int)

 0:190              'd6' (uniform float)

 0:190            Loop Body

-0:191            add second child into first child (float)

-0:191              direct index (float)

-0:191                'color' (4-component vector of float)

+0:191            add second child into first child (temp float)

+0:191              direct index (temp float)

+0:191                'color' (temp 4-component vector of float)

 0:191                Constant:

 0:191                  2 (const int)

-0:191              direct index (float)

+0:191              direct index (temp float)

 0:191                'bigColor6' (uniform 4-component vector of float)

 0:191                Constant:

 0:191                  2 (const int)

@@ -1531,252 +1531,252 @@
 0:209          true (const bool)

 0:209        Loop Body

 0:197        Sequence

-0:197          Test condition and select (void)

+0:197          Test condition and select (temp void)

 0:197            Condition

-0:197            Compare Less Than (bool)

+0:197            Compare Less Than (temp bool)

 0:197              'd7' (uniform float)

 0:197              Constant:

 0:197                0.000000

 0:197            true case

 0:198            Branch: Break

-0:200          add second child into first child (4-component vector of float)

-0:200            'color' (4-component vector of float)

+0:200          add second child into first child (temp 4-component vector of float)

+0:200            'color' (temp 4-component vector of float)

 0:200            'bigColor7' (uniform 4-component vector of float)

-0:202          Test condition and select (void)

+0:202          Test condition and select (temp void)

 0:202            Condition

-0:202            Compare Less Than (bool)

+0:202            Compare Less Than (temp bool)

 0:202              'd7' (uniform float)

 0:202              Constant:

 0:202                1.000000

 0:202            true case

 0:203            Sequence

-0:203              Post-Increment (float)

-0:203                direct index (float)

-0:203                  'color' (4-component vector of float)

+0:203              Post-Increment (temp float)

+0:203                direct index (temp float)

+0:203                  'color' (temp 4-component vector of float)

 0:203                  Constant:

 0:203                    2 (const int)

 0:204              Branch: Break

-0:207          add second child into first child (4-component vector of float)

-0:207            'color' (4-component vector of float)

+0:207          add second child into first child (temp 4-component vector of float)

+0:207            'color' (temp 4-component vector of float)

 0:207            'BaseColor' (smooth in 4-component vector of float)

 0:234      Loop with condition not tested first

 0:234        Loop Condition

-0:234        Compare Less Than (bool)

-0:234          direct index (float)

-0:234            'color' (4-component vector of float)

+0:234        Compare Less Than (temp bool)

+0:234          direct index (temp float)

+0:234            'color' (temp 4-component vector of float)

 0:234            Constant:

 0:234              2 (const int)

 0:234          'd8' (uniform float)

 0:234        Loop Body

 0:217        Sequence

-0:217          Test condition and select (void)

+0:217          Test condition and select (temp void)

 0:217            Condition

-0:217            Compare Less Than (bool)

+0:217            Compare Less Than (temp bool)

 0:217              'd8' (uniform float)

 0:217              Constant:

 0:217                0.000000

 0:217            true case

 0:218            Branch: Break

-0:220          add second child into first child (4-component vector of float)

-0:220            'color' (4-component vector of float)

+0:220          add second child into first child (temp 4-component vector of float)

+0:220            'color' (temp 4-component vector of float)

 0:220            'bigColor7' (uniform 4-component vector of float)

-0:222          Test condition and select (void)

+0:222          Test condition and select (temp void)

 0:222            Condition

-0:222            Compare Less Than (bool)

+0:222            Compare Less Than (temp bool)

 0:222              'd8' (uniform float)

 0:222              Constant:

 0:222                1.000000

 0:222            true case

 0:223            Sequence

-0:223              Post-Increment (float)

-0:223                direct index (float)

-0:223                  'color' (4-component vector of float)

+0:223              Post-Increment (temp float)

+0:223                direct index (temp float)

+0:223                  'color' (temp 4-component vector of float)

 0:223                  Constant:

 0:223                    2 (const int)

-0:224              Test condition and select (void)

+0:224              Test condition and select (temp void)

 0:224                Condition

-0:224                Compare Less Than (bool)

+0:224                Compare Less Than (temp bool)

 0:224                  'd8' (uniform float)

 0:224                  Constant:

 0:224                    2.000000

 0:224                true case

 0:225                Sequence

-0:225                  Post-Increment (float)

-0:225                    direct index (float)

-0:225                      'color' (4-component vector of float)

+0:225                  Post-Increment (temp float)

+0:225                    direct index (temp float)

+0:225                      'color' (temp 4-component vector of float)

 0:225                      Constant:

 0:225                        1 (const int)

 0:224                false case

 0:227                Sequence

-0:227                  Post-Increment (float)

-0:227                    direct index (float)

-0:227                      'color' (4-component vector of float)

+0:227                  Post-Increment (temp float)

+0:227                    direct index (temp float)

+0:227                      'color' (temp 4-component vector of float)

 0:227                      Constant:

 0:227                        0 (const int)

 0:229              Branch: Break

-0:232          add second child into first child (4-component vector of float)

-0:232            'color' (4-component vector of float)

+0:232          add second child into first child (temp 4-component vector of float)

+0:232            'color' (temp 4-component vector of float)

 0:232            'BaseColor' (smooth in 4-component vector of float)

 0:237      Loop with condition tested first

 0:237        Loop Condition

-0:237        Compare Less Than (bool)

-0:237          direct index (float)

-0:237            'color' (4-component vector of float)

+0:237        Compare Less Than (temp bool)

+0:237          direct index (temp float)

+0:237            'color' (temp 4-component vector of float)

 0:237            Constant:

 0:237              3 (const int)

 0:237          'd9' (uniform float)

 0:237        Loop Body

 0:238        Sequence

-0:238          Test condition and select (void)

+0:238          Test condition and select (temp void)

 0:238            Condition

-0:238            Compare Greater Than (bool)

+0:238            Compare Greater Than (temp bool)

 0:238              'd9' (uniform float)

 0:238              'd8' (uniform float)

 0:238            true case

 0:239            Sequence

-0:239              Test condition and select (void)

+0:239              Test condition and select (temp void)

 0:239                Condition

-0:239                Compare Less Than or Equal (bool)

-0:239                  direct index (float)

-0:239                    'color' (4-component vector of float)

+0:239                Compare Less Than or Equal (temp bool)

+0:239                  direct index (temp float)

+0:239                    'color' (temp 4-component vector of float)

 0:239                    Constant:

 0:239                      0 (const int)

 0:239                  'd7' (uniform float)

 0:239                true case

 0:240                Sequence

-0:240                  Test condition and select (void)

+0:240                  Test condition and select (temp void)

 0:240                    Condition

-0:240                    Compare Equal (bool)

-0:240                      direct index (float)

-0:240                        'color' (4-component vector of float)

+0:240                    Compare Equal (temp bool)

+0:240                      direct index (temp float)

+0:240                        'color' (temp 4-component vector of float)

 0:240                        Constant:

 0:240                          2 (const int)

 0:240                      Constant:

 0:240                        5.000000

 0:240                    true case

-0:241                    Post-Increment (float)

-0:241                      direct index (float)

-0:241                        'color' (4-component vector of float)

+0:241                    Post-Increment (temp float)

+0:241                      direct index (temp float)

+0:241                        'color' (temp 4-component vector of float)

 0:241                        Constant:

 0:241                          3 (const int)

 0:240                    false case

 0:243                    Branch: Break

 0:250      Loop with condition tested first

 0:250        Loop Condition

-0:250        Compare Less Than (bool)

-0:250          direct index (float)

-0:250            'color' (4-component vector of float)

+0:250        Compare Less Than (temp bool)

+0:250          direct index (temp float)

+0:250            'color' (temp 4-component vector of float)

 0:250            Constant:

 0:250              2 (const int)

 0:250          'd10' (uniform float)

 0:250        Loop Body

 0:251        Sequence

-0:251          Post-Increment (float)

-0:251            direct index (float)

-0:251              'color' (4-component vector of float)

+0:251          Post-Increment (temp float)

+0:251            direct index (temp float)

+0:251              'color' (temp 4-component vector of float)

 0:251              Constant:

 0:251                1 (const int)

-0:252          Test condition and select (void)

+0:252          Test condition and select (temp void)

 0:252            Condition

-0:252            Compare Less Than (bool)

-0:252              direct index (float)

-0:252                'color' (4-component vector of float)

+0:252            Compare Less Than (temp bool)

+0:252              direct index (temp float)

+0:252                'color' (temp 4-component vector of float)

 0:252                Constant:

 0:252                  1 (const int)

 0:252              'd11' (uniform float)

 0:252            true case

 0:253            Sequence

-0:253              Post-Increment (float)

-0:253                direct index (float)

-0:253                  'color' (4-component vector of float)

+0:253              Post-Increment (temp float)

+0:253                direct index (temp float)

+0:253                  'color' (temp 4-component vector of float)

 0:253                  Constant:

 0:253                    2 (const int)

-0:254              Test condition and select (void)

+0:254              Test condition and select (temp void)

 0:254                Condition

-0:254                Compare Less Than (bool)

-0:254                  direct index (float)

-0:254                    'color' (4-component vector of float)

+0:254                Compare Less Than (temp bool)

+0:254                  direct index (temp float)

+0:254                    'color' (temp 4-component vector of float)

 0:254                    Constant:

 0:254                      3 (const int)

 0:254                  'd12' (uniform float)

 0:254                true case

-0:255                Post-Increment (float)

-0:255                  direct index (float)

-0:255                    'color' (4-component vector of float)

+0:255                Post-Increment (temp float)

+0:255                  direct index (temp float)

+0:255                    'color' (temp 4-component vector of float)

 0:255                    Constant:

 0:255                      3 (const int)

 0:254                false case

-0:257                Post-Increment (float)

-0:257                  direct index (float)

-0:257                    'color' (4-component vector of float)

+0:257                Post-Increment (temp float)

+0:257                  direct index (temp float)

+0:257                    'color' (temp 4-component vector of float)

 0:257                    Constant:

 0:257                      0 (const int)

 0:258              Branch: Continue

-0:261          Post-Increment (4-component vector of float)

-0:261            'color' (4-component vector of float)

+0:261          Post-Increment (temp 4-component vector of float)

+0:261            'color' (temp 4-component vector of float)

 0:262          Branch: Break

 0:266      Loop with condition tested first

 0:266        Loop Condition

-0:266        Compare Less Than (bool)

-0:266          direct index (float)

-0:266            'color' (4-component vector of float)

+0:266        Compare Less Than (temp bool)

+0:266          direct index (temp float)

+0:266            'color' (temp 4-component vector of float)

 0:266            Constant:

 0:266              0 (const int)

 0:266          Constant:

 0:266            10.000000

 0:266        Loop Body

 0:267        Sequence

-0:267          add second child into first child (4-component vector of float)

-0:267            'color' (4-component vector of float)

+0:267          add second child into first child (temp 4-component vector of float)

+0:267            'color' (temp 4-component vector of float)

 0:267            'bigColor8' (uniform 4-component vector of float)

-0:269          Test condition and select (void)

+0:269          Test condition and select (temp void)

 0:269            Condition

-0:269            Compare Less Than (bool)

-0:269              direct index (float)

-0:269                'color' (4-component vector of float)

+0:269            Compare Less Than (temp bool)

+0:269              direct index (temp float)

+0:269                'color' (temp 4-component vector of float)

 0:269                Constant:

 0:269                  2 (const int)

 0:269              'd8' (uniform float)

 0:269            true case

-0:270            Test condition and select (void)

+0:270            Test condition and select (temp void)

 0:270              Condition

-0:270              Compare Less Than (bool)

-0:270                direct index (float)

-0:270                  'color' (4-component vector of float)

+0:270              Compare Less Than (temp bool)

+0:270                direct index (temp float)

+0:270                  'color' (temp 4-component vector of float)

 0:270                  Constant:

 0:270                    3 (const int)

 0:270                'd6' (uniform float)

 0:270              true case

 0:271              Branch: Continue

-0:273          add second child into first child (float)

-0:273            direct index (float)

-0:273              'color' (4-component vector of float)

+0:273          add second child into first child (temp float)

+0:273            direct index (temp float)

+0:273              'color' (temp 4-component vector of float)

 0:273              Constant:

 0:273                1 (const int)

-0:273            direct index (float)

+0:273            direct index (temp float)

 0:273              'bigColor8' (uniform 4-component vector of float)

 0:273              Constant:

 0:273                0 (const int)

-0:276      Post-Increment (4-component vector of float)

-0:276        'color' (4-component vector of float)

-0:277      move second child to first child (4-component vector of float)

+0:276      Post-Increment (temp 4-component vector of float)

+0:276        'color' (temp 4-component vector of float)

+0:277      move second child to first child (temp 4-component vector of float)

 0:277        'gl_FragColor' (fragColor 4-component vector of float)

-0:277        'color' (4-component vector of float)

+0:277        'color' (temp 4-component vector of float)

 0:280      Loop with condition tested first

 0:280        Loop Condition

-0:280        Compare Less Than (bool)

-0:280          direct index (float)

-0:280            'color' (4-component vector of float)

+0:280        Compare Less Than (temp bool)

+0:280          direct index (temp float)

+0:280            'color' (temp 4-component vector of float)

 0:280            Constant:

 0:280              0 (const int)

 0:280          'd14' (uniform float)

 0:280        Loop Body

 0:281        Sequence

-0:281          Test condition and select (void)

+0:281          Test condition and select (temp void)

 0:281            Condition

-0:281            Compare Less Than (bool)

-0:281              direct index (float)

-0:281                'color' (4-component vector of float)

+0:281            Compare Less Than (temp bool)

+0:281              direct index (temp float)

+0:281                'color' (temp 4-component vector of float)

 0:281                Constant:

 0:281                  1 (const int)

 0:281              'd15' (uniform float)

@@ -1784,50 +1784,50 @@
 0:282            Sequence

 0:282              Branch: Return

 0:281            false case

-0:285            Post-Increment (4-component vector of float)

-0:285              'color' (4-component vector of float)

-0:288      Post-Increment (4-component vector of float)

-0:288        'color' (4-component vector of float)

+0:285            Post-Increment (temp 4-component vector of float)

+0:285              'color' (temp 4-component vector of float)

+0:288      Post-Increment (temp 4-component vector of float)

+0:288        'color' (temp 4-component vector of float)

 0:290      Loop with condition tested first

 0:290        Loop Condition

-0:290        Compare Less Than (bool)

-0:290          direct index (float)

-0:290            'color' (4-component vector of float)

+0:290        Compare Less Than (temp bool)

+0:290          direct index (temp float)

+0:290            'color' (temp 4-component vector of float)

 0:290            Constant:

 0:290              3 (const int)

 0:290          'd16' (uniform float)

 0:290        Loop Body

 0:291        Sequence

-0:291          Post-Increment (float)

-0:291            direct index (float)

-0:291              'color' (4-component vector of float)

+0:291          Post-Increment (temp float)

+0:291            direct index (temp float)

+0:291              'color' (temp 4-component vector of float)

 0:291              Constant:

 0:291                3 (const int)

 0:296      Loop with condition tested first

 0:296        Loop Condition

-0:296        logical-and (bool)

-0:296          Compare Less Than (bool)

-0:296            direct index (float)

-0:296              'color' (4-component vector of float)

+0:296        logical-and (temp bool)

+0:296          Compare Less Than (temp bool)

+0:296            direct index (temp float)

+0:296              'color' (temp 4-component vector of float)

 0:296              Constant:

 0:296                3 (const int)

 0:296            'd2' (uniform float)

-0:296          Compare Less Than (bool)

-0:296            direct index (float)

-0:296              'color' (4-component vector of float)

+0:296          Compare Less Than (temp bool)

+0:296            direct index (temp float)

+0:296              'color' (temp 4-component vector of float)

 0:296              Constant:

 0:296                1 (const int)

 0:296            'd3' (uniform float)

 0:296        Loop Body

 0:297        Sequence

-0:297          add second child into first child (4-component vector of float)

-0:297            'color' (4-component vector of float)

+0:297          add second child into first child (temp 4-component vector of float)

+0:297            'color' (temp 4-component vector of float)

 0:297            'bigColor1_2' (uniform 4-component vector of float)

-0:298          Test condition and select (void)

+0:298          Test condition and select (temp void)

 0:298            Condition

-0:298            Compare Less Than (bool)

-0:298              direct index (float)

-0:298                'color' (4-component vector of float)

+0:298            Compare Less Than (temp bool)

+0:298              direct index (temp float)

+0:298                'color' (temp 4-component vector of float)

 0:298                Constant:

 0:298                  2 (const int)

 0:298              'd3' (uniform float)

@@ -1835,41 +1835,41 @@
 0:299            Branch: Return

 0:307      Loop with condition not tested first

 0:307        Loop Condition

-0:307        Compare Less Than (bool)

-0:307          direct index (float)

-0:307            'color' (4-component vector of float)

+0:307        Compare Less Than (temp bool)

+0:307          direct index (temp float)

+0:307            'color' (temp 4-component vector of float)

 0:307            Constant:

 0:307              0 (const int)

 0:307          'd17' (uniform float)

 0:307        Loop Body

 0:304        Sequence

-0:304          Test condition and select (void)

+0:304          Test condition and select (temp void)

 0:304            Condition

-0:304            Compare Less Than (bool)

-0:304              direct index (float)

-0:304                'color' (4-component vector of float)

+0:304            Compare Less Than (temp bool)

+0:304              direct index (temp float)

+0:304                'color' (temp 4-component vector of float)

 0:304                Constant:

 0:304                  1 (const int)

 0:304              'd18' (uniform float)

 0:304            true case

 0:305            Branch: Return

-0:306          Post-Increment (4-component vector of float)

-0:306            'color' (4-component vector of float)

+0:306          Post-Increment (temp 4-component vector of float)

+0:306            'color' (temp 4-component vector of float)

 0:310      Loop with condition tested first

 0:310        Loop Condition

-0:310        Compare Less Than (bool)

-0:310          direct index (float)

-0:310            'color' (4-component vector of float)

+0:310        Compare Less Than (temp bool)

+0:310          direct index (temp float)

+0:310            'color' (temp 4-component vector of float)

 0:310            Constant:

 0:310              1 (const int)

 0:310          'd16' (uniform float)

 0:310        Loop Body

 0:311        Sequence

-0:311          Test condition and select (void)

+0:311          Test condition and select (temp void)

 0:311            Condition

-0:311            Compare Less Than (bool)

-0:311              direct index (float)

-0:311                'color' (4-component vector of float)

+0:311            Compare Less Than (temp bool)

+0:311              direct index (temp float)

+0:311                'color' (temp 4-component vector of float)

 0:311                Constant:

 0:311                  3 (const int)

 0:311              'd16' (uniform float)

@@ -1877,13 +1877,13 @@
 0:312            Sequence

 0:312              Branch: Kill

 0:311            false case

-0:314            Post-Increment (4-component vector of float)

-0:314              'color' (4-component vector of float)

-0:317      Post-Increment (4-component vector of float)

-0:317        'color' (4-component vector of float)

-0:319      move second child to first child (4-component vector of float)

+0:314            Post-Increment (temp 4-component vector of float)

+0:314              'color' (temp 4-component vector of float)

+0:317      Post-Increment (temp 4-component vector of float)

+0:317        'color' (temp 4-component vector of float)

+0:319      move second child to first child (temp 4-component vector of float)

 0:319        'gl_FragColor' (fragColor 4-component vector of float)

-0:319        'color' (4-component vector of float)

+0:319        'color' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'bigColor' (uniform 4-component vector of float)

 0:?     'bigColor1_1' (uniform 4-component vector of float)

diff --git a/Test/baseResults/loopsArtificial.frag.out b/Test/baseResults/loopsArtificial.frag.out
index 5a53b0b..f7d05a2 100644
--- a/Test/baseResults/loopsArtificial.frag.out
+++ b/Test/baseResults/loopsArtificial.frag.out
@@ -3,168 +3,168 @@
 

 Shader version: 130

 0:? Sequence

-0:53  Function Definition: main( (void)

+0:53  Function Definition: main( (global void)

 0:53    Function Parameters: 

 0:55    Sequence

 0:55      Sequence

-0:55        move second child to first child (4-component vector of float)

-0:55          'color' (4-component vector of float)

+0:55        move second child to first child (temp 4-component vector of float)

+0:55          'color' (temp 4-component vector of float)

 0:55          'BaseColor' (smooth in 4-component vector of float)

 0:71      Loop with condition not tested first

 0:71        Loop Condition

-0:71        Compare Less Than (bool)

-0:71          direct index (float)

-0:71            'color' (4-component vector of float)

+0:71        Compare Less Than (temp bool)

+0:71          direct index (temp float)

+0:71            'color' (temp 4-component vector of float)

 0:71            Constant:

 0:71              2 (const int)

 0:71          'd4' (uniform float)

 0:71        Loop Body

 0:59        Sequence

-0:59          add second child into first child (4-component vector of float)

-0:59            'color' (4-component vector of float)

+0:59          add second child into first child (temp 4-component vector of float)

+0:59            'color' (temp 4-component vector of float)

 0:59            'bigColor4' (uniform 4-component vector of float)

-0:60          Test condition and select (void)

+0:60          Test condition and select (temp void)

 0:60            Condition

-0:60            Compare Less Than (bool)

-0:60              direct index (float)

-0:60                'color' (4-component vector of float)

+0:60            Compare Less Than (temp bool)

+0:60              direct index (temp float)

+0:60                'color' (temp 4-component vector of float)

 0:60                Constant:

 0:60                  0 (const int)

 0:60              'd4' (uniform float)

 0:60            true case

 0:61            Sequence

-0:61              add second child into first child (float)

-0:61                direct index (float)

-0:61                  'color' (4-component vector of float)

+0:61              add second child into first child (temp float)

+0:61                direct index (temp float)

+0:61                  'color' (temp 4-component vector of float)

 0:61                  Constant:

 0:61                    2 (const int)

 0:61                Constant:

 0:61                  2.000000

-0:62              Test condition and select (void)

+0:62              Test condition and select (temp void)

 0:62                Condition

-0:62                Compare Less Than (bool)

-0:62                  direct index (float)

-0:62                    'color' (4-component vector of float)

+0:62                Compare Less Than (temp bool)

+0:62                  direct index (temp float)

+0:62                    'color' (temp 4-component vector of float)

 0:62                    Constant:

 0:62                      2 (const int)

 0:62                  'd4' (uniform float)

 0:62                true case

 0:63                Sequence

-0:63                  Post-Increment (float)

-0:63                    direct index (float)

-0:63                      'color' (4-component vector of float)

+0:63                  Post-Increment (temp float)

+0:63                    direct index (temp float)

+0:63                      'color' (temp 4-component vector of float)

 0:63                      Constant:

 0:63                        0 (const int)

 0:64                  Branch: Continue

-0:67          Test condition and select (void)

+0:67          Test condition and select (temp void)

 0:67            Condition

-0:67            Compare Less Than (bool)

-0:67              direct index (float)

-0:67                'color' (4-component vector of float)

+0:67            Compare Less Than (temp bool)

+0:67              direct index (temp float)

+0:67                'color' (temp 4-component vector of float)

 0:67                Constant:

 0:67                  1 (const int)

 0:67              'd4' (uniform float)

 0:67            true case

-0:68            add second child into first child (float)

-0:68              direct index (float)

-0:68                'color' (4-component vector of float)

+0:68            add second child into first child (temp float)

+0:68              direct index (temp float)

+0:68                'color' (temp 4-component vector of float)

 0:68                Constant:

 0:68                  1 (const int)

 0:68              'd4' (uniform float)

 0:67            false case

-0:70            add second child into first child (float)

-0:70              direct index (float)

-0:70                'color' (4-component vector of float)

+0:70            add second child into first child (temp float)

+0:70              direct index (temp float)

+0:70                'color' (temp 4-component vector of float)

 0:70                Constant:

 0:70                  0 (const int)

 0:70              'd4' (uniform float)

 0:74      Loop with condition tested first

 0:74        Loop Condition

-0:74        Compare Less Than (bool)

-0:74          direct index (float)

-0:74            'color' (4-component vector of float)

+0:74        Compare Less Than (temp bool)

+0:74          direct index (temp float)

+0:74            'color' (temp 4-component vector of float)

 0:74            Constant:

 0:74              3 (const int)

 0:74          'd13' (uniform float)

 0:74        Loop Body

 0:75        Sequence

-0:75          Test condition and select (void)

+0:75          Test condition and select (temp void)

 0:75            Condition

-0:75            Compare Less Than (bool)

-0:75              direct index (float)

-0:75                'color' (4-component vector of float)

+0:75            Compare Less Than (temp bool)

+0:75              direct index (temp float)

+0:75                'color' (temp 4-component vector of float)

 0:75                Constant:

 0:75                  2 (const int)

 0:75              'd13' (uniform float)

 0:75            true case

-0:76            Post-Increment (4-component vector of float)

-0:76              'color' (4-component vector of float)

+0:76            Post-Increment (temp 4-component vector of float)

+0:76              'color' (temp 4-component vector of float)

 0:75            false case

-0:78            Post-Decrement (4-component vector of float)

-0:78              'color' (4-component vector of float)

-0:80          add second child into first child (4-component vector of float)

-0:80            'color' (4-component vector of float)

+0:78            Post-Decrement (temp 4-component vector of float)

+0:78              'color' (temp 4-component vector of float)

+0:80          add second child into first child (temp 4-component vector of float)

+0:80            'color' (temp 4-component vector of float)

 0:80            'bigColor4' (uniform 4-component vector of float)

-0:81          Test condition and select (void)

+0:81          Test condition and select (temp void)

 0:81            Condition

-0:81            Compare Less Than (bool)

-0:81              direct index (float)

-0:81                'color' (4-component vector of float)

+0:81            Compare Less Than (temp bool)

+0:81              direct index (temp float)

+0:81                'color' (temp 4-component vector of float)

 0:81                Constant:

 0:81                  0 (const int)

 0:81              'd4' (uniform float)

 0:81            true case

 0:82            Sequence

-0:82              add second child into first child (float)

-0:82                direct index (float)

-0:82                  'color' (4-component vector of float)

+0:82              add second child into first child (temp float)

+0:82                direct index (temp float)

+0:82                  'color' (temp 4-component vector of float)

 0:82                  Constant:

 0:82                    2 (const int)

 0:82                Constant:

 0:82                  2.000000

-0:83              Test condition and select (void)

+0:83              Test condition and select (temp void)

 0:83                Condition

-0:83                Compare Less Than (bool)

-0:83                  direct index (float)

-0:83                    'color' (4-component vector of float)

+0:83                Compare Less Than (temp bool)

+0:83                  direct index (temp float)

+0:83                    'color' (temp 4-component vector of float)

 0:83                    Constant:

 0:83                      2 (const int)

 0:83                  'd4' (uniform float)

 0:83                true case

 0:84                Sequence

-0:84                  Post-Increment (float)

-0:84                    direct index (float)

-0:84                      'color' (4-component vector of float)

+0:84                  Post-Increment (temp float)

+0:84                    direct index (temp float)

+0:84                      'color' (temp 4-component vector of float)

 0:84                      Constant:

 0:84                        0 (const int)

 0:85                  Branch: Continue

-0:88          Test condition and select (void)

+0:88          Test condition and select (temp void)

 0:88            Condition

-0:88            Compare Less Than (bool)

-0:88              direct index (float)

-0:88                'color' (4-component vector of float)

+0:88            Compare Less Than (temp bool)

+0:88              direct index (temp float)

+0:88                'color' (temp 4-component vector of float)

 0:88                Constant:

 0:88                  1 (const int)

 0:88              'd4' (uniform float)

 0:88            true case

-0:89            add second child into first child (float)

-0:89              direct index (float)

-0:89                'color' (4-component vector of float)

+0:89            add second child into first child (temp float)

+0:89              direct index (temp float)

+0:89                'color' (temp 4-component vector of float)

 0:89                Constant:

 0:89                  1 (const int)

 0:89              'd4' (uniform float)

 0:88            false case

-0:91            add second child into first child (float)

-0:91              direct index (float)

-0:91                'color' (4-component vector of float)

+0:91            add second child into first child (temp float)

+0:91              direct index (temp float)

+0:91                'color' (temp 4-component vector of float)

 0:91                Constant:

 0:91                  0 (const int)

 0:91              'd4' (uniform float)

-0:94      Post-Increment (4-component vector of float)

-0:94        'color' (4-component vector of float)

-0:95      move second child to first child (4-component vector of float)

+0:94      Post-Increment (temp 4-component vector of float)

+0:94        'color' (temp 4-component vector of float)

+0:95      move second child to first child (temp 4-component vector of float)

 0:95        'gl_FragColor' (fragColor 4-component vector of float)

-0:95        'color' (4-component vector of float)

+0:95        'color' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'bigColor' (uniform 4-component vector of float)

 0:?     'bigColor1_1' (uniform 4-component vector of float)

@@ -220,168 +220,168 @@
 

 Shader version: 130

 0:? Sequence

-0:53  Function Definition: main( (void)

+0:53  Function Definition: main( (global void)

 0:53    Function Parameters: 

 0:55    Sequence

 0:55      Sequence

-0:55        move second child to first child (4-component vector of float)

-0:55          'color' (4-component vector of float)

+0:55        move second child to first child (temp 4-component vector of float)

+0:55          'color' (temp 4-component vector of float)

 0:55          'BaseColor' (smooth in 4-component vector of float)

 0:71      Loop with condition not tested first

 0:71        Loop Condition

-0:71        Compare Less Than (bool)

-0:71          direct index (float)

-0:71            'color' (4-component vector of float)

+0:71        Compare Less Than (temp bool)

+0:71          direct index (temp float)

+0:71            'color' (temp 4-component vector of float)

 0:71            Constant:

 0:71              2 (const int)

 0:71          'd4' (uniform float)

 0:71        Loop Body

 0:59        Sequence

-0:59          add second child into first child (4-component vector of float)

-0:59            'color' (4-component vector of float)

+0:59          add second child into first child (temp 4-component vector of float)

+0:59            'color' (temp 4-component vector of float)

 0:59            'bigColor4' (uniform 4-component vector of float)

-0:60          Test condition and select (void)

+0:60          Test condition and select (temp void)

 0:60            Condition

-0:60            Compare Less Than (bool)

-0:60              direct index (float)

-0:60                'color' (4-component vector of float)

+0:60            Compare Less Than (temp bool)

+0:60              direct index (temp float)

+0:60                'color' (temp 4-component vector of float)

 0:60                Constant:

 0:60                  0 (const int)

 0:60              'd4' (uniform float)

 0:60            true case

 0:61            Sequence

-0:61              add second child into first child (float)

-0:61                direct index (float)

-0:61                  'color' (4-component vector of float)

+0:61              add second child into first child (temp float)

+0:61                direct index (temp float)

+0:61                  'color' (temp 4-component vector of float)

 0:61                  Constant:

 0:61                    2 (const int)

 0:61                Constant:

 0:61                  2.000000

-0:62              Test condition and select (void)

+0:62              Test condition and select (temp void)

 0:62                Condition

-0:62                Compare Less Than (bool)

-0:62                  direct index (float)

-0:62                    'color' (4-component vector of float)

+0:62                Compare Less Than (temp bool)

+0:62                  direct index (temp float)

+0:62                    'color' (temp 4-component vector of float)

 0:62                    Constant:

 0:62                      2 (const int)

 0:62                  'd4' (uniform float)

 0:62                true case

 0:63                Sequence

-0:63                  Post-Increment (float)

-0:63                    direct index (float)

-0:63                      'color' (4-component vector of float)

+0:63                  Post-Increment (temp float)

+0:63                    direct index (temp float)

+0:63                      'color' (temp 4-component vector of float)

 0:63                      Constant:

 0:63                        0 (const int)

 0:64                  Branch: Continue

-0:67          Test condition and select (void)

+0:67          Test condition and select (temp void)

 0:67            Condition

-0:67            Compare Less Than (bool)

-0:67              direct index (float)

-0:67                'color' (4-component vector of float)

+0:67            Compare Less Than (temp bool)

+0:67              direct index (temp float)

+0:67                'color' (temp 4-component vector of float)

 0:67                Constant:

 0:67                  1 (const int)

 0:67              'd4' (uniform float)

 0:67            true case

-0:68            add second child into first child (float)

-0:68              direct index (float)

-0:68                'color' (4-component vector of float)

+0:68            add second child into first child (temp float)

+0:68              direct index (temp float)

+0:68                'color' (temp 4-component vector of float)

 0:68                Constant:

 0:68                  1 (const int)

 0:68              'd4' (uniform float)

 0:67            false case

-0:70            add second child into first child (float)

-0:70              direct index (float)

-0:70                'color' (4-component vector of float)

+0:70            add second child into first child (temp float)

+0:70              direct index (temp float)

+0:70                'color' (temp 4-component vector of float)

 0:70                Constant:

 0:70                  0 (const int)

 0:70              'd4' (uniform float)

 0:74      Loop with condition tested first

 0:74        Loop Condition

-0:74        Compare Less Than (bool)

-0:74          direct index (float)

-0:74            'color' (4-component vector of float)

+0:74        Compare Less Than (temp bool)

+0:74          direct index (temp float)

+0:74            'color' (temp 4-component vector of float)

 0:74            Constant:

 0:74              3 (const int)

 0:74          'd13' (uniform float)

 0:74        Loop Body

 0:75        Sequence

-0:75          Test condition and select (void)

+0:75          Test condition and select (temp void)

 0:75            Condition

-0:75            Compare Less Than (bool)

-0:75              direct index (float)

-0:75                'color' (4-component vector of float)

+0:75            Compare Less Than (temp bool)

+0:75              direct index (temp float)

+0:75                'color' (temp 4-component vector of float)

 0:75                Constant:

 0:75                  2 (const int)

 0:75              'd13' (uniform float)

 0:75            true case

-0:76            Post-Increment (4-component vector of float)

-0:76              'color' (4-component vector of float)

+0:76            Post-Increment (temp 4-component vector of float)

+0:76              'color' (temp 4-component vector of float)

 0:75            false case

-0:78            Post-Decrement (4-component vector of float)

-0:78              'color' (4-component vector of float)

-0:80          add second child into first child (4-component vector of float)

-0:80            'color' (4-component vector of float)

+0:78            Post-Decrement (temp 4-component vector of float)

+0:78              'color' (temp 4-component vector of float)

+0:80          add second child into first child (temp 4-component vector of float)

+0:80            'color' (temp 4-component vector of float)

 0:80            'bigColor4' (uniform 4-component vector of float)

-0:81          Test condition and select (void)

+0:81          Test condition and select (temp void)

 0:81            Condition

-0:81            Compare Less Than (bool)

-0:81              direct index (float)

-0:81                'color' (4-component vector of float)

+0:81            Compare Less Than (temp bool)

+0:81              direct index (temp float)

+0:81                'color' (temp 4-component vector of float)

 0:81                Constant:

 0:81                  0 (const int)

 0:81              'd4' (uniform float)

 0:81            true case

 0:82            Sequence

-0:82              add second child into first child (float)

-0:82                direct index (float)

-0:82                  'color' (4-component vector of float)

+0:82              add second child into first child (temp float)

+0:82                direct index (temp float)

+0:82                  'color' (temp 4-component vector of float)

 0:82                  Constant:

 0:82                    2 (const int)

 0:82                Constant:

 0:82                  2.000000

-0:83              Test condition and select (void)

+0:83              Test condition and select (temp void)

 0:83                Condition

-0:83                Compare Less Than (bool)

-0:83                  direct index (float)

-0:83                    'color' (4-component vector of float)

+0:83                Compare Less Than (temp bool)

+0:83                  direct index (temp float)

+0:83                    'color' (temp 4-component vector of float)

 0:83                    Constant:

 0:83                      2 (const int)

 0:83                  'd4' (uniform float)

 0:83                true case

 0:84                Sequence

-0:84                  Post-Increment (float)

-0:84                    direct index (float)

-0:84                      'color' (4-component vector of float)

+0:84                  Post-Increment (temp float)

+0:84                    direct index (temp float)

+0:84                      'color' (temp 4-component vector of float)

 0:84                      Constant:

 0:84                        0 (const int)

 0:85                  Branch: Continue

-0:88          Test condition and select (void)

+0:88          Test condition and select (temp void)

 0:88            Condition

-0:88            Compare Less Than (bool)

-0:88              direct index (float)

-0:88                'color' (4-component vector of float)

+0:88            Compare Less Than (temp bool)

+0:88              direct index (temp float)

+0:88                'color' (temp 4-component vector of float)

 0:88                Constant:

 0:88                  1 (const int)

 0:88              'd4' (uniform float)

 0:88            true case

-0:89            add second child into first child (float)

-0:89              direct index (float)

-0:89                'color' (4-component vector of float)

+0:89            add second child into first child (temp float)

+0:89              direct index (temp float)

+0:89                'color' (temp 4-component vector of float)

 0:89                Constant:

 0:89                  1 (const int)

 0:89              'd4' (uniform float)

 0:88            false case

-0:91            add second child into first child (float)

-0:91              direct index (float)

-0:91                'color' (4-component vector of float)

+0:91            add second child into first child (temp float)

+0:91              direct index (temp float)

+0:91                'color' (temp 4-component vector of float)

 0:91                Constant:

 0:91                  0 (const int)

 0:91              'd4' (uniform float)

-0:94      Post-Increment (4-component vector of float)

-0:94        'color' (4-component vector of float)

-0:95      move second child to first child (4-component vector of float)

+0:94      Post-Increment (temp 4-component vector of float)

+0:94        'color' (temp 4-component vector of float)

+0:95      move second child to first child (temp 4-component vector of float)

 0:95        'gl_FragColor' (fragColor 4-component vector of float)

-0:95        'color' (4-component vector of float)

+0:95        'color' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'bigColor' (uniform 4-component vector of float)

 0:?     'bigColor1_1' (uniform 4-component vector of float)

diff --git a/Test/baseResults/mains1.frag.out b/Test/baseResults/mains1.frag.out
index 8b25322..efda6bd 100644
--- a/Test/baseResults/mains1.frag.out
+++ b/Test/baseResults/mains1.frag.out
@@ -2,7 +2,7 @@
 

 Shader version: 110

 0:? Sequence

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

 0:?   Linker Objects

 

@@ -10,7 +10,7 @@
 

 Shader version: 110

 0:? Sequence

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

 0:?   Linker Objects

 

@@ -25,7 +25,7 @@
 input primitive = none

 output primitive = points

 ERROR: node is still EOpNull!

-0:3  Function Definition: foo( (void)

+0:3  Function Definition: foo( (global void)

 0:3    Function Parameters: 

 0:?   Linker Objects

 

@@ -37,7 +37,7 @@
 input primitive = none

 output primitive = line_strip

 0:? Sequence

-0:3  Function Definition: bar( (void)

+0:3  Function Definition: bar( (global void)

 0:3    Function Parameters: 

 0:?   Linker Objects

 

@@ -60,16 +60,16 @@
 input primitive = none

 output primitive = points

 ERROR: node is still EOpNull!

-0:3  Function Definition: foo( (void)

+0:3  Function Definition: foo( (global void)

 0:3    Function Parameters: 

-0:3  Function Definition: bar( (void)

+0:3  Function Definition: bar( (global void)

 0:3    Function Parameters: 

 0:?   Linker Objects

 Shader version: 110

 0:? Sequence

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

 0:?   Linker Objects

 

diff --git a/Test/baseResults/matrix.frag.out b/Test/baseResults/matrix.frag.out
index c3fd5b8..9b99edb 100644
--- a/Test/baseResults/matrix.frag.out
+++ b/Test/baseResults/matrix.frag.out
@@ -5,240 +5,240 @@
 

 Shader version: 130

 0:? Sequence

-0:25  Function Definition: main( (void)

+0:25  Function Definition: main( (global void)

 0:25    Function Parameters: 

 0:27    Sequence

-0:27      move second child to first child (4-component vector of float)

+0:27      move second child to first child (temp 4-component vector of float)

 0:27        'gl_FragColor' (fragColor 4-component vector of float)

-0:27        Construct vec4 (4-component vector of float)

-0:27          direct index (4-component vector of float)

+0:27        Construct vec4 (temp 4-component vector of float)

+0:27          direct index (temp 4-component vector of float)

 0:27            'un34' (uniform 4X4 matrix of float)

 0:27            Constant:

 0:27              1 (const int)

-0:28      add second child into first child (4-component vector of float)

+0:28      add second child into first child (temp 4-component vector of float)

 0:28        'gl_FragColor' (fragColor 4-component vector of float)

-0:28        Construct vec4 (4-component vector of float)

-0:28          vector-times-matrix (3-component vector of float)

+0:28        Construct vec4 (temp 4-component vector of float)

+0:28          vector-times-matrix (temp 3-component vector of float)

 0:28            'Color' (smooth in 3-component vector of float)

 0:28            'colorTransform' (uniform 3X3 matrix of float)

 0:28          Constant:

 0:28            1.000000

-0:30      Test condition and select (void)

+0:30      Test condition and select (temp void)

 0:30        Condition

-0:30        Compare Not Equal (bool)

+0:30        Compare Not Equal (temp bool)

 0:30          'm' (uniform 4X4 matrix of float)

 0:30          'n' (uniform 4X4 matrix of float)

 0:30        true case

-0:31        add second child into first child (4-component vector of float)

+0:31        add second child into first child (temp 4-component vector of float)

 0:31          'gl_FragColor' (fragColor 4-component vector of float)

 0:31          'v' (smooth in 4-component vector of float)

 0:30        false case

 0:33        Sequence

-0:33          add second child into first child (4-component vector of float)

+0:33          add second child into first child (temp 4-component vector of float)

 0:33            'gl_FragColor' (fragColor 4-component vector of float)

-0:33            matrix-times-vector (4-component vector of float)

+0:33            matrix-times-vector (temp 4-component vector of float)

 0:33              'm' (uniform 4X4 matrix of float)

 0:33              'v' (smooth in 4-component vector of float)

-0:34          add second child into first child (4-component vector of float)

+0:34          add second child into first child (temp 4-component vector of float)

 0:34            'gl_FragColor' (fragColor 4-component vector of float)

-0:34            vector-times-matrix (4-component vector of float)

+0:34            vector-times-matrix (temp 4-component vector of float)

 0:34              'v' (smooth in 4-component vector of float)

-0:34              subtract (4X4 matrix of float)

+0:34              subtract (temp 4X4 matrix of float)

 0:34                'm' (uniform 4X4 matrix of float)

 0:34                'n' (uniform 4X4 matrix of float)

 0:42      Sequence

-0:42        move second child to first child (4X4 matrix of float)

-0:42          'm34' (4X4 matrix of float)

-0:45          Construct mat4 (4X4 matrix of float)

-0:42            component-wise multiply (float)

-0:42              direct index (float)

+0:42        move second child to first child (temp 4X4 matrix of float)

+0:42          'm34' (temp 4X4 matrix of float)

+0:45          Construct mat4 (temp 4X4 matrix of float)

+0:42            component-wise multiply (temp float)

+0:42              direct index (temp float)

 0:42                'v' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  0 (const int)

-0:42              direct index (float)

+0:42              direct index (temp float)

 0:42                'u' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  0 (const int)

-0:42            component-wise multiply (float)

-0:42              direct index (float)

+0:42            component-wise multiply (temp float)

+0:42              direct index (temp float)

 0:42                'v' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  0 (const int)

-0:42              direct index (float)

+0:42              direct index (temp float)

 0:42                'u' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  1 (const int)

-0:42            component-wise multiply (float)

-0:42              direct index (float)

+0:42            component-wise multiply (temp float)

+0:42              direct index (temp float)

 0:42                'v' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  0 (const int)

-0:42              direct index (float)

+0:42              direct index (temp float)

 0:42                'u' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  2 (const int)

-0:42            component-wise multiply (float)

-0:42              direct index (float)

+0:42            component-wise multiply (temp float)

+0:42              direct index (temp float)

 0:42                'v' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  0 (const int)

-0:42              direct index (float)

+0:42              direct index (temp float)

 0:42                'u' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  3 (const int)

-0:43            component-wise multiply (float)

-0:43              direct index (float)

+0:43            component-wise multiply (temp float)

+0:43              direct index (temp float)

 0:43                'v' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  1 (const int)

-0:43              direct index (float)

+0:43              direct index (temp float)

 0:43                'u' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  0 (const int)

-0:43            component-wise multiply (float)

-0:43              direct index (float)

+0:43            component-wise multiply (temp float)

+0:43              direct index (temp float)

 0:43                'v' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  1 (const int)

-0:43              direct index (float)

+0:43              direct index (temp float)

 0:43                'u' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  1 (const int)

-0:43            component-wise multiply (float)

-0:43              direct index (float)

+0:43            component-wise multiply (temp float)

+0:43              direct index (temp float)

 0:43                'v' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  1 (const int)

-0:43              direct index (float)

+0:43              direct index (temp float)

 0:43                'u' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  2 (const int)

-0:43            component-wise multiply (float)

-0:43              direct index (float)

+0:43            component-wise multiply (temp float)

+0:43              direct index (temp float)

 0:43                'v' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  1 (const int)

-0:43              direct index (float)

+0:43              direct index (temp float)

 0:43                'u' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  3 (const int)

-0:44            component-wise multiply (float)

-0:44              direct index (float)

+0:44            component-wise multiply (temp float)

+0:44              direct index (temp float)

 0:44                'v' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  2 (const int)

-0:44              direct index (float)

+0:44              direct index (temp float)

 0:44                'u' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  0 (const int)

-0:44            component-wise multiply (float)

-0:44              direct index (float)

+0:44            component-wise multiply (temp float)

+0:44              direct index (temp float)

 0:44                'v' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  2 (const int)

-0:44              direct index (float)

+0:44              direct index (temp float)

 0:44                'u' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  1 (const int)

-0:44            component-wise multiply (float)

-0:44              direct index (float)

+0:44            component-wise multiply (temp float)

+0:44              direct index (temp float)

 0:44                'v' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  2 (const int)

-0:44              direct index (float)

+0:44              direct index (temp float)

 0:44                'u' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  2 (const int)

-0:44            component-wise multiply (float)

-0:44              direct index (float)

+0:44            component-wise multiply (temp float)

+0:44              direct index (temp float)

 0:44                'v' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  2 (const int)

-0:44              direct index (float)

+0:44              direct index (temp float)

 0:44                'u' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  3 (const int)

-0:45            component-wise multiply (float)

-0:45              direct index (float)

+0:45            component-wise multiply (temp float)

+0:45              direct index (temp float)

 0:45                'v' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  3 (const int)

-0:45              direct index (float)

+0:45              direct index (temp float)

 0:45                'u' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  0 (const int)

-0:45            component-wise multiply (float)

-0:45              direct index (float)

+0:45            component-wise multiply (temp float)

+0:45              direct index (temp float)

 0:45                'v' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  3 (const int)

-0:45              direct index (float)

+0:45              direct index (temp float)

 0:45                'u' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  1 (const int)

-0:45            component-wise multiply (float)

-0:45              direct index (float)

+0:45            component-wise multiply (temp float)

+0:45              direct index (temp float)

 0:45                'v' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  3 (const int)

-0:45              direct index (float)

+0:45              direct index (temp float)

 0:45                'u' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  2 (const int)

-0:45            component-wise multiply (float)

-0:45              direct index (float)

+0:45            component-wise multiply (temp float)

+0:45              direct index (temp float)

 0:45                'v' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  3 (const int)

-0:45              direct index (float)

+0:45              direct index (temp float)

 0:45                'u' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  3 (const int)

-0:46      add second child into first child (4X4 matrix of float)

-0:46        'm34' (4X4 matrix of float)

-0:46        Construct mat4 (4X4 matrix of float)

-0:46          direct index (float)

+0:46      add second child into first child (temp 4X4 matrix of float)

+0:46        'm34' (temp 4X4 matrix of float)

+0:46        Construct mat4 (temp 4X4 matrix of float)

+0:46          direct index (temp float)

 0:46            'v' (smooth in 4-component vector of float)

 0:46            Constant:

 0:46              0 (const int)

-0:47      add second child into first child (4X4 matrix of float)

-0:47        'm34' (4X4 matrix of float)

-0:47        Construct mat4 (4X4 matrix of float)

+0:47      add second child into first child (temp 4X4 matrix of float)

+0:47        'm34' (temp 4X4 matrix of float)

+0:47        Construct mat4 (temp 4X4 matrix of float)

 0:47          'u' (smooth in 4-component vector of float)

-0:47          direct index (float)

+0:47          direct index (temp float)

 0:47            'u' (smooth in 4-component vector of float)

 0:47            Constant:

 0:47              0 (const int)

 0:47          'u' (smooth in 4-component vector of float)

-0:47          direct index (float)

+0:47          direct index (temp float)

 0:47            'u' (smooth in 4-component vector of float)

 0:47            Constant:

 0:47              0 (const int)

 0:47          'u' (smooth in 4-component vector of float)

-0:47          direct index (float)

+0:47          direct index (temp float)

 0:47            'u' (smooth in 4-component vector of float)

 0:47            Constant:

 0:47              0 (const int)

-0:47          direct index (float)

+0:47          direct index (temp float)

 0:47            'u' (smooth in 4-component vector of float)

 0:47            Constant:

 0:47              0 (const int)

-0:51      Test condition and select (void)

+0:51      Test condition and select (temp void)

 0:51        Condition

-0:51        Compare Equal (bool)

-0:51          'm34' (4X4 matrix of float)

+0:51        Compare Equal (temp bool)

+0:51          'm34' (temp 4X4 matrix of float)

 0:51          'un34' (uniform 4X4 matrix of float)

 0:51        true case

-0:52        add second child into first child (4-component vector of float)

+0:52        add second child into first child (temp 4-component vector of float)

 0:52          'gl_FragColor' (fragColor 4-component vector of float)

-0:52          matrix-times-vector (4-component vector of float)

-0:52            'm34' (4X4 matrix of float)

+0:52          matrix-times-vector (temp 4-component vector of float)

+0:52            'm34' (temp 4X4 matrix of float)

 0:52            'u' (smooth in 4-component vector of float)

 0:51        false case

-0:54        add second child into first child (4-component vector of float)

+0:54        add second child into first child (temp 4-component vector of float)

 0:54          'gl_FragColor' (fragColor 4-component vector of float)

-0:54          matrix-times-vector (4-component vector of float)

-0:54            matrix-multiply (4X4 matrix of float)

+0:54          matrix-times-vector (temp 4-component vector of float)

+0:54            matrix-multiply (temp 4X4 matrix of float)

 0:54              'un34' (uniform 4X4 matrix of float)

 0:54              'um43' (uniform 4X4 matrix of float)

 0:54            'v' (smooth in 4-component vector of float)

@@ -258,240 +258,240 @@
 

 Shader version: 130

 0:? Sequence

-0:25  Function Definition: main( (void)

+0:25  Function Definition: main( (global void)

 0:25    Function Parameters: 

 0:27    Sequence

-0:27      move second child to first child (4-component vector of float)

+0:27      move second child to first child (temp 4-component vector of float)

 0:27        'gl_FragColor' (fragColor 4-component vector of float)

-0:27        Construct vec4 (4-component vector of float)

-0:27          direct index (4-component vector of float)

+0:27        Construct vec4 (temp 4-component vector of float)

+0:27          direct index (temp 4-component vector of float)

 0:27            'un34' (uniform 4X4 matrix of float)

 0:27            Constant:

 0:27              1 (const int)

-0:28      add second child into first child (4-component vector of float)

+0:28      add second child into first child (temp 4-component vector of float)

 0:28        'gl_FragColor' (fragColor 4-component vector of float)

-0:28        Construct vec4 (4-component vector of float)

-0:28          vector-times-matrix (3-component vector of float)

+0:28        Construct vec4 (temp 4-component vector of float)

+0:28          vector-times-matrix (temp 3-component vector of float)

 0:28            'Color' (smooth in 3-component vector of float)

 0:28            'colorTransform' (uniform 3X3 matrix of float)

 0:28          Constant:

 0:28            1.000000

-0:30      Test condition and select (void)

+0:30      Test condition and select (temp void)

 0:30        Condition

-0:30        Compare Not Equal (bool)

+0:30        Compare Not Equal (temp bool)

 0:30          'm' (uniform 4X4 matrix of float)

 0:30          'n' (uniform 4X4 matrix of float)

 0:30        true case

-0:31        add second child into first child (4-component vector of float)

+0:31        add second child into first child (temp 4-component vector of float)

 0:31          'gl_FragColor' (fragColor 4-component vector of float)

 0:31          'v' (smooth in 4-component vector of float)

 0:30        false case

 0:33        Sequence

-0:33          add second child into first child (4-component vector of float)

+0:33          add second child into first child (temp 4-component vector of float)

 0:33            'gl_FragColor' (fragColor 4-component vector of float)

-0:33            matrix-times-vector (4-component vector of float)

+0:33            matrix-times-vector (temp 4-component vector of float)

 0:33              'm' (uniform 4X4 matrix of float)

 0:33              'v' (smooth in 4-component vector of float)

-0:34          add second child into first child (4-component vector of float)

+0:34          add second child into first child (temp 4-component vector of float)

 0:34            'gl_FragColor' (fragColor 4-component vector of float)

-0:34            vector-times-matrix (4-component vector of float)

+0:34            vector-times-matrix (temp 4-component vector of float)

 0:34              'v' (smooth in 4-component vector of float)

-0:34              subtract (4X4 matrix of float)

+0:34              subtract (temp 4X4 matrix of float)

 0:34                'm' (uniform 4X4 matrix of float)

 0:34                'n' (uniform 4X4 matrix of float)

 0:42      Sequence

-0:42        move second child to first child (4X4 matrix of float)

-0:42          'm34' (4X4 matrix of float)

-0:45          Construct mat4 (4X4 matrix of float)

-0:42            component-wise multiply (float)

-0:42              direct index (float)

+0:42        move second child to first child (temp 4X4 matrix of float)

+0:42          'm34' (temp 4X4 matrix of float)

+0:45          Construct mat4 (temp 4X4 matrix of float)

+0:42            component-wise multiply (temp float)

+0:42              direct index (temp float)

 0:42                'v' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  0 (const int)

-0:42              direct index (float)

+0:42              direct index (temp float)

 0:42                'u' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  0 (const int)

-0:42            component-wise multiply (float)

-0:42              direct index (float)

+0:42            component-wise multiply (temp float)

+0:42              direct index (temp float)

 0:42                'v' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  0 (const int)

-0:42              direct index (float)

+0:42              direct index (temp float)

 0:42                'u' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  1 (const int)

-0:42            component-wise multiply (float)

-0:42              direct index (float)

+0:42            component-wise multiply (temp float)

+0:42              direct index (temp float)

 0:42                'v' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  0 (const int)

-0:42              direct index (float)

+0:42              direct index (temp float)

 0:42                'u' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  2 (const int)

-0:42            component-wise multiply (float)

-0:42              direct index (float)

+0:42            component-wise multiply (temp float)

+0:42              direct index (temp float)

 0:42                'v' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  0 (const int)

-0:42              direct index (float)

+0:42              direct index (temp float)

 0:42                'u' (smooth in 4-component vector of float)

 0:42                Constant:

 0:42                  3 (const int)

-0:43            component-wise multiply (float)

-0:43              direct index (float)

+0:43            component-wise multiply (temp float)

+0:43              direct index (temp float)

 0:43                'v' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  1 (const int)

-0:43              direct index (float)

+0:43              direct index (temp float)

 0:43                'u' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  0 (const int)

-0:43            component-wise multiply (float)

-0:43              direct index (float)

+0:43            component-wise multiply (temp float)

+0:43              direct index (temp float)

 0:43                'v' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  1 (const int)

-0:43              direct index (float)

+0:43              direct index (temp float)

 0:43                'u' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  1 (const int)

-0:43            component-wise multiply (float)

-0:43              direct index (float)

+0:43            component-wise multiply (temp float)

+0:43              direct index (temp float)

 0:43                'v' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  1 (const int)

-0:43              direct index (float)

+0:43              direct index (temp float)

 0:43                'u' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  2 (const int)

-0:43            component-wise multiply (float)

-0:43              direct index (float)

+0:43            component-wise multiply (temp float)

+0:43              direct index (temp float)

 0:43                'v' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  1 (const int)

-0:43              direct index (float)

+0:43              direct index (temp float)

 0:43                'u' (smooth in 4-component vector of float)

 0:43                Constant:

 0:43                  3 (const int)

-0:44            component-wise multiply (float)

-0:44              direct index (float)

+0:44            component-wise multiply (temp float)

+0:44              direct index (temp float)

 0:44                'v' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  2 (const int)

-0:44              direct index (float)

+0:44              direct index (temp float)

 0:44                'u' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  0 (const int)

-0:44            component-wise multiply (float)

-0:44              direct index (float)

+0:44            component-wise multiply (temp float)

+0:44              direct index (temp float)

 0:44                'v' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  2 (const int)

-0:44              direct index (float)

+0:44              direct index (temp float)

 0:44                'u' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  1 (const int)

-0:44            component-wise multiply (float)

-0:44              direct index (float)

+0:44            component-wise multiply (temp float)

+0:44              direct index (temp float)

 0:44                'v' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  2 (const int)

-0:44              direct index (float)

+0:44              direct index (temp float)

 0:44                'u' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  2 (const int)

-0:44            component-wise multiply (float)

-0:44              direct index (float)

+0:44            component-wise multiply (temp float)

+0:44              direct index (temp float)

 0:44                'v' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  2 (const int)

-0:44              direct index (float)

+0:44              direct index (temp float)

 0:44                'u' (smooth in 4-component vector of float)

 0:44                Constant:

 0:44                  3 (const int)

-0:45            component-wise multiply (float)

-0:45              direct index (float)

+0:45            component-wise multiply (temp float)

+0:45              direct index (temp float)

 0:45                'v' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  3 (const int)

-0:45              direct index (float)

+0:45              direct index (temp float)

 0:45                'u' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  0 (const int)

-0:45            component-wise multiply (float)

-0:45              direct index (float)

+0:45            component-wise multiply (temp float)

+0:45              direct index (temp float)

 0:45                'v' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  3 (const int)

-0:45              direct index (float)

+0:45              direct index (temp float)

 0:45                'u' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  1 (const int)

-0:45            component-wise multiply (float)

-0:45              direct index (float)

+0:45            component-wise multiply (temp float)

+0:45              direct index (temp float)

 0:45                'v' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  3 (const int)

-0:45              direct index (float)

+0:45              direct index (temp float)

 0:45                'u' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  2 (const int)

-0:45            component-wise multiply (float)

-0:45              direct index (float)

+0:45            component-wise multiply (temp float)

+0:45              direct index (temp float)

 0:45                'v' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  3 (const int)

-0:45              direct index (float)

+0:45              direct index (temp float)

 0:45                'u' (smooth in 4-component vector of float)

 0:45                Constant:

 0:45                  3 (const int)

-0:46      add second child into first child (4X4 matrix of float)

-0:46        'm34' (4X4 matrix of float)

-0:46        Construct mat4 (4X4 matrix of float)

-0:46          direct index (float)

+0:46      add second child into first child (temp 4X4 matrix of float)

+0:46        'm34' (temp 4X4 matrix of float)

+0:46        Construct mat4 (temp 4X4 matrix of float)

+0:46          direct index (temp float)

 0:46            'v' (smooth in 4-component vector of float)

 0:46            Constant:

 0:46              0 (const int)

-0:47      add second child into first child (4X4 matrix of float)

-0:47        'm34' (4X4 matrix of float)

-0:47        Construct mat4 (4X4 matrix of float)

+0:47      add second child into first child (temp 4X4 matrix of float)

+0:47        'm34' (temp 4X4 matrix of float)

+0:47        Construct mat4 (temp 4X4 matrix of float)

 0:47          'u' (smooth in 4-component vector of float)

-0:47          direct index (float)

+0:47          direct index (temp float)

 0:47            'u' (smooth in 4-component vector of float)

 0:47            Constant:

 0:47              0 (const int)

 0:47          'u' (smooth in 4-component vector of float)

-0:47          direct index (float)

+0:47          direct index (temp float)

 0:47            'u' (smooth in 4-component vector of float)

 0:47            Constant:

 0:47              0 (const int)

 0:47          'u' (smooth in 4-component vector of float)

-0:47          direct index (float)

+0:47          direct index (temp float)

 0:47            'u' (smooth in 4-component vector of float)

 0:47            Constant:

 0:47              0 (const int)

-0:47          direct index (float)

+0:47          direct index (temp float)

 0:47            'u' (smooth in 4-component vector of float)

 0:47            Constant:

 0:47              0 (const int)

-0:51      Test condition and select (void)

+0:51      Test condition and select (temp void)

 0:51        Condition

-0:51        Compare Equal (bool)

-0:51          'm34' (4X4 matrix of float)

+0:51        Compare Equal (temp bool)

+0:51          'm34' (temp 4X4 matrix of float)

 0:51          'un34' (uniform 4X4 matrix of float)

 0:51        true case

-0:52        add second child into first child (4-component vector of float)

+0:52        add second child into first child (temp 4-component vector of float)

 0:52          'gl_FragColor' (fragColor 4-component vector of float)

-0:52          matrix-times-vector (4-component vector of float)

-0:52            'm34' (4X4 matrix of float)

+0:52          matrix-times-vector (temp 4-component vector of float)

+0:52            'm34' (temp 4X4 matrix of float)

 0:52            'u' (smooth in 4-component vector of float)

 0:51        false case

-0:54        add second child into first child (4-component vector of float)

+0:54        add second child into first child (temp 4-component vector of float)

 0:54          'gl_FragColor' (fragColor 4-component vector of float)

-0:54          matrix-times-vector (4-component vector of float)

-0:54            matrix-multiply (4X4 matrix of float)

+0:54          matrix-times-vector (temp 4-component vector of float)

+0:54            matrix-multiply (temp 4X4 matrix of float)

 0:54              'un34' (uniform 4X4 matrix of float)

 0:54              'um43' (uniform 4X4 matrix of float)

 0:54            'v' (smooth in 4-component vector of float)

diff --git a/Test/baseResults/matrix2.frag.out b/Test/baseResults/matrix2.frag.out
index 54f40ef..734b5b1 100644
--- a/Test/baseResults/matrix2.frag.out
+++ b/Test/baseResults/matrix2.frag.out
@@ -5,17 +5,17 @@
 

 Shader version: 150

 0:? Sequence

-0:19  Function Definition: main( (void)

+0:19  Function Definition: main( (global void)

 0:19    Function Parameters: 

 0:21    Sequence

 0:21      Sequence

-0:21        move second child to first child (3X4 matrix of float)

-0:21          'm34' (3X4 matrix of float)

-0:21          outer product (3X4 matrix of float)

+0:21        move second child to first child (temp 3X4 matrix of float)

+0:21          'm34' (temp 3X4 matrix of float)

+0:21          outer product (global 3X4 matrix of float)

 0:21            'v' (smooth in 4-component vector of float)

 0:21            'u' (smooth in 3-component vector of float)

-0:23      add second child into first child (3X4 matrix of float)

-0:23        'm34' (3X4 matrix of float)

+0:23      add second child into first child (temp 3X4 matrix of float)

+0:23        'm34' (temp 3X4 matrix of float)

 0:23        Constant:

 0:23          4.300000

 0:23          0.000000

@@ -29,132 +29,132 @@
 0:23          0.000000

 0:23          4.300000

 0:23          0.000000

-0:25      move second child to first child (4-component vector of float)

+0:25      move second child to first child (temp 4-component vector of float)

 0:25        'FragColor' (out 4-component vector of float)

-0:25        Construct vec4 (4-component vector of float)

+0:25        Construct vec4 (temp 4-component vector of float)

 0:25          'Color' (smooth in 3-component vector of float)

 0:25          Constant:

 0:25            1.000000

-0:26      multiply second child into first child (4-component vector of float)

+0:26      multiply second child into first child (temp 4-component vector of float)

 0:26        'FragColor' (out 4-component vector of float)

-0:26        Construct vec4 (4-component vector of float)

-0:26          vector-times-matrix (3-component vector of float)

+0:26        Construct vec4 (temp 4-component vector of float)

+0:26          vector-times-matrix (temp 3-component vector of float)

 0:26            'FragColor' (out 4-component vector of float)

-0:26            'm34' (3X4 matrix of float)

+0:26            'm34' (temp 3X4 matrix of float)

 0:26          Constant:

 0:26            1.000000

-0:28      matrix scale second child into first child (3X4 matrix of float)

-0:28        'm34' (3X4 matrix of float)

-0:28        direct index (float)

+0:28      matrix scale second child into first child (temp 3X4 matrix of float)

+0:28        'm34' (temp 3X4 matrix of float)

+0:28        direct index (temp float)

 0:28          'v' (smooth in 4-component vector of float)

 0:28          Constant:

 0:28            0 (const int)

 0:30      Sequence

-0:30        move second child to first child (4X4 matrix of float)

-0:30          'm44' (4X4 matrix of float)

-0:30          Construct mat4 (4X4 matrix of float)

+0:30        move second child to first child (temp 4X4 matrix of float)

+0:30          'm44' (temp 4X4 matrix of float)

+0:30          Construct mat4 (temp 4X4 matrix of float)

 0:30            'un34' (uniform 3X4 matrix of float)

-0:32      add second child into first child (4X4 matrix of float)

-0:32        'm44' (4X4 matrix of float)

-0:32        matrix-multiply (4X4 matrix of float)

-0:32          'm34' (3X4 matrix of float)

+0:32      add second child into first child (temp 4X4 matrix of float)

+0:32        'm44' (temp 4X4 matrix of float)

+0:32        matrix-multiply (temp 4X4 matrix of float)

+0:32          'm34' (temp 3X4 matrix of float)

 0:32          'um43' (uniform 4X3 matrix of float)

-0:34      add second child into first child (4-component vector of float)

+0:34      add second child into first child (temp 4-component vector of float)

 0:34        'FragColor' (out 4-component vector of float)

-0:34        matrix-times-vector (4-component vector of float)

-0:34          Negate value (4X4 matrix of float)

-0:34            'm44' (4X4 matrix of float)

+0:34        matrix-times-vector (temp 4-component vector of float)

+0:34          Negate value (temp 4X4 matrix of float)

+0:34            'm44' (temp 4X4 matrix of float)

 0:34          'v' (smooth in 4-component vector of float)

-0:36      matrix mult second child into first child (4-component vector of float)

+0:36      matrix mult second child into first child (temp 4-component vector of float)

 0:36        'FragColor' (out 4-component vector of float)

-0:36        component-wise multiply (4X4 matrix of float)

-0:36          'm44' (4X4 matrix of float)

-0:36          'm44' (4X4 matrix of float)

-0:38      move second child to first child (3X4 matrix of float)

-0:38        'm34' (3X4 matrix of float)

-0:38        transpose (3X4 matrix of float)

+0:36        component-wise multiply (global 4X4 matrix of float)

+0:36          'm44' (temp 4X4 matrix of float)

+0:36          'm44' (temp 4X4 matrix of float)

+0:38      move second child to first child (temp 3X4 matrix of float)

+0:38        'm34' (temp 3X4 matrix of float)

+0:38        transpose (global 3X4 matrix of float)

 0:38          'um43' (uniform 4X3 matrix of float)

-0:39      multiply second child into first child (4-component vector of float)

+0:39      multiply second child into first child (temp 4-component vector of float)

 0:39        'FragColor' (out 4-component vector of float)

-0:39        Construct vec4 (4-component vector of float)

-0:39          vector-times-matrix (3-component vector of float)

+0:39        Construct vec4 (temp 4-component vector of float)

+0:39          vector-times-matrix (temp 3-component vector of float)

 0:39            'FragColor' (out 4-component vector of float)

-0:39            'm34' (3X4 matrix of float)

+0:39            'm34' (temp 3X4 matrix of float)

 0:39          Constant:

 0:39            1.000000

-0:40      multiply second child into first child (4-component vector of float)

+0:40      multiply second child into first child (temp 4-component vector of float)

 0:40        'FragColor' (out 4-component vector of float)

-0:40        Construct vec4 (4-component vector of float)

-0:40          determinant (float)

+0:40        Construct vec4 (temp 4-component vector of float)

+0:40          determinant (global float)

 0:40            'um4' (uniform 4X4 matrix of float)

 0:41      Sequence

-0:41        move second child to first child (2X2 matrix of float)

-0:41          'inv' (2X2 matrix of float)

-0:41          inverse (2X2 matrix of float)

+0:41        move second child to first child (temp 2X2 matrix of float)

+0:41          'inv' (temp 2X2 matrix of float)

+0:41          inverse (global 2X2 matrix of float)

 0:41            'um2' (uniform 2X2 matrix of float)

-0:42      multiply second child into first child (4-component vector of float)

+0:42      multiply second child into first child (temp 4-component vector of float)

 0:42        'FragColor' (out 4-component vector of float)

-0:42        Construct vec4 (4-component vector of float)

-0:42          direct index (float)

-0:42            direct index (2-component vector of float)

-0:42              'inv' (2X2 matrix of float)

+0:42        Construct vec4 (temp 4-component vector of float)

+0:42          direct index (temp float)

+0:42            direct index (temp 2-component vector of float)

+0:42              'inv' (temp 2X2 matrix of float)

 0:42              Constant:

 0:42                0 (const int)

 0:42            Constant:

 0:42              0 (const int)

-0:42          direct index (float)

-0:42            direct index (2-component vector of float)

-0:42              'inv' (2X2 matrix of float)

+0:42          direct index (temp float)

+0:42            direct index (temp 2-component vector of float)

+0:42              'inv' (temp 2X2 matrix of float)

 0:42              Constant:

 0:42                1 (const int)

 0:42            Constant:

 0:42              0 (const int)

-0:42          direct index (float)

-0:42            direct index (2-component vector of float)

-0:42              'inv' (2X2 matrix of float)

+0:42          direct index (temp float)

+0:42            direct index (temp 2-component vector of float)

+0:42              'inv' (temp 2X2 matrix of float)

 0:42              Constant:

 0:42                0 (const int)

 0:42            Constant:

 0:42              1 (const int)

-0:42          direct index (float)

-0:42            direct index (2-component vector of float)

-0:42              'inv' (2X2 matrix of float)

+0:42          direct index (temp float)

+0:42            direct index (temp 2-component vector of float)

+0:42              'inv' (temp 2X2 matrix of float)

 0:42              Constant:

 0:42                1 (const int)

 0:42            Constant:

 0:42              1 (const int)

 0:43      Sequence

-0:43        move second child to first child (3X3 matrix of float)

-0:43          'inv3' (3X3 matrix of float)

-0:43          inverse (3X3 matrix of float)

+0:43        move second child to first child (temp 3X3 matrix of float)

+0:43          'inv3' (temp 3X3 matrix of float)

+0:43          inverse (global 3X3 matrix of float)

 0:43            'um3' (uniform 3X3 matrix of float)

-0:44      multiply second child into first child (4-component vector of float)

+0:44      multiply second child into first child (temp 4-component vector of float)

 0:44        'FragColor' (out 4-component vector of float)

-0:44        Construct vec4 (4-component vector of float)

-0:44          direct index (float)

-0:44            direct index (3-component vector of float)

-0:44              'inv3' (3X3 matrix of float)

+0:44        Construct vec4 (temp 4-component vector of float)

+0:44          direct index (temp float)

+0:44            direct index (temp 3-component vector of float)

+0:44              'inv3' (temp 3X3 matrix of float)

 0:44              Constant:

 0:44                2 (const int)

 0:44            Constant:

 0:44              1 (const int)

 0:46      Sequence

-0:46        move second child to first child (4X4 matrix of float)

-0:46          'inv4' (4X4 matrix of float)

-0:46          inverse (4X4 matrix of float)

+0:46        move second child to first child (temp 4X4 matrix of float)

+0:46          'inv4' (temp 4X4 matrix of float)

+0:46          inverse (global 4X4 matrix of float)

 0:46            'um4' (uniform 4X4 matrix of float)

-0:47      matrix mult second child into first child (4-component vector of float)

+0:47      matrix mult second child into first child (temp 4-component vector of float)

 0:47        'FragColor' (out 4-component vector of float)

-0:47        'inv4' (4X4 matrix of float)

-0:49      move second child to first child (4-component vector of float)

+0:47        'inv4' (temp 4X4 matrix of float)

+0:49      move second child to first child (temp 4-component vector of float)

 0:49        'FragColor' (out 4-component vector of float)

-0:49        Construct vec4 (4-component vector of float)

-0:49          vector-times-matrix (3-component vector of float)

+0:49        Construct vec4 (temp 4-component vector of float)

+0:49          vector-times-matrix (temp 3-component vector of float)

 0:49            'FragColor' (out 4-component vector of float)

-0:49            component-wise multiply (3X4 matrix of float)

+0:49            component-wise multiply (global 3X4 matrix of float)

 0:49              'un34' (uniform 3X4 matrix of float)

 0:49              'un34' (uniform 3X4 matrix of float)

-0:49          direct index (float)

+0:49          direct index (temp float)

 0:49            'FragColor' (out 4-component vector of float)

 0:49            Constant:

 0:49              3 (const int)

@@ -178,17 +178,17 @@
 

 Shader version: 150

 0:? Sequence

-0:19  Function Definition: main( (void)

+0:19  Function Definition: main( (global void)

 0:19    Function Parameters: 

 0:21    Sequence

 0:21      Sequence

-0:21        move second child to first child (3X4 matrix of float)

-0:21          'm34' (3X4 matrix of float)

-0:21          outer product (3X4 matrix of float)

+0:21        move second child to first child (temp 3X4 matrix of float)

+0:21          'm34' (temp 3X4 matrix of float)

+0:21          outer product (global 3X4 matrix of float)

 0:21            'v' (smooth in 4-component vector of float)

 0:21            'u' (smooth in 3-component vector of float)

-0:23      add second child into first child (3X4 matrix of float)

-0:23        'm34' (3X4 matrix of float)

+0:23      add second child into first child (temp 3X4 matrix of float)

+0:23        'm34' (temp 3X4 matrix of float)

 0:23        Constant:

 0:23          4.300000

 0:23          0.000000

@@ -202,132 +202,132 @@
 0:23          0.000000

 0:23          4.300000

 0:23          0.000000

-0:25      move second child to first child (4-component vector of float)

+0:25      move second child to first child (temp 4-component vector of float)

 0:25        'FragColor' (out 4-component vector of float)

-0:25        Construct vec4 (4-component vector of float)

+0:25        Construct vec4 (temp 4-component vector of float)

 0:25          'Color' (smooth in 3-component vector of float)

 0:25          Constant:

 0:25            1.000000

-0:26      multiply second child into first child (4-component vector of float)

+0:26      multiply second child into first child (temp 4-component vector of float)

 0:26        'FragColor' (out 4-component vector of float)

-0:26        Construct vec4 (4-component vector of float)

-0:26          vector-times-matrix (3-component vector of float)

+0:26        Construct vec4 (temp 4-component vector of float)

+0:26          vector-times-matrix (temp 3-component vector of float)

 0:26            'FragColor' (out 4-component vector of float)

-0:26            'm34' (3X4 matrix of float)

+0:26            'm34' (temp 3X4 matrix of float)

 0:26          Constant:

 0:26            1.000000

-0:28      matrix scale second child into first child (3X4 matrix of float)

-0:28        'm34' (3X4 matrix of float)

-0:28        direct index (float)

+0:28      matrix scale second child into first child (temp 3X4 matrix of float)

+0:28        'm34' (temp 3X4 matrix of float)

+0:28        direct index (temp float)

 0:28          'v' (smooth in 4-component vector of float)

 0:28          Constant:

 0:28            0 (const int)

 0:30      Sequence

-0:30        move second child to first child (4X4 matrix of float)

-0:30          'm44' (4X4 matrix of float)

-0:30          Construct mat4 (4X4 matrix of float)

+0:30        move second child to first child (temp 4X4 matrix of float)

+0:30          'm44' (temp 4X4 matrix of float)

+0:30          Construct mat4 (temp 4X4 matrix of float)

 0:30            'un34' (uniform 3X4 matrix of float)

-0:32      add second child into first child (4X4 matrix of float)

-0:32        'm44' (4X4 matrix of float)

-0:32        matrix-multiply (4X4 matrix of float)

-0:32          'm34' (3X4 matrix of float)

+0:32      add second child into first child (temp 4X4 matrix of float)

+0:32        'm44' (temp 4X4 matrix of float)

+0:32        matrix-multiply (temp 4X4 matrix of float)

+0:32          'm34' (temp 3X4 matrix of float)

 0:32          'um43' (uniform 4X3 matrix of float)

-0:34      add second child into first child (4-component vector of float)

+0:34      add second child into first child (temp 4-component vector of float)

 0:34        'FragColor' (out 4-component vector of float)

-0:34        matrix-times-vector (4-component vector of float)

-0:34          Negate value (4X4 matrix of float)

-0:34            'm44' (4X4 matrix of float)

+0:34        matrix-times-vector (temp 4-component vector of float)

+0:34          Negate value (temp 4X4 matrix of float)

+0:34            'm44' (temp 4X4 matrix of float)

 0:34          'v' (smooth in 4-component vector of float)

-0:36      matrix mult second child into first child (4-component vector of float)

+0:36      matrix mult second child into first child (temp 4-component vector of float)

 0:36        'FragColor' (out 4-component vector of float)

-0:36        component-wise multiply (4X4 matrix of float)

-0:36          'm44' (4X4 matrix of float)

-0:36          'm44' (4X4 matrix of float)

-0:38      move second child to first child (3X4 matrix of float)

-0:38        'm34' (3X4 matrix of float)

-0:38        transpose (3X4 matrix of float)

+0:36        component-wise multiply (global 4X4 matrix of float)

+0:36          'm44' (temp 4X4 matrix of float)

+0:36          'm44' (temp 4X4 matrix of float)

+0:38      move second child to first child (temp 3X4 matrix of float)

+0:38        'm34' (temp 3X4 matrix of float)

+0:38        transpose (global 3X4 matrix of float)

 0:38          'um43' (uniform 4X3 matrix of float)

-0:39      multiply second child into first child (4-component vector of float)

+0:39      multiply second child into first child (temp 4-component vector of float)

 0:39        'FragColor' (out 4-component vector of float)

-0:39        Construct vec4 (4-component vector of float)

-0:39          vector-times-matrix (3-component vector of float)

+0:39        Construct vec4 (temp 4-component vector of float)

+0:39          vector-times-matrix (temp 3-component vector of float)

 0:39            'FragColor' (out 4-component vector of float)

-0:39            'm34' (3X4 matrix of float)

+0:39            'm34' (temp 3X4 matrix of float)

 0:39          Constant:

 0:39            1.000000

-0:40      multiply second child into first child (4-component vector of float)

+0:40      multiply second child into first child (temp 4-component vector of float)

 0:40        'FragColor' (out 4-component vector of float)

-0:40        Construct vec4 (4-component vector of float)

-0:40          determinant (float)

+0:40        Construct vec4 (temp 4-component vector of float)

+0:40          determinant (global float)

 0:40            'um4' (uniform 4X4 matrix of float)

 0:41      Sequence

-0:41        move second child to first child (2X2 matrix of float)

-0:41          'inv' (2X2 matrix of float)

-0:41          inverse (2X2 matrix of float)

+0:41        move second child to first child (temp 2X2 matrix of float)

+0:41          'inv' (temp 2X2 matrix of float)

+0:41          inverse (global 2X2 matrix of float)

 0:41            'um2' (uniform 2X2 matrix of float)

-0:42      multiply second child into first child (4-component vector of float)

+0:42      multiply second child into first child (temp 4-component vector of float)

 0:42        'FragColor' (out 4-component vector of float)

-0:42        Construct vec4 (4-component vector of float)

-0:42          direct index (float)

-0:42            direct index (2-component vector of float)

-0:42              'inv' (2X2 matrix of float)

+0:42        Construct vec4 (temp 4-component vector of float)

+0:42          direct index (temp float)

+0:42            direct index (temp 2-component vector of float)

+0:42              'inv' (temp 2X2 matrix of float)

 0:42              Constant:

 0:42                0 (const int)

 0:42            Constant:

 0:42              0 (const int)

-0:42          direct index (float)

-0:42            direct index (2-component vector of float)

-0:42              'inv' (2X2 matrix of float)

+0:42          direct index (temp float)

+0:42            direct index (temp 2-component vector of float)

+0:42              'inv' (temp 2X2 matrix of float)

 0:42              Constant:

 0:42                1 (const int)

 0:42            Constant:

 0:42              0 (const int)

-0:42          direct index (float)

-0:42            direct index (2-component vector of float)

-0:42              'inv' (2X2 matrix of float)

+0:42          direct index (temp float)

+0:42            direct index (temp 2-component vector of float)

+0:42              'inv' (temp 2X2 matrix of float)

 0:42              Constant:

 0:42                0 (const int)

 0:42            Constant:

 0:42              1 (const int)

-0:42          direct index (float)

-0:42            direct index (2-component vector of float)

-0:42              'inv' (2X2 matrix of float)

+0:42          direct index (temp float)

+0:42            direct index (temp 2-component vector of float)

+0:42              'inv' (temp 2X2 matrix of float)

 0:42              Constant:

 0:42                1 (const int)

 0:42            Constant:

 0:42              1 (const int)

 0:43      Sequence

-0:43        move second child to first child (3X3 matrix of float)

-0:43          'inv3' (3X3 matrix of float)

-0:43          inverse (3X3 matrix of float)

+0:43        move second child to first child (temp 3X3 matrix of float)

+0:43          'inv3' (temp 3X3 matrix of float)

+0:43          inverse (global 3X3 matrix of float)

 0:43            'um3' (uniform 3X3 matrix of float)

-0:44      multiply second child into first child (4-component vector of float)

+0:44      multiply second child into first child (temp 4-component vector of float)

 0:44        'FragColor' (out 4-component vector of float)

-0:44        Construct vec4 (4-component vector of float)

-0:44          direct index (float)

-0:44            direct index (3-component vector of float)

-0:44              'inv3' (3X3 matrix of float)

+0:44        Construct vec4 (temp 4-component vector of float)

+0:44          direct index (temp float)

+0:44            direct index (temp 3-component vector of float)

+0:44              'inv3' (temp 3X3 matrix of float)

 0:44              Constant:

 0:44                2 (const int)

 0:44            Constant:

 0:44              1 (const int)

 0:46      Sequence

-0:46        move second child to first child (4X4 matrix of float)

-0:46          'inv4' (4X4 matrix of float)

-0:46          inverse (4X4 matrix of float)

+0:46        move second child to first child (temp 4X4 matrix of float)

+0:46          'inv4' (temp 4X4 matrix of float)

+0:46          inverse (global 4X4 matrix of float)

 0:46            'um4' (uniform 4X4 matrix of float)

-0:47      matrix mult second child into first child (4-component vector of float)

+0:47      matrix mult second child into first child (temp 4-component vector of float)

 0:47        'FragColor' (out 4-component vector of float)

-0:47        'inv4' (4X4 matrix of float)

-0:49      move second child to first child (4-component vector of float)

+0:47        'inv4' (temp 4X4 matrix of float)

+0:49      move second child to first child (temp 4-component vector of float)

 0:49        'FragColor' (out 4-component vector of float)

-0:49        Construct vec4 (4-component vector of float)

-0:49          vector-times-matrix (3-component vector of float)

+0:49        Construct vec4 (temp 4-component vector of float)

+0:49          vector-times-matrix (temp 3-component vector of float)

 0:49            'FragColor' (out 4-component vector of float)

-0:49            component-wise multiply (3X4 matrix of float)

+0:49            component-wise multiply (global 3X4 matrix of float)

 0:49              'un34' (uniform 3X4 matrix of float)

 0:49              'un34' (uniform 3X4 matrix of float)

-0:49          direct index (float)

+0:49          direct index (temp float)

 0:49            'FragColor' (out 4-component vector of float)

 0:49            Constant:

 0:49              3 (const int)

diff --git a/Test/baseResults/matrixError.vert.out b/Test/baseResults/matrixError.vert.out
index d60f156..d5d0bc3 100644
--- a/Test/baseResults/matrixError.vert.out
+++ b/Test/baseResults/matrixError.vert.out
@@ -1,9 +1,9 @@
 matrixError.vert

 ERROR: 0:10: 'constructor' : too many arguments 

 ERROR: 0:7: 'const' : non-matching or non-convertible constant type for const initializer 

-ERROR: 0:17: 'assign' :  cannot convert from '2-component vector of float' to '3-component vector of float'

-ERROR: 0:18: 'assign' :  cannot convert from '2-component vector of float' to '3-component vector of float'

-ERROR: 0:19: 'xy' : does not apply to this type: 2X3 matrix of float

+ERROR: 0:17: 'assign' :  cannot convert from 'temp 2-component vector of float' to 'temp 3-component vector of float'

+ERROR: 0:18: 'assign' :  cannot convert from 'temp 2-component vector of float' to 'temp 3-component vector of float'

+ERROR: 0:19: 'xy' : does not apply to this type: temp 2X3 matrix of float

 ERROR: 0:21: '[' :  matrix index out of range '2'

 ERROR: 0:21: '[' :  vector index out of range '4'

 ERROR: 7 compilation errors.  No code generated.

@@ -11,23 +11,23 @@
 

 Shader version: 120

 ERROR: node is still EOpNull!

-0:12  Function Definition: main( (void)

+0:12  Function Definition: main( (global void)

 0:12    Function Parameters: 

 0:?     Sequence

-0:17      'a' (3-component vector of float)

-0:18      'b' (3-component vector of float)

-0:19      'm23' (2X3 matrix of float)

-0:21      move second child to first child (4-component vector of float)

+0:17      'a' (temp 3-component vector of float)

+0:18      'b' (temp 3-component vector of float)

+0:19      'm23' (temp 2X3 matrix of float)

+0:21      move second child to first child (temp 4-component vector of float)

 0:21        'gl_Position' (gl_Position 4-component vector of float)

-0:21        Construct vec4 (4-component vector of float)

-0:21          matrix-times-vector (3-component vector of float)

-0:21            matrix-multiply (3X3 matrix of float)

-0:21              'm23' (2X3 matrix of float)

+0:21        Construct vec4 (temp 4-component vector of float)

+0:21          matrix-times-vector (temp 3-component vector of float)

+0:21            matrix-multiply (temp 3X3 matrix of float)

+0:21              'm23' (temp 2X3 matrix of float)

 0:21              'm32' (uniform 3X2 matrix of float)

 0:21            'v3' (in 3-component vector of float)

-0:21          direct index (float)

-0:21            direct index (4-component vector of float)

-0:21              'm24' (2X4 matrix of float)

+0:21          direct index (temp float)

+0:21            direct index (temp 4-component vector of float)

+0:21              'm24' (temp 2X4 matrix of float)

 0:21              Constant:

 0:21                2 (const int)

 0:21            Constant:

@@ -35,7 +35,7 @@
 0:?   Linker Objects

 0:?     'v3' (in 3-component vector of float)

 0:?     'm32' (uniform 3X2 matrix of float)

-0:?     'm24' (2X4 matrix of float)

+0:?     'm24' (temp 2X4 matrix of float)

 

 

 Linked vertex stage:

@@ -43,23 +43,23 @@
 

 Shader version: 120

 ERROR: node is still EOpNull!

-0:12  Function Definition: main( (void)

+0:12  Function Definition: main( (global void)

 0:12    Function Parameters: 

 0:?     Sequence

-0:17      'a' (3-component vector of float)

-0:18      'b' (3-component vector of float)

-0:19      'm23' (2X3 matrix of float)

-0:21      move second child to first child (4-component vector of float)

+0:17      'a' (temp 3-component vector of float)

+0:18      'b' (temp 3-component vector of float)

+0:19      'm23' (temp 2X3 matrix of float)

+0:21      move second child to first child (temp 4-component vector of float)

 0:21        'gl_Position' (gl_Position 4-component vector of float)

-0:21        Construct vec4 (4-component vector of float)

-0:21          matrix-times-vector (3-component vector of float)

-0:21            matrix-multiply (3X3 matrix of float)

-0:21              'm23' (2X3 matrix of float)

+0:21        Construct vec4 (temp 4-component vector of float)

+0:21          matrix-times-vector (temp 3-component vector of float)

+0:21            matrix-multiply (temp 3X3 matrix of float)

+0:21              'm23' (temp 2X3 matrix of float)

 0:21              'm32' (uniform 3X2 matrix of float)

 0:21            'v3' (in 3-component vector of float)

-0:21          direct index (float)

-0:21            direct index (4-component vector of float)

-0:21              'm24' (2X4 matrix of float)

+0:21          direct index (temp float)

+0:21            direct index (temp 4-component vector of float)

+0:21              'm24' (temp 2X4 matrix of float)

 0:21              Constant:

 0:21                2 (const int)

 0:21            Constant:

@@ -67,5 +67,5 @@
 0:?   Linker Objects

 0:?     'v3' (in 3-component vector of float)

 0:?     'm32' (uniform 3X2 matrix of float)

-0:?     'm24' (2X4 matrix of float)

+0:?     'm24' (temp 2X4 matrix of float)

 

diff --git a/Test/baseResults/newTexture.frag.out b/Test/baseResults/newTexture.frag.out
index 9965d49..9b090d0 100644
--- a/Test/baseResults/newTexture.frag.out
+++ b/Test/baseResults/newTexture.frag.out
@@ -3,87 +3,87 @@
 

 Shader version: 430

 0:? Sequence

-0:34  Function Definition: main( (void)

+0:34  Function Definition: main( (global void)

 0:34    Function Parameters: 

 0:36    Sequence

 0:36      Sequence

-0:36        move second child to first child (4-component vector of float)

-0:36          'v' (4-component vector of float)

-0:36          Function Call: texture(s21;vf2; (4-component vector of float)

+0:36        move second child to first child (temp 4-component vector of float)

+0:36          'v' (temp 4-component vector of float)

+0:36          Function Call: texture(s21;vf2; (global 4-component vector of float)

 0:36            's2D' (uniform sampler2D)

 0:36            'c2D' (smooth in 2-component vector of float)

-0:37      add second child into first child (4-component vector of float)

-0:37        'v' (4-component vector of float)

-0:37        Function Call: textureProj(s31;vf4; (4-component vector of float)

+0:37      add second child into first child (temp 4-component vector of float)

+0:37        'v' (temp 4-component vector of float)

+0:37        Function Call: textureProj(s31;vf4; (global 4-component vector of float)

 0:37          's3D' (uniform sampler3D)

 0:37          'c4D' (smooth in 4-component vector of float)

-0:38      add second child into first child (4-component vector of float)

-0:38        'v' (4-component vector of float)

-0:38        Function Call: textureLod(sA21;vf3;f1; (4-component vector of float)

+0:38      add second child into first child (temp 4-component vector of float)

+0:38        'v' (temp 4-component vector of float)

+0:38        Function Call: textureLod(sA21;vf3;f1; (global 4-component vector of float)

 0:38          's2DArray' (uniform sampler2DArray)

 0:38          'c3D' (smooth in 3-component vector of float)

 0:38          Constant:

 0:38            1.200000

-0:39      add second child into first child (float)

-0:39        direct index (float)

-0:39          'v' (4-component vector of float)

+0:39      add second child into first child (temp float)

+0:39        direct index (temp float)

+0:39          'v' (temp 4-component vector of float)

 0:39          Constant:

 0:39            1 (const int)

-0:39        Function Call: textureOffset(sS21;vf3;vi2;f1; (float)

+0:39        Function Call: textureOffset(sS21;vf3;vi2;f1; (global float)

 0:39          's2DShadow' (uniform sampler2DShadow)

 0:39          'c3D' (smooth in 3-component vector of float)

 0:39          Constant:

 0:39            3 (const int)

 0:39            3 (const int)

 0:39          'c1D' (smooth in float)

-0:40      add second child into first child (4-component vector of float)

-0:40        'v' (4-component vector of float)

-0:40        Function Call: texelFetch(s31;vi3;i1; (4-component vector of float)

+0:40      add second child into first child (temp 4-component vector of float)

+0:40        'v' (temp 4-component vector of float)

+0:40        Function Call: texelFetch(s31;vi3;i1; (global 4-component vector of float)

 0:40          's3D' (uniform sampler3D)

 0:40          'ic3D' (flat in 3-component vector of int)

 0:40          'ic1D' (flat in int)

-0:41      add second child into first child (4-component vector of float)

-0:41        'v' (4-component vector of float)

-0:41        Function Call: texelFetchOffset(s21;vi2;i1;vi2; (4-component vector of float)

+0:41      add second child into first child (temp 4-component vector of float)

+0:41        'v' (temp 4-component vector of float)

+0:41        Function Call: texelFetchOffset(s21;vi2;i1;vi2; (global 4-component vector of float)

 0:41          's2D' (uniform sampler2D)

 0:41          'ic2D' (flat in 2-component vector of int)

 0:41          Constant:

 0:41            4 (const int)

 0:41          'ic2D' (flat in 2-component vector of int)

-0:42      add second child into first child (float)

-0:42        direct index (float)

-0:42          'v' (4-component vector of float)

+0:42      add second child into first child (temp float)

+0:42        direct index (temp float)

+0:42          'v' (temp 4-component vector of float)

 0:42          Constant:

 0:42            1 (const int)

-0:42        Function Call: textureLodOffset(sS21;vf3;f1;vi2; (float)

+0:42        Function Call: textureLodOffset(sS21;vf3;f1;vi2; (global float)

 0:42          's2DShadow' (uniform sampler2DShadow)

 0:42          'c3D' (smooth in 3-component vector of float)

 0:42          'c1D' (smooth in float)

 0:42          Constant:

 0:42            3 (const int)

 0:42            3 (const int)

-0:43      add second child into first child (4-component vector of float)

-0:43        'v' (4-component vector of float)

-0:43        Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (4-component vector of float)

+0:43      add second child into first child (temp 4-component vector of float)

+0:43        'v' (temp 4-component vector of float)

+0:43        Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (global 4-component vector of float)

 0:43          's2D' (uniform sampler2D)

 0:43          'c3D' (smooth in 3-component vector of float)

 0:43          'c1D' (smooth in float)

 0:43          Constant:

 0:43            3 (const int)

 0:43            3 (const int)

-0:44      add second child into first child (4-component vector of float)

-0:44        'v' (4-component vector of float)

-0:44        Function Call: textureGrad(sC1;vf3;vf3;vf3; (4-component vector of float)

+0:44      add second child into first child (temp 4-component vector of float)

+0:44        'v' (temp 4-component vector of float)

+0:44        Function Call: textureGrad(sC1;vf3;vf3;vf3; (global 4-component vector of float)

 0:44          'sCube' (uniform samplerCube)

 0:44          'c3D' (smooth in 3-component vector of float)

 0:44          'c3D' (smooth in 3-component vector of float)

 0:44          'c3D' (smooth in 3-component vector of float)

-0:45      add second child into first child (float)

-0:45        direct index (float)

-0:45          'v' (4-component vector of float)

+0:45      add second child into first child (temp float)

+0:45        direct index (temp float)

+0:45          'v' (temp 4-component vector of float)

 0:45          Constant:

 0:45            0 (const int)

-0:45        Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (float)

+0:45        Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (global float)

 0:45          's2DArrayShadow' (uniform sampler2DArrayShadow)

 0:45          'c4D' (smooth in 4-component vector of float)

 0:45          'c2D' (smooth in 2-component vector of float)

@@ -91,16 +91,16 @@
 0:45          Constant:

 0:45            3 (const int)

 0:45            3 (const int)

-0:46      add second child into first child (4-component vector of float)

-0:46        'v' (4-component vector of float)

-0:46        Function Call: textureProjGrad(s31;vf4;vf3;vf3; (4-component vector of float)

+0:46      add second child into first child (temp 4-component vector of float)

+0:46        'v' (temp 4-component vector of float)

+0:46        Function Call: textureProjGrad(s31;vf4;vf3;vf3; (global 4-component vector of float)

 0:46          's3D' (uniform sampler3D)

 0:46          'c4D' (smooth in 4-component vector of float)

 0:46          'c3D' (smooth in 3-component vector of float)

 0:46          'c3D' (smooth in 3-component vector of float)

-0:47      add second child into first child (4-component vector of float)

-0:47        'v' (4-component vector of float)

-0:47        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (4-component vector of float)

+0:47      add second child into first child (temp 4-component vector of float)

+0:47        'v' (temp 4-component vector of float)

+0:47        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (global 4-component vector of float)

 0:47          's2D' (uniform sampler2D)

 0:47          'c3D' (smooth in 3-component vector of float)

 0:47          'c2D' (smooth in 2-component vector of float)

@@ -109,93 +109,93 @@
 0:47            3 (const int)

 0:47            3 (const int)

 0:49      Sequence

-0:49        move second child to first child (4-component vector of int)

-0:49          'iv' (4-component vector of int)

-0:49          Function Call: texture(is21;vf2; (4-component vector of int)

+0:49        move second child to first child (temp 4-component vector of int)

+0:49          'iv' (temp 4-component vector of int)

+0:49          Function Call: texture(is21;vf2; (global 4-component vector of int)

 0:49            'is2D' (uniform isampler2D)

 0:49            'c2D' (smooth in 2-component vector of float)

-0:50      add second child into first child (4-component vector of float)

-0:50        'v' (4-component vector of float)

-0:50        Convert int to float (4-component vector of float)

-0:50          'iv' (4-component vector of int)

-0:51      move second child to first child (4-component vector of int)

-0:51        'iv' (4-component vector of int)

-0:51        Function Call: textureProjOffset(is21;vf4;vi2; (4-component vector of int)

+0:50      add second child into first child (temp 4-component vector of float)

+0:50        'v' (temp 4-component vector of float)

+0:50        Convert int to float (temp 4-component vector of float)

+0:50          'iv' (temp 4-component vector of int)

+0:51      move second child to first child (temp 4-component vector of int)

+0:51        'iv' (temp 4-component vector of int)

+0:51        Function Call: textureProjOffset(is21;vf4;vi2; (global 4-component vector of int)

 0:51          'is2D' (uniform isampler2D)

 0:51          'c4D' (smooth in 4-component vector of float)

 0:51          Constant:

 0:51            3 (const int)

 0:51            3 (const int)

-0:52      add second child into first child (4-component vector of float)

-0:52        'v' (4-component vector of float)

-0:52        Convert int to float (4-component vector of float)

-0:52          'iv' (4-component vector of int)

-0:53      move second child to first child (4-component vector of int)

-0:53        'iv' (4-component vector of int)

-0:53        Function Call: textureProjLod(is21;vf3;f1; (4-component vector of int)

+0:52      add second child into first child (temp 4-component vector of float)

+0:52        'v' (temp 4-component vector of float)

+0:52        Convert int to float (temp 4-component vector of float)

+0:52          'iv' (temp 4-component vector of int)

+0:53      move second child to first child (temp 4-component vector of int)

+0:53        'iv' (temp 4-component vector of int)

+0:53        Function Call: textureProjLod(is21;vf3;f1; (global 4-component vector of int)

 0:53          'is2D' (uniform isampler2D)

 0:53          'c3D' (smooth in 3-component vector of float)

 0:53          'c1D' (smooth in float)

-0:54      add second child into first child (4-component vector of float)

-0:54        'v' (4-component vector of float)

-0:54        Convert int to float (4-component vector of float)

-0:54          'iv' (4-component vector of int)

-0:55      move second child to first child (4-component vector of int)

-0:55        'iv' (4-component vector of int)

-0:55        Function Call: textureProjGrad(is21;vf3;vf2;vf2; (4-component vector of int)

+0:54      add second child into first child (temp 4-component vector of float)

+0:54        'v' (temp 4-component vector of float)

+0:54        Convert int to float (temp 4-component vector of float)

+0:54          'iv' (temp 4-component vector of int)

+0:55      move second child to first child (temp 4-component vector of int)

+0:55        'iv' (temp 4-component vector of int)

+0:55        Function Call: textureProjGrad(is21;vf3;vf2;vf2; (global 4-component vector of int)

 0:55          'is2D' (uniform isampler2D)

 0:55          'c3D' (smooth in 3-component vector of float)

 0:55          'c2D' (smooth in 2-component vector of float)

 0:55          'c2D' (smooth in 2-component vector of float)

-0:56      add second child into first child (4-component vector of float)

-0:56        'v' (4-component vector of float)

-0:56        Convert int to float (4-component vector of float)

-0:56          'iv' (4-component vector of int)

-0:57      move second child to first child (4-component vector of int)

-0:57        'iv' (4-component vector of int)

-0:57        Function Call: texture(is31;vf3;f1; (4-component vector of int)

+0:56      add second child into first child (temp 4-component vector of float)

+0:56        'v' (temp 4-component vector of float)

+0:56        Convert int to float (temp 4-component vector of float)

+0:56          'iv' (temp 4-component vector of int)

+0:57      move second child to first child (temp 4-component vector of int)

+0:57        'iv' (temp 4-component vector of int)

+0:57        Function Call: texture(is31;vf3;f1; (global 4-component vector of int)

 0:57          'is3D' (uniform isampler3D)

 0:57          'c3D' (smooth in 3-component vector of float)

 0:57          Constant:

 0:57            4.200000

-0:58      add second child into first child (4-component vector of float)

-0:58        'v' (4-component vector of float)

-0:58        Convert int to float (4-component vector of float)

-0:58          'iv' (4-component vector of int)

-0:59      move second child to first child (4-component vector of int)

-0:59        'iv' (4-component vector of int)

-0:59        Function Call: textureLod(isC1;vf3;f1; (4-component vector of int)

+0:58      add second child into first child (temp 4-component vector of float)

+0:58        'v' (temp 4-component vector of float)

+0:58        Convert int to float (temp 4-component vector of float)

+0:58          'iv' (temp 4-component vector of int)

+0:59      move second child to first child (temp 4-component vector of int)

+0:59        'iv' (temp 4-component vector of int)

+0:59        Function Call: textureLod(isC1;vf3;f1; (global 4-component vector of int)

 0:59          'isCube' (uniform isamplerCube)

 0:59          'c3D' (smooth in 3-component vector of float)

 0:59          'c1D' (smooth in float)

-0:60      add second child into first child (4-component vector of float)

-0:60        'v' (4-component vector of float)

-0:60        Convert int to float (4-component vector of float)

-0:60          'iv' (4-component vector of int)

-0:61      move second child to first child (4-component vector of int)

-0:61        'iv' (4-component vector of int)

-0:61        Function Call: texelFetch(isA21;vi3;i1; (4-component vector of int)

+0:60      add second child into first child (temp 4-component vector of float)

+0:60        'v' (temp 4-component vector of float)

+0:60        Convert int to float (temp 4-component vector of float)

+0:60          'iv' (temp 4-component vector of int)

+0:61      move second child to first child (temp 4-component vector of int)

+0:61        'iv' (temp 4-component vector of int)

+0:61        Function Call: texelFetch(isA21;vi3;i1; (global 4-component vector of int)

 0:61          'is2DArray' (uniform isampler2DArray)

 0:61          'ic3D' (flat in 3-component vector of int)

 0:61          'ic1D' (flat in int)

-0:62      add second child into first child (4-component vector of float)

-0:62        'v' (4-component vector of float)

-0:62        Convert int to float (4-component vector of float)

-0:62          'iv' (4-component vector of int)

+0:62      add second child into first child (temp 4-component vector of float)

+0:62        'v' (temp 4-component vector of float)

+0:62        Convert int to float (temp 4-component vector of float)

+0:62          'iv' (temp 4-component vector of int)

 0:64      Sequence

-0:64        move second child to first child (2-component vector of int)

-0:64          'iv2' (2-component vector of int)

-0:64          Function Call: textureSize(sSC1;i1; (2-component vector of int)

+0:64        move second child to first child (temp 2-component vector of int)

+0:64          'iv2' (temp 2-component vector of int)

+0:64          Function Call: textureSize(sSC1;i1; (global 2-component vector of int)

 0:64            'sCubeShadow' (uniform samplerCubeShadow)

 0:64            Constant:

 0:64              2 (const int)

-0:67      move second child to first child (4-component vector of float)

+0:67      move second child to first child (temp 4-component vector of float)

 0:67        'FragData' (out 4-component vector of float)

-0:67        add (4-component vector of float)

-0:67          'v' (4-component vector of float)

-0:67          Construct vec4 (4-component vector of float)

-0:67            Convert int to float (2-component vector of float)

-0:67              'iv2' (2-component vector of int)

+0:67        add (temp 4-component vector of float)

+0:67          'v' (temp 4-component vector of float)

+0:67          Construct vec4 (temp 4-component vector of float)

+0:67            Convert int to float (temp 2-component vector of float)

+0:67              'iv2' (temp 2-component vector of int)

 0:67            Constant:

 0:67              0.000000

 0:67            Constant:

@@ -233,87 +233,87 @@
 

 Shader version: 430

 0:? Sequence

-0:34  Function Definition: main( (void)

+0:34  Function Definition: main( (global void)

 0:34    Function Parameters: 

 0:36    Sequence

 0:36      Sequence

-0:36        move second child to first child (4-component vector of float)

-0:36          'v' (4-component vector of float)

-0:36          Function Call: texture(s21;vf2; (4-component vector of float)

+0:36        move second child to first child (temp 4-component vector of float)

+0:36          'v' (temp 4-component vector of float)

+0:36          Function Call: texture(s21;vf2; (global 4-component vector of float)

 0:36            's2D' (uniform sampler2D)

 0:36            'c2D' (smooth in 2-component vector of float)

-0:37      add second child into first child (4-component vector of float)

-0:37        'v' (4-component vector of float)

-0:37        Function Call: textureProj(s31;vf4; (4-component vector of float)

+0:37      add second child into first child (temp 4-component vector of float)

+0:37        'v' (temp 4-component vector of float)

+0:37        Function Call: textureProj(s31;vf4; (global 4-component vector of float)

 0:37          's3D' (uniform sampler3D)

 0:37          'c4D' (smooth in 4-component vector of float)

-0:38      add second child into first child (4-component vector of float)

-0:38        'v' (4-component vector of float)

-0:38        Function Call: textureLod(sA21;vf3;f1; (4-component vector of float)

+0:38      add second child into first child (temp 4-component vector of float)

+0:38        'v' (temp 4-component vector of float)

+0:38        Function Call: textureLod(sA21;vf3;f1; (global 4-component vector of float)

 0:38          's2DArray' (uniform sampler2DArray)

 0:38          'c3D' (smooth in 3-component vector of float)

 0:38          Constant:

 0:38            1.200000

-0:39      add second child into first child (float)

-0:39        direct index (float)

-0:39          'v' (4-component vector of float)

+0:39      add second child into first child (temp float)

+0:39        direct index (temp float)

+0:39          'v' (temp 4-component vector of float)

 0:39          Constant:

 0:39            1 (const int)

-0:39        Function Call: textureOffset(sS21;vf3;vi2;f1; (float)

+0:39        Function Call: textureOffset(sS21;vf3;vi2;f1; (global float)

 0:39          's2DShadow' (uniform sampler2DShadow)

 0:39          'c3D' (smooth in 3-component vector of float)

 0:39          Constant:

 0:39            3 (const int)

 0:39            3 (const int)

 0:39          'c1D' (smooth in float)

-0:40      add second child into first child (4-component vector of float)

-0:40        'v' (4-component vector of float)

-0:40        Function Call: texelFetch(s31;vi3;i1; (4-component vector of float)

+0:40      add second child into first child (temp 4-component vector of float)

+0:40        'v' (temp 4-component vector of float)

+0:40        Function Call: texelFetch(s31;vi3;i1; (global 4-component vector of float)

 0:40          's3D' (uniform sampler3D)

 0:40          'ic3D' (flat in 3-component vector of int)

 0:40          'ic1D' (flat in int)

-0:41      add second child into first child (4-component vector of float)

-0:41        'v' (4-component vector of float)

-0:41        Function Call: texelFetchOffset(s21;vi2;i1;vi2; (4-component vector of float)

+0:41      add second child into first child (temp 4-component vector of float)

+0:41        'v' (temp 4-component vector of float)

+0:41        Function Call: texelFetchOffset(s21;vi2;i1;vi2; (global 4-component vector of float)

 0:41          's2D' (uniform sampler2D)

 0:41          'ic2D' (flat in 2-component vector of int)

 0:41          Constant:

 0:41            4 (const int)

 0:41          'ic2D' (flat in 2-component vector of int)

-0:42      add second child into first child (float)

-0:42        direct index (float)

-0:42          'v' (4-component vector of float)

+0:42      add second child into first child (temp float)

+0:42        direct index (temp float)

+0:42          'v' (temp 4-component vector of float)

 0:42          Constant:

 0:42            1 (const int)

-0:42        Function Call: textureLodOffset(sS21;vf3;f1;vi2; (float)

+0:42        Function Call: textureLodOffset(sS21;vf3;f1;vi2; (global float)

 0:42          's2DShadow' (uniform sampler2DShadow)

 0:42          'c3D' (smooth in 3-component vector of float)

 0:42          'c1D' (smooth in float)

 0:42          Constant:

 0:42            3 (const int)

 0:42            3 (const int)

-0:43      add second child into first child (4-component vector of float)

-0:43        'v' (4-component vector of float)

-0:43        Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (4-component vector of float)

+0:43      add second child into first child (temp 4-component vector of float)

+0:43        'v' (temp 4-component vector of float)

+0:43        Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (global 4-component vector of float)

 0:43          's2D' (uniform sampler2D)

 0:43          'c3D' (smooth in 3-component vector of float)

 0:43          'c1D' (smooth in float)

 0:43          Constant:

 0:43            3 (const int)

 0:43            3 (const int)

-0:44      add second child into first child (4-component vector of float)

-0:44        'v' (4-component vector of float)

-0:44        Function Call: textureGrad(sC1;vf3;vf3;vf3; (4-component vector of float)

+0:44      add second child into first child (temp 4-component vector of float)

+0:44        'v' (temp 4-component vector of float)

+0:44        Function Call: textureGrad(sC1;vf3;vf3;vf3; (global 4-component vector of float)

 0:44          'sCube' (uniform samplerCube)

 0:44          'c3D' (smooth in 3-component vector of float)

 0:44          'c3D' (smooth in 3-component vector of float)

 0:44          'c3D' (smooth in 3-component vector of float)

-0:45      add second child into first child (float)

-0:45        direct index (float)

-0:45          'v' (4-component vector of float)

+0:45      add second child into first child (temp float)

+0:45        direct index (temp float)

+0:45          'v' (temp 4-component vector of float)

 0:45          Constant:

 0:45            0 (const int)

-0:45        Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (float)

+0:45        Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (global float)

 0:45          's2DArrayShadow' (uniform sampler2DArrayShadow)

 0:45          'c4D' (smooth in 4-component vector of float)

 0:45          'c2D' (smooth in 2-component vector of float)

@@ -321,16 +321,16 @@
 0:45          Constant:

 0:45            3 (const int)

 0:45            3 (const int)

-0:46      add second child into first child (4-component vector of float)

-0:46        'v' (4-component vector of float)

-0:46        Function Call: textureProjGrad(s31;vf4;vf3;vf3; (4-component vector of float)

+0:46      add second child into first child (temp 4-component vector of float)

+0:46        'v' (temp 4-component vector of float)

+0:46        Function Call: textureProjGrad(s31;vf4;vf3;vf3; (global 4-component vector of float)

 0:46          's3D' (uniform sampler3D)

 0:46          'c4D' (smooth in 4-component vector of float)

 0:46          'c3D' (smooth in 3-component vector of float)

 0:46          'c3D' (smooth in 3-component vector of float)

-0:47      add second child into first child (4-component vector of float)

-0:47        'v' (4-component vector of float)

-0:47        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (4-component vector of float)

+0:47      add second child into first child (temp 4-component vector of float)

+0:47        'v' (temp 4-component vector of float)

+0:47        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (global 4-component vector of float)

 0:47          's2D' (uniform sampler2D)

 0:47          'c3D' (smooth in 3-component vector of float)

 0:47          'c2D' (smooth in 2-component vector of float)

@@ -339,93 +339,93 @@
 0:47            3 (const int)

 0:47            3 (const int)

 0:49      Sequence

-0:49        move second child to first child (4-component vector of int)

-0:49          'iv' (4-component vector of int)

-0:49          Function Call: texture(is21;vf2; (4-component vector of int)

+0:49        move second child to first child (temp 4-component vector of int)

+0:49          'iv' (temp 4-component vector of int)

+0:49          Function Call: texture(is21;vf2; (global 4-component vector of int)

 0:49            'is2D' (uniform isampler2D)

 0:49            'c2D' (smooth in 2-component vector of float)

-0:50      add second child into first child (4-component vector of float)

-0:50        'v' (4-component vector of float)

-0:50        Convert int to float (4-component vector of float)

-0:50          'iv' (4-component vector of int)

-0:51      move second child to first child (4-component vector of int)

-0:51        'iv' (4-component vector of int)

-0:51        Function Call: textureProjOffset(is21;vf4;vi2; (4-component vector of int)

+0:50      add second child into first child (temp 4-component vector of float)

+0:50        'v' (temp 4-component vector of float)

+0:50        Convert int to float (temp 4-component vector of float)

+0:50          'iv' (temp 4-component vector of int)

+0:51      move second child to first child (temp 4-component vector of int)

+0:51        'iv' (temp 4-component vector of int)

+0:51        Function Call: textureProjOffset(is21;vf4;vi2; (global 4-component vector of int)

 0:51          'is2D' (uniform isampler2D)

 0:51          'c4D' (smooth in 4-component vector of float)

 0:51          Constant:

 0:51            3 (const int)

 0:51            3 (const int)

-0:52      add second child into first child (4-component vector of float)

-0:52        'v' (4-component vector of float)

-0:52        Convert int to float (4-component vector of float)

-0:52          'iv' (4-component vector of int)

-0:53      move second child to first child (4-component vector of int)

-0:53        'iv' (4-component vector of int)

-0:53        Function Call: textureProjLod(is21;vf3;f1; (4-component vector of int)

+0:52      add second child into first child (temp 4-component vector of float)

+0:52        'v' (temp 4-component vector of float)

+0:52        Convert int to float (temp 4-component vector of float)

+0:52          'iv' (temp 4-component vector of int)

+0:53      move second child to first child (temp 4-component vector of int)

+0:53        'iv' (temp 4-component vector of int)

+0:53        Function Call: textureProjLod(is21;vf3;f1; (global 4-component vector of int)

 0:53          'is2D' (uniform isampler2D)

 0:53          'c3D' (smooth in 3-component vector of float)

 0:53          'c1D' (smooth in float)

-0:54      add second child into first child (4-component vector of float)

-0:54        'v' (4-component vector of float)

-0:54        Convert int to float (4-component vector of float)

-0:54          'iv' (4-component vector of int)

-0:55      move second child to first child (4-component vector of int)

-0:55        'iv' (4-component vector of int)

-0:55        Function Call: textureProjGrad(is21;vf3;vf2;vf2; (4-component vector of int)

+0:54      add second child into first child (temp 4-component vector of float)

+0:54        'v' (temp 4-component vector of float)

+0:54        Convert int to float (temp 4-component vector of float)

+0:54          'iv' (temp 4-component vector of int)

+0:55      move second child to first child (temp 4-component vector of int)

+0:55        'iv' (temp 4-component vector of int)

+0:55        Function Call: textureProjGrad(is21;vf3;vf2;vf2; (global 4-component vector of int)

 0:55          'is2D' (uniform isampler2D)

 0:55          'c3D' (smooth in 3-component vector of float)

 0:55          'c2D' (smooth in 2-component vector of float)

 0:55          'c2D' (smooth in 2-component vector of float)

-0:56      add second child into first child (4-component vector of float)

-0:56        'v' (4-component vector of float)

-0:56        Convert int to float (4-component vector of float)

-0:56          'iv' (4-component vector of int)

-0:57      move second child to first child (4-component vector of int)

-0:57        'iv' (4-component vector of int)

-0:57        Function Call: texture(is31;vf3;f1; (4-component vector of int)

+0:56      add second child into first child (temp 4-component vector of float)

+0:56        'v' (temp 4-component vector of float)

+0:56        Convert int to float (temp 4-component vector of float)

+0:56          'iv' (temp 4-component vector of int)

+0:57      move second child to first child (temp 4-component vector of int)

+0:57        'iv' (temp 4-component vector of int)

+0:57        Function Call: texture(is31;vf3;f1; (global 4-component vector of int)

 0:57          'is3D' (uniform isampler3D)

 0:57          'c3D' (smooth in 3-component vector of float)

 0:57          Constant:

 0:57            4.200000

-0:58      add second child into first child (4-component vector of float)

-0:58        'v' (4-component vector of float)

-0:58        Convert int to float (4-component vector of float)

-0:58          'iv' (4-component vector of int)

-0:59      move second child to first child (4-component vector of int)

-0:59        'iv' (4-component vector of int)

-0:59        Function Call: textureLod(isC1;vf3;f1; (4-component vector of int)

+0:58      add second child into first child (temp 4-component vector of float)

+0:58        'v' (temp 4-component vector of float)

+0:58        Convert int to float (temp 4-component vector of float)

+0:58          'iv' (temp 4-component vector of int)

+0:59      move second child to first child (temp 4-component vector of int)

+0:59        'iv' (temp 4-component vector of int)

+0:59        Function Call: textureLod(isC1;vf3;f1; (global 4-component vector of int)

 0:59          'isCube' (uniform isamplerCube)

 0:59          'c3D' (smooth in 3-component vector of float)

 0:59          'c1D' (smooth in float)

-0:60      add second child into first child (4-component vector of float)

-0:60        'v' (4-component vector of float)

-0:60        Convert int to float (4-component vector of float)

-0:60          'iv' (4-component vector of int)

-0:61      move second child to first child (4-component vector of int)

-0:61        'iv' (4-component vector of int)

-0:61        Function Call: texelFetch(isA21;vi3;i1; (4-component vector of int)

+0:60      add second child into first child (temp 4-component vector of float)

+0:60        'v' (temp 4-component vector of float)

+0:60        Convert int to float (temp 4-component vector of float)

+0:60          'iv' (temp 4-component vector of int)

+0:61      move second child to first child (temp 4-component vector of int)

+0:61        'iv' (temp 4-component vector of int)

+0:61        Function Call: texelFetch(isA21;vi3;i1; (global 4-component vector of int)

 0:61          'is2DArray' (uniform isampler2DArray)

 0:61          'ic3D' (flat in 3-component vector of int)

 0:61          'ic1D' (flat in int)

-0:62      add second child into first child (4-component vector of float)

-0:62        'v' (4-component vector of float)

-0:62        Convert int to float (4-component vector of float)

-0:62          'iv' (4-component vector of int)

+0:62      add second child into first child (temp 4-component vector of float)

+0:62        'v' (temp 4-component vector of float)

+0:62        Convert int to float (temp 4-component vector of float)

+0:62          'iv' (temp 4-component vector of int)

 0:64      Sequence

-0:64        move second child to first child (2-component vector of int)

-0:64          'iv2' (2-component vector of int)

-0:64          Function Call: textureSize(sSC1;i1; (2-component vector of int)

+0:64        move second child to first child (temp 2-component vector of int)

+0:64          'iv2' (temp 2-component vector of int)

+0:64          Function Call: textureSize(sSC1;i1; (global 2-component vector of int)

 0:64            'sCubeShadow' (uniform samplerCubeShadow)

 0:64            Constant:

 0:64              2 (const int)

-0:67      move second child to first child (4-component vector of float)

+0:67      move second child to first child (temp 4-component vector of float)

 0:67        'FragData' (out 4-component vector of float)

-0:67        add (4-component vector of float)

-0:67          'v' (4-component vector of float)

-0:67          Construct vec4 (4-component vector of float)

-0:67            Convert int to float (2-component vector of float)

-0:67              'iv2' (2-component vector of int)

+0:67        add (temp 4-component vector of float)

+0:67          'v' (temp 4-component vector of float)

+0:67          Construct vec4 (temp 4-component vector of float)

+0:67            Convert int to float (temp 2-component vector of float)

+0:67              'iv2' (temp 2-component vector of int)

 0:67            Constant:

 0:67              0.000000

 0:67            Constant:

diff --git a/Test/baseResults/noMain.vert.out b/Test/baseResults/noMain.vert.out
index 7b22e3c..2194b7a 100644
--- a/Test/baseResults/noMain.vert.out
+++ b/Test/baseResults/noMain.vert.out
@@ -2,7 +2,7 @@
 

 Shader version: 300

 0:? Sequence

-0:3  Function Definition: foo( (void)

+0:3  Function Definition: foo( (global void)

 0:3    Function Parameters: 

 0:?   Linker Objects

 0:?     'gl_VertexID' (gl_VertexId highp int)

@@ -15,9 +15,9 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:?   Linker Objects

 

@@ -31,16 +31,16 @@
 

 Shader version: 300

 0:? Sequence

-0:3  Function Definition: foo( (void)

+0:3  Function Definition: foo( (global void)

 0:3    Function Parameters: 

 0:?   Linker Objects

 0:?     'gl_VertexID' (gl_VertexId highp int)

 0:?     'gl_InstanceID' (gl_InstanceId highp int)

 Shader version: 300

 ERROR: node is still EOpNull!

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:?   Linker Objects

 

diff --git a/Test/baseResults/nonSquare.vert.out b/Test/baseResults/nonSquare.vert.out
index 212aa56..0252629 100644
--- a/Test/baseResults/nonSquare.vert.out
+++ b/Test/baseResults/nonSquare.vert.out
@@ -2,34 +2,34 @@
 

 Shader version: 120

 0:? Sequence

-0:15  Function Definition: main( (void)

+0:15  Function Definition: main( (global void)

 0:15    Function Parameters: 

 0:?     Sequence

-0:20      move second child to first child (2-component vector of float)

-0:20        'a' (2-component vector of float)

-0:20        vector-times-matrix (2-component vector of float)

+0:20      move second child to first child (temp 2-component vector of float)

+0:20        'a' (temp 2-component vector of float)

+0:20        vector-times-matrix (temp 2-component vector of float)

 0:20          'v3' (in 3-component vector of float)

-0:20          'm23' (2X3 matrix of float)

-0:21      move second child to first child (2-component vector of float)

-0:21        'b' (2-component vector of float)

-0:21        matrix-times-vector (2-component vector of float)

+0:20          'm23' (temp 2X3 matrix of float)

+0:21      move second child to first child (temp 2-component vector of float)

+0:21        'b' (temp 2-component vector of float)

+0:21        matrix-times-vector (temp 2-component vector of float)

 0:21          'm32' (uniform 3X2 matrix of float)

 0:21          'v3' (in 3-component vector of float)

-0:23      move second child to first child (4-component vector of float)

+0:23      move second child to first child (temp 4-component vector of float)

 0:23        'gl_Position' (gl_Position 4-component vector of float)

-0:24        add (4-component vector of float)

-0:24          add (4-component vector of float)

-0:24            add (4-component vector of float)

-0:23              add (4-component vector of float)

-0:23                Construct vec4 (4-component vector of float)

-0:23                  matrix-times-vector (3-component vector of float)

-0:23                    matrix-multiply (3X3 matrix of float)

-0:23                      'm23' (2X3 matrix of float)

+0:24        add (temp 4-component vector of float)

+0:24          add (temp 4-component vector of float)

+0:24            add (temp 4-component vector of float)

+0:23              add (temp 4-component vector of float)

+0:23                Construct vec4 (temp 4-component vector of float)

+0:23                  matrix-times-vector (temp 3-component vector of float)

+0:23                    matrix-multiply (temp 3X3 matrix of float)

+0:23                      'm23' (temp 2X3 matrix of float)

 0:23                      'm32' (uniform 3X2 matrix of float)

 0:23                    'v3' (in 3-component vector of float)

 0:23                  Constant:

 0:23                    0.000000

-0:24                matrix-times-vector (4-component vector of float)

+0:24                matrix-times-vector (temp 4-component vector of float)

 0:24                  Constant:

 0:24                    3.000000

 0:24                    6.000000

@@ -95,34 +95,34 @@
 

 Shader version: 120

 0:? Sequence

-0:15  Function Definition: main( (void)

+0:15  Function Definition: main( (global void)

 0:15    Function Parameters: 

 0:?     Sequence

-0:20      move second child to first child (2-component vector of float)

-0:20        'a' (2-component vector of float)

-0:20        vector-times-matrix (2-component vector of float)

+0:20      move second child to first child (temp 2-component vector of float)

+0:20        'a' (temp 2-component vector of float)

+0:20        vector-times-matrix (temp 2-component vector of float)

 0:20          'v3' (in 3-component vector of float)

-0:20          'm23' (2X3 matrix of float)

-0:21      move second child to first child (2-component vector of float)

-0:21        'b' (2-component vector of float)

-0:21        matrix-times-vector (2-component vector of float)

+0:20          'm23' (temp 2X3 matrix of float)

+0:21      move second child to first child (temp 2-component vector of float)

+0:21        'b' (temp 2-component vector of float)

+0:21        matrix-times-vector (temp 2-component vector of float)

 0:21          'm32' (uniform 3X2 matrix of float)

 0:21          'v3' (in 3-component vector of float)

-0:23      move second child to first child (4-component vector of float)

+0:23      move second child to first child (temp 4-component vector of float)

 0:23        'gl_Position' (gl_Position 4-component vector of float)

-0:24        add (4-component vector of float)

-0:24          add (4-component vector of float)

-0:24            add (4-component vector of float)

-0:23              add (4-component vector of float)

-0:23                Construct vec4 (4-component vector of float)

-0:23                  matrix-times-vector (3-component vector of float)

-0:23                    matrix-multiply (3X3 matrix of float)

-0:23                      'm23' (2X3 matrix of float)

+0:24        add (temp 4-component vector of float)

+0:24          add (temp 4-component vector of float)

+0:24            add (temp 4-component vector of float)

+0:23              add (temp 4-component vector of float)

+0:23                Construct vec4 (temp 4-component vector of float)

+0:23                  matrix-times-vector (temp 3-component vector of float)

+0:23                    matrix-multiply (temp 3X3 matrix of float)

+0:23                      'm23' (temp 2X3 matrix of float)

 0:23                      'm32' (uniform 3X2 matrix of float)

 0:23                    'v3' (in 3-component vector of float)

 0:23                  Constant:

 0:23                    0.000000

-0:24                matrix-times-vector (4-component vector of float)

+0:24                matrix-times-vector (temp 4-component vector of float)

 0:24                  Constant:

 0:24                    3.000000

 0:24                    6.000000

diff --git a/Test/baseResults/numeral.frag.out b/Test/baseResults/numeral.frag.out
index 6ed5ef9..c8421a9 100644
--- a/Test/baseResults/numeral.frag.out
+++ b/Test/baseResults/numeral.frag.out
@@ -15,362 +15,362 @@
 

 Shader version: 400

 ERROR: node is still EOpNull!

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

 0:5    Sequence

 0:5      Sequence

-0:5        move second child to first child (int)

-0:5          'o00' (int)

+0:5        move second child to first child (temp int)

+0:5          'o00' (temp int)

 0:5          Constant:

 0:5            0 (const int)

 0:6      Sequence

-0:6        move second child to first child (int)

-0:6          'o000' (int)

+0:6        move second child to first child (temp int)

+0:6          'o000' (temp int)

 0:6          Constant:

 0:6            0 (const int)

 0:7      Sequence

-0:7        move second child to first child (int)

-0:7          'o0000' (int)

+0:7        move second child to first child (temp int)

+0:7          'o0000' (temp int)

 0:7          Constant:

 0:7            0 (const int)

 0:8      Sequence

-0:8        move second child to first child (int)

-0:8          'o5' (int)

+0:8        move second child to first child (temp int)

+0:8          'o5' (temp int)

 0:8          Constant:

 0:8            5 (const int)

 0:9      Sequence

-0:9        move second child to first child (int)

-0:9          'o05' (int)

+0:9        move second child to first child (temp int)

+0:9          'o05' (temp int)

 0:9          Constant:

 0:9            5 (const int)

 0:10      Sequence

-0:10        move second child to first child (int)

-0:10          'o006' (int)

+0:10        move second child to first child (temp int)

+0:10          'o006' (temp int)

 0:10          Constant:

 0:10            6 (const int)

 0:11      Sequence

-0:11        move second child to first child (int)

-0:11          'o7' (int)

+0:11        move second child to first child (temp int)

+0:11          'o7' (temp int)

 0:11          Constant:

 0:11            7 (const int)

 0:12      Sequence

-0:12        move second child to first child (int)

-0:12          'o58' (int)

+0:12        move second child to first child (temp int)

+0:12          'o58' (temp int)

 0:12          Constant:

 0:12            58 (const int)

 0:13      Sequence

-0:13        move second child to first child (int)

-0:13          'omax' (int)

+0:13        move second child to first child (temp int)

+0:13          'omax' (temp int)

 0:13          Constant:

 0:13            -1 (const int)

 0:14      Sequence

-0:14        move second child to first child (int)

-0:14          'o8' (int)

+0:14        move second child to first child (temp int)

+0:14          'o8' (temp int)

 0:14          Constant:

 0:14            0 (const int)

 0:15      Sequence

-0:15        move second child to first child (int)

-0:15          'o08' (int)

+0:15        move second child to first child (temp int)

+0:15          'o08' (temp int)

 0:15          Constant:

 0:15            0 (const int)

 0:16      Sequence

-0:16        move second child to first child (int)

-0:16          'o009' (int)

+0:16        move second child to first child (temp int)

+0:16          'o009' (temp int)

 0:16          Constant:

 0:16            0 (const int)

 0:17      Sequence

-0:17        move second child to first child (int)

-0:17          'obig' (int)

+0:17        move second child to first child (temp int)

+0:17          'obig' (temp int)

 0:17          Constant:

 0:17            995208915 (const int)

 0:18      Sequence

-0:18        move second child to first child (int)

-0:18          'omax1' (int)

+0:18        move second child to first child (temp int)

+0:18          'omax1' (temp int)

 0:18          Constant:

 0:18            536870912 (const int)

 0:20      Sequence

-0:20        move second child to first child (uint)

-0:20          'uo5' (uint)

+0:20        move second child to first child (temp uint)

+0:20          'uo5' (temp uint)

 0:20          Constant:

 0:20            5 (const uint)

 0:21      Sequence

-0:21        move second child to first child (uint)

-0:21          'uo6' (uint)

+0:21        move second child to first child (temp uint)

+0:21          'uo6' (temp uint)

 0:21          Constant:

 0:21            6 (const uint)

 0:22      Sequence

-0:22        move second child to first child (uint)

-0:22          'uo7' (uint)

+0:22        move second child to first child (temp uint)

+0:22          'uo7' (temp uint)

 0:22          Constant:

 0:22            7 (const uint)

 0:23      Sequence

-0:23        move second child to first child (uint)

-0:23          'uo8' (uint)

+0:23        move second child to first child (temp uint)

+0:23          'uo8' (temp uint)

 0:23          Constant:

 0:23            0 (const uint)

 0:24      Sequence

-0:24        move second child to first child (uint)

-0:24          'uo9' (uint)

+0:24        move second child to first child (temp uint)

+0:24          'uo9' (temp uint)

 0:24          Constant:

 0:24            0 (const uint)

 0:26      Sequence

-0:26        move second child to first child (int)

-0:26          'h0' (int)

+0:26        move second child to first child (temp int)

+0:26          'h0' (temp int)

 0:26          Constant:

 0:26            0 (const int)

 0:27      Sequence

-0:27        move second child to first child (int)

-0:27          'h00' (int)

+0:27        move second child to first child (temp int)

+0:27          'h00' (temp int)

 0:27          Constant:

 0:27            0 (const int)

 0:28      Sequence

-0:28        move second child to first child (int)

-0:28          'h000' (int)

+0:28        move second child to first child (temp int)

+0:28          'h000' (temp int)

 0:28          Constant:

 0:28            0 (const int)

 0:29      Sequence

-0:29        move second child to first child (int)

-0:29          'h1' (int)

+0:29        move second child to first child (temp int)

+0:29          'h1' (temp int)

 0:29          Constant:

 0:29            1 (const int)

 0:30      Sequence

-0:30        move second child to first child (int)

-0:30          'h2' (int)

+0:30        move second child to first child (temp int)

+0:30          'h2' (temp int)

 0:30          Constant:

 0:30            2 (const int)

 0:31      Sequence

-0:31        move second child to first child (int)

-0:31          'h300' (int)

+0:31        move second child to first child (temp int)

+0:31          'h300' (temp int)

 0:31          Constant:

 0:31            768 (const int)

 0:32      Sequence

-0:32        move second child to first child (int)

-0:32          'hABCDEF' (int)

+0:32        move second child to first child (temp int)

+0:32          'hABCDEF' (temp int)

 0:32          Constant:

 0:32            11259375 (const int)

 0:33      Sequence

-0:33        move second child to first child (int)

-0:33          'hFFFFFFFF' (int)

+0:33        move second child to first child (temp int)

+0:33          'hFFFFFFFF' (temp int)

 0:33          Constant:

 0:33            -1 (const int)

 0:34      Sequence

-0:34        move second child to first child (int)

-0:34          'h12345678' (int)

+0:34        move second child to first child (temp int)

+0:34          'h12345678' (temp int)

 0:34          Constant:

 0:34            12345678 (const int)

 0:35      Sequence

-0:35        move second child to first child (int)

-0:35          'hToBeOrNotToBe' (int)

+0:35        move second child to first child (temp int)

+0:35          'hToBeOrNotToBe' (temp int)

 0:35          Constant:

 0:35            -1 (const int)

 0:37      Sequence

-0:37        move second child to first child (uint)

-0:37          'uh0' (uint)

+0:37        move second child to first child (temp uint)

+0:37          'uh0' (temp uint)

 0:37          Constant:

 0:37            0 (const uint)

 0:38      Sequence

-0:38        move second child to first child (uint)

-0:38          'uhg' (uint)

+0:38        move second child to first child (temp uint)

+0:38          'uhg' (temp uint)

 0:38          Constant:

 0:38            12 (const uint)

 0:39      Sequence

-0:39        move second child to first child (uint)

-0:39          'uh000' (uint)

+0:39        move second child to first child (temp uint)

+0:39          'uh000' (temp uint)

 0:39          Constant:

 0:39            0 (const uint)

 0:40      Sequence

-0:40        move second child to first child (uint)

-0:40          'uh1' (uint)

+0:40        move second child to first child (temp uint)

+0:40          'uh1' (temp uint)

 0:40          Constant:

 0:40            1 (const uint)

 0:41      Sequence

-0:41        move second child to first child (uint)

-0:41          'uh2' (uint)

+0:41        move second child to first child (temp uint)

+0:41          'uh2' (temp uint)

 0:41          Constant:

 0:41            2 (const uint)

 0:42      Sequence

-0:42        move second child to first child (uint)

-0:42          'uh300' (uint)

+0:42        move second child to first child (temp uint)

+0:42          'uh300' (temp uint)

 0:42          Constant:

 0:42            768 (const uint)

 0:43      Sequence

-0:43        move second child to first child (uint)

-0:43          'uhABCDEF' (uint)

+0:43        move second child to first child (temp uint)

+0:43          'uhABCDEF' (temp uint)

 0:43          Constant:

 0:43            11259375 (const uint)

 0:44      Sequence

-0:44        move second child to first child (uint)

-0:44          'uhFFFFFFFF' (uint)

+0:44        move second child to first child (temp uint)

+0:44          'uhFFFFFFFF' (temp uint)

 0:44          Constant:

 0:44            4294967295 (const uint)

 0:45      Sequence

-0:45        move second child to first child (uint)

-0:45          'uh12345678' (uint)

+0:45        move second child to first child (temp uint)

+0:45          'uh12345678' (temp uint)

 0:45          Constant:

 0:45            12345678 (const uint)

 0:46      Sequence

-0:46        move second child to first child (uint)

-0:46          'uhToBeOrNotToBe' (uint)

+0:46        move second child to first child (temp uint)

+0:46          'uhToBeOrNotToBe' (temp uint)

 0:46          Constant:

 0:46            4294967295 (const uint)

 0:49      Sequence

-0:49        move second child to first child (int)

-0:49          'he2' (int)

+0:49        move second child to first child (temp int)

+0:49          'he2' (temp int)

 0:49          Constant:

 0:49            0 (const int)

 0:50      Sequence

-0:50        move second child to first child (int)

-0:50          'hbig' (int)

+0:50        move second child to first child (temp int)

+0:50          'hbig' (temp int)

 0:50          Constant:

 0:50            -1 (const int)

 0:52      Sequence

-0:52        move second child to first child (float)

-0:52          'f1' (float)

+0:52        move second child to first child (temp float)

+0:52          'f1' (temp float)

 0:52          Constant:

 0:52            1.000000

 0:53      Sequence

-0:53        move second child to first child (float)

-0:53          'f2' (float)

+0:53        move second child to first child (temp float)

+0:53          'f2' (temp float)

 0:53          Constant:

 0:53            2.000000

 0:54      Sequence

-0:54        move second child to first child (float)

-0:54          'f3' (float)

+0:54        move second child to first child (temp float)

+0:54          'f3' (temp float)

 0:54          Constant:

 0:54            3.000000

 0:55      Sequence

-0:55        move second child to first child (float)

-0:55          'f4' (float)

+0:55        move second child to first child (temp float)

+0:55          'f4' (temp float)

 0:55          Constant:

 0:55            4.000000

 0:56      Sequence

-0:56        move second child to first child (float)

-0:56          'f5' (float)

+0:56        move second child to first child (temp float)

+0:56          'f5' (temp float)

 0:56          Constant:

 0:56            5.000000

 0:57      Sequence

-0:57        move second child to first child (float)

-0:57          'f6' (float)

+0:57        move second child to first child (temp float)

+0:57          'f6' (temp float)

 0:57          Constant:

 0:57            6.000000

 0:58      Sequence

-0:58        move second child to first child (float)

-0:58          'f7' (float)

+0:58        move second child to first child (temp float)

+0:58          'f7' (temp float)

 0:58          Constant:

 0:58            7.000000

 0:59      Sequence

-0:59        move second child to first child (float)

-0:59          'f8' (float)

+0:59        move second child to first child (temp float)

+0:59          'f8' (temp float)

 0:59          Constant:

 0:59            8.000000

 0:60      Sequence

-0:60        move second child to first child (float)

-0:60          'f9' (float)

+0:60        move second child to first child (temp float)

+0:60          'f9' (temp float)

 0:60          Constant:

 0:60            9.000000

 0:61      Sequence

-0:61        move second child to first child (float)

-0:61          'f10' (float)

+0:61        move second child to first child (temp float)

+0:61          'f10' (temp float)

 0:61          Constant:

 0:61            10.000000

 0:62      Sequence

-0:62        move second child to first child (float)

-0:62          'f11' (float)

+0:62        move second child to first child (temp float)

+0:62          'f11' (temp float)

 0:62          Constant:

 0:62            11.000000

 0:63      Sequence

-0:63        move second child to first child (float)

-0:63          'f12' (float)

+0:63        move second child to first child (temp float)

+0:63          'f12' (temp float)

 0:63          Constant:

 0:63            12.000000

 0:64      Sequence

-0:64        move second child to first child (float)

-0:64          'f543' (float)

+0:64        move second child to first child (temp float)

+0:64          'f543' (temp float)

 0:64          Constant:

 0:64            543.000000

 0:65      Sequence

-0:65        move second child to first child (float)

-0:65          'f6789' (float)

+0:65        move second child to first child (temp float)

+0:65          'f6789' (temp float)

 0:65          Constant:

 0:65            6789.000000

 0:66      Sequence

-0:66        move second child to first child (float)

-0:66          'f88' (float)

+0:66        move second child to first child (temp float)

+0:66          'f88' (temp float)

 0:66          Constant:

 0:66            88.000000

 0:68      Sequence

-0:68        move second child to first child (float)

-0:68          'g1' (float)

+0:68        move second child to first child (temp float)

+0:68          'g1' (temp float)

 0:68          Constant:

 0:68            53876.000000

 0:69      Sequence

-0:69        move second child to first child (float)

-0:69          'g2' (float)

+0:69        move second child to first child (temp float)

+0:69          'g2' (temp float)

 0:69          Constant:

 0:69            0.040000

 0:70      Sequence

-0:70        move second child to first child (float)

-0:70          'g3' (float)

+0:70        move second child to first child (temp float)

+0:70          'g3' (temp float)

 0:70          Constant:

 0:70            100000.000000

 0:71      Sequence

-0:71        move second child to first child (float)

-0:71          'g4' (float)

+0:71        move second child to first child (temp float)

+0:71          'g4' (temp float)

 0:71          Constant:

 0:71            0.007321

 0:72      Sequence

-0:72        move second child to first child (float)

-0:72          'g5' (float)

+0:72        move second child to first child (temp float)

+0:72          'g5' (temp float)

 0:72          Constant:

 0:72            32000.000000

 0:73      Sequence

-0:73        move second child to first child (float)

-0:73          'g6' (float)

+0:73        move second child to first child (temp float)

+0:73          'g6' (temp float)

 0:73          Constant:

 0:73            0.000005

 0:74      Sequence

-0:74        move second child to first child (float)

-0:74          'g7' (float)

+0:74        move second child to first child (temp float)

+0:74          'g7' (temp float)

 0:74          Constant:

 0:74            0.450000

 0:75      Sequence

-0:75        move second child to first child (float)

-0:75          'g8' (float)

+0:75        move second child to first child (temp float)

+0:75          'g8' (temp float)

 0:75          Constant:

 0:75            60000000000.000000

 0:77      Sequence

-0:77        move second child to first child (double)

-0:77          'gf1' (double)

+0:77        move second child to first child (temp double)

+0:77          'gf1' (temp double)

 0:77          Constant:

 0:77            1.000000

 0:78      Sequence

-0:78        move second child to first child (double)

-0:78          'gf2' (double)

+0:78        move second child to first child (temp double)

+0:78          'gf2' (temp double)

 0:78          Constant:

 0:78            2.000000

 0:79      Sequence

-0:79        move second child to first child (double)

-0:79          'gf3' (double)

+0:79        move second child to first child (temp double)

+0:79          'gf3' (temp double)

 0:79          Constant:

 0:79            3.000000

 0:80      Sequence

-0:80        move second child to first child (double)

-0:80          'gf4' (double)

+0:80        move second child to first child (temp double)

+0:80          'gf4' (temp double)

 0:80          Constant:

 0:80            4.000000

 0:81      Sequence

-0:81        move second child to first child (float)

-0:81          'gf5' (float)

+0:81        move second child to first child (temp float)

+0:81          'gf5' (temp float)

 0:81          Constant:

 0:81            5.000000

 0:82      Sequence

-0:82        move second child to first child (float)

-0:82          'gf6' (float)

+0:82        move second child to first child (temp float)

+0:82          'gf6' (temp float)

 0:82          Constant:

 0:82            6.000000

 0:88      Sequence

-0:88        move second child to first child (float)

-0:88          'e5' (float)

+0:88        move second child to first child (temp float)

+0:88          'e5' (temp float)

 0:88          Constant:

 0:88            5.000000

 0:?   Linker Objects

@@ -387,362 +387,362 @@
 

 Shader version: 400

 ERROR: node is still EOpNull!

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

 0:5    Sequence

 0:5      Sequence

-0:5        move second child to first child (int)

-0:5          'o00' (int)

+0:5        move second child to first child (temp int)

+0:5          'o00' (temp int)

 0:5          Constant:

 0:5            0 (const int)

 0:6      Sequence

-0:6        move second child to first child (int)

-0:6          'o000' (int)

+0:6        move second child to first child (temp int)

+0:6          'o000' (temp int)

 0:6          Constant:

 0:6            0 (const int)

 0:7      Sequence

-0:7        move second child to first child (int)

-0:7          'o0000' (int)

+0:7        move second child to first child (temp int)

+0:7          'o0000' (temp int)

 0:7          Constant:

 0:7            0 (const int)

 0:8      Sequence

-0:8        move second child to first child (int)

-0:8          'o5' (int)

+0:8        move second child to first child (temp int)

+0:8          'o5' (temp int)

 0:8          Constant:

 0:8            5 (const int)

 0:9      Sequence

-0:9        move second child to first child (int)

-0:9          'o05' (int)

+0:9        move second child to first child (temp int)

+0:9          'o05' (temp int)

 0:9          Constant:

 0:9            5 (const int)

 0:10      Sequence

-0:10        move second child to first child (int)

-0:10          'o006' (int)

+0:10        move second child to first child (temp int)

+0:10          'o006' (temp int)

 0:10          Constant:

 0:10            6 (const int)

 0:11      Sequence

-0:11        move second child to first child (int)

-0:11          'o7' (int)

+0:11        move second child to first child (temp int)

+0:11          'o7' (temp int)

 0:11          Constant:

 0:11            7 (const int)

 0:12      Sequence

-0:12        move second child to first child (int)

-0:12          'o58' (int)

+0:12        move second child to first child (temp int)

+0:12          'o58' (temp int)

 0:12          Constant:

 0:12            58 (const int)

 0:13      Sequence

-0:13        move second child to first child (int)

-0:13          'omax' (int)

+0:13        move second child to first child (temp int)

+0:13          'omax' (temp int)

 0:13          Constant:

 0:13            -1 (const int)

 0:14      Sequence

-0:14        move second child to first child (int)

-0:14          'o8' (int)

+0:14        move second child to first child (temp int)

+0:14          'o8' (temp int)

 0:14          Constant:

 0:14            0 (const int)

 0:15      Sequence

-0:15        move second child to first child (int)

-0:15          'o08' (int)

+0:15        move second child to first child (temp int)

+0:15          'o08' (temp int)

 0:15          Constant:

 0:15            0 (const int)

 0:16      Sequence

-0:16        move second child to first child (int)

-0:16          'o009' (int)

+0:16        move second child to first child (temp int)

+0:16          'o009' (temp int)

 0:16          Constant:

 0:16            0 (const int)

 0:17      Sequence

-0:17        move second child to first child (int)

-0:17          'obig' (int)

+0:17        move second child to first child (temp int)

+0:17          'obig' (temp int)

 0:17          Constant:

 0:17            995208915 (const int)

 0:18      Sequence

-0:18        move second child to first child (int)

-0:18          'omax1' (int)

+0:18        move second child to first child (temp int)

+0:18          'omax1' (temp int)

 0:18          Constant:

 0:18            536870912 (const int)

 0:20      Sequence

-0:20        move second child to first child (uint)

-0:20          'uo5' (uint)

+0:20        move second child to first child (temp uint)

+0:20          'uo5' (temp uint)

 0:20          Constant:

 0:20            5 (const uint)

 0:21      Sequence

-0:21        move second child to first child (uint)

-0:21          'uo6' (uint)

+0:21        move second child to first child (temp uint)

+0:21          'uo6' (temp uint)

 0:21          Constant:

 0:21            6 (const uint)

 0:22      Sequence

-0:22        move second child to first child (uint)

-0:22          'uo7' (uint)

+0:22        move second child to first child (temp uint)

+0:22          'uo7' (temp uint)

 0:22          Constant:

 0:22            7 (const uint)

 0:23      Sequence

-0:23        move second child to first child (uint)

-0:23          'uo8' (uint)

+0:23        move second child to first child (temp uint)

+0:23          'uo8' (temp uint)

 0:23          Constant:

 0:23            0 (const uint)

 0:24      Sequence

-0:24        move second child to first child (uint)

-0:24          'uo9' (uint)

+0:24        move second child to first child (temp uint)

+0:24          'uo9' (temp uint)

 0:24          Constant:

 0:24            0 (const uint)

 0:26      Sequence

-0:26        move second child to first child (int)

-0:26          'h0' (int)

+0:26        move second child to first child (temp int)

+0:26          'h0' (temp int)

 0:26          Constant:

 0:26            0 (const int)

 0:27      Sequence

-0:27        move second child to first child (int)

-0:27          'h00' (int)

+0:27        move second child to first child (temp int)

+0:27          'h00' (temp int)

 0:27          Constant:

 0:27            0 (const int)

 0:28      Sequence

-0:28        move second child to first child (int)

-0:28          'h000' (int)

+0:28        move second child to first child (temp int)

+0:28          'h000' (temp int)

 0:28          Constant:

 0:28            0 (const int)

 0:29      Sequence

-0:29        move second child to first child (int)

-0:29          'h1' (int)

+0:29        move second child to first child (temp int)

+0:29          'h1' (temp int)

 0:29          Constant:

 0:29            1 (const int)

 0:30      Sequence

-0:30        move second child to first child (int)

-0:30          'h2' (int)

+0:30        move second child to first child (temp int)

+0:30          'h2' (temp int)

 0:30          Constant:

 0:30            2 (const int)

 0:31      Sequence

-0:31        move second child to first child (int)

-0:31          'h300' (int)

+0:31        move second child to first child (temp int)

+0:31          'h300' (temp int)

 0:31          Constant:

 0:31            768 (const int)

 0:32      Sequence

-0:32        move second child to first child (int)

-0:32          'hABCDEF' (int)

+0:32        move second child to first child (temp int)

+0:32          'hABCDEF' (temp int)

 0:32          Constant:

 0:32            11259375 (const int)

 0:33      Sequence

-0:33        move second child to first child (int)

-0:33          'hFFFFFFFF' (int)

+0:33        move second child to first child (temp int)

+0:33          'hFFFFFFFF' (temp int)

 0:33          Constant:

 0:33            -1 (const int)

 0:34      Sequence

-0:34        move second child to first child (int)

-0:34          'h12345678' (int)

+0:34        move second child to first child (temp int)

+0:34          'h12345678' (temp int)

 0:34          Constant:

 0:34            12345678 (const int)

 0:35      Sequence

-0:35        move second child to first child (int)

-0:35          'hToBeOrNotToBe' (int)

+0:35        move second child to first child (temp int)

+0:35          'hToBeOrNotToBe' (temp int)

 0:35          Constant:

 0:35            -1 (const int)

 0:37      Sequence

-0:37        move second child to first child (uint)

-0:37          'uh0' (uint)

+0:37        move second child to first child (temp uint)

+0:37          'uh0' (temp uint)

 0:37          Constant:

 0:37            0 (const uint)

 0:38      Sequence

-0:38        move second child to first child (uint)

-0:38          'uhg' (uint)

+0:38        move second child to first child (temp uint)

+0:38          'uhg' (temp uint)

 0:38          Constant:

 0:38            12 (const uint)

 0:39      Sequence

-0:39        move second child to first child (uint)

-0:39          'uh000' (uint)

+0:39        move second child to first child (temp uint)

+0:39          'uh000' (temp uint)

 0:39          Constant:

 0:39            0 (const uint)

 0:40      Sequence

-0:40        move second child to first child (uint)

-0:40          'uh1' (uint)

+0:40        move second child to first child (temp uint)

+0:40          'uh1' (temp uint)

 0:40          Constant:

 0:40            1 (const uint)

 0:41      Sequence

-0:41        move second child to first child (uint)

-0:41          'uh2' (uint)

+0:41        move second child to first child (temp uint)

+0:41          'uh2' (temp uint)

 0:41          Constant:

 0:41            2 (const uint)

 0:42      Sequence

-0:42        move second child to first child (uint)

-0:42          'uh300' (uint)

+0:42        move second child to first child (temp uint)

+0:42          'uh300' (temp uint)

 0:42          Constant:

 0:42            768 (const uint)

 0:43      Sequence

-0:43        move second child to first child (uint)

-0:43          'uhABCDEF' (uint)

+0:43        move second child to first child (temp uint)

+0:43          'uhABCDEF' (temp uint)

 0:43          Constant:

 0:43            11259375 (const uint)

 0:44      Sequence

-0:44        move second child to first child (uint)

-0:44          'uhFFFFFFFF' (uint)

+0:44        move second child to first child (temp uint)

+0:44          'uhFFFFFFFF' (temp uint)

 0:44          Constant:

 0:44            4294967295 (const uint)

 0:45      Sequence

-0:45        move second child to first child (uint)

-0:45          'uh12345678' (uint)

+0:45        move second child to first child (temp uint)

+0:45          'uh12345678' (temp uint)

 0:45          Constant:

 0:45            12345678 (const uint)

 0:46      Sequence

-0:46        move second child to first child (uint)

-0:46          'uhToBeOrNotToBe' (uint)

+0:46        move second child to first child (temp uint)

+0:46          'uhToBeOrNotToBe' (temp uint)

 0:46          Constant:

 0:46            4294967295 (const uint)

 0:49      Sequence

-0:49        move second child to first child (int)

-0:49          'he2' (int)

+0:49        move second child to first child (temp int)

+0:49          'he2' (temp int)

 0:49          Constant:

 0:49            0 (const int)

 0:50      Sequence

-0:50        move second child to first child (int)

-0:50          'hbig' (int)

+0:50        move second child to first child (temp int)

+0:50          'hbig' (temp int)

 0:50          Constant:

 0:50            -1 (const int)

 0:52      Sequence

-0:52        move second child to first child (float)

-0:52          'f1' (float)

+0:52        move second child to first child (temp float)

+0:52          'f1' (temp float)

 0:52          Constant:

 0:52            1.000000

 0:53      Sequence

-0:53        move second child to first child (float)

-0:53          'f2' (float)

+0:53        move second child to first child (temp float)

+0:53          'f2' (temp float)

 0:53          Constant:

 0:53            2.000000

 0:54      Sequence

-0:54        move second child to first child (float)

-0:54          'f3' (float)

+0:54        move second child to first child (temp float)

+0:54          'f3' (temp float)

 0:54          Constant:

 0:54            3.000000

 0:55      Sequence

-0:55        move second child to first child (float)

-0:55          'f4' (float)

+0:55        move second child to first child (temp float)

+0:55          'f4' (temp float)

 0:55          Constant:

 0:55            4.000000

 0:56      Sequence

-0:56        move second child to first child (float)

-0:56          'f5' (float)

+0:56        move second child to first child (temp float)

+0:56          'f5' (temp float)

 0:56          Constant:

 0:56            5.000000

 0:57      Sequence

-0:57        move second child to first child (float)

-0:57          'f6' (float)

+0:57        move second child to first child (temp float)

+0:57          'f6' (temp float)

 0:57          Constant:

 0:57            6.000000

 0:58      Sequence

-0:58        move second child to first child (float)

-0:58          'f7' (float)

+0:58        move second child to first child (temp float)

+0:58          'f7' (temp float)

 0:58          Constant:

 0:58            7.000000

 0:59      Sequence

-0:59        move second child to first child (float)

-0:59          'f8' (float)

+0:59        move second child to first child (temp float)

+0:59          'f8' (temp float)

 0:59          Constant:

 0:59            8.000000

 0:60      Sequence

-0:60        move second child to first child (float)

-0:60          'f9' (float)

+0:60        move second child to first child (temp float)

+0:60          'f9' (temp float)

 0:60          Constant:

 0:60            9.000000

 0:61      Sequence

-0:61        move second child to first child (float)

-0:61          'f10' (float)

+0:61        move second child to first child (temp float)

+0:61          'f10' (temp float)

 0:61          Constant:

 0:61            10.000000

 0:62      Sequence

-0:62        move second child to first child (float)

-0:62          'f11' (float)

+0:62        move second child to first child (temp float)

+0:62          'f11' (temp float)

 0:62          Constant:

 0:62            11.000000

 0:63      Sequence

-0:63        move second child to first child (float)

-0:63          'f12' (float)

+0:63        move second child to first child (temp float)

+0:63          'f12' (temp float)

 0:63          Constant:

 0:63            12.000000

 0:64      Sequence

-0:64        move second child to first child (float)

-0:64          'f543' (float)

+0:64        move second child to first child (temp float)

+0:64          'f543' (temp float)

 0:64          Constant:

 0:64            543.000000

 0:65      Sequence

-0:65        move second child to first child (float)

-0:65          'f6789' (float)

+0:65        move second child to first child (temp float)

+0:65          'f6789' (temp float)

 0:65          Constant:

 0:65            6789.000000

 0:66      Sequence

-0:66        move second child to first child (float)

-0:66          'f88' (float)

+0:66        move second child to first child (temp float)

+0:66          'f88' (temp float)

 0:66          Constant:

 0:66            88.000000

 0:68      Sequence

-0:68        move second child to first child (float)

-0:68          'g1' (float)

+0:68        move second child to first child (temp float)

+0:68          'g1' (temp float)

 0:68          Constant:

 0:68            53876.000000

 0:69      Sequence

-0:69        move second child to first child (float)

-0:69          'g2' (float)

+0:69        move second child to first child (temp float)

+0:69          'g2' (temp float)

 0:69          Constant:

 0:69            0.040000

 0:70      Sequence

-0:70        move second child to first child (float)

-0:70          'g3' (float)

+0:70        move second child to first child (temp float)

+0:70          'g3' (temp float)

 0:70          Constant:

 0:70            100000.000000

 0:71      Sequence

-0:71        move second child to first child (float)

-0:71          'g4' (float)

+0:71        move second child to first child (temp float)

+0:71          'g4' (temp float)

 0:71          Constant:

 0:71            0.007321

 0:72      Sequence

-0:72        move second child to first child (float)

-0:72          'g5' (float)

+0:72        move second child to first child (temp float)

+0:72          'g5' (temp float)

 0:72          Constant:

 0:72            32000.000000

 0:73      Sequence

-0:73        move second child to first child (float)

-0:73          'g6' (float)

+0:73        move second child to first child (temp float)

+0:73          'g6' (temp float)

 0:73          Constant:

 0:73            0.000005

 0:74      Sequence

-0:74        move second child to first child (float)

-0:74          'g7' (float)

+0:74        move second child to first child (temp float)

+0:74          'g7' (temp float)

 0:74          Constant:

 0:74            0.450000

 0:75      Sequence

-0:75        move second child to first child (float)

-0:75          'g8' (float)

+0:75        move second child to first child (temp float)

+0:75          'g8' (temp float)

 0:75          Constant:

 0:75            60000000000.000000

 0:77      Sequence

-0:77        move second child to first child (double)

-0:77          'gf1' (double)

+0:77        move second child to first child (temp double)

+0:77          'gf1' (temp double)

 0:77          Constant:

 0:77            1.000000

 0:78      Sequence

-0:78        move second child to first child (double)

-0:78          'gf2' (double)

+0:78        move second child to first child (temp double)

+0:78          'gf2' (temp double)

 0:78          Constant:

 0:78            2.000000

 0:79      Sequence

-0:79        move second child to first child (double)

-0:79          'gf3' (double)

+0:79        move second child to first child (temp double)

+0:79          'gf3' (temp double)

 0:79          Constant:

 0:79            3.000000

 0:80      Sequence

-0:80        move second child to first child (double)

-0:80          'gf4' (double)

+0:80        move second child to first child (temp double)

+0:80          'gf4' (temp double)

 0:80          Constant:

 0:80            4.000000

 0:81      Sequence

-0:81        move second child to first child (float)

-0:81          'gf5' (float)

+0:81        move second child to first child (temp float)

+0:81          'gf5' (temp float)

 0:81          Constant:

 0:81            5.000000

 0:82      Sequence

-0:82        move second child to first child (float)

-0:82          'gf6' (float)

+0:82        move second child to first child (temp float)

+0:82          'gf6' (temp float)

 0:82          Constant:

 0:82            6.000000

 0:88      Sequence

-0:88        move second child to first child (float)

-0:88          'e5' (float)

+0:88        move second child to first child (temp float)

+0:88          'e5' (temp float)

 0:88          Constant:

 0:88            5.000000

 0:?   Linker Objects

diff --git a/Test/baseResults/pointCoord.frag.out b/Test/baseResults/pointCoord.frag.out
index 73a9938..8b9eb9d 100644
--- a/Test/baseResults/pointCoord.frag.out
+++ b/Test/baseResults/pointCoord.frag.out
@@ -2,33 +2,33 @@
 

 Shader version: 100

 0:? Sequence

-0:5  Function Definition: main( (void)

+0:5  Function Definition: main( (global void)

 0:5    Function Parameters: 

 0:?     Sequence

-0:9      Test condition and select (void)

+0:9      Test condition and select (temp void)

 0:9        Condition

-0:9        Compare Less Than (bool)

-0:9          length (mediump float)

+0:9        Compare Less Than (temp bool)

+0:9          length (global mediump float)

 0:9            'gl_PointCoord' (gl_PointCoord mediump 2-component vector of float)

 0:9          Constant:

 0:9            0.300000

 0:9        true case

-0:10        move second child to first child (highp 4-component vector of float)

-0:10          'color' (highp 4-component vector of float)

-0:10          Function Call: texture2D(s21;vf2; (lowp 4-component vector of float)

+0:10        move second child to first child (temp highp 4-component vector of float)

+0:10          'color' (temp highp 4-component vector of float)

+0:10          Function Call: texture2D(s21;vf2; (global lowp 4-component vector of float)

 0:10            'sampler' (uniform lowp sampler2D)

 0:10            'gl_PointCoord' (gl_PointCoord mediump 2-component vector of float)

 0:9        false case

-0:12        move second child to first child (highp 4-component vector of float)

-0:12          'color' (highp 4-component vector of float)

+0:12        move second child to first child (temp highp 4-component vector of float)

+0:12          'color' (temp highp 4-component vector of float)

 0:12          Constant:

 0:12            0.000000

 0:12            0.000000

 0:12            0.000000

 0:12            0.000000

-0:14      move second child to first child (highp 4-component vector of float)

+0:14      move second child to first child (temp highp 4-component vector of float)

 0:14        'gl_FragColor' (fragColor mediump 4-component vector of float)

-0:14        'color' (highp 4-component vector of float)

+0:14        'color' (temp highp 4-component vector of float)

 0:?   Linker Objects

 0:?     'sampler' (uniform lowp sampler2D)

 

@@ -38,33 +38,33 @@
 

 Shader version: 100

 0:? Sequence

-0:5  Function Definition: main( (void)

+0:5  Function Definition: main( (global void)

 0:5    Function Parameters: 

 0:?     Sequence

-0:9      Test condition and select (void)

+0:9      Test condition and select (temp void)

 0:9        Condition

-0:9        Compare Less Than (bool)

-0:9          length (mediump float)

+0:9        Compare Less Than (temp bool)

+0:9          length (global mediump float)

 0:9            'gl_PointCoord' (gl_PointCoord mediump 2-component vector of float)

 0:9          Constant:

 0:9            0.300000

 0:9        true case

-0:10        move second child to first child (highp 4-component vector of float)

-0:10          'color' (highp 4-component vector of float)

-0:10          Function Call: texture2D(s21;vf2; (lowp 4-component vector of float)

+0:10        move second child to first child (temp highp 4-component vector of float)

+0:10          'color' (temp highp 4-component vector of float)

+0:10          Function Call: texture2D(s21;vf2; (global lowp 4-component vector of float)

 0:10            'sampler' (uniform lowp sampler2D)

 0:10            'gl_PointCoord' (gl_PointCoord mediump 2-component vector of float)

 0:9        false case

-0:12        move second child to first child (highp 4-component vector of float)

-0:12          'color' (highp 4-component vector of float)

+0:12        move second child to first child (temp highp 4-component vector of float)

+0:12          'color' (temp highp 4-component vector of float)

 0:12          Constant:

 0:12            0.000000

 0:12            0.000000

 0:12            0.000000

 0:12            0.000000

-0:14      move second child to first child (highp 4-component vector of float)

+0:14      move second child to first child (temp highp 4-component vector of float)

 0:14        'gl_FragColor' (fragColor mediump 4-component vector of float)

-0:14        'color' (highp 4-component vector of float)

+0:14        'color' (temp highp 4-component vector of float)

 0:?   Linker Objects

 0:?     'sampler' (uniform lowp sampler2D)

 

diff --git a/Test/baseResults/precision.frag.out b/Test/baseResults/precision.frag.out
index 1f0992e..1744362 100644
--- a/Test/baseResults/precision.frag.out
+++ b/Test/baseResults/precision.frag.out
@@ -11,118 +11,118 @@
 

 Shader version: 100

 ERROR: node is still EOpNull!

-0:5  Function Definition: foo(vf3; (lowp 2-component vector of float)

+0:5  Function Definition: foo(vf3; (temp lowp 2-component vector of float)

 0:5    Function Parameters: 

 0:5      'mv3' (in mediump 3-component vector of float)

 0:?     Sequence

 0:8      Branch: Return with expression

-0:8        vector swizzle (highp 2-component vector of float)

-0:8          'hv4' (highp 4-component vector of float)

+0:8        vector swizzle (temp highp 2-component vector of float)

+0:8          'hv4' (temp highp 4-component vector of float)

 0:8          Sequence

 0:8            Constant:

 0:8              0 (const int)

 0:8            Constant:

 0:8              1 (const int)

-0:25  Function Definition: main( (void)

+0:25  Function Definition: main( (global void)

 0:25    Function Parameters: 

 0:27    Sequence

 0:27      Sequence

-0:27        move second child to first child (highp int)

-0:27          'sum' (lowp int)

-0:27          add (highp int)

-0:27            'global_medium' (mediump int)

-0:27            'global_high' (highp int)

-0:29      move second child to first child (mediump 4-component vector of float)

+0:27        move second child to first child (temp highp int)

+0:27          'sum' (temp lowp int)

+0:27          add (temp highp int)

+0:27            'global_medium' (global mediump int)

+0:27            'global_high' (global highp int)

+0:29      move second child to first child (temp mediump 4-component vector of float)

 0:29        'gl_FragColor' (fragColor mediump 4-component vector of float)

-0:29        Construct vec4 (mediump 4-component vector of float)

+0:29        Construct vec4 (temp mediump 4-component vector of float)

 0:29          'color' (smooth in mediump 3-component vector of float)

 0:29          Constant:

 0:29            1.000000

-0:32      add second child into first child (highp int)

-0:32        'sum' (lowp int)

-0:32        'level1_high' (highp int)

-0:36      add second child into first child (lowp int)

-0:36        'sum' (lowp int)

-0:36        'level1_low' (lowp int)

+0:32      add second child into first child (temp highp int)

+0:32        'sum' (temp lowp int)

+0:32        'level1_high' (temp highp int)

+0:36      add second child into first child (temp lowp int)

+0:36        'sum' (temp lowp int)

+0:36        'level1_low' (temp lowp int)

 0:41      Sequence

-0:41        move second child to first child (mediump float)

-0:41          'd' (lowp float)

-0:41          distance (mediump float)

-0:41            'arg1' (lowp float)

-0:41            'arg2' (mediump float)

+0:41        move second child to first child (temp mediump float)

+0:41          'd' (temp lowp float)

+0:41          distance (global mediump float)

+0:41            'arg1' (temp lowp float)

+0:41            'arg2' (temp mediump float)

 0:?       Sequence

-0:45        add second child into first child (lowp int)

-0:45          'sum' (lowp int)

-0:45          'level2_low' (lowp int)

-0:49        add second child into first child (highp int)

-0:49          'sum' (lowp int)

-0:49          'level2_high' (highp int)

+0:45        add second child into first child (temp lowp int)

+0:45          'sum' (temp lowp int)

+0:45          'level2_low' (temp lowp int)

+0:49        add second child into first child (temp highp int)

+0:49          'sum' (temp lowp int)

+0:49          'level2_high' (temp highp int)

 0:58        Loop with condition not tested first

 0:58          Loop Condition

 0:58          Constant:

 0:58            true (const bool)

 0:58          Loop Body

 0:51          Sequence

-0:51            Test condition and select (void)

+0:51            Test condition and select (temp void)

 0:51              Condition

 0:51              Constant:

 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)

-0:60        add second child into first child (highp int)

-0:60          'sum' (lowp int)

-0:60          'level2_high2' (highp int)

-0:63      add second child into first child (lowp int)

-0:63        'sum' (lowp int)

-0:63        'level1_low3' (lowp int)

-0:65      add second child into first child (lowp int)

-0:65        'sum' (lowp int)

-0:65        add (lowp int)

+0:54                add second child into first child (temp mediump int)

+0:54                  'sum' (temp lowp int)

+0:54                  'level4_medium' (temp mediump int)

+0:57            add second child into first child (temp highp int)

+0:57              'sum' (temp lowp int)

+0:57              'level3_high' (temp highp int)

+0:60        add second child into first child (temp highp int)

+0:60          'sum' (temp lowp int)

+0:60          'level2_high2' (temp highp int)

+0:63      add second child into first child (temp lowp int)

+0:63        'sum' (temp lowp int)

+0:63        'level1_low3' (temp lowp int)

+0:65      add second child into first child (temp lowp int)

+0:65        'sum' (temp lowp int)

+0:65        add (temp lowp int)

 0:65          Constant:

 0:65            4 (const int)

-0:65          direct index (lowp int)

-0:65            add (lowp 2-component vector of int)

-0:65              component-wise multiply (lowp 2-component vector of int)

-0:65                Construct ivec2 (lowp 2-component vector of int)

-0:65                  'level1_low3' (lowp int)

-0:65                Construct ivec2 (lowp 2-component vector of int)

-0:65                  'level1_high' (highp int)

-0:65              Construct ivec2 (lowp 2-component vector of int)

-0:65                Comma (highp int)

-0:65                  'level1_low3' (lowp int)

-0:65                  'level1_high' (highp int)

+0:65          direct index (temp lowp int)

+0:65            add (temp lowp 2-component vector of int)

+0:65              component-wise multiply (temp lowp 2-component vector of int)

+0:65                Construct ivec2 (temp lowp 2-component vector of int)

+0:65                  'level1_low3' (temp lowp int)

+0:65                Construct ivec2 (temp lowp 2-component vector of int)

+0:65                  'level1_high' (temp highp int)

+0:65              Construct ivec2 (temp lowp 2-component vector of int)

+0:65                Comma (temp highp int)

+0:65                  'level1_low3' (temp lowp int)

+0:65                  'level1_high' (temp highp int)

 0:65            Constant:

 0:65              0 (const int)

-0:67      Function Call: texture2D(s21;vf2; (lowp 4-component vector of float)

+0:67      Function Call: texture2D(s21;vf2; (global lowp 4-component vector of float)

 0:67        'samplerLow' (uniform lowp sampler2D)

 0:67        Constant:

 0:67          0.100000

 0:67          0.200000

-0:68      Function Call: texture2D(s21;vf2; (mediump 4-component vector of float)

+0:68      Function Call: texture2D(s21;vf2; (global mediump 4-component vector of float)

 0:68        'samplerMed' (uniform mediump sampler2D)

 0:68        Constant:

 0:68          0.100000

 0:68          0.200000

-0:69      Function Call: texture2D(s21;vf2; (highp 4-component vector of float)

+0:69      Function Call: texture2D(s21;vf2; (global highp 4-component vector of float)

 0:69        'samplerHigh' (uniform highp sampler2D)

 0:69        Constant:

 0:69          0.100000

 0:69          0.200000

 0:?   Linker Objects

 0:?     'color' (smooth in mediump 3-component vector of float)

-0:?     'global_medium' (mediump int)

+0:?     'global_medium' (global mediump int)

 0:?     'samplerLow' (uniform lowp sampler2D)

 0:?     'samplerMed' (uniform mediump sampler2D)

 0:?     'samplerHigh' (uniform highp sampler2D)

-0:?     'uint' (mediump 4-component vector of float)

-0:?     'global_high' (highp int)

-0:?     'b2' (mediump 2-component vector of bool)

+0:?     'uint' (global mediump 4-component vector of float)

+0:?     'global_high' (global highp int)

+0:?     'b2' (temp mediump 2-component vector of bool)

 

 

 Linked fragment stage:

@@ -130,116 +130,116 @@
 

 Shader version: 100

 ERROR: node is still EOpNull!

-0:5  Function Definition: foo(vf3; (lowp 2-component vector of float)

+0:5  Function Definition: foo(vf3; (temp lowp 2-component vector of float)

 0:5    Function Parameters: 

 0:5      'mv3' (in mediump 3-component vector of float)

 0:?     Sequence

 0:8      Branch: Return with expression

-0:8        vector swizzle (highp 2-component vector of float)

-0:8          'hv4' (highp 4-component vector of float)

+0:8        vector swizzle (temp highp 2-component vector of float)

+0:8          'hv4' (temp highp 4-component vector of float)

 0:8          Sequence

 0:8            Constant:

 0:8              0 (const int)

 0:8            Constant:

 0:8              1 (const int)

-0:25  Function Definition: main( (void)

+0:25  Function Definition: main( (global void)

 0:25    Function Parameters: 

 0:27    Sequence

 0:27      Sequence

-0:27        move second child to first child (highp int)

-0:27          'sum' (lowp int)

-0:27          add (highp int)

-0:27            'global_medium' (mediump int)

-0:27            'global_high' (highp int)

-0:29      move second child to first child (mediump 4-component vector of float)

+0:27        move second child to first child (temp highp int)

+0:27          'sum' (temp lowp int)

+0:27          add (temp highp int)

+0:27            'global_medium' (global mediump int)

+0:27            'global_high' (global highp int)

+0:29      move second child to first child (temp mediump 4-component vector of float)

 0:29        'gl_FragColor' (fragColor mediump 4-component vector of float)

-0:29        Construct vec4 (mediump 4-component vector of float)

+0:29        Construct vec4 (temp mediump 4-component vector of float)

 0:29          'color' (smooth in mediump 3-component vector of float)

 0:29          Constant:

 0:29            1.000000

-0:32      add second child into first child (highp int)

-0:32        'sum' (lowp int)

-0:32        'level1_high' (highp int)

-0:36      add second child into first child (lowp int)

-0:36        'sum' (lowp int)

-0:36        'level1_low' (lowp int)

+0:32      add second child into first child (temp highp int)

+0:32        'sum' (temp lowp int)

+0:32        'level1_high' (temp highp int)

+0:36      add second child into first child (temp lowp int)

+0:36        'sum' (temp lowp int)

+0:36        'level1_low' (temp lowp int)

 0:41      Sequence

-0:41        move second child to first child (mediump float)

-0:41          'd' (lowp float)

-0:41          distance (mediump float)

-0:41            'arg1' (lowp float)

-0:41            'arg2' (mediump float)

+0:41        move second child to first child (temp mediump float)

+0:41          'd' (temp lowp float)

+0:41          distance (global mediump float)

+0:41            'arg1' (temp lowp float)

+0:41            'arg2' (temp mediump float)

 0:?       Sequence

-0:45        add second child into first child (lowp int)

-0:45          'sum' (lowp int)

-0:45          'level2_low' (lowp int)

-0:49        add second child into first child (highp int)

-0:49          'sum' (lowp int)

-0:49          'level2_high' (highp int)

+0:45        add second child into first child (temp lowp int)

+0:45          'sum' (temp lowp int)

+0:45          'level2_low' (temp lowp int)

+0:49        add second child into first child (temp highp int)

+0:49          'sum' (temp lowp int)

+0:49          'level2_high' (temp highp int)

 0:58        Loop with condition not tested first

 0:58          Loop Condition

 0:58          Constant:

 0:58            true (const bool)

 0:58          Loop Body

 0:51          Sequence

-0:51            Test condition and select (void)

+0:51            Test condition and select (temp void)

 0:51              Condition

 0:51              Constant:

 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)

-0:60        add second child into first child (highp int)

-0:60          'sum' (lowp int)

-0:60          'level2_high2' (highp int)

-0:63      add second child into first child (lowp int)

-0:63        'sum' (lowp int)

-0:63        'level1_low3' (lowp int)

-0:65      add second child into first child (lowp int)

-0:65        'sum' (lowp int)

-0:65        add (lowp int)

+0:54                add second child into first child (temp mediump int)

+0:54                  'sum' (temp lowp int)

+0:54                  'level4_medium' (temp mediump int)

+0:57            add second child into first child (temp highp int)

+0:57              'sum' (temp lowp int)

+0:57              'level3_high' (temp highp int)

+0:60        add second child into first child (temp highp int)

+0:60          'sum' (temp lowp int)

+0:60          'level2_high2' (temp highp int)

+0:63      add second child into first child (temp lowp int)

+0:63        'sum' (temp lowp int)

+0:63        'level1_low3' (temp lowp int)

+0:65      add second child into first child (temp lowp int)

+0:65        'sum' (temp lowp int)

+0:65        add (temp lowp int)

 0:65          Constant:

 0:65            4 (const int)

-0:65          direct index (lowp int)

-0:65            add (lowp 2-component vector of int)

-0:65              component-wise multiply (lowp 2-component vector of int)

-0:65                Construct ivec2 (lowp 2-component vector of int)

-0:65                  'level1_low3' (lowp int)

-0:65                Construct ivec2 (lowp 2-component vector of int)

-0:65                  'level1_high' (highp int)

-0:65              Construct ivec2 (lowp 2-component vector of int)

-0:65                Comma (highp int)

-0:65                  'level1_low3' (lowp int)

-0:65                  'level1_high' (highp int)

+0:65          direct index (temp lowp int)

+0:65            add (temp lowp 2-component vector of int)

+0:65              component-wise multiply (temp lowp 2-component vector of int)

+0:65                Construct ivec2 (temp lowp 2-component vector of int)

+0:65                  'level1_low3' (temp lowp int)

+0:65                Construct ivec2 (temp lowp 2-component vector of int)

+0:65                  'level1_high' (temp highp int)

+0:65              Construct ivec2 (temp lowp 2-component vector of int)

+0:65                Comma (temp highp int)

+0:65                  'level1_low3' (temp lowp int)

+0:65                  'level1_high' (temp highp int)

 0:65            Constant:

 0:65              0 (const int)

-0:67      Function Call: texture2D(s21;vf2; (lowp 4-component vector of float)

+0:67      Function Call: texture2D(s21;vf2; (global lowp 4-component vector of float)

 0:67        'samplerLow' (uniform lowp sampler2D)

 0:67        Constant:

 0:67          0.100000

 0:67          0.200000

-0:68      Function Call: texture2D(s21;vf2; (mediump 4-component vector of float)

+0:68      Function Call: texture2D(s21;vf2; (global mediump 4-component vector of float)

 0:68        'samplerMed' (uniform mediump sampler2D)

 0:68        Constant:

 0:68          0.100000

 0:68          0.200000

-0:69      Function Call: texture2D(s21;vf2; (highp 4-component vector of float)

+0:69      Function Call: texture2D(s21;vf2; (global highp 4-component vector of float)

 0:69        'samplerHigh' (uniform highp sampler2D)

 0:69        Constant:

 0:69          0.100000

 0:69          0.200000

 0:?   Linker Objects

 0:?     'color' (smooth in mediump 3-component vector of float)

-0:?     'global_medium' (mediump int)

+0:?     'global_medium' (global mediump int)

 0:?     'samplerLow' (uniform lowp sampler2D)

 0:?     'samplerMed' (uniform mediump sampler2D)

 0:?     'samplerHigh' (uniform highp sampler2D)

-0:?     'uint' (mediump 4-component vector of float)

-0:?     'global_high' (highp int)

-0:?     'b2' (mediump 2-component vector of bool)

+0:?     'uint' (global mediump 4-component vector of float)

+0:?     'global_high' (global highp int)

+0:?     'b2' (temp mediump 2-component vector of bool)

 

diff --git a/Test/baseResults/precision.vert.out b/Test/baseResults/precision.vert.out
index cfec17f..ec3b850 100644
--- a/Test/baseResults/precision.vert.out
+++ b/Test/baseResults/precision.vert.out
@@ -7,34 +7,34 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:18  Function Definition: main( (void)

+0:18  Function Definition: main( (global void)

 0:18    Function Parameters: 

 0:20    Sequence

 0:20      Sequence

-0:20        move second child to first child (highp 4-component vector of float)

-0:20          't' (highp 4-component vector of float)

-0:20          Function Call: texture(s21;vf2; (highp 4-component vector of float)

+0:20        move second child to first child (temp highp 4-component vector of float)

+0:20          't' (temp highp 4-component vector of float)

+0:20          Function Call: texture(s21;vf2; (global highp 4-component vector of float)

 0:20            's2D' (uniform lowp sampler2D)

 0:20            Constant:

 0:20              0.100000

 0:20              0.200000

-0:21      add second child into first child (highp 4-component vector of float)

-0:21        't' (highp 4-component vector of float)

-0:21        Function Call: texture(s21;vf2; (highp 4-component vector of float)

+0:21      add second child into first child (temp highp 4-component vector of float)

+0:21        't' (temp highp 4-component vector of float)

+0:21        Function Call: texture(s21;vf2; (global highp 4-component vector of float)

 0:21          's2Dhigh' (uniform highp sampler2D)

 0:21          Constant:

 0:21            0.100000

 0:21            0.200000

-0:22      add second child into first child (highp 4-component vector of float)

-0:22        't' (highp 4-component vector of float)

-0:22        Function Call: texture(sAS21;vf4; (highp float)

+0:22      add second child into first child (temp highp 4-component vector of float)

+0:22        't' (temp highp 4-component vector of float)

+0:22        Function Call: texture(sAS21;vf4; (global highp float)

 0:22          's2dAS' (uniform mediump sampler2DArrayShadow)

 0:22          Constant:

 0:22            0.500000

 0:22            0.500000

 0:22            0.500000

 0:22            0.500000

-0:24      move second child to first child (highp 4-component vector of float)

+0:24      move second child to first child (temp highp 4-component vector of float)

 0:24        'gl_Position' (gl_Position highp 4-component vector of float)

 0:24        'pos' (in highp 4-component vector of float)

 0:?   Linker Objects

@@ -55,34 +55,34 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:18  Function Definition: main( (void)

+0:18  Function Definition: main( (global void)

 0:18    Function Parameters: 

 0:20    Sequence

 0:20      Sequence

-0:20        move second child to first child (highp 4-component vector of float)

-0:20          't' (highp 4-component vector of float)

-0:20          Function Call: texture(s21;vf2; (highp 4-component vector of float)

+0:20        move second child to first child (temp highp 4-component vector of float)

+0:20          't' (temp highp 4-component vector of float)

+0:20          Function Call: texture(s21;vf2; (global highp 4-component vector of float)

 0:20            's2D' (uniform lowp sampler2D)

 0:20            Constant:

 0:20              0.100000

 0:20              0.200000

-0:21      add second child into first child (highp 4-component vector of float)

-0:21        't' (highp 4-component vector of float)

-0:21        Function Call: texture(s21;vf2; (highp 4-component vector of float)

+0:21      add second child into first child (temp highp 4-component vector of float)

+0:21        't' (temp highp 4-component vector of float)

+0:21        Function Call: texture(s21;vf2; (global highp 4-component vector of float)

 0:21          's2Dhigh' (uniform highp sampler2D)

 0:21          Constant:

 0:21            0.100000

 0:21            0.200000

-0:22      add second child into first child (highp 4-component vector of float)

-0:22        't' (highp 4-component vector of float)

-0:22        Function Call: texture(sAS21;vf4; (highp float)

+0:22      add second child into first child (temp highp 4-component vector of float)

+0:22        't' (temp highp 4-component vector of float)

+0:22        Function Call: texture(sAS21;vf4; (global highp float)

 0:22          's2dAS' (uniform mediump sampler2DArrayShadow)

 0:22          Constant:

 0:22            0.500000

 0:22            0.500000

 0:22            0.500000

 0:22            0.500000

-0:24      move second child to first child (highp 4-component vector of float)

+0:24      move second child to first child (temp highp 4-component vector of float)

 0:24        'gl_Position' (gl_Position highp 4-component vector of float)

 0:24        'pos' (in highp 4-component vector of float)

 0:?   Linker Objects

diff --git a/Test/baseResults/prepost.frag.out b/Test/baseResults/prepost.frag.out
index a635181..1fa4b33 100644
--- a/Test/baseResults/prepost.frag.out
+++ b/Test/baseResults/prepost.frag.out
@@ -2,135 +2,135 @@
 

 Shader version: 140

 0:? Sequence

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

 0:?     Sequence

 0:10      Sequence

-0:10        move second child to first child (int)

-0:10          'index' (int)

+0:10        move second child to first child (temp int)

+0:10          'index' (temp int)

 0:10          Constant:

 0:10            5 (const int)

-0:12      move second child to first child (float)

-0:12        direct index (float)

-0:12          y: direct index for structure (5-element array of float)

-0:12            'str' (structure{5-element array of float y})

+0:12      move second child to first child (temp float)

+0:12        direct index (temp float)

+0:12          y: direct index for structure (temp 5-element array of float)

+0:12            'str' (temp structure{temp 5-element array of float y})

 0:12            Constant:

 0:12              0 (const int)

 0:12          Constant:

 0:12            4 (const int)

 0:12        Constant:

 0:12          2.000000

-0:13      move second child to first child (float)

-0:13        't' (float)

-0:13        Pre-Increment (float)

-0:13          indirect index (float)

-0:13            y: direct index for structure (5-element array of float)

-0:13              'str' (structure{5-element array of float y})

+0:13      move second child to first child (temp float)

+0:13        't' (temp float)

+0:13        Pre-Increment (temp float)

+0:13          indirect index (temp float)

+0:13            y: direct index for structure (temp 5-element array of float)

+0:13              'str' (temp structure{temp 5-element array of float y})

 0:13              Constant:

 0:13                0 (const int)

-0:13            Pre-Decrement (int)

-0:13              'index' (int)

-0:14      add second child into first child (float)

-0:14        direct index (float)

-0:14          y: direct index for structure (5-element array of float)

-0:14            'str' (structure{5-element array of float y})

+0:13            Pre-Decrement (temp int)

+0:13              'index' (temp int)

+0:14      add second child into first child (temp float)

+0:14        direct index (temp float)

+0:14          y: direct index for structure (temp 5-element array of float)

+0:14            'str' (temp structure{temp 5-element array of float y})

 0:14            Constant:

 0:14              0 (const int)

 0:14          Constant:

 0:14            4 (const int)

-0:14        't' (float)

-0:15      move second child to first child (float)

-0:15        't' (float)

-0:15        Post-Decrement (float)

-0:15          direct index (float)

-0:15            y: direct index for structure (5-element array of float)

-0:15              'str' (structure{5-element array of float y})

+0:14        't' (temp float)

+0:15      move second child to first child (temp float)

+0:15        't' (temp float)

+0:15        Post-Decrement (temp float)

+0:15          direct index (temp float)

+0:15            y: direct index for structure (temp 5-element array of float)

+0:15              'str' (temp structure{temp 5-element array of float y})

 0:15              Constant:

 0:15                0 (const int)

 0:15            Constant:

 0:15              4 (const int)

-0:16      add second child into first child (float)

-0:16        indirect index (float)

-0:16          y: direct index for structure (5-element array of float)

-0:16            'str' (structure{5-element array of float y})

+0:16      add second child into first child (temp float)

+0:16        indirect index (temp float)

+0:16          y: direct index for structure (temp 5-element array of float)

+0:16            'str' (temp structure{temp 5-element array of float y})

 0:16            Constant:

 0:16              0 (const int)

-0:16          Post-Increment (int)

-0:16            'index' (int)

-0:16        't' (float)

-0:17      Pre-Decrement (float)

-0:17        indirect index (float)

-0:17          y: direct index for structure (5-element array of float)

-0:17            'str' (structure{5-element array of float y})

+0:16          Post-Increment (temp int)

+0:16            'index' (temp int)

+0:16        't' (temp float)

+0:17      Pre-Decrement (temp float)

+0:17        indirect index (temp float)

+0:17          y: direct index for structure (temp 5-element array of float)

+0:17            'str' (temp structure{temp 5-element array of float y})

 0:17            Constant:

 0:17              0 (const int)

-0:17          Pre-Decrement (int)

-0:17            'index' (int)

+0:17          Pre-Decrement (temp int)

+0:17            'index' (temp int)

 0:19      Sequence

-0:19        move second child to first child (float)

-0:19          'x' (float)

-0:19          direct index (float)

-0:19            y: direct index for structure (5-element array of float)

-0:19              'str' (structure{5-element array of float y})

+0:19        move second child to first child (temp float)

+0:19          'x' (temp float)

+0:19          direct index (temp float)

+0:19            y: direct index for structure (temp 5-element array of float)

+0:19              'str' (temp structure{temp 5-element array of float y})

 0:19              Constant:

 0:19                0 (const int)

 0:19            Constant:

 0:19              4 (const int)

-0:20      Pre-Increment (float)

-0:20        'x' (float)

-0:21      Pre-Decrement (float)

-0:21        'x' (float)

-0:22      Post-Increment (float)

-0:22        'x' (float)

-0:23      Post-Decrement (float)

-0:23        'x' (float)

+0:20      Pre-Increment (temp float)

+0:20        'x' (temp float)

+0:21      Pre-Decrement (temp float)

+0:21        'x' (temp float)

+0:22      Post-Increment (temp float)

+0:22        'x' (temp float)

+0:23      Post-Decrement (temp float)

+0:23        'x' (temp float)

 0:27      Sequence

-0:27        move second child to first child (float)

-0:27          'y' (float)

-0:27          component-wise multiply (float)

-0:27            'x' (float)

-0:27            Pre-Increment (float)

-0:27              'x' (float)

+0:27        move second child to first child (temp float)

+0:27          'y' (temp float)

+0:27          component-wise multiply (temp float)

+0:27            'x' (temp float)

+0:27            Pre-Increment (temp float)

+0:27              'x' (temp float)

 0:28      Sequence

-0:28        move second child to first child (float)

-0:28          'z' (float)

-0:28          component-wise multiply (float)

-0:28            'y' (float)

-0:28            Post-Decrement (float)

-0:28              'x' (float)

+0:28        move second child to first child (temp float)

+0:28          'z' (temp float)

+0:28          component-wise multiply (temp float)

+0:28            'y' (temp float)

+0:28            Post-Decrement (temp float)

+0:28              'x' (temp float)

 0:33      Sequence

-0:33        move second child to first child (4-component vector of float)

-0:33          'v' (4-component vector of float)

+0:33        move second child to first child (temp 4-component vector of float)

+0:33          'v' (temp 4-component vector of float)

 0:33          Constant:

 0:33            1.000000

 0:33            2.000000

 0:33            3.000000

 0:33            4.000000

-0:34      move second child to first child (float)

-0:34        direct index (float)

-0:34          'v' (4-component vector of float)

+0:34      move second child to first child (temp float)

+0:34        direct index (temp float)

+0:34          'v' (temp 4-component vector of float)

 0:34          Constant:

 0:34            1 (const int)

-0:34        Post-Decrement (float)

-0:34          direct index (float)

-0:34            'v' (4-component vector of float)

+0:34        Post-Decrement (temp float)

+0:34          direct index (temp float)

+0:34            'v' (temp 4-component vector of float)

 0:34            Constant:

 0:34              2 (const int)

-0:35      move second child to first child (float)

-0:35        direct index (float)

-0:35          'v' (4-component vector of float)

+0:35      move second child to first child (temp float)

+0:35        direct index (temp float)

+0:35          'v' (temp 4-component vector of float)

 0:35          Constant:

 0:35            0 (const int)

-0:35        Pre-Decrement (float)

-0:35          direct index (float)

-0:35            'v' (4-component vector of float)

+0:35        Pre-Decrement (temp float)

+0:35          direct index (temp float)

+0:35            'v' (temp 4-component vector of float)

 0:35            Constant:

 0:35              3 (const int)

-0:37      move second child to first child (4-component vector of float)

+0:37      move second child to first child (temp 4-component vector of float)

 0:37        'gl_FragColor' (fragColor 4-component vector of float)

-0:37        vector-scale (4-component vector of float)

-0:37          'z' (float)

-0:37          'v' (4-component vector of float)

+0:37        vector-scale (temp 4-component vector of float)

+0:37          'z' (temp float)

+0:37          'v' (temp 4-component vector of float)

 0:?   Linker Objects

 

 

@@ -139,134 +139,134 @@
 

 Shader version: 140

 0:? Sequence

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

 0:?     Sequence

 0:10      Sequence

-0:10        move second child to first child (int)

-0:10          'index' (int)

+0:10        move second child to first child (temp int)

+0:10          'index' (temp int)

 0:10          Constant:

 0:10            5 (const int)

-0:12      move second child to first child (float)

-0:12        direct index (float)

-0:12          y: direct index for structure (5-element array of float)

-0:12            'str' (structure{5-element array of float y})

+0:12      move second child to first child (temp float)

+0:12        direct index (temp float)

+0:12          y: direct index for structure (temp 5-element array of float)

+0:12            'str' (temp structure{temp 5-element array of float y})

 0:12            Constant:

 0:12              0 (const int)

 0:12          Constant:

 0:12            4 (const int)

 0:12        Constant:

 0:12          2.000000

-0:13      move second child to first child (float)

-0:13        't' (float)

-0:13        Pre-Increment (float)

-0:13          indirect index (float)

-0:13            y: direct index for structure (5-element array of float)

-0:13              'str' (structure{5-element array of float y})

+0:13      move second child to first child (temp float)

+0:13        't' (temp float)

+0:13        Pre-Increment (temp float)

+0:13          indirect index (temp float)

+0:13            y: direct index for structure (temp 5-element array of float)

+0:13              'str' (temp structure{temp 5-element array of float y})

 0:13              Constant:

 0:13                0 (const int)

-0:13            Pre-Decrement (int)

-0:13              'index' (int)

-0:14      add second child into first child (float)

-0:14        direct index (float)

-0:14          y: direct index for structure (5-element array of float)

-0:14            'str' (structure{5-element array of float y})

+0:13            Pre-Decrement (temp int)

+0:13              'index' (temp int)

+0:14      add second child into first child (temp float)

+0:14        direct index (temp float)

+0:14          y: direct index for structure (temp 5-element array of float)

+0:14            'str' (temp structure{temp 5-element array of float y})

 0:14            Constant:

 0:14              0 (const int)

 0:14          Constant:

 0:14            4 (const int)

-0:14        't' (float)

-0:15      move second child to first child (float)

-0:15        't' (float)

-0:15        Post-Decrement (float)

-0:15          direct index (float)

-0:15            y: direct index for structure (5-element array of float)

-0:15              'str' (structure{5-element array of float y})

+0:14        't' (temp float)

+0:15      move second child to first child (temp float)

+0:15        't' (temp float)

+0:15        Post-Decrement (temp float)

+0:15          direct index (temp float)

+0:15            y: direct index for structure (temp 5-element array of float)

+0:15              'str' (temp structure{temp 5-element array of float y})

 0:15              Constant:

 0:15                0 (const int)

 0:15            Constant:

 0:15              4 (const int)

-0:16      add second child into first child (float)

-0:16        indirect index (float)

-0:16          y: direct index for structure (5-element array of float)

-0:16            'str' (structure{5-element array of float y})

+0:16      add second child into first child (temp float)

+0:16        indirect index (temp float)

+0:16          y: direct index for structure (temp 5-element array of float)

+0:16            'str' (temp structure{temp 5-element array of float y})

 0:16            Constant:

 0:16              0 (const int)

-0:16          Post-Increment (int)

-0:16            'index' (int)

-0:16        't' (float)

-0:17      Pre-Decrement (float)

-0:17        indirect index (float)

-0:17          y: direct index for structure (5-element array of float)

-0:17            'str' (structure{5-element array of float y})

+0:16          Post-Increment (temp int)

+0:16            'index' (temp int)

+0:16        't' (temp float)

+0:17      Pre-Decrement (temp float)

+0:17        indirect index (temp float)

+0:17          y: direct index for structure (temp 5-element array of float)

+0:17            'str' (temp structure{temp 5-element array of float y})

 0:17            Constant:

 0:17              0 (const int)

-0:17          Pre-Decrement (int)

-0:17            'index' (int)

+0:17          Pre-Decrement (temp int)

+0:17            'index' (temp int)

 0:19      Sequence

-0:19        move second child to first child (float)

-0:19          'x' (float)

-0:19          direct index (float)

-0:19            y: direct index for structure (5-element array of float)

-0:19              'str' (structure{5-element array of float y})

+0:19        move second child to first child (temp float)

+0:19          'x' (temp float)

+0:19          direct index (temp float)

+0:19            y: direct index for structure (temp 5-element array of float)

+0:19              'str' (temp structure{temp 5-element array of float y})

 0:19              Constant:

 0:19                0 (const int)

 0:19            Constant:

 0:19              4 (const int)

-0:20      Pre-Increment (float)

-0:20        'x' (float)

-0:21      Pre-Decrement (float)

-0:21        'x' (float)

-0:22      Post-Increment (float)

-0:22        'x' (float)

-0:23      Post-Decrement (float)

-0:23        'x' (float)

+0:20      Pre-Increment (temp float)

+0:20        'x' (temp float)

+0:21      Pre-Decrement (temp float)

+0:21        'x' (temp float)

+0:22      Post-Increment (temp float)

+0:22        'x' (temp float)

+0:23      Post-Decrement (temp float)

+0:23        'x' (temp float)

 0:27      Sequence

-0:27        move second child to first child (float)

-0:27          'y' (float)

-0:27          component-wise multiply (float)

-0:27            'x' (float)

-0:27            Pre-Increment (float)

-0:27              'x' (float)

+0:27        move second child to first child (temp float)

+0:27          'y' (temp float)

+0:27          component-wise multiply (temp float)

+0:27            'x' (temp float)

+0:27            Pre-Increment (temp float)

+0:27              'x' (temp float)

 0:28      Sequence

-0:28        move second child to first child (float)

-0:28          'z' (float)

-0:28          component-wise multiply (float)

-0:28            'y' (float)

-0:28            Post-Decrement (float)

-0:28              'x' (float)

+0:28        move second child to first child (temp float)

+0:28          'z' (temp float)

+0:28          component-wise multiply (temp float)

+0:28            'y' (temp float)

+0:28            Post-Decrement (temp float)

+0:28              'x' (temp float)

 0:33      Sequence

-0:33        move second child to first child (4-component vector of float)

-0:33          'v' (4-component vector of float)

+0:33        move second child to first child (temp 4-component vector of float)

+0:33          'v' (temp 4-component vector of float)

 0:33          Constant:

 0:33            1.000000

 0:33            2.000000

 0:33            3.000000

 0:33            4.000000

-0:34      move second child to first child (float)

-0:34        direct index (float)

-0:34          'v' (4-component vector of float)

+0:34      move second child to first child (temp float)

+0:34        direct index (temp float)

+0:34          'v' (temp 4-component vector of float)

 0:34          Constant:

 0:34            1 (const int)

-0:34        Post-Decrement (float)

-0:34          direct index (float)

-0:34            'v' (4-component vector of float)

+0:34        Post-Decrement (temp float)

+0:34          direct index (temp float)

+0:34            'v' (temp 4-component vector of float)

 0:34            Constant:

 0:34              2 (const int)

-0:35      move second child to first child (float)

-0:35        direct index (float)

-0:35          'v' (4-component vector of float)

+0:35      move second child to first child (temp float)

+0:35        direct index (temp float)

+0:35          'v' (temp 4-component vector of float)

 0:35          Constant:

 0:35            0 (const int)

-0:35        Pre-Decrement (float)

-0:35          direct index (float)

-0:35            'v' (4-component vector of float)

+0:35        Pre-Decrement (temp float)

+0:35          direct index (temp float)

+0:35            'v' (temp 4-component vector of float)

 0:35            Constant:

 0:35              3 (const int)

-0:37      move second child to first child (4-component vector of float)

+0:37      move second child to first child (temp 4-component vector of float)

 0:37        'gl_FragColor' (fragColor 4-component vector of float)

-0:37        vector-scale (4-component vector of float)

-0:37          'z' (float)

-0:37          'v' (4-component vector of float)

+0:37        vector-scale (temp 4-component vector of float)

+0:37          'z' (temp float)

+0:37          'v' (temp 4-component vector of float)

 0:?   Linker Objects

 

diff --git a/Test/baseResults/recurse1.vert.out b/Test/baseResults/recurse1.vert.out
index 292a251..8aae603 100644
--- a/Test/baseResults/recurse1.vert.out
+++ b/Test/baseResults/recurse1.vert.out
@@ -2,68 +2,68 @@
 

 Shader version: 330

 0:? Sequence

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

-0:9  Function Definition: self( (void)

+0:9  Function Definition: self( (global void)

 0:9    Function Parameters: 

 0:11    Sequence

-0:11      Function Call: self( (void)

-0:16  Function Definition: foo(f1; (void)

+0:11      Function Call: self( (global void)

+0:16  Function Definition: foo(f1; (global void)

 0:16    Function Parameters: 

 0:16      '' (in float)

 0:18    Sequence

-0:18      Function Call: bar(i1; (float)

+0:18      Function Call: bar(i1; (global float)

 0:18        Constant:

 0:18          2 (const int)

-0:21  Function Definition: bar(i1; (float)

+0:21  Function Definition: bar(i1; (global float)

 0:21    Function Parameters: 

 0:21      '' (in int)

 0:23    Sequence

-0:23      Function Call: foo(f1; (void)

+0:23      Function Call: foo(f1; (global void)

 0:23        Constant:

 0:23          4.200000

 0:25      Branch: Return with expression

 0:25        Constant:

 0:25          3.200000

-0:32  Function Definition: A( (void)

+0:32  Function Definition: A( (global void)

 0:32    Function Parameters: 

 0:32    Sequence

-0:32      Function Call: B( (void)

-0:33  Function Definition: C( (void)

+0:32      Function Call: B( (global void)

+0:33  Function Definition: C( (global void)

 0:33    Function Parameters: 

 0:33    Sequence

-0:33      Function Call: D( (void)

-0:34  Function Definition: B( (void)

+0:33      Function Call: D( (global void)

+0:34  Function Definition: B( (global void)

 0:34    Function Parameters: 

 0:34    Sequence

-0:34      Function Call: C( (void)

-0:35  Function Definition: D( (void)

+0:34      Function Call: C( (global void)

+0:35  Function Definition: D( (global void)

 0:35    Function Parameters: 

 0:35    Sequence

-0:35      Function Call: A( (void)

-0:41  Function Definition: AT( (void)

+0:35      Function Call: A( (global void)

+0:41  Function Definition: AT( (global void)

 0:41    Function Parameters: 

 0:41    Sequence

-0:41      Function Call: BT( (void)

-0:41      Function Call: BT( (void)

-0:41      Function Call: BT( (void)

-0:42  Function Definition: CT( (void)

+0:41      Function Call: BT( (global void)

+0:41      Function Call: BT( (global void)

+0:41      Function Call: BT( (global void)

+0:42  Function Definition: CT( (global void)

 0:42    Function Parameters: 

 0:42    Sequence

-0:42      Function Call: DT( (void)

-0:42      Function Call: AT( (void)

-0:42      Function Call: DT( (void)

-0:42      Function Call: BT( (void)

-0:43  Function Definition: BT( (void)

+0:42      Function Call: DT( (global void)

+0:42      Function Call: AT( (global void)

+0:42      Function Call: DT( (global void)

+0:42      Function Call: BT( (global void)

+0:43  Function Definition: BT( (global void)

 0:43    Function Parameters: 

 0:43    Sequence

-0:43      Function Call: CT( (void)

-0:43      Function Call: CT( (void)

-0:43      Function Call: CT( (void)

-0:44  Function Definition: DT( (void)

+0:43      Function Call: CT( (global void)

+0:43      Function Call: CT( (global void)

+0:43      Function Call: CT( (global void)

+0:44  Function Definition: DT( (global void)

 0:44    Function Parameters: 

 0:44    Sequence

-0:44      Function Call: AT( (void)

+0:44      Function Call: AT( (global void)

 0:?   Linker Objects

 0:?     'gl_VertexID' (gl_VertexId int)

 0:?     'gl_InstanceID' (gl_InstanceId int)

@@ -72,122 +72,122 @@
 

 Shader version: 330

 0:? Sequence

-0:5  Function Definition: main( (void)

+0:5  Function Definition: main( (global void)

 0:5    Function Parameters: 

-0:11  Function Definition: cfoo(f1; (void)

+0:11  Function Definition: cfoo(f1; (global void)

 0:11    Function Parameters: 

 0:11      '' (in float)

 0:13    Sequence

-0:13      Function Call: cbar(i1; (float)

+0:13      Function Call: cbar(i1; (global float)

 0:13        Constant:

 0:13          2 (const int)

-0:20  Function Definition: CA( (void)

+0:20  Function Definition: CA( (global void)

 0:20    Function Parameters: 

 0:20    Sequence

-0:20      Function Call: CB( (void)

-0:21  Function Definition: CC( (void)

+0:20      Function Call: CB( (global void)

+0:21  Function Definition: CC( (global void)

 0:21    Function Parameters: 

 0:21    Sequence

-0:21      Function Call: CD( (void)

-0:27  Function Definition: CAT( (void)

+0:21      Function Call: CD( (global void)

+0:27  Function Definition: CAT( (global void)

 0:27    Function Parameters: 

 0:27    Sequence

-0:27      Function Call: CBT( (void)

-0:27      Function Call: CBT( (void)

-0:27      Function Call: CBT( (void)

-0:28  Function Definition: CCT( (void)

+0:27      Function Call: CBT( (global void)

+0:27      Function Call: CBT( (global void)

+0:27      Function Call: CBT( (global void)

+0:28  Function Definition: CCT( (global void)

 0:28    Function Parameters: 

 0:28    Sequence

-0:28      Function Call: CDT( (void)

-0:28      Function Call: CDT( (void)

-0:28      Function Call: CBT( (void)

-0:32  Function Definition: norA( (void)

+0:28      Function Call: CDT( (global void)

+0:28      Function Call: CDT( (global void)

+0:28      Function Call: CBT( (global void)

+0:32  Function Definition: norA( (global void)

 0:32    Function Parameters: 

-0:33  Function Definition: norB( (void)

+0:33  Function Definition: norB( (global void)

 0:33    Function Parameters: 

 0:33    Sequence

-0:33      Function Call: norA( (void)

-0:34  Function Definition: norC( (void)

+0:33      Function Call: norA( (global void)

+0:34  Function Definition: norC( (global void)

 0:34    Function Parameters: 

 0:34    Sequence

-0:34      Function Call: norA( (void)

-0:35  Function Definition: norD( (void)

+0:34      Function Call: norA( (global void)

+0:35  Function Definition: norD( (global void)

 0:35    Function Parameters: 

 0:35    Sequence

-0:35      Function Call: norA( (void)

-0:36  Function Definition: norE( (void)

+0:35      Function Call: norA( (global void)

+0:36  Function Definition: norE( (global void)

 0:36    Function Parameters: 

 0:36    Sequence

-0:36      Function Call: norB( (void)

-0:37  Function Definition: norF( (void)

+0:36      Function Call: norB( (global void)

+0:37  Function Definition: norF( (global void)

 0:37    Function Parameters: 

 0:37    Sequence

-0:37      Function Call: norB( (void)

-0:38  Function Definition: norG( (void)

+0:37      Function Call: norB( (global void)

+0:38  Function Definition: norG( (global void)

 0:38    Function Parameters: 

 0:38    Sequence

-0:38      Function Call: norE( (void)

-0:39  Function Definition: norH( (void)

+0:38      Function Call: norE( (global void)

+0:39  Function Definition: norH( (global void)

 0:39    Function Parameters: 

 0:39    Sequence

-0:39      Function Call: norE( (void)

-0:40  Function Definition: norI( (void)

+0:39      Function Call: norE( (global void)

+0:40  Function Definition: norI( (global void)

 0:40    Function Parameters: 

 0:40    Sequence

-0:40      Function Call: norE( (void)

-0:44  Function Definition: norcA( (void)

+0:40      Function Call: norE( (global void)

+0:44  Function Definition: norcA( (global void)

 0:44    Function Parameters: 

-0:45  Function Definition: norcB( (void)

+0:45  Function Definition: norcB( (global void)

 0:45    Function Parameters: 

 0:45    Sequence

-0:45      Function Call: norcA( (void)

-0:46  Function Definition: norcC( (void)

+0:45      Function Call: norcA( (global void)

+0:46  Function Definition: norcC( (global void)

 0:46    Function Parameters: 

 0:46    Sequence

-0:46      Function Call: norcB( (void)

-0:47  Function Definition: norcD( (void)

+0:46      Function Call: norcB( (global void)

+0:47  Function Definition: norcD( (global void)

 0:47    Function Parameters: 

 0:47    Sequence

-0:47      Function Call: norcC( (void)

-0:47      Function Call: norcB( (void)

-0:48  Function Definition: norcE( (void)

+0:47      Function Call: norcC( (global void)

+0:47      Function Call: norcB( (global void)

+0:48  Function Definition: norcE( (global void)

 0:48    Function Parameters: 

 0:48    Sequence

-0:48      Function Call: norcD( (void)

+0:48      Function Call: norcD( (global void)

 0:?   Linker Objects

 

 recurse2.frag

 

 Shader version: 330

 0:? Sequence

-0:9  Function Definition: cbar(i1; (float)

+0:9  Function Definition: cbar(i1; (global float)

 0:9    Function Parameters: 

 0:9      '' (in int)

 0:11    Sequence

-0:11      Function Call: cfoo(f1; (void)

+0:11      Function Call: cfoo(f1; (global void)

 0:11        Constant:

 0:11          4.200000

 0:13      Branch: Return with expression

 0:13        Constant:

 0:13          3.200000

-0:20  Function Definition: CB( (void)

+0:20  Function Definition: CB( (global void)

 0:20    Function Parameters: 

 0:20    Sequence

-0:20      Function Call: CC( (void)

-0:21  Function Definition: CD( (void)

+0:20      Function Call: CC( (global void)

+0:21  Function Definition: CD( (global void)

 0:21    Function Parameters: 

 0:21    Sequence

-0:21      Function Call: CA( (void)

-0:27  Function Definition: CBT( (void)

+0:21      Function Call: CA( (global void)

+0:27  Function Definition: CBT( (global void)

 0:27    Function Parameters: 

 0:27    Sequence

-0:27      Function Call: CCT( (void)

-0:27      Function Call: CCT( (void)

-0:27      Function Call: CCT( (void)

-0:28  Function Definition: CDT( (void)

+0:27      Function Call: CCT( (global void)

+0:27      Function Call: CCT( (global void)

+0:27      Function Call: CCT( (global void)

+0:28  Function Definition: CDT( (global void)

 0:28    Function Parameters: 

 0:28    Sequence

-0:28      Function Call: CAT( (void)

+0:28      Function Call: CAT( (global void)

 0:?   Linker Objects

 

 

@@ -219,182 +219,182 @@
 

 Shader version: 330

 0:? Sequence

-0:3  Function Definition: main( (void)

+0:3  Function Definition: main( (global void)

 0:3    Function Parameters: 

-0:9  Function Definition: self( (void)

+0:9  Function Definition: self( (global void)

 0:9    Function Parameters: 

 0:11    Sequence

-0:11      Function Call: self( (void)

-0:16  Function Definition: foo(f1; (void)

+0:11      Function Call: self( (global void)

+0:16  Function Definition: foo(f1; (global void)

 0:16    Function Parameters: 

 0:16      '' (in float)

 0:18    Sequence

-0:18      Function Call: bar(i1; (float)

+0:18      Function Call: bar(i1; (global float)

 0:18        Constant:

 0:18          2 (const int)

-0:21  Function Definition: bar(i1; (float)

+0:21  Function Definition: bar(i1; (global float)

 0:21    Function Parameters: 

 0:21      '' (in int)

 0:23    Sequence

-0:23      Function Call: foo(f1; (void)

+0:23      Function Call: foo(f1; (global void)

 0:23        Constant:

 0:23          4.200000

 0:25      Branch: Return with expression

 0:25        Constant:

 0:25          3.200000

-0:32  Function Definition: A( (void)

+0:32  Function Definition: A( (global void)

 0:32    Function Parameters: 

 0:32    Sequence

-0:32      Function Call: B( (void)

-0:33  Function Definition: C( (void)

+0:32      Function Call: B( (global void)

+0:33  Function Definition: C( (global void)

 0:33    Function Parameters: 

 0:33    Sequence

-0:33      Function Call: D( (void)

-0:34  Function Definition: B( (void)

+0:33      Function Call: D( (global void)

+0:34  Function Definition: B( (global void)

 0:34    Function Parameters: 

 0:34    Sequence

-0:34      Function Call: C( (void)

-0:35  Function Definition: D( (void)

+0:34      Function Call: C( (global void)

+0:35  Function Definition: D( (global void)

 0:35    Function Parameters: 

 0:35    Sequence

-0:35      Function Call: A( (void)

-0:41  Function Definition: AT( (void)

+0:35      Function Call: A( (global void)

+0:41  Function Definition: AT( (global void)

 0:41    Function Parameters: 

 0:41    Sequence

-0:41      Function Call: BT( (void)

-0:41      Function Call: BT( (void)

-0:41      Function Call: BT( (void)

-0:42  Function Definition: CT( (void)

+0:41      Function Call: BT( (global void)

+0:41      Function Call: BT( (global void)

+0:41      Function Call: BT( (global void)

+0:42  Function Definition: CT( (global void)

 0:42    Function Parameters: 

 0:42    Sequence

-0:42      Function Call: DT( (void)

-0:42      Function Call: AT( (void)

-0:42      Function Call: DT( (void)

-0:42      Function Call: BT( (void)

-0:43  Function Definition: BT( (void)

+0:42      Function Call: DT( (global void)

+0:42      Function Call: AT( (global void)

+0:42      Function Call: DT( (global void)

+0:42      Function Call: BT( (global void)

+0:43  Function Definition: BT( (global void)

 0:43    Function Parameters: 

 0:43    Sequence

-0:43      Function Call: CT( (void)

-0:43      Function Call: CT( (void)

-0:43      Function Call: CT( (void)

-0:44  Function Definition: DT( (void)

+0:43      Function Call: CT( (global void)

+0:43      Function Call: CT( (global void)

+0:43      Function Call: CT( (global void)

+0:44  Function Definition: DT( (global void)

 0:44    Function Parameters: 

 0:44    Sequence

-0:44      Function Call: AT( (void)

+0:44      Function Call: AT( (global void)

 0:?   Linker Objects

 0:?     'gl_VertexID' (gl_VertexId int)

 0:?     'gl_InstanceID' (gl_InstanceId int)

 Shader version: 330

 0:? Sequence

-0:5  Function Definition: main( (void)

+0:5  Function Definition: main( (global void)

 0:5    Function Parameters: 

-0:11  Function Definition: cfoo(f1; (void)

+0:11  Function Definition: cfoo(f1; (global void)

 0:11    Function Parameters: 

 0:11      '' (in float)

 0:13    Sequence

-0:13      Function Call: cbar(i1; (float)

+0:13      Function Call: cbar(i1; (global float)

 0:13        Constant:

 0:13          2 (const int)

-0:20  Function Definition: CA( (void)

+0:20  Function Definition: CA( (global void)

 0:20    Function Parameters: 

 0:20    Sequence

-0:20      Function Call: CB( (void)

-0:21  Function Definition: CC( (void)

+0:20      Function Call: CB( (global void)

+0:21  Function Definition: CC( (global void)

 0:21    Function Parameters: 

 0:21    Sequence

-0:21      Function Call: CD( (void)

-0:27  Function Definition: CAT( (void)

+0:21      Function Call: CD( (global void)

+0:27  Function Definition: CAT( (global void)

 0:27    Function Parameters: 

 0:27    Sequence

-0:27      Function Call: CBT( (void)

-0:27      Function Call: CBT( (void)

-0:27      Function Call: CBT( (void)

-0:28  Function Definition: CCT( (void)

+0:27      Function Call: CBT( (global void)

+0:27      Function Call: CBT( (global void)

+0:27      Function Call: CBT( (global void)

+0:28  Function Definition: CCT( (global void)

 0:28    Function Parameters: 

 0:28    Sequence

-0:28      Function Call: CDT( (void)

-0:28      Function Call: CDT( (void)

-0:28      Function Call: CBT( (void)

-0:32  Function Definition: norA( (void)

+0:28      Function Call: CDT( (global void)

+0:28      Function Call: CDT( (global void)

+0:28      Function Call: CBT( (global void)

+0:32  Function Definition: norA( (global void)

 0:32    Function Parameters: 

-0:33  Function Definition: norB( (void)

+0:33  Function Definition: norB( (global void)

 0:33    Function Parameters: 

 0:33    Sequence

-0:33      Function Call: norA( (void)

-0:34  Function Definition: norC( (void)

+0:33      Function Call: norA( (global void)

+0:34  Function Definition: norC( (global void)

 0:34    Function Parameters: 

 0:34    Sequence

-0:34      Function Call: norA( (void)

-0:35  Function Definition: norD( (void)

+0:34      Function Call: norA( (global void)

+0:35  Function Definition: norD( (global void)

 0:35    Function Parameters: 

 0:35    Sequence

-0:35      Function Call: norA( (void)

-0:36  Function Definition: norE( (void)

+0:35      Function Call: norA( (global void)

+0:36  Function Definition: norE( (global void)

 0:36    Function Parameters: 

 0:36    Sequence

-0:36      Function Call: norB( (void)

-0:37  Function Definition: norF( (void)

+0:36      Function Call: norB( (global void)

+0:37  Function Definition: norF( (global void)

 0:37    Function Parameters: 

 0:37    Sequence

-0:37      Function Call: norB( (void)

-0:38  Function Definition: norG( (void)

+0:37      Function Call: norB( (global void)

+0:38  Function Definition: norG( (global void)

 0:38    Function Parameters: 

 0:38    Sequence

-0:38      Function Call: norE( (void)

-0:39  Function Definition: norH( (void)

+0:38      Function Call: norE( (global void)

+0:39  Function Definition: norH( (global void)

 0:39    Function Parameters: 

 0:39    Sequence

-0:39      Function Call: norE( (void)

-0:40  Function Definition: norI( (void)

+0:39      Function Call: norE( (global void)

+0:40  Function Definition: norI( (global void)

 0:40    Function Parameters: 

 0:40    Sequence

-0:40      Function Call: norE( (void)

-0:44  Function Definition: norcA( (void)

+0:40      Function Call: norE( (global void)

+0:44  Function Definition: norcA( (global void)

 0:44    Function Parameters: 

-0:45  Function Definition: norcB( (void)

+0:45  Function Definition: norcB( (global void)

 0:45    Function Parameters: 

 0:45    Sequence

-0:45      Function Call: norcA( (void)

-0:46  Function Definition: norcC( (void)

+0:45      Function Call: norcA( (global void)

+0:46  Function Definition: norcC( (global void)

 0:46    Function Parameters: 

 0:46    Sequence

-0:46      Function Call: norcB( (void)

-0:47  Function Definition: norcD( (void)

+0:46      Function Call: norcB( (global void)

+0:47  Function Definition: norcD( (global void)

 0:47    Function Parameters: 

 0:47    Sequence

-0:47      Function Call: norcC( (void)

-0:47      Function Call: norcB( (void)

-0:48  Function Definition: norcE( (void)

+0:47      Function Call: norcC( (global void)

+0:47      Function Call: norcB( (global void)

+0:48  Function Definition: norcE( (global void)

 0:48    Function Parameters: 

 0:48    Sequence

-0:48      Function Call: norcD( (void)

-0:9  Function Definition: cbar(i1; (float)

+0:48      Function Call: norcD( (global void)

+0:9  Function Definition: cbar(i1; (global float)

 0:9    Function Parameters: 

 0:9      '' (in int)

 0:11    Sequence

-0:11      Function Call: cfoo(f1; (void)

+0:11      Function Call: cfoo(f1; (global void)

 0:11        Constant:

 0:11          4.200000

 0:13      Branch: Return with expression

 0:13        Constant:

 0:13          3.200000

-0:20  Function Definition: CB( (void)

+0:20  Function Definition: CB( (global void)

 0:20    Function Parameters: 

 0:20    Sequence

-0:20      Function Call: CC( (void)

-0:21  Function Definition: CD( (void)

+0:20      Function Call: CC( (global void)

+0:21  Function Definition: CD( (global void)

 0:21    Function Parameters: 

 0:21    Sequence

-0:21      Function Call: CA( (void)

-0:27  Function Definition: CBT( (void)

+0:21      Function Call: CA( (global void)

+0:27  Function Definition: CBT( (global void)

 0:27    Function Parameters: 

 0:27    Sequence

-0:27      Function Call: CCT( (void)

-0:27      Function Call: CCT( (void)

-0:27      Function Call: CCT( (void)

-0:28  Function Definition: CDT( (void)

+0:27      Function Call: CCT( (global void)

+0:27      Function Call: CCT( (global void)

+0:27      Function Call: CCT( (global void)

+0:28  Function Definition: CDT( (global void)

 0:28    Function Parameters: 

 0:28    Sequence

-0:28      Function Call: CAT( (void)

+0:28      Function Call: CAT( (global void)

 0:?   Linker Objects

 

diff --git a/Test/baseResults/sample.frag.out b/Test/baseResults/sample.frag.out
index 5f4ebdf..45d3e81 100644
--- a/Test/baseResults/sample.frag.out
+++ b/Test/baseResults/sample.frag.out
@@ -2,12 +2,12 @@
 

 Shader version: 110

 0:? Sequence

-0:38  Function Definition: main( (void)

+0:38  Function Definition: main( (global void)

 0:38    Function Parameters: 

 0:40    Sequence

-0:40      move second child to first child (4-component vector of float)

+0:40      move second child to first child (temp 4-component vector of float)

 0:40        'gl_FragColor' (fragColor 4-component vector of float)

-0:40        Construct vec4 (4-component vector of float)

+0:40        Construct vec4 (temp 4-component vector of float)

 0:40          'color' (smooth in 3-component vector of float)

 0:40          Constant:

 0:40            1.000000

@@ -20,12 +20,12 @@
 

 Shader version: 110

 0:? Sequence

-0:38  Function Definition: main( (void)

+0:38  Function Definition: main( (global void)

 0:38    Function Parameters: 

 0:40    Sequence

-0:40      move second child to first child (4-component vector of float)

+0:40      move second child to first child (temp 4-component vector of float)

 0:40        'gl_FragColor' (fragColor 4-component vector of float)

-0:40        Construct vec4 (4-component vector of float)

+0:40        Construct vec4 (temp 4-component vector of float)

 0:40          'color' (smooth in 3-component vector of float)

 0:40          Constant:

 0:40            1.000000

diff --git a/Test/baseResults/sample.vert.out b/Test/baseResults/sample.vert.out
index 463703b..9d4a1da 100644
--- a/Test/baseResults/sample.vert.out
+++ b/Test/baseResults/sample.vert.out
@@ -2,18 +2,18 @@
 

 Shader version: 110

 0:? Sequence

-0:38  Function Definition: main( (void)

+0:38  Function Definition: main( (global void)

 0:38    Function Parameters: 

 0:40    Sequence

-0:40      move second child to first child (3-component vector of float)

+0:40      move second child to first child (temp 3-component vector of float)

 0:40        'color' (smooth out 3-component vector of float)

 0:40        Constant:

 0:40          1.000000

 0:40          1.000000

 0:40          1.000000

-0:42      move second child to first child (4-component vector of float)

+0:42      move second child to first child (temp 4-component vector of float)

 0:42        'gl_Position' (gl_Position 4-component vector of float)

-0:42        matrix-times-vector (4-component vector of float)

+0:42        matrix-times-vector (temp 4-component vector of float)

 0:42          'gl_ModelViewProjectionMatrix' (uniform 4X4 matrix of float)

 0:42          'gl_Vertex' (in 4-component vector of float)

 0:?   Linker Objects

@@ -25,18 +25,18 @@
 

 Shader version: 110

 0:? Sequence

-0:38  Function Definition: main( (void)

+0:38  Function Definition: main( (global void)

 0:38    Function Parameters: 

 0:40    Sequence

-0:40      move second child to first child (3-component vector of float)

+0:40      move second child to first child (temp 3-component vector of float)

 0:40        'color' (smooth out 3-component vector of float)

 0:40        Constant:

 0:40          1.000000

 0:40          1.000000

 0:40          1.000000

-0:42      move second child to first child (4-component vector of float)

+0:42      move second child to first child (temp 4-component vector of float)

 0:42        'gl_Position' (gl_Position 4-component vector of float)

-0:42        matrix-times-vector (4-component vector of float)

+0:42        matrix-times-vector (temp 4-component vector of float)

 0:42          'gl_ModelViewProjectionMatrix' (uniform 4X4 matrix of float)

 0:42          'gl_Vertex' (in 4-component vector of float)

 0:?   Linker Objects

diff --git a/Test/baseResults/simpleFunctionCall.frag.out b/Test/baseResults/simpleFunctionCall.frag.out
index b479fea..04fb13e 100644
--- a/Test/baseResults/simpleFunctionCall.frag.out
+++ b/Test/baseResults/simpleFunctionCall.frag.out
@@ -3,17 +3,17 @@
 

 Shader version: 150

 0:? Sequence

-0:7  Function Definition: foo( (4-component vector of float)

+0:7  Function Definition: foo( (global 4-component vector of float)

 0:7    Function Parameters: 

 0:9    Sequence

 0:9      Branch: Return with expression

 0:9        'BaseColor' (smooth in 4-component vector of float)

-0:12  Function Definition: main( (void)

+0:12  Function Definition: main( (global void)

 0:12    Function Parameters: 

 0:14    Sequence

-0:14      move second child to first child (4-component vector of float)

+0:14      move second child to first child (temp 4-component vector of float)

 0:14        'gl_FragColor' (fragColor 4-component vector of float)

-0:14        Function Call: foo( (4-component vector of float)

+0:14        Function Call: foo( (global 4-component vector of float)

 0:?   Linker Objects

 0:?     'bigColor' (uniform 4-component vector of float)

 0:?     'BaseColor' (smooth in 4-component vector of float)

@@ -25,17 +25,17 @@
 

 Shader version: 150

 0:? Sequence

-0:7  Function Definition: foo( (4-component vector of float)

+0:7  Function Definition: foo( (global 4-component vector of float)

 0:7    Function Parameters: 

 0:9    Sequence

 0:9      Branch: Return with expression

 0:9        'BaseColor' (smooth in 4-component vector of float)

-0:12  Function Definition: main( (void)

+0:12  Function Definition: main( (global void)

 0:12    Function Parameters: 

 0:14    Sequence

-0:14      move second child to first child (4-component vector of float)

+0:14      move second child to first child (temp 4-component vector of float)

 0:14        'gl_FragColor' (fragColor 4-component vector of float)

-0:14        Function Call: foo( (4-component vector of float)

+0:14        Function Call: foo( (global 4-component vector of float)

 0:?   Linker Objects

 0:?     'bigColor' (uniform 4-component vector of float)

 0:?     'BaseColor' (smooth in 4-component vector of float)

diff --git a/Test/baseResults/specExamples.frag.out b/Test/baseResults/specExamples.frag.out
index 7da8523..7857d11 100644
--- a/Test/baseResults/specExamples.frag.out
+++ b/Test/baseResults/specExamples.frag.out
@@ -1,6 +1,6 @@
 specExamples.frag

 Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.

-ERROR: 0:6: '=' :  cannot convert from 'const uint' to 'int'

+ERROR: 0:6: '=' :  cannot convert from 'const uint' to 'global int'

 ERROR: 0:20: '' : numeric literal too big 

 ERROR: 0:21: '' : hexidecimal literal too big 

 ERROR: 0:37: 'view' : redefinition 

@@ -18,8 +18,8 @@
 ERROR: 0:118: 'redeclaration' : all redeclarations must use the same depth layout on gl_FragDepth

 ERROR: 0:121: 'redeclaration' : all redeclarations must use the same depth layout on gl_FragDepth

 ERROR: 0:150: 'constructor' : constructing from a non-dereferenced array 

-ERROR: 0:150: '=' :  cannot convert from 'const float' to '3-element array of 4-component vector of float'

-ERROR: 0:152: 'constructor' :  cannot convert parameter 1 from 'const 2-element array of 4-component vector of float' to '4-component vector of float'

+ERROR: 0:150: '=' :  cannot convert from 'const float' to 'temp 3-element array of 4-component vector of float'

+ERROR: 0:152: 'constructor' :  cannot convert parameter 1 from 'const 2-element array of 4-component vector of float' to 'temp 4-component vector of float'

 ERROR: 0:172: 'x' : undeclared identifier 

 ERROR: 0:172: '[]' : scalar integer expression required 

 ERROR: 0:175: 'x' : undeclared identifier 

@@ -52,71 +52,71 @@
 using depth_greater

 ERROR: node is still EOpNull!

 0:5  Sequence

-0:5    move second child to first child (int)

-0:5      'a' (int)

+0:5    move second child to first child (temp int)

+0:5      'a' (global int)

 0:5      Constant:

 0:5        -1 (const int)

 0:7  Sequence

-0:7    move second child to first child (uint)

-0:7      'c' (uint)

+0:7    move second child to first child (temp uint)

+0:7      'c' (global uint)

 0:7      Constant:

 0:7        4294967295 (const uint)

 0:8  Sequence

-0:8    move second child to first child (uint)

-0:8      'd' (uint)

+0:8    move second child to first child (temp uint)

+0:8      'd' (global uint)

 0:8      Constant:

 0:8        4294967295 (const uint)

 0:9  Sequence

-0:9    move second child to first child (int)

-0:9      'e' (int)

+0:9    move second child to first child (temp int)

+0:9      'e' (global int)

 0:9      Constant:

 0:9        -1 (const int)

 0:13  Sequence

-0:13    move second child to first child (uint)

-0:13      'f' (uint)

+0:13    move second child to first child (temp uint)

+0:13      'f' (global uint)

 0:13      Constant:

 0:13        4294967295 (const uint)

 0:17  Sequence

-0:17    move second child to first child (int)

-0:17      'g' (int)

+0:17    move second child to first child (temp int)

+0:17      'g' (global int)

 0:17      Constant:

 0:17        -1294967296 (const int)

 0:19  Sequence

-0:19    move second child to first child (int)

-0:19      'h' (int)

+0:19    move second child to first child (temp int)

+0:19      'h' (global int)

 0:19      Constant:

 0:19        -1610612736 (const int)

 0:20  Sequence

-0:20    move second child to first child (int)

-0:20      'i' (int)

+0:20    move second child to first child (temp int)

+0:20      'i' (global int)

 0:20      Constant:

 0:20        -1 (const int)

 0:21  Sequence

-0:21    move second child to first child (int)

-0:21      'j' (int)

+0:21    move second child to first child (temp int)

+0:21      'j' (global int)

 0:21      Constant:

 0:21        -1 (const int)

 0:22  Sequence

-0:22    move second child to first child (int)

-0:22      'k' (int)

+0:22    move second child to first child (temp int)

+0:22      'k' (global int)

 0:22      Constant:

 0:22        -2147483648 (const int)

 0:23  Sequence

-0:23    move second child to first child (int)

-0:23      'l' (int)

+0:23    move second child to first child (temp int)

+0:23      'l' (global int)

 0:23      Constant:

 0:23        -2147483648 (const int)

 0:25  Sequence

-0:25    move second child to first child (float)

-0:25      'fb' (float)

+0:25    move second child to first child (temp float)

+0:25      'fb' (global float)

 0:25      Constant:

 0:25        1.500000

 0:26  Sequence

-0:26    move second child to first child (double)

-0:26      'fd' (double)

+0:26    move second child to first child (temp double)

+0:26      'fd' (global double)

 0:26      Constant:

 0:26        2.000000

-0:127  Function Definition: foo(f1[5]; (5-element array of float)

+0:127  Function Definition: foo(f1[5]; (global 5-element array of float)

 0:127    Function Parameters: 

 0:127      '' (in 5-element array of float)

 0:129    Sequence

@@ -127,13 +127,13 @@
 0:129          5.000000

 0:129          5.200000

 0:129          1.100000

-0:137  Function Definition: main( (void)

+0:137  Function Definition: main( (global void)

 0:137    Function Parameters: 

 0:140    Sequence

 0:140      Sequence

 0:140        Sequence

-0:140          move second child to first child (5-element array of float)

-0:140            'a' (5-element array of float)

+0:140          move second child to first child (temp 5-element array of float)

+0:140            'a' (temp 5-element array of float)

 0:140            Constant:

 0:140              3.400000

 0:140              4.200000

@@ -142,8 +142,8 @@
 0:140              1.100000

 0:143      Sequence

 0:143        Sequence

-0:143          move second child to first child (5-element array of float)

-0:143            'a' (5-element array of float)

+0:143          move second child to first child (temp 5-element array of float)

+0:143            'a' (temp 5-element array of float)

 0:143            Constant:

 0:143              3.400000

 0:143              4.200000

@@ -152,8 +152,8 @@
 0:143              1.100000

 0:?       Sequence

 0:149        Sequence

-0:149          move second child to first child (2-element array of 4-component vector of float)

-0:149            'b' (2-element array of 4-component vector of float)

+0:149          move second child to first child (temp 2-element array of 4-component vector of float)

+0:149            'b' (temp 2-element array of 4-component vector of float)

 0:149            Constant:

 0:149              0.000000

 0:149              0.000000

@@ -166,18 +166,18 @@
 0:?       Sequence

 0:159        Sequence

 0:159          Sequence

-0:159            move second child to first child (5-element array of float)

-0:159              'b' (5-element array of float)

-0:159              'a' (5-element array of float)

+0:159            move second child to first child (temp 5-element array of float)

+0:159              'b' (temp 5-element array of float)

+0:159              'a' (temp 5-element array of float)

 0:162        Sequence

 0:162          Sequence

-0:162            move second child to first child (5-element array of float)

-0:162              'b' (5-element array of float)

-0:162              'a' (5-element array of float)

+0:162            move second child to first child (temp 5-element array of float)

+0:162              'b' (temp 5-element array of float)

+0:162              'a' (temp 5-element array of float)

 0:165        Sequence

 0:165          Sequence

-0:165            move second child to first child (5-element array of float)

-0:165              'b' (5-element array of float)

+0:165            move second child to first child (temp 5-element array of float)

+0:165              'b' (temp 5-element array of float)

 0:165              Constant:

 0:165                1.000000

 0:165                2.000000

@@ -196,15 +196,15 @@
 0:178      Constant:

 0:178        0.000000

 0:193      Sequence

-0:193        move second child to first child (structure{float a, int b})

-0:193          'e' (structure{float a, int b})

+0:193        move second child to first child (temp structure{temp float a, temp int b})

+0:193          'e' (temp structure{temp float a, temp int b})

 0:193          Constant:

 0:193            1.200000

 0:193            2 (const int)

 0:216      Sequence

 0:216        Sequence

-0:216          move second child to first child (5-element array of float)

-0:216            'a' (5-element array of float)

+0:216          move second child to first child (temp 5-element array of float)

+0:216            'a' (temp 5-element array of float)

 0:216            Constant:

 0:216              3.400000

 0:216              4.200000

@@ -212,8 +212,8 @@
 0:216              5.200000

 0:216              1.100000

 0:217        Sequence

-0:217          move second child to first child (5-element array of float)

-0:217            'b' (5-element array of float)

+0:217          move second child to first child (temp 5-element array of float)

+0:217            'b' (temp 5-element array of float)

 0:217            Constant:

 0:217              3.400000

 0:217              4.200000

@@ -221,55 +221,55 @@
 0:217              5.200000

 0:217              1.100000

 0:218        Sequence

-0:218          move second child to first child (5-element array of float)

-0:218            'c' (5-element array of float)

-0:218            'a' (5-element array of float)

+0:218          move second child to first child (temp 5-element array of float)

+0:218            'c' (temp 5-element array of float)

+0:218            'a' (temp 5-element array of float)

 0:219        Sequence

-0:219          move second child to first child (5-element array of float)

-0:219            'd' (5-element array of float)

-0:219            'b' (5-element array of float)

+0:219          move second child to first child (temp 5-element array of float)

+0:219            'd' (temp 5-element array of float)

+0:219            'b' (temp 5-element array of float)

 0:?       Sequence

 0:223        Sequence

-0:223          move second child to first child (float)

+0:223          move second child to first child (temp float)

 0:223            'ceiling' (const (read only) float)

-0:223            Convert int to float (float)

-0:223              add (int)

-0:223                'a' (int)

-0:223                'b' (int)

+0:223            Convert int to float (temp float)

+0:223              add (temp int)

+0:223                'a' (global int)

+0:223                'b' (global int)

 0:?   Linker Objects

-0:?     'a' (int)

-0:?     'b' (int)

-0:?     'c' (uint)

-0:?     'd' (uint)

-0:?     'e' (int)

-0:?     'f' (uint)

-0:?     'g' (int)

-0:?     'h' (int)

-0:?     'i' (int)

-0:?     'j' (int)

-0:?     'k' (int)

-0:?     'l' (int)

-0:?     'fa' (float)

-0:?     'fb' (float)

-0:?     'fc' (double)

-0:?     'fd' (double)

-0:?     'texcoord1' (2-component vector of float)

-0:?     'texcoord2' (2-component vector of float)

-0:?     'position' (3-component vector of float)

-0:?     'myRGBA' (4-component vector of float)

-0:?     'textureLookup' (2-component vector of int)

-0:?     'less' (3-component vector of bool)

-0:?     'mat2D' (2X2 matrix of float)

-0:?     'optMatrix' (3X3 matrix of float)

-0:?     'view' (4X4 matrix of float)

-0:?     'projection' (4X4 matrix of float)

-0:?     'm' (3X2 matrix of float)

-0:?     'highPrecisionMVP' (4X4 matrix of double)

-0:?     'dm' (2X4 matrix of double)

-0:?     'lightVar' (structure{float intensity, 3-component vector of float position})

-0:?     'frequencies' (3-element array of float)

+0:?     'a' (global int)

+0:?     'b' (global int)

+0:?     'c' (global uint)

+0:?     'd' (global uint)

+0:?     'e' (global int)

+0:?     'f' (global uint)

+0:?     'g' (global int)

+0:?     'h' (global int)

+0:?     'i' (global int)

+0:?     'j' (global int)

+0:?     'k' (global int)

+0:?     'l' (global int)

+0:?     'fa' (global float)

+0:?     'fb' (global float)

+0:?     'fc' (global double)

+0:?     'fd' (global double)

+0:?     'texcoord1' (global 2-component vector of float)

+0:?     'texcoord2' (global 2-component vector of float)

+0:?     'position' (global 3-component vector of float)

+0:?     'myRGBA' (global 4-component vector of float)

+0:?     'textureLookup' (global 2-component vector of int)

+0:?     'less' (global 3-component vector of bool)

+0:?     'mat2D' (global 2X2 matrix of float)

+0:?     'optMatrix' (global 3X3 matrix of float)

+0:?     'view' (global 4X4 matrix of float)

+0:?     'projection' (global 4X4 matrix of float)

+0:?     'm' (global 3X2 matrix of float)

+0:?     'highPrecisionMVP' (global 4X4 matrix of double)

+0:?     'dm' (global 2X4 matrix of double)

+0:?     'lightVar' (global structure{global float intensity, global 3-component vector of float position})

+0:?     'frequencies' (global 3-element array of float)

 0:?     'lightPosition' (uniform 4-element array of 4-component vector of float)

-0:?     'lights' (2-element array of structure{float intensity, 3-component vector of float position})

+0:?     'lights' (global 2-element array of structure{global float intensity, global 3-component vector of float position})

 0:?     'numLights' (const int)

 0:?       2 (const int)

 0:?     'normal' (smooth in 3-component vector of float)

@@ -306,71 +306,71 @@
 using depth_greater

 ERROR: node is still EOpNull!

 0:5  Sequence

-0:5    move second child to first child (int)

-0:5      'a' (int)

+0:5    move second child to first child (temp int)

+0:5      'a' (global int)

 0:5      Constant:

 0:5        -1 (const int)

 0:7  Sequence

-0:7    move second child to first child (uint)

-0:7      'c' (uint)

+0:7    move second child to first child (temp uint)

+0:7      'c' (global uint)

 0:7      Constant:

 0:7        4294967295 (const uint)

 0:8  Sequence

-0:8    move second child to first child (uint)

-0:8      'd' (uint)

+0:8    move second child to first child (temp uint)

+0:8      'd' (global uint)

 0:8      Constant:

 0:8        4294967295 (const uint)

 0:9  Sequence

-0:9    move second child to first child (int)

-0:9      'e' (int)

+0:9    move second child to first child (temp int)

+0:9      'e' (global int)

 0:9      Constant:

 0:9        -1 (const int)

 0:13  Sequence

-0:13    move second child to first child (uint)

-0:13      'f' (uint)

+0:13    move second child to first child (temp uint)

+0:13      'f' (global uint)

 0:13      Constant:

 0:13        4294967295 (const uint)

 0:17  Sequence

-0:17    move second child to first child (int)

-0:17      'g' (int)

+0:17    move second child to first child (temp int)

+0:17      'g' (global int)

 0:17      Constant:

 0:17        -1294967296 (const int)

 0:19  Sequence

-0:19    move second child to first child (int)

-0:19      'h' (int)

+0:19    move second child to first child (temp int)

+0:19      'h' (global int)

 0:19      Constant:

 0:19        -1610612736 (const int)

 0:20  Sequence

-0:20    move second child to first child (int)

-0:20      'i' (int)

+0:20    move second child to first child (temp int)

+0:20      'i' (global int)

 0:20      Constant:

 0:20        -1 (const int)

 0:21  Sequence

-0:21    move second child to first child (int)

-0:21      'j' (int)

+0:21    move second child to first child (temp int)

+0:21      'j' (global int)

 0:21      Constant:

 0:21        -1 (const int)

 0:22  Sequence

-0:22    move second child to first child (int)

-0:22      'k' (int)

+0:22    move second child to first child (temp int)

+0:22      'k' (global int)

 0:22      Constant:

 0:22        -2147483648 (const int)

 0:23  Sequence

-0:23    move second child to first child (int)

-0:23      'l' (int)

+0:23    move second child to first child (temp int)

+0:23      'l' (global int)

 0:23      Constant:

 0:23        -2147483648 (const int)

 0:25  Sequence

-0:25    move second child to first child (float)

-0:25      'fb' (float)

+0:25    move second child to first child (temp float)

+0:25      'fb' (global float)

 0:25      Constant:

 0:25        1.500000

 0:26  Sequence

-0:26    move second child to first child (double)

-0:26      'fd' (double)

+0:26    move second child to first child (temp double)

+0:26      'fd' (global double)

 0:26      Constant:

 0:26        2.000000

-0:127  Function Definition: foo(f1[5]; (5-element array of float)

+0:127  Function Definition: foo(f1[5]; (global 5-element array of float)

 0:127    Function Parameters: 

 0:127      '' (in 5-element array of float)

 0:129    Sequence

@@ -381,13 +381,13 @@
 0:129          5.000000

 0:129          5.200000

 0:129          1.100000

-0:137  Function Definition: main( (void)

+0:137  Function Definition: main( (global void)

 0:137    Function Parameters: 

 0:140    Sequence

 0:140      Sequence

 0:140        Sequence

-0:140          move second child to first child (5-element array of float)

-0:140            'a' (5-element array of float)

+0:140          move second child to first child (temp 5-element array of float)

+0:140            'a' (temp 5-element array of float)

 0:140            Constant:

 0:140              3.400000

 0:140              4.200000

@@ -396,8 +396,8 @@
 0:140              1.100000

 0:143      Sequence

 0:143        Sequence

-0:143          move second child to first child (5-element array of float)

-0:143            'a' (5-element array of float)

+0:143          move second child to first child (temp 5-element array of float)

+0:143            'a' (temp 5-element array of float)

 0:143            Constant:

 0:143              3.400000

 0:143              4.200000

@@ -406,8 +406,8 @@
 0:143              1.100000

 0:?       Sequence

 0:149        Sequence

-0:149          move second child to first child (2-element array of 4-component vector of float)

-0:149            'b' (2-element array of 4-component vector of float)

+0:149          move second child to first child (temp 2-element array of 4-component vector of float)

+0:149            'b' (temp 2-element array of 4-component vector of float)

 0:149            Constant:

 0:149              0.000000

 0:149              0.000000

@@ -420,18 +420,18 @@
 0:?       Sequence

 0:159        Sequence

 0:159          Sequence

-0:159            move second child to first child (5-element array of float)

-0:159              'b' (5-element array of float)

-0:159              'a' (5-element array of float)

+0:159            move second child to first child (temp 5-element array of float)

+0:159              'b' (temp 5-element array of float)

+0:159              'a' (temp 5-element array of float)

 0:162        Sequence

 0:162          Sequence

-0:162            move second child to first child (5-element array of float)

-0:162              'b' (5-element array of float)

-0:162              'a' (5-element array of float)

+0:162            move second child to first child (temp 5-element array of float)

+0:162              'b' (temp 5-element array of float)

+0:162              'a' (temp 5-element array of float)

 0:165        Sequence

 0:165          Sequence

-0:165            move second child to first child (5-element array of float)

-0:165              'b' (5-element array of float)

+0:165            move second child to first child (temp 5-element array of float)

+0:165              'b' (temp 5-element array of float)

 0:165              Constant:

 0:165                1.000000

 0:165                2.000000

@@ -450,15 +450,15 @@
 0:178      Constant:

 0:178        0.000000

 0:193      Sequence

-0:193        move second child to first child (structure{float a, int b})

-0:193          'e' (structure{float a, int b})

+0:193        move second child to first child (temp structure{temp float a, temp int b})

+0:193          'e' (temp structure{temp float a, temp int b})

 0:193          Constant:

 0:193            1.200000

 0:193            2 (const int)

 0:216      Sequence

 0:216        Sequence

-0:216          move second child to first child (5-element array of float)

-0:216            'a' (5-element array of float)

+0:216          move second child to first child (temp 5-element array of float)

+0:216            'a' (temp 5-element array of float)

 0:216            Constant:

 0:216              3.400000

 0:216              4.200000

@@ -466,8 +466,8 @@
 0:216              5.200000

 0:216              1.100000

 0:217        Sequence

-0:217          move second child to first child (5-element array of float)

-0:217            'b' (5-element array of float)

+0:217          move second child to first child (temp 5-element array of float)

+0:217            'b' (temp 5-element array of float)

 0:217            Constant:

 0:217              3.400000

 0:217              4.200000

@@ -475,55 +475,55 @@
 0:217              5.200000

 0:217              1.100000

 0:218        Sequence

-0:218          move second child to first child (5-element array of float)

-0:218            'c' (5-element array of float)

-0:218            'a' (5-element array of float)

+0:218          move second child to first child (temp 5-element array of float)

+0:218            'c' (temp 5-element array of float)

+0:218            'a' (temp 5-element array of float)

 0:219        Sequence

-0:219          move second child to first child (5-element array of float)

-0:219            'd' (5-element array of float)

-0:219            'b' (5-element array of float)

+0:219          move second child to first child (temp 5-element array of float)

+0:219            'd' (temp 5-element array of float)

+0:219            'b' (temp 5-element array of float)

 0:?       Sequence

 0:223        Sequence

-0:223          move second child to first child (float)

+0:223          move second child to first child (temp float)

 0:223            'ceiling' (const (read only) float)

-0:223            Convert int to float (float)

-0:223              add (int)

-0:223                'a' (int)

-0:223                'b' (int)

+0:223            Convert int to float (temp float)

+0:223              add (temp int)

+0:223                'a' (global int)

+0:223                'b' (global int)

 0:?   Linker Objects

-0:?     'a' (int)

-0:?     'b' (int)

-0:?     'c' (uint)

-0:?     'd' (uint)

-0:?     'e' (int)

-0:?     'f' (uint)

-0:?     'g' (int)

-0:?     'h' (int)

-0:?     'i' (int)

-0:?     'j' (int)

-0:?     'k' (int)

-0:?     'l' (int)

-0:?     'fa' (float)

-0:?     'fb' (float)

-0:?     'fc' (double)

-0:?     'fd' (double)

-0:?     'texcoord1' (2-component vector of float)

-0:?     'texcoord2' (2-component vector of float)

-0:?     'position' (3-component vector of float)

-0:?     'myRGBA' (4-component vector of float)

-0:?     'textureLookup' (2-component vector of int)

-0:?     'less' (3-component vector of bool)

-0:?     'mat2D' (2X2 matrix of float)

-0:?     'optMatrix' (3X3 matrix of float)

-0:?     'view' (4X4 matrix of float)

-0:?     'projection' (4X4 matrix of float)

-0:?     'm' (3X2 matrix of float)

-0:?     'highPrecisionMVP' (4X4 matrix of double)

-0:?     'dm' (2X4 matrix of double)

-0:?     'lightVar' (structure{float intensity, 3-component vector of float position})

-0:?     'frequencies' (3-element array of float)

+0:?     'a' (global int)

+0:?     'b' (global int)

+0:?     'c' (global uint)

+0:?     'd' (global uint)

+0:?     'e' (global int)

+0:?     'f' (global uint)

+0:?     'g' (global int)

+0:?     'h' (global int)

+0:?     'i' (global int)

+0:?     'j' (global int)

+0:?     'k' (global int)

+0:?     'l' (global int)

+0:?     'fa' (global float)

+0:?     'fb' (global float)

+0:?     'fc' (global double)

+0:?     'fd' (global double)

+0:?     'texcoord1' (global 2-component vector of float)

+0:?     'texcoord2' (global 2-component vector of float)

+0:?     'position' (global 3-component vector of float)

+0:?     'myRGBA' (global 4-component vector of float)

+0:?     'textureLookup' (global 2-component vector of int)

+0:?     'less' (global 3-component vector of bool)

+0:?     'mat2D' (global 2X2 matrix of float)

+0:?     'optMatrix' (global 3X3 matrix of float)

+0:?     'view' (global 4X4 matrix of float)

+0:?     'projection' (global 4X4 matrix of float)

+0:?     'm' (global 3X2 matrix of float)

+0:?     'highPrecisionMVP' (global 4X4 matrix of double)

+0:?     'dm' (global 2X4 matrix of double)

+0:?     'lightVar' (global structure{global float intensity, global 3-component vector of float position})

+0:?     'frequencies' (global 3-element array of float)

 0:?     'lightPosition' (uniform 4-element array of 4-component vector of float)

-0:?     'lights' (2-element array of structure{float intensity, 3-component vector of float position})

+0:?     'lights' (global 2-element array of structure{global float intensity, global 3-component vector of float position})

 0:?     'numLights' (const int)

 0:?       2 (const int)

 0:?     'normal' (smooth in 3-component vector of float)

diff --git a/Test/baseResults/specExamples.vert.out b/Test/baseResults/specExamples.vert.out
index 5e6439d..b33b92f 100644
--- a/Test/baseResults/specExamples.vert.out
+++ b/Test/baseResults/specExamples.vert.out
@@ -44,13 +44,13 @@
 Shader version: 430

 Requested GL_3DL_array_objects

 ERROR: node is still EOpNull!

-0:134  Function Definition: funcA(I21; (4-component vector of float)

+0:134  Function Definition: funcA(I21; (global 4-component vector of float)

 0:134    Function Parameters: 

 0:134      'a' (restrict in image2D)

-0:136  Function Definition: funcB(I21; (4-component vector of float)

+0:136  Function Definition: funcB(I21; (global 4-component vector of float)

 0:136    Function Parameters: 

 0:136      'a' (in image2D)

-0:140  Function Definition: func(f1;f1;f1;f1; (float)

+0:140  Function Definition: func(f1;f1;f1;f1; (global float)

 0:140    Function Parameters: 

 0:140      'e' (in float)

 0:140      'f' (in float)

@@ -58,14 +58,14 @@
 0:140      'h' (in float)

 0:142    Sequence

 0:142      Branch: Return with expression

-0:142        add (float)

-0:142          component-wise multiply (float)

+0:142        add (temp float)

+0:142          component-wise multiply (temp float)

 0:142            'e' (in float)

 0:142            'f' (in float)

-0:142          component-wise multiply (float)

+0:142          component-wise multiply (temp float)

 0:142            'g' (in float)

 0:142            'h' (in float)

-0:146  Function Definition: func2(f1;f1;f1;f1; (float)

+0:146  Function Definition: func2(f1;f1;f1;f1; (global float)

 0:146    Function Parameters: 

 0:146      'e' (in float)

 0:146      'f' (in float)

@@ -73,49 +73,49 @@
 0:146      'h' (in float)

 0:148    Sequence

 0:148      Sequence

-0:148        move second child to first child (float)

-0:148          'result' (float)

-0:148          add (float)

-0:148            component-wise multiply (float)

+0:148        move second child to first child (temp float)

+0:148          'result' (temp float)

+0:148          add (temp float)

+0:148            component-wise multiply (temp float)

 0:148              'e' (in float)

 0:148              'f' (in float)

-0:148            component-wise multiply (float)

+0:148            component-wise multiply (temp float)

 0:148              'g' (in float)

 0:148              'h' (in float)

 0:150      Branch: Return with expression

-0:150        'result' (float)

-0:153  Function Definition: func3(f1;f1;f1; (float)

+0:150        'result' (temp float)

+0:153  Function Definition: func3(f1;f1;f1; (global float)

 0:153    Function Parameters: 

 0:153      'i' (in float)

 0:153      'j' (in float)

 0:153      'k' (out float)

 0:155    Sequence

-0:155      move second child to first child (float)

+0:155      move second child to first child (temp float)

 0:155        'k' (out float)

-0:155        add (float)

-0:155          component-wise multiply (float)

+0:155        add (temp float)

+0:155          component-wise multiply (temp float)

 0:155            'i' (in float)

 0:155            'i' (in float)

 0:155          'j' (in float)

-0:158  Function Definition: main( (void)

+0:158  Function Definition: main( (global void)

 0:158    Function Parameters: 

 0:160    Sequence

 0:160      Sequence

-0:160        move second child to first child (3-component vector of float)

-0:160          'r' (3-component vector of float)

-0:160          Construct vec3 (3-component vector of float)

-0:160            component-wise multiply (4-component vector of float)

+0:160        move second child to first child (temp 3-component vector of float)

+0:160          'r' (temp 3-component vector of float)

+0:160          Construct vec3 (temp 3-component vector of float)

+0:160            component-wise multiply (temp 4-component vector of float)

 0:160              'a' (in 4-component vector of float)

 0:160              'b' (in 4-component vector of float)

 0:161      Sequence

-0:161        move second child to first child (3-component vector of float)

-0:161          's' (3-component vector of float)

-0:161          Construct vec3 (3-component vector of float)

-0:161            component-wise multiply (4-component vector of float)

+0:161        move second child to first child (temp 3-component vector of float)

+0:161          's' (temp 3-component vector of float)

+0:161          Construct vec3 (temp 3-component vector of float)

+0:161            component-wise multiply (temp 4-component vector of float)

 0:161              'c' (in 4-component vector of float)

 0:161              'd' (in 4-component vector of float)

-0:162      move second child to first child (3-component vector of float)

-0:162        vector swizzle (3-component vector of float)

+0:162      move second child to first child (temp 3-component vector of float)

+0:162        vector swizzle (temp 3-component vector of float)

 0:162          'v' (smooth out 4-component vector of float)

 0:162          Sequence

 0:162            Constant:

@@ -124,108 +124,108 @@
 0:162              1 (const int)

 0:162            Constant:

 0:162              2 (const int)

-0:162        add (3-component vector of float)

-0:162          'r' (3-component vector of float)

-0:162          's' (3-component vector of float)

-0:163      move second child to first child (float)

-0:163        direct index (float)

+0:162        add (temp 3-component vector of float)

+0:162          'r' (temp 3-component vector of float)

+0:162          's' (temp 3-component vector of float)

+0:163      move second child to first child (temp float)

+0:163        direct index (temp float)

 0:163          'v' (smooth out 4-component vector of float)

 0:163          Constant:

 0:163            3 (const int)

-0:163        add (float)

-0:163          component-wise multiply (float)

-0:163            direct index (float)

+0:163        add (temp float)

+0:163          component-wise multiply (temp float)

+0:163            direct index (temp float)

 0:163              'a' (in 4-component vector of float)

 0:163              Constant:

 0:163                3 (const int)

-0:163            direct index (float)

+0:163            direct index (temp float)

 0:163              'b' (in 4-component vector of float)

 0:163              Constant:

 0:163                3 (const int)

-0:163          component-wise multiply (float)

-0:163            direct index (float)

+0:163          component-wise multiply (temp float)

+0:163            direct index (temp float)

 0:163              'c' (in 4-component vector of float)

 0:163              Constant:

 0:163                3 (const int)

-0:163            direct index (float)

+0:163            direct index (temp float)

 0:163              'd' (in 4-component vector of float)

 0:163              Constant:

 0:163                3 (const int)

-0:164      move second child to first child (float)

-0:164        direct index (float)

+0:164      move second child to first child (temp float)

+0:164        direct index (temp float)

 0:164          'v' (smooth out 4-component vector of float)

 0:164          Constant:

 0:164            0 (const int)

-0:164        Function Call: func(f1;f1;f1;f1; (float)

-0:164          direct index (float)

+0:164        Function Call: func(f1;f1;f1;f1; (global float)

+0:164          direct index (temp float)

 0:164            'a' (in 4-component vector of float)

 0:164            Constant:

 0:164              0 (const int)

-0:164          direct index (float)

+0:164          direct index (temp float)

 0:164            'b' (in 4-component vector of float)

 0:164            Constant:

 0:164              0 (const int)

-0:164          direct index (float)

+0:164          direct index (temp float)

 0:164            'c' (in 4-component vector of float)

 0:164            Constant:

 0:164              0 (const int)

-0:164          direct index (float)

+0:164          direct index (temp float)

 0:164            'd' (in 4-component vector of float)

 0:164            Constant:

 0:164              0 (const int)

-0:166      move second child to first child (float)

-0:166        direct index (float)

+0:166      move second child to first child (temp float)

+0:166        direct index (temp float)

 0:166          'v' (smooth out 4-component vector of float)

 0:166          Constant:

 0:166            0 (const int)

-0:166        Function Call: func2(f1;f1;f1;f1; (float)

-0:166          direct index (float)

+0:166        Function Call: func2(f1;f1;f1;f1; (global float)

+0:166          direct index (temp float)

 0:166            'a' (in 4-component vector of float)

 0:166            Constant:

 0:166              0 (const int)

-0:166          direct index (float)

+0:166          direct index (temp float)

 0:166            'b' (in 4-component vector of float)

 0:166            Constant:

 0:166              0 (const int)

-0:166          direct index (float)

+0:166          direct index (temp float)

 0:166            'c' (in 4-component vector of float)

 0:166            Constant:

 0:166              0 (const int)

-0:166          direct index (float)

+0:166          direct index (temp float)

 0:166            'd' (in 4-component vector of float)

 0:166            Constant:

 0:166              0 (const int)

-0:167      Function Call: func3(f1;f1;f1; (float)

-0:167        component-wise multiply (float)

-0:167          direct index (float)

+0:167      Function Call: func3(f1;f1;f1; (global float)

+0:167        component-wise multiply (temp float)

+0:167          direct index (temp float)

 0:167            'a' (in 4-component vector of float)

 0:167            Constant:

 0:167              0 (const int)

-0:167          direct index (float)

+0:167          direct index (temp float)

 0:167            'b' (in 4-component vector of float)

 0:167            Constant:

 0:167              0 (const int)

-0:167        component-wise multiply (float)

-0:167          direct index (float)

+0:167        component-wise multiply (temp float)

+0:167          direct index (temp float)

 0:167            'c' (in 4-component vector of float)

 0:167            Constant:

 0:167              0 (const int)

-0:167          direct index (float)

+0:167          direct index (temp float)

 0:167            'd' (in 4-component vector of float)

 0:167            Constant:

 0:167              0 (const int)

-0:167        direct index (float)

+0:167        direct index (temp float)

 0:167          'v' (smooth out 4-component vector of float)

 0:167          Constant:

 0:167            0 (const int)

-0:169      Function Call: funcA(I21; (4-component vector of float)

+0:169      Function Call: funcA(I21; (global 4-component vector of float)

 0:169        'img1' (layout(rgba32f ) uniform image2D)

-0:170      Function Call: funcB(I21; (4-component vector of float)

+0:170      Function Call: funcB(I21; (global 4-component vector of float)

 0:170        'img2' (layout(rgba32f ) coherent uniform image2D)

 0:?       Sequence

 0:178        Sequence

-0:178          move second child to first child (structure{float intensity, 3-component vector of float position})

-0:178            'lightVar' (structure{float intensity, 3-component vector of float position})

+0:178          move second child to first child (temp structure{temp float intensity, temp 3-component vector of float position})

+0:178            'lightVar' (temp structure{temp float intensity, temp 3-component vector of float position})

 0:178            Constant:

 0:178              3.000000

 0:178              1.000000

@@ -233,32 +233,32 @@
 0:178              3.000000

 0:?       Sequence

 0:185        Sequence

-0:185          move second child to first child (5-element array of float)

-0:185            'a' (5-element array of float)

-0:185            Construct float (5-element array of float)

-0:185              'g' (float)

+0:185          move second child to first child (temp 5-element array of float)

+0:185            'a' (temp 5-element array of float)

+0:185            Construct float (temp 5-element array of float)

+0:185              'g' (temp float)

 0:185              Constant:

 0:185                1.000000

-0:185              'g' (float)

+0:185              'g' (temp float)

 0:185              Constant:

 0:185                2.300000

-0:185              'g' (float)

-0:188        move second child to first child (3-element array of float)

-0:188          'b' (3-element array of float)

-0:188          Construct float (3-element array of float)

-0:188            'g' (float)

-0:188            add (float)

-0:188              'g' (float)

+0:185              'g' (temp float)

+0:188        move second child to first child (temp 3-element array of float)

+0:188          'b' (temp 3-element array of float)

+0:188          Construct float (temp 3-element array of float)

+0:188            'g' (temp float)

+0:188            add (temp float)

+0:188              'g' (temp float)

 0:188              Constant:

 0:188                1.000000

-0:188            add (float)

-0:188              'g' (float)

+0:188            add (temp float)

+0:188              'g' (temp float)

 0:188              Constant:

 0:188                2.000000

 0:191      Sequence

 0:191        Sequence

-0:191          move second child to first child (2-element array of 4-component vector of float)

-0:191            'b' (2-element array of 4-component vector of float)

+0:191          move second child to first child (temp 2-element array of 4-component vector of float)

+0:191            'b' (temp 2-element array of 4-component vector of float)

 0:191            Constant:

 0:191              1.000000

 0:191              1.000000

@@ -280,7 +280,7 @@
 0:?     'transforms' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform 4X4 matrix of float ModelViewMatrix, layout(column_major shared ) uniform 4X4 matrix of float ModelViewProjectionMatrix, layout(column_major shared ) uniform implicitly-sized array of 4-component vector of float a, layout(column_major shared ) uniform float Deformation})

 0:?     'normal' (layout(location=3 ) in 4-component vector of float)

 0:?     'colors' (layout(location=6 ) in 3-element array of 4-component vector of float)

-0:?     's' (layout(location=3 ) structure{3-component vector of float a1, 2X2 matrix of float b, 2-element array of 4-component vector of float c})

+0:?     's' (layout(location=3 ) temp structure{global 3-component vector of float a1, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c})

 0:?     'var1' (smooth out 4-component vector of float)

 0:?     'anon@1' (out block{out 4-component vector of float var2, out 2-component vector of float var3, out 3-component vector of float var4})

 0:?     'var5' (smooth out 4-component vector of float)

@@ -321,13 +321,13 @@
 Shader version: 430

 Requested GL_3DL_array_objects

 ERROR: node is still EOpNull!

-0:134  Function Definition: funcA(I21; (4-component vector of float)

+0:134  Function Definition: funcA(I21; (global 4-component vector of float)

 0:134    Function Parameters: 

 0:134      'a' (restrict in image2D)

-0:136  Function Definition: funcB(I21; (4-component vector of float)

+0:136  Function Definition: funcB(I21; (global 4-component vector of float)

 0:136    Function Parameters: 

 0:136      'a' (in image2D)

-0:140  Function Definition: func(f1;f1;f1;f1; (float)

+0:140  Function Definition: func(f1;f1;f1;f1; (global float)

 0:140    Function Parameters: 

 0:140      'e' (in float)

 0:140      'f' (in float)

@@ -335,14 +335,14 @@
 0:140      'h' (in float)

 0:142    Sequence

 0:142      Branch: Return with expression

-0:142        add (float)

-0:142          component-wise multiply (float)

+0:142        add (temp float)

+0:142          component-wise multiply (temp float)

 0:142            'e' (in float)

 0:142            'f' (in float)

-0:142          component-wise multiply (float)

+0:142          component-wise multiply (temp float)

 0:142            'g' (in float)

 0:142            'h' (in float)

-0:146  Function Definition: func2(f1;f1;f1;f1; (float)

+0:146  Function Definition: func2(f1;f1;f1;f1; (global float)

 0:146    Function Parameters: 

 0:146      'e' (in float)

 0:146      'f' (in float)

@@ -350,49 +350,49 @@
 0:146      'h' (in float)

 0:148    Sequence

 0:148      Sequence

-0:148        move second child to first child (float)

-0:148          'result' (float)

-0:148          add (float)

-0:148            component-wise multiply (float)

+0:148        move second child to first child (temp float)

+0:148          'result' (temp float)

+0:148          add (temp float)

+0:148            component-wise multiply (temp float)

 0:148              'e' (in float)

 0:148              'f' (in float)

-0:148            component-wise multiply (float)

+0:148            component-wise multiply (temp float)

 0:148              'g' (in float)

 0:148              'h' (in float)

 0:150      Branch: Return with expression

-0:150        'result' (float)

-0:153  Function Definition: func3(f1;f1;f1; (float)

+0:150        'result' (temp float)

+0:153  Function Definition: func3(f1;f1;f1; (global float)

 0:153    Function Parameters: 

 0:153      'i' (in float)

 0:153      'j' (in float)

 0:153      'k' (out float)

 0:155    Sequence

-0:155      move second child to first child (float)

+0:155      move second child to first child (temp float)

 0:155        'k' (out float)

-0:155        add (float)

-0:155          component-wise multiply (float)

+0:155        add (temp float)

+0:155          component-wise multiply (temp float)

 0:155            'i' (in float)

 0:155            'i' (in float)

 0:155          'j' (in float)

-0:158  Function Definition: main( (void)

+0:158  Function Definition: main( (global void)

 0:158    Function Parameters: 

 0:160    Sequence

 0:160      Sequence

-0:160        move second child to first child (3-component vector of float)

-0:160          'r' (3-component vector of float)

-0:160          Construct vec3 (3-component vector of float)

-0:160            component-wise multiply (4-component vector of float)

+0:160        move second child to first child (temp 3-component vector of float)

+0:160          'r' (temp 3-component vector of float)

+0:160          Construct vec3 (temp 3-component vector of float)

+0:160            component-wise multiply (temp 4-component vector of float)

 0:160              'a' (in 4-component vector of float)

 0:160              'b' (in 4-component vector of float)

 0:161      Sequence

-0:161        move second child to first child (3-component vector of float)

-0:161          's' (3-component vector of float)

-0:161          Construct vec3 (3-component vector of float)

-0:161            component-wise multiply (4-component vector of float)

+0:161        move second child to first child (temp 3-component vector of float)

+0:161          's' (temp 3-component vector of float)

+0:161          Construct vec3 (temp 3-component vector of float)

+0:161            component-wise multiply (temp 4-component vector of float)

 0:161              'c' (in 4-component vector of float)

 0:161              'd' (in 4-component vector of float)

-0:162      move second child to first child (3-component vector of float)

-0:162        vector swizzle (3-component vector of float)

+0:162      move second child to first child (temp 3-component vector of float)

+0:162        vector swizzle (temp 3-component vector of float)

 0:162          'v' (smooth out 4-component vector of float)

 0:162          Sequence

 0:162            Constant:

@@ -401,108 +401,108 @@
 0:162              1 (const int)

 0:162            Constant:

 0:162              2 (const int)

-0:162        add (3-component vector of float)

-0:162          'r' (3-component vector of float)

-0:162          's' (3-component vector of float)

-0:163      move second child to first child (float)

-0:163        direct index (float)

+0:162        add (temp 3-component vector of float)

+0:162          'r' (temp 3-component vector of float)

+0:162          's' (temp 3-component vector of float)

+0:163      move second child to first child (temp float)

+0:163        direct index (temp float)

 0:163          'v' (smooth out 4-component vector of float)

 0:163          Constant:

 0:163            3 (const int)

-0:163        add (float)

-0:163          component-wise multiply (float)

-0:163            direct index (float)

+0:163        add (temp float)

+0:163          component-wise multiply (temp float)

+0:163            direct index (temp float)

 0:163              'a' (in 4-component vector of float)

 0:163              Constant:

 0:163                3 (const int)

-0:163            direct index (float)

+0:163            direct index (temp float)

 0:163              'b' (in 4-component vector of float)

 0:163              Constant:

 0:163                3 (const int)

-0:163          component-wise multiply (float)

-0:163            direct index (float)

+0:163          component-wise multiply (temp float)

+0:163            direct index (temp float)

 0:163              'c' (in 4-component vector of float)

 0:163              Constant:

 0:163                3 (const int)

-0:163            direct index (float)

+0:163            direct index (temp float)

 0:163              'd' (in 4-component vector of float)

 0:163              Constant:

 0:163                3 (const int)

-0:164      move second child to first child (float)

-0:164        direct index (float)

+0:164      move second child to first child (temp float)

+0:164        direct index (temp float)

 0:164          'v' (smooth out 4-component vector of float)

 0:164          Constant:

 0:164            0 (const int)

-0:164        Function Call: func(f1;f1;f1;f1; (float)

-0:164          direct index (float)

+0:164        Function Call: func(f1;f1;f1;f1; (global float)

+0:164          direct index (temp float)

 0:164            'a' (in 4-component vector of float)

 0:164            Constant:

 0:164              0 (const int)

-0:164          direct index (float)

+0:164          direct index (temp float)

 0:164            'b' (in 4-component vector of float)

 0:164            Constant:

 0:164              0 (const int)

-0:164          direct index (float)

+0:164          direct index (temp float)

 0:164            'c' (in 4-component vector of float)

 0:164            Constant:

 0:164              0 (const int)

-0:164          direct index (float)

+0:164          direct index (temp float)

 0:164            'd' (in 4-component vector of float)

 0:164            Constant:

 0:164              0 (const int)

-0:166      move second child to first child (float)

-0:166        direct index (float)

+0:166      move second child to first child (temp float)

+0:166        direct index (temp float)

 0:166          'v' (smooth out 4-component vector of float)

 0:166          Constant:

 0:166            0 (const int)

-0:166        Function Call: func2(f1;f1;f1;f1; (float)

-0:166          direct index (float)

+0:166        Function Call: func2(f1;f1;f1;f1; (global float)

+0:166          direct index (temp float)

 0:166            'a' (in 4-component vector of float)

 0:166            Constant:

 0:166              0 (const int)

-0:166          direct index (float)

+0:166          direct index (temp float)

 0:166            'b' (in 4-component vector of float)

 0:166            Constant:

 0:166              0 (const int)

-0:166          direct index (float)

+0:166          direct index (temp float)

 0:166            'c' (in 4-component vector of float)

 0:166            Constant:

 0:166              0 (const int)

-0:166          direct index (float)

+0:166          direct index (temp float)

 0:166            'd' (in 4-component vector of float)

 0:166            Constant:

 0:166              0 (const int)

-0:167      Function Call: func3(f1;f1;f1; (float)

-0:167        component-wise multiply (float)

-0:167          direct index (float)

+0:167      Function Call: func3(f1;f1;f1; (global float)

+0:167        component-wise multiply (temp float)

+0:167          direct index (temp float)

 0:167            'a' (in 4-component vector of float)

 0:167            Constant:

 0:167              0 (const int)

-0:167          direct index (float)

+0:167          direct index (temp float)

 0:167            'b' (in 4-component vector of float)

 0:167            Constant:

 0:167              0 (const int)

-0:167        component-wise multiply (float)

-0:167          direct index (float)

+0:167        component-wise multiply (temp float)

+0:167          direct index (temp float)

 0:167            'c' (in 4-component vector of float)

 0:167            Constant:

 0:167              0 (const int)

-0:167          direct index (float)

+0:167          direct index (temp float)

 0:167            'd' (in 4-component vector of float)

 0:167            Constant:

 0:167              0 (const int)

-0:167        direct index (float)

+0:167        direct index (temp float)

 0:167          'v' (smooth out 4-component vector of float)

 0:167          Constant:

 0:167            0 (const int)

-0:169      Function Call: funcA(I21; (4-component vector of float)

+0:169      Function Call: funcA(I21; (global 4-component vector of float)

 0:169        'img1' (layout(rgba32f ) uniform image2D)

-0:170      Function Call: funcB(I21; (4-component vector of float)

+0:170      Function Call: funcB(I21; (global 4-component vector of float)

 0:170        'img2' (layout(rgba32f ) coherent uniform image2D)

 0:?       Sequence

 0:178        Sequence

-0:178          move second child to first child (structure{float intensity, 3-component vector of float position})

-0:178            'lightVar' (structure{float intensity, 3-component vector of float position})

+0:178          move second child to first child (temp structure{temp float intensity, temp 3-component vector of float position})

+0:178            'lightVar' (temp structure{temp float intensity, temp 3-component vector of float position})

 0:178            Constant:

 0:178              3.000000

 0:178              1.000000

@@ -510,32 +510,32 @@
 0:178              3.000000

 0:?       Sequence

 0:185        Sequence

-0:185          move second child to first child (5-element array of float)

-0:185            'a' (5-element array of float)

-0:185            Construct float (5-element array of float)

-0:185              'g' (float)

+0:185          move second child to first child (temp 5-element array of float)

+0:185            'a' (temp 5-element array of float)

+0:185            Construct float (temp 5-element array of float)

+0:185              'g' (temp float)

 0:185              Constant:

 0:185                1.000000

-0:185              'g' (float)

+0:185              'g' (temp float)

 0:185              Constant:

 0:185                2.300000

-0:185              'g' (float)

-0:188        move second child to first child (3-element array of float)

-0:188          'b' (3-element array of float)

-0:188          Construct float (3-element array of float)

-0:188            'g' (float)

-0:188            add (float)

-0:188              'g' (float)

+0:185              'g' (temp float)

+0:188        move second child to first child (temp 3-element array of float)

+0:188          'b' (temp 3-element array of float)

+0:188          Construct float (temp 3-element array of float)

+0:188            'g' (temp float)

+0:188            add (temp float)

+0:188              'g' (temp float)

 0:188              Constant:

 0:188                1.000000

-0:188            add (float)

-0:188              'g' (float)

+0:188            add (temp float)

+0:188              'g' (temp float)

 0:188              Constant:

 0:188                2.000000

 0:191      Sequence

 0:191        Sequence

-0:191          move second child to first child (2-element array of 4-component vector of float)

-0:191            'b' (2-element array of 4-component vector of float)

+0:191          move second child to first child (temp 2-element array of 4-component vector of float)

+0:191            'b' (temp 2-element array of 4-component vector of float)

 0:191            Constant:

 0:191              1.000000

 0:191              1.000000

@@ -557,7 +557,7 @@
 0:?     'transforms' (layout(column_major shared ) uniform 4-element array of block{layout(column_major shared ) uniform 4X4 matrix of float ModelViewMatrix, layout(column_major shared ) uniform 4X4 matrix of float ModelViewProjectionMatrix, layout(column_major shared ) uniform 1-element array of 4-component vector of float a, layout(column_major shared ) uniform float Deformation})

 0:?     'normal' (layout(location=3 ) in 4-component vector of float)

 0:?     'colors' (layout(location=6 ) in 3-element array of 4-component vector of float)

-0:?     's' (layout(location=3 ) structure{3-component vector of float a1, 2X2 matrix of float b, 2-element array of 4-component vector of float c})

+0:?     's' (layout(location=3 ) temp structure{global 3-component vector of float a1, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c})

 0:?     'var1' (smooth out 4-component vector of float)

 0:?     'anon@1' (out block{out 4-component vector of float var2, out 2-component vector of float var3, out 3-component vector of float var4})

 0:?     'var5' (smooth out 4-component vector of float)

diff --git a/Test/baseResults/structAssignment.frag.out b/Test/baseResults/structAssignment.frag.out
index 5792b49..6c66d3c 100644
--- a/Test/baseResults/structAssignment.frag.out
+++ b/Test/baseResults/structAssignment.frag.out
@@ -3,15 +3,15 @@
 

 Shader version: 130

 0:? Sequence

-0:29  Function Definition: main( (void)

+0:29  Function Definition: main( (global void)

 0:29    Function Parameters: 

 0:?     Sequence

-0:33      Test condition and select (void)

+0:33      Test condition and select (temp void)

 0:33        Condition

-0:33        Compare Greater Than (bool)

-0:33          i: direct index for structure (int)

-0:33            s2_1: direct index for structure (structure{int i, float f, structure{int i, float f} s1_1})

-0:33              'foo3' (uniform structure{structure{int i, float f, structure{int i, float f} s1_1} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:33        Compare Greater Than (temp bool)

+0:33          i: direct index for structure (global int)

+0:33            s2_1: direct index for structure (global structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:33              'foo3' (uniform structure{global structure{global int i, global float f, global structure{global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:33              Constant:

 0:33                0 (const int)

 0:33            Constant:

@@ -19,35 +19,35 @@
 0:33          Constant:

 0:33            0 (const int)

 0:33        true case

-0:34        move second child to first child (structure{int i, float f, structure{int i, float f} s1_1})

-0:34          'locals2' (structure{int i, float f, structure{int i, float f} s1_1})

-0:34          s2_1: direct index for structure (structure{int i, float f, structure{int i, float f} s1_1})

-0:34            'foo3' (uniform structure{structure{int i, float f, structure{int i, float f} s1_1} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:34        move second child to first child (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:34          'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:34          s2_1: direct index for structure (global structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:34            'foo3' (uniform structure{global structure{global int i, global float f, global structure{global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:34            Constant:

 0:34              0 (const int)

 0:33        false case

-0:36        move second child to first child (structure{int i, float f, structure{int i, float f} s1_1})

-0:36          'locals2' (structure{int i, float f, structure{int i, float f} s1_1})

-0:36          'foo2' (uniform structure{int i, float f, structure{int i, float f} s1_1})

-0:38      move second child to first child (4-component vector of float)

+0:36        move second child to first child (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:36          'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:36          'foo2' (uniform structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:38      move second child to first child (temp 4-component vector of float)

 0:38        'gl_FragColor' (fragColor 4-component vector of float)

-0:38        vector-scale (4-component vector of float)

-0:38          f: direct index for structure (float)

-0:38            s1_1: direct index for structure (structure{int i, float f})

-0:38              'locals2' (structure{int i, float f, structure{int i, float f} s1_1})

+0:38        vector-scale (temp 4-component vector of float)

+0:38          f: direct index for structure (global float)

+0:38            s1_1: direct index for structure (global structure{global int i, global float f})

+0:38              'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

 0:38              Constant:

 0:38                2 (const int)

 0:38            Constant:

 0:38              1 (const int)

-0:38          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:38          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:38            'sampler' (uniform sampler2D)

 0:38            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

 0:?     'sampler' (uniform sampler2D)

 0:?     'coord' (smooth in 2-component vector of float)

-0:?     'foo' (uniform structure{int i, float f})

-0:?     'foo2' (uniform structure{int i, float f, structure{int i, float f} s1_1})

-0:?     'foo3' (uniform structure{structure{int i, float f, structure{int i, float f} s1_1} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:?     'foo' (uniform structure{global int i, global float f})

+0:?     'foo2' (uniform structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:?     'foo3' (uniform structure{global structure{global int i, global float f, global structure{global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 

 

 Linked fragment stage:

@@ -55,15 +55,15 @@
 

 Shader version: 130

 0:? Sequence

-0:29  Function Definition: main( (void)

+0:29  Function Definition: main( (global void)

 0:29    Function Parameters: 

 0:?     Sequence

-0:33      Test condition and select (void)

+0:33      Test condition and select (temp void)

 0:33        Condition

-0:33        Compare Greater Than (bool)

-0:33          i: direct index for structure (int)

-0:33            s2_1: direct index for structure (structure{int i, float f, structure{int i, float f} s1_1})

-0:33              'foo3' (uniform structure{structure{int i, float f, structure{int i, float f} s1_1} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:33        Compare Greater Than (temp bool)

+0:33          i: direct index for structure (global int)

+0:33            s2_1: direct index for structure (global structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:33              'foo3' (uniform structure{global structure{global int i, global float f, global structure{global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:33              Constant:

 0:33                0 (const int)

 0:33            Constant:

@@ -71,33 +71,33 @@
 0:33          Constant:

 0:33            0 (const int)

 0:33        true case

-0:34        move second child to first child (structure{int i, float f, structure{int i, float f} s1_1})

-0:34          'locals2' (structure{int i, float f, structure{int i, float f} s1_1})

-0:34          s2_1: direct index for structure (structure{int i, float f, structure{int i, float f} s1_1})

-0:34            'foo3' (uniform structure{structure{int i, float f, structure{int i, float f} s1_1} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:34        move second child to first child (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:34          'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:34          s2_1: direct index for structure (global structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:34            'foo3' (uniform structure{global structure{global int i, global float f, global structure{global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:34            Constant:

 0:34              0 (const int)

 0:33        false case

-0:36        move second child to first child (structure{int i, float f, structure{int i, float f} s1_1})

-0:36          'locals2' (structure{int i, float f, structure{int i, float f} s1_1})

-0:36          'foo2' (uniform structure{int i, float f, structure{int i, float f} s1_1})

-0:38      move second child to first child (4-component vector of float)

+0:36        move second child to first child (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:36          'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:36          'foo2' (uniform structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:38      move second child to first child (temp 4-component vector of float)

 0:38        'gl_FragColor' (fragColor 4-component vector of float)

-0:38        vector-scale (4-component vector of float)

-0:38          f: direct index for structure (float)

-0:38            s1_1: direct index for structure (structure{int i, float f})

-0:38              'locals2' (structure{int i, float f, structure{int i, float f} s1_1})

+0:38        vector-scale (temp 4-component vector of float)

+0:38          f: direct index for structure (global float)

+0:38            s1_1: direct index for structure (global structure{global int i, global float f})

+0:38              'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

 0:38              Constant:

 0:38                2 (const int)

 0:38            Constant:

 0:38              1 (const int)

-0:38          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:38          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:38            'sampler' (uniform sampler2D)

 0:38            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

 0:?     'sampler' (uniform sampler2D)

 0:?     'coord' (smooth in 2-component vector of float)

-0:?     'foo' (uniform structure{int i, float f})

-0:?     'foo2' (uniform structure{int i, float f, structure{int i, float f} s1_1})

-0:?     'foo3' (uniform structure{structure{int i, float f, structure{int i, float f} s1_1} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:?     'foo' (uniform structure{global int i, global float f})

+0:?     'foo2' (uniform structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:?     'foo3' (uniform structure{global structure{global int i, global float f, global structure{global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 

diff --git a/Test/baseResults/structDeref.frag.out b/Test/baseResults/structDeref.frag.out
index 4009ed9..2106659 100644
--- a/Test/baseResults/structDeref.frag.out
+++ b/Test/baseResults/structDeref.frag.out
@@ -3,16 +3,16 @@
 

 Shader version: 130

 0:? Sequence

-0:41  Function Definition: main( (void)

+0:41  Function Definition: main( (global void)

 0:41    Function Parameters: 

 0:?     Sequence

-0:51      Test condition and select (void)

+0:51      Test condition and select (temp void)

 0:51        Condition

-0:51        Compare Greater Than (bool)

-0:51          i: direct index for structure (int)

-0:51            direct index (structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

-0:51              s2_1: direct index for structure (12-element array of structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

-0:51                'foo3' (uniform structure{12-element array of structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1} s2_1, int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

+0:51        Compare Greater Than (temp bool)

+0:51          i: direct index for structure (global int)

+0:51            direct index (temp structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

+0:51              s2_1: direct index for structure (global 12-element array of structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

+0:51                'foo3' (uniform structure{global 12-element array of structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

 0:51                Constant:

 0:51                  0 (const int)

 0:51              Constant:

@@ -23,24 +23,24 @@
 0:51            0 (const int)

 0:51        true case

 0:52        Sequence

-0:52          move second child to first child (float)

-0:52            f: direct index for structure (float)

-0:52              'locals2' (structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

+0:52          move second child to first child (temp float)

+0:52            f: direct index for structure (global float)

+0:52              'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

 0:52              Constant:

 0:52                1 (const int)

 0:52            Constant:

 0:52              1.000000

-0:53          move second child to first child (structure{int i, float f, structure{int i} s0_1})

-0:53            s1_1: direct index for structure (structure{int i, float f, structure{int i} s0_1})

-0:53              'locals2' (structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

+0:53          move second child to first child (temp structure{global int i, global float f, global structure{global int i} s0_1})

+0:53            s1_1: direct index for structure (global structure{global int i, global float f, global structure{global int i} s0_1})

+0:53              'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

 0:53              Constant:

 0:53                2 (const int)

 0:53            Constant:

 0:53              0 (const int)

 0:53              1.000000

 0:53              0 (const int)

-0:54          move second child to first child (6-element array of float)

-0:54            'fArray' (6-element array of float)

+0:54          move second child to first child (temp 6-element array of float)

+0:54            'fArray' (temp 6-element array of float)

 0:54            Constant:

 0:54              0.000000

 0:54              0.000000

@@ -48,46 +48,46 @@
 0:54              0.000000

 0:54              0.000000

 0:54              0.000000

-0:55          move second child to first child (structure{int i, float f, structure{int i} s0_1})

-0:55            direct index (structure{int i, float f, structure{int i} s0_1})

-0:55              'locals1Array' (10-element array of structure{int i, float f, structure{int i} s0_1})

+0:55          move second child to first child (temp structure{global int i, global float f, global structure{global int i} s0_1})

+0:55            direct index (temp structure{global int i, global float f, global structure{global int i} s0_1})

+0:55              'locals1Array' (temp 10-element array of structure{global int i, global float f, global structure{global int i} s0_1})

 0:55              Constant:

 0:55                6 (const int)

-0:55            'foo1' (uniform structure{int i, float f, structure{int i} s0_1})

-0:56          move second child to first child (structure{int i})

-0:56            'locals0' (structure{int i})

+0:55            'foo1' (uniform structure{global int i, global float f, global structure{global int i} s0_1})

+0:56          move second child to first child (temp structure{global int i})

+0:56            'locals0' (temp structure{global int i})

 0:56            Constant:

 0:56              0 (const int)

-0:57          move second child to first child (structure{structure{int i} s0_0})

-0:57            'locals00' (structure{structure{int i} s0_0})

+0:57          move second child to first child (temp structure{global structure{global int i} s0_0})

+0:57            'locals00' (temp structure{global structure{global int i} s0_0})

 0:57            Constant:

 0:57              0 (const int)

 0:51        false case

 0:59        Sequence

-0:59          move second child to first child (float)

-0:59            f: direct index for structure (float)

-0:59              'locals2' (structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

+0:59          move second child to first child (temp float)

+0:59            f: direct index for structure (global float)

+0:59              'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

 0:59              Constant:

 0:59                1 (const int)

-0:59            direct index (float)

+0:59            direct index (temp float)

 0:59              'coord' (smooth in 2-component vector of float)

 0:59              Constant:

 0:59                0 (const int)

-0:60          move second child to first child (structure{int i, float f, structure{int i} s0_1})

-0:60            s1_1: direct index for structure (structure{int i, float f, structure{int i} s0_1})

-0:60              'locals2' (structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

+0:60          move second child to first child (temp structure{global int i, global float f, global structure{global int i} s0_1})

+0:60            s1_1: direct index for structure (global structure{global int i, global float f, global structure{global int i} s0_1})

+0:60              'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

 0:60              Constant:

 0:60                2 (const int)

-0:60            Construct structure (structure{int i, float f, structure{int i} s0_1})

+0:60            Construct structure (temp structure{global int i, global float f, global structure{global int i} s0_1})

 0:60              Constant:

 0:60                1 (const int)

-0:60              direct index (float)

+0:60              direct index (temp float)

 0:60                'coord' (smooth in 2-component vector of float)

 0:60                Constant:

 0:60                  1 (const int)

-0:60              'foo0' (uniform structure{int i})

-0:61          move second child to first child (6-element array of float)

-0:61            'fArray' (6-element array of float)

+0:60              'foo0' (uniform structure{global int i})

+0:61          move second child to first child (temp 6-element array of float)

+0:61            'fArray' (temp 6-element array of float)

 0:61            Constant:

 0:61              0.000000

 0:61              1.000000

@@ -95,80 +95,80 @@
 0:61              3.000000

 0:61              4.000000

 0:61              5.000000

-0:62          move second child to first child (structure{int i, float f, structure{int i} s0_1})

-0:62            direct index (structure{int i, float f, structure{int i} s0_1})

-0:62              'locals1Array' (10-element array of structure{int i, float f, structure{int i} s0_1})

+0:62          move second child to first child (temp structure{global int i, global float f, global structure{global int i} s0_1})

+0:62            direct index (temp structure{global int i, global float f, global structure{global int i} s0_1})

+0:62              'locals1Array' (temp 10-element array of structure{global int i, global float f, global structure{global int i} s0_1})

 0:62              Constant:

 0:62                6 (const int)

-0:62            s1_1: direct index for structure (structure{int i, float f, structure{int i} s0_1})

-0:62              'locals2' (structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

+0:62            s1_1: direct index for structure (global structure{global int i, global float f, global structure{global int i} s0_1})

+0:62              'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

 0:62              Constant:

 0:62                2 (const int)

-0:63          move second child to first child (structure{int i})

-0:63            'locals0' (structure{int i})

-0:63            s0_1: direct index for structure (structure{int i})

-0:63              'foo1' (uniform structure{int i, float f, structure{int i} s0_1})

+0:63          move second child to first child (temp structure{global int i})

+0:63            'locals0' (temp structure{global int i})

+0:63            s0_1: direct index for structure (global structure{global int i})

+0:63              'foo1' (uniform structure{global int i, global float f, global structure{global int i} s0_1})

 0:63              Constant:

 0:63                2 (const int)

-0:64          move second child to first child (structure{structure{int i} s0_0})

-0:64            'locals00' (structure{structure{int i} s0_0})

-0:64            'foo00' (uniform structure{structure{int i} s0_0})

-0:67      Test condition and select (void)

+0:64          move second child to first child (temp structure{global structure{global int i} s0_0})

+0:64            'locals00' (temp structure{global structure{global int i} s0_0})

+0:64            'foo00' (uniform structure{global structure{global int i} s0_0})

+0:67      Test condition and select (temp void)

 0:67        Condition

-0:67        Compare Greater Than (bool)

-0:67          i: direct index for structure (int)

-0:67            'locals0' (structure{int i})

+0:67        Compare Greater Than (temp bool)

+0:67          i: direct index for structure (global int)

+0:67            'locals0' (temp structure{global int i})

 0:67            Constant:

 0:67              0 (const int)

 0:67          Constant:

 0:67            5 (const int)

 0:67        true case

-0:68        move second child to first child (structure{int i})

-0:68          'locals0' (structure{int i})

-0:68          s0_0: direct index for structure (structure{int i})

-0:68            'locals00' (structure{structure{int i} s0_0})

+0:68        move second child to first child (temp structure{global int i})

+0:68          'locals0' (temp structure{global int i})

+0:68          s0_0: direct index for structure (global structure{global int i})

+0:68            'locals00' (temp structure{global structure{global int i} s0_0})

 0:68            Constant:

 0:68              0 (const int)

-0:70      move second child to first child (4-component vector of float)

+0:70      move second child to first child (temp 4-component vector of float)

 0:70        'gl_FragColor' (fragColor 4-component vector of float)

-0:70        vector-scale (4-component vector of float)

-0:70          add (float)

-0:70            add (float)

-0:70              add (float)

-0:70                Convert int to float (float)

-0:70                  i: direct index for structure (int)

-0:70                    'locals0' (structure{int i})

+0:70        vector-scale (temp 4-component vector of float)

+0:70          add (temp float)

+0:70            add (temp float)

+0:70              add (temp float)

+0:70                Convert int to float (temp float)

+0:70                  i: direct index for structure (global int)

+0:70                    'locals0' (temp structure{global int i})

 0:70                    Constant:

 0:70                      0 (const int)

-0:70                f: direct index for structure (float)

-0:70                  direct index (structure{int i, float f, structure{int i} s0_1})

-0:70                    'locals1Array' (10-element array of structure{int i, float f, structure{int i} s0_1})

+0:70                f: direct index for structure (global float)

+0:70                  direct index (temp structure{global int i, global float f, global structure{global int i} s0_1})

+0:70                    'locals1Array' (temp 10-element array of structure{global int i, global float f, global structure{global int i} s0_1})

 0:70                    Constant:

 0:70                      6 (const int)

 0:70                  Constant:

 0:70                    1 (const int)

-0:70              direct index (float)

-0:70                'fArray' (6-element array of float)

+0:70              direct index (temp float)

+0:70                'fArray' (temp 6-element array of float)

 0:70                Constant:

 0:70                  3 (const int)

-0:70            f: direct index for structure (float)

-0:70              s1_1: direct index for structure (structure{int i, float f, structure{int i} s0_1})

-0:70                'locals2' (structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

+0:70            f: direct index for structure (global float)

+0:70              s1_1: direct index for structure (global structure{global int i, global float f, global structure{global int i} s0_1})

+0:70                'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

 0:70                Constant:

 0:70                  2 (const int)

 0:70              Constant:

 0:70                1 (const int)

-0:70          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:70          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:70            'sampler' (uniform sampler2D)

 0:70            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

 0:?     'sampler' (uniform sampler2D)

 0:?     'coord' (smooth in 2-component vector of float)

-0:?     'foo0' (uniform structure{int i})

-0:?     'foo1' (uniform structure{int i, float f, structure{int i} s0_1})

-0:?     'foo2' (uniform structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

-0:?     'foo3' (uniform structure{12-element array of structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1} s2_1, int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

-0:?     'foo00' (uniform structure{structure{int i} s0_0})

+0:?     'foo0' (uniform structure{global int i})

+0:?     'foo1' (uniform structure{global int i, global float f, global structure{global int i} s0_1})

+0:?     'foo2' (uniform structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

+0:?     'foo3' (uniform structure{global 12-element array of structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

+0:?     'foo00' (uniform structure{global structure{global int i} s0_0})

 

 

 Linked fragment stage:

@@ -176,16 +176,16 @@
 

 Shader version: 130

 0:? Sequence

-0:41  Function Definition: main( (void)

+0:41  Function Definition: main( (global void)

 0:41    Function Parameters: 

 0:?     Sequence

-0:51      Test condition and select (void)

+0:51      Test condition and select (temp void)

 0:51        Condition

-0:51        Compare Greater Than (bool)

-0:51          i: direct index for structure (int)

-0:51            direct index (structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

-0:51              s2_1: direct index for structure (12-element array of structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

-0:51                'foo3' (uniform structure{12-element array of structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1} s2_1, int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

+0:51        Compare Greater Than (temp bool)

+0:51          i: direct index for structure (global int)

+0:51            direct index (temp structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

+0:51              s2_1: direct index for structure (global 12-element array of structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

+0:51                'foo3' (uniform structure{global 12-element array of structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

 0:51                Constant:

 0:51                  0 (const int)

 0:51              Constant:

@@ -196,24 +196,24 @@
 0:51            0 (const int)

 0:51        true case

 0:52        Sequence

-0:52          move second child to first child (float)

-0:52            f: direct index for structure (float)

-0:52              'locals2' (structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

+0:52          move second child to first child (temp float)

+0:52            f: direct index for structure (global float)

+0:52              'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

 0:52              Constant:

 0:52                1 (const int)

 0:52            Constant:

 0:52              1.000000

-0:53          move second child to first child (structure{int i, float f, structure{int i} s0_1})

-0:53            s1_1: direct index for structure (structure{int i, float f, structure{int i} s0_1})

-0:53              'locals2' (structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

+0:53          move second child to first child (temp structure{global int i, global float f, global structure{global int i} s0_1})

+0:53            s1_1: direct index for structure (global structure{global int i, global float f, global structure{global int i} s0_1})

+0:53              'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

 0:53              Constant:

 0:53                2 (const int)

 0:53            Constant:

 0:53              0 (const int)

 0:53              1.000000

 0:53              0 (const int)

-0:54          move second child to first child (6-element array of float)

-0:54            'fArray' (6-element array of float)

+0:54          move second child to first child (temp 6-element array of float)

+0:54            'fArray' (temp 6-element array of float)

 0:54            Constant:

 0:54              0.000000

 0:54              0.000000

@@ -221,46 +221,46 @@
 0:54              0.000000

 0:54              0.000000

 0:54              0.000000

-0:55          move second child to first child (structure{int i, float f, structure{int i} s0_1})

-0:55            direct index (structure{int i, float f, structure{int i} s0_1})

-0:55              'locals1Array' (10-element array of structure{int i, float f, structure{int i} s0_1})

+0:55          move second child to first child (temp structure{global int i, global float f, global structure{global int i} s0_1})

+0:55            direct index (temp structure{global int i, global float f, global structure{global int i} s0_1})

+0:55              'locals1Array' (temp 10-element array of structure{global int i, global float f, global structure{global int i} s0_1})

 0:55              Constant:

 0:55                6 (const int)

-0:55            'foo1' (uniform structure{int i, float f, structure{int i} s0_1})

-0:56          move second child to first child (structure{int i})

-0:56            'locals0' (structure{int i})

+0:55            'foo1' (uniform structure{global int i, global float f, global structure{global int i} s0_1})

+0:56          move second child to first child (temp structure{global int i})

+0:56            'locals0' (temp structure{global int i})

 0:56            Constant:

 0:56              0 (const int)

-0:57          move second child to first child (structure{structure{int i} s0_0})

-0:57            'locals00' (structure{structure{int i} s0_0})

+0:57          move second child to first child (temp structure{global structure{global int i} s0_0})

+0:57            'locals00' (temp structure{global structure{global int i} s0_0})

 0:57            Constant:

 0:57              0 (const int)

 0:51        false case

 0:59        Sequence

-0:59          move second child to first child (float)

-0:59            f: direct index for structure (float)

-0:59              'locals2' (structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

+0:59          move second child to first child (temp float)

+0:59            f: direct index for structure (global float)

+0:59              'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

 0:59              Constant:

 0:59                1 (const int)

-0:59            direct index (float)

+0:59            direct index (temp float)

 0:59              'coord' (smooth in 2-component vector of float)

 0:59              Constant:

 0:59                0 (const int)

-0:60          move second child to first child (structure{int i, float f, structure{int i} s0_1})

-0:60            s1_1: direct index for structure (structure{int i, float f, structure{int i} s0_1})

-0:60              'locals2' (structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

+0:60          move second child to first child (temp structure{global int i, global float f, global structure{global int i} s0_1})

+0:60            s1_1: direct index for structure (global structure{global int i, global float f, global structure{global int i} s0_1})

+0:60              'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

 0:60              Constant:

 0:60                2 (const int)

-0:60            Construct structure (structure{int i, float f, structure{int i} s0_1})

+0:60            Construct structure (temp structure{global int i, global float f, global structure{global int i} s0_1})

 0:60              Constant:

 0:60                1 (const int)

-0:60              direct index (float)

+0:60              direct index (temp float)

 0:60                'coord' (smooth in 2-component vector of float)

 0:60                Constant:

 0:60                  1 (const int)

-0:60              'foo0' (uniform structure{int i})

-0:61          move second child to first child (6-element array of float)

-0:61            'fArray' (6-element array of float)

+0:60              'foo0' (uniform structure{global int i})

+0:61          move second child to first child (temp 6-element array of float)

+0:61            'fArray' (temp 6-element array of float)

 0:61            Constant:

 0:61              0.000000

 0:61              1.000000

@@ -268,78 +268,78 @@
 0:61              3.000000

 0:61              4.000000

 0:61              5.000000

-0:62          move second child to first child (structure{int i, float f, structure{int i} s0_1})

-0:62            direct index (structure{int i, float f, structure{int i} s0_1})

-0:62              'locals1Array' (10-element array of structure{int i, float f, structure{int i} s0_1})

+0:62          move second child to first child (temp structure{global int i, global float f, global structure{global int i} s0_1})

+0:62            direct index (temp structure{global int i, global float f, global structure{global int i} s0_1})

+0:62              'locals1Array' (temp 10-element array of structure{global int i, global float f, global structure{global int i} s0_1})

 0:62              Constant:

 0:62                6 (const int)

-0:62            s1_1: direct index for structure (structure{int i, float f, structure{int i} s0_1})

-0:62              'locals2' (structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

+0:62            s1_1: direct index for structure (global structure{global int i, global float f, global structure{global int i} s0_1})

+0:62              'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

 0:62              Constant:

 0:62                2 (const int)

-0:63          move second child to first child (structure{int i})

-0:63            'locals0' (structure{int i})

-0:63            s0_1: direct index for structure (structure{int i})

-0:63              'foo1' (uniform structure{int i, float f, structure{int i} s0_1})

+0:63          move second child to first child (temp structure{global int i})

+0:63            'locals0' (temp structure{global int i})

+0:63            s0_1: direct index for structure (global structure{global int i})

+0:63              'foo1' (uniform structure{global int i, global float f, global structure{global int i} s0_1})

 0:63              Constant:

 0:63                2 (const int)

-0:64          move second child to first child (structure{structure{int i} s0_0})

-0:64            'locals00' (structure{structure{int i} s0_0})

-0:64            'foo00' (uniform structure{structure{int i} s0_0})

-0:67      Test condition and select (void)

+0:64          move second child to first child (temp structure{global structure{global int i} s0_0})

+0:64            'locals00' (temp structure{global structure{global int i} s0_0})

+0:64            'foo00' (uniform structure{global structure{global int i} s0_0})

+0:67      Test condition and select (temp void)

 0:67        Condition

-0:67        Compare Greater Than (bool)

-0:67          i: direct index for structure (int)

-0:67            'locals0' (structure{int i})

+0:67        Compare Greater Than (temp bool)

+0:67          i: direct index for structure (global int)

+0:67            'locals0' (temp structure{global int i})

 0:67            Constant:

 0:67              0 (const int)

 0:67          Constant:

 0:67            5 (const int)

 0:67        true case

-0:68        move second child to first child (structure{int i})

-0:68          'locals0' (structure{int i})

-0:68          s0_0: direct index for structure (structure{int i})

-0:68            'locals00' (structure{structure{int i} s0_0})

+0:68        move second child to first child (temp structure{global int i})

+0:68          'locals0' (temp structure{global int i})

+0:68          s0_0: direct index for structure (global structure{global int i})

+0:68            'locals00' (temp structure{global structure{global int i} s0_0})

 0:68            Constant:

 0:68              0 (const int)

-0:70      move second child to first child (4-component vector of float)

+0:70      move second child to first child (temp 4-component vector of float)

 0:70        'gl_FragColor' (fragColor 4-component vector of float)

-0:70        vector-scale (4-component vector of float)

-0:70          add (float)

-0:70            add (float)

-0:70              add (float)

-0:70                Convert int to float (float)

-0:70                  i: direct index for structure (int)

-0:70                    'locals0' (structure{int i})

+0:70        vector-scale (temp 4-component vector of float)

+0:70          add (temp float)

+0:70            add (temp float)

+0:70              add (temp float)

+0:70                Convert int to float (temp float)

+0:70                  i: direct index for structure (global int)

+0:70                    'locals0' (temp structure{global int i})

 0:70                    Constant:

 0:70                      0 (const int)

-0:70                f: direct index for structure (float)

-0:70                  direct index (structure{int i, float f, structure{int i} s0_1})

-0:70                    'locals1Array' (10-element array of structure{int i, float f, structure{int i} s0_1})

+0:70                f: direct index for structure (global float)

+0:70                  direct index (temp structure{global int i, global float f, global structure{global int i} s0_1})

+0:70                    'locals1Array' (temp 10-element array of structure{global int i, global float f, global structure{global int i} s0_1})

 0:70                    Constant:

 0:70                      6 (const int)

 0:70                  Constant:

 0:70                    1 (const int)

-0:70              direct index (float)

-0:70                'fArray' (6-element array of float)

+0:70              direct index (temp float)

+0:70                'fArray' (temp 6-element array of float)

 0:70                Constant:

 0:70                  3 (const int)

-0:70            f: direct index for structure (float)

-0:70              s1_1: direct index for structure (structure{int i, float f, structure{int i} s0_1})

-0:70                'locals2' (structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

+0:70            f: direct index for structure (global float)

+0:70              s1_1: direct index for structure (global structure{global int i, global float f, global structure{global int i} s0_1})

+0:70                'locals2' (temp structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

 0:70                Constant:

 0:70                  2 (const int)

 0:70              Constant:

 0:70                1 (const int)

-0:70          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:70          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:70            'sampler' (uniform sampler2D)

 0:70            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

 0:?     'sampler' (uniform sampler2D)

 0:?     'coord' (smooth in 2-component vector of float)

-0:?     'foo0' (uniform structure{int i})

-0:?     'foo1' (uniform structure{int i, float f, structure{int i} s0_1})

-0:?     'foo2' (uniform structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

-0:?     'foo3' (uniform structure{12-element array of structure{int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1} s2_1, int i, float f, structure{int i, float f, structure{int i} s0_1} s1_1})

-0:?     'foo00' (uniform structure{structure{int i} s0_0})

+0:?     'foo0' (uniform structure{global int i})

+0:?     'foo1' (uniform structure{global int i, global float f, global structure{global int i} s0_1})

+0:?     'foo2' (uniform structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

+0:?     'foo3' (uniform structure{global 12-element array of structure{global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f, global structure{global int i} s0_1} s1_1})

+0:?     'foo00' (uniform structure{global structure{global int i} s0_0})

 

diff --git a/Test/baseResults/structure.frag.out b/Test/baseResults/structure.frag.out
index 1b3ec6e..1f18213 100644
--- a/Test/baseResults/structure.frag.out
+++ b/Test/baseResults/structure.frag.out
@@ -3,21 +3,21 @@
 

 Shader version: 130

 0:? Sequence

-0:20  Function Definition: main( (void)

+0:20  Function Definition: main( (global void)

 0:20    Function Parameters: 

 0:22    Sequence

 0:22      Sequence

-0:22        move second child to first child (float)

-0:22          'scale' (float)

+0:22        move second child to first child (temp float)

+0:22          'scale' (temp float)

 0:22          Constant:

 0:22            0.000000

-0:24      Test condition and select (void)

+0:24      Test condition and select (temp void)

 0:24        Condition

-0:24        Compare Greater Than (bool)

-0:24          direct index (int)

-0:24            i: direct index for structure (5-element array of int)

-0:24              direct index (structure{5-element array of int i, float f, 7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color} s1_1})

-0:24                'foo2' (uniform 5-element array of structure{5-element array of int i, float f, 7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color} s1_1})

+0:24        Compare Greater Than (temp bool)

+0:24          direct index (temp int)

+0:24            i: direct index for structure (global 5-element array of int)

+0:24              direct index (temp structure{global 5-element array of int i, global float f, global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1})

+0:24                'foo2' (uniform 5-element array of structure{global 5-element array of int i, global float f, global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1})

 0:24                Constant:

 0:24                  3 (const int)

 0:24              Constant:

@@ -27,15 +27,15 @@
 0:24          Constant:

 0:24            0 (const int)

 0:24        true case

-0:25        move second child to first child (float)

-0:25          'scale' (float)

-0:25          direct index (float)

-0:25            direct index (4-component vector of float)

-0:25              color: direct index for structure (5-element array of 4-component vector of float)

-0:25                direct index (structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color})

-0:25                  s1_1: direct index for structure (7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color})

-0:25                    direct index (structure{5-element array of int i, float f, 7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color} s1_1})

-0:25                      'foo2' (uniform 5-element array of structure{5-element array of int i, float f, 7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color} s1_1})

+0:25        move second child to first child (temp float)

+0:25          'scale' (temp float)

+0:25          direct index (temp float)

+0:25            direct index (temp 4-component vector of float)

+0:25              color: direct index for structure (global 5-element array of 4-component vector of float)

+0:25                direct index (temp structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color})

+0:25                  s1_1: direct index for structure (global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color})

+0:25                    direct index (temp structure{global 5-element array of int i, global float f, global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1})

+0:25                      'foo2' (uniform 5-element array of structure{global 5-element array of int i, global float f, global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1})

 0:25                      Constant:

 0:25                        3 (const int)

 0:25                    Constant:

@@ -49,14 +49,14 @@
 0:25            Constant:

 0:25              0 (const int)

 0:24        false case

-0:27        move second child to first child (float)

-0:27          'scale' (float)

-0:27          direct index (float)

-0:27            f: direct index for structure (4-element array of float)

-0:27              direct index (structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color})

-0:27                s1_1: direct index for structure (7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color})

-0:27                  direct index (structure{5-element array of int i, float f, 7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color} s1_1})

-0:27                    'foo2' (uniform 5-element array of structure{5-element array of int i, float f, 7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color} s1_1})

+0:27        move second child to first child (temp float)

+0:27          'scale' (temp float)

+0:27          direct index (temp float)

+0:27            f: direct index for structure (global 4-element array of float)

+0:27              direct index (temp structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color})

+0:27                s1_1: direct index for structure (global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color})

+0:27                  direct index (temp structure{global 5-element array of int i, global float f, global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1})

+0:27                    'foo2' (uniform 5-element array of structure{global 5-element array of int i, global float f, global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1})

 0:27                    Constant:

 0:27                      3 (const int)

 0:27                  Constant:

@@ -67,18 +67,18 @@
 0:27                1 (const int)

 0:27            Constant:

 0:27              3 (const int)

-0:29      move second child to first child (4-component vector of float)

+0:29      move second child to first child (temp 4-component vector of float)

 0:29        'gl_FragColor' (fragColor 4-component vector of float)

-0:29        vector-scale (4-component vector of float)

-0:29          'scale' (float)

-0:29          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:29        vector-scale (temp 4-component vector of float)

+0:29          'scale' (temp float)

+0:29          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:29            'sampler' (uniform sampler2D)

 0:29            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

 0:?     'sampler' (uniform sampler2D)

 0:?     'coord' (smooth in 2-component vector of float)

-0:?     'foo' (uniform structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color})

-0:?     'foo2' (uniform 5-element array of structure{5-element array of int i, float f, 7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color} s1_1})

+0:?     'foo' (uniform structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color})

+0:?     'foo2' (uniform 5-element array of structure{global 5-element array of int i, global float f, global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1})

 

 

 Linked fragment stage:

@@ -86,21 +86,21 @@
 

 Shader version: 130

 0:? Sequence

-0:20  Function Definition: main( (void)

+0:20  Function Definition: main( (global void)

 0:20    Function Parameters: 

 0:22    Sequence

 0:22      Sequence

-0:22        move second child to first child (float)

-0:22          'scale' (float)

+0:22        move second child to first child (temp float)

+0:22          'scale' (temp float)

 0:22          Constant:

 0:22            0.000000

-0:24      Test condition and select (void)

+0:24      Test condition and select (temp void)

 0:24        Condition

-0:24        Compare Greater Than (bool)

-0:24          direct index (int)

-0:24            i: direct index for structure (5-element array of int)

-0:24              direct index (structure{5-element array of int i, float f, 7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color} s1_1})

-0:24                'foo2' (uniform 5-element array of structure{5-element array of int i, float f, 7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color} s1_1})

+0:24        Compare Greater Than (temp bool)

+0:24          direct index (temp int)

+0:24            i: direct index for structure (global 5-element array of int)

+0:24              direct index (temp structure{global 5-element array of int i, global float f, global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1})

+0:24                'foo2' (uniform 5-element array of structure{global 5-element array of int i, global float f, global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1})

 0:24                Constant:

 0:24                  3 (const int)

 0:24              Constant:

@@ -110,15 +110,15 @@
 0:24          Constant:

 0:24            0 (const int)

 0:24        true case

-0:25        move second child to first child (float)

-0:25          'scale' (float)

-0:25          direct index (float)

-0:25            direct index (4-component vector of float)

-0:25              color: direct index for structure (5-element array of 4-component vector of float)

-0:25                direct index (structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color})

-0:25                  s1_1: direct index for structure (7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color})

-0:25                    direct index (structure{5-element array of int i, float f, 7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color} s1_1})

-0:25                      'foo2' (uniform 5-element array of structure{5-element array of int i, float f, 7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color} s1_1})

+0:25        move second child to first child (temp float)

+0:25          'scale' (temp float)

+0:25          direct index (temp float)

+0:25            direct index (temp 4-component vector of float)

+0:25              color: direct index for structure (global 5-element array of 4-component vector of float)

+0:25                direct index (temp structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color})

+0:25                  s1_1: direct index for structure (global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color})

+0:25                    direct index (temp structure{global 5-element array of int i, global float f, global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1})

+0:25                      'foo2' (uniform 5-element array of structure{global 5-element array of int i, global float f, global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1})

 0:25                      Constant:

 0:25                        3 (const int)

 0:25                    Constant:

@@ -132,14 +132,14 @@
 0:25            Constant:

 0:25              0 (const int)

 0:24        false case

-0:27        move second child to first child (float)

-0:27          'scale' (float)

-0:27          direct index (float)

-0:27            f: direct index for structure (4-element array of float)

-0:27              direct index (structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color})

-0:27                s1_1: direct index for structure (7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color})

-0:27                  direct index (structure{5-element array of int i, float f, 7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color} s1_1})

-0:27                    'foo2' (uniform 5-element array of structure{5-element array of int i, float f, 7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color} s1_1})

+0:27        move second child to first child (temp float)

+0:27          'scale' (temp float)

+0:27          direct index (temp float)

+0:27            f: direct index for structure (global 4-element array of float)

+0:27              direct index (temp structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color})

+0:27                s1_1: direct index for structure (global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color})

+0:27                  direct index (temp structure{global 5-element array of int i, global float f, global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1})

+0:27                    'foo2' (uniform 5-element array of structure{global 5-element array of int i, global float f, global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1})

 0:27                    Constant:

 0:27                      3 (const int)

 0:27                  Constant:

@@ -150,16 +150,16 @@
 0:27                1 (const int)

 0:27            Constant:

 0:27              3 (const int)

-0:29      move second child to first child (4-component vector of float)

+0:29      move second child to first child (temp 4-component vector of float)

 0:29        'gl_FragColor' (fragColor 4-component vector of float)

-0:29        vector-scale (4-component vector of float)

-0:29          'scale' (float)

-0:29          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:29        vector-scale (temp 4-component vector of float)

+0:29          'scale' (temp float)

+0:29          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:29            'sampler' (uniform sampler2D)

 0:29            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

 0:?     'sampler' (uniform sampler2D)

 0:?     'coord' (smooth in 2-component vector of float)

-0:?     'foo' (uniform structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color})

-0:?     'foo2' (uniform 5-element array of structure{5-element array of int i, float f, 7-element array of structure{int i, 4-element array of float f, 5-element array of 4-component vector of float color} s1_1})

+0:?     'foo' (uniform structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color})

+0:?     'foo2' (uniform 5-element array of structure{global 5-element array of int i, global float f, global 7-element array of structure{global int i, global 4-element array of float f, global 5-element array of 4-component vector of float color} s1_1})

 

diff --git a/Test/baseResults/switch.frag.out b/Test/baseResults/switch.frag.out
index 1a22976..0ca1c53 100644
--- a/Test/baseResults/switch.frag.out
+++ b/Test/baseResults/switch.frag.out
@@ -23,11 +23,11 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:6  Function Definition: main( (void)

+0:6  Function Definition: main( (global void)

 0:6    Function Parameters: 

 0:?     Sequence

-0:11      'f' (highp float)

-0:14      'a' (2-element array of mediump int)

+0:11      'f' (temp highp float)

+0:14      'a' (temp 2-element array of mediump int)

 0:17      'c' (uniform mediump int)

 0:21      switch

 0:21      condition

@@ -43,17 +43,17 @@
 0:26      body

 0:26        Sequence

 0:28          Sequence

-0:28            move second child to first child (highp float)

-0:28              'f' (highp float)

-0:28              sine (highp float)

+0:28            move second child to first child (temp highp float)

+0:28              'f' (temp highp float)

+0:28              sine (global highp float)

 0:28                'x' (smooth in highp float)

 0:29          case:  with expression

 0:29            Constant:

 0:29              2 (const int)

 0:?           Sequence

-0:30            move second child to first child (highp float)

-0:30              'f' (highp float)

-0:30              cosine (highp float)

+0:30            move second child to first child (temp highp float)

+0:30              'f' (temp highp float)

+0:30              cosine (global highp float)

 0:30                'x' (smooth in highp float)

 0:31            Branch: Break

 0:34      switch

@@ -68,25 +68,25 @@
 0:37            Constant:

 0:37              1 (const int)

 0:?           Sequence

-0:38            move second child to first child (highp float)

-0:38              'f' (highp float)

-0:38              sine (highp float)

+0:38            move second child to first child (temp highp float)

+0:38              'f' (temp highp float)

+0:38              sine (global highp float)

 0:38                'x' (smooth in highp float)

 0:39            Branch: Break

 0:40          case:  with expression

 0:40            Constant:

 0:40              2 (const int)

 0:?           Sequence

-0:41            move second child to first child (highp float)

-0:41              'f' (highp float)

-0:41              cosine (highp float)

+0:41            move second child to first child (temp highp float)

+0:41              'f' (temp highp float)

+0:41              cosine (global highp float)

 0:41                'x' (smooth in highp float)

 0:42            Branch: Break

 0:43          default: 

 0:?           Sequence

-0:44            move second child to first child (highp float)

-0:44              'f' (highp float)

-0:44              tangent (highp float)

+0:44            move second child to first child (temp highp float)

+0:44              'f' (temp highp float)

+0:44              tangent (global highp float)

 0:44                'x' (smooth in highp float)

 0:47      switch

 0:47      condition

@@ -97,9 +97,9 @@
 0:48            Constant:

 0:48              1 (const int)

 0:?           Sequence

-0:49            move second child to first child (highp float)

-0:49              'f' (highp float)

-0:49              sine (highp float)

+0:49            move second child to first child (temp highp float)

+0:49              'f' (temp highp float)

+0:49              sine (global highp float)

 0:49                'x' (smooth in highp float)

 0:50            Branch: Break

 0:51          case:  with expression

@@ -115,10 +115,10 @@
 0:53                  Constant:

 0:53                    1 (const int)

 0:?                 Sequence

-0:54                  move second child to first child (highp float)

-0:54                    'f' (highp float)

-0:54                    component-wise multiply (highp float)

-0:54                      component-wise multiply (highp float)

+0:54                  move second child to first child (temp highp float)

+0:54                    'f' (temp highp float)

+0:54                    component-wise multiply (temp highp float)

+0:54                      component-wise multiply (temp highp float)

 0:54                        'x' (smooth in highp float)

 0:54                        'x' (smooth in highp float)

 0:54                      'x' (smooth in highp float)

@@ -127,18 +127,18 @@
 0:56                  Constant:

 0:56                    2 (const int)

 0:?                 Sequence

-0:57                  move second child to first child (highp float)

-0:57                    'f' (highp float)

-0:57                    component-wise multiply (highp float)

+0:57                  move second child to first child (temp highp float)

+0:57                    'f' (temp highp float)

+0:57                    component-wise multiply (temp highp float)

 0:57                      'x' (smooth in highp float)

 0:57                      'x' (smooth in highp float)

 0:58                  Branch: Break

 0:60            Branch: Break

 0:61          default: 

 0:?           Sequence

-0:62            move second child to first child (highp float)

-0:62              'f' (highp float)

-0:62              tangent (highp float)

+0:62            move second child to first child (temp highp float)

+0:62              'f' (temp highp float)

+0:62              tangent (global highp float)

 0:62                'x' (smooth in highp float)

 0:63          case:  with expression

 0:63            Constant:

@@ -163,9 +163,9 @@
 0:72            Constant:

 0:72              1 (const int)

 0:?           Sequence

-0:73            move second child to first child (highp float)

-0:73              'f' (highp float)

-0:73              sine (highp float)

+0:73            move second child to first child (temp highp float)

+0:73              'f' (temp highp float)

+0:73              sine (global highp float)

 0:73                'x' (smooth in highp float)

 0:74            Branch: Break

 0:75          case:  with expression

@@ -181,10 +181,10 @@
 0:77                  Constant:

 0:77                    1 (const int)

 0:?                 Sequence

-0:78                  move second child to first child (highp float)

-0:78                    'f' (highp float)

-0:78                    component-wise multiply (highp float)

-0:78                      component-wise multiply (highp float)

+0:78                  move second child to first child (temp highp float)

+0:78                    'f' (temp highp float)

+0:78                    component-wise multiply (temp highp float)

+0:78                      component-wise multiply (temp highp float)

 0:78                        'x' (smooth in highp float)

 0:78                        'x' (smooth in highp float)

 0:78                      'x' (smooth in highp float)

@@ -193,18 +193,18 @@
 0:80                  Constant:

 0:80                    2 (const int)

 0:?                 Sequence

-0:81                  move second child to first child (highp float)

-0:81                    'f' (highp float)

-0:81                    component-wise multiply (highp float)

+0:81                  move second child to first child (temp highp float)

+0:81                    'f' (temp highp float)

+0:81                    component-wise multiply (temp highp float)

 0:81                      'x' (smooth in highp float)

 0:81                      'x' (smooth in highp float)

 0:82                  Branch: Break

 0:84            Branch: Break

 0:85          default: 

 0:?           Sequence

-0:86            move second child to first child (highp float)

-0:86              'f' (highp float)

-0:86              tangent (highp float)

+0:86            move second child to first child (temp highp float)

+0:86              'f' (temp highp float)

+0:86              tangent (global highp float)

 0:86                'x' (smooth in highp float)

 0:89      Branch: Break

 0:91      switch

@@ -216,9 +216,9 @@
 0:92            Constant:

 0:92              1 (const int)

 0:?           Sequence

-0:93            move second child to first child (highp float)

-0:93              'f' (highp float)

-0:93              sine (highp float)

+0:93            move second child to first child (temp highp float)

+0:93              'f' (temp highp float)

+0:93              sine (global highp float)

 0:93                'x' (smooth in highp float)

 0:94            Branch: Break

 0:95          case:  with expression

@@ -236,28 +236,28 @@
 0:?                 Sequence

 0:?                   Sequence

 0:100                    Branch: Break

-0:102                  move second child to first child (highp float)

-0:102                    'f' (highp float)

-0:102                    component-wise multiply (highp float)

-0:102                      component-wise multiply (highp float)

+0:102                  move second child to first child (temp highp float)

+0:102                    'f' (temp highp float)

+0:102                    component-wise multiply (temp highp float)

+0:102                      component-wise multiply (temp highp float)

 0:102                        'x' (smooth in highp float)

 0:102                        'x' (smooth in highp float)

 0:102                      'x' (smooth in highp float)

-0:103                  Test condition and select (void)

+0:103                  Test condition and select (temp void)

 0:103                    Condition

-0:103                    Compare Less Than (bool)

+0:103                    Compare Less Than (temp bool)

 0:103                      'c' (uniform mediump int)

 0:103                      'd' (uniform mediump int)

 0:103                    true case

 0:?                     Sequence

-0:105                      move second child to first child (highp float)

-0:105                        'f' (highp float)

-0:105                        component-wise multiply (highp float)

+0:105                      move second child to first child (temp highp float)

+0:105                        'f' (temp highp float)

+0:105                        component-wise multiply (temp highp float)

 0:105                          'x' (smooth in highp float)

 0:105                          'x' (smooth in highp float)

-0:107                  Test condition and select (void)

+0:107                  Test condition and select (temp void)

 0:107                    Condition

-0:107                    Compare Less Than (bool)

+0:107                    Compare Less Than (temp bool)

 0:107                      'd' (uniform mediump int)

 0:107                      'c' (uniform mediump int)

 0:107                    true case is null

@@ -267,14 +267,14 @@
 0:112            Constant:

 0:112              4 (const int)

 0:?           Sequence

-0:113            move second child to first child (highp float)

-0:113              'f' (highp float)

-0:113              tangent (highp float)

+0:113            move second child to first child (temp highp float)

+0:113              'f' (temp highp float)

+0:113              tangent (global highp float)

 0:113                'x' (smooth in highp float)

-0:114            Test condition and select (void)

+0:114            Test condition and select (temp void)

 0:114              Condition

-0:114              Compare Less Than (bool)

-0:114                'f' (highp float)

+0:114              Compare Less Than (temp bool)

+0:114                'f' (temp highp float)

 0:114                Constant:

 0:114                  0.000000

 0:114              true case is null

@@ -288,11 +288,11 @@
 0:123          default: 

 0:?           Sequence

 0:124            Sequence

-0:124              move second child to first child (mediump int)

-0:124                'onlyInSwitch' (mediump int)

+0:124              move second child to first child (temp mediump int)

+0:124                'onlyInSwitch' (temp mediump int)

 0:124                Constant:

 0:124                  0 (const int)

-0:126      'onlyInSwitch' (float)

+0:126      'onlyInSwitch' (temp float)

 0:128      switch

 0:128      condition

 0:128        Constant:

@@ -315,7 +315,7 @@
 0:139            Constant:

 0:139              2 (const int)

 0:?           Sequence

-0:140            'nestedX' (float)

+0:140            'nestedX' (temp float)

 0:143            Branch: Break

 0:144          case:  with expression

 0:144            Constant:

@@ -327,9 +327,9 @@
 0:147              4 (const int)

 0:?           Sequence

 0:148            Sequence

-0:148              move second child to first child (mediump int)

-0:148                'linearY' (mediump int)

-0:148                'linearZ' (mediump int)

+0:148              move second child to first child (temp mediump int)

+0:148                'linearY' (temp mediump int)

+0:148                'linearZ' (temp mediump int)

 0:149            Branch: Break

 0:150          case:  with expression

 0:150            Constant:

@@ -342,7 +342,7 @@
 0:?           Sequence

 0:154            Constant:

 0:154              4 (const int)

-0:156      'nestedZ' (float)

+0:156      'nestedZ' (temp float)

 0:?   Linker Objects

 0:?     'c' (uniform mediump int)

 0:?     'd' (uniform mediump int)

@@ -354,11 +354,11 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:6  Function Definition: main( (void)

+0:6  Function Definition: main( (global void)

 0:6    Function Parameters: 

 0:?     Sequence

-0:11      'f' (highp float)

-0:14      'a' (2-element array of mediump int)

+0:11      'f' (temp highp float)

+0:14      'a' (temp 2-element array of mediump int)

 0:17      'c' (uniform mediump int)

 0:21      switch

 0:21      condition

@@ -374,17 +374,17 @@
 0:26      body

 0:26        Sequence

 0:28          Sequence

-0:28            move second child to first child (highp float)

-0:28              'f' (highp float)

-0:28              sine (highp float)

+0:28            move second child to first child (temp highp float)

+0:28              'f' (temp highp float)

+0:28              sine (global highp float)

 0:28                'x' (smooth in highp float)

 0:29          case:  with expression

 0:29            Constant:

 0:29              2 (const int)

 0:?           Sequence

-0:30            move second child to first child (highp float)

-0:30              'f' (highp float)

-0:30              cosine (highp float)

+0:30            move second child to first child (temp highp float)

+0:30              'f' (temp highp float)

+0:30              cosine (global highp float)

 0:30                'x' (smooth in highp float)

 0:31            Branch: Break

 0:34      switch

@@ -399,25 +399,25 @@
 0:37            Constant:

 0:37              1 (const int)

 0:?           Sequence

-0:38            move second child to first child (highp float)

-0:38              'f' (highp float)

-0:38              sine (highp float)

+0:38            move second child to first child (temp highp float)

+0:38              'f' (temp highp float)

+0:38              sine (global highp float)

 0:38                'x' (smooth in highp float)

 0:39            Branch: Break

 0:40          case:  with expression

 0:40            Constant:

 0:40              2 (const int)

 0:?           Sequence

-0:41            move second child to first child (highp float)

-0:41              'f' (highp float)

-0:41              cosine (highp float)

+0:41            move second child to first child (temp highp float)

+0:41              'f' (temp highp float)

+0:41              cosine (global highp float)

 0:41                'x' (smooth in highp float)

 0:42            Branch: Break

 0:43          default: 

 0:?           Sequence

-0:44            move second child to first child (highp float)

-0:44              'f' (highp float)

-0:44              tangent (highp float)

+0:44            move second child to first child (temp highp float)

+0:44              'f' (temp highp float)

+0:44              tangent (global highp float)

 0:44                'x' (smooth in highp float)

 0:47      switch

 0:47      condition

@@ -428,9 +428,9 @@
 0:48            Constant:

 0:48              1 (const int)

 0:?           Sequence

-0:49            move second child to first child (highp float)

-0:49              'f' (highp float)

-0:49              sine (highp float)

+0:49            move second child to first child (temp highp float)

+0:49              'f' (temp highp float)

+0:49              sine (global highp float)

 0:49                'x' (smooth in highp float)

 0:50            Branch: Break

 0:51          case:  with expression

@@ -446,10 +446,10 @@
 0:53                  Constant:

 0:53                    1 (const int)

 0:?                 Sequence

-0:54                  move second child to first child (highp float)

-0:54                    'f' (highp float)

-0:54                    component-wise multiply (highp float)

-0:54                      component-wise multiply (highp float)

+0:54                  move second child to first child (temp highp float)

+0:54                    'f' (temp highp float)

+0:54                    component-wise multiply (temp highp float)

+0:54                      component-wise multiply (temp highp float)

 0:54                        'x' (smooth in highp float)

 0:54                        'x' (smooth in highp float)

 0:54                      'x' (smooth in highp float)

@@ -458,18 +458,18 @@
 0:56                  Constant:

 0:56                    2 (const int)

 0:?                 Sequence

-0:57                  move second child to first child (highp float)

-0:57                    'f' (highp float)

-0:57                    component-wise multiply (highp float)

+0:57                  move second child to first child (temp highp float)

+0:57                    'f' (temp highp float)

+0:57                    component-wise multiply (temp highp float)

 0:57                      'x' (smooth in highp float)

 0:57                      'x' (smooth in highp float)

 0:58                  Branch: Break

 0:60            Branch: Break

 0:61          default: 

 0:?           Sequence

-0:62            move second child to first child (highp float)

-0:62              'f' (highp float)

-0:62              tangent (highp float)

+0:62            move second child to first child (temp highp float)

+0:62              'f' (temp highp float)

+0:62              tangent (global highp float)

 0:62                'x' (smooth in highp float)

 0:63          case:  with expression

 0:63            Constant:

@@ -494,9 +494,9 @@
 0:72            Constant:

 0:72              1 (const int)

 0:?           Sequence

-0:73            move second child to first child (highp float)

-0:73              'f' (highp float)

-0:73              sine (highp float)

+0:73            move second child to first child (temp highp float)

+0:73              'f' (temp highp float)

+0:73              sine (global highp float)

 0:73                'x' (smooth in highp float)

 0:74            Branch: Break

 0:75          case:  with expression

@@ -512,10 +512,10 @@
 0:77                  Constant:

 0:77                    1 (const int)

 0:?                 Sequence

-0:78                  move second child to first child (highp float)

-0:78                    'f' (highp float)

-0:78                    component-wise multiply (highp float)

-0:78                      component-wise multiply (highp float)

+0:78                  move second child to first child (temp highp float)

+0:78                    'f' (temp highp float)

+0:78                    component-wise multiply (temp highp float)

+0:78                      component-wise multiply (temp highp float)

 0:78                        'x' (smooth in highp float)

 0:78                        'x' (smooth in highp float)

 0:78                      'x' (smooth in highp float)

@@ -524,18 +524,18 @@
 0:80                  Constant:

 0:80                    2 (const int)

 0:?                 Sequence

-0:81                  move second child to first child (highp float)

-0:81                    'f' (highp float)

-0:81                    component-wise multiply (highp float)

+0:81                  move second child to first child (temp highp float)

+0:81                    'f' (temp highp float)

+0:81                    component-wise multiply (temp highp float)

 0:81                      'x' (smooth in highp float)

 0:81                      'x' (smooth in highp float)

 0:82                  Branch: Break

 0:84            Branch: Break

 0:85          default: 

 0:?           Sequence

-0:86            move second child to first child (highp float)

-0:86              'f' (highp float)

-0:86              tangent (highp float)

+0:86            move second child to first child (temp highp float)

+0:86              'f' (temp highp float)

+0:86              tangent (global highp float)

 0:86                'x' (smooth in highp float)

 0:89      Branch: Break

 0:91      switch

@@ -547,9 +547,9 @@
 0:92            Constant:

 0:92              1 (const int)

 0:?           Sequence

-0:93            move second child to first child (highp float)

-0:93              'f' (highp float)

-0:93              sine (highp float)

+0:93            move second child to first child (temp highp float)

+0:93              'f' (temp highp float)

+0:93              sine (global highp float)

 0:93                'x' (smooth in highp float)

 0:94            Branch: Break

 0:95          case:  with expression

@@ -567,28 +567,28 @@
 0:?                 Sequence

 0:?                   Sequence

 0:100                    Branch: Break

-0:102                  move second child to first child (highp float)

-0:102                    'f' (highp float)

-0:102                    component-wise multiply (highp float)

-0:102                      component-wise multiply (highp float)

+0:102                  move second child to first child (temp highp float)

+0:102                    'f' (temp highp float)

+0:102                    component-wise multiply (temp highp float)

+0:102                      component-wise multiply (temp highp float)

 0:102                        'x' (smooth in highp float)

 0:102                        'x' (smooth in highp float)

 0:102                      'x' (smooth in highp float)

-0:103                  Test condition and select (void)

+0:103                  Test condition and select (temp void)

 0:103                    Condition

-0:103                    Compare Less Than (bool)

+0:103                    Compare Less Than (temp bool)

 0:103                      'c' (uniform mediump int)

 0:103                      'd' (uniform mediump int)

 0:103                    true case

 0:?                     Sequence

-0:105                      move second child to first child (highp float)

-0:105                        'f' (highp float)

-0:105                        component-wise multiply (highp float)

+0:105                      move second child to first child (temp highp float)

+0:105                        'f' (temp highp float)

+0:105                        component-wise multiply (temp highp float)

 0:105                          'x' (smooth in highp float)

 0:105                          'x' (smooth in highp float)

-0:107                  Test condition and select (void)

+0:107                  Test condition and select (temp void)

 0:107                    Condition

-0:107                    Compare Less Than (bool)

+0:107                    Compare Less Than (temp bool)

 0:107                      'd' (uniform mediump int)

 0:107                      'c' (uniform mediump int)

 0:107                    true case is null

@@ -598,14 +598,14 @@
 0:112            Constant:

 0:112              4 (const int)

 0:?           Sequence

-0:113            move second child to first child (highp float)

-0:113              'f' (highp float)

-0:113              tangent (highp float)

+0:113            move second child to first child (temp highp float)

+0:113              'f' (temp highp float)

+0:113              tangent (global highp float)

 0:113                'x' (smooth in highp float)

-0:114            Test condition and select (void)

+0:114            Test condition and select (temp void)

 0:114              Condition

-0:114              Compare Less Than (bool)

-0:114                'f' (highp float)

+0:114              Compare Less Than (temp bool)

+0:114                'f' (temp highp float)

 0:114                Constant:

 0:114                  0.000000

 0:114              true case is null

@@ -619,11 +619,11 @@
 0:123          default: 

 0:?           Sequence

 0:124            Sequence

-0:124              move second child to first child (mediump int)

-0:124                'onlyInSwitch' (mediump int)

+0:124              move second child to first child (temp mediump int)

+0:124                'onlyInSwitch' (temp mediump int)

 0:124                Constant:

 0:124                  0 (const int)

-0:126      'onlyInSwitch' (float)

+0:126      'onlyInSwitch' (temp float)

 0:128      switch

 0:128      condition

 0:128        Constant:

@@ -646,7 +646,7 @@
 0:139            Constant:

 0:139              2 (const int)

 0:?           Sequence

-0:140            'nestedX' (float)

+0:140            'nestedX' (temp float)

 0:143            Branch: Break

 0:144          case:  with expression

 0:144            Constant:

@@ -658,9 +658,9 @@
 0:147              4 (const int)

 0:?           Sequence

 0:148            Sequence

-0:148              move second child to first child (mediump int)

-0:148                'linearY' (mediump int)

-0:148                'linearZ' (mediump int)

+0:148              move second child to first child (temp mediump int)

+0:148                'linearY' (temp mediump int)

+0:148                'linearZ' (temp mediump int)

 0:149            Branch: Break

 0:150          case:  with expression

 0:150            Constant:

@@ -673,7 +673,7 @@
 0:?           Sequence

 0:154            Constant:

 0:154              4 (const int)

-0:156      'nestedZ' (float)

+0:156      'nestedZ' (temp float)

 0:?   Linker Objects

 0:?     'c' (uniform mediump int)

 0:?     'd' (uniform mediump int)

diff --git a/Test/baseResults/swizzle.frag.out b/Test/baseResults/swizzle.frag.out
index 1a53c9a..a8d12d1 100644
--- a/Test/baseResults/swizzle.frag.out
+++ b/Test/baseResults/swizzle.frag.out
@@ -2,58 +2,58 @@
 

 Shader version: 110

 0:? Sequence

-0:9  Function Definition: main( (void)

+0:9  Function Definition: main( (global void)

 0:9    Function Parameters: 

 0:11    Sequence

 0:11      Sequence

-0:11        move second child to first child (float)

-0:11          'blendscale' (float)

+0:11        move second child to first child (temp float)

+0:11          'blendscale' (temp float)

 0:11          Constant:

 0:11            1.789000

 0:13      Sequence

-0:13        move second child to first child (4-component vector of float)

-0:13          'w' (4-component vector of float)

+0:13        move second child to first child (temp 4-component vector of float)

+0:13          'w' (temp 4-component vector of float)

 0:13          'u' (uniform 4-component vector of float)

 0:15      Sequence

-0:15        move second child to first child (4-component vector of float)

-0:15          'w_dep' (4-component vector of float)

+0:15        move second child to first child (temp 4-component vector of float)

+0:15          'w_dep' (temp 4-component vector of float)

 0:15          'u' (uniform 4-component vector of float)

 0:16      Sequence

-0:16        move second child to first child (4-component vector of float)

-0:16          'w_reorder' (4-component vector of float)

+0:16        move second child to first child (temp 4-component vector of float)

+0:16          'w_reorder' (temp 4-component vector of float)

 0:16          'u' (uniform 4-component vector of float)

 0:17      Sequence

-0:17        move second child to first child (4-component vector of float)

-0:17          'w2' (4-component vector of float)

+0:17        move second child to first child (temp 4-component vector of float)

+0:17          'w2' (temp 4-component vector of float)

 0:17          'u' (uniform 4-component vector of float)

 0:18      Sequence

-0:18        move second child to first child (4-component vector of float)

-0:18          'w_flow' (4-component vector of float)

+0:18        move second child to first child (temp 4-component vector of float)

+0:18          'w_flow' (temp 4-component vector of float)

 0:18          'u' (uniform 4-component vector of float)

-0:20      move second child to first child (float)

-0:20        direct index (float)

-0:20          'w_reorder' (4-component vector of float)

+0:20      move second child to first child (temp float)

+0:20        direct index (temp float)

+0:20          'w_reorder' (temp 4-component vector of float)

 0:20          Constant:

 0:20            2 (const int)

-0:20        'blendscale' (float)

-0:22      move second child to first child (2-component vector of float)

-0:22        vector swizzle (2-component vector of float)

-0:22          'w' (4-component vector of float)

+0:20        'blendscale' (temp float)

+0:22      move second child to first child (temp 2-component vector of float)

+0:22        vector swizzle (temp 2-component vector of float)

+0:22          'w' (temp 4-component vector of float)

 0:22          Sequence

 0:22            Constant:

 0:22              3 (const int)

 0:22            Constant:

 0:22              1 (const int)

 0:22        't' (smooth in 2-component vector of float)

-0:24      move second child to first child (float)

-0:24        direct index (float)

-0:24          'w_reorder' (4-component vector of float)

+0:24      move second child to first child (temp float)

+0:24        direct index (temp float)

+0:24          'w_reorder' (temp 4-component vector of float)

 0:24          Constant:

 0:24            0 (const int)

-0:24        'blendscale' (float)

-0:26      move second child to first child (4-component vector of float)

-0:26        vector swizzle (4-component vector of float)

-0:26          'w2' (4-component vector of float)

+0:24        'blendscale' (temp float)

+0:26      move second child to first child (temp 4-component vector of float)

+0:26        vector swizzle (temp 4-component vector of float)

+0:26          'w2' (temp 4-component vector of float)

 0:26          Sequence

 0:26            Constant:

 0:26              0 (const int)

@@ -63,7 +63,7 @@
 0:26              2 (const int)

 0:26            Constant:

 0:26              3 (const int)

-0:26        vector swizzle (4-component vector of float)

+0:26        vector swizzle (temp 4-component vector of float)

 0:26          'u' (uniform 4-component vector of float)

 0:26          Sequence

 0:26            Constant:

@@ -74,135 +74,135 @@
 0:26              0 (const int)

 0:26            Constant:

 0:26              1 (const int)

-0:28      move second child to first child (float)

-0:28        direct index (float)

-0:28          'w_reorder' (4-component vector of float)

+0:28      move second child to first child (temp float)

+0:28        direct index (temp float)

+0:28          'w_reorder' (temp 4-component vector of float)

 0:28          Constant:

 0:28            1 (const int)

-0:28        'blendscale' (float)

-0:30      move second child to first child (2-component vector of float)

-0:30        vector swizzle (2-component vector of float)

-0:30          'w_dep' (4-component vector of float)

+0:28        'blendscale' (temp float)

+0:30      move second child to first child (temp 2-component vector of float)

+0:30        vector swizzle (temp 2-component vector of float)

+0:30          'w_dep' (temp 4-component vector of float)

 0:30          Sequence

 0:30            Constant:

 0:30              0 (const int)

 0:30            Constant:

 0:30              1 (const int)

-0:30        vector swizzle (2-component vector of float)

-0:30          'w2' (4-component vector of float)

+0:30        vector swizzle (temp 2-component vector of float)

+0:30          'w2' (temp 4-component vector of float)

 0:30          Sequence

 0:30            Constant:

 0:30              0 (const int)

 0:30            Constant:

 0:30              2 (const int)

-0:31      move second child to first child (2-component vector of float)

-0:31        vector swizzle (2-component vector of float)

-0:31          'w_dep' (4-component vector of float)

+0:31      move second child to first child (temp 2-component vector of float)

+0:31        vector swizzle (temp 2-component vector of float)

+0:31          'w_dep' (temp 4-component vector of float)

 0:31          Sequence

 0:31            Constant:

 0:31              2 (const int)

 0:31            Constant:

 0:31              3 (const int)

 0:31        't' (smooth in 2-component vector of float)

-0:33      move second child to first child (2-component vector of float)

-0:33        vector swizzle (2-component vector of float)

-0:33          'w_undef' (4-component vector of float)

+0:33      move second child to first child (temp 2-component vector of float)

+0:33        vector swizzle (temp 2-component vector of float)

+0:33          'w_undef' (temp 4-component vector of float)

 0:33          Sequence

 0:33            Constant:

 0:33              0 (const int)

 0:33            Constant:

 0:33              1 (const int)

-0:33        vector swizzle (2-component vector of float)

+0:33        vector swizzle (temp 2-component vector of float)

 0:33          'u' (uniform 4-component vector of float)

 0:33          Sequence

 0:33            Constant:

 0:33              2 (const int)

 0:33            Constant:

 0:33              3 (const int)

-0:35      Test condition and select (void)

+0:35      Test condition and select (temp void)

 0:35        Condition

 0:35        'p' (uniform bool)

 0:35        true case

-0:36        move second child to first child (float)

-0:36          direct index (float)

-0:36            'w_flow' (4-component vector of float)

+0:36        move second child to first child (temp float)

+0:36          direct index (temp float)

+0:36            'w_flow' (temp 4-component vector of float)

 0:36            Constant:

 0:36              0 (const int)

-0:36          direct index (float)

+0:36          direct index (temp float)

 0:36            't' (smooth in 2-component vector of float)

 0:36            Constant:

 0:36              0 (const int)

 0:35        false case

-0:38        move second child to first child (float)

-0:38          direct index (float)

-0:38            'w_flow' (4-component vector of float)

+0:38        move second child to first child (temp float)

+0:38          direct index (temp float)

+0:38            'w_flow' (temp 4-component vector of float)

 0:38            Constant:

 0:38              0 (const int)

-0:38          direct index (float)

+0:38          direct index (temp float)

 0:38            't' (smooth in 2-component vector of float)

 0:38            Constant:

 0:38              1 (const int)

-0:40      move second child to first child (4-component vector of float)

+0:40      move second child to first child (temp 4-component vector of float)

 0:40        'gl_FragColor' (fragColor 4-component vector of float)

-0:40        mix (4-component vector of float)

-0:40          'w_reorder' (4-component vector of float)

-0:40          'w_undef' (4-component vector of float)

-0:40          component-wise multiply (4-component vector of float)

-0:40            component-wise multiply (4-component vector of float)

-0:40              component-wise multiply (4-component vector of float)

-0:40                'w' (4-component vector of float)

-0:40                'w2' (4-component vector of float)

-0:40              'w_dep' (4-component vector of float)

-0:40            'w_flow' (4-component vector of float)

+0:40        mix (global 4-component vector of float)

+0:40          'w_reorder' (temp 4-component vector of float)

+0:40          'w_undef' (temp 4-component vector of float)

+0:40          component-wise multiply (temp 4-component vector of float)

+0:40            component-wise multiply (temp 4-component vector of float)

+0:40              component-wise multiply (temp 4-component vector of float)

+0:40                'w' (temp 4-component vector of float)

+0:40                'w2' (temp 4-component vector of float)

+0:40              'w_dep' (temp 4-component vector of float)

+0:40            'w_flow' (temp 4-component vector of float)

 0:42      Sequence

-0:42        move second child to first child (2-component vector of float)

-0:42          'c' (2-component vector of float)

+0:42        move second child to first child (temp 2-component vector of float)

+0:42          'c' (temp 2-component vector of float)

 0:42          't' (smooth in 2-component vector of float)

 0:43      Sequence

-0:43        move second child to first child (4-component vector of float)

-0:43          'rep' (4-component vector of float)

+0:43        move second child to first child (temp 4-component vector of float)

+0:43          'rep' (temp 4-component vector of float)

 0:43          Constant:

 0:43            0.000000

 0:43            0.000000

 0:43            0.000000

 0:43            1.000000

-0:45      Test condition and select (void)

+0:45      Test condition and select (temp void)

 0:45        Condition

-0:45        Compare Less Than (bool)

-0:45          direct index (float)

-0:45            'c' (2-component vector of float)

+0:45        Compare Less Than (temp bool)

+0:45          direct index (temp float)

+0:45            'c' (temp 2-component vector of float)

 0:45            Constant:

 0:45              0 (const int)

 0:45          Constant:

 0:45            0.000000

 0:45        true case

-0:46        multiply second child into first child (float)

-0:46          direct index (float)

-0:46            'c' (2-component vector of float)

+0:46        multiply second child into first child (temp float)

+0:46          direct index (temp float)

+0:46            'c' (temp 2-component vector of float)

 0:46            Constant:

 0:46              0 (const int)

 0:46          Constant:

 0:46            -1.000000

-0:48      Test condition and select (void)

+0:48      Test condition and select (temp void)

 0:48        Condition

-0:48        Compare Less Than or Equal (bool)

-0:48          direct index (float)

-0:48            'c' (2-component vector of float)

+0:48        Compare Less Than or Equal (temp bool)

+0:48          direct index (temp float)

+0:48            'c' (temp 2-component vector of float)

 0:48            Constant:

 0:48              0 (const int)

 0:48          Constant:

 0:48            1.000000

 0:48        true case

-0:49        move second child to first child (float)

-0:49          direct index (float)

-0:49            'rep' (4-component vector of float)

+0:49        move second child to first child (temp float)

+0:49          direct index (temp float)

+0:49            'rep' (temp 4-component vector of float)

 0:49            Constant:

 0:49              0 (const int)

 0:49          Constant:

 0:49            3.400000

-0:51      add second child into first child (4-component vector of float)

+0:51      add second child into first child (temp 4-component vector of float)

 0:51        'gl_FragColor' (fragColor 4-component vector of float)

-0:51        'rep' (4-component vector of float)

+0:51        'rep' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'blend' (uniform float)

 0:?     'u' (uniform 4-component vector of float)

@@ -215,58 +215,58 @@
 

 Shader version: 110

 0:? Sequence

-0:9  Function Definition: main( (void)

+0:9  Function Definition: main( (global void)

 0:9    Function Parameters: 

 0:11    Sequence

 0:11      Sequence

-0:11        move second child to first child (float)

-0:11          'blendscale' (float)

+0:11        move second child to first child (temp float)

+0:11          'blendscale' (temp float)

 0:11          Constant:

 0:11            1.789000

 0:13      Sequence

-0:13        move second child to first child (4-component vector of float)

-0:13          'w' (4-component vector of float)

+0:13        move second child to first child (temp 4-component vector of float)

+0:13          'w' (temp 4-component vector of float)

 0:13          'u' (uniform 4-component vector of float)

 0:15      Sequence

-0:15        move second child to first child (4-component vector of float)

-0:15          'w_dep' (4-component vector of float)

+0:15        move second child to first child (temp 4-component vector of float)

+0:15          'w_dep' (temp 4-component vector of float)

 0:15          'u' (uniform 4-component vector of float)

 0:16      Sequence

-0:16        move second child to first child (4-component vector of float)

-0:16          'w_reorder' (4-component vector of float)

+0:16        move second child to first child (temp 4-component vector of float)

+0:16          'w_reorder' (temp 4-component vector of float)

 0:16          'u' (uniform 4-component vector of float)

 0:17      Sequence

-0:17        move second child to first child (4-component vector of float)

-0:17          'w2' (4-component vector of float)

+0:17        move second child to first child (temp 4-component vector of float)

+0:17          'w2' (temp 4-component vector of float)

 0:17          'u' (uniform 4-component vector of float)

 0:18      Sequence

-0:18        move second child to first child (4-component vector of float)

-0:18          'w_flow' (4-component vector of float)

+0:18        move second child to first child (temp 4-component vector of float)

+0:18          'w_flow' (temp 4-component vector of float)

 0:18          'u' (uniform 4-component vector of float)

-0:20      move second child to first child (float)

-0:20        direct index (float)

-0:20          'w_reorder' (4-component vector of float)

+0:20      move second child to first child (temp float)

+0:20        direct index (temp float)

+0:20          'w_reorder' (temp 4-component vector of float)

 0:20          Constant:

 0:20            2 (const int)

-0:20        'blendscale' (float)

-0:22      move second child to first child (2-component vector of float)

-0:22        vector swizzle (2-component vector of float)

-0:22          'w' (4-component vector of float)

+0:20        'blendscale' (temp float)

+0:22      move second child to first child (temp 2-component vector of float)

+0:22        vector swizzle (temp 2-component vector of float)

+0:22          'w' (temp 4-component vector of float)

 0:22          Sequence

 0:22            Constant:

 0:22              3 (const int)

 0:22            Constant:

 0:22              1 (const int)

 0:22        't' (smooth in 2-component vector of float)

-0:24      move second child to first child (float)

-0:24        direct index (float)

-0:24          'w_reorder' (4-component vector of float)

+0:24      move second child to first child (temp float)

+0:24        direct index (temp float)

+0:24          'w_reorder' (temp 4-component vector of float)

 0:24          Constant:

 0:24            0 (const int)

-0:24        'blendscale' (float)

-0:26      move second child to first child (4-component vector of float)

-0:26        vector swizzle (4-component vector of float)

-0:26          'w2' (4-component vector of float)

+0:24        'blendscale' (temp float)

+0:26      move second child to first child (temp 4-component vector of float)

+0:26        vector swizzle (temp 4-component vector of float)

+0:26          'w2' (temp 4-component vector of float)

 0:26          Sequence

 0:26            Constant:

 0:26              0 (const int)

@@ -276,7 +276,7 @@
 0:26              2 (const int)

 0:26            Constant:

 0:26              3 (const int)

-0:26        vector swizzle (4-component vector of float)

+0:26        vector swizzle (temp 4-component vector of float)

 0:26          'u' (uniform 4-component vector of float)

 0:26          Sequence

 0:26            Constant:

@@ -287,135 +287,135 @@
 0:26              0 (const int)

 0:26            Constant:

 0:26              1 (const int)

-0:28      move second child to first child (float)

-0:28        direct index (float)

-0:28          'w_reorder' (4-component vector of float)

+0:28      move second child to first child (temp float)

+0:28        direct index (temp float)

+0:28          'w_reorder' (temp 4-component vector of float)

 0:28          Constant:

 0:28            1 (const int)

-0:28        'blendscale' (float)

-0:30      move second child to first child (2-component vector of float)

-0:30        vector swizzle (2-component vector of float)

-0:30          'w_dep' (4-component vector of float)

+0:28        'blendscale' (temp float)

+0:30      move second child to first child (temp 2-component vector of float)

+0:30        vector swizzle (temp 2-component vector of float)

+0:30          'w_dep' (temp 4-component vector of float)

 0:30          Sequence

 0:30            Constant:

 0:30              0 (const int)

 0:30            Constant:

 0:30              1 (const int)

-0:30        vector swizzle (2-component vector of float)

-0:30          'w2' (4-component vector of float)

+0:30        vector swizzle (temp 2-component vector of float)

+0:30          'w2' (temp 4-component vector of float)

 0:30          Sequence

 0:30            Constant:

 0:30              0 (const int)

 0:30            Constant:

 0:30              2 (const int)

-0:31      move second child to first child (2-component vector of float)

-0:31        vector swizzle (2-component vector of float)

-0:31          'w_dep' (4-component vector of float)

+0:31      move second child to first child (temp 2-component vector of float)

+0:31        vector swizzle (temp 2-component vector of float)

+0:31          'w_dep' (temp 4-component vector of float)

 0:31          Sequence

 0:31            Constant:

 0:31              2 (const int)

 0:31            Constant:

 0:31              3 (const int)

 0:31        't' (smooth in 2-component vector of float)

-0:33      move second child to first child (2-component vector of float)

-0:33        vector swizzle (2-component vector of float)

-0:33          'w_undef' (4-component vector of float)

+0:33      move second child to first child (temp 2-component vector of float)

+0:33        vector swizzle (temp 2-component vector of float)

+0:33          'w_undef' (temp 4-component vector of float)

 0:33          Sequence

 0:33            Constant:

 0:33              0 (const int)

 0:33            Constant:

 0:33              1 (const int)

-0:33        vector swizzle (2-component vector of float)

+0:33        vector swizzle (temp 2-component vector of float)

 0:33          'u' (uniform 4-component vector of float)

 0:33          Sequence

 0:33            Constant:

 0:33              2 (const int)

 0:33            Constant:

 0:33              3 (const int)

-0:35      Test condition and select (void)

+0:35      Test condition and select (temp void)

 0:35        Condition

 0:35        'p' (uniform bool)

 0:35        true case

-0:36        move second child to first child (float)

-0:36          direct index (float)

-0:36            'w_flow' (4-component vector of float)

+0:36        move second child to first child (temp float)

+0:36          direct index (temp float)

+0:36            'w_flow' (temp 4-component vector of float)

 0:36            Constant:

 0:36              0 (const int)

-0:36          direct index (float)

+0:36          direct index (temp float)

 0:36            't' (smooth in 2-component vector of float)

 0:36            Constant:

 0:36              0 (const int)

 0:35        false case

-0:38        move second child to first child (float)

-0:38          direct index (float)

-0:38            'w_flow' (4-component vector of float)

+0:38        move second child to first child (temp float)

+0:38          direct index (temp float)

+0:38            'w_flow' (temp 4-component vector of float)

 0:38            Constant:

 0:38              0 (const int)

-0:38          direct index (float)

+0:38          direct index (temp float)

 0:38            't' (smooth in 2-component vector of float)

 0:38            Constant:

 0:38              1 (const int)

-0:40      move second child to first child (4-component vector of float)

+0:40      move second child to first child (temp 4-component vector of float)

 0:40        'gl_FragColor' (fragColor 4-component vector of float)

-0:40        mix (4-component vector of float)

-0:40          'w_reorder' (4-component vector of float)

-0:40          'w_undef' (4-component vector of float)

-0:40          component-wise multiply (4-component vector of float)

-0:40            component-wise multiply (4-component vector of float)

-0:40              component-wise multiply (4-component vector of float)

-0:40                'w' (4-component vector of float)

-0:40                'w2' (4-component vector of float)

-0:40              'w_dep' (4-component vector of float)

-0:40            'w_flow' (4-component vector of float)

+0:40        mix (global 4-component vector of float)

+0:40          'w_reorder' (temp 4-component vector of float)

+0:40          'w_undef' (temp 4-component vector of float)

+0:40          component-wise multiply (temp 4-component vector of float)

+0:40            component-wise multiply (temp 4-component vector of float)

+0:40              component-wise multiply (temp 4-component vector of float)

+0:40                'w' (temp 4-component vector of float)

+0:40                'w2' (temp 4-component vector of float)

+0:40              'w_dep' (temp 4-component vector of float)

+0:40            'w_flow' (temp 4-component vector of float)

 0:42      Sequence

-0:42        move second child to first child (2-component vector of float)

-0:42          'c' (2-component vector of float)

+0:42        move second child to first child (temp 2-component vector of float)

+0:42          'c' (temp 2-component vector of float)

 0:42          't' (smooth in 2-component vector of float)

 0:43      Sequence

-0:43        move second child to first child (4-component vector of float)

-0:43          'rep' (4-component vector of float)

+0:43        move second child to first child (temp 4-component vector of float)

+0:43          'rep' (temp 4-component vector of float)

 0:43          Constant:

 0:43            0.000000

 0:43            0.000000

 0:43            0.000000

 0:43            1.000000

-0:45      Test condition and select (void)

+0:45      Test condition and select (temp void)

 0:45        Condition

-0:45        Compare Less Than (bool)

-0:45          direct index (float)

-0:45            'c' (2-component vector of float)

+0:45        Compare Less Than (temp bool)

+0:45          direct index (temp float)

+0:45            'c' (temp 2-component vector of float)

 0:45            Constant:

 0:45              0 (const int)

 0:45          Constant:

 0:45            0.000000

 0:45        true case

-0:46        multiply second child into first child (float)

-0:46          direct index (float)

-0:46            'c' (2-component vector of float)

+0:46        multiply second child into first child (temp float)

+0:46          direct index (temp float)

+0:46            'c' (temp 2-component vector of float)

 0:46            Constant:

 0:46              0 (const int)

 0:46          Constant:

 0:46            -1.000000

-0:48      Test condition and select (void)

+0:48      Test condition and select (temp void)

 0:48        Condition

-0:48        Compare Less Than or Equal (bool)

-0:48          direct index (float)

-0:48            'c' (2-component vector of float)

+0:48        Compare Less Than or Equal (temp bool)

+0:48          direct index (temp float)

+0:48            'c' (temp 2-component vector of float)

 0:48            Constant:

 0:48              0 (const int)

 0:48          Constant:

 0:48            1.000000

 0:48        true case

-0:49        move second child to first child (float)

-0:49          direct index (float)

-0:49            'rep' (4-component vector of float)

+0:49        move second child to first child (temp float)

+0:49          direct index (temp float)

+0:49            'rep' (temp 4-component vector of float)

 0:49            Constant:

 0:49              0 (const int)

 0:49          Constant:

 0:49            3.400000

-0:51      add second child into first child (4-component vector of float)

+0:51      add second child into first child (temp 4-component vector of float)

 0:51        'gl_FragColor' (fragColor 4-component vector of float)

-0:51        'rep' (4-component vector of float)

+0:51        'rep' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'blend' (uniform float)

 0:?     'u' (uniform 4-component vector of float)

diff --git a/Test/baseResults/test.frag.out b/Test/baseResults/test.frag.out
index c06adc0..9631d06 100644
--- a/Test/baseResults/test.frag.out
+++ b/Test/baseResults/test.frag.out
@@ -2,22 +2,22 @@
 

 Shader version: 110

 0:? Sequence

-0:13  Function Definition: main( (void)

+0:13  Function Definition: main( (global void)

 0:13    Function Parameters: 

 0:15    Sequence

 0:15      Sequence

-0:15        move second child to first child (float)

-0:15          'blendscale' (float)

+0:15        move second child to first child (temp float)

+0:15          'blendscale' (temp float)

 0:15          Constant:

 0:15            1.789000

 0:17      Sequence

-0:17        move second child to first child (4-component vector of float)

-0:17          'v' (4-component vector of float)

-0:17          vector swizzle (4-component vector of float)

-0:17            Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:17        move second child to first child (temp 4-component vector of float)

+0:17          'v' (temp 4-component vector of float)

+0:17          vector swizzle (temp 4-component vector of float)

+0:17            Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:17              'texSampler2D' (uniform sampler2D)

-0:17              divide (2-component vector of float)

-0:17                add (2-component vector of float)

+0:17              divide (temp 2-component vector of float)

+0:17                add (temp 2-component vector of float)

 0:17                  't' (smooth in 2-component vector of float)

 0:17                  'scale' (uniform 2-component vector of float)

 0:17                'scale' (uniform 2-component vector of float)

@@ -31,21 +31,21 @@
 0:17              Constant:

 0:17                0 (const int)

 0:19      Sequence

-0:19        move second child to first child (4-component vector of float)

-0:19          'w' (4-component vector of float)

-0:19          add (4-component vector of float)

-0:19            Function Call: texture3D(s31;vf3; (4-component vector of float)

+0:19        move second child to first child (temp 4-component vector of float)

+0:19          'w' (temp 4-component vector of float)

+0:19          add (temp 4-component vector of float)

+0:19            Function Call: texture3D(s31;vf3; (global 4-component vector of float)

 0:19              'texSampler3D' (uniform sampler3D)

 0:19              'coords' (smooth in 3-component vector of float)

-0:19            'v' (4-component vector of float)

-0:21      move second child to first child (4-component vector of float)

+0:19            'v' (temp 4-component vector of float)

+0:21      move second child to first child (temp 4-component vector of float)

 0:21        'gl_FragColor' (fragColor 4-component vector of float)

-0:21        mix (4-component vector of float)

-0:21          'w' (4-component vector of float)

+0:21        mix (global 4-component vector of float)

+0:21          'w' (temp 4-component vector of float)

 0:21          'u' (uniform 4-component vector of float)

-0:21          component-wise multiply (float)

+0:21          component-wise multiply (temp float)

 0:21            'blend' (uniform float)

-0:21            'blendscale' (float)

+0:21            'blendscale' (temp float)

 0:?   Linker Objects

 0:?     'texSampler2D' (uniform sampler2D)

 0:?     'texSampler3D' (uniform sampler3D)

@@ -61,22 +61,22 @@
 

 Shader version: 110

 0:? Sequence

-0:13  Function Definition: main( (void)

+0:13  Function Definition: main( (global void)

 0:13    Function Parameters: 

 0:15    Sequence

 0:15      Sequence

-0:15        move second child to first child (float)

-0:15          'blendscale' (float)

+0:15        move second child to first child (temp float)

+0:15          'blendscale' (temp float)

 0:15          Constant:

 0:15            1.789000

 0:17      Sequence

-0:17        move second child to first child (4-component vector of float)

-0:17          'v' (4-component vector of float)

-0:17          vector swizzle (4-component vector of float)

-0:17            Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:17        move second child to first child (temp 4-component vector of float)

+0:17          'v' (temp 4-component vector of float)

+0:17          vector swizzle (temp 4-component vector of float)

+0:17            Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:17              'texSampler2D' (uniform sampler2D)

-0:17              divide (2-component vector of float)

-0:17                add (2-component vector of float)

+0:17              divide (temp 2-component vector of float)

+0:17                add (temp 2-component vector of float)

 0:17                  't' (smooth in 2-component vector of float)

 0:17                  'scale' (uniform 2-component vector of float)

 0:17                'scale' (uniform 2-component vector of float)

@@ -90,21 +90,21 @@
 0:17              Constant:

 0:17                0 (const int)

 0:19      Sequence

-0:19        move second child to first child (4-component vector of float)

-0:19          'w' (4-component vector of float)

-0:19          add (4-component vector of float)

-0:19            Function Call: texture3D(s31;vf3; (4-component vector of float)

+0:19        move second child to first child (temp 4-component vector of float)

+0:19          'w' (temp 4-component vector of float)

+0:19          add (temp 4-component vector of float)

+0:19            Function Call: texture3D(s31;vf3; (global 4-component vector of float)

 0:19              'texSampler3D' (uniform sampler3D)

 0:19              'coords' (smooth in 3-component vector of float)

-0:19            'v' (4-component vector of float)

-0:21      move second child to first child (4-component vector of float)

+0:19            'v' (temp 4-component vector of float)

+0:21      move second child to first child (temp 4-component vector of float)

 0:21        'gl_FragColor' (fragColor 4-component vector of float)

-0:21        mix (4-component vector of float)

-0:21          'w' (4-component vector of float)

+0:21        mix (global 4-component vector of float)

+0:21          'w' (temp 4-component vector of float)

 0:21          'u' (uniform 4-component vector of float)

-0:21          component-wise multiply (float)

+0:21          component-wise multiply (temp float)

 0:21            'blend' (uniform float)

-0:21            'blendscale' (float)

+0:21            'blendscale' (temp float)

 0:?   Linker Objects

 0:?     'texSampler2D' (uniform sampler2D)

 0:?     'texSampler3D' (uniform sampler3D)

diff --git a/Test/baseResults/texture.frag.out b/Test/baseResults/texture.frag.out
index f7d607f..724d5fd 100644
--- a/Test/baseResults/texture.frag.out
+++ b/Test/baseResults/texture.frag.out
@@ -4,269 +4,269 @@
 

 Shader version: 130

 0:? Sequence

-0:17  Function Definition: main( (void)

+0:17  Function Definition: main( (global void)

 0:17    Function Parameters: 

 0:19    Sequence

 0:19      Sequence

-0:19        move second child to first child (float)

-0:19          'blendscale' (float)

+0:19        move second child to first child (temp float)

+0:19          'blendscale' (temp float)

 0:19          Constant:

 0:19            1.789000

 0:20      Sequence

-0:20        move second child to first child (float)

-0:20          'bias' (float)

+0:20        move second child to first child (temp float)

+0:20          'bias' (temp float)

 0:20          Constant:

 0:20            2.000000

 0:21      Sequence

-0:21        move second child to first child (float)

-0:21          'lod' (float)

+0:21        move second child to first child (temp float)

+0:21          'lod' (temp float)

 0:21          Constant:

 0:21            3.000000

 0:22      Sequence

-0:22        move second child to first child (float)

-0:22          'proj' (float)

+0:22        move second child to first child (temp float)

+0:22          'proj' (temp float)

 0:22          Constant:

 0:22            2.000000

 0:23      Sequence

-0:23        move second child to first child (float)

-0:23          'coords1D' (float)

+0:23        move second child to first child (temp float)

+0:23          'coords1D' (temp float)

 0:23          Constant:

 0:23            1.789000

 0:24      Sequence

-0:24        move second child to first child (3-component vector of float)

-0:24          'coords3D' (3-component vector of float)

+0:24        move second child to first child (temp 3-component vector of float)

+0:24          'coords3D' (temp 3-component vector of float)

 0:24          Constant:

 0:24            1.789000

 0:24            2.718000

 0:24            3.453000

 0:25      Sequence

-0:25        move second child to first child (4-component vector of float)

-0:25          'coords4D' (4-component vector of float)

+0:25        move second child to first child (temp 4-component vector of float)

+0:25          'coords4D' (temp 4-component vector of float)

 0:25          Constant:

 0:25            1.789000

 0:25            2.718000

 0:25            3.453000

 0:25            2.000000

 0:26      Sequence

-0:26        move second child to first child (4-component vector of float)

-0:26          'color' (4-component vector of float)

+0:26        move second child to first child (temp 4-component vector of float)

+0:26          'color' (temp 4-component vector of float)

 0:26          Constant:

 0:26            0.000000

 0:26            0.000000

 0:26            0.000000

 0:26            0.000000

-0:28      add second child into first child (4-component vector of float)

-0:28        'color' (4-component vector of float)

-0:28        Function Call: texture1D(s11;f1; (4-component vector of float)

+0:28      add second child into first child (temp 4-component vector of float)

+0:28        'color' (temp 4-component vector of float)

+0:28        Function Call: texture1D(s11;f1; (global 4-component vector of float)

 0:28          'texSampler1D' (uniform sampler1D)

-0:28          'coords1D' (float)

-0:29      add second child into first child (4-component vector of float)

-0:29        'color' (4-component vector of float)

-0:29        Function Call: texture1D(s11;f1;f1; (4-component vector of float)

+0:28          'coords1D' (temp float)

+0:29      add second child into first child (temp 4-component vector of float)

+0:29        'color' (temp 4-component vector of float)

+0:29        Function Call: texture1D(s11;f1;f1; (global 4-component vector of float)

 0:29          'texSampler1D' (uniform sampler1D)

-0:29          'coords1D' (float)

-0:29          'bias' (float)

-0:30      add second child into first child (4-component vector of float)

-0:30        'color' (4-component vector of float)

-0:30        Function Call: texture1DProj(s11;vf2; (4-component vector of float)

+0:29          'coords1D' (temp float)

+0:29          'bias' (temp float)

+0:30      add second child into first child (temp 4-component vector of float)

+0:30        'color' (temp 4-component vector of float)

+0:30        Function Call: texture1DProj(s11;vf2; (global 4-component vector of float)

 0:30          'texSampler1D' (uniform sampler1D)

 0:30          'coords2D' (smooth in 2-component vector of float)

-0:31      add second child into first child (4-component vector of float)

-0:31        'color' (4-component vector of float)

-0:31        Function Call: texture1DProj(s11;vf4; (4-component vector of float)

+0:31      add second child into first child (temp 4-component vector of float)

+0:31        'color' (temp 4-component vector of float)

+0:31        Function Call: texture1DProj(s11;vf4; (global 4-component vector of float)

 0:31          'texSampler1D' (uniform sampler1D)

-0:31          'coords4D' (4-component vector of float)

-0:32      add second child into first child (4-component vector of float)

-0:32        'color' (4-component vector of float)

-0:32        Function Call: texture1DProj(s11;vf2;f1; (4-component vector of float)

+0:31          'coords4D' (temp 4-component vector of float)

+0:32      add second child into first child (temp 4-component vector of float)

+0:32        'color' (temp 4-component vector of float)

+0:32        Function Call: texture1DProj(s11;vf2;f1; (global 4-component vector of float)

 0:32          'texSampler1D' (uniform sampler1D)

 0:32          'coords2D' (smooth in 2-component vector of float)

-0:32          'bias' (float)

-0:33      add second child into first child (4-component vector of float)

-0:33        'color' (4-component vector of float)

-0:33        Function Call: texture1DProj(s11;vf4;f1; (4-component vector of float)

+0:32          'bias' (temp float)

+0:33      add second child into first child (temp 4-component vector of float)

+0:33        'color' (temp 4-component vector of float)

+0:33        Function Call: texture1DProj(s11;vf4;f1; (global 4-component vector of float)

 0:33          'texSampler1D' (uniform sampler1D)

-0:33          'coords4D' (4-component vector of float)

-0:33          'bias' (float)

-0:35      add second child into first child (4-component vector of float)

-0:35        'color' (4-component vector of float)

-0:35        Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:33          'coords4D' (temp 4-component vector of float)

+0:33          'bias' (temp float)

+0:35      add second child into first child (temp 4-component vector of float)

+0:35        'color' (temp 4-component vector of float)

+0:35        Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:35          'texSampler2D' (uniform sampler2D)

 0:35          'coords2D' (smooth in 2-component vector of float)

-0:36      add second child into first child (4-component vector of float)

-0:36        'color' (4-component vector of float)

-0:36        Function Call: texture2D(s21;vf2;f1; (4-component vector of float)

+0:36      add second child into first child (temp 4-component vector of float)

+0:36        'color' (temp 4-component vector of float)

+0:36        Function Call: texture2D(s21;vf2;f1; (global 4-component vector of float)

 0:36          'texSampler2D' (uniform sampler2D)

 0:36          'coords2D' (smooth in 2-component vector of float)

-0:36          'bias' (float)

-0:37      add second child into first child (4-component vector of float)

-0:37        'color' (4-component vector of float)

-0:37        Function Call: texture2DProj(s21;vf3; (4-component vector of float)

+0:36          'bias' (temp float)

+0:37      add second child into first child (temp 4-component vector of float)

+0:37        'color' (temp 4-component vector of float)

+0:37        Function Call: texture2DProj(s21;vf3; (global 4-component vector of float)

 0:37          'texSampler2D' (uniform sampler2D)

-0:37          'coords3D' (3-component vector of float)

-0:38      add second child into first child (4-component vector of float)

-0:38        'color' (4-component vector of float)

-0:38        Function Call: texture2DProj(s21;vf4;f1; (4-component vector of float)

+0:37          'coords3D' (temp 3-component vector of float)

+0:38      add second child into first child (temp 4-component vector of float)

+0:38        'color' (temp 4-component vector of float)

+0:38        Function Call: texture2DProj(s21;vf4;f1; (global 4-component vector of float)

 0:38          'texSampler2D' (uniform sampler2D)

-0:38          'coords4D' (4-component vector of float)

-0:38          'bias' (float)

-0:40      add second child into first child (4-component vector of float)

-0:40        'color' (4-component vector of float)

-0:40        Function Call: texture3D(s31;vf3; (4-component vector of float)

+0:38          'coords4D' (temp 4-component vector of float)

+0:38          'bias' (temp float)

+0:40      add second child into first child (temp 4-component vector of float)

+0:40        'color' (temp 4-component vector of float)

+0:40        Function Call: texture3D(s31;vf3; (global 4-component vector of float)

 0:40          'texSampler3D' (uniform sampler3D)

-0:40          'coords3D' (3-component vector of float)

-0:41      add second child into first child (4-component vector of float)

-0:41        'color' (4-component vector of float)

-0:41        Function Call: texture3D(s31;vf3;f1; (4-component vector of float)

+0:40          'coords3D' (temp 3-component vector of float)

+0:41      add second child into first child (temp 4-component vector of float)

+0:41        'color' (temp 4-component vector of float)

+0:41        Function Call: texture3D(s31;vf3;f1; (global 4-component vector of float)

 0:41          'texSampler3D' (uniform sampler3D)

-0:41          'coords3D' (3-component vector of float)

-0:41          'bias' (float)

-0:42      add second child into first child (4-component vector of float)

-0:42        'color' (4-component vector of float)

-0:42        Function Call: texture3DProj(s31;vf4; (4-component vector of float)

+0:41          'coords3D' (temp 3-component vector of float)

+0:41          'bias' (temp float)

+0:42      add second child into first child (temp 4-component vector of float)

+0:42        'color' (temp 4-component vector of float)

+0:42        Function Call: texture3DProj(s31;vf4; (global 4-component vector of float)

 0:42          'texSampler3D' (uniform sampler3D)

-0:42          'coords4D' (4-component vector of float)

-0:43      add second child into first child (4-component vector of float)

-0:43        'color' (4-component vector of float)

-0:43        Function Call: texture3DProj(s31;vf4;f1; (4-component vector of float)

+0:42          'coords4D' (temp 4-component vector of float)

+0:43      add second child into first child (temp 4-component vector of float)

+0:43        'color' (temp 4-component vector of float)

+0:43        Function Call: texture3DProj(s31;vf4;f1; (global 4-component vector of float)

 0:43          'texSampler3D' (uniform sampler3D)

-0:43          'coords4D' (4-component vector of float)

-0:43          'bias' (float)

-0:45      add second child into first child (4-component vector of float)

-0:45        'color' (4-component vector of float)

-0:45        Function Call: textureCube(sC1;vf3; (4-component vector of float)

+0:43          'coords4D' (temp 4-component vector of float)

+0:43          'bias' (temp float)

+0:45      add second child into first child (temp 4-component vector of float)

+0:45        'color' (temp 4-component vector of float)

+0:45        Function Call: textureCube(sC1;vf3; (global 4-component vector of float)

 0:45          'texSamplerCube' (uniform samplerCube)

-0:45          'coords3D' (3-component vector of float)

-0:46      add second child into first child (4-component vector of float)

-0:46        'color' (4-component vector of float)

-0:46        Function Call: textureCube(sC1;vf3;f1; (4-component vector of float)

+0:45          'coords3D' (temp 3-component vector of float)

+0:46      add second child into first child (temp 4-component vector of float)

+0:46        'color' (temp 4-component vector of float)

+0:46        Function Call: textureCube(sC1;vf3;f1; (global 4-component vector of float)

 0:46          'texSamplerCube' (uniform samplerCube)

-0:46          'coords3D' (3-component vector of float)

-0:46          'bias' (float)

-0:48      add second child into first child (4-component vector of float)

-0:48        'color' (4-component vector of float)

-0:48        Function Call: shadow1D(sS11;vf3; (4-component vector of float)

+0:46          'coords3D' (temp 3-component vector of float)

+0:46          'bias' (temp float)

+0:48      add second child into first child (temp 4-component vector of float)

+0:48        'color' (temp 4-component vector of float)

+0:48        Function Call: shadow1D(sS11;vf3; (global 4-component vector of float)

 0:48          'shadowSampler1D' (uniform sampler1DShadow)

-0:48          'coords3D' (3-component vector of float)

-0:49      add second child into first child (4-component vector of float)

-0:49        'color' (4-component vector of float)

-0:49        Function Call: shadow1D(sS11;vf3;f1; (4-component vector of float)

+0:48          'coords3D' (temp 3-component vector of float)

+0:49      add second child into first child (temp 4-component vector of float)

+0:49        'color' (temp 4-component vector of float)

+0:49        Function Call: shadow1D(sS11;vf3;f1; (global 4-component vector of float)

 0:49          'shadowSampler1D' (uniform sampler1DShadow)

-0:49          'coords3D' (3-component vector of float)

-0:49          'bias' (float)

-0:50      add second child into first child (4-component vector of float)

-0:50        'color' (4-component vector of float)

-0:50        Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:49          'coords3D' (temp 3-component vector of float)

+0:49          'bias' (temp float)

+0:50      add second child into first child (temp 4-component vector of float)

+0:50        'color' (temp 4-component vector of float)

+0:50        Function Call: shadow2D(sS21;vf3; (global 4-component vector of float)

 0:50          'shadowSampler2D' (uniform sampler2DShadow)

-0:50          'coords3D' (3-component vector of float)

-0:51      add second child into first child (4-component vector of float)

-0:51        'color' (4-component vector of float)

-0:51        Function Call: shadow2D(sS21;vf3;f1; (4-component vector of float)

+0:50          'coords3D' (temp 3-component vector of float)

+0:51      add second child into first child (temp 4-component vector of float)

+0:51        'color' (temp 4-component vector of float)

+0:51        Function Call: shadow2D(sS21;vf3;f1; (global 4-component vector of float)

 0:51          'shadowSampler2D' (uniform sampler2DShadow)

-0:51          'coords3D' (3-component vector of float)

-0:51          'bias' (float)

-0:52      add second child into first child (4-component vector of float)

-0:52        'color' (4-component vector of float)

-0:52        Function Call: shadow1DProj(sS11;vf4; (4-component vector of float)

+0:51          'coords3D' (temp 3-component vector of float)

+0:51          'bias' (temp float)

+0:52      add second child into first child (temp 4-component vector of float)

+0:52        'color' (temp 4-component vector of float)

+0:52        Function Call: shadow1DProj(sS11;vf4; (global 4-component vector of float)

 0:52          'shadowSampler1D' (uniform sampler1DShadow)

-0:52          'coords4D' (4-component vector of float)

-0:53      add second child into first child (4-component vector of float)

-0:53        'color' (4-component vector of float)

-0:53        Function Call: shadow1DProj(sS11;vf4;f1; (4-component vector of float)

+0:52          'coords4D' (temp 4-component vector of float)

+0:53      add second child into first child (temp 4-component vector of float)

+0:53        'color' (temp 4-component vector of float)

+0:53        Function Call: shadow1DProj(sS11;vf4;f1; (global 4-component vector of float)

 0:53          'shadowSampler1D' (uniform sampler1DShadow)

-0:53          'coords4D' (4-component vector of float)

-0:53          'bias' (float)

-0:54      add second child into first child (4-component vector of float)

-0:54        'color' (4-component vector of float)

-0:54        Function Call: shadow2DProj(sS21;vf4; (4-component vector of float)

+0:53          'coords4D' (temp 4-component vector of float)

+0:53          'bias' (temp float)

+0:54      add second child into first child (temp 4-component vector of float)

+0:54        'color' (temp 4-component vector of float)

+0:54        Function Call: shadow2DProj(sS21;vf4; (global 4-component vector of float)

 0:54          'shadowSampler2D' (uniform sampler2DShadow)

-0:54          'coords4D' (4-component vector of float)

-0:55      add second child into first child (4-component vector of float)

-0:55        'color' (4-component vector of float)

-0:55        Function Call: shadow2DProj(sS21;vf4;f1; (4-component vector of float)

+0:54          'coords4D' (temp 4-component vector of float)

+0:55      add second child into first child (temp 4-component vector of float)

+0:55        'color' (temp 4-component vector of float)

+0:55        Function Call: shadow2DProj(sS21;vf4;f1; (global 4-component vector of float)

 0:55          'shadowSampler2D' (uniform sampler2DShadow)

-0:55          'coords4D' (4-component vector of float)

-0:55          'bias' (float)

+0:55          'coords4D' (temp 4-component vector of float)

+0:55          'bias' (temp float)

 0:57      Sequence

-0:57        move second child to first child (2-component vector of int)

-0:57          'iCoords2D' (2-component vector of int)

+0:57        move second child to first child (temp 2-component vector of int)

+0:57          'iCoords2D' (temp 2-component vector of int)

 0:57          Constant:

 0:57            0 (const int)

 0:57            5 (const int)

 0:58      Sequence

-0:58        move second child to first child (int)

-0:58          'iLod' (int)

+0:58        move second child to first child (temp int)

+0:58          'iLod' (temp int)

 0:58          Constant:

 0:58            1 (const int)

-0:60      add second child into first child (4-component vector of float)

-0:60        'color' (4-component vector of float)

-0:60        Function Call: texelFetch(s21;vi2;i1; (4-component vector of float)

+0:60      add second child into first child (temp 4-component vector of float)

+0:60        'color' (temp 4-component vector of float)

+0:60        Function Call: texelFetch(s21;vi2;i1; (global 4-component vector of float)

 0:60          'texSampler2D' (uniform sampler2D)

-0:60          'iCoords2D' (2-component vector of int)

-0:60          'iLod' (int)

+0:60          'iCoords2D' (temp 2-component vector of int)

+0:60          'iLod' (temp int)

 0:62      Sequence

-0:62        move second child to first child (2-component vector of float)

-0:62          'gradX' (2-component vector of float)

-0:62          dPdx (2-component vector of float)

+0:62        move second child to first child (temp 2-component vector of float)

+0:62          'gradX' (temp 2-component vector of float)

+0:62          dPdx (global 2-component vector of float)

 0:62            'coords2D' (smooth in 2-component vector of float)

 0:63      Sequence

-0:63        move second child to first child (2-component vector of float)

-0:63          'gradY' (2-component vector of float)

-0:63          dPdy (2-component vector of float)

+0:63        move second child to first child (temp 2-component vector of float)

+0:63          'gradY' (temp 2-component vector of float)

+0:63          dPdy (global 2-component vector of float)

 0:63            'coords2D' (smooth in 2-component vector of float)

-0:66      add second child into first child (4-component vector of float)

-0:66        'color' (4-component vector of float)

-0:66        Function Call: textureGrad(s21;vf2;vf2;vf2; (4-component vector of float)

+0:66      add second child into first child (temp 4-component vector of float)

+0:66        'color' (temp 4-component vector of float)

+0:66        Function Call: textureGrad(s21;vf2;vf2;vf2; (global 4-component vector of float)

 0:66          'texSampler2D' (uniform sampler2D)

 0:66          'coords2D' (smooth in 2-component vector of float)

-0:66          'gradX' (2-component vector of float)

-0:66          'gradY' (2-component vector of float)

-0:67      add second child into first child (4-component vector of float)

-0:67        'color' (4-component vector of float)

-0:67        Function Call: textureProjGrad(s21;vf3;vf2;vf2; (4-component vector of float)

+0:66          'gradX' (temp 2-component vector of float)

+0:66          'gradY' (temp 2-component vector of float)

+0:67      add second child into first child (temp 4-component vector of float)

+0:67        'color' (temp 4-component vector of float)

+0:67        Function Call: textureProjGrad(s21;vf3;vf2;vf2; (global 4-component vector of float)

 0:67          'texSampler2D' (uniform sampler2D)

-0:67          Construct vec3 (3-component vector of float)

+0:67          Construct vec3 (temp 3-component vector of float)

 0:67            'coords2D' (smooth in 2-component vector of float)

-0:67            'proj' (float)

-0:67          'gradX' (2-component vector of float)

-0:67          'gradY' (2-component vector of float)

-0:68      add second child into first child (4-component vector of float)

-0:68        'color' (4-component vector of float)

-0:68        Function Call: textureGradOffset(s21;vf2;vf2;vf2;vi2; (4-component vector of float)

+0:67            'proj' (temp float)

+0:67          'gradX' (temp 2-component vector of float)

+0:67          'gradY' (temp 2-component vector of float)

+0:68      add second child into first child (temp 4-component vector of float)

+0:68        'color' (temp 4-component vector of float)

+0:68        Function Call: textureGradOffset(s21;vf2;vf2;vf2;vi2; (global 4-component vector of float)

 0:68          'texSampler2D' (uniform sampler2D)

 0:68          'coords2D' (smooth in 2-component vector of float)

-0:68          'gradX' (2-component vector of float)

-0:68          'gradY' (2-component vector of float)

+0:68          'gradX' (temp 2-component vector of float)

+0:68          'gradY' (temp 2-component vector of float)

 0:68          Constant:

 0:68            3 (const int)

 0:68            -7 (const int)

-0:69      add second child into first child (4-component vector of float)

-0:69        'color' (4-component vector of float)

-0:69        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (4-component vector of float)

+0:69      add second child into first child (temp 4-component vector of float)

+0:69        'color' (temp 4-component vector of float)

+0:69        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (global 4-component vector of float)

 0:69          'texSampler2D' (uniform sampler2D)

-0:69          'coords3D' (3-component vector of float)

-0:69          'gradX' (2-component vector of float)

-0:69          'gradY' (2-component vector of float)

+0:69          'coords3D' (temp 3-component vector of float)

+0:69          'gradX' (temp 2-component vector of float)

+0:69          'gradY' (temp 2-component vector of float)

 0:69          Constant:

 0:69            3 (const int)

 0:69            -7 (const int)

-0:70      add second child into first child (4-component vector of float)

-0:70        'color' (4-component vector of float)

-0:70        Function Call: textureGrad(sS21;vf3;vf2;vf2; (float)

+0:70      add second child into first child (temp 4-component vector of float)

+0:70        'color' (temp 4-component vector of float)

+0:70        Function Call: textureGrad(sS21;vf3;vf2;vf2; (global float)

 0:70          'shadowSampler2D' (uniform sampler2DShadow)

-0:70          Construct vec3 (3-component vector of float)

+0:70          Construct vec3 (temp 3-component vector of float)

 0:70            'coords2D' (smooth in 2-component vector of float)

-0:70            'lod' (float)

-0:70          'gradX' (2-component vector of float)

-0:70          'gradY' (2-component vector of float)

-0:72      move second child to first child (4-component vector of float)

+0:70            'lod' (temp float)

+0:70          'gradX' (temp 2-component vector of float)

+0:70          'gradY' (temp 2-component vector of float)

+0:72      move second child to first child (temp 4-component vector of float)

 0:72        'gl_FragColor' (fragColor 4-component vector of float)

-0:72        mix (4-component vector of float)

-0:72          'color' (4-component vector of float)

+0:72        mix (global 4-component vector of float)

+0:72          'color' (temp 4-component vector of float)

 0:72          'u' (uniform 4-component vector of float)

-0:72          component-wise multiply (float)

+0:72          component-wise multiply (temp float)

 0:72            'blend' (uniform float)

-0:72            'blendscale' (float)

+0:72            'blendscale' (temp float)

 0:?   Linker Objects

 0:?     'texSampler1D' (uniform sampler1D)

 0:?     'texSampler2D' (uniform sampler2D)

@@ -286,269 +286,269 @@
 

 Shader version: 130

 0:? Sequence

-0:17  Function Definition: main( (void)

+0:17  Function Definition: main( (global void)

 0:17    Function Parameters: 

 0:19    Sequence

 0:19      Sequence

-0:19        move second child to first child (float)

-0:19          'blendscale' (float)

+0:19        move second child to first child (temp float)

+0:19          'blendscale' (temp float)

 0:19          Constant:

 0:19            1.789000

 0:20      Sequence

-0:20        move second child to first child (float)

-0:20          'bias' (float)

+0:20        move second child to first child (temp float)

+0:20          'bias' (temp float)

 0:20          Constant:

 0:20            2.000000

 0:21      Sequence

-0:21        move second child to first child (float)

-0:21          'lod' (float)

+0:21        move second child to first child (temp float)

+0:21          'lod' (temp float)

 0:21          Constant:

 0:21            3.000000

 0:22      Sequence

-0:22        move second child to first child (float)

-0:22          'proj' (float)

+0:22        move second child to first child (temp float)

+0:22          'proj' (temp float)

 0:22          Constant:

 0:22            2.000000

 0:23      Sequence

-0:23        move second child to first child (float)

-0:23          'coords1D' (float)

+0:23        move second child to first child (temp float)

+0:23          'coords1D' (temp float)

 0:23          Constant:

 0:23            1.789000

 0:24      Sequence

-0:24        move second child to first child (3-component vector of float)

-0:24          'coords3D' (3-component vector of float)

+0:24        move second child to first child (temp 3-component vector of float)

+0:24          'coords3D' (temp 3-component vector of float)

 0:24          Constant:

 0:24            1.789000

 0:24            2.718000

 0:24            3.453000

 0:25      Sequence

-0:25        move second child to first child (4-component vector of float)

-0:25          'coords4D' (4-component vector of float)

+0:25        move second child to first child (temp 4-component vector of float)

+0:25          'coords4D' (temp 4-component vector of float)

 0:25          Constant:

 0:25            1.789000

 0:25            2.718000

 0:25            3.453000

 0:25            2.000000

 0:26      Sequence

-0:26        move second child to first child (4-component vector of float)

-0:26          'color' (4-component vector of float)

+0:26        move second child to first child (temp 4-component vector of float)

+0:26          'color' (temp 4-component vector of float)

 0:26          Constant:

 0:26            0.000000

 0:26            0.000000

 0:26            0.000000

 0:26            0.000000

-0:28      add second child into first child (4-component vector of float)

-0:28        'color' (4-component vector of float)

-0:28        Function Call: texture1D(s11;f1; (4-component vector of float)

+0:28      add second child into first child (temp 4-component vector of float)

+0:28        'color' (temp 4-component vector of float)

+0:28        Function Call: texture1D(s11;f1; (global 4-component vector of float)

 0:28          'texSampler1D' (uniform sampler1D)

-0:28          'coords1D' (float)

-0:29      add second child into first child (4-component vector of float)

-0:29        'color' (4-component vector of float)

-0:29        Function Call: texture1D(s11;f1;f1; (4-component vector of float)

+0:28          'coords1D' (temp float)

+0:29      add second child into first child (temp 4-component vector of float)

+0:29        'color' (temp 4-component vector of float)

+0:29        Function Call: texture1D(s11;f1;f1; (global 4-component vector of float)

 0:29          'texSampler1D' (uniform sampler1D)

-0:29          'coords1D' (float)

-0:29          'bias' (float)

-0:30      add second child into first child (4-component vector of float)

-0:30        'color' (4-component vector of float)

-0:30        Function Call: texture1DProj(s11;vf2; (4-component vector of float)

+0:29          'coords1D' (temp float)

+0:29          'bias' (temp float)

+0:30      add second child into first child (temp 4-component vector of float)

+0:30        'color' (temp 4-component vector of float)

+0:30        Function Call: texture1DProj(s11;vf2; (global 4-component vector of float)

 0:30          'texSampler1D' (uniform sampler1D)

 0:30          'coords2D' (smooth in 2-component vector of float)

-0:31      add second child into first child (4-component vector of float)

-0:31        'color' (4-component vector of float)

-0:31        Function Call: texture1DProj(s11;vf4; (4-component vector of float)

+0:31      add second child into first child (temp 4-component vector of float)

+0:31        'color' (temp 4-component vector of float)

+0:31        Function Call: texture1DProj(s11;vf4; (global 4-component vector of float)

 0:31          'texSampler1D' (uniform sampler1D)

-0:31          'coords4D' (4-component vector of float)

-0:32      add second child into first child (4-component vector of float)

-0:32        'color' (4-component vector of float)

-0:32        Function Call: texture1DProj(s11;vf2;f1; (4-component vector of float)

+0:31          'coords4D' (temp 4-component vector of float)

+0:32      add second child into first child (temp 4-component vector of float)

+0:32        'color' (temp 4-component vector of float)

+0:32        Function Call: texture1DProj(s11;vf2;f1; (global 4-component vector of float)

 0:32          'texSampler1D' (uniform sampler1D)

 0:32          'coords2D' (smooth in 2-component vector of float)

-0:32          'bias' (float)

-0:33      add second child into first child (4-component vector of float)

-0:33        'color' (4-component vector of float)

-0:33        Function Call: texture1DProj(s11;vf4;f1; (4-component vector of float)

+0:32          'bias' (temp float)

+0:33      add second child into first child (temp 4-component vector of float)

+0:33        'color' (temp 4-component vector of float)

+0:33        Function Call: texture1DProj(s11;vf4;f1; (global 4-component vector of float)

 0:33          'texSampler1D' (uniform sampler1D)

-0:33          'coords4D' (4-component vector of float)

-0:33          'bias' (float)

-0:35      add second child into first child (4-component vector of float)

-0:35        'color' (4-component vector of float)

-0:35        Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:33          'coords4D' (temp 4-component vector of float)

+0:33          'bias' (temp float)

+0:35      add second child into first child (temp 4-component vector of float)

+0:35        'color' (temp 4-component vector of float)

+0:35        Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:35          'texSampler2D' (uniform sampler2D)

 0:35          'coords2D' (smooth in 2-component vector of float)

-0:36      add second child into first child (4-component vector of float)

-0:36        'color' (4-component vector of float)

-0:36        Function Call: texture2D(s21;vf2;f1; (4-component vector of float)

+0:36      add second child into first child (temp 4-component vector of float)

+0:36        'color' (temp 4-component vector of float)

+0:36        Function Call: texture2D(s21;vf2;f1; (global 4-component vector of float)

 0:36          'texSampler2D' (uniform sampler2D)

 0:36          'coords2D' (smooth in 2-component vector of float)

-0:36          'bias' (float)

-0:37      add second child into first child (4-component vector of float)

-0:37        'color' (4-component vector of float)

-0:37        Function Call: texture2DProj(s21;vf3; (4-component vector of float)

+0:36          'bias' (temp float)

+0:37      add second child into first child (temp 4-component vector of float)

+0:37        'color' (temp 4-component vector of float)

+0:37        Function Call: texture2DProj(s21;vf3; (global 4-component vector of float)

 0:37          'texSampler2D' (uniform sampler2D)

-0:37          'coords3D' (3-component vector of float)

-0:38      add second child into first child (4-component vector of float)

-0:38        'color' (4-component vector of float)

-0:38        Function Call: texture2DProj(s21;vf4;f1; (4-component vector of float)

+0:37          'coords3D' (temp 3-component vector of float)

+0:38      add second child into first child (temp 4-component vector of float)

+0:38        'color' (temp 4-component vector of float)

+0:38        Function Call: texture2DProj(s21;vf4;f1; (global 4-component vector of float)

 0:38          'texSampler2D' (uniform sampler2D)

-0:38          'coords4D' (4-component vector of float)

-0:38          'bias' (float)

-0:40      add second child into first child (4-component vector of float)

-0:40        'color' (4-component vector of float)

-0:40        Function Call: texture3D(s31;vf3; (4-component vector of float)

+0:38          'coords4D' (temp 4-component vector of float)

+0:38          'bias' (temp float)

+0:40      add second child into first child (temp 4-component vector of float)

+0:40        'color' (temp 4-component vector of float)

+0:40        Function Call: texture3D(s31;vf3; (global 4-component vector of float)

 0:40          'texSampler3D' (uniform sampler3D)

-0:40          'coords3D' (3-component vector of float)

-0:41      add second child into first child (4-component vector of float)

-0:41        'color' (4-component vector of float)

-0:41        Function Call: texture3D(s31;vf3;f1; (4-component vector of float)

+0:40          'coords3D' (temp 3-component vector of float)

+0:41      add second child into first child (temp 4-component vector of float)

+0:41        'color' (temp 4-component vector of float)

+0:41        Function Call: texture3D(s31;vf3;f1; (global 4-component vector of float)

 0:41          'texSampler3D' (uniform sampler3D)

-0:41          'coords3D' (3-component vector of float)

-0:41          'bias' (float)

-0:42      add second child into first child (4-component vector of float)

-0:42        'color' (4-component vector of float)

-0:42        Function Call: texture3DProj(s31;vf4; (4-component vector of float)

+0:41          'coords3D' (temp 3-component vector of float)

+0:41          'bias' (temp float)

+0:42      add second child into first child (temp 4-component vector of float)

+0:42        'color' (temp 4-component vector of float)

+0:42        Function Call: texture3DProj(s31;vf4; (global 4-component vector of float)

 0:42          'texSampler3D' (uniform sampler3D)

-0:42          'coords4D' (4-component vector of float)

-0:43      add second child into first child (4-component vector of float)

-0:43        'color' (4-component vector of float)

-0:43        Function Call: texture3DProj(s31;vf4;f1; (4-component vector of float)

+0:42          'coords4D' (temp 4-component vector of float)

+0:43      add second child into first child (temp 4-component vector of float)

+0:43        'color' (temp 4-component vector of float)

+0:43        Function Call: texture3DProj(s31;vf4;f1; (global 4-component vector of float)

 0:43          'texSampler3D' (uniform sampler3D)

-0:43          'coords4D' (4-component vector of float)

-0:43          'bias' (float)

-0:45      add second child into first child (4-component vector of float)

-0:45        'color' (4-component vector of float)

-0:45        Function Call: textureCube(sC1;vf3; (4-component vector of float)

+0:43          'coords4D' (temp 4-component vector of float)

+0:43          'bias' (temp float)

+0:45      add second child into first child (temp 4-component vector of float)

+0:45        'color' (temp 4-component vector of float)

+0:45        Function Call: textureCube(sC1;vf3; (global 4-component vector of float)

 0:45          'texSamplerCube' (uniform samplerCube)

-0:45          'coords3D' (3-component vector of float)

-0:46      add second child into first child (4-component vector of float)

-0:46        'color' (4-component vector of float)

-0:46        Function Call: textureCube(sC1;vf3;f1; (4-component vector of float)

+0:45          'coords3D' (temp 3-component vector of float)

+0:46      add second child into first child (temp 4-component vector of float)

+0:46        'color' (temp 4-component vector of float)

+0:46        Function Call: textureCube(sC1;vf3;f1; (global 4-component vector of float)

 0:46          'texSamplerCube' (uniform samplerCube)

-0:46          'coords3D' (3-component vector of float)

-0:46          'bias' (float)

-0:48      add second child into first child (4-component vector of float)

-0:48        'color' (4-component vector of float)

-0:48        Function Call: shadow1D(sS11;vf3; (4-component vector of float)

+0:46          'coords3D' (temp 3-component vector of float)

+0:46          'bias' (temp float)

+0:48      add second child into first child (temp 4-component vector of float)

+0:48        'color' (temp 4-component vector of float)

+0:48        Function Call: shadow1D(sS11;vf3; (global 4-component vector of float)

 0:48          'shadowSampler1D' (uniform sampler1DShadow)

-0:48          'coords3D' (3-component vector of float)

-0:49      add second child into first child (4-component vector of float)

-0:49        'color' (4-component vector of float)

-0:49        Function Call: shadow1D(sS11;vf3;f1; (4-component vector of float)

+0:48          'coords3D' (temp 3-component vector of float)

+0:49      add second child into first child (temp 4-component vector of float)

+0:49        'color' (temp 4-component vector of float)

+0:49        Function Call: shadow1D(sS11;vf3;f1; (global 4-component vector of float)

 0:49          'shadowSampler1D' (uniform sampler1DShadow)

-0:49          'coords3D' (3-component vector of float)

-0:49          'bias' (float)

-0:50      add second child into first child (4-component vector of float)

-0:50        'color' (4-component vector of float)

-0:50        Function Call: shadow2D(sS21;vf3; (4-component vector of float)

+0:49          'coords3D' (temp 3-component vector of float)

+0:49          'bias' (temp float)

+0:50      add second child into first child (temp 4-component vector of float)

+0:50        'color' (temp 4-component vector of float)

+0:50        Function Call: shadow2D(sS21;vf3; (global 4-component vector of float)

 0:50          'shadowSampler2D' (uniform sampler2DShadow)

-0:50          'coords3D' (3-component vector of float)

-0:51      add second child into first child (4-component vector of float)

-0:51        'color' (4-component vector of float)

-0:51        Function Call: shadow2D(sS21;vf3;f1; (4-component vector of float)

+0:50          'coords3D' (temp 3-component vector of float)

+0:51      add second child into first child (temp 4-component vector of float)

+0:51        'color' (temp 4-component vector of float)

+0:51        Function Call: shadow2D(sS21;vf3;f1; (global 4-component vector of float)

 0:51          'shadowSampler2D' (uniform sampler2DShadow)

-0:51          'coords3D' (3-component vector of float)

-0:51          'bias' (float)

-0:52      add second child into first child (4-component vector of float)

-0:52        'color' (4-component vector of float)

-0:52        Function Call: shadow1DProj(sS11;vf4; (4-component vector of float)

+0:51          'coords3D' (temp 3-component vector of float)

+0:51          'bias' (temp float)

+0:52      add second child into first child (temp 4-component vector of float)

+0:52        'color' (temp 4-component vector of float)

+0:52        Function Call: shadow1DProj(sS11;vf4; (global 4-component vector of float)

 0:52          'shadowSampler1D' (uniform sampler1DShadow)

-0:52          'coords4D' (4-component vector of float)

-0:53      add second child into first child (4-component vector of float)

-0:53        'color' (4-component vector of float)

-0:53        Function Call: shadow1DProj(sS11;vf4;f1; (4-component vector of float)

+0:52          'coords4D' (temp 4-component vector of float)

+0:53      add second child into first child (temp 4-component vector of float)

+0:53        'color' (temp 4-component vector of float)

+0:53        Function Call: shadow1DProj(sS11;vf4;f1; (global 4-component vector of float)

 0:53          'shadowSampler1D' (uniform sampler1DShadow)

-0:53          'coords4D' (4-component vector of float)

-0:53          'bias' (float)

-0:54      add second child into first child (4-component vector of float)

-0:54        'color' (4-component vector of float)

-0:54        Function Call: shadow2DProj(sS21;vf4; (4-component vector of float)

+0:53          'coords4D' (temp 4-component vector of float)

+0:53          'bias' (temp float)

+0:54      add second child into first child (temp 4-component vector of float)

+0:54        'color' (temp 4-component vector of float)

+0:54        Function Call: shadow2DProj(sS21;vf4; (global 4-component vector of float)

 0:54          'shadowSampler2D' (uniform sampler2DShadow)

-0:54          'coords4D' (4-component vector of float)

-0:55      add second child into first child (4-component vector of float)

-0:55        'color' (4-component vector of float)

-0:55        Function Call: shadow2DProj(sS21;vf4;f1; (4-component vector of float)

+0:54          'coords4D' (temp 4-component vector of float)

+0:55      add second child into first child (temp 4-component vector of float)

+0:55        'color' (temp 4-component vector of float)

+0:55        Function Call: shadow2DProj(sS21;vf4;f1; (global 4-component vector of float)

 0:55          'shadowSampler2D' (uniform sampler2DShadow)

-0:55          'coords4D' (4-component vector of float)

-0:55          'bias' (float)

+0:55          'coords4D' (temp 4-component vector of float)

+0:55          'bias' (temp float)

 0:57      Sequence

-0:57        move second child to first child (2-component vector of int)

-0:57          'iCoords2D' (2-component vector of int)

+0:57        move second child to first child (temp 2-component vector of int)

+0:57          'iCoords2D' (temp 2-component vector of int)

 0:57          Constant:

 0:57            0 (const int)

 0:57            5 (const int)

 0:58      Sequence

-0:58        move second child to first child (int)

-0:58          'iLod' (int)

+0:58        move second child to first child (temp int)

+0:58          'iLod' (temp int)

 0:58          Constant:

 0:58            1 (const int)

-0:60      add second child into first child (4-component vector of float)

-0:60        'color' (4-component vector of float)

-0:60        Function Call: texelFetch(s21;vi2;i1; (4-component vector of float)

+0:60      add second child into first child (temp 4-component vector of float)

+0:60        'color' (temp 4-component vector of float)

+0:60        Function Call: texelFetch(s21;vi2;i1; (global 4-component vector of float)

 0:60          'texSampler2D' (uniform sampler2D)

-0:60          'iCoords2D' (2-component vector of int)

-0:60          'iLod' (int)

+0:60          'iCoords2D' (temp 2-component vector of int)

+0:60          'iLod' (temp int)

 0:62      Sequence

-0:62        move second child to first child (2-component vector of float)

-0:62          'gradX' (2-component vector of float)

-0:62          dPdx (2-component vector of float)

+0:62        move second child to first child (temp 2-component vector of float)

+0:62          'gradX' (temp 2-component vector of float)

+0:62          dPdx (global 2-component vector of float)

 0:62            'coords2D' (smooth in 2-component vector of float)

 0:63      Sequence

-0:63        move second child to first child (2-component vector of float)

-0:63          'gradY' (2-component vector of float)

-0:63          dPdy (2-component vector of float)

+0:63        move second child to first child (temp 2-component vector of float)

+0:63          'gradY' (temp 2-component vector of float)

+0:63          dPdy (global 2-component vector of float)

 0:63            'coords2D' (smooth in 2-component vector of float)

-0:66      add second child into first child (4-component vector of float)

-0:66        'color' (4-component vector of float)

-0:66        Function Call: textureGrad(s21;vf2;vf2;vf2; (4-component vector of float)

+0:66      add second child into first child (temp 4-component vector of float)

+0:66        'color' (temp 4-component vector of float)

+0:66        Function Call: textureGrad(s21;vf2;vf2;vf2; (global 4-component vector of float)

 0:66          'texSampler2D' (uniform sampler2D)

 0:66          'coords2D' (smooth in 2-component vector of float)

-0:66          'gradX' (2-component vector of float)

-0:66          'gradY' (2-component vector of float)

-0:67      add second child into first child (4-component vector of float)

-0:67        'color' (4-component vector of float)

-0:67        Function Call: textureProjGrad(s21;vf3;vf2;vf2; (4-component vector of float)

+0:66          'gradX' (temp 2-component vector of float)

+0:66          'gradY' (temp 2-component vector of float)

+0:67      add second child into first child (temp 4-component vector of float)

+0:67        'color' (temp 4-component vector of float)

+0:67        Function Call: textureProjGrad(s21;vf3;vf2;vf2; (global 4-component vector of float)

 0:67          'texSampler2D' (uniform sampler2D)

-0:67          Construct vec3 (3-component vector of float)

+0:67          Construct vec3 (temp 3-component vector of float)

 0:67            'coords2D' (smooth in 2-component vector of float)

-0:67            'proj' (float)

-0:67          'gradX' (2-component vector of float)

-0:67          'gradY' (2-component vector of float)

-0:68      add second child into first child (4-component vector of float)

-0:68        'color' (4-component vector of float)

-0:68        Function Call: textureGradOffset(s21;vf2;vf2;vf2;vi2; (4-component vector of float)

+0:67            'proj' (temp float)

+0:67          'gradX' (temp 2-component vector of float)

+0:67          'gradY' (temp 2-component vector of float)

+0:68      add second child into first child (temp 4-component vector of float)

+0:68        'color' (temp 4-component vector of float)

+0:68        Function Call: textureGradOffset(s21;vf2;vf2;vf2;vi2; (global 4-component vector of float)

 0:68          'texSampler2D' (uniform sampler2D)

 0:68          'coords2D' (smooth in 2-component vector of float)

-0:68          'gradX' (2-component vector of float)

-0:68          'gradY' (2-component vector of float)

+0:68          'gradX' (temp 2-component vector of float)

+0:68          'gradY' (temp 2-component vector of float)

 0:68          Constant:

 0:68            3 (const int)

 0:68            -7 (const int)

-0:69      add second child into first child (4-component vector of float)

-0:69        'color' (4-component vector of float)

-0:69        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (4-component vector of float)

+0:69      add second child into first child (temp 4-component vector of float)

+0:69        'color' (temp 4-component vector of float)

+0:69        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (global 4-component vector of float)

 0:69          'texSampler2D' (uniform sampler2D)

-0:69          'coords3D' (3-component vector of float)

-0:69          'gradX' (2-component vector of float)

-0:69          'gradY' (2-component vector of float)

+0:69          'coords3D' (temp 3-component vector of float)

+0:69          'gradX' (temp 2-component vector of float)

+0:69          'gradY' (temp 2-component vector of float)

 0:69          Constant:

 0:69            3 (const int)

 0:69            -7 (const int)

-0:70      add second child into first child (4-component vector of float)

-0:70        'color' (4-component vector of float)

-0:70        Function Call: textureGrad(sS21;vf3;vf2;vf2; (float)

+0:70      add second child into first child (temp 4-component vector of float)

+0:70        'color' (temp 4-component vector of float)

+0:70        Function Call: textureGrad(sS21;vf3;vf2;vf2; (global float)

 0:70          'shadowSampler2D' (uniform sampler2DShadow)

-0:70          Construct vec3 (3-component vector of float)

+0:70          Construct vec3 (temp 3-component vector of float)

 0:70            'coords2D' (smooth in 2-component vector of float)

-0:70            'lod' (float)

-0:70          'gradX' (2-component vector of float)

-0:70          'gradY' (2-component vector of float)

-0:72      move second child to first child (4-component vector of float)

+0:70            'lod' (temp float)

+0:70          'gradX' (temp 2-component vector of float)

+0:70          'gradY' (temp 2-component vector of float)

+0:72      move second child to first child (temp 4-component vector of float)

 0:72        'gl_FragColor' (fragColor 4-component vector of float)

-0:72        mix (4-component vector of float)

-0:72          'color' (4-component vector of float)

+0:72        mix (global 4-component vector of float)

+0:72          'color' (temp 4-component vector of float)

 0:72          'u' (uniform 4-component vector of float)

-0:72          component-wise multiply (float)

+0:72          component-wise multiply (temp float)

 0:72            'blend' (uniform float)

-0:72            'blendscale' (float)

+0:72            'blendscale' (temp float)

 0:?   Linker Objects

 0:?     'texSampler1D' (uniform sampler1D)

 0:?     'texSampler2D' (uniform sampler2D)

diff --git a/Test/baseResults/tokenLength.vert.out b/Test/baseResults/tokenLength.vert.out
index 8ad75c4..e65fcfc 100644
--- a/Test/baseResults/tokenLength.vert.out
+++ b/Test/baseResults/tokenLength.vert.out
@@ -19,92 +19,92 @@
 Shader version: 300

 ERROR: node is still EOpNull!

 0:9  Sequence

-0:9    move second child to first child (highp int)

-0:9      'E1' (highp int)

+0:9    move second child to first child (temp highp int)

+0:9      'E1' (global highp int)

 0:9      Constant:

 0:9        -1 (const int)

 0:10  Sequence

-0:10    move second child to first child (highp int)

-0:10      'E2' (highp int)

+0:10    move second child to first child (temp highp int)

+0:10      'E2' (global highp int)

 0:10      Constant:

 0:10        -1 (const int)

 0:11  Sequence

-0:11    move second child to first child (highp int)

-0:11      'B' (highp int)

+0:11    move second child to first child (temp highp int)

+0:11      'B' (global highp int)

 0:11      Constant:

 0:11        -1 (const int)

 0:13  Sequence

-0:13    move second child to first child (highp int)

-0:13      'OE' (highp int)

+0:13    move second child to first child (temp highp int)

+0:13      'OE' (global highp int)

 0:13      Constant:

 0:13        1073741823 (const int)

 0:14  Sequence

-0:14    move second child to first child (highp int)

-0:14      'HE' (highp int)

+0:14    move second child to first child (temp highp int)

+0:14      'HE' (global highp int)

 0:14      Constant:

 0:14        -1 (const int)

 0:17  Sequence

-0:17    move second child to first child (highp float)

-0:17      'F' (highp float)

+0:17    move second child to first child (temp highp float)

+0:17      'F' (global highp float)

 0:17      Constant:

 0:17        1.012346

 0:20  Sequence

-0:20    move second child to first child (highp float)

-0:20      'G' (highp float)

+0:20    move second child to first child (temp highp float)

+0:20      'G' (global highp float)

 0:20      Constant:

 0:20        1.012346

 0:23  Sequence

-0:23    move second child to first child (highp float)

-0:23      'E3' (highp float)

+0:23    move second child to first child (temp highp float)

+0:23      'E3' (global highp float)

 0:23      Constant:

 0:23        12.000000

-0:25  Function Definition: main( (void)

+0:25  Function Definition: main( (global void)

 0:25    Function Parameters: 

 0:27    Sequence

-0:27      move second child to first child (highp 4-component vector of float)

+0:27      move second child to first child (temp highp 4-component vector of float)

 0:27        'gl_Position' (gl_Position highp 4-component vector of float)

-0:28        Construct vec4 (highp 4-component vector of float)

+0:28        Construct vec4 (temp highp 4-component vector of float)

 0:27          'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' (in highp float)

-0:28          Convert int to float (highp float)

-0:28            'B' (highp int)

-0:28          'F' (highp float)

-0:28          'G' (highp float)

+0:28          Convert int to float (temp highp float)

+0:28            'B' (global highp int)

+0:28          'F' (global highp float)

+0:28          'G' (global highp float)

 0:33  Sequence

-0:33    move second child to first child (highp int)

-0:33      'superH' (highp int)

+0:33    move second child to first child (temp highp int)

+0:33      'superH' (global highp int)

 0:33      Constant:

 0:33        -1 (const int)

 0:34  Sequence

-0:34    move second child to first child (highp int)

-0:34      'superO' (highp int)

+0:34    move second child to first child (temp highp int)

+0:34      'superO' (global highp int)

 0:34      Constant:

 0:34        1073741823 (const int)

 0:35  Sequence

-0:35    move second child to first child (highp int)

-0:35      'superI' (highp int)

+0:35    move second child to first child (temp highp int)

+0:35      'superI' (global highp int)

 0:35      Constant:

 0:35        -1 (const int)

 0:36  Sequence

-0:36    move second child to first child (highp float)

-0:36      'superF' (highp float)

+0:36    move second child to first child (temp highp float)

+0:36      'superF' (global highp float)

 0:36      Constant:

 0:36        1.#INF00

 0:?   Linker Objects

 0:?     'BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' (in highp float)

 0:?     'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' (in highp float)

-0:?     'E1' (highp int)

-0:?     'E2' (highp int)

-0:?     'B' (highp int)

-0:?     'OE' (highp int)

-0:?     'HE' (highp int)

-0:?     'F' (highp float)

-0:?     'G' (highp float)

-0:?     'E3' (highp float)

-0:?     'BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789B' (highp float)

-0:?     'superH' (highp int)

-0:?     'superO' (highp int)

-0:?     'superI' (highp int)

-0:?     'superF' (highp float)

+0:?     'E1' (global highp int)

+0:?     'E2' (global highp int)

+0:?     'B' (global highp int)

+0:?     'OE' (global highp int)

+0:?     'HE' (global highp int)

+0:?     'F' (global highp float)

+0:?     'G' (global highp float)

+0:?     'E3' (global highp float)

+0:?     'BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789B' (global highp float)

+0:?     'superH' (global highp int)

+0:?     'superO' (global highp int)

+0:?     'superI' (global highp int)

+0:?     'superF' (global highp float)

 0:?     'gl_VertexID' (gl_VertexId highp int)

 0:?     'gl_InstanceID' (gl_InstanceId highp int)

 

@@ -115,92 +115,92 @@
 Shader version: 300

 ERROR: node is still EOpNull!

 0:9  Sequence

-0:9    move second child to first child (highp int)

-0:9      'E1' (highp int)

+0:9    move second child to first child (temp highp int)

+0:9      'E1' (global highp int)

 0:9      Constant:

 0:9        -1 (const int)

 0:10  Sequence

-0:10    move second child to first child (highp int)

-0:10      'E2' (highp int)

+0:10    move second child to first child (temp highp int)

+0:10      'E2' (global highp int)

 0:10      Constant:

 0:10        -1 (const int)

 0:11  Sequence

-0:11    move second child to first child (highp int)

-0:11      'B' (highp int)

+0:11    move second child to first child (temp highp int)

+0:11      'B' (global highp int)

 0:11      Constant:

 0:11        -1 (const int)

 0:13  Sequence

-0:13    move second child to first child (highp int)

-0:13      'OE' (highp int)

+0:13    move second child to first child (temp highp int)

+0:13      'OE' (global highp int)

 0:13      Constant:

 0:13        1073741823 (const int)

 0:14  Sequence

-0:14    move second child to first child (highp int)

-0:14      'HE' (highp int)

+0:14    move second child to first child (temp highp int)

+0:14      'HE' (global highp int)

 0:14      Constant:

 0:14        -1 (const int)

 0:17  Sequence

-0:17    move second child to first child (highp float)

-0:17      'F' (highp float)

+0:17    move second child to first child (temp highp float)

+0:17      'F' (global highp float)

 0:17      Constant:

 0:17        1.012346

 0:20  Sequence

-0:20    move second child to first child (highp float)

-0:20      'G' (highp float)

+0:20    move second child to first child (temp highp float)

+0:20      'G' (global highp float)

 0:20      Constant:

 0:20        1.012346

 0:23  Sequence

-0:23    move second child to first child (highp float)

-0:23      'E3' (highp float)

+0:23    move second child to first child (temp highp float)

+0:23      'E3' (global highp float)

 0:23      Constant:

 0:23        12.000000

-0:25  Function Definition: main( (void)

+0:25  Function Definition: main( (global void)

 0:25    Function Parameters: 

 0:27    Sequence

-0:27      move second child to first child (highp 4-component vector of float)

+0:27      move second child to first child (temp highp 4-component vector of float)

 0:27        'gl_Position' (gl_Position highp 4-component vector of float)

-0:28        Construct vec4 (highp 4-component vector of float)

+0:28        Construct vec4 (temp highp 4-component vector of float)

 0:27          'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' (in highp float)

-0:28          Convert int to float (highp float)

-0:28            'B' (highp int)

-0:28          'F' (highp float)

-0:28          'G' (highp float)

+0:28          Convert int to float (temp highp float)

+0:28            'B' (global highp int)

+0:28          'F' (global highp float)

+0:28          'G' (global highp float)

 0:33  Sequence

-0:33    move second child to first child (highp int)

-0:33      'superH' (highp int)

+0:33    move second child to first child (temp highp int)

+0:33      'superH' (global highp int)

 0:33      Constant:

 0:33        -1 (const int)

 0:34  Sequence

-0:34    move second child to first child (highp int)

-0:34      'superO' (highp int)

+0:34    move second child to first child (temp highp int)

+0:34      'superO' (global highp int)

 0:34      Constant:

 0:34        1073741823 (const int)

 0:35  Sequence

-0:35    move second child to first child (highp int)

-0:35      'superI' (highp int)

+0:35    move second child to first child (temp highp int)

+0:35      'superI' (global highp int)

 0:35      Constant:

 0:35        -1 (const int)

 0:36  Sequence

-0:36    move second child to first child (highp float)

-0:36      'superF' (highp float)

+0:36    move second child to first child (temp highp float)

+0:36      'superF' (global highp float)

 0:36      Constant:

 0:36        1.#INF00

 0:?   Linker Objects

 0:?     'BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' (in highp float)

 0:?     'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' (in highp float)

-0:?     'E1' (highp int)

-0:?     'E2' (highp int)

-0:?     'B' (highp int)

-0:?     'OE' (highp int)

-0:?     'HE' (highp int)

-0:?     'F' (highp float)

-0:?     'G' (highp float)

-0:?     'E3' (highp float)

-0:?     'BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789B' (highp float)

-0:?     'superH' (highp int)

-0:?     'superO' (highp int)

-0:?     'superI' (highp int)

-0:?     'superF' (highp float)

+0:?     'E1' (global highp int)

+0:?     'E2' (global highp int)

+0:?     'B' (global highp int)

+0:?     'OE' (global highp int)

+0:?     'HE' (global highp int)

+0:?     'F' (global highp float)

+0:?     'G' (global highp float)

+0:?     'E3' (global highp float)

+0:?     'BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789B' (global highp float)

+0:?     'superH' (global highp int)

+0:?     'superO' (global highp int)

+0:?     'superI' (global highp int)

+0:?     'superF' (global highp float)

 0:?     'gl_VertexID' (gl_VertexId highp int)

 0:?     'gl_InstanceID' (gl_InstanceId highp int)

 

diff --git a/Test/baseResults/types.frag.out b/Test/baseResults/types.frag.out
index 1ac0fd9..1051362 100644
--- a/Test/baseResults/types.frag.out
+++ b/Test/baseResults/types.frag.out
@@ -2,306 +2,306 @@
 

 Shader version: 130

 0:? Sequence

-0:33  Function Definition: main( (void)

+0:33  Function Definition: main( (global void)

 0:33    Function Parameters: 

 0:35    Sequence

 0:35      Sequence

-0:35        move second child to first child (bool)

-0:35          'b' (bool)

-0:35          logical-and (bool)

+0:35        move second child to first child (temp bool)

+0:35          'b' (temp bool)

+0:35          logical-and (temp bool)

 0:35            'u_b' (uniform bool)

 0:35            'i_b' (uniform bool)

 0:36      Sequence

-0:36        move second child to first child (2-component vector of bool)

-0:36          'b2' (2-component vector of bool)

-0:36          Construct bvec2 (2-component vector of bool)

-0:36            logical-and (bool)

-0:36              logical-and (bool)

-0:36                logical-and (bool)

-0:36                  direct index (bool)

+0:36        move second child to first child (temp 2-component vector of bool)

+0:36          'b2' (temp 2-component vector of bool)

+0:36          Construct bvec2 (temp 2-component vector of bool)

+0:36            logical-and (temp bool)

+0:36              logical-and (temp bool)

+0:36                logical-and (temp bool)

+0:36                  direct index (temp bool)

 0:36                    'u_b2' (uniform 2-component vector of bool)

 0:36                    Constant:

 0:36                      0 (const int)

-0:36                  direct index (bool)

+0:36                  direct index (temp bool)

 0:36                    'i_b2' (uniform 2-component vector of bool)

 0:36                    Constant:

 0:36                      0 (const int)

-0:36                direct index (bool)

+0:36                direct index (temp bool)

 0:36                  'u_b2' (uniform 2-component vector of bool)

 0:36                  Constant:

 0:36                    1 (const int)

-0:36              direct index (bool)

+0:36              direct index (temp bool)

 0:36                'i_b2' (uniform 2-component vector of bool)

 0:36                Constant:

 0:36                  1 (const int)

 0:37      Sequence

-0:37        move second child to first child (3-component vector of bool)

-0:37          'b3' (3-component vector of bool)

-0:37          Construct bvec3 (3-component vector of bool)

-0:37            logical-and (bool)

-0:37              logical-and (bool)

-0:37                logical-and (bool)

-0:37                  logical-and (bool)

-0:37                    logical-and (bool)

-0:37                      direct index (bool)

+0:37        move second child to first child (temp 3-component vector of bool)

+0:37          'b3' (temp 3-component vector of bool)

+0:37          Construct bvec3 (temp 3-component vector of bool)

+0:37            logical-and (temp bool)

+0:37              logical-and (temp bool)

+0:37                logical-and (temp bool)

+0:37                  logical-and (temp bool)

+0:37                    logical-and (temp bool)

+0:37                      direct index (temp bool)

 0:37                        'u_b3' (uniform 3-component vector of bool)

 0:37                        Constant:

 0:37                          0 (const int)

-0:37                      direct index (bool)

+0:37                      direct index (temp bool)

 0:37                        'i_b3' (uniform 3-component vector of bool)

 0:37                        Constant:

 0:37                          0 (const int)

-0:37                    direct index (bool)

+0:37                    direct index (temp bool)

 0:37                      'u_b3' (uniform 3-component vector of bool)

 0:37                      Constant:

 0:37                        1 (const int)

-0:37                  direct index (bool)

+0:37                  direct index (temp bool)

 0:37                    'i_b3' (uniform 3-component vector of bool)

 0:37                    Constant:

 0:37                      1 (const int)

-0:37                direct index (bool)

+0:37                direct index (temp bool)

 0:37                  'u_b3' (uniform 3-component vector of bool)

 0:37                  Constant:

 0:37                    2 (const int)

-0:37              direct index (bool)

+0:37              direct index (temp bool)

 0:37                'i_b3' (uniform 3-component vector of bool)

 0:37                Constant:

 0:37                  2 (const int)

 0:38      Sequence

-0:38        move second child to first child (4-component vector of bool)

-0:38          'b4' (4-component vector of bool)

-0:38          Construct bvec4 (4-component vector of bool)

-0:38            logical-and (bool)

-0:38              logical-and (bool)

-0:38                logical-and (bool)

-0:38                  logical-and (bool)

-0:38                    logical-and (bool)

-0:38                      logical-and (bool)

-0:38                        logical-and (bool)

-0:38                          direct index (bool)

+0:38        move second child to first child (temp 4-component vector of bool)

+0:38          'b4' (temp 4-component vector of bool)

+0:38          Construct bvec4 (temp 4-component vector of bool)

+0:38            logical-and (temp bool)

+0:38              logical-and (temp bool)

+0:38                logical-and (temp bool)

+0:38                  logical-and (temp bool)

+0:38                    logical-and (temp bool)

+0:38                      logical-and (temp bool)

+0:38                        logical-and (temp bool)

+0:38                          direct index (temp bool)

 0:38                            'u_b4' (uniform 4-component vector of bool)

 0:38                            Constant:

 0:38                              0 (const int)

-0:38                          direct index (bool)

+0:38                          direct index (temp bool)

 0:38                            'i_b4' (uniform 4-component vector of bool)

 0:38                            Constant:

 0:38                              0 (const int)

-0:38                        direct index (bool)

+0:38                        direct index (temp bool)

 0:38                          'u_b4' (uniform 4-component vector of bool)

 0:38                          Constant:

 0:38                            1 (const int)

-0:38                      direct index (bool)

+0:38                      direct index (temp bool)

 0:38                        'i_b4' (uniform 4-component vector of bool)

 0:38                        Constant:

 0:38                          1 (const int)

-0:38                    direct index (bool)

+0:38                    direct index (temp bool)

 0:38                      'u_b4' (uniform 4-component vector of bool)

 0:38                      Constant:

 0:38                        2 (const int)

-0:38                  direct index (bool)

+0:38                  direct index (temp bool)

 0:38                    'i_b4' (uniform 4-component vector of bool)

 0:38                    Constant:

 0:38                      2 (const int)

-0:38                direct index (bool)

+0:38                direct index (temp bool)

 0:38                  'u_b4' (uniform 4-component vector of bool)

 0:38                  Constant:

 0:38                    3 (const int)

-0:38              direct index (bool)

+0:38              direct index (temp bool)

 0:38                'i_b4' (uniform 4-component vector of bool)

 0:38                Constant:

 0:38                  3 (const int)

 0:40      Sequence

-0:40        move second child to first child (int)

-0:40          'i' (int)

-0:40          add (int)

+0:40        move second child to first child (temp int)

+0:40          'i' (temp int)

+0:40          add (temp int)

 0:40            'u_i' (uniform int)

 0:40            'i_i' (flat in int)

 0:41      Sequence

-0:41        move second child to first child (2-component vector of int)

-0:41          'i2' (2-component vector of int)

-0:41          add (2-component vector of int)

+0:41        move second child to first child (temp 2-component vector of int)

+0:41          'i2' (temp 2-component vector of int)

+0:41          add (temp 2-component vector of int)

 0:41            'u_i2' (uniform 2-component vector of int)

 0:41            'i_i2' (flat in 2-component vector of int)

 0:42      Sequence

-0:42        move second child to first child (3-component vector of int)

-0:42          'i3' (3-component vector of int)

-0:42          add (3-component vector of int)

+0:42        move second child to first child (temp 3-component vector of int)

+0:42          'i3' (temp 3-component vector of int)

+0:42          add (temp 3-component vector of int)

 0:42            'u_i3' (uniform 3-component vector of int)

 0:42            'i_i3' (flat in 3-component vector of int)

 0:43      Sequence

-0:43        move second child to first child (4-component vector of int)

-0:43          'i4' (4-component vector of int)

-0:43          add (4-component vector of int)

+0:43        move second child to first child (temp 4-component vector of int)

+0:43          'i4' (temp 4-component vector of int)

+0:43          add (temp 4-component vector of int)

 0:43            'u_i4' (uniform 4-component vector of int)

 0:43            'i_i4' (flat in 4-component vector of int)

 0:45      Sequence

-0:45        move second child to first child (float)

-0:45          'f' (float)

-0:45          add (float)

+0:45        move second child to first child (temp float)

+0:45          'f' (temp float)

+0:45          add (temp float)

 0:45            'u_f' (uniform float)

 0:45            'i_f' (smooth in float)

 0:46      Sequence

-0:46        move second child to first child (2-component vector of float)

-0:46          'f2' (2-component vector of float)

-0:46          add (2-component vector of float)

+0:46        move second child to first child (temp 2-component vector of float)

+0:46          'f2' (temp 2-component vector of float)

+0:46          add (temp 2-component vector of float)

 0:46            'u_f2' (uniform 2-component vector of float)

 0:46            'i_f2' (smooth in 2-component vector of float)

 0:47      Sequence

-0:47        move second child to first child (3-component vector of float)

-0:47          'f3' (3-component vector of float)

-0:47          add (3-component vector of float)

+0:47        move second child to first child (temp 3-component vector of float)

+0:47          'f3' (temp 3-component vector of float)

+0:47          add (temp 3-component vector of float)

 0:47            'u_f3' (uniform 3-component vector of float)

 0:47            'i_f3' (smooth in 3-component vector of float)

 0:48      Sequence

-0:48        move second child to first child (4-component vector of float)

-0:48          'f4' (4-component vector of float)

-0:48          add (4-component vector of float)

+0:48        move second child to first child (temp 4-component vector of float)

+0:48          'f4' (temp 4-component vector of float)

+0:48          add (temp 4-component vector of float)

 0:48            'u_f4' (uniform 4-component vector of float)

 0:48            'i_f4' (smooth in 4-component vector of float)

-0:50      move second child to first child (4-component vector of float)

+0:50      move second child to first child (temp 4-component vector of float)

 0:50        'gl_FragColor' (fragColor 4-component vector of float)

-0:60        Test condition and select (4-component vector of float)

+0:60        Test condition and select (temp 4-component vector of float)

 0:60          Condition

-0:59          logical-or (bool)

-0:58            logical-or (bool)

-0:57              logical-or (bool)

-0:56                logical-or (bool)

-0:55                  logical-or (bool)

-0:54                    logical-or (bool)

-0:53                      logical-or (bool)

-0:52                        logical-or (bool)

-0:51                          logical-or (bool)

-0:51                            'b' (bool)

-0:52                            direct index (bool)

-0:52                              'b2' (2-component vector of bool)

+0:59          logical-or (temp bool)

+0:58            logical-or (temp bool)

+0:57              logical-or (temp bool)

+0:56                logical-or (temp bool)

+0:55                  logical-or (temp bool)

+0:54                    logical-or (temp bool)

+0:53                      logical-or (temp bool)

+0:52                        logical-or (temp bool)

+0:51                          logical-or (temp bool)

+0:51                            'b' (temp bool)

+0:52                            direct index (temp bool)

+0:52                              'b2' (temp 2-component vector of bool)

 0:52                              Constant:

 0:52                                0 (const int)

-0:53                          direct index (bool)

-0:53                            'b2' (2-component vector of bool)

+0:53                          direct index (temp bool)

+0:53                            'b2' (temp 2-component vector of bool)

 0:53                            Constant:

 0:53                              1 (const int)

-0:54                        direct index (bool)

-0:54                          'b3' (3-component vector of bool)

+0:54                        direct index (temp bool)

+0:54                          'b3' (temp 3-component vector of bool)

 0:54                          Constant:

 0:54                            0 (const int)

-0:55                      direct index (bool)

-0:55                        'b3' (3-component vector of bool)

+0:55                      direct index (temp bool)

+0:55                        'b3' (temp 3-component vector of bool)

 0:55                        Constant:

 0:55                          1 (const int)

-0:56                    direct index (bool)

-0:56                      'b3' (3-component vector of bool)

+0:56                    direct index (temp bool)

+0:56                      'b3' (temp 3-component vector of bool)

 0:56                      Constant:

 0:56                        2 (const int)

-0:57                  direct index (bool)

-0:57                    'b4' (4-component vector of bool)

+0:57                  direct index (temp bool)

+0:57                    'b4' (temp 4-component vector of bool)

 0:57                    Constant:

 0:57                      0 (const int)

-0:58                direct index (bool)

-0:58                  'b4' (4-component vector of bool)

+0:58                direct index (temp bool)

+0:58                  'b4' (temp 4-component vector of bool)

 0:58                  Constant:

 0:58                    1 (const int)

-0:59              direct index (bool)

-0:59                'b4' (4-component vector of bool)

+0:59              direct index (temp bool)

+0:59                'b4' (temp 4-component vector of bool)

 0:59                Constant:

 0:59                  2 (const int)

-0:60            direct index (bool)

-0:60              'b4' (4-component vector of bool)

+0:60            direct index (temp bool)

+0:60              'b4' (temp 4-component vector of bool)

 0:60              Constant:

 0:60                3 (const int)

 0:60          true case

-0:79          Construct vec4 (4-component vector of float)

-0:79            add (float)

-0:78              add (float)

-0:77                add (float)

-0:76                  add (float)

-0:75                    add (float)

-0:74                      add (float)

-0:73                        add (float)

-0:72                          add (float)

-0:71                            add (float)

-0:70                              add (float)

-0:69                                Convert int to float (float)

-0:69                                  add (int)

-0:68                                    add (int)

-0:67                                      add (int)

-0:66                                        add (int)

-0:65                                          add (int)

-0:64                                            add (int)

-0:63                                              add (int)

-0:62                                                add (int)

-0:61                                                  add (int)

-0:61                                                    'i' (int)

-0:62                                                    direct index (int)

-0:62                                                      'i2' (2-component vector of int)

+0:79          Construct vec4 (temp 4-component vector of float)

+0:79            add (temp float)

+0:78              add (temp float)

+0:77                add (temp float)

+0:76                  add (temp float)

+0:75                    add (temp float)

+0:74                      add (temp float)

+0:73                        add (temp float)

+0:72                          add (temp float)

+0:71                            add (temp float)

+0:70                              add (temp float)

+0:69                                Convert int to float (temp float)

+0:69                                  add (temp int)

+0:68                                    add (temp int)

+0:67                                      add (temp int)

+0:66                                        add (temp int)

+0:65                                          add (temp int)

+0:64                                            add (temp int)

+0:63                                              add (temp int)

+0:62                                                add (temp int)

+0:61                                                  add (temp int)

+0:61                                                    'i' (temp int)

+0:62                                                    direct index (temp int)

+0:62                                                      'i2' (temp 2-component vector of int)

 0:62                                                      Constant:

 0:62                                                        0 (const int)

-0:63                                                  direct index (int)

-0:63                                                    'i2' (2-component vector of int)

+0:63                                                  direct index (temp int)

+0:63                                                    'i2' (temp 2-component vector of int)

 0:63                                                    Constant:

 0:63                                                      1 (const int)

-0:64                                                direct index (int)

-0:64                                                  'i3' (3-component vector of int)

+0:64                                                direct index (temp int)

+0:64                                                  'i3' (temp 3-component vector of int)

 0:64                                                  Constant:

 0:64                                                    0 (const int)

-0:65                                              direct index (int)

-0:65                                                'i3' (3-component vector of int)

+0:65                                              direct index (temp int)

+0:65                                                'i3' (temp 3-component vector of int)

 0:65                                                Constant:

 0:65                                                  1 (const int)

-0:66                                            direct index (int)

-0:66                                              'i3' (3-component vector of int)

+0:66                                            direct index (temp int)

+0:66                                              'i3' (temp 3-component vector of int)

 0:66                                              Constant:

 0:66                                                2 (const int)

-0:67                                          direct index (int)

-0:67                                            'i4' (4-component vector of int)

+0:67                                          direct index (temp int)

+0:67                                            'i4' (temp 4-component vector of int)

 0:67                                            Constant:

 0:67                                              0 (const int)

-0:68                                        direct index (int)

-0:68                                          'i4' (4-component vector of int)

+0:68                                        direct index (temp int)

+0:68                                          'i4' (temp 4-component vector of int)

 0:68                                          Constant:

 0:68                                            1 (const int)

-0:69                                      direct index (int)

-0:69                                        'i4' (4-component vector of int)

+0:69                                      direct index (temp int)

+0:69                                        'i4' (temp 4-component vector of int)

 0:69                                        Constant:

 0:69                                          2 (const int)

-0:70                                    direct index (int)

-0:70                                      'i4' (4-component vector of int)

+0:70                                    direct index (temp int)

+0:70                                      'i4' (temp 4-component vector of int)

 0:70                                      Constant:

 0:70                                        3 (const int)

-0:71                                'f' (float)

-0:72                              direct index (float)

-0:72                                'f2' (2-component vector of float)

+0:71                                'f' (temp float)

+0:72                              direct index (temp float)

+0:72                                'f2' (temp 2-component vector of float)

 0:72                                Constant:

 0:72                                  0 (const int)

-0:73                            direct index (float)

-0:73                              'f2' (2-component vector of float)

+0:73                            direct index (temp float)

+0:73                              'f2' (temp 2-component vector of float)

 0:73                              Constant:

 0:73                                1 (const int)

-0:74                          direct index (float)

-0:74                            'f3' (3-component vector of float)

+0:74                          direct index (temp float)

+0:74                            'f3' (temp 3-component vector of float)

 0:74                            Constant:

 0:74                              0 (const int)

-0:75                        direct index (float)

-0:75                          'f3' (3-component vector of float)

+0:75                        direct index (temp float)

+0:75                          'f3' (temp 3-component vector of float)

 0:75                          Constant:

 0:75                            1 (const int)

-0:76                      direct index (float)

-0:76                        'f3' (3-component vector of float)

+0:76                      direct index (temp float)

+0:76                        'f3' (temp 3-component vector of float)

 0:76                        Constant:

 0:76                          2 (const int)

-0:77                    direct index (float)

-0:77                      'f4' (4-component vector of float)

+0:77                    direct index (temp float)

+0:77                      'f4' (temp 4-component vector of float)

 0:77                      Constant:

 0:77                        0 (const int)

-0:78                  direct index (float)

-0:78                    'f4' (4-component vector of float)

+0:78                  direct index (temp float)

+0:78                    'f4' (temp 4-component vector of float)

 0:78                    Constant:

 0:78                      1 (const int)

-0:79                direct index (float)

-0:79                  'f4' (4-component vector of float)

+0:79                direct index (temp float)

+0:79                  'f4' (temp 4-component vector of float)

 0:79                  Constant:

 0:79                    2 (const int)

-0:80              direct index (float)

-0:80                'f4' (4-component vector of float)

+0:80              direct index (temp float)

+0:80                'f4' (temp 4-component vector of float)

 0:80                Constant:

 0:80                  3 (const int)

 0:60          false case

@@ -342,306 +342,306 @@
 

 Shader version: 130

 0:? Sequence

-0:33  Function Definition: main( (void)

+0:33  Function Definition: main( (global void)

 0:33    Function Parameters: 

 0:35    Sequence

 0:35      Sequence

-0:35        move second child to first child (bool)

-0:35          'b' (bool)

-0:35          logical-and (bool)

+0:35        move second child to first child (temp bool)

+0:35          'b' (temp bool)

+0:35          logical-and (temp bool)

 0:35            'u_b' (uniform bool)

 0:35            'i_b' (uniform bool)

 0:36      Sequence

-0:36        move second child to first child (2-component vector of bool)

-0:36          'b2' (2-component vector of bool)

-0:36          Construct bvec2 (2-component vector of bool)

-0:36            logical-and (bool)

-0:36              logical-and (bool)

-0:36                logical-and (bool)

-0:36                  direct index (bool)

+0:36        move second child to first child (temp 2-component vector of bool)

+0:36          'b2' (temp 2-component vector of bool)

+0:36          Construct bvec2 (temp 2-component vector of bool)

+0:36            logical-and (temp bool)

+0:36              logical-and (temp bool)

+0:36                logical-and (temp bool)

+0:36                  direct index (temp bool)

 0:36                    'u_b2' (uniform 2-component vector of bool)

 0:36                    Constant:

 0:36                      0 (const int)

-0:36                  direct index (bool)

+0:36                  direct index (temp bool)

 0:36                    'i_b2' (uniform 2-component vector of bool)

 0:36                    Constant:

 0:36                      0 (const int)

-0:36                direct index (bool)

+0:36                direct index (temp bool)

 0:36                  'u_b2' (uniform 2-component vector of bool)

 0:36                  Constant:

 0:36                    1 (const int)

-0:36              direct index (bool)

+0:36              direct index (temp bool)

 0:36                'i_b2' (uniform 2-component vector of bool)

 0:36                Constant:

 0:36                  1 (const int)

 0:37      Sequence

-0:37        move second child to first child (3-component vector of bool)

-0:37          'b3' (3-component vector of bool)

-0:37          Construct bvec3 (3-component vector of bool)

-0:37            logical-and (bool)

-0:37              logical-and (bool)

-0:37                logical-and (bool)

-0:37                  logical-and (bool)

-0:37                    logical-and (bool)

-0:37                      direct index (bool)

+0:37        move second child to first child (temp 3-component vector of bool)

+0:37          'b3' (temp 3-component vector of bool)

+0:37          Construct bvec3 (temp 3-component vector of bool)

+0:37            logical-and (temp bool)

+0:37              logical-and (temp bool)

+0:37                logical-and (temp bool)

+0:37                  logical-and (temp bool)

+0:37                    logical-and (temp bool)

+0:37                      direct index (temp bool)

 0:37                        'u_b3' (uniform 3-component vector of bool)

 0:37                        Constant:

 0:37                          0 (const int)

-0:37                      direct index (bool)

+0:37                      direct index (temp bool)

 0:37                        'i_b3' (uniform 3-component vector of bool)

 0:37                        Constant:

 0:37                          0 (const int)

-0:37                    direct index (bool)

+0:37                    direct index (temp bool)

 0:37                      'u_b3' (uniform 3-component vector of bool)

 0:37                      Constant:

 0:37                        1 (const int)

-0:37                  direct index (bool)

+0:37                  direct index (temp bool)

 0:37                    'i_b3' (uniform 3-component vector of bool)

 0:37                    Constant:

 0:37                      1 (const int)

-0:37                direct index (bool)

+0:37                direct index (temp bool)

 0:37                  'u_b3' (uniform 3-component vector of bool)

 0:37                  Constant:

 0:37                    2 (const int)

-0:37              direct index (bool)

+0:37              direct index (temp bool)

 0:37                'i_b3' (uniform 3-component vector of bool)

 0:37                Constant:

 0:37                  2 (const int)

 0:38      Sequence

-0:38        move second child to first child (4-component vector of bool)

-0:38          'b4' (4-component vector of bool)

-0:38          Construct bvec4 (4-component vector of bool)

-0:38            logical-and (bool)

-0:38              logical-and (bool)

-0:38                logical-and (bool)

-0:38                  logical-and (bool)

-0:38                    logical-and (bool)

-0:38                      logical-and (bool)

-0:38                        logical-and (bool)

-0:38                          direct index (bool)

+0:38        move second child to first child (temp 4-component vector of bool)

+0:38          'b4' (temp 4-component vector of bool)

+0:38          Construct bvec4 (temp 4-component vector of bool)

+0:38            logical-and (temp bool)

+0:38              logical-and (temp bool)

+0:38                logical-and (temp bool)

+0:38                  logical-and (temp bool)

+0:38                    logical-and (temp bool)

+0:38                      logical-and (temp bool)

+0:38                        logical-and (temp bool)

+0:38                          direct index (temp bool)

 0:38                            'u_b4' (uniform 4-component vector of bool)

 0:38                            Constant:

 0:38                              0 (const int)

-0:38                          direct index (bool)

+0:38                          direct index (temp bool)

 0:38                            'i_b4' (uniform 4-component vector of bool)

 0:38                            Constant:

 0:38                              0 (const int)

-0:38                        direct index (bool)

+0:38                        direct index (temp bool)

 0:38                          'u_b4' (uniform 4-component vector of bool)

 0:38                          Constant:

 0:38                            1 (const int)

-0:38                      direct index (bool)

+0:38                      direct index (temp bool)

 0:38                        'i_b4' (uniform 4-component vector of bool)

 0:38                        Constant:

 0:38                          1 (const int)

-0:38                    direct index (bool)

+0:38                    direct index (temp bool)

 0:38                      'u_b4' (uniform 4-component vector of bool)

 0:38                      Constant:

 0:38                        2 (const int)

-0:38                  direct index (bool)

+0:38                  direct index (temp bool)

 0:38                    'i_b4' (uniform 4-component vector of bool)

 0:38                    Constant:

 0:38                      2 (const int)

-0:38                direct index (bool)

+0:38                direct index (temp bool)

 0:38                  'u_b4' (uniform 4-component vector of bool)

 0:38                  Constant:

 0:38                    3 (const int)

-0:38              direct index (bool)

+0:38              direct index (temp bool)

 0:38                'i_b4' (uniform 4-component vector of bool)

 0:38                Constant:

 0:38                  3 (const int)

 0:40      Sequence

-0:40        move second child to first child (int)

-0:40          'i' (int)

-0:40          add (int)

+0:40        move second child to first child (temp int)

+0:40          'i' (temp int)

+0:40          add (temp int)

 0:40            'u_i' (uniform int)

 0:40            'i_i' (flat in int)

 0:41      Sequence

-0:41        move second child to first child (2-component vector of int)

-0:41          'i2' (2-component vector of int)

-0:41          add (2-component vector of int)

+0:41        move second child to first child (temp 2-component vector of int)

+0:41          'i2' (temp 2-component vector of int)

+0:41          add (temp 2-component vector of int)

 0:41            'u_i2' (uniform 2-component vector of int)

 0:41            'i_i2' (flat in 2-component vector of int)

 0:42      Sequence

-0:42        move second child to first child (3-component vector of int)

-0:42          'i3' (3-component vector of int)

-0:42          add (3-component vector of int)

+0:42        move second child to first child (temp 3-component vector of int)

+0:42          'i3' (temp 3-component vector of int)

+0:42          add (temp 3-component vector of int)

 0:42            'u_i3' (uniform 3-component vector of int)

 0:42            'i_i3' (flat in 3-component vector of int)

 0:43      Sequence

-0:43        move second child to first child (4-component vector of int)

-0:43          'i4' (4-component vector of int)

-0:43          add (4-component vector of int)

+0:43        move second child to first child (temp 4-component vector of int)

+0:43          'i4' (temp 4-component vector of int)

+0:43          add (temp 4-component vector of int)

 0:43            'u_i4' (uniform 4-component vector of int)

 0:43            'i_i4' (flat in 4-component vector of int)

 0:45      Sequence

-0:45        move second child to first child (float)

-0:45          'f' (float)

-0:45          add (float)

+0:45        move second child to first child (temp float)

+0:45          'f' (temp float)

+0:45          add (temp float)

 0:45            'u_f' (uniform float)

 0:45            'i_f' (smooth in float)

 0:46      Sequence

-0:46        move second child to first child (2-component vector of float)

-0:46          'f2' (2-component vector of float)

-0:46          add (2-component vector of float)

+0:46        move second child to first child (temp 2-component vector of float)

+0:46          'f2' (temp 2-component vector of float)

+0:46          add (temp 2-component vector of float)

 0:46            'u_f2' (uniform 2-component vector of float)

 0:46            'i_f2' (smooth in 2-component vector of float)

 0:47      Sequence

-0:47        move second child to first child (3-component vector of float)

-0:47          'f3' (3-component vector of float)

-0:47          add (3-component vector of float)

+0:47        move second child to first child (temp 3-component vector of float)

+0:47          'f3' (temp 3-component vector of float)

+0:47          add (temp 3-component vector of float)

 0:47            'u_f3' (uniform 3-component vector of float)

 0:47            'i_f3' (smooth in 3-component vector of float)

 0:48      Sequence

-0:48        move second child to first child (4-component vector of float)

-0:48          'f4' (4-component vector of float)

-0:48          add (4-component vector of float)

+0:48        move second child to first child (temp 4-component vector of float)

+0:48          'f4' (temp 4-component vector of float)

+0:48          add (temp 4-component vector of float)

 0:48            'u_f4' (uniform 4-component vector of float)

 0:48            'i_f4' (smooth in 4-component vector of float)

-0:50      move second child to first child (4-component vector of float)

+0:50      move second child to first child (temp 4-component vector of float)

 0:50        'gl_FragColor' (fragColor 4-component vector of float)

-0:60        Test condition and select (4-component vector of float)

+0:60        Test condition and select (temp 4-component vector of float)

 0:60          Condition

-0:59          logical-or (bool)

-0:58            logical-or (bool)

-0:57              logical-or (bool)

-0:56                logical-or (bool)

-0:55                  logical-or (bool)

-0:54                    logical-or (bool)

-0:53                      logical-or (bool)

-0:52                        logical-or (bool)

-0:51                          logical-or (bool)

-0:51                            'b' (bool)

-0:52                            direct index (bool)

-0:52                              'b2' (2-component vector of bool)

+0:59          logical-or (temp bool)

+0:58            logical-or (temp bool)

+0:57              logical-or (temp bool)

+0:56                logical-or (temp bool)

+0:55                  logical-or (temp bool)

+0:54                    logical-or (temp bool)

+0:53                      logical-or (temp bool)

+0:52                        logical-or (temp bool)

+0:51                          logical-or (temp bool)

+0:51                            'b' (temp bool)

+0:52                            direct index (temp bool)

+0:52                              'b2' (temp 2-component vector of bool)

 0:52                              Constant:

 0:52                                0 (const int)

-0:53                          direct index (bool)

-0:53                            'b2' (2-component vector of bool)

+0:53                          direct index (temp bool)

+0:53                            'b2' (temp 2-component vector of bool)

 0:53                            Constant:

 0:53                              1 (const int)

-0:54                        direct index (bool)

-0:54                          'b3' (3-component vector of bool)

+0:54                        direct index (temp bool)

+0:54                          'b3' (temp 3-component vector of bool)

 0:54                          Constant:

 0:54                            0 (const int)

-0:55                      direct index (bool)

-0:55                        'b3' (3-component vector of bool)

+0:55                      direct index (temp bool)

+0:55                        'b3' (temp 3-component vector of bool)

 0:55                        Constant:

 0:55                          1 (const int)

-0:56                    direct index (bool)

-0:56                      'b3' (3-component vector of bool)

+0:56                    direct index (temp bool)

+0:56                      'b3' (temp 3-component vector of bool)

 0:56                      Constant:

 0:56                        2 (const int)

-0:57                  direct index (bool)

-0:57                    'b4' (4-component vector of bool)

+0:57                  direct index (temp bool)

+0:57                    'b4' (temp 4-component vector of bool)

 0:57                    Constant:

 0:57                      0 (const int)

-0:58                direct index (bool)

-0:58                  'b4' (4-component vector of bool)

+0:58                direct index (temp bool)

+0:58                  'b4' (temp 4-component vector of bool)

 0:58                  Constant:

 0:58                    1 (const int)

-0:59              direct index (bool)

-0:59                'b4' (4-component vector of bool)

+0:59              direct index (temp bool)

+0:59                'b4' (temp 4-component vector of bool)

 0:59                Constant:

 0:59                  2 (const int)

-0:60            direct index (bool)

-0:60              'b4' (4-component vector of bool)

+0:60            direct index (temp bool)

+0:60              'b4' (temp 4-component vector of bool)

 0:60              Constant:

 0:60                3 (const int)

 0:60          true case

-0:79          Construct vec4 (4-component vector of float)

-0:79            add (float)

-0:78              add (float)

-0:77                add (float)

-0:76                  add (float)

-0:75                    add (float)

-0:74                      add (float)

-0:73                        add (float)

-0:72                          add (float)

-0:71                            add (float)

-0:70                              add (float)

-0:69                                Convert int to float (float)

-0:69                                  add (int)

-0:68                                    add (int)

-0:67                                      add (int)

-0:66                                        add (int)

-0:65                                          add (int)

-0:64                                            add (int)

-0:63                                              add (int)

-0:62                                                add (int)

-0:61                                                  add (int)

-0:61                                                    'i' (int)

-0:62                                                    direct index (int)

-0:62                                                      'i2' (2-component vector of int)

+0:79          Construct vec4 (temp 4-component vector of float)

+0:79            add (temp float)

+0:78              add (temp float)

+0:77                add (temp float)

+0:76                  add (temp float)

+0:75                    add (temp float)

+0:74                      add (temp float)

+0:73                        add (temp float)

+0:72                          add (temp float)

+0:71                            add (temp float)

+0:70                              add (temp float)

+0:69                                Convert int to float (temp float)

+0:69                                  add (temp int)

+0:68                                    add (temp int)

+0:67                                      add (temp int)

+0:66                                        add (temp int)

+0:65                                          add (temp int)

+0:64                                            add (temp int)

+0:63                                              add (temp int)

+0:62                                                add (temp int)

+0:61                                                  add (temp int)

+0:61                                                    'i' (temp int)

+0:62                                                    direct index (temp int)

+0:62                                                      'i2' (temp 2-component vector of int)

 0:62                                                      Constant:

 0:62                                                        0 (const int)

-0:63                                                  direct index (int)

-0:63                                                    'i2' (2-component vector of int)

+0:63                                                  direct index (temp int)

+0:63                                                    'i2' (temp 2-component vector of int)

 0:63                                                    Constant:

 0:63                                                      1 (const int)

-0:64                                                direct index (int)

-0:64                                                  'i3' (3-component vector of int)

+0:64                                                direct index (temp int)

+0:64                                                  'i3' (temp 3-component vector of int)

 0:64                                                  Constant:

 0:64                                                    0 (const int)

-0:65                                              direct index (int)

-0:65                                                'i3' (3-component vector of int)

+0:65                                              direct index (temp int)

+0:65                                                'i3' (temp 3-component vector of int)

 0:65                                                Constant:

 0:65                                                  1 (const int)

-0:66                                            direct index (int)

-0:66                                              'i3' (3-component vector of int)

+0:66                                            direct index (temp int)

+0:66                                              'i3' (temp 3-component vector of int)

 0:66                                              Constant:

 0:66                                                2 (const int)

-0:67                                          direct index (int)

-0:67                                            'i4' (4-component vector of int)

+0:67                                          direct index (temp int)

+0:67                                            'i4' (temp 4-component vector of int)

 0:67                                            Constant:

 0:67                                              0 (const int)

-0:68                                        direct index (int)

-0:68                                          'i4' (4-component vector of int)

+0:68                                        direct index (temp int)

+0:68                                          'i4' (temp 4-component vector of int)

 0:68                                          Constant:

 0:68                                            1 (const int)

-0:69                                      direct index (int)

-0:69                                        'i4' (4-component vector of int)

+0:69                                      direct index (temp int)

+0:69                                        'i4' (temp 4-component vector of int)

 0:69                                        Constant:

 0:69                                          2 (const int)

-0:70                                    direct index (int)

-0:70                                      'i4' (4-component vector of int)

+0:70                                    direct index (temp int)

+0:70                                      'i4' (temp 4-component vector of int)

 0:70                                      Constant:

 0:70                                        3 (const int)

-0:71                                'f' (float)

-0:72                              direct index (float)

-0:72                                'f2' (2-component vector of float)

+0:71                                'f' (temp float)

+0:72                              direct index (temp float)

+0:72                                'f2' (temp 2-component vector of float)

 0:72                                Constant:

 0:72                                  0 (const int)

-0:73                            direct index (float)

-0:73                              'f2' (2-component vector of float)

+0:73                            direct index (temp float)

+0:73                              'f2' (temp 2-component vector of float)

 0:73                              Constant:

 0:73                                1 (const int)

-0:74                          direct index (float)

-0:74                            'f3' (3-component vector of float)

+0:74                          direct index (temp float)

+0:74                            'f3' (temp 3-component vector of float)

 0:74                            Constant:

 0:74                              0 (const int)

-0:75                        direct index (float)

-0:75                          'f3' (3-component vector of float)

+0:75                        direct index (temp float)

+0:75                          'f3' (temp 3-component vector of float)

 0:75                          Constant:

 0:75                            1 (const int)

-0:76                      direct index (float)

-0:76                        'f3' (3-component vector of float)

+0:76                      direct index (temp float)

+0:76                        'f3' (temp 3-component vector of float)

 0:76                        Constant:

 0:76                          2 (const int)

-0:77                    direct index (float)

-0:77                      'f4' (4-component vector of float)

+0:77                    direct index (temp float)

+0:77                      'f4' (temp 4-component vector of float)

 0:77                      Constant:

 0:77                        0 (const int)

-0:78                  direct index (float)

-0:78                    'f4' (4-component vector of float)

+0:78                  direct index (temp float)

+0:78                    'f4' (temp 4-component vector of float)

 0:78                    Constant:

 0:78                      1 (const int)

-0:79                direct index (float)

-0:79                  'f4' (4-component vector of float)

+0:79                direct index (temp float)

+0:79                  'f4' (temp 4-component vector of float)

 0:79                  Constant:

 0:79                    2 (const int)

-0:80              direct index (float)

-0:80                'f4' (4-component vector of float)

+0:80              direct index (temp float)

+0:80                'f4' (temp 4-component vector of float)

 0:80                Constant:

 0:80                  3 (const int)

 0:60          false case

diff --git a/Test/baseResults/uint.frag.out b/Test/baseResults/uint.frag.out
index 292d391..359a257 100644
--- a/Test/baseResults/uint.frag.out
+++ b/Test/baseResults/uint.frag.out
@@ -5,151 +5,151 @@
 ERROR: 0:24: 'const' : non-matching or non-convertible constant type for const initializer 

 ERROR: 0:34: 'const' : non-matching or non-convertible constant type for const initializer 

 ERROR: 0:37: 'const' : non-matching or non-convertible constant type for const initializer 

-ERROR: 0:48: '=' :  cannot convert from 'const int' to 'mediump uint'

-ERROR: 0:51: '=' :  cannot convert from 'const int' to 'mediump uint'

+ERROR: 0:48: '=' :  cannot convert from 'const int' to 'temp mediump uint'

+ERROR: 0:51: '=' :  cannot convert from 'const int' to 'temp mediump uint'

 ERROR: 0:63: 'float' : type requires declaration of default precision qualifier 

 ERROR: 9 compilation errors.  No code generated.

 

 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:15  Function Definition: main( (void)

+0:15  Function Definition: main( (global void)

 0:15    Function Parameters: 

 0:17    Sequence

 0:17      Sequence

-0:17        move second child to first child (mediump int)

-0:17          'count' (mediump int)

+0:17        move second child to first child (temp mediump int)

+0:17          'count' (temp mediump int)

 0:17          Constant:

 0:17            1 (const int)

 0:19      Sequence

-0:19        move second child to first child (mediump uint)

-0:19          'u' (mediump uint)

-0:19          add (mediump uint)

-0:19            direct index (mediump uint)

+0:19        move second child to first child (temp mediump uint)

+0:19          'u' (temp mediump uint)

+0:19          add (temp mediump uint)

+0:19            direct index (temp mediump uint)

 0:19              't' (flat in mediump 2-component vector of uint)

 0:19              Constant:

 0:19                1 (const int)

 0:19            Constant:

 0:19              3 (const uint)

-0:27      Test condition and select (void)

+0:27      Test condition and select (temp void)

 0:27        Condition

 0:27        Constant:

 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        multiply second child into first child (temp mediump int)

+0:28          'count' (temp mediump int)

 0:28          Constant:

 0:28            2 (const int)

-0:29      Test condition and select (void)

+0:29      Test condition and select (temp void)

 0:29        Condition

 0:29        Constant:

 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        multiply second child into first child (temp mediump int)

+0:30          'count' (temp mediump int)

 0:30          Constant:

 0:30            3 (const int)

-0:31      Test condition and select (void)

+0:31      Test condition and select (temp void)

 0:31        Condition

 0:31        Constant:

 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        multiply second child into first child (temp mediump int)

+0:32          'count' (temp mediump int)

 0:32          Constant:

 0:32            5 (const int)

-0:41      Test condition and select (void)

+0:41      Test condition and select (temp void)

 0:41        Condition

 0:41        Constant:

 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        multiply second child into first child (temp mediump int)

+0:42          'count' (temp mediump int)

 0:42          Constant:

 0:42            7 (const int)

-0:43      Test condition and select (void)

+0:43      Test condition and select (temp void)

 0:43        Condition

 0:43        Constant:

 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        multiply second child into first child (temp mediump int)

+0:44          'count' (temp mediump int)

 0:44          Constant:

 0:44            11 (const int)

-0:45      Test condition and select (void)

+0:45      Test condition and select (temp void)

 0:45        Condition

 0:45        Constant:

 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        multiply second child into first child (temp mediump int)

+0:46          'count' (temp mediump int)

 0:46          Constant:

 0:46            13 (const int)

 0:49      Sequence

-0:49        move second child to first child (mediump int)

-0:49          'shiftedii' (mediump int)

+0:49        move second child to first child (temp mediump int)

+0:49          'shiftedii' (temp mediump int)

 0:49          Constant:

 0:49            -1 (const int)

 0:50      Sequence

-0:50        move second child to first child (mediump uint)

-0:50          'shiftedui' (mediump uint)

+0:50        move second child to first child (temp mediump uint)

+0:50          'shiftedui' (temp mediump uint)

 0:50          Constant:

 0:50            4194303 (const uint)

 0:52      Sequence

-0:52        move second child to first child (mediump int)

-0:52          'shiftediu' (mediump int)

+0:52        move second child to first child (temp mediump int)

+0:52          'shiftediu' (temp mediump int)

 0:52          Constant:

 0:52            -1 (const int)

 0:53      Sequence

-0:53        move second child to first child (mediump uint)

-0:53          'shifteduu' (mediump uint)

+0:53        move second child to first child (temp mediump uint)

+0:53          'shifteduu' (temp mediump uint)

 0:53          Constant:

 0:53            4194303 (const uint)

-0:55      Test condition and select (void)

+0:55      Test condition and select (temp void)

 0:55        Condition

-0:55        Compare Equal (bool)

-0:55          'shiftedii' (mediump int)

-0:55          'shiftediu' (mediump int)

+0:55        Compare Equal (temp bool)

+0:55          'shiftedii' (temp mediump int)

+0:55          'shiftediu' (temp mediump int)

 0:55        true case

-0:56        move second child to first child (mediump 4-component vector of uint)

+0:56        move second child to first child (temp mediump 4-component vector of uint)

 0:56          'c' (out mediump 4-component vector of uint)

-0:56          Function Call: texture(us21;vf2; (mediump 4-component vector of uint)

+0:56          Function Call: texture(us21;vf2; (global mediump 4-component vector of uint)

 0:56            'usampler' (uniform lowp usampler2D)

 0:56            'tc' (smooth in highp 2-component vector of float)

-0:57      Test condition and select (void)

+0:57      Test condition and select (temp void)

 0:57        Condition

-0:57        Compare Equal (bool)

-0:57          'shiftedui' (mediump uint)

-0:57          'shifteduu' (mediump uint)

+0:57        Compare Equal (temp bool)

+0:57          'shiftedui' (temp mediump uint)

+0:57          'shifteduu' (temp mediump uint)

 0:57        true case

-0:58        move second child to first child (mediump 4-component vector of uint)

+0:58        move second child to first child (temp mediump 4-component vector of uint)

 0:58          'c' (out mediump 4-component vector of uint)

-0:58          Function Call: texture(us21;vf2; (mediump 4-component vector of uint)

+0:58          Function Call: texture(us21;vf2; (global mediump 4-component vector of uint)

 0:58            'usampler' (uniform lowp usampler2D)

-0:58            add (highp 2-component vector of float)

+0:58            add (temp highp 2-component vector of float)

 0:58              'tc' (smooth in highp 2-component vector of float)

 0:58              Constant:

 0:58                1.000000

-0:59      Test condition and select (void)

+0:59      Test condition and select (temp void)

 0:59        Condition

-0:59        Compare Equal (bool)

-0:59          'shiftedii' (mediump int)

-0:59          Convert uint to int (int)

-0:59            'shiftedui' (mediump uint)

+0:59        Compare Equal (temp bool)

+0:59          'shiftedii' (temp mediump int)

+0:59          Convert uint to int (temp int)

+0:59            'shiftedui' (temp mediump uint)

 0:59        true case

-0:60        move second child to first child (mediump 4-component vector of uint)

+0:60        move second child to first child (temp mediump 4-component vector of uint)

 0:60          'c' (out mediump 4-component vector of uint)

-0:60          Function Call: texture(us21;vf2; (mediump 4-component vector of uint)

+0:60          Function Call: texture(us21;vf2; (global mediump 4-component vector of uint)

 0:60            'usampler' (uniform lowp usampler2D)

-0:60            subtract (highp 2-component vector of float)

+0:60            subtract (temp highp 2-component vector of float)

 0:60              'tc' (smooth in highp 2-component vector of float)

 0:60              Constant:

 0:60                2.000000

 0:60                2.000000

-0:62      Test condition and select (void)

+0:62      Test condition and select (temp void)

 0:62        Condition

-0:62        Compare Greater Than (bool)

-0:62          direct index (mediump uint)

+0:62        Compare Greater Than (temp bool)

+0:62          direct index (temp mediump uint)

 0:62            't' (flat in mediump 2-component vector of uint)

 0:62            Constant:

 0:62              0 (const int)

@@ -158,142 +158,142 @@
 0:62        true case

 0:63        Sequence

 0:63          Sequence

-0:63            move second child to first child (mediump float)

-0:63              'af' (mediump float)

-0:63              Convert uint to float (mediump float)

-0:63                'u' (mediump uint)

+0:63            move second child to first child (temp mediump float)

+0:63              'af' (temp mediump float)

+0:63              Convert uint to float (temp mediump float)

+0:63                'u' (temp mediump uint)

 0:64          Sequence

-0:64            move second child to first child (bool)

-0:64              'ab' (bool)

-0:64              Convert uint to bool (bool)

-0:64                'u' (mediump uint)

+0:64            move second child to first child (temp bool)

+0:64              'ab' (temp bool)

+0:64              Convert uint to bool (temp bool)

+0:64                'u' (temp mediump uint)

 0:65          Sequence

-0:65            move second child to first child (mediump int)

-0:65              'ai' (mediump int)

-0:65              Convert uint to int (mediump int)

-0:65                'u' (mediump uint)

-0:67          add second child into first child (mediump 4-component vector of uint)

+0:65            move second child to first child (temp mediump int)

+0:65              'ai' (temp mediump int)

+0:65              Convert uint to int (temp mediump int)

+0:65                'u' (temp mediump uint)

+0:67          add second child into first child (temp mediump 4-component vector of uint)

 0:67            'c' (out mediump 4-component vector of uint)

-0:67            Construct uvec4 (mediump 4-component vector of uint)

-0:67              Convert float to uint (mediump uint)

-0:67                'af' (mediump float)

-0:67              Convert bool to uint (mediump uint)

-0:67                'ab' (bool)

-0:67              Convert int to uint (mediump uint)

-0:67                'ai' (mediump int)

-0:67              Convert int to uint (mediump uint)

-0:67                'count' (mediump int)

-0:75      Test condition and select (void)

+0:67            Construct uvec4 (temp mediump 4-component vector of uint)

+0:67              Convert float to uint (temp mediump uint)

+0:67                'af' (temp mediump float)

+0:67              Convert bool to uint (temp mediump uint)

+0:67                'ab' (temp bool)

+0:67              Convert int to uint (temp mediump uint)

+0:67                'ai' (temp mediump int)

+0:67              Convert int to uint (temp mediump uint)

+0:67                'count' (temp mediump int)

+0:75      Test condition and select (temp void)

 0:75        Condition

 0:75        Constant:

 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        multiply second child into first child (temp mediump int)

+0:76          'count' (temp mediump int)

 0:76          Constant:

 0:76            17 (const int)

-0:78      Test condition and select (void)

+0:78      Test condition and select (temp void)

 0:78        Condition

 0:78        Constant:

 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        multiply second child into first child (temp mediump int)

+0:79          'count' (temp mediump int)

 0:79          Constant:

 0:79            19 (const int)

-0:81      Test condition and select (void)

+0:81      Test condition and select (temp void)

 0:81        Condition

 0:81        Constant:

 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        multiply second child into first child (temp mediump int)

+0:82          'count' (temp mediump int)

 0:82          Constant:

 0:82            23 (const int)

-0:84      Test condition and select (void)

+0:84      Test condition and select (temp void)

 0:84        Condition

 0:84        Constant:

 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        multiply second child into first child (temp mediump int)

+0:85          'count' (temp mediump int)

 0:85          Constant:

 0:85            27 (const int)

 0:87      Sequence

-0:87        move second child to first child (mediump uint)

-0:87          'mask1' (mediump uint)

+0:87        move second child to first child (temp mediump uint)

+0:87          'mask1' (temp mediump uint)

 0:87          Constant:

 0:87            161 (const uint)

 0:88      Sequence

-0:88        move second child to first child (mediump uint)

-0:88          'mask2' (mediump uint)

+0:88        move second child to first child (temp mediump uint)

+0:88          'mask2' (temp mediump uint)

 0:88          Constant:

 0:88            2576 (const uint)

 0:89      Sequence

-0:89        move second child to first child (mediump uint)

-0:89          'mask3' (mediump uint)

-0:89          left-shift (mediump uint)

-0:89            'mask1' (mediump uint)

+0:89        move second child to first child (temp mediump uint)

+0:89          'mask3' (temp mediump uint)

+0:89          left-shift (temp mediump uint)

+0:89            'mask1' (temp mediump uint)

 0:89            Constant:

 0:89              4 (const int)

 0:90      Sequence

-0:90        move second child to first child (mediump uint)

-0:90          'mask4' (mediump uint)

+0:90        move second child to first child (temp mediump uint)

+0:90          'mask4' (temp mediump uint)

 0:90          Constant:

 0:90            2737 (const uint)

-0:92      Test condition and select (void)

+0:92      Test condition and select (temp void)

 0:92        Condition

-0:92        Compare Equal (bool)

-0:92          'mask3' (mediump uint)

-0:92          'mask2' (mediump uint)

+0:92        Compare Equal (temp bool)

+0:92          'mask3' (temp mediump uint)

+0:92          'mask2' (temp mediump uint)

 0:92        true case

-0:93        multiply second child into first child (mediump int)

-0:93          'count' (mediump int)

+0:93        multiply second child into first child (temp mediump int)

+0:93          'count' (temp mediump int)

 0:93          Constant:

 0:93            100 (const int)

-0:95      Test condition and select (void)

+0:95      Test condition and select (temp void)

 0:95        Condition

-0:95        Compare Not Equal (bool)

-0:95          bitwise and (mediump uint)

-0:95            'mask3' (mediump uint)

-0:95            'mask1' (mediump uint)

+0:95        Compare Not Equal (temp bool)

+0:95          bitwise and (temp mediump uint)

+0:95            'mask3' (temp mediump uint)

+0:95            'mask1' (temp mediump uint)

 0:95          Constant:

 0:95            0 (const uint)

 0:95        true case

-0:96        multiply second child into first child (mediump int)

-0:96          'count' (mediump int)

+0:96        multiply second child into first child (temp mediump int)

+0:96          'count' (temp mediump int)

 0:96          Constant:

 0:96            101 (const int)

-0:98      Test condition and select (void)

+0:98      Test condition and select (temp void)

 0:98        Condition

-0:98        Compare Equal (bool)

-0:98          inclusive-or (mediump uint)

-0:98            'mask1' (mediump uint)

-0:98            'mask3' (mediump uint)

-0:98          'mask4' (mediump uint)

+0:98        Compare Equal (temp bool)

+0:98          inclusive-or (temp mediump uint)

+0:98            'mask1' (temp mediump uint)

+0:98            'mask3' (temp mediump uint)

+0:98          'mask4' (temp mediump uint)

 0:98        true case

-0:99        multiply second child into first child (mediump int)

-0:99          'count' (mediump int)

+0:99        multiply second child into first child (temp mediump int)

+0:99          'count' (temp mediump int)

 0:99          Constant:

 0:99            102 (const int)

-0:101      Test condition and select (void)

+0:101      Test condition and select (temp void)

 0:101        Condition

-0:101        Compare Equal (bool)

-0:101          exclusive-or (mediump uint)

-0:101            'mask1' (mediump uint)

-0:101            'mask4' (mediump uint)

+0:101        Compare Equal (temp bool)

+0:101          exclusive-or (temp mediump uint)

+0:101            'mask1' (temp mediump uint)

+0:101            'mask4' (temp mediump uint)

 0:101          Constant:

 0:101            2576 (const uint)

 0:101        true case

-0:102        multiply second child into first child (mediump int)

-0:102          'count' (mediump int)

+0:102        multiply second child into first child (temp mediump int)

+0:102          'count' (temp mediump int)

 0:102          Constant:

 0:102            103 (const int)

-0:104      add second child into first child (mediump 4-component vector of uint)

+0:104      add second child into first child (temp mediump 4-component vector of uint)

 0:104        'c' (out mediump 4-component vector of uint)

-0:104        Construct uvec4 (mediump 4-component vector of uint)

-0:104          Convert int to uint (mediump uint)

-0:104            'count' (mediump int)

+0:104        Construct uvec4 (temp mediump 4-component vector of uint)

+0:104          Convert int to uint (temp mediump uint)

+0:104            'count' (temp mediump int)

 0:?   Linker Objects

 0:?     'badu' (smooth in mediump 2-component vector of uint)

 0:?     't' (flat in mediump 2-component vector of uint)

@@ -312,143 +312,143 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:15  Function Definition: main( (void)

+0:15  Function Definition: main( (global void)

 0:15    Function Parameters: 

 0:17    Sequence

 0:17      Sequence

-0:17        move second child to first child (mediump int)

-0:17          'count' (mediump int)

+0:17        move second child to first child (temp mediump int)

+0:17          'count' (temp mediump int)

 0:17          Constant:

 0:17            1 (const int)

 0:19      Sequence

-0:19        move second child to first child (mediump uint)

-0:19          'u' (mediump uint)

-0:19          add (mediump uint)

-0:19            direct index (mediump uint)

+0:19        move second child to first child (temp mediump uint)

+0:19          'u' (temp mediump uint)

+0:19          add (temp mediump uint)

+0:19            direct index (temp mediump uint)

 0:19              't' (flat in mediump 2-component vector of uint)

 0:19              Constant:

 0:19                1 (const int)

 0:19            Constant:

 0:19              3 (const uint)

-0:27      Test condition and select (void)

+0:27      Test condition and select (temp void)

 0:27        Condition

 0:27        Constant:

 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        multiply second child into first child (temp mediump int)

+0:28          'count' (temp mediump int)

 0:28          Constant:

 0:28            2 (const int)

-0:29      Test condition and select (void)

+0:29      Test condition and select (temp void)

 0:29        Condition

 0:29        Constant:

 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        multiply second child into first child (temp mediump int)

+0:30          'count' (temp mediump int)

 0:30          Constant:

 0:30            3 (const int)

-0:31      Test condition and select (void)

+0:31      Test condition and select (temp void)

 0:31        Condition

 0:31        Constant:

 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        multiply second child into first child (temp mediump int)

+0:32          'count' (temp mediump int)

 0:32          Constant:

 0:32            5 (const int)

-0:41      Test condition and select (void)

+0:41      Test condition and select (temp void)

 0:41        Condition

 0:41        Constant:

 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        multiply second child into first child (temp mediump int)

+0:42          'count' (temp mediump int)

 0:42          Constant:

 0:42            7 (const int)

-0:43      Test condition and select (void)

+0:43      Test condition and select (temp void)

 0:43        Condition

 0:43        Constant:

 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        multiply second child into first child (temp mediump int)

+0:44          'count' (temp mediump int)

 0:44          Constant:

 0:44            11 (const int)

-0:45      Test condition and select (void)

+0:45      Test condition and select (temp void)

 0:45        Condition

 0:45        Constant:

 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        multiply second child into first child (temp mediump int)

+0:46          'count' (temp mediump int)

 0:46          Constant:

 0:46            13 (const int)

 0:49      Sequence

-0:49        move second child to first child (mediump int)

-0:49          'shiftedii' (mediump int)

+0:49        move second child to first child (temp mediump int)

+0:49          'shiftedii' (temp mediump int)

 0:49          Constant:

 0:49            -1 (const int)

 0:50      Sequence

-0:50        move second child to first child (mediump uint)

-0:50          'shiftedui' (mediump uint)

+0:50        move second child to first child (temp mediump uint)

+0:50          'shiftedui' (temp mediump uint)

 0:50          Constant:

 0:50            4194303 (const uint)

 0:52      Sequence

-0:52        move second child to first child (mediump int)

-0:52          'shiftediu' (mediump int)

+0:52        move second child to first child (temp mediump int)

+0:52          'shiftediu' (temp mediump int)

 0:52          Constant:

 0:52            -1 (const int)

 0:53      Sequence

-0:53        move second child to first child (mediump uint)

-0:53          'shifteduu' (mediump uint)

+0:53        move second child to first child (temp mediump uint)

+0:53          'shifteduu' (temp mediump uint)

 0:53          Constant:

 0:53            4194303 (const uint)

-0:55      Test condition and select (void)

+0:55      Test condition and select (temp void)

 0:55        Condition

-0:55        Compare Equal (bool)

-0:55          'shiftedii' (mediump int)

-0:55          'shiftediu' (mediump int)

+0:55        Compare Equal (temp bool)

+0:55          'shiftedii' (temp mediump int)

+0:55          'shiftediu' (temp mediump int)

 0:55        true case

-0:56        move second child to first child (mediump 4-component vector of uint)

+0:56        move second child to first child (temp mediump 4-component vector of uint)

 0:56          'c' (out mediump 4-component vector of uint)

-0:56          Function Call: texture(us21;vf2; (mediump 4-component vector of uint)

+0:56          Function Call: texture(us21;vf2; (global mediump 4-component vector of uint)

 0:56            'usampler' (uniform lowp usampler2D)

 0:56            'tc' (smooth in highp 2-component vector of float)

-0:57      Test condition and select (void)

+0:57      Test condition and select (temp void)

 0:57        Condition

-0:57        Compare Equal (bool)

-0:57          'shiftedui' (mediump uint)

-0:57          'shifteduu' (mediump uint)

+0:57        Compare Equal (temp bool)

+0:57          'shiftedui' (temp mediump uint)

+0:57          'shifteduu' (temp mediump uint)

 0:57        true case

-0:58        move second child to first child (mediump 4-component vector of uint)

+0:58        move second child to first child (temp mediump 4-component vector of uint)

 0:58          'c' (out mediump 4-component vector of uint)

-0:58          Function Call: texture(us21;vf2; (mediump 4-component vector of uint)

+0:58          Function Call: texture(us21;vf2; (global mediump 4-component vector of uint)

 0:58            'usampler' (uniform lowp usampler2D)

-0:58            add (highp 2-component vector of float)

+0:58            add (temp highp 2-component vector of float)

 0:58              'tc' (smooth in highp 2-component vector of float)

 0:58              Constant:

 0:58                1.000000

-0:59      Test condition and select (void)

+0:59      Test condition and select (temp void)

 0:59        Condition

-0:59        Compare Equal (bool)

-0:59          'shiftedii' (mediump int)

-0:59          Convert uint to int (int)

-0:59            'shiftedui' (mediump uint)

+0:59        Compare Equal (temp bool)

+0:59          'shiftedii' (temp mediump int)

+0:59          Convert uint to int (temp int)

+0:59            'shiftedui' (temp mediump uint)

 0:59        true case

-0:60        move second child to first child (mediump 4-component vector of uint)

+0:60        move second child to first child (temp mediump 4-component vector of uint)

 0:60          'c' (out mediump 4-component vector of uint)

-0:60          Function Call: texture(us21;vf2; (mediump 4-component vector of uint)

+0:60          Function Call: texture(us21;vf2; (global mediump 4-component vector of uint)

 0:60            'usampler' (uniform lowp usampler2D)

-0:60            subtract (highp 2-component vector of float)

+0:60            subtract (temp highp 2-component vector of float)

 0:60              'tc' (smooth in highp 2-component vector of float)

 0:60              Constant:

 0:60                2.000000

 0:60                2.000000

-0:62      Test condition and select (void)

+0:62      Test condition and select (temp void)

 0:62        Condition

-0:62        Compare Greater Than (bool)

-0:62          direct index (mediump uint)

+0:62        Compare Greater Than (temp bool)

+0:62          direct index (temp mediump uint)

 0:62            't' (flat in mediump 2-component vector of uint)

 0:62            Constant:

 0:62              0 (const int)

@@ -457,142 +457,142 @@
 0:62        true case

 0:63        Sequence

 0:63          Sequence

-0:63            move second child to first child (mediump float)

-0:63              'af' (mediump float)

-0:63              Convert uint to float (mediump float)

-0:63                'u' (mediump uint)

+0:63            move second child to first child (temp mediump float)

+0:63              'af' (temp mediump float)

+0:63              Convert uint to float (temp mediump float)

+0:63                'u' (temp mediump uint)

 0:64          Sequence

-0:64            move second child to first child (bool)

-0:64              'ab' (bool)

-0:64              Convert uint to bool (bool)

-0:64                'u' (mediump uint)

+0:64            move second child to first child (temp bool)

+0:64              'ab' (temp bool)

+0:64              Convert uint to bool (temp bool)

+0:64                'u' (temp mediump uint)

 0:65          Sequence

-0:65            move second child to first child (mediump int)

-0:65              'ai' (mediump int)

-0:65              Convert uint to int (mediump int)

-0:65                'u' (mediump uint)

-0:67          add second child into first child (mediump 4-component vector of uint)

+0:65            move second child to first child (temp mediump int)

+0:65              'ai' (temp mediump int)

+0:65              Convert uint to int (temp mediump int)

+0:65                'u' (temp mediump uint)

+0:67          add second child into first child (temp mediump 4-component vector of uint)

 0:67            'c' (out mediump 4-component vector of uint)

-0:67            Construct uvec4 (mediump 4-component vector of uint)

-0:67              Convert float to uint (mediump uint)

-0:67                'af' (mediump float)

-0:67              Convert bool to uint (mediump uint)

-0:67                'ab' (bool)

-0:67              Convert int to uint (mediump uint)

-0:67                'ai' (mediump int)

-0:67              Convert int to uint (mediump uint)

-0:67                'count' (mediump int)

-0:75      Test condition and select (void)

+0:67            Construct uvec4 (temp mediump 4-component vector of uint)

+0:67              Convert float to uint (temp mediump uint)

+0:67                'af' (temp mediump float)

+0:67              Convert bool to uint (temp mediump uint)

+0:67                'ab' (temp bool)

+0:67              Convert int to uint (temp mediump uint)

+0:67                'ai' (temp mediump int)

+0:67              Convert int to uint (temp mediump uint)

+0:67                'count' (temp mediump int)

+0:75      Test condition and select (temp void)

 0:75        Condition

 0:75        Constant:

 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        multiply second child into first child (temp mediump int)

+0:76          'count' (temp mediump int)

 0:76          Constant:

 0:76            17 (const int)

-0:78      Test condition and select (void)

+0:78      Test condition and select (temp void)

 0:78        Condition

 0:78        Constant:

 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        multiply second child into first child (temp mediump int)

+0:79          'count' (temp mediump int)

 0:79          Constant:

 0:79            19 (const int)

-0:81      Test condition and select (void)

+0:81      Test condition and select (temp void)

 0:81        Condition

 0:81        Constant:

 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        multiply second child into first child (temp mediump int)

+0:82          'count' (temp mediump int)

 0:82          Constant:

 0:82            23 (const int)

-0:84      Test condition and select (void)

+0:84      Test condition and select (temp void)

 0:84        Condition

 0:84        Constant:

 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        multiply second child into first child (temp mediump int)

+0:85          'count' (temp mediump int)

 0:85          Constant:

 0:85            27 (const int)

 0:87      Sequence

-0:87        move second child to first child (mediump uint)

-0:87          'mask1' (mediump uint)

+0:87        move second child to first child (temp mediump uint)

+0:87          'mask1' (temp mediump uint)

 0:87          Constant:

 0:87            161 (const uint)

 0:88      Sequence

-0:88        move second child to first child (mediump uint)

-0:88          'mask2' (mediump uint)

+0:88        move second child to first child (temp mediump uint)

+0:88          'mask2' (temp mediump uint)

 0:88          Constant:

 0:88            2576 (const uint)

 0:89      Sequence

-0:89        move second child to first child (mediump uint)

-0:89          'mask3' (mediump uint)

-0:89          left-shift (mediump uint)

-0:89            'mask1' (mediump uint)

+0:89        move second child to first child (temp mediump uint)

+0:89          'mask3' (temp mediump uint)

+0:89          left-shift (temp mediump uint)

+0:89            'mask1' (temp mediump uint)

 0:89            Constant:

 0:89              4 (const int)

 0:90      Sequence

-0:90        move second child to first child (mediump uint)

-0:90          'mask4' (mediump uint)

+0:90        move second child to first child (temp mediump uint)

+0:90          'mask4' (temp mediump uint)

 0:90          Constant:

 0:90            2737 (const uint)

-0:92      Test condition and select (void)

+0:92      Test condition and select (temp void)

 0:92        Condition

-0:92        Compare Equal (bool)

-0:92          'mask3' (mediump uint)

-0:92          'mask2' (mediump uint)

+0:92        Compare Equal (temp bool)

+0:92          'mask3' (temp mediump uint)

+0:92          'mask2' (temp mediump uint)

 0:92        true case

-0:93        multiply second child into first child (mediump int)

-0:93          'count' (mediump int)

+0:93        multiply second child into first child (temp mediump int)

+0:93          'count' (temp mediump int)

 0:93          Constant:

 0:93            100 (const int)

-0:95      Test condition and select (void)

+0:95      Test condition and select (temp void)

 0:95        Condition

-0:95        Compare Not Equal (bool)

-0:95          bitwise and (mediump uint)

-0:95            'mask3' (mediump uint)

-0:95            'mask1' (mediump uint)

+0:95        Compare Not Equal (temp bool)

+0:95          bitwise and (temp mediump uint)

+0:95            'mask3' (temp mediump uint)

+0:95            'mask1' (temp mediump uint)

 0:95          Constant:

 0:95            0 (const uint)

 0:95        true case

-0:96        multiply second child into first child (mediump int)

-0:96          'count' (mediump int)

+0:96        multiply second child into first child (temp mediump int)

+0:96          'count' (temp mediump int)

 0:96          Constant:

 0:96            101 (const int)

-0:98      Test condition and select (void)

+0:98      Test condition and select (temp void)

 0:98        Condition

-0:98        Compare Equal (bool)

-0:98          inclusive-or (mediump uint)

-0:98            'mask1' (mediump uint)

-0:98            'mask3' (mediump uint)

-0:98          'mask4' (mediump uint)

+0:98        Compare Equal (temp bool)

+0:98          inclusive-or (temp mediump uint)

+0:98            'mask1' (temp mediump uint)

+0:98            'mask3' (temp mediump uint)

+0:98          'mask4' (temp mediump uint)

 0:98        true case

-0:99        multiply second child into first child (mediump int)

-0:99          'count' (mediump int)

+0:99        multiply second child into first child (temp mediump int)

+0:99          'count' (temp mediump int)

 0:99          Constant:

 0:99            102 (const int)

-0:101      Test condition and select (void)

+0:101      Test condition and select (temp void)

 0:101        Condition

-0:101        Compare Equal (bool)

-0:101          exclusive-or (mediump uint)

-0:101            'mask1' (mediump uint)

-0:101            'mask4' (mediump uint)

+0:101        Compare Equal (temp bool)

+0:101          exclusive-or (temp mediump uint)

+0:101            'mask1' (temp mediump uint)

+0:101            'mask4' (temp mediump uint)

 0:101          Constant:

 0:101            2576 (const uint)

 0:101        true case

-0:102        multiply second child into first child (mediump int)

-0:102          'count' (mediump int)

+0:102        multiply second child into first child (temp mediump int)

+0:102          'count' (temp mediump int)

 0:102          Constant:

 0:102            103 (const int)

-0:104      add second child into first child (mediump 4-component vector of uint)

+0:104      add second child into first child (temp mediump 4-component vector of uint)

 0:104        'c' (out mediump 4-component vector of uint)

-0:104        Construct uvec4 (mediump 4-component vector of uint)

-0:104          Convert int to uint (mediump uint)

-0:104            'count' (mediump int)

+0:104        Construct uvec4 (temp mediump 4-component vector of uint)

+0:104          Convert int to uint (temp mediump uint)

+0:104            'count' (temp mediump int)

 0:?   Linker Objects

 0:?     'badu' (smooth in mediump 2-component vector of uint)

 0:?     't' (flat in mediump 2-component vector of uint)

diff --git a/Test/baseResults/uniformArray.frag.out b/Test/baseResults/uniformArray.frag.out
index f886e06..6c64858 100644
--- a/Test/baseResults/uniformArray.frag.out
+++ b/Test/baseResults/uniformArray.frag.out
@@ -2,24 +2,24 @@
 

 Shader version: 130

 0:? Sequence

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:9    Sequence

 0:9      Sequence

-0:9        move second child to first child (4-component vector of float)

-0:9          'texColor' (4-component vector of float)

-0:9          add (4-component vector of float)

-0:9            direct index (4-component vector of float)

+0:9        move second child to first child (temp 4-component vector of float)

+0:9          'texColor' (temp 4-component vector of float)

+0:9          add (temp 4-component vector of float)

+0:9            direct index (temp 4-component vector of float)

 0:9              'color' (uniform 6-element array of 4-component vector of float)

 0:9              Constant:

 0:9                1 (const int)

-0:9            direct index (4-component vector of float)

+0:9            direct index (temp 4-component vector of float)

 0:9              'color' (uniform 6-element array of 4-component vector of float)

 0:9              Constant:

 0:9                1 (const int)

-0:11      add second child into first child (3-component vector of float)

-0:11        vector swizzle (3-component vector of float)

-0:11          'texColor' (4-component vector of float)

+0:11      add second child into first child (temp 3-component vector of float)

+0:11        vector swizzle (temp 3-component vector of float)

+0:11          'texColor' (temp 4-component vector of float)

 0:11          Sequence

 0:11            Constant:

 0:11              0 (const int)

@@ -28,18 +28,18 @@
 0:11            Constant:

 0:11              2 (const int)

 0:11        'inColor' (uniform 3-component vector of float)

-0:13      add second child into first child (float)

-0:13        direct index (float)

-0:13          'texColor' (4-component vector of float)

+0:13      add second child into first child (temp float)

+0:13        direct index (temp float)

+0:13          'texColor' (temp 4-component vector of float)

 0:13          Constant:

 0:13            3 (const int)

-0:13        direct index (float)

+0:13        direct index (temp float)

 0:13          'alpha' (uniform 16-element array of float)

 0:13          Constant:

 0:13            12 (const int)

-0:15      move second child to first child (4-component vector of float)

+0:15      move second child to first child (temp 4-component vector of float)

 0:15        'gl_FragColor' (fragColor 4-component vector of float)

-0:15        'texColor' (4-component vector of float)

+0:15        'texColor' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'texSampler2D' (uniform sampler2D)

 0:?     'inColor' (uniform 3-component vector of float)

@@ -52,24 +52,24 @@
 

 Shader version: 130

 0:? Sequence

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:9    Sequence

 0:9      Sequence

-0:9        move second child to first child (4-component vector of float)

-0:9          'texColor' (4-component vector of float)

-0:9          add (4-component vector of float)

-0:9            direct index (4-component vector of float)

+0:9        move second child to first child (temp 4-component vector of float)

+0:9          'texColor' (temp 4-component vector of float)

+0:9          add (temp 4-component vector of float)

+0:9            direct index (temp 4-component vector of float)

 0:9              'color' (uniform 6-element array of 4-component vector of float)

 0:9              Constant:

 0:9                1 (const int)

-0:9            direct index (4-component vector of float)

+0:9            direct index (temp 4-component vector of float)

 0:9              'color' (uniform 6-element array of 4-component vector of float)

 0:9              Constant:

 0:9                1 (const int)

-0:11      add second child into first child (3-component vector of float)

-0:11        vector swizzle (3-component vector of float)

-0:11          'texColor' (4-component vector of float)

+0:11      add second child into first child (temp 3-component vector of float)

+0:11        vector swizzle (temp 3-component vector of float)

+0:11          'texColor' (temp 4-component vector of float)

 0:11          Sequence

 0:11            Constant:

 0:11              0 (const int)

@@ -78,18 +78,18 @@
 0:11            Constant:

 0:11              2 (const int)

 0:11        'inColor' (uniform 3-component vector of float)

-0:13      add second child into first child (float)

-0:13        direct index (float)

-0:13          'texColor' (4-component vector of float)

+0:13      add second child into first child (temp float)

+0:13        direct index (temp float)

+0:13          'texColor' (temp 4-component vector of float)

 0:13          Constant:

 0:13            3 (const int)

-0:13        direct index (float)

+0:13        direct index (temp float)

 0:13          'alpha' (uniform 16-element array of float)

 0:13          Constant:

 0:13            12 (const int)

-0:15      move second child to first child (4-component vector of float)

+0:15      move second child to first child (temp 4-component vector of float)

 0:15        'gl_FragColor' (fragColor 4-component vector of float)

-0:15        'texColor' (4-component vector of float)

+0:15        'texColor' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'texSampler2D' (uniform sampler2D)

 0:?     'inColor' (uniform 3-component vector of float)

diff --git a/Test/baseResults/variableArrayIndex.frag.out b/Test/baseResults/variableArrayIndex.frag.out
index 0f09216..7a099d9 100644
--- a/Test/baseResults/variableArrayIndex.frag.out
+++ b/Test/baseResults/variableArrayIndex.frag.out
@@ -3,20 +3,20 @@
 

 Shader version: 130

 0:? Sequence

-0:29  Function Definition: main( (void)

+0:29  Function Definition: main( (global void)

 0:29    Function Parameters: 

 0:?     Sequence

 0:32      Sequence

-0:32        move second child to first child (int)

-0:32          'iLocal' (int)

+0:32        move second child to first child (temp int)

+0:32          'iLocal' (temp int)

 0:32          'Count' (uniform int)

-0:34      Test condition and select (void)

+0:34      Test condition and select (temp void)

 0:34        Condition

-0:34        Compare Greater Than (bool)

-0:34          i: direct index for structure (int)

-0:34            direct index (structure{int i, float f, structure{int i, float f} s1_1})

-0:34              s2_1: direct index for structure (3-element array of structure{int i, float f, structure{int i, float f} s1_1})

-0:34                'foo3' (uniform structure{3-element array of structure{int i, float f, structure{int i, float f} s1_1} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:34        Compare Greater Than (temp bool)

+0:34          i: direct index for structure (global int)

+0:34            direct index (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:34              s2_1: direct index for structure (global 3-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:34                'foo3' (uniform structure{global 3-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:34                Constant:

 0:34                  0 (const int)

 0:34              Constant:

@@ -26,42 +26,42 @@
 0:34          Constant:

 0:34            0 (const int)

 0:34        true case

-0:35        move second child to first child (float)

-0:35          'scale' (float)

-0:35          f: direct index for structure (float)

-0:35            s1_1: direct index for structure (structure{int i, float f})

-0:35              indirect index (structure{int i, float f, structure{int i, float f} s1_1})

-0:35                'foo2' (uniform 5-element array of structure{int i, float f, structure{int i, float f} s1_1})

-0:35                add (int)

-0:35                  add (int)

-0:35                    i: direct index for structure (int)

-0:35                      indirect index (structure{int i, float f, structure{int i, float f} s1_1})

-0:35                        s2_1: direct index for structure (3-element array of structure{int i, float f, structure{int i, float f} s1_1})

-0:35                          'foo3' (uniform structure{3-element array of structure{int i, float f, structure{int i, float f} s1_1} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:35        move second child to first child (temp float)

+0:35          'scale' (temp float)

+0:35          f: direct index for structure (global float)

+0:35            s1_1: direct index for structure (global structure{global int i, global float f})

+0:35              indirect index (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:35                'foo2' (uniform 5-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:35                add (temp int)

+0:35                  add (temp int)

+0:35                    i: direct index for structure (global int)

+0:35                      indirect index (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:35                        s2_1: direct index for structure (global 3-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:35                          'foo3' (uniform structure{global 3-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:35                          Constant:

 0:35                            0 (const int)

-0:35                        i: direct index for structure (int)

-0:35                          'foo' (uniform structure{int i, float f})

+0:35                        i: direct index for structure (global int)

+0:35                          'foo' (uniform structure{global int i, global float f})

 0:35                          Constant:

 0:35                            0 (const int)

 0:35                      Constant:

 0:35                        0 (const int)

 0:35                    Constant:

 0:35                      2 (const int)

-0:35                  Pre-Increment (int)

-0:35                    'iLocal' (int)

+0:35                  Pre-Increment (temp int)

+0:35                    'iLocal' (temp int)

 0:35              Constant:

 0:35                2 (const int)

 0:35            Constant:

 0:35              1 (const int)

 0:34        false case

-0:37        move second child to first child (float)

-0:37          'scale' (float)

-0:37          f: direct index for structure (float)

-0:37            s1_1: direct index for structure (structure{int i, float f})

-0:37              direct index (structure{int i, float f, structure{int i, float f} s1_1})

-0:37                s2_1: direct index for structure (3-element array of structure{int i, float f, structure{int i, float f} s1_1})

-0:37                  'foo3' (uniform structure{3-element array of structure{int i, float f, structure{int i, float f} s1_1} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:37        move second child to first child (temp float)

+0:37          'scale' (temp float)

+0:37          f: direct index for structure (global float)

+0:37            s1_1: direct index for structure (global structure{global int i, global float f})

+0:37              direct index (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:37                s2_1: direct index for structure (global 3-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:37                  'foo3' (uniform structure{global 3-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:37                  Constant:

 0:37                    0 (const int)

 0:37                Constant:

@@ -70,44 +70,44 @@
 0:37                2 (const int)

 0:37            Constant:

 0:37              1 (const int)

-0:43      move second child to first child (4-component vector of float)

+0:43      move second child to first child (temp 4-component vector of float)

 0:43        'gl_FragColor' (fragColor 4-component vector of float)

-0:43        vector-scale (4-component vector of float)

-0:43          'scale' (float)

-0:43          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:43        vector-scale (temp 4-component vector of float)

+0:43          'scale' (temp float)

+0:43          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:43            'sampler' (uniform sampler2D)

 0:43            'coord' (smooth in 2-component vector of float)

 0:45      Sequence

-0:45        move second child to first child (3-element array of 2-component vector of float)

-0:45          'constructed' (3-element array of 2-component vector of float)

-0:45          Construct vec2 (3-element array of 2-component vector of float)

+0:45        move second child to first child (temp 3-element array of 2-component vector of float)

+0:45          'constructed' (temp 3-element array of 2-component vector of float)

+0:45          Construct vec2 (temp 3-element array of 2-component vector of float)

 0:45            'coord' (smooth in 2-component vector of float)

-0:45            Construct vec2 (2-component vector of float)

-0:45              'scale' (float)

+0:45            Construct vec2 (temp 2-component vector of float)

+0:45              'scale' (temp float)

 0:45            Constant:

 0:45              1.000000

 0:45              2.000000

-0:46      add second child into first child (4-component vector of float)

+0:46      add second child into first child (temp 4-component vector of float)

 0:46        'gl_FragColor' (fragColor 4-component vector of float)

-0:46        Construct vec4 (4-component vector of float)

-0:46          indirect index (2-component vector of float)

-0:46            'constructed' (3-element array of 2-component vector of float)

-0:46            i: direct index for structure (int)

-0:46              'foo' (uniform structure{int i, float f})

+0:46        Construct vec4 (temp 4-component vector of float)

+0:46          indirect index (temp 2-component vector of float)

+0:46            'constructed' (temp 3-element array of 2-component vector of float)

+0:46            i: direct index for structure (global int)

+0:46              'foo' (uniform structure{global int i, global float f})

 0:46              Constant:

 0:46                0 (const int)

-0:46          indirect index (2-component vector of float)

-0:46            'constructed' (3-element array of 2-component vector of float)

-0:46            i: direct index for structure (int)

-0:46              'foo' (uniform structure{int i, float f})

+0:46          indirect index (temp 2-component vector of float)

+0:46            'constructed' (temp 3-element array of 2-component vector of float)

+0:46            i: direct index for structure (global int)

+0:46              'foo' (uniform structure{global int i, global float f})

 0:46              Constant:

 0:46                0 (const int)

 0:?   Linker Objects

 0:?     'sampler' (uniform sampler2D)

 0:?     'coord' (smooth in 2-component vector of float)

-0:?     'foo' (uniform structure{int i, float f})

-0:?     'foo2' (uniform 5-element array of structure{int i, float f, structure{int i, float f} s1_1})

-0:?     'foo3' (uniform structure{3-element array of structure{int i, float f, structure{int i, float f} s1_1} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:?     'foo' (uniform structure{global int i, global float f})

+0:?     'foo2' (uniform 5-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:?     'foo3' (uniform structure{global 3-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:?     'Count' (uniform int)

 

 

@@ -116,20 +116,20 @@
 

 Shader version: 130

 0:? Sequence

-0:29  Function Definition: main( (void)

+0:29  Function Definition: main( (global void)

 0:29    Function Parameters: 

 0:?     Sequence

 0:32      Sequence

-0:32        move second child to first child (int)

-0:32          'iLocal' (int)

+0:32        move second child to first child (temp int)

+0:32          'iLocal' (temp int)

 0:32          'Count' (uniform int)

-0:34      Test condition and select (void)

+0:34      Test condition and select (temp void)

 0:34        Condition

-0:34        Compare Greater Than (bool)

-0:34          i: direct index for structure (int)

-0:34            direct index (structure{int i, float f, structure{int i, float f} s1_1})

-0:34              s2_1: direct index for structure (3-element array of structure{int i, float f, structure{int i, float f} s1_1})

-0:34                'foo3' (uniform structure{3-element array of structure{int i, float f, structure{int i, float f} s1_1} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:34        Compare Greater Than (temp bool)

+0:34          i: direct index for structure (global int)

+0:34            direct index (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:34              s2_1: direct index for structure (global 3-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:34                'foo3' (uniform structure{global 3-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:34                Constant:

 0:34                  0 (const int)

 0:34              Constant:

@@ -139,42 +139,42 @@
 0:34          Constant:

 0:34            0 (const int)

 0:34        true case

-0:35        move second child to first child (float)

-0:35          'scale' (float)

-0:35          f: direct index for structure (float)

-0:35            s1_1: direct index for structure (structure{int i, float f})

-0:35              indirect index (structure{int i, float f, structure{int i, float f} s1_1})

-0:35                'foo2' (uniform 5-element array of structure{int i, float f, structure{int i, float f} s1_1})

-0:35                add (int)

-0:35                  add (int)

-0:35                    i: direct index for structure (int)

-0:35                      indirect index (structure{int i, float f, structure{int i, float f} s1_1})

-0:35                        s2_1: direct index for structure (3-element array of structure{int i, float f, structure{int i, float f} s1_1})

-0:35                          'foo3' (uniform structure{3-element array of structure{int i, float f, structure{int i, float f} s1_1} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:35        move second child to first child (temp float)

+0:35          'scale' (temp float)

+0:35          f: direct index for structure (global float)

+0:35            s1_1: direct index for structure (global structure{global int i, global float f})

+0:35              indirect index (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:35                'foo2' (uniform 5-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:35                add (temp int)

+0:35                  add (temp int)

+0:35                    i: direct index for structure (global int)

+0:35                      indirect index (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:35                        s2_1: direct index for structure (global 3-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:35                          'foo3' (uniform structure{global 3-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:35                          Constant:

 0:35                            0 (const int)

-0:35                        i: direct index for structure (int)

-0:35                          'foo' (uniform structure{int i, float f})

+0:35                        i: direct index for structure (global int)

+0:35                          'foo' (uniform structure{global int i, global float f})

 0:35                          Constant:

 0:35                            0 (const int)

 0:35                      Constant:

 0:35                        0 (const int)

 0:35                    Constant:

 0:35                      2 (const int)

-0:35                  Pre-Increment (int)

-0:35                    'iLocal' (int)

+0:35                  Pre-Increment (temp int)

+0:35                    'iLocal' (temp int)

 0:35              Constant:

 0:35                2 (const int)

 0:35            Constant:

 0:35              1 (const int)

 0:34        false case

-0:37        move second child to first child (float)

-0:37          'scale' (float)

-0:37          f: direct index for structure (float)

-0:37            s1_1: direct index for structure (structure{int i, float f})

-0:37              direct index (structure{int i, float f, structure{int i, float f} s1_1})

-0:37                s2_1: direct index for structure (3-element array of structure{int i, float f, structure{int i, float f} s1_1})

-0:37                  'foo3' (uniform structure{3-element array of structure{int i, float f, structure{int i, float f} s1_1} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:37        move second child to first child (temp float)

+0:37          'scale' (temp float)

+0:37          f: direct index for structure (global float)

+0:37            s1_1: direct index for structure (global structure{global int i, global float f})

+0:37              direct index (temp structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:37                s2_1: direct index for structure (global 3-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:37                  'foo3' (uniform structure{global 3-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:37                  Constant:

 0:37                    0 (const int)

 0:37                Constant:

@@ -183,43 +183,43 @@
 0:37                2 (const int)

 0:37            Constant:

 0:37              1 (const int)

-0:43      move second child to first child (4-component vector of float)

+0:43      move second child to first child (temp 4-component vector of float)

 0:43        'gl_FragColor' (fragColor 4-component vector of float)

-0:43        vector-scale (4-component vector of float)

-0:43          'scale' (float)

-0:43          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:43        vector-scale (temp 4-component vector of float)

+0:43          'scale' (temp float)

+0:43          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:43            'sampler' (uniform sampler2D)

 0:43            'coord' (smooth in 2-component vector of float)

 0:45      Sequence

-0:45        move second child to first child (3-element array of 2-component vector of float)

-0:45          'constructed' (3-element array of 2-component vector of float)

-0:45          Construct vec2 (3-element array of 2-component vector of float)

+0:45        move second child to first child (temp 3-element array of 2-component vector of float)

+0:45          'constructed' (temp 3-element array of 2-component vector of float)

+0:45          Construct vec2 (temp 3-element array of 2-component vector of float)

 0:45            'coord' (smooth in 2-component vector of float)

-0:45            Construct vec2 (2-component vector of float)

-0:45              'scale' (float)

+0:45            Construct vec2 (temp 2-component vector of float)

+0:45              'scale' (temp float)

 0:45            Constant:

 0:45              1.000000

 0:45              2.000000

-0:46      add second child into first child (4-component vector of float)

+0:46      add second child into first child (temp 4-component vector of float)

 0:46        'gl_FragColor' (fragColor 4-component vector of float)

-0:46        Construct vec4 (4-component vector of float)

-0:46          indirect index (2-component vector of float)

-0:46            'constructed' (3-element array of 2-component vector of float)

-0:46            i: direct index for structure (int)

-0:46              'foo' (uniform structure{int i, float f})

+0:46        Construct vec4 (temp 4-component vector of float)

+0:46          indirect index (temp 2-component vector of float)

+0:46            'constructed' (temp 3-element array of 2-component vector of float)

+0:46            i: direct index for structure (global int)

+0:46              'foo' (uniform structure{global int i, global float f})

 0:46              Constant:

 0:46                0 (const int)

-0:46          indirect index (2-component vector of float)

-0:46            'constructed' (3-element array of 2-component vector of float)

-0:46            i: direct index for structure (int)

-0:46              'foo' (uniform structure{int i, float f})

+0:46          indirect index (temp 2-component vector of float)

+0:46            'constructed' (temp 3-element array of 2-component vector of float)

+0:46            i: direct index for structure (global int)

+0:46              'foo' (uniform structure{global int i, global float f})

 0:46              Constant:

 0:46                0 (const int)

 0:?   Linker Objects

 0:?     'sampler' (uniform sampler2D)

 0:?     'coord' (smooth in 2-component vector of float)

-0:?     'foo' (uniform structure{int i, float f})

-0:?     'foo2' (uniform 5-element array of structure{int i, float f, structure{int i, float f} s1_1})

-0:?     'foo3' (uniform structure{3-element array of structure{int i, float f, structure{int i, float f} s1_1} s2_1, int i, float f, structure{int i, float f} s1_1})

+0:?     'foo' (uniform structure{global int i, global float f})

+0:?     'foo2' (uniform 5-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1})

+0:?     'foo3' (uniform structure{global 3-element array of structure{global int i, global float f, global structure{global int i, global float f} s1_1} s2_1, global int i, global float f, global structure{global int i, global float f} s1_1})

 0:?     'Count' (uniform int)

 

diff --git a/Test/baseResults/varyingArray.frag.out b/Test/baseResults/varyingArray.frag.out
index e4dc52a..12e225e 100644
--- a/Test/baseResults/varyingArray.frag.out
+++ b/Test/baseResults/varyingArray.frag.out
@@ -6,51 +6,51 @@
 

 Shader version: 130

 0:? Sequence

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:12    Sequence

 0:12      Sequence

-0:12        move second child to first child (4-component vector of float)

-0:12          'texColor' (4-component vector of float)

-0:12          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:12        move second child to first child (temp 4-component vector of float)

+0:12          'texColor' (temp 4-component vector of float)

+0:12          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:12            'texSampler2D' (uniform sampler2D)

-0:12            Construct vec2 (2-component vector of float)

-0:12              add (4-component vector of float)

-0:12                direct index (smooth 4-component vector of float)

+0:12            Construct vec2 (temp 2-component vector of float)

+0:12              add (temp 4-component vector of float)

+0:12                direct index (smooth temp 4-component vector of float)

 0:12                  'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:12                  Constant:

 0:12                    4 (const int)

-0:12                direct index (smooth 4-component vector of float)

+0:12                direct index (smooth temp 4-component vector of float)

 0:12                  'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:12                  Constant:

 0:12                    5 (const int)

-0:14      add second child into first child (4-component vector of float)

-0:14        'texColor' (4-component vector of float)

+0:14      add second child into first child (temp 4-component vector of float)

+0:14        'texColor' (temp 4-component vector of float)

 0:14        'color' (smooth in 4-component vector of float)

-0:16      move second child to first child (float)

-0:16        direct index (float)

-0:16          'texColor' (4-component vector of float)

+0:16      move second child to first child (temp float)

+0:16        direct index (temp float)

+0:16          'texColor' (temp 4-component vector of float)

 0:16          Constant:

 0:16            3 (const int)

 0:16        'alpha' (smooth in float)

-0:18      move second child to first child (4-component vector of float)

+0:18      move second child to first child (temp 4-component vector of float)

 0:18        'gl_FragColor' (fragColor 4-component vector of float)

-0:18        add (4-component vector of float)

-0:18          add (4-component vector of float)

-0:18            add (4-component vector of float)

-0:18              direct index (smooth 4-component vector of float)

+0:18        add (temp 4-component vector of float)

+0:18          add (temp 4-component vector of float)

+0:18            add (temp 4-component vector of float)

+0:18              direct index (smooth temp 4-component vector of float)

 0:18                'foo' (smooth in 3-element array of 4-component vector of float)

 0:18                Constant:

 0:18                  1 (const int)

-0:18              direct index (smooth 4-component vector of float)

+0:18              direct index (smooth temp 4-component vector of float)

 0:18                'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:18                Constant:

 0:18                  0 (const int)

-0:18            direct index (smooth 4-component vector of float)

+0:18            direct index (smooth temp 4-component vector of float)

 0:18              'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:18              Constant:

 0:18                4 (const int)

-0:18          'texColor' (4-component vector of float)

+0:18          'texColor' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'texSampler2D' (uniform sampler2D)

 0:?     'color' (smooth in 4-component vector of float)

@@ -65,51 +65,51 @@
 

 Shader version: 130

 0:? Sequence

-0:10  Function Definition: main( (void)

+0:10  Function Definition: main( (global void)

 0:10    Function Parameters: 

 0:12    Sequence

 0:12      Sequence

-0:12        move second child to first child (4-component vector of float)

-0:12          'texColor' (4-component vector of float)

-0:12          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:12        move second child to first child (temp 4-component vector of float)

+0:12          'texColor' (temp 4-component vector of float)

+0:12          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:12            'texSampler2D' (uniform sampler2D)

-0:12            Construct vec2 (2-component vector of float)

-0:12              add (4-component vector of float)

-0:12                direct index (smooth 4-component vector of float)

+0:12            Construct vec2 (temp 2-component vector of float)

+0:12              add (temp 4-component vector of float)

+0:12                direct index (smooth temp 4-component vector of float)

 0:12                  'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:12                  Constant:

 0:12                    4 (const int)

-0:12                direct index (smooth 4-component vector of float)

+0:12                direct index (smooth temp 4-component vector of float)

 0:12                  'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:12                  Constant:

 0:12                    5 (const int)

-0:14      add second child into first child (4-component vector of float)

-0:14        'texColor' (4-component vector of float)

+0:14      add second child into first child (temp 4-component vector of float)

+0:14        'texColor' (temp 4-component vector of float)

 0:14        'color' (smooth in 4-component vector of float)

-0:16      move second child to first child (float)

-0:16        direct index (float)

-0:16          'texColor' (4-component vector of float)

+0:16      move second child to first child (temp float)

+0:16        direct index (temp float)

+0:16          'texColor' (temp 4-component vector of float)

 0:16          Constant:

 0:16            3 (const int)

 0:16        'alpha' (smooth in float)

-0:18      move second child to first child (4-component vector of float)

+0:18      move second child to first child (temp 4-component vector of float)

 0:18        'gl_FragColor' (fragColor 4-component vector of float)

-0:18        add (4-component vector of float)

-0:18          add (4-component vector of float)

-0:18            add (4-component vector of float)

-0:18              direct index (smooth 4-component vector of float)

+0:18        add (temp 4-component vector of float)

+0:18          add (temp 4-component vector of float)

+0:18            add (temp 4-component vector of float)

+0:18              direct index (smooth temp 4-component vector of float)

 0:18                'foo' (smooth in 3-element array of 4-component vector of float)

 0:18                Constant:

 0:18                  1 (const int)

-0:18              direct index (smooth 4-component vector of float)

+0:18              direct index (smooth temp 4-component vector of float)

 0:18                'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:18                Constant:

 0:18                  0 (const int)

-0:18            direct index (smooth 4-component vector of float)

+0:18            direct index (smooth temp 4-component vector of float)

 0:18              'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:18              Constant:

 0:18                4 (const int)

-0:18          'texColor' (4-component vector of float)

+0:18          'texColor' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'texSampler2D' (uniform sampler2D)

 0:?     'color' (smooth in 4-component vector of float)

diff --git a/Test/baseResults/varyingArrayIndirect.frag.out b/Test/baseResults/varyingArrayIndirect.frag.out
index 4c80527..2d5380e 100644
--- a/Test/baseResults/varyingArrayIndirect.frag.out
+++ b/Test/baseResults/varyingArrayIndirect.frag.out
@@ -6,50 +6,50 @@
 

 Shader version: 130

 0:? Sequence

-0:12  Function Definition: main( (void)

+0:12  Function Definition: main( (global void)

 0:12    Function Parameters: 

 0:14    Sequence

 0:14      Sequence

-0:14        move second child to first child (4-component vector of float)

-0:14          'texColor' (4-component vector of float)

-0:14          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:14        move second child to first child (temp 4-component vector of float)

+0:14          'texColor' (temp 4-component vector of float)

+0:14          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:14            'texSampler2D' (uniform sampler2D)

-0:14            Construct vec2 (2-component vector of float)

-0:14              add (4-component vector of float)

-0:14                add (4-component vector of float)

-0:14                  indirect index (smooth 4-component vector of float)

+0:14            Construct vec2 (temp 2-component vector of float)

+0:14              add (temp 4-component vector of float)

+0:14                add (temp 4-component vector of float)

+0:14                  indirect index (smooth temp 4-component vector of float)

 0:14                    'userIn' (smooth in 2-element array of 4-component vector of float)

 0:14                    'b' (uniform int)

-0:14                  indirect index (smooth 4-component vector of float)

+0:14                  indirect index (smooth temp 4-component vector of float)

 0:14                    'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:14                    'a' (uniform int)

-0:14                direct index (smooth 4-component vector of float)

+0:14                direct index (smooth temp 4-component vector of float)

 0:14                  'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:14                  Constant:

 0:14                    5 (const int)

-0:16      add second child into first child (4-component vector of float)

-0:16        'texColor' (4-component vector of float)

+0:16      add second child into first child (temp 4-component vector of float)

+0:16        'texColor' (temp 4-component vector of float)

 0:16        'color' (smooth in 4-component vector of float)

-0:18      move second child to first child (float)

-0:18        direct index (float)

-0:18          'texColor' (4-component vector of float)

+0:18      move second child to first child (temp float)

+0:18        direct index (temp float)

+0:18          'texColor' (temp 4-component vector of float)

 0:18          Constant:

 0:18            3 (const int)

 0:18        'alpha' (smooth in float)

-0:20      move second child to first child (4-component vector of float)

+0:20      move second child to first child (temp 4-component vector of float)

 0:20        'gl_FragColor' (fragColor 4-component vector of float)

-0:20        add (4-component vector of float)

-0:20          add (4-component vector of float)

-0:20            add (4-component vector of float)

-0:20              direct index (smooth 4-component vector of float)

+0:20        add (temp 4-component vector of float)

+0:20          add (temp 4-component vector of float)

+0:20            add (temp 4-component vector of float)

+0:20              direct index (smooth temp 4-component vector of float)

 0:20                'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:20                Constant:

 0:20                  0 (const int)

-0:20              indirect index (smooth 4-component vector of float)

+0:20              indirect index (smooth temp 4-component vector of float)

 0:20                'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:20                'b' (uniform int)

-0:20            'texColor' (4-component vector of float)

-0:20          indirect index (smooth 4-component vector of float)

+0:20            'texColor' (temp 4-component vector of float)

+0:20          indirect index (smooth temp 4-component vector of float)

 0:20            'userIn' (smooth in 2-element array of 4-component vector of float)

 0:20            'a' (uniform int)

 0:?   Linker Objects

@@ -68,50 +68,50 @@
 

 Shader version: 130

 0:? Sequence

-0:12  Function Definition: main( (void)

+0:12  Function Definition: main( (global void)

 0:12    Function Parameters: 

 0:14    Sequence

 0:14      Sequence

-0:14        move second child to first child (4-component vector of float)

-0:14          'texColor' (4-component vector of float)

-0:14          Function Call: texture2D(s21;vf2; (4-component vector of float)

+0:14        move second child to first child (temp 4-component vector of float)

+0:14          'texColor' (temp 4-component vector of float)

+0:14          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

 0:14            'texSampler2D' (uniform sampler2D)

-0:14            Construct vec2 (2-component vector of float)

-0:14              add (4-component vector of float)

-0:14                add (4-component vector of float)

-0:14                  indirect index (smooth 4-component vector of float)

+0:14            Construct vec2 (temp 2-component vector of float)

+0:14              add (temp 4-component vector of float)

+0:14                add (temp 4-component vector of float)

+0:14                  indirect index (smooth temp 4-component vector of float)

 0:14                    'userIn' (smooth in 2-element array of 4-component vector of float)

 0:14                    'b' (uniform int)

-0:14                  indirect index (smooth 4-component vector of float)

+0:14                  indirect index (smooth temp 4-component vector of float)

 0:14                    'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:14                    'a' (uniform int)

-0:14                direct index (smooth 4-component vector of float)

+0:14                direct index (smooth temp 4-component vector of float)

 0:14                  'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:14                  Constant:

 0:14                    5 (const int)

-0:16      add second child into first child (4-component vector of float)

-0:16        'texColor' (4-component vector of float)

+0:16      add second child into first child (temp 4-component vector of float)

+0:16        'texColor' (temp 4-component vector of float)

 0:16        'color' (smooth in 4-component vector of float)

-0:18      move second child to first child (float)

-0:18        direct index (float)

-0:18          'texColor' (4-component vector of float)

+0:18      move second child to first child (temp float)

+0:18        direct index (temp float)

+0:18          'texColor' (temp 4-component vector of float)

 0:18          Constant:

 0:18            3 (const int)

 0:18        'alpha' (smooth in float)

-0:20      move second child to first child (4-component vector of float)

+0:20      move second child to first child (temp 4-component vector of float)

 0:20        'gl_FragColor' (fragColor 4-component vector of float)

-0:20        add (4-component vector of float)

-0:20          add (4-component vector of float)

-0:20            add (4-component vector of float)

-0:20              direct index (smooth 4-component vector of float)

+0:20        add (temp 4-component vector of float)

+0:20          add (temp 4-component vector of float)

+0:20            add (temp 4-component vector of float)

+0:20              direct index (smooth temp 4-component vector of float)

 0:20                'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:20                Constant:

 0:20                  0 (const int)

-0:20              indirect index (smooth 4-component vector of float)

+0:20              indirect index (smooth temp 4-component vector of float)

 0:20                'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)

 0:20                'b' (uniform int)

-0:20            'texColor' (4-component vector of float)

-0:20          indirect index (smooth 4-component vector of float)

+0:20            'texColor' (temp 4-component vector of float)

+0:20          indirect index (smooth temp 4-component vector of float)

 0:20            'userIn' (smooth in 2-element array of 4-component vector of float)

 0:20            'a' (uniform int)

 0:?   Linker Objects

diff --git a/Test/baseResults/versionsClean.frag.out b/Test/baseResults/versionsClean.frag.out
index 2c9a46e..a0b038a 100644
--- a/Test/baseResults/versionsClean.frag.out
+++ b/Test/baseResults/versionsClean.frag.out
@@ -6,12 +6,12 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:41  Function Definition: main( (void)

+0:41  Function Definition: main( (global void)

 0:41    Function Parameters: 

 0:43    Sequence

-0:43      move second child to first child (highp 4-component vector of float)

+0:43      move second child to first child (temp highp 4-component vector of float)

 0:43        'foo' (out highp 4-component vector of float)

-0:43        Construct vec4 (highp 4-component vector of float)

+0:43        Construct vec4 (temp highp 4-component vector of float)

 0:43          'color' (smooth in highp 3-component vector of float)

 0:43          Constant:

 0:43            142.000000

@@ -27,12 +27,12 @@
 

 Shader version: 300

 ERROR: node is still EOpNull!

-0:41  Function Definition: main( (void)

+0:41  Function Definition: main( (global void)

 0:41    Function Parameters: 

 0:43    Sequence

-0:43      move second child to first child (highp 4-component vector of float)

+0:43      move second child to first child (temp highp 4-component vector of float)

 0:43        'foo' (out highp 4-component vector of float)

-0:43        Construct vec4 (highp 4-component vector of float)

+0:43        Construct vec4 (temp highp 4-component vector of float)

 0:43          'color' (smooth in highp 3-component vector of float)

 0:43          Constant:

 0:43            142.000000

diff --git a/Test/baseResults/versionsClean.vert.out b/Test/baseResults/versionsClean.vert.out
index f275333..f2f6688 100644
--- a/Test/baseResults/versionsClean.vert.out
+++ b/Test/baseResults/versionsClean.vert.out
@@ -3,15 +3,15 @@
 

 Shader version: 420

 0:? Sequence

-0:40  Function Definition: main( (void)

+0:40  Function Definition: main( (global void)

 0:40    Function Parameters: 

 0:42    Sequence

-0:42      move second child to first child (4-component vector of float)

+0:42      move second child to first child (temp 4-component vector of float)

 0:42        gl_Position: direct index for structure (gl_Position 4-component vector of float)

 0:42          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:42          Constant:

 0:42            0 (const uint)

-0:42        Construct vec4 (4-component vector of float)

+0:42        Construct vec4 (temp 4-component vector of float)

 0:42          'color' (in 3-component vector of float)

 0:42          Constant:

 0:42            142.000000

@@ -28,15 +28,15 @@
 

 Shader version: 420

 0:? Sequence

-0:40  Function Definition: main( (void)

+0:40  Function Definition: main( (global void)

 0:40    Function Parameters: 

 0:42    Sequence

-0:42      move second child to first child (4-component vector of float)

+0:42      move second child to first child (temp 4-component vector of float)

 0:42        gl_Position: direct index for structure (gl_Position 4-component vector of float)

 0:42          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:42          Constant:

 0:42            0 (const uint)

-0:42        Construct vec4 (4-component vector of float)

+0:42        Construct vec4 (temp 4-component vector of float)

 0:42          'color' (in 3-component vector of float)

 0:42          Constant:

 0:42            142.000000

diff --git a/Test/baseResults/versionsErrors.frag.out b/Test/baseResults/versionsErrors.frag.out
index e99b491..95df988 100644
--- a/Test/baseResults/versionsErrors.frag.out
+++ b/Test/baseResults/versionsErrors.frag.out
@@ -8,12 +8,12 @@
 

 Shader version: 110

 ERROR: node is still EOpNull!

-0:42  Function Definition: main( (void)

+0:42  Function Definition: main( (global void)

 0:42    Function Parameters: 

 0:44    Sequence

-0:44      move second child to first child (4-component vector of float)

+0:44      move second child to first child (temp 4-component vector of float)

 0:44        'gl_FragColor' (fragColor 4-component vector of float)

-0:44        Construct vec4 (4-component vector of float)

+0:44        Construct vec4 (temp 4-component vector of float)

 0:44          'color' (smooth in 3-component vector of float)

 0:44          Constant:

 0:44            142.000000

@@ -28,12 +28,12 @@
 

 Shader version: 110

 ERROR: node is still EOpNull!

-0:42  Function Definition: main( (void)

+0:42  Function Definition: main( (global void)

 0:42    Function Parameters: 

 0:44    Sequence

-0:44      move second child to first child (4-component vector of float)

+0:44      move second child to first child (temp 4-component vector of float)

 0:44        'gl_FragColor' (fragColor 4-component vector of float)

-0:44        Construct vec4 (4-component vector of float)

+0:44        Construct vec4 (temp 4-component vector of float)

 0:44          'color' (smooth in 3-component vector of float)

 0:44          Constant:

 0:44            142.000000

diff --git a/Test/baseResults/versionsErrors.vert.out b/Test/baseResults/versionsErrors.vert.out
index e7d8134..abac8f7 100644
--- a/Test/baseResults/versionsErrors.vert.out
+++ b/Test/baseResults/versionsErrors.vert.out
@@ -9,15 +9,15 @@
 Shader version: 420

 Requested GL_ARB_texture_rectangle

 ERROR: node is still EOpNull!

-0:42  Function Definition: main( (void)

+0:42  Function Definition: main( (global void)

 0:42    Function Parameters: 

 0:44    Sequence

-0:44      move second child to first child (4-component vector of float)

+0:44      move second child to first child (temp 4-component vector of float)

 0:44        gl_Position: direct index for structure (gl_Position 4-component vector of float)

 0:44          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:44          Constant:

 0:44            0 (const uint)

-0:44        Construct vec4 (4-component vector of float)

+0:44        Construct vec4 (temp 4-component vector of float)

 0:44          'color' (in 3-component vector of float)

 0:44          Constant:

 0:44            142.000000

@@ -36,15 +36,15 @@
 Shader version: 420

 Requested GL_ARB_texture_rectangle

 ERROR: node is still EOpNull!

-0:42  Function Definition: main( (void)

+0:42  Function Definition: main( (global void)

 0:42    Function Parameters: 

 0:44    Sequence

-0:44      move second child to first child (4-component vector of float)

+0:44      move second child to first child (temp 4-component vector of float)

 0:44        gl_Position: direct index for structure (gl_Position 4-component vector of float)

 0:44          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:44          Constant:

 0:44            0 (const uint)

-0:44        Construct vec4 (4-component vector of float)

+0:44        Construct vec4 (temp 4-component vector of float)

 0:44          'color' (in 3-component vector of float)

 0:44          Constant:

 0:44            142.000000

diff --git a/Test/baseResults/voidFunction.frag.out b/Test/baseResults/voidFunction.frag.out
index 1b6ee3b..579dde9 100644
--- a/Test/baseResults/voidFunction.frag.out
+++ b/Test/baseResults/voidFunction.frag.out
@@ -3,45 +3,45 @@
 Shader version: 120

 0:? Sequence

 0:7  Sequence

-0:7    move second child to first child (float)

-0:7      'bar' (float)

+0:7    move second child to first child (temp float)

+0:7      'bar' (global float)

 0:7      Constant:

 0:7        2.000000

-0:9  Function Definition: foo( (void)

+0:9  Function Definition: foo( (global void)

 0:9    Function Parameters: 

 0:11    Sequence

-0:11      Post-Increment (float)

-0:11        'bar' (float)

+0:11      Post-Increment (temp float)

+0:11        'bar' (global float)

 0:13      Branch: Return

-0:16  Function Definition: foo2( (void)

+0:16  Function Definition: foo2( (global void)

 0:16    Function Parameters: 

 0:18    Sequence

-0:18      Post-Increment (float)

-0:18        'bar' (float)

-0:21  Function Definition: main( (void)

+0:18      Post-Increment (temp float)

+0:18        'bar' (global float)

+0:21  Function Definition: main( (global void)

 0:21    Function Parameters: 

 0:23    Sequence

 0:23      Sequence

-0:23        move second child to first child (4-component vector of float)

-0:23          'outColor' (4-component vector of float)

+0:23        move second child to first child (temp 4-component vector of float)

+0:23          'outColor' (temp 4-component vector of float)

 0:23          'bigColor' (uniform 4-component vector of float)

-0:25      Function Call: foo( (void)

-0:27      Function Call: foo2( (void)

-0:29      add second child into first child (float)

-0:29        direct index (float)

-0:29          'outColor' (4-component vector of float)

+0:25      Function Call: foo( (global void)

+0:27      Function Call: foo2( (global void)

+0:29      add second child into first child (temp float)

+0:29        direct index (temp float)

+0:29          'outColor' (temp 4-component vector of float)

 0:29          Constant:

 0:29            0 (const int)

-0:29        'bar' (float)

-0:31      move second child to first child (4-component vector of float)

+0:29        'bar' (global float)

+0:31      move second child to first child (temp 4-component vector of float)

 0:31        'gl_FragColor' (fragColor 4-component vector of float)

-0:31        'outColor' (4-component vector of float)

+0:31        'outColor' (temp 4-component vector of float)

 0:33      Branch: Return

 0:?   Linker Objects

 0:?     'bigColor' (uniform 4-component vector of float)

 0:?     'BaseColor' (smooth in 4-component vector of float)

 0:?     'd' (uniform float)

-0:?     'bar' (float)

+0:?     'bar' (global float)

 

 

 Linked fragment stage:

@@ -50,43 +50,43 @@
 Shader version: 120

 0:? Sequence

 0:7  Sequence

-0:7    move second child to first child (float)

-0:7      'bar' (float)

+0:7    move second child to first child (temp float)

+0:7      'bar' (global float)

 0:7      Constant:

 0:7        2.000000

-0:9  Function Definition: foo( (void)

+0:9  Function Definition: foo( (global void)

 0:9    Function Parameters: 

 0:11    Sequence

-0:11      Post-Increment (float)

-0:11        'bar' (float)

+0:11      Post-Increment (temp float)

+0:11        'bar' (global float)

 0:13      Branch: Return

-0:16  Function Definition: foo2( (void)

+0:16  Function Definition: foo2( (global void)

 0:16    Function Parameters: 

 0:18    Sequence

-0:18      Post-Increment (float)

-0:18        'bar' (float)

-0:21  Function Definition: main( (void)

+0:18      Post-Increment (temp float)

+0:18        'bar' (global float)

+0:21  Function Definition: main( (global void)

 0:21    Function Parameters: 

 0:23    Sequence

 0:23      Sequence

-0:23        move second child to first child (4-component vector of float)

-0:23          'outColor' (4-component vector of float)

+0:23        move second child to first child (temp 4-component vector of float)

+0:23          'outColor' (temp 4-component vector of float)

 0:23          'bigColor' (uniform 4-component vector of float)

-0:25      Function Call: foo( (void)

-0:27      Function Call: foo2( (void)

-0:29      add second child into first child (float)

-0:29        direct index (float)

-0:29          'outColor' (4-component vector of float)

+0:25      Function Call: foo( (global void)

+0:27      Function Call: foo2( (global void)

+0:29      add second child into first child (temp float)

+0:29        direct index (temp float)

+0:29          'outColor' (temp 4-component vector of float)

 0:29          Constant:

 0:29            0 (const int)

-0:29        'bar' (float)

-0:31      move second child to first child (4-component vector of float)

+0:29        'bar' (global float)

+0:31      move second child to first child (temp 4-component vector of float)

 0:31        'gl_FragColor' (fragColor 4-component vector of float)

-0:31        'outColor' (4-component vector of float)

+0:31        'outColor' (temp 4-component vector of float)

 0:33      Branch: Return

 0:?   Linker Objects

 0:?     'bigColor' (uniform 4-component vector of float)

 0:?     'BaseColor' (smooth in 4-component vector of float)

 0:?     'd' (uniform float)

-0:?     'bar' (float)

+0:?     'bar' (global float)

 

diff --git a/Test/baseResults/whileLoop.frag.out b/Test/baseResults/whileLoop.frag.out
index 4ececaf..2507bd8 100644
--- a/Test/baseResults/whileLoop.frag.out
+++ b/Test/baseResults/whileLoop.frag.out
@@ -2,29 +2,29 @@
 

 Shader version: 110

 0:? Sequence

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:9    Sequence

 0:9      Sequence

-0:9        move second child to first child (4-component vector of float)

-0:9          'color' (4-component vector of float)

+0:9        move second child to first child (temp 4-component vector of float)

+0:9          'color' (temp 4-component vector of float)

 0:9          'BaseColor' (smooth in 4-component vector of float)

 0:11      Loop with condition tested first

 0:11        Loop Condition

-0:11        Compare Less Than (bool)

-0:11          direct index (float)

-0:11            'color' (4-component vector of float)

+0:11        Compare Less Than (temp bool)

+0:11          direct index (temp float)

+0:11            'color' (temp 4-component vector of float)

 0:11            Constant:

 0:11              0 (const int)

 0:11          'd' (uniform float)

 0:11        Loop Body

 0:12        Sequence

-0:12          add second child into first child (4-component vector of float)

-0:12            'color' (4-component vector of float)

+0:12          add second child into first child (temp 4-component vector of float)

+0:12            'color' (temp 4-component vector of float)

 0:12            'bigColor' (uniform 4-component vector of float)

-0:15      move second child to first child (4-component vector of float)

+0:15      move second child to first child (temp 4-component vector of float)

 0:15        'gl_FragColor' (fragColor 4-component vector of float)

-0:15        'color' (4-component vector of float)

+0:15        'color' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'bigColor' (uniform 4-component vector of float)

 0:?     'BaseColor' (smooth in 4-component vector of float)

@@ -36,29 +36,29 @@
 

 Shader version: 110

 0:? Sequence

-0:7  Function Definition: main( (void)

+0:7  Function Definition: main( (global void)

 0:7    Function Parameters: 

 0:9    Sequence

 0:9      Sequence

-0:9        move second child to first child (4-component vector of float)

-0:9          'color' (4-component vector of float)

+0:9        move second child to first child (temp 4-component vector of float)

+0:9          'color' (temp 4-component vector of float)

 0:9          'BaseColor' (smooth in 4-component vector of float)

 0:11      Loop with condition tested first

 0:11        Loop Condition

-0:11        Compare Less Than (bool)

-0:11          direct index (float)

-0:11            'color' (4-component vector of float)

+0:11        Compare Less Than (temp bool)

+0:11          direct index (temp float)

+0:11            'color' (temp 4-component vector of float)

 0:11            Constant:

 0:11              0 (const int)

 0:11          'd' (uniform float)

 0:11        Loop Body

 0:12        Sequence

-0:12          add second child into first child (4-component vector of float)

-0:12            'color' (4-component vector of float)

+0:12          add second child into first child (temp 4-component vector of float)

+0:12            'color' (temp 4-component vector of float)

 0:12            'bigColor' (uniform 4-component vector of float)

-0:15      move second child to first child (4-component vector of float)

+0:15      move second child to first child (temp 4-component vector of float)

 0:15        'gl_FragColor' (fragColor 4-component vector of float)

-0:15        'color' (4-component vector of float)

+0:15        'color' (temp 4-component vector of float)

 0:?   Linker Objects

 0:?     'bigColor' (uniform 4-component vector of float)

 0:?     'BaseColor' (smooth in 4-component vector of float)

diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h
index 32cf83a..eba1df7 100644
--- a/glslang/Include/BaseTypes.h
+++ b/glslang/Include/BaseTypes.h
@@ -104,7 +104,7 @@
 __inline const char* GetStorageQualifierString(TStorageQualifier q) 
 {
     switch (q) {
-    case EvqTemporary:      return "temporary";      break;
+    case EvqTemporary:      return "temp";           break;
     case EvqGlobal:         return "global";         break;
     case EvqConst:          return "const";          break;
     case EvqConstReadOnly:  return "const (read only)"; break;
diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h
index fe1ffa3..b76e2d5 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -1259,8 +1259,7 @@
             p += snprintf(p, end - p, "readonly ");
         if (qualifier.writeonly)
             p += snprintf(p, end - p, "writeonly ");
-        if (qualifier.storage != EvqTemporary && qualifier.storage != EvqGlobal)
-            p += snprintf(p, end - p, "%s ", getStorageQualifierString());
+        p += snprintf(p, end - p, "%s ", getStorageQualifierString());
         if (arraySizes) {
             if (arraySizes->sizes.front() == 0)
                 p += snprintf(p, end - p, "implicitly-sized array of ");