d3dcompiler: Append the instruction to its list in new_return().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com> Signed-off-by: Matteo Bruni <mbruni@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
548f763f99
commit
95ef2fa578
|
@ -562,7 +562,8 @@ static struct hlsl_ir_assignment *make_simple_assignment(struct hlsl_ir_var *lhs
|
||||||
return new_assignment(lhs, NULL, rhs, 0, rhs->loc);
|
return new_assignment(lhs, NULL, rhs, 0, rhs->loc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct hlsl_ir_jump *new_return(struct hlsl_ir_node *return_value, struct source_location loc)
|
static struct hlsl_ir_jump *add_return(struct list *instrs,
|
||||||
|
struct hlsl_ir_node *return_value, struct source_location loc)
|
||||||
{
|
{
|
||||||
struct hlsl_type *return_type = hlsl_ctx.cur_function->return_type;
|
struct hlsl_type *return_type = hlsl_ctx.cur_function->return_type;
|
||||||
struct hlsl_ir_jump *jump;
|
struct hlsl_ir_jump *jump;
|
||||||
|
@ -591,6 +592,7 @@ static struct hlsl_ir_jump *new_return(struct hlsl_ir_node *return_value, struct
|
||||||
}
|
}
|
||||||
init_node(&jump->node, HLSL_IR_JUMP, NULL, loc);
|
init_node(&jump->node, HLSL_IR_JUMP, NULL, loc);
|
||||||
jump->type = HLSL_IR_JUMP_RETURN;
|
jump->type = HLSL_IR_JUMP_RETURN;
|
||||||
|
list_add_tail(instrs, &jump->node.entry);
|
||||||
|
|
||||||
return jump;
|
return jump;
|
||||||
}
|
}
|
||||||
|
@ -2162,24 +2164,22 @@ statement: declaration_statement
|
||||||
| selection_statement
|
| selection_statement
|
||||||
| loop_statement
|
| loop_statement
|
||||||
|
|
||||||
jump_statement: KW_RETURN expr ';'
|
jump_statement:
|
||||||
{
|
|
||||||
struct hlsl_ir_jump *jump;
|
|
||||||
if (!(jump = new_return(node_from_list($2), get_location(&@1))))
|
|
||||||
YYABORT;
|
|
||||||
|
|
||||||
$$ = $2;
|
KW_RETURN expr ';'
|
||||||
list_add_tail($$, &jump->node.entry);
|
{
|
||||||
}
|
if (!add_return($2, node_from_list($2), get_location(&@1)))
|
||||||
| KW_RETURN ';'
|
YYABORT;
|
||||||
{
|
$$ = $2;
|
||||||
struct hlsl_ir_jump *jump;
|
}
|
||||||
if (!(jump = new_return(NULL, get_location(&@1))))
|
| KW_RETURN ';'
|
||||||
YYABORT;
|
{
|
||||||
$$ = d3dcompiler_alloc(sizeof(*$$));
|
if (!($$ = d3dcompiler_alloc(sizeof(*$$))))
|
||||||
list_init($$);
|
YYABORT;
|
||||||
list_add_tail($$, &jump->node.entry);
|
list_init($$);
|
||||||
}
|
if (!add_return($$, NULL, get_location(&@1)))
|
||||||
|
YYABORT;
|
||||||
|
}
|
||||||
|
|
||||||
selection_statement: KW_IF '(' expr ')' if_body
|
selection_statement: KW_IF '(' expr ')' if_body
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue