mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-03 01:18:06 +02:00
ir_function_inlining: Allow inlining of loops and conditionals.
The new cloning code handles them.
This commit is contained in:
parent
4b6fd39c89
commit
8006576b36
1 changed files with 1 additions and 25 deletions
|
|
@ -39,28 +39,14 @@ class ir_function_can_inline_visitor : public ir_hierarchical_visitor {
|
|||
public:
|
||||
ir_function_can_inline_visitor()
|
||||
{
|
||||
this->can_inline = true;
|
||||
this->num_returns = 0;
|
||||
}
|
||||
|
||||
virtual ir_visitor_status visit_enter(ir_loop *);
|
||||
virtual ir_visitor_status visit_enter(ir_return *);
|
||||
virtual ir_visitor_status visit_enter(ir_if *);
|
||||
|
||||
bool can_inline;
|
||||
int num_returns;
|
||||
};
|
||||
|
||||
ir_visitor_status
|
||||
ir_function_can_inline_visitor::visit_enter(ir_loop *ir)
|
||||
{
|
||||
/* FINISHME: Implement loop cloning in ir_function_inlining.cpp */
|
||||
(void) ir;
|
||||
this->can_inline = false;
|
||||
return visit_stop;
|
||||
}
|
||||
|
||||
|
||||
ir_visitor_status
|
||||
ir_function_can_inline_visitor::visit_enter(ir_return *ir)
|
||||
{
|
||||
|
|
@ -69,16 +55,6 @@ ir_function_can_inline_visitor::visit_enter(ir_return *ir)
|
|||
return visit_continue;
|
||||
}
|
||||
|
||||
|
||||
ir_visitor_status
|
||||
ir_function_can_inline_visitor::visit_enter(ir_if *ir)
|
||||
{
|
||||
/* FINISHME: Implement if cloning in ir_function_inlining.cpp. */
|
||||
(void) ir;
|
||||
this->can_inline = false;
|
||||
return visit_stop;
|
||||
}
|
||||
|
||||
bool
|
||||
can_inline(ir_call *call)
|
||||
{
|
||||
|
|
@ -91,5 +67,5 @@ can_inline(ir_call *call)
|
|||
if (last && !last->as_return())
|
||||
v.num_returns++;
|
||||
|
||||
return v.can_inline && v.num_returns == 1;
|
||||
return v.num_returns == 1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue