--- 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");