i965/fs: Remove broken optimization for live intervals in loops.

The theory here was to detect a temporary variable used within a loop,
and avoid considering it live across the entire loop.  However, it was
overeager and failed when the first definition of the variable
appeared within the loop but was only conditionally defined.

Fixes glsl-fs-loop-redundant-condition.
This commit is contained in:
Eric Anholt 2011-04-02 18:11:32 -10:00
parent a0d154dc13
commit 9634318290
1 changed files with 2 additions and 4 deletions

View File

@ -2812,8 +2812,7 @@ fs_visitor::calculate_live_intervals()
if (inst->src[i].file == GRF && inst->src[i].reg != 0) {
int reg = inst->src[i].reg;
if (!loop_depth || (this->virtual_grf_sizes[reg] == 1 &&
def[reg] >= bb_header_ip)) {
if (!loop_depth) {
use[reg] = ip;
} else {
def[reg] = MIN2(loop_start, def[reg]);
@ -2829,8 +2828,7 @@ fs_visitor::calculate_live_intervals()
if (inst->dst.file == GRF && inst->dst.reg != 0) {
int reg = inst->dst.reg;
if (!loop_depth || (this->virtual_grf_sizes[reg] == 1 &&
!inst->predicated)) {
if (!loop_depth) {
def[reg] = MIN2(def[reg], ip);
} else {
def[reg] = MIN2(def[reg], loop_start);