The pass ultimately skips over any entries with assignment_count != 1,
so there's no need to do further work once we've determined that there
are multiple assignments.
The constant value could be a large array (i.e. uvec4[327]), at which
point skipping the constant_expression_value() call (and the clone()
call within) can save us piles of memory.
No change in shader-db.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
assert(entry);
entry->assignment_count++;
+ /* If there's more than one assignment, don't bother - we won't do anything
+ * with this variable anyway, and continuing just wastes memory cloning
+ * constant expressions.
+ */
+ if (entry->assignment_count > 1)
+ return visit_continue;
+
/* If it's already constant, don't do the work. */
if (entry->var->constant_value)
return visit_continue;