glsl: remove delegating constructors to allow build with C++98

Delegating constructors is a C++11 feature, so this was breaking when
compiling with C++98. Change the copy_propagation_state() calls that
used the convenience constructor to use a static member function
instead.

Since copy_propagation_state is expected to be heap allocated, this
change is a good fit.

Tested-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107305
This commit is contained in:
Caio Marcelo de Oliveira Filho 2018-07-20 13:21:33 -07:00 committed by Matt Turner
parent 6b73a97f84
commit 52d831ff83
1 changed files with 8 additions and 6 deletions

View File

@ -68,9 +68,11 @@ class copy_propagation_state {
public:
DECLARE_RZALLOC_CXX_OPERATORS(copy_propagation_state);
copy_propagation_state()
: copy_propagation_state(NULL)
{}
static
copy_propagation_state* create(void *mem_ctx)
{
return new (mem_ctx) copy_propagation_state(NULL);
}
copy_propagation_state* clone()
{
@ -238,7 +240,7 @@ public:
this->lin_ctx = linear_alloc_parent(this->mem_ctx, 0);
this->shader_mem_ctx = NULL;
this->kills = new(mem_ctx) exec_list;
this->state = new(mem_ctx) copy_propagation_state();
this->state = copy_propagation_state::create(mem_ctx);
}
~ir_copy_propagation_elements_visitor()
{
@ -294,7 +296,7 @@ ir_copy_propagation_elements_visitor::visit_enter(ir_function_signature *ir)
this->killed_all = false;
copy_propagation_state *orig_state = state;
this->state = new(mem_ctx) copy_propagation_state();
this->state = copy_propagation_state::create(mem_ctx);
visit_list_elements(this, &ir->body);
@ -531,7 +533,7 @@ ir_copy_propagation_elements_visitor::handle_loop(ir_loop *ir, bool keep_acp)
/* Populate the initial acp with a copy of the original */
this->state = orig_state->clone();
} else {
this->state = new(mem_ctx) copy_propagation_state();
this->state = copy_propagation_state::create(mem_ctx);
}
visit_list_elements(this, &ir->body_instructions);