Fix multiple function calls in expressions.

This commit is contained in:
Bill Currie 2013-09-27 23:07:38 +09:00
parent 70d18ecfa1
commit db460155e9
3 changed files with 8 additions and 1 deletions

View file

@ -516,6 +516,8 @@ int is_math_op (int op);
*/
int is_logic (int op);
int has_function_call (expr_t *e);
int is_string_val (expr_t *e);
int is_float_val (expr_t *e);
int is_vector_val (expr_t *e);

View file

@ -1488,7 +1488,7 @@ is_logic (int op)
return 0;
}
static int
int
has_function_call (expr_t *e)
{
switch (e->type) {

View file

@ -726,6 +726,11 @@ binary_expr (int op, expr_t *e1, expr_t *e2)
expr_type_t *expr_type;
convert_name (e1);
if (e1->type == ex_block && e1->e.block.is_call
&& has_function_call (e2) && e1->e.block.result) {
e = new_temp_def_expr (get_type (e1->e.block.result));
e1 = assign_expr (e, e1);
}
if (e1->type == ex_error)
return e1;