diff options
-rw-r--r-- | ir_constant_variable.cpp | 22 | ||||
-rw-r--r-- | linux_list.h | 93 |
2 files changed, 8 insertions, 107 deletions
diff --git a/ir_constant_variable.cpp b/ir_constant_variable.cpp index 75590dfdbf..7210c17dc7 100644 --- a/ir_constant_variable.cpp +++ b/ir_constant_variable.cpp @@ -39,10 +39,9 @@ #include "ir_visitor.h" #include "ir_optimization.h" #include "glsl_types.h" -#include "linux_list.h" struct assignment_entry { - struct list link; + exec_node link; int assignment_count; ir_variable *var; ir_constant *constval; @@ -50,29 +49,24 @@ struct assignment_entry { class ir_constant_variable_visitor : public ir_hierarchical_visitor { public: - ir_constant_variable_visitor() - { - list_init(&list); - } - virtual ir_visitor_status visit_enter(ir_assignment *); - struct list list; + exec_list list; }; static struct assignment_entry * -get_assignment_entry(ir_variable *var, struct list *list) +get_assignment_entry(ir_variable *var, exec_list *list) { struct assignment_entry *entry; - list_foreach_entry(entry, struct assignment_entry, list, link) { + foreach_list_typed(struct assignment_entry, entry, link, list) { if (entry->var == var) return entry; } entry = (struct assignment_entry *)calloc(1, sizeof(*entry)); entry->var = var; - list_add(&entry->link, list); + list->push_head(&entry->link); return entry; } @@ -127,16 +121,16 @@ do_constant_variable(exec_list *instructions) v.run(instructions); - while (!list_is_empty(&v.list)) { + while (!v.list.is_empty()) { struct assignment_entry *entry; - entry = list_entry(v.list.next, struct assignment_entry, link); + entry = exec_node_data(struct assignment_entry, v.list.head, link); if (entry->assignment_count == 1 && entry->constval) { entry->var->constant_value = entry->constval; progress = true; } - list_del(&entry->link); + entry->link.remove(); free(entry); } diff --git a/linux_list.h b/linux_list.h deleted file mode 100644 index 88ec6fb62a..0000000000 --- a/linux_list.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright © 2009 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - * - * Authors: - * Chris Wilson <chris@chris-wilson.co.uk> - * - */ - -/* classic doubly-link circular list */ -struct list { - struct list *next, *prev; -}; - -static void -list_init(struct list *list) -{ - list->next = list->prev = list; -} - -static inline void -__list_add(struct list *entry, - struct list *prev, - struct list *next) -{ - next->prev = entry; - entry->next = next; - entry->prev = prev; - prev->next = entry; -} - -static inline void -list_add(struct list *entry, struct list *head) -{ - __list_add(entry, head, head->next); -} - -static inline void -__list_del(struct list *prev, struct list *next) -{ - next->prev = prev; - prev->next = next; -} - -static inline void -list_del(struct list *entry) -{ - __list_del(entry->prev, entry->next); - list_init(entry); -} - -static inline bool -list_is_empty(struct list *head) -{ - return head->next == head; -} - -#ifndef container_of -#define container_of(ptr, type, member) \ - (type *)((char *)(ptr) - (char *) &((type *)0)->member) -#endif - -#define list_entry(ptr, type, member) \ - container_of(ptr, type, member) - -#define list_first_entry(ptr, type, member) \ - list_entry((ptr)->next, type, member) - -#define list_foreach(pos, head) \ - for (pos = (head)->next; pos != (head); pos = pos->next) - -#define list_foreach_entry(pos, type, head, member) \ - for (pos = list_entry((head)->next, type, member);\ - &pos->member != (head); \ - pos = list_entry(pos->member.next, type, member)) |