diff options
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vec4.cpp | 8 |
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(); |