r300/compiler: Fix bug in rc_get_variables()

Variables that share readers were not always being linked together.

https://bugs.freedesktop.org/show_bug.cgi?id=36939
This commit is contained in:
Tom Stellard
2011-05-11 16:12:52 -07:00
parent 4612554dce
commit 95c93651b4
@@ -388,17 +388,21 @@ struct rc_list * rc_get_variables(struct radeon_compiler * c)
*/
while (aborted_list) {
struct rc_list * search_ptr_next;
struct rc_variable * var;
var_ptr = aborted_list;
for (var = var_ptr->Item; var; var = var->Friend) {
search_ptr = var_ptr->Next;
while(search_ptr) {
search_ptr_next = search_ptr->Next;
if (readers_intersect(var_ptr->Item, search_ptr->Item)){
rc_list_remove(&aborted_list, search_ptr);
rc_variable_add_friend(var_ptr->Item,
search_ptr = var_ptr->Next;
while(search_ptr) {
search_ptr_next = search_ptr->Next;
if (readers_intersect(var, search_ptr->Item)){
rc_list_remove(&aborted_list,
search_ptr);
rc_variable_add_friend(var,
search_ptr->Item);
}
search_ptr = search_ptr_next;
}
search_ptr = search_ptr_next;
}
rc_list_remove(&aborted_list, var_ptr);
rc_list_add(&variable_list, rc_list(