summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp
index 740d9ff6033..c34eec4d7dc 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp
@@ -378,7 +378,6 @@ bool
vec4_visitor::dead_code_eliminate()
{
bool progress = false;
- bool seen_control_flow = false;
int pc = -1;
calculate_live_intervals();
@@ -388,8 +387,6 @@ vec4_visitor::dead_code_eliminate()
pc++;
- seen_control_flow = inst->is_control_flow() || seen_control_flow;
-
bool inst_writes_flag = false;
if (inst->dst.file != GRF) {
if (inst->dst.is_null() && inst->writes_flag()) {
@@ -415,7 +412,7 @@ vec4_visitor::dead_code_eliminate()
progress;
}
- if (seen_control_flow || inst->predicate || inst->prev == NULL)
+ if (inst->predicate || inst->prev == NULL)
continue;
int dead_channels;
@@ -443,6 +440,9 @@ vec4_visitor::dead_code_eliminate()
node = prev, prev = prev->prev) {
vec4_instruction *scan_inst = (vec4_instruction *)node;
+ if (scan_inst->is_control_flow())
+ break;
+
if (inst_writes_flag) {
if (scan_inst->dst.is_null() && scan_inst->writes_flag()) {
scan_inst->remove();