diff -r 7dcbd8418771 -r 60b012b7793f stage4/generate_c/generate_c_typedecl.cc --- a/stage4/generate_c/generate_c_typedecl.cc Fri Sep 09 12:03:15 2011 +0200 +++ b/stage4/generate_c/generate_c_typedecl.cc Wed Sep 14 22:58:39 2011 +0200 @@ -70,10 +70,9 @@ arrayderiveddeclaration_bd, arraybasetype_bd, arraybasetypeincl_bd, - arraysubrange_bd, - arraytranslateindex_bd + arraysubrange_bd } basetypedeclaration_t; - + basetypedeclaration_t current_basetypedeclaration; void print_integer(unsigned int integer) { @@ -373,21 +372,6 @@ } s4o_incl.print(")\n"); - if (search_base_type.type_is_subrange(symbol->identifier)) { - s4o.print("#define __CHECK_"); - current_type_name->accept(*this); - s4o.print(" __CHECK_"); - current_basetypedeclaration = arraybasetype_bd; - symbol->array_spec_init->accept(*this); - current_basetypedeclaration = none_bd; - s4o.print("\n"); - } - - current_basetypedeclaration = arraytranslateindex_bd; - symbol->array_spec_init->accept(*this); - current_basetypedeclaration = none_bd; - s4o.print("\n"); - current_type_name = NULL; current_typedefinition = none_td; @@ -404,18 +388,6 @@ case arrayderiveddeclaration_bd: array_is_derived = dynamic_cast(symbol->array_specification) != NULL; break; - case arraytranslateindex_bd: - if (!array_is_derived) - symbol->array_specification->accept(*this); - s4o.print("#define __"); - current_type_name->accept(*this); - s4o.print("_TRANSIDX(row, index) __"); - if (array_is_derived) - symbol->array_specification->accept(*this); - else - current_type_name->accept(*this); - s4o.print("_TRANSIDX##row(index)"); - break; default: if (array_is_derived) symbol->array_specification->accept(*basedecl); @@ -440,7 +412,6 @@ symbol->non_generic_type_name->accept(*basedecl); break; case arraysubrange_bd: - case arraytranslateindex_bd: symbol->array_subrange_list->accept(*this); break; default: @@ -452,19 +423,7 @@ /* helper symbol for array_specification */ /* array_subrange_list ',' subrange */ void *visit(array_subrange_list_c *symbol) { - if (current_basetypedeclaration == arraytranslateindex_bd) { - for (int i = 0; i < symbol->n; i++) { - s4o.print("#define __"); - current_type_name->accept(*this); - s4o.print("_TRANSIDX"); - print_integer(i); - s4o.print("(index) (index) - "); - symbol->elements[i]->accept(*this); - s4o.print("\n"); - } - } - else - print_list(symbol); + print_list(symbol); return NULL; } @@ -491,6 +450,15 @@ s4o_incl.print(","); symbol->simple_spec_init->accept(*this); s4o_incl.print(")\n"); + + if (search_base_type.type_is_subrange(symbol->simple_type_name)) { + s4o.print("#define __CHECK_"); + current_type_name->accept(*this); + s4o.print(" __CHECK_"); + symbol->simple_spec_init->accept(*this); + s4o.print("\n"); + } + return NULL; }