ast_function: Actually do type conversion on function arguments.
This commit is contained in:
parent
1fdcdb2dca
commit
17a307d154
|
@ -31,6 +31,9 @@ inline unsigned min(unsigned a, unsigned b)
|
|||
return (a < b) ? a : b;
|
||||
}
|
||||
|
||||
static ir_rvalue *
|
||||
convert_component(ir_rvalue *src, const glsl_type *desired_type);
|
||||
|
||||
static unsigned
|
||||
process_parameters(exec_list *instructions, exec_list *actual_parameters,
|
||||
exec_list *parameters,
|
||||
|
@ -93,13 +96,15 @@ process_call(exec_list *instructions, ir_function *f,
|
|||
}
|
||||
}
|
||||
|
||||
if (formal->type->is_numeric() || formal->type->is_boolean()) {
|
||||
ir_rvalue *converted = convert_component(actual, formal->type);
|
||||
actual->replace_with(converted);
|
||||
}
|
||||
|
||||
actual_iter.next();
|
||||
formal_iter.next();
|
||||
}
|
||||
|
||||
/* FINISHME: The list of actual parameters needs to be modified to
|
||||
* FINISHME: include any necessary conversions.
|
||||
*/
|
||||
return new(ctx) ir_call(sig, actual_parameters);
|
||||
} else {
|
||||
/* FINISHME: Log a better error message here. G++ will show the types
|
||||
|
|
Loading…
Reference in New Issue