r300/compiler: Fix regalloc for values with multiple writers
authorTom Stellard <tstellar@gmail.com>
Mon, 19 Sep 2011 00:43:41 +0000 (17:43 -0700)
committerTom Stellard <tstellar@gmail.com>
Mon, 19 Sep 2011 01:00:14 +0000 (18:00 -0700)
https://bugs.freedesktop.org/show_bug.cgi?id=40062
https://bugs.freedesktop.org/show_bug.cgi?id=36939

Note: This is a candidate for the 7.11 branch.

src/gallium/drivers/r300/compiler/radeon_variable.c

index 7c640c4f6212b60dd7829af195968c1e31965dce..77bb9d4c230ef4162f9c1338f2c16d345763c688 100644 (file)
@@ -297,9 +297,12 @@ static void get_variable_helper(
 {
        struct rc_list * list_ptr;
        for (list_ptr = *variable_list; list_ptr; list_ptr = list_ptr->Next) {
-               if (readers_intersect(variable, list_ptr->Item)) {
-                       rc_variable_add_friend(list_ptr->Item, variable);
-                       return;
+               struct rc_variable * var;
+               for (var = list_ptr->Item; var; var = var->Friend) {
+                       if (readers_intersect(var, variable)) {
+                               rc_variable_add_friend(var, variable);
+                               return;
+                       }
                }
        }
        rc_list_add(variable_list, rc_list(&variable->C->Pool, variable));