diff -r 0ee0055a8ffe -r 72ae82e65dbc stage4/generate_c/generate_c.cc --- a/stage4/generate_c/generate_c.cc Thu Sep 25 10:25:30 2008 +0200 +++ b/stage4/generate_c/generate_c.cc Thu Sep 25 10:26:10 2008 +0200 @@ -569,8 +569,8 @@ vardecl = new generate_c_vardecl_c(&s4o, generate_c_vardecl_c::finterface_vf, generate_c_vardecl_c::input_vt | - generate_c_vardecl_c::output_vt | - generate_c_vardecl_c::inoutput_vt); + generate_c_vardecl_c::output_vt | + generate_c_vardecl_c::inoutput_vt); vardecl->print(symbol->var_declarations_list); delete vardecl; s4o.indent_left(); @@ -580,6 +580,13 @@ /* (B) Function local variable declaration */ /* (B.1) Variables declared in ST source code */ s4o.indent_right(); + vardecl = new generate_c_vardecl_c(&s4o, + generate_c_vardecl_c::foutputdecl_vf, + generate_c_vardecl_c::output_vt | + generate_c_vardecl_c::inoutput_vt); + vardecl->print(symbol->var_declarations_list); + delete vardecl; + vardecl = new generate_c_vardecl_c(&s4o, generate_c_vardecl_c::localinit_vf, generate_c_vardecl_c::private_vt); vardecl->print(symbol->var_declarations_list); delete vardecl; @@ -602,6 +609,14 @@ /* (C) Function body */ generate_c_SFC_IL_ST_c generate_c_code(&s4o, symbol); symbol->function_body->accept(generate_c_code); + + vardecl = new generate_c_vardecl_c(&s4o, + generate_c_vardecl_c::foutputassign_vf, + generate_c_vardecl_c::output_vt | + generate_c_vardecl_c::inoutput_vt); + vardecl->print(symbol->var_declarations_list); + delete vardecl; + s4o.print(s4o.indent_spaces + "return "); symbol->derived_function_name->accept(*this); s4o.print(";\n");