glsl: Update expression types after rebalancing the tree.
authorMatt Turner <mattst88@gmail.com>
Thu, 10 Jul 2014 18:00:25 +0000 (11:00 -0700)
committerMatt Turner <mattst88@gmail.com>
Tue, 15 Jul 2014 17:12:29 +0000 (10:12 -0700)
commit103716a8629858f6af32a3a6b195a4dc78c356d2
tree252189042b8881cfc2015b27e05e584c35fef33d
parent7b962a4e6bf4758a5a9994649bd87735657d9a9a
glsl: Update expression types after rebalancing the tree.

If we saw a tree that looked like

            vec3
           /   \
         vec3 float
        /   \
      vec3 float
     /   \
   vec3 float

We would see that all of the expression types were vec3, and then
rebalance to

           vec3
        /        \
      vec3       vec3 <-- should be float
     /   \      /    \
   vec3 float float float

This patch adds code to visit the rebalanced tree and update the
expression types from the bottom up.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=80880
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/glsl/opt_rebalance_tree.cpp