diff -r 8d876ad522f4 -r c6486bd97392 stage4/generate_c/generate_c_st.cc --- a/stage4/generate_c/generate_c_st.cc Fri Jul 27 15:40:44 2012 +0200 +++ b/stage4/generate_c/generate_c_st.cc Fri Jul 27 15:43:32 2012 +0200 @@ -312,16 +312,24 @@ // SYM_REF2(structured_variable_c, record_variable, field_selector) void *visit(structured_variable_c *symbol) { TRACE("structured_variable_c"); + unsigned int vartype = search_varfb_instance_type->get_vartype(symbol->record_variable); + bool type_is_complex = search_varfb_instance_type->type_is_complex(); switch (wanted_variablegeneration) { case complextype_base_vg: case complextype_base_assignment_vg: symbol->record_variable->accept(*this); + if (!type_is_complex) { + s4o.print("."); + symbol->field_selector->accept(*this); + } break; case complextype_suffix_vg: case assignment_vg: symbol->record_variable->accept(*this); - s4o.print("."); - symbol->field_selector->accept(*this); + if (type_is_complex) { + s4o.print("."); + symbol->field_selector->accept(*this); + } break; default: if (this->is_variable_prefix_null()) {