summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2011-03-11 13:03:54 -0800
committerEric Anholt <eric@anholt.net>2011-03-15 09:49:00 -0700
commitd3a444af2d4c42a23e9ec78dbef4c3ee45e1e50c (patch)
treec402751f371330afb142ea2dd2fe15f497748def /src
parentb0fff8d17eb65368db018f6ccc226482ccf46763 (diff)
glsl: Skip processing expression trees in optimize_redundant_jumps()
Cuts the time spent in this function during glean texCombine by 2/3.
Diffstat (limited to 'src')
-rw-r--r--src/glsl/opt_redundant_jumps.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/glsl/opt_redundant_jumps.cpp b/src/glsl/opt_redundant_jumps.cpp
index edf4bb6c22..f350fa947c 100644
--- a/src/glsl/opt_redundant_jumps.cpp
+++ b/src/glsl/opt_redundant_jumps.cpp
@@ -37,10 +37,19 @@ public:
virtual ir_visitor_status visit_leave(ir_if *);
virtual ir_visitor_status visit_leave(ir_loop *);
+ virtual ir_visitor_status visit_enter(ir_assignment *);
bool progress;
};
+/* We only care about the top level instructions, so don't descend
+ * into expressions.
+ */
+ir_visitor_status
+redundant_jumps_visitor::visit_enter(ir_assignment *ir)
+{
+ return visit_continue_with_parent;
+}
ir_visitor_status
redundant_jumps_visitor::visit_leave(ir_if *ir)