glsl_to_tgsi: remove a bad assertion
authorBryan Cain <bryancain3@gmail.com>
Sat, 30 Apr 2011 18:44:32 +0000 (13:44 -0500)
committerBryan Cain <bryancain3@gmail.com>
Mon, 1 Aug 2011 22:59:07 +0000 (17:59 -0500)
It was triggered by Alien Arena.

src/mesa/state_tracker/st_glsl_to_tgsi.cpp

index 5ea03b4424e86d6d0a103f569b9a0bbde185a15c..aa63539e5e892ea10066f92bf92434da9398f423 100644 (file)
@@ -3077,11 +3077,11 @@ glsl_to_tgsi_visitor::merge_registers(void)
    
    /* Start looking for registers with non-overlapping usages that can be 
     * merged together. */
-   for (i=0; i < this->next_temp - 1; i++) {
+   for (i=0; i < this->next_temp; i++) {
       /* Don't touch unused registers. */
       if (last_reads[i] < 0 || first_writes[i] < 0) continue;
       
-      for (j=i+1; j < this->next_temp; j++) {
+      for (j=0; j < this->next_temp; j++) {
          /* Don't touch unused registers. */
          if (last_reads[j] < 0 || first_writes[j] < 0) continue;
          
@@ -3089,8 +3089,9 @@ glsl_to_tgsi_visitor::merge_registers(void)
           * in the same instruction as the last read from i.  Note that the 
           * register at index i will always be used earlier or at the same time 
           * as the register at index j. */
-         assert(first_writes[i] <= first_writes[j]);
-         if (last_reads[i] <= first_writes[j]) {
+         if (first_writes[i] <= first_writes[j] && 
+             last_reads[i] <= first_writes[j])
+         {
             rename_temp_register(j, i); /* Replace all references to j with i.*/
             
             /* Update the first_writes and last_reads arrays with the new