From 8b37b04eccd5c9aad2905c33c160b0e120a4cd37 Mon Sep 17 00:00:00 2001
From: John Kessenich <cepheus@frii.com>
Date: Wed, 29 Apr 2015 10:16:56 +0000
Subject: [PATCH] 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
---
 Test/baseResults/100.frag.out                 |  502 +++---
 Test/baseResults/100Limits.vert.out           |  644 +++----
 Test/baseResults/100scope.vert.out            |  164 +-
 Test/baseResults/110scope.vert.out            |  172 +-
 Test/baseResults/120.frag.out                 | 1604 ++++++++---------
 Test/baseResults/120.vert.out                 |  618 +++----
 Test/baseResults/130.frag.out                 |  538 +++---
 Test/baseResults/130.vert.out                 |  268 +--
 Test/baseResults/140.frag.out                 |   76 +-
 Test/baseResults/140.vert.out                 |  156 +-
 Test/baseResults/150.frag.out                 |  176 +-
 Test/baseResults/150.geom.out                 |   96 +-
 Test/baseResults/150.tesc.out                 | 1026 +++++------
 Test/baseResults/150.vert.out                 |   28 +-
 Test/baseResults/300.frag.out                 |  598 +++---
 Test/baseResults/300.vert.out                 |  364 ++--
 Test/baseResults/300BuiltIns.frag.out         |  656 +++----
 Test/baseResults/300block.frag.out            |   72 +-
 Test/baseResults/300layout.frag.out           |   20 +-
 Test/baseResults/300layout.vert.out           |   40 +-
 Test/baseResults/300link.frag.out             |    4 +-
 Test/baseResults/300link2.frag.out            |    4 +-
 Test/baseResults/300link3.frag.out            |    4 +-
 Test/baseResults/300operations.frag.out       |  644 +++----
 Test/baseResults/300scope.vert.out            |  156 +-
 Test/baseResults/310.comp.out                 |  524 +++---
 Test/baseResults/310.frag.out                 |  350 ++--
 Test/baseResults/310.vert.out                 |  476 ++---
 Test/baseResults/330.frag.out                 |   48 +-
 Test/baseResults/330comp.frag.out             |   20 +-
 Test/baseResults/400.frag.out                 |  464 ++---
 Test/baseResults/400.geom.out                 |  336 ++--
 Test/baseResults/400.tesc.out                 |  300 +--
 Test/baseResults/400.tese.out                 |  128 +-
 Test/baseResults/410.geom.out                 |   38 +-
 Test/baseResults/410.tesc.out                 |    8 +-
 Test/baseResults/420.frag.out                 |    8 +-
 Test/baseResults/420.geom.out                 |  104 +-
 Test/baseResults/420.tesc.out                 |  114 +-
 Test/baseResults/420.tese.out                 |  210 +--
 Test/baseResults/420.vert.out                 |  396 ++--
 Test/baseResults/420_size_gl_in.geom.out      |   20 +-
 Test/baseResults/430.comp.out                 |  182 +-
 Test/baseResults/430.vert.out                 |  164 +-
 Test/baseResults/430scope.vert.out            |  160 +-
 Test/baseResults/440.frag.out                 |    8 +-
 Test/baseResults/440.vert.out                 |   16 +-
 Test/baseResults/450.frag.out                 |  324 ++--
 Test/baseResults/450.geom.out                 |   20 +-
 Test/baseResults/450.tesc.out                 |   24 +-
 Test/baseResults/450.tese.out                 |   20 +-
 Test/baseResults/450.vert.out                 |   32 +-
 Test/baseResults/Operations.frag.out          | 1380 +++++++-------
 Test/baseResults/aggOps.frag.out              |  268 +--
 Test/baseResults/always-discard.frag.out      |  216 +--
 Test/baseResults/always-discard2.frag.out     |   80 +-
 Test/baseResults/array.frag.out               |  380 ++--
 Test/baseResults/array100.frag.out            |  224 +--
 Test/baseResults/atomic_uint.frag.out         |   60 +-
 Test/baseResults/comment.frag.out             |    4 +-
 Test/baseResults/conditionalDiscard.frag.out  |   36 +-
 Test/baseResults/constErrors.frag.out         |   20 +-
 Test/baseResults/constFold.frag.out           |  240 +--
 Test/baseResults/conversion.frag.out          | 1316 +++++++-------
 Test/baseResults/cppComplexExpr.vert.out      |  108 +-
 Test/baseResults/cppIndent.vert.out           |   68 +-
 Test/baseResults/cppNest.vert.out             |  124 +-
 Test/baseResults/cppSimple.vert.out           |  196 +-
 Test/baseResults/dataOut.frag.out             |   12 +-
 Test/baseResults/dataOutIndirect.frag.out     |   12 +-
 Test/baseResults/dce.frag.out                 |  208 +--
 Test/baseResults/decls.frag.out               |  352 ++--
 Test/baseResults/deepRvalue.frag.out          |  256 +--
 Test/baseResults/depthOut.frag.out            |   12 +-
 Test/baseResults/discard-dce.frag.out         |  216 +--
 Test/baseResults/doWhileLoop.frag.out         |   40 +-
 Test/baseResults/earlyReturnDiscard.frag.out  |  188 +-
 Test/baseResults/errors.frag.out              |    4 +-
 Test/baseResults/flowControl.frag.out         |   60 +-
 Test/baseResults/forLoop.frag.out             |  276 +--
 Test/baseResults/forwardRef.frag.out          |   88 +-
 Test/baseResults/functionCall.frag.out        |  136 +-
 Test/baseResults/functionSemantics.frag.out   |  328 ++--
 Test/baseResults/length.frag.out              |   28 +-
 Test/baseResults/lineContinuation.vert.out    |  324 ++--
 Test/baseResults/lineContinuation100.vert.out |  136 +-
 Test/baseResults/link1.frag.out               |  158 +-
 Test/baseResults/localAggregates.frag.out     |  380 ++--
 Test/baseResults/loops.frag.out               | 1464 +++++++--------
 Test/baseResults/loopsArtificial.frag.out     |  292 +--
 Test/baseResults/mains1.frag.out              |   16 +-
 Test/baseResults/matrix.frag.out              |  344 ++--
 Test/baseResults/matrix2.frag.out             |  300 +--
 Test/baseResults/matrixError.vert.out         |   58 +-
 Test/baseResults/newTexture.frag.out          |  392 ++--
 Test/baseResults/noMain.vert.out              |   12 +-
 Test/baseResults/nonSquare.vert.out           |   72 +-
 Test/baseResults/numeral.frag.out             |  572 +++---
 Test/baseResults/pointCoord.frag.out          |   44 +-
 Test/baseResults/precision.frag.out           |  248 +--
 Test/baseResults/precision.vert.out           |   44 +-
 Test/baseResults/prepost.frag.out             |  328 ++--
 Test/baseResults/recurse1.vert.out            |  336 ++--
 Test/baseResults/sample.frag.out              |   12 +-
 Test/baseResults/sample.vert.out              |   16 +-
 Test/baseResults/simpleFunctionCall.frag.out  |   16 +-
 Test/baseResults/specExamples.frag.out        |  370 ++--
 Test/baseResults/specExamples.vert.out        |  332 ++--
 Test/baseResults/structAssignment.frag.out    |   88 +-
 Test/baseResults/structDeref.frag.out         |  308 ++--
 Test/baseResults/structure.frag.out           |  128 +-
 Test/baseResults/switch.frag.out              |  288 +--
 Test/baseResults/swizzle.frag.out             |  336 ++--
 Test/baseResults/test.frag.out                |   76 +-
 Test/baseResults/texture.frag.out             |  684 +++----
 Test/baseResults/tokenLength.vert.out         |  176 +-
 Test/baseResults/types.frag.out               |  636 +++----
 Test/baseResults/uint.frag.out                |  536 +++---
 Test/baseResults/uniformArray.frag.out        |   60 +-
 Test/baseResults/variableArrayIndex.frag.out  |  216 +--
 Test/baseResults/varyingArray.frag.out        |   84 +-
 .../baseResults/varyingArrayIndirect.frag.out |   92 +-
 Test/baseResults/versionsClean.frag.out       |   12 +-
 Test/baseResults/versionsClean.vert.out       |   12 +-
 Test/baseResults/versionsErrors.frag.out      |   12 +-
 Test/baseResults/versionsErrors.vert.out      |   12 +-
 Test/baseResults/voidFunction.frag.out        |   80 +-
 Test/baseResults/whileLoop.frag.out           |   40 +-
 glslang/Include/BaseTypes.h                   |    2 +-
 glslang/Include/Types.h                       |    3 +-
 130 files changed, 15103 insertions(+), 15104 deletions(-)

diff --git a/Test/baseResults/100.frag.out b/Test/baseResults/100.frag.out
index 783e4d7d0..30af8cea2 100644
--- a/Test/baseResults/100.frag.out
+++ b/Test/baseResults/100.frag.out
@@ -5,7 +5,7 @@ ERROR: 0:3: 'array initializer' : not supported for this version or the enabled
 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_standard_derivatives
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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_standard_derivatives
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 6bfa19b67..9cda6bfed 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 @@ Shader version: 100
 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 @@ Shader version: 100
 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 @@ Shader version: 100
 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 @@ Shader version: 100
 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 @@ Linked vertex stage:
 
 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 @@ Shader version: 100
 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 @@ Shader version: 100
 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 @@ Shader version: 100
 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 @@ Shader version: 100
 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 fda627c89..76749e74e 100644
--- a/Test/baseResults/100scope.vert.out
+++ b/Test/baseResults/100scope.vert.out
@@ -16,7 +16,7 @@ ERROR: 12 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked vertex stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 9a1827b16..d2be0733f 100644
--- a/Test/baseResults/110scope.vert.out
+++ b/Test/baseResults/110scope.vert.out
@@ -7,7 +7,7 @@ ERROR: 3 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked vertex stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 d82b91b8a..804aca106 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:99: 'return' : type does not match, or is not convertible to, the funct
 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:189: 'texture1DGradARB' : required extension not requested: GL_ARB_shad
 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 @@ Shader version: 120
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Shader version: 120
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 d5508d415..a5b1638bf 100644
--- a/Test/baseResults/120.vert.out
+++ b/Test/baseResults/120.vert.out
@@ -12,7 +12,7 @@ ERROR: 0:28: 'length' :  array must be declared with a size before using this me
 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:39: 'arrays of arrays' : not supported with this profile: none
 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: 'bit shift right' : not supported for this version or the enabled
 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: 'asinh' : no matching overloaded function found
 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 @@ ERROR: 79 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked vertex stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 b2d2ed24b..25c05b765 100644
--- a/Test/baseResults/130.frag.out
+++ b/Test/baseResults/130.frag.out
@@ -4,20 +4,20 @@ ERROR: 0:35: 'redeclaration' : cannot change the type of gl_Color
 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_gather
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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_gather
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 8c80a8485..f402fe032 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 @@ ERROR: 6 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: Linking vertex stage: Can only use one of gl_ClipDistance or gl_ClipVerte
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 ebb4e5648..ef3ebebaf 100644
--- a/Test/baseResults/140.frag.out
+++ b/Test/baseResults/140.frag.out
@@ -15,36 +15,36 @@ Shader version: 140
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Shader version: 140
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 8c935227a..0e1994e54 100644
--- a/Test/baseResults/140.vert.out
+++ b/Test/baseResults/140.vert.out
@@ -16,23 +16,23 @@ Shader version: 140
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Shader version: 140
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 5039c0a22..c3d4fcd7d 100644
--- a/Test/baseResults/150.frag.out
+++ b/Test/baseResults/150.frag.out
@@ -10,84 +10,84 @@ Shader version: 150
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Shader version: 150
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 adb5b112a..728e2830e 100644
--- a/Test/baseResults/150.geom.out
+++ b/Test/baseResults/150.geom.out
@@ -44,38 +44,38 @@ max_vertices = 200
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ max_vertices = 200
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 053cbdded..3ff57e61d 100644
--- a/Test/baseResults/150.tesc.out
+++ b/Test/baseResults/150.tesc.out
@@ -4,41 +4,41 @@ Shader version: 150
 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 @@ vertices = 4
 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 @@ vertices = 4
 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 @@ vertices = 4
 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 @@ vertex spacing = fractional_odd_spacing
 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 @@ ERROR: node is still EOpNull!
 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 @@ Shader version: 400
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ vertex spacing = fractional_odd_spacing
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: 1 compilation errors.  No code generated.
 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:7: 'vertices' : inconsistent output number of vertices for array size o
 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 @@ Shader version: 420
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 
 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 @@ vertex spacing = none
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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: Multiple function bodies in multiple
 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_separate_shader_objects
 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 @@ vertices = 4
 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 @@ vertices = 4
 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 @@ vertices = 4
 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 @@ vertices = 4
 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 @@ vertices = 4
 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 @@ vertices = 4
 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 @@ vertices = 4
 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 @@ vertices = 4
 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 @@ vertex spacing = fractional_odd_spacing
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 e31447d2c..ff1150c1a 100644
--- a/Test/baseResults/150.vert.out
+++ b/Test/baseResults/150.vert.out
@@ -6,34 +6,34 @@ ERROR: 2 compilation errors.  No code generated.
 
 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 @@ ERROR: Linking vertex stage: Can only use one of gl_ClipDistance or gl_ClipVerte
 
 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 cbaa7c484..0a2b5ddf5 100644
--- a/Test/baseResults/300.frag.out
+++ b/Test/baseResults/300.frag.out
@@ -29,7 +29,7 @@ ERROR: 0:111: 'variable indexing fragment shader ouput array' : not supported wi
 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 @@ ERROR: 42 compilation errors.  No code generated.
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: Linking fragment stage: when more than one fragment shader output, all mu
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 f27a399df..416f0d4d6 100644
--- a/Test/baseResults/300.vert.out
+++ b/Test/baseResults/300.vert.out
@@ -44,160 +44,160 @@ ERROR: 40 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked vertex stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 a165c6aaa..935266762 100644
--- a/Test/baseResults/300BuiltIns.frag.out
+++ b/Test/baseResults/300BuiltIns.frag.out
@@ -6,206 +6,206 @@ ERROR: 2 compilation errors.  No code generated.
 
 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 @@ Linked fragment stage:
 
 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 63c7ab597..48371495e 100644
--- a/Test/baseResults/300block.frag.out
+++ b/Test/baseResults/300block.frag.out
@@ -8,32 +8,32 @@ ERROR: 4 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked fragment stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 e16fb4551..a44c2d720 100644
--- a/Test/baseResults/300layout.frag.out
+++ b/Test/baseResults/300layout.frag.out
@@ -11,17 +11,17 @@ ERROR: 7 compilation errors.  No code generated.
 
 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 @@ Linked fragment stage:
 
 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 f64db3bdc..9f61a42dc 100644
--- a/Test/baseResults/300layout.vert.out
+++ b/Test/baseResults/300layout.vert.out
@@ -23,17 +23,17 @@ ERROR: 19 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked vertex stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 60d55e48a..4fbb16c06 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 @@ ERROR: Linking fragment stage: when more than one fragment shader output, all mu
 
 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 b5938f77d..e7261d663 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 @@ Linked fragment stage:
 
 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 f0540de2c..a8a706b63 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 @@ Linked fragment stage:
 
 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 295c1be34..244e5b0b0 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked fragment stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 a6e40bad5..618ec052e 100644
--- a/Test/baseResults/300scope.vert.out
+++ b/Test/baseResults/300scope.vert.out
@@ -23,7 +23,7 @@ ERROR: 19 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked vertex stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 0f759c5ab..7cc33000d 100644
--- a/Test/baseResults/310.comp.out
+++ b/Test/baseResults/310.comp.out
@@ -78,33 +78,33 @@ ERROR: 72 compilation errors.  No code generated.
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked compute stage:
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 eb3089c80..de904725f 100644
--- a/Test/baseResults/310.frag.out
+++ b/Test/baseResults/310.frag.out
@@ -9,7 +9,7 @@ ERROR: 0:15: 'usampler2DRect' : Reserved word.
 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 @@ ERROR: 41 compilation errors.  No code generated.
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: Linking fragment stage: when more than one fragment shader output, all mu
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 90033f50c..ed004b7c2 100644
--- a/Test/baseResults/310.vert.out
+++ b/Test/baseResults/310.vert.out
@@ -19,148 +19,148 @@ ERROR: 14 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked vertex stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 e2c454033..2e5114cdb 100644
--- a/Test/baseResults/330.frag.out
+++ b/Test/baseResults/330.frag.out
@@ -40,34 +40,34 @@ Shader version: 330
 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 @@ ERROR: node is still EOpNull!
 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 @@ Shader version: 330
 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 @@ ERROR: node is still EOpNull!
 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 e131ee5a0..5c666b002 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 @@ ERROR: Linking fragment stage: Cannot use both gl_FragColor and gl_FragData
 
 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 a66909ec7..ca4db3901 100644
--- a/Test/baseResults/400.frag.out
+++ b/Test/baseResults/400.frag.out
@@ -28,37 +28,37 @@ Requested GL_ARB_separate_shader_objects
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Requested GL_ARB_separate_shader_objects
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 65895a6ea..fde165ca1 100644
--- a/Test/baseResults/400.geom.out
+++ b/Test/baseResults/400.geom.out
@@ -29,41 +29,41 @@ max_vertices = 127
 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 @@ ERROR: node is still EOpNull!
 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 @@ max_vertices = 127
 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 @@ ERROR: node is still EOpNull!
 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 b2beb04bb..8b5b968f8 100644
--- a/Test/baseResults/400.tesc.out
+++ b/Test/baseResults/400.tesc.out
@@ -25,41 +25,41 @@ Shader version: 400
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Shader version: 400
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 7fd4b8631..cfedb6874 100644
--- a/Test/baseResults/400.tese.out
+++ b/Test/baseResults/400.tese.out
@@ -40,42 +40,42 @@ vertex spacing = fractional_odd_spacing
 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 @@ ERROR: node is still EOpNull!
 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 @@ vertex spacing = fractional_odd_spacing
 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 @@ ERROR: node is still EOpNull!
 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 e3ca9161c..22508402d 100644
--- a/Test/baseResults/410.geom.out
+++ b/Test/baseResults/410.geom.out
@@ -4,7 +4,7 @@ ERROR: 0:8: 'myIn' : cannot redeclare a built-in block with a user name
 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 @@ max_vertices = 0
 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 @@ max_vertices = 0
 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 96133c929..5ad2348c4 100644
--- a/Test/baseResults/410.tesc.out
+++ b/Test/baseResults/410.tesc.out
@@ -7,11 +7,11 @@ ERROR: 1 compilation errors.  No code generated.
 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 @@ ERROR: Linking tessellation control stage: At least one shader must specify an o
 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 281614d76..e47dcbc8f 100644
--- a/Test/baseResults/420.frag.out
+++ b/Test/baseResults/420.frag.out
@@ -9,10 +9,10 @@ ERROR: 3 compilation errors.  No code generated.
 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 @@ Linked fragment stage:
 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 1b927b82c..100975cdb 100644
--- a/Test/baseResults/420.geom.out
+++ b/Test/baseResults/420.geom.out
@@ -15,51 +15,51 @@ max_vertices = 0
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ max_vertices = 0
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 1aabe3eca..fcabdf27c 100644
--- a/Test/baseResults/420.tesc.out
+++ b/Test/baseResults/420.tesc.out
@@ -4,7 +4,7 @@ ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size o
 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 @@ Shader version: 420
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Shader version: 420
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 94bdee7be..b39d96931 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 @@ vertex spacing = none
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ vertex spacing = equal_spacing
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 12e06739a..de0f1fab0 100644
--- a/Test/baseResults/420.vert.out
+++ b/Test/baseResults/420.vert.out
@@ -12,13 +12,13 @@ ERROR: 0:20: 'const' : no qualifiers allowed for function return
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 ed318dd10..05a651b91 100644
--- a/Test/baseResults/420_size_gl_in.geom.out
+++ b/Test/baseResults/420_size_gl_in.geom.out
@@ -10,13 +10,13 @@ max_vertices = 0
 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 @@ ERROR: node is still EOpNull!
 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 @@ max_vertices = 0
 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 @@ ERROR: node is still EOpNull!
 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 2e2e7e481..463860b97 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: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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked compute stage:
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 5f1c35c2f..52f1a2868 100644
--- a/Test/baseResults/430.vert.out
+++ b/Test/baseResults/430.vert.out
@@ -67,11 +67,11 @@ Requested GL_ARB_enhanced_layouts
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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_enhanced_layouts
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 802c8f38b..4255ad1dc 100644
--- a/Test/baseResults/430scope.vert.out
+++ b/Test/baseResults/430scope.vert.out
@@ -13,7 +13,7 @@ ERROR: 8 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked vertex stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 7f304e33e..40e489b8b 100644
--- a/Test/baseResults/440.frag.out
+++ b/Test/baseResults/440.frag.out
@@ -86,8 +86,8 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 12814f21e..5f67d9b5e 100644
--- a/Test/baseResults/440.vert.out
+++ b/Test/baseResults/440.vert.out
@@ -74,10 +74,10 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 2d552a446..45d0d9b26 100644
--- a/Test/baseResults/450.frag.out
+++ b/Test/baseResults/450.frag.out
@@ -3,128 +3,128 @@ Warning, version 450 is not yet complete; most version-specific features are pre
 
 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 @@ Linked fragment stage:
 
 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 b367afc0a..e2b7b9f6b 100644
--- a/Test/baseResults/450.geom.out
+++ b/Test/baseResults/450.geom.out
@@ -7,20 +7,20 @@ max_vertices = 0
 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 @@ max_vertices = 0
 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 df54fa97e..9f7be0ffd 100644
--- a/Test/baseResults/450.tesc.out
+++ b/Test/baseResults/450.tesc.out
@@ -4,13 +4,13 @@ Warning, version 450 is not yet complete; most version-specific features are pre
 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 @@ vertices = 0
 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 @@ ERROR: Linking tessellation control stage: At least one shader must specify an o
 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 @@ vertices = 0
 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 ef2e1c712..7c0f70c31 100644
--- a/Test/baseResults/450.tese.out
+++ b/Test/baseResults/450.tese.out
@@ -6,20 +6,20 @@ input primitive = none
 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 @@ input primitive = none
 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 4fd5d9022..529836095 100644
--- a/Test/baseResults/450.vert.out
+++ b/Test/baseResults/450.vert.out
@@ -7,11 +7,11 @@ ERROR: 2 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked vertex stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 5381959f3..7d517522c 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 d6b717c0f..58539cb6c 100644
--- a/Test/baseResults/aggOps.frag.out
+++ b/Test/baseResults/aggOps.frag.out
@@ -4,148 +4,148 @@ WARNING: 0:6: varying deprecated in version 130; may be removed in future releas
 
 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 @@ Linked fragment stage:
 
 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 c1900499d..22238ff83 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 @@ Shader version: 110
 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 @@ Shader version: 110
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 110
 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 @@ Shader version: 110
 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 c656fafd6..52681a47d 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 @@ Shader version: 110
 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 @@ Shader version: 110
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 110
 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 @@ Shader version: 110
 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 f20b9676a..d2641e1e6 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 @@ ERROR: 23 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked fragment stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 cc314682a..3f3f86248 100644
--- a/Test/baseResults/array100.frag.out
+++ b/Test/baseResults/array100.frag.out
@@ -8,9 +8,9 @@ ERROR: 0:11: 'arrayed constructor' : not supported for this version or the enabl
 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 @@ ERROR: 22 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked fragment stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 ddea17f66..23728b715 100644
--- a/Test/baseResults/atomic_uint.frag.out
+++ b/Test/baseResults/atomic_uint.frag.out
@@ -23,45 +23,45 @@ ERROR: 18 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked fragment stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 3c8de13cf..cf008a6d5 100644
--- a/Test/baseResults/comment.frag.out
+++ b/Test/baseResults/comment.frag.out
@@ -5,7 +5,7 @@ WARNING: 0:12: 'line continuation' : used at end of comment; the following line
 
 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 @@ Linked fragment stage:
 
 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 50197c826..94cba9d1e 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 @@ Shader version: 110
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 110
 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 2381b3560..9ecf330a6 100644
--- a/Test/baseResults/constErrors.frag.out
+++ b/Test/baseResults/constErrors.frag.out
@@ -6,18 +6,18 @@ ERROR: 0:18: '' : constant expression required
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked fragment stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 06fc0200b..ed8c0ea5c 100644
--- a/Test/baseResults/constFold.frag.out
+++ b/Test/baseResults/constFold.frag.out
@@ -11,165 +11,165 @@ ERROR: 6 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked fragment stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 7320a1f59..f9768ce69 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 @@ Shader version: 130
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 130
 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 100123ab6..a49beba4d 100644
--- a/Test/baseResults/cppComplexExpr.vert.out
+++ b/Test/baseResults/cppComplexExpr.vert.out
@@ -49,72 +49,72 @@ ERROR: 44 compilation errors.  No code generated.
 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 @@ Linked vertex stage:
 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 bc36e8e62..a8c4c3cf0 100644
--- a/Test/baseResults/cppIndent.vert.out
+++ b/Test/baseResults/cppIndent.vert.out
@@ -7,39 +7,39 @@ ERROR: 2 compilation errors.  No code generated.
 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 @@ Linked vertex stage:
 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 4fbf61ee4..ac4791122 100644
--- a/Test/baseResults/cppNest.vert.out
+++ b/Test/baseResults/cppNest.vert.out
@@ -11,72 +11,72 @@ ERROR: 6 compilation errors.  No code generated.
 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 @@ Linked vertex stage:
 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 2e6a9b4a5..5711904c7 100644
--- a/Test/baseResults/cppSimple.vert.out
+++ b/Test/baseResults/cppSimple.vert.out
@@ -22,7 +22,7 @@ ERROR: 0:122: '#endif' : unexpected tokens following directive
 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:9000: 'preprocessor evaluation' : expected ')'
 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 @@ ERROR: 79 compilation errors.  No code generated.
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked vertex stage:
 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 @@ ERROR: node is still EOpNull!
 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 eca985e14..29c52a85f 100644
--- a/Test/baseResults/dataOut.frag.out
+++ b/Test/baseResults/dataOut.frag.out
@@ -3,11 +3,11 @@ WARNING: 0:3: varying deprecated in version 130; may be removed in future releas
 
 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 @@ Linked fragment stage:
 
 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 f61ba1c9b..82228a241 100644
--- a/Test/baseResults/dataOutIndirect.frag.out
+++ b/Test/baseResults/dataOutIndirect.frag.out
@@ -3,11 +3,11 @@ WARNING: 0:3: varying deprecated in version 130; may be removed in future releas
 
 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 @@ Linked fragment stage:
 
 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 0b99f983b..6ae66f96b 100644
--- a/Test/baseResults/dce.frag.out
+++ b/Test/baseResults/dce.frag.out
@@ -4,118 +4,118 @@ Warning, version 400 is not yet complete; most version-specific features are pre
 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 @@ Shader version: 400
 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 @@ ERROR: Linking fragment stage: Missing entry point: Each stage requires one "voi
 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 @@ Shader version: 400
 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 16501b508..f2d9b6400 100644
--- a/Test/baseResults/decls.frag.out
+++ b/Test/baseResults/decls.frag.out
@@ -30,31 +30,31 @@ ERROR: 18 compilation errors.  No code generated.
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked fragment stage:
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 2c6557cc4..f2fd5fe12 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 @@ Shader version: 120
 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 @@ Linked fragment stage:
 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 @@ Shader version: 120
 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 c70365f3a..d510095cd 100644
--- a/Test/baseResults/depthOut.frag.out
+++ b/Test/baseResults/depthOut.frag.out
@@ -4,13 +4,13 @@ WARNING: 0:4: varying deprecated in version 130; may be removed in future releas
 
 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 @@ Linked fragment stage:
 
 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 446eabc66..4ff0fac01 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 @@ Shader version: 110
 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 @@ Shader version: 110
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 110
 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 @@ Shader version: 110
 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 b9f2c4bbf..0ef812f46 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 @@ Linked fragment stage:
 
 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 ff445721d..afc4253b5 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 @@ Shader version: 110
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 110
 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 4b08a46cd..1d7939b77 100644
--- a/Test/baseResults/errors.frag.out
+++ b/Test/baseResults/errors.frag.out
@@ -6,7 +6,7 @@ ERROR: 2 compilation errors.  No code generated.
 
 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 @@ Linked fragment stage:
 
 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 21e12d6a6..f323b02e9 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 @@ Linked fragment stage:
 
 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 f91c6cfd7..8720451d4 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 b7f2cc498..7c4c68944 100644
--- a/Test/baseResults/forwardRef.frag.out
+++ b/Test/baseResults/forwardRef.frag.out
@@ -2,34 +2,34 @@ forwardRef.frag
 
 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 @@ Shader version: 110
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 110
 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 a4ce77bd7..7e06fb1d7 100644
--- a/Test/baseResults/functionCall.frag.out
+++ b/Test/baseResults/functionCall.frag.out
@@ -4,32 +4,32 @@ WARNING: 0:4: varying deprecated in version 130; may be removed in future releas
 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 @@ Shader version: 130
 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 @@ Linked fragment stage:
 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 @@ Shader version: 130
 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 eff0a02e1..f569fd9d4 100644
--- a/Test/baseResults/functionSemantics.frag.out
+++ b/Test/baseResults/functionSemantics.frag.out
@@ -3,7 +3,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre
 
 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 @@ Shader version: 400
 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 @@ Shader version: 400
 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 @@ Shader version: 400
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 400
 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 @@ Shader version: 400
 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 @@ Shader version: 400
 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 3df41ba9c..be0b19cf3 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 @@ Linked fragment stage:
 
 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 dd718d856..d6e514722 100644
--- a/Test/baseResults/lineContinuation.vert.out
+++ b/Test/baseResults/lineContinuation.vert.out
@@ -25,163 +25,163 @@ ERROR: 19 compilation errors.  No code generated.
 
 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 @@ Linked vertex stage:
 
 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 6f1e0ec4d..54f7494d2 100644
--- a/Test/baseResults/lineContinuation100.vert.out
+++ b/Test/baseResults/lineContinuation100.vert.out
@@ -25,72 +25,72 @@ ERROR: 20 compilation errors.  No code generated.
 
 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 @@ Linked vertex stage:
 
 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 e460461cc..aa31c5f25 100644
--- a/Test/baseResults/link1.frag.out
+++ b/Test/baseResults/link1.frag.out
@@ -3,47 +3,47 @@ link1.frag
 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 @@ Shader version: 130
 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_standard_derivatives
 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 @@ Requested GL_OES_texture_3D
 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 @@ Requested GL_OES_texture_3D
 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_standard_derivatives
 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 @@ Requested GL_OES_texture_3D
 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 @@ Requested GL_OES_texture_3D
 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 f6db0b88a..4efabde0c 100644
--- a/Test/baseResults/localAggregates.frag.out
+++ b/Test/baseResults/localAggregates.frag.out
@@ -4,21 +4,21 @@ WARNING: 0:5: varying deprecated in version 130; may be removed in future releas
 
 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 @@ Shader version: 130
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 130
 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 0ecaaf78b..b6cb852ab 100644
--- a/Test/baseResults/loops.frag.out
+++ b/Test/baseResults/loops.frag.out
@@ -3,12 +3,12 @@ WARNING: 0:14: varying deprecated in version 130; may be removed in future relea
 
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 5a53b0b8d..f7d05a2da 100644
--- a/Test/baseResults/loopsArtificial.frag.out
+++ b/Test/baseResults/loopsArtificial.frag.out
@@ -3,168 +3,168 @@ WARNING: 0:14: varying deprecated in version 130; may be removed in future relea
 
 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 @@ Linked fragment stage:
 
 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 8b2532266..efda6bd05 100644
--- a/Test/baseResults/mains1.frag.out
+++ b/Test/baseResults/mains1.frag.out
@@ -2,7 +2,7 @@ mains1.frag
 
 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 @@ mains2.frag
 
 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 @@ max_vertices = 0
 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 @@ max_vertices = 0
 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 @@ max_vertices = 0
 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 c3fd5b829..9b99edbdc 100644
--- a/Test/baseResults/matrix.frag.out
+++ b/Test/baseResults/matrix.frag.out
@@ -5,240 +5,240 @@ WARNING: 0:22: varying deprecated in version 130; may be removed in future relea
 
 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 @@ Linked fragment stage:
 
 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 54f40ef49..734b5b1a1 100644
--- a/Test/baseResults/matrix2.frag.out
+++ b/Test/baseResults/matrix2.frag.out
@@ -5,17 +5,17 @@ WARNING: 0:15: varying deprecated in version 130; may be removed in future relea
 
 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 @@ Shader version: 150
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 150
 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 d60f156cf..d5d0bc32b 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 @@ ERROR: 7 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked vertex stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 9965d49ed..9b090d0bd 100644
--- a/Test/baseResults/newTexture.frag.out
+++ b/Test/baseResults/newTexture.frag.out
@@ -3,87 +3,87 @@ Warning, version 430 is not yet complete; most version-specific features are pre
 
 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 @@ Shader version: 430
 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 @@ Shader version: 430
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 430
 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 @@ Shader version: 430
 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 7b22e3c00..2194b7a4e 100644
--- a/Test/baseResults/noMain.vert.out
+++ b/Test/baseResults/noMain.vert.out
@@ -2,7 +2,7 @@ noMain.vert
 
 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 @@ ERROR: 1 compilation errors.  No code generated.
 
 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 @@ Linked fragment stage:
 
 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 212aa5601..025262901 100644
--- a/Test/baseResults/nonSquare.vert.out
+++ b/Test/baseResults/nonSquare.vert.out
@@ -2,34 +2,34 @@ nonSquare.vert
 
 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 @@ Linked vertex stage:
 
 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 6ed5ef983..c8421a978 100644
--- a/Test/baseResults/numeral.frag.out
+++ b/Test/baseResults/numeral.frag.out
@@ -15,362 +15,362 @@ ERROR: 10 compilation errors.  No code generated.
 
 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 @@ Linked fragment stage:
 
 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 73a993888..8b9eb9d23 100644
--- a/Test/baseResults/pointCoord.frag.out
+++ b/Test/baseResults/pointCoord.frag.out
@@ -2,33 +2,33 @@ pointCoord.frag
 
 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 @@ Linked fragment stage:
 
 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 1f0992ef7..174436258 100644
--- a/Test/baseResults/precision.frag.out
+++ b/Test/baseResults/precision.frag.out
@@ -11,118 +11,118 @@ ERROR: 7 compilation errors.  No code generated.
 
 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 @@ Linked fragment stage:
 
 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 cfec17f24..ec3b8506f 100644
--- a/Test/baseResults/precision.vert.out
+++ b/Test/baseResults/precision.vert.out
@@ -7,34 +7,34 @@ ERROR: 3 compilation errors.  No code generated.
 
 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 @@ Linked vertex stage:
 
 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 a63518174..1fa4b332b 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 @@ Linked fragment stage:
 
 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 292a25113..8aae603f4 100644
--- a/Test/baseResults/recurse1.vert.out
+++ b/Test/baseResults/recurse1.vert.out
@@ -2,68 +2,68 @@ recurse1.vert
 
 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 @@ recurse1.frag
 
 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 @@ ERROR: Linking fragment stage: Recursion detected:
 
 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 5f4ebdfe2..45d3e8115 100644
--- a/Test/baseResults/sample.frag.out
+++ b/Test/baseResults/sample.frag.out
@@ -2,12 +2,12 @@ sample.frag
 
 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 @@ Linked fragment stage:
 
 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 463703bf4..9d4a1da16 100644
--- a/Test/baseResults/sample.vert.out
+++ b/Test/baseResults/sample.vert.out
@@ -2,18 +2,18 @@ sample.vert
 
 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 @@ Linked vertex stage:
 
 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 b479fea68..04fb13e1c 100644
--- a/Test/baseResults/simpleFunctionCall.frag.out
+++ b/Test/baseResults/simpleFunctionCall.frag.out
@@ -3,17 +3,17 @@ WARNING: 0:4: varying deprecated in version 130; may be removed in future releas
 
 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 @@ Linked fragment stage:
 
 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 7da8523a9..7857d115e 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:112: 'redeclaration' : all redeclarations must use the same depth layou
 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 early_fragment_tests
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 early_fragment_tests
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 5e6439d05..b33b92fbf 100644
--- a/Test/baseResults/specExamples.vert.out
+++ b/Test/baseResults/specExamples.vert.out
@@ -44,13 +44,13 @@ ERROR: 37 compilation errors.  No code generated.
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked vertex stage:
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 5792b49cb..6c66d3c85 100644
--- a/Test/baseResults/structAssignment.frag.out
+++ b/Test/baseResults/structAssignment.frag.out
@@ -3,15 +3,15 @@ WARNING: 0:4: varying deprecated in version 130; may be removed in future releas
 
 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 @@ Shader version: 130
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 130
 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 4009ed9c5..21066592e 100644
--- a/Test/baseResults/structDeref.frag.out
+++ b/Test/baseResults/structDeref.frag.out
@@ -3,16 +3,16 @@ WARNING: 0:4: varying deprecated in version 130; may be removed in future releas
 
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 1b3ec6e98..1f182137f 100644
--- a/Test/baseResults/structure.frag.out
+++ b/Test/baseResults/structure.frag.out
@@ -3,21 +3,21 @@ WARNING: 0:3: varying deprecated in version 130; may be removed in future releas
 
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 1a229762f..0ca1c533a 100644
--- a/Test/baseResults/switch.frag.out
+++ b/Test/baseResults/switch.frag.out
@@ -23,11 +23,11 @@ ERROR: 17 compilation errors.  No code generated.
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked fragment stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 @@ ERROR: node is still EOpNull!
 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 1a53c9af8..a8d12d17c 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 @@ Shader version: 110
 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 @@ Shader version: 110
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 110
 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 @@ Shader version: 110
 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 c06adc0f2..9631d06f7 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 @@ Shader version: 110
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 110
 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 f7d607f12..724d5fd92 100644
--- a/Test/baseResults/texture.frag.out
+++ b/Test/baseResults/texture.frag.out
@@ -4,269 +4,269 @@ WARNING: 0:15: varying deprecated in version 130; may be removed in future relea
 
 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 @@ Linked fragment stage:
 
 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 8ad75c411..e65fcfceb 100644
--- a/Test/baseResults/tokenLength.vert.out
+++ b/Test/baseResults/tokenLength.vert.out
@@ -19,92 +19,92 @@ ERROR: 14 compilation errors.  No code generated.
 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 @@ Linked vertex stage:
 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 1ac0fd9e6..1051362a6 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 @@ Linked fragment stage:
 
 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 292d391b6..359a257c3 100644
--- a/Test/baseResults/uint.frag.out
+++ b/Test/baseResults/uint.frag.out
@@ -5,151 +5,151 @@ ERROR: 0:20: 'const' : non-matching or non-convertible constant type for const i
 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 @@ ERROR: node is still EOpNull!
 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 @@ Linked fragment stage:
 
 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 @@ ERROR: node is still EOpNull!
 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 f886e069d..6c64858cf 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 @@ Shader version: 130
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 130
 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 0f09216ed..7a099d958 100644
--- a/Test/baseResults/variableArrayIndex.frag.out
+++ b/Test/baseResults/variableArrayIndex.frag.out
@@ -3,20 +3,20 @@ WARNING: 0:3: varying deprecated in version 130; may be removed in future releas
 
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 @@ Linked fragment stage:
 
 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 @@ Shader version: 130
 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 @@ Shader version: 130
 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 e4dc52a8d..12e225e0b 100644
--- a/Test/baseResults/varyingArray.frag.out
+++ b/Test/baseResults/varyingArray.frag.out
@@ -6,51 +6,51 @@ WARNING: 0:8: varying deprecated in version 130; may be removed in future releas
 
 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 @@ Linked fragment stage:
 
 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 4c8052712..2d5380e1e 100644
--- a/Test/baseResults/varyingArrayIndirect.frag.out
+++ b/Test/baseResults/varyingArrayIndirect.frag.out
@@ -6,50 +6,50 @@ WARNING: 0:8: varying deprecated in version 130; may be removed in future releas
 
 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 @@ Linked fragment stage:
 
 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 2c9a46e95..a0b038a9a 100644
--- a/Test/baseResults/versionsClean.frag.out
+++ b/Test/baseResults/versionsClean.frag.out
@@ -6,12 +6,12 @@ ERROR: 2 compilation errors.  No code generated.
 
 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 @@ Linked fragment stage:
 
 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 f275333bb..f2f6688d3 100644
--- a/Test/baseResults/versionsClean.vert.out
+++ b/Test/baseResults/versionsClean.vert.out
@@ -3,15 +3,15 @@ Warning, version 420 is not yet complete; most version-specific features are pre
 
 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 @@ Linked vertex stage:
 
 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 e99b491dc..95df988c1 100644
--- a/Test/baseResults/versionsErrors.frag.out
+++ b/Test/baseResults/versionsErrors.frag.out
@@ -8,12 +8,12 @@ ERROR: 4 compilation errors.  No code generated.
 
 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 @@ Linked fragment stage:
 
 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 e7d81345e..abac8f766 100644
--- a/Test/baseResults/versionsErrors.vert.out
+++ b/Test/baseResults/versionsErrors.vert.out
@@ -9,15 +9,15 @@ ERROR: 2 compilation errors.  No code generated.
 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 @@ Linked vertex stage:
 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 1b6ee3b4a..579dde9dc 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 @@ Linked fragment stage:
 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 4ececafb5..2507bd880 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 @@ Linked fragment stage:
 
 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 32cf83a39..eba1df714 100644
--- a/glslang/Include/BaseTypes.h
+++ b/glslang/Include/BaseTypes.h
@@ -104,7 +104,7 @@ enum TStorageQualifier {
 __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 fe1ffa387..b76e2d50f 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -1259,8 +1259,7 @@ public:
             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 ");
-- 
GitLab