glsl: use the linear allocator in opt_copy_propagation
authorMarek Olšák <marek.olsak@amd.com>
Fri, 7 Oct 2016 18:57:04 +0000 (20:57 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 31 Oct 2016 10:53:38 +0000 (11:53 +0100)
Tested-by: Edmondo Tommasina <edmondo.tommasina@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/compiler/glsl/opt_copy_propagation.cpp

index 02628cd7e52858f78dd989d95d1c52dad08e33b2..247c4988ed3d03502c926dc4390274985b6ed965 100644 (file)
@@ -44,6 +44,9 @@ namespace {
 class kill_entry : public exec_node
 {
 public:
+   /* override operator new from exec_node */
+   DECLARE_LINEAR_ZALLOC_CXX_OPERATORS(kill_entry)
+
    kill_entry(ir_variable *var)
    {
       assert(var);
@@ -59,6 +62,7 @@ public:
    {
       progress = false;
       mem_ctx = ralloc_context(0);
+      lin_ctx = linear_alloc_parent(mem_ctx, 0);
       acp = _mesa_hash_table_create(mem_ctx, _mesa_hash_pointer,
                                     _mesa_key_pointer_equal);
       this->kills = new(mem_ctx) exec_list;
@@ -95,6 +99,7 @@ public:
    bool killed_all;
 
    void *mem_ctx;
+   void *lin_ctx;
 };
 
 } /* unnamed namespace */
@@ -313,7 +318,7 @@ ir_copy_propagation_visitor::kill(ir_variable *var)
 
    /* Add the LHS variable to the list of killed variables in this block.
     */
-   this->kills->push_tail(new(this->kills) kill_entry(var));
+   this->kills->push_tail(new(this->lin_ctx) kill_entry(var));
 }
 
 /**