glsl: use the linear allocator in opt_dead_code_local
Tested-by: Edmondo Tommasina <edmondo.tommasina@gmail.com> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
23e373eb4f
commit
9c19dedff0
|
@ -45,6 +45,9 @@ namespace {
|
|||
class assignment_entry : public exec_node
|
||||
{
|
||||
public:
|
||||
/* override operator new from exec_node */
|
||||
DECLARE_LINEAR_ZALLOC_CXX_OPERATORS(assignment_entry)
|
||||
|
||||
assignment_entry(ir_variable *lhs, ir_assignment *ir)
|
||||
{
|
||||
assert(lhs);
|
||||
|
@ -161,7 +164,7 @@ public:
|
|||
* of a variable to a variable.
|
||||
*/
|
||||
static bool
|
||||
process_assignment(void *ctx, ir_assignment *ir, exec_list *assignments)
|
||||
process_assignment(void *lin_ctx, ir_assignment *ir, exec_list *assignments)
|
||||
{
|
||||
ir_variable *var = NULL;
|
||||
bool progress = false;
|
||||
|
@ -271,7 +274,7 @@ process_assignment(void *ctx, ir_assignment *ir, exec_list *assignments)
|
|||
}
|
||||
|
||||
/* Add this instruction to the assignment list available to be removed. */
|
||||
assignment_entry *entry = new(ctx) assignment_entry(var, ir);
|
||||
assignment_entry *entry = new(lin_ctx) assignment_entry(var, ir);
|
||||
assignments->push_tail(entry);
|
||||
|
||||
if (debug) {
|
||||
|
@ -298,6 +301,8 @@ dead_code_local_basic_block(ir_instruction *first,
|
|||
bool progress = false;
|
||||
|
||||
void *ctx = ralloc_context(NULL);
|
||||
void *lin_ctx = linear_alloc_parent(ctx, 0);
|
||||
|
||||
/* Safe looping, since process_assignment */
|
||||
for (ir = first, ir_next = (ir_instruction *)first->next;;
|
||||
ir = ir_next, ir_next = (ir_instruction *)ir->next) {
|
||||
|
@ -309,7 +314,8 @@ dead_code_local_basic_block(ir_instruction *first,
|
|||
}
|
||||
|
||||
if (ir_assign) {
|
||||
progress = process_assignment(ctx, ir_assign, &assignments) || progress;
|
||||
progress = process_assignment(lin_ctx, ir_assign, &assignments) ||
|
||||
progress;
|
||||
} else {
|
||||
kill_for_derefs_visitor kill(&assignments);
|
||||
ir->accept(&kill);
|
||||
|
|
Loading…
Reference in New Issue