diff -r f1f3facc59e7 -r 55b074ea7255 stage4/generate_c/generate_c_inlinefcall.cc --- a/stage4/generate_c/generate_c_inlinefcall.cc Thu Feb 02 00:34:04 2012 +0100 +++ b/stage4/generate_c/generate_c_inlinefcall.cc Fri Feb 03 00:09:52 2012 +0100 @@ -169,7 +169,7 @@ if (f_decl != NULL) { /* function being called is overloaded! */ s4o.print("__"); - print_function_parameter_data_types_c overloaded_func_suf(&s4o); + print_function_parameter_data_types_c overloaded_func_suf(&s4o, function_type_prefix); f_decl->accept(overloaded_func_suf); } if (function_type_suffix) { @@ -222,7 +222,7 @@ if (f_decl != NULL) { /* function being called is overloaded! */ s4o.print("__"); - print_function_parameter_data_types_c overloaded_func_suf(&s4o); + print_function_parameter_data_types_c overloaded_func_suf(&s4o, function_type_prefix); f_decl->accept(overloaded_func_suf); } @@ -492,7 +492,10 @@ /* determine the base data type returned by the function being called... */ search_base_type_c search_base_type; - function_type_prefix = (symbol_c *)f_decl->type_name->accept(search_base_type); + if (symbol->overloaded_return_type == NULL) + function_type_prefix = (symbol_c *)f_decl->type_name->accept(search_base_type); + else + function_type_prefix = symbol->overloaded_return_type; function_name = symbol->function_name; @@ -675,7 +678,10 @@ /* determine the base data type returned by the function being called... */ search_base_type_c search_base_type; - function_type_prefix = (symbol_c *)f_decl->type_name->accept(search_base_type); + if (symbol->overloaded_return_type == NULL) + function_type_prefix = (symbol_c *)f_decl->type_name->accept(search_base_type); + else + function_type_prefix = symbol->overloaded_return_type; if (NULL == function_type_prefix) ERROR; function_name = symbol->function_name; @@ -1044,7 +1050,10 @@ /* determine the base data type returned by the function being called... */ search_base_type_c search_base_type; - function_type_prefix = (symbol_c *)f_decl->type_name->accept(search_base_type); + if (symbol->overloaded_return_type == NULL) + function_type_prefix = (symbol_c *)f_decl->type_name->accept(search_base_type); + else + function_type_prefix = symbol->overloaded_return_type; if (NULL == function_type_prefix) ERROR; /* loop through each function parameter, find the value we should pass