mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 15:48:36 +02:00
glsl: Make constant propagation's folder not propagate into an LHS.
opt_constant_propagation.cpp contains constant folding code which can
actually do constant propagation in some cases. It was happily
propagating constants into the left-hand-side of assignments.
For example,
(assign () (var_ref temp) (constant ...))
would brilliantly be turned into:
(assign () (constant ...) (constant ....))
This is a bigger hammer than necessary - it prevents propagation
into the left-hand-side altogether. We could certainly do better
someday. Notably, the constant propagation pass itself already
takes this approach - it's just the constant propagation pass's
built-in constant folding code (which actually propagates, too)
that was broken.
No change in shader-db, but prevents regressions after future commits.
It seems plausible that this could be hit today, but I haven't seen it
happen.
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
(cherry picked from commit acf5444044)
This commit is contained in:
parent
133d0f0882
commit
9013f56bb7
1 changed files with 1 additions and 1 deletions
|
|
@ -138,7 +138,7 @@ public:
|
|||
void
|
||||
ir_constant_propagation_visitor::constant_folding(ir_rvalue **rvalue)
|
||||
{
|
||||
if (*rvalue == NULL)
|
||||
if (this->in_assignee || *rvalue == NULL)
|
||||
return;
|
||||
|
||||
if (ir_constant_fold(rvalue))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue