glsl: Change loop_analysis to not look like a resource leak
Previously the loop_state was allocated in the loop_analysis constructor, but not freed in the (nonexistent) destructor. Moving the allocation of the loop_state makes this code appear less sketchy. Either way, there is no actual leak. The loop_state is freed by the single caller of analyze_loop_variables. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Cc: Dave Airlie <airlied@freedesktop.org> Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57753
This commit is contained in:
parent
04f0d6cc22
commit
82691f1293
|
@ -105,7 +105,7 @@ loop_variable_state::insert(ir_if *if_stmt)
|
||||||
|
|
||||||
class loop_analysis : public ir_hierarchical_visitor {
|
class loop_analysis : public ir_hierarchical_visitor {
|
||||||
public:
|
public:
|
||||||
loop_analysis();
|
loop_analysis(loop_state *loops);
|
||||||
|
|
||||||
virtual ir_visitor_status visit(ir_loop_jump *);
|
virtual ir_visitor_status visit(ir_loop_jump *);
|
||||||
virtual ir_visitor_status visit(ir_dereference_variable *);
|
virtual ir_visitor_status visit(ir_dereference_variable *);
|
||||||
|
@ -129,12 +129,10 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
loop_analysis::loop_analysis()
|
loop_analysis::loop_analysis(loop_state *loops)
|
||||||
|
: loops(loops), if_statement_depth(0), current_assignment(NULL)
|
||||||
{
|
{
|
||||||
this->loops = new loop_state;
|
/* empty */
|
||||||
|
|
||||||
this->if_statement_depth = 0;
|
|
||||||
this->current_assignment = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -521,7 +519,8 @@ is_loop_terminator(ir_if *ir)
|
||||||
loop_state *
|
loop_state *
|
||||||
analyze_loop_variables(exec_list *instructions)
|
analyze_loop_variables(exec_list *instructions)
|
||||||
{
|
{
|
||||||
loop_analysis v;
|
loop_state *loops = new loop_state;
|
||||||
|
loop_analysis v(loops);
|
||||||
|
|
||||||
v.run(instructions);
|
v.run(instructions);
|
||||||
return v.loops;
|
return v.loops;
|
||||||
|
|
|
@ -249,7 +249,7 @@ private:
|
||||||
|
|
||||||
void *mem_ctx;
|
void *mem_ctx;
|
||||||
|
|
||||||
friend class loop_analysis;
|
friend loop_state *analyze_loop_variables(exec_list *instructions);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* LOOP_ANALYSIS_H */
|
#endif /* LOOP_ANALYSIS_H */
|
||||||
|
|
Loading…
Reference in New Issue