glsl: Constant-fold built-in functions before outputting IR
authorPaul Berry <stereotype441@gmail.com>
Sat, 30 Jul 2011 18:55:53 +0000 (11:55 -0700)
committerPaul Berry <stereotype441@gmail.com>
Mon, 8 Aug 2011 19:43:45 +0000 (12:43 -0700)
commit789ee6516bfca289e1948ff8f2c147b94286a0e0
tree190cb9a1c2cd6662fffdefaf4d125cf8a832dbb1
parent0d81b0e18494a80c4326fbc98837842959675869
glsl: Constant-fold built-in functions before outputting IR

Rearranged the logic for converting the ast for a function call to
hir, so that we constant fold before emitting any IR.  Previously we
would emit some IR, and then only later detect whether we could
constant fold.  The unnecessary IR would usually get cleaned up by a
later optimization step, however in the case of a builtin function
being used to compute an array size, it was causing an assertion.

Fixes Piglit test array-size-constant-relational.vert.

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