Mesa (master): r300/compiler: Fix regalloc for values with multiple writers

Tom Stellard tstellar at kemper.freedesktop.org
Mon Sep 19 01:02:28 UTC 2011


Module: Mesa
Branch: master
Commit: 2d1004d9aa719bb93a4f057b0eefe88f23b44e44
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2d1004d9aa719bb93a4f057b0eefe88f23b44e44

Author: Tom Stellard <tstellar at gmail.com>
Date:   Sun Sep 18 17:43:41 2011 -0700

r300/compiler: Fix regalloc for values with multiple writers

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.

---

 .../drivers/r300/compiler/radeon_variable.c        |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/r300/compiler/radeon_variable.c b/src/gallium/drivers/r300/compiler/radeon_variable.c
index 7c640c4..77bb9d4 100644
--- a/src/gallium/drivers/r300/compiler/radeon_variable.c
+++ b/src/gallium/drivers/r300/compiler/radeon_variable.c
@@ -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));




More information about the mesa-commit mailing list