Lines Matching refs:automaton
24 1. The finite state automaton based pipeline hazard recognizer and
51 automaton state.
61 6. Union of automaton states are not generated yet. It is planned
67 which describes automaton used for recognition of processor pipeline
81 description internal representation into finite state automaton.
84 o checking correctness of the automaton pipeline description
87 o generating automaton (automata) from the description (major
96 equivalent automaton states (major function is `minimize_DFA').
102 automaton as different tables and functions which works with the
103 automata to inquire automaton state and to change its state. These
182 struct automaton;
199 typedef struct automaton *automaton_t;
266 option `-split' or by constructions automaton if the value is zero
277 result automaton and statistics information (`-v'). */
281 generated so far for automaton being processed (`-progress'). */
326 /* NULL if the automaton name is absent. */
342 automaton which was given in description. If the field value is
343 NULL then automaton in the unit declaration was absent. */
371 /* The following fields are defined by automaton generator. */
373 /* The following field value is number of the automaton to which
405 /* The following fields are defined by automaton generator. */
407 /* The following field value is nonzero if the automaton is used in
413 /* The following field value is the corresponding automaton. This
414 field is not NULL only if the automaton is present in unit
476 /* The following fields are defined by automaton generator. */
489 automaton. */
492 an automaton minimization). */
511 struct automaton_decl automaton;
620 /* The following fields are defined by automaton generator. */
622 /* The following field value is the first automaton. */
627 two special insns which are added by the automaton generator. */
632 /* The following nodes are created in automaton checker. */
655 /* The following nodes are created in automaton generator. */
667 /* The following node type describes state automaton. The state may
671 deterministic reservation of automaton insn. */
683 /* The following field value is automaton to which given state
685 automaton_t automaton;
707 state automaton. */
710 automaton. The field value is state corresponding to equivalence
726 /* Automaton arc. */
747 of automaton insn or which is part of NDFA. */
760 /* The following node type describes insn of automaton. They are
768 automaton. */
770 /* The following field is states which characterize automaton unit
775 automaton unit reservations of the instruction. The value can be
778 /* The following field refers the next automaton insn with
781 /* The following field is flag of the first automaton insn with the
783 insn is present in the automaton. This significantly decreases
788 the automaton marked by the ainsn. */
801 automaton marked by the insn into another state. In other
802 words, the insn can change the state of the automaton. */
806 /* The following describes an automaton for PHR. */
807 struct automaton
810 given automaton. */
815 /* The following field value is the corresponding automaton
819 /* The following field value is the next automaton. */
831 given automaton. */
834 building automaton. */
847 for insns of the automaton. */
853 /* Total number of locked states in this automaton. */
860 /* The automaton itself. */
861 automaton_t automaton;
869 /* Automaton to which given table belongs. */
870 automaton_t automaton;
907 &(_decl)->decl.automaton; }))
1081 #define DECL_AUTOMATON(d) (&(d)->decl.automaton)
1491 This gives information about a finite state automaton used for
1519 automaton used
1767 /* This page contains abstract data `table of automaton declarations'.
1768 Elements of the table is nodes representing automaton declarations.
1769 Key of the table elements is name of given automaton. Remember
1770 that automaton names have own space. */
1772 /* The function evaluates hash value of an automaton declaration. The
1774 hash value (0..UINT_MAX) of given automaton declaration. */
1785 /* The function tests automaton declarations on equality of their
1804 /* The automaton declaration table itself is represented by the
1808 /* The function inserts automaton declaration into the table. The
1809 function does nothing if an automaton declaration with the same key
1810 exists already in the table. The function returns automaton
1811 declaration node in the table with the same key as given automaton
1824 /* The following variable value is node representing automaton
1825 declaration. The node used for searching automaton declaration
1829 /* The function searches for automaton declaration in the table with
1830 the same key as node representing name of the automaton
1844 /* The function creates empty automaton declaration table and node
1845 representing automaton declaration and used for searching automaton
1847 before any work with the automaton declaration table. */
1856 /* The function deletes the automaton declaration table. Only call of
2568 error ("repeated declaration of automaton `%s'",
2571 warning ("repeated declaration of automaton `%s'",
2611 error ("automaton `%s' is not declared",
2621 error ("define_unit `%s' without automaton when one defined",
2735 /* The following function checks that declared automaton is used. If
2736 the automaton is not used, the function fixes error/warning. The
2751 error ("automaton `%s' is not used", DECL_AUTOMATON (decl)->name);
2753 warning ("automaton `%s' is not used",
3191 /* The following variable value is number of automaton which are
3194 number of automata is defined by the constructions `%automaton'.
3197 automaton is created. */
3203 o NDFA -> DFA (simply the same automaton if !ndfa_flag)
3753 /* The following function returns free node state for AUTOMATON. It
3757 get_free_state (int with_reservs, automaton_t automaton)
3761 gcc_assert (max_cycles_num > 0 && automaton);
3768 result->automaton = automaton;
3780 result->automaton = automaton;
3807 states. One more key is order number of state automaton. */
3828 + ((const_state_t) state)->automaton->automaton_order_num);
3839 if (((const_state_t) state_1)->automaton != ((const_state_t) state_2)->automaton)
3888 gcc_assert (state1->automaton == state2->automaton);
3893 representing the automaton state which is union of reservations of
3901 gcc_assert (state1->automaton == state2->automaton);
3902 result = get_free_state (1, state1->automaton);
3915 represent the automaton state is obtained from deterministic STATE
3923 result = get_free_state (1, state->automaton);
4127 result->automaton = NULL;
4171 + curr_automata_list_el->automaton->automaton_order_num);
4187 if (automata_list_el_1->automaton != automata_list_el_2->automaton)
4209 /* The following function adds AUTOMATON to the current list. */
4211 automata_list_add (automaton_t automaton)
4216 el->automaton = automaton;
5362 IR) describing all possible insns reservations of an automaton. */
5372 REGEXP for forming alt_states of AUTOMATON. It is believed that
5375 process_seq_for_forming_states (regexp_t regexp, automaton_t automaton,
5387 == automaton->automaton_order_num)
5396 (REGEXP_SEQUENCE (regexp)->regexps [i], automaton, curr_cycle) + 1;
5408 automaton, curr_cycle);
5423 /* This recursive function finishes forming ALT_STATE of AUTOMATON and
5427 automaton_t automaton ATTRIBUTE_UNUSED)
5441 /* The following variable value is current automaton insn for whose
5446 forming alt_states of AUTOMATON. List of the alt states should
5449 process_alts_for_forming_states (regexp_t regexp, automaton_t automaton,
5457 state_being_formed = get_free_state (1, automaton);
5464 (void) process_seq_for_forming_states (regexp, automaton, 0);
5465 finish_forming_alt_state (alt_state_being_formed, automaton);
5475 automaton, 1);
5479 /* Create nodes alt_state for all AUTOMATON insns. */
5481 create_alt_states (automaton_t automaton)
5485 for (curr_ainsn = automaton->ainsn_list;
5494 automaton, 0);
5507 /* The function forms list of ainsns of AUTOMATON with the same
5511 form_ainsn_with_same_reservs (automaton_t automaton)
5517 for (curr_ainsn = automaton->ainsn_list;
5547 /* Forming unit reservations which can affect creating the automaton
5550 the minimization without such optimization, but the automaton
5553 automaton. */
5555 form_reservs_matter (automaton_t automaton)
5563 == automaton->corresponding_automaton_decl
5576 /* The following function creates all states of nondeterministic AUTOMATON. */
5578 make_automaton (automaton_t automaton)
5588 reserv_sets_t reservs_matter = form_reservs_matter (automaton);
5591 start_state = insert_state (get_free_state (1, automaton));
5592 automaton->start_state = start_state;
5599 for (ainsn = automaton->ainsn_list;
5643 add_arc (state, state2, automaton->advance_ainsn);
5698 state = get_free_state (0, arcs_marked_by_insn->to_state->automaton);
5778 /* The function transforms nondeterministic AUTOMATON into
5782 NDFA_to_DFA (automaton_t automaton)
5792 start_state = automaton->start_state;
5825 add_arc (state, state2, automaton->collapse_ainsn);
5828 add_arc (state, state, automaton->collapse_ainsn);
5854 /* This recursive function passes all states of AUTOMATON and applies
5857 pass_states (automaton_t automaton, void (*applied_func) (state_t state))
5860 pass_state_graph (automaton
6115 /* The function finds equivalent states of AUTOMATON. */
6117 evaluate_equiv_classes (automaton_t automaton, vec<state_t> *equiv_classes)
6126 pass_states (automaton, add_achieved_state);
6127 pass_states (automaton, cache_presence);
6161 /* The function merges equivalent states of AUTOMATON. */
6163 merge_states (automaton_t automaton, const vec<state_t> &equiv_classes)
6183 new_state = get_free_state (0, automaton);
6236 if (automaton->start_state == curr_state)
6237 automaton->start_state = curr_state->equiv_class_state;
6274 AUTOMATON. */
6276 minimize_DFA (automaton_t automaton)
6280 evaluate_equiv_classes (automaton, &equiv_classes);
6281 merge_states (automaton, equiv_classes);
6282 pass_states (automaton, set_new_cycle_flags);
6286 automaton. */
6291 and arcs of an automaton. */
6302 /* The function counts states and arcs of AUTOMATON. */
6304 count_states_and_arcs (automaton_t automaton, int *states_num,
6309 pass_states (automaton, incr_states_and_arcs_nums);
6314 /* The function builds one DFA AUTOMATON for fast pipeline hazards
6318 build_automaton (automaton_t automaton)
6326 if (automaton->corresponding_automaton_decl == NULL)
6327 fprintf (stderr, "Create anonymous automaton");
6329 fprintf (stderr, "Create automaton `%s'",
6330 automaton->corresponding_automaton_decl->name);
6333 make_automaton (automaton);
6337 count_states_and_arcs (automaton, &states_num, &arcs_num);
6338 automaton->NDFA_states_num = states_num;
6339 automaton->NDFA_arcs_num = arcs_num;
6343 if (automaton->corresponding_automaton_decl == NULL)
6347 automaton->corresponding_automaton_decl->name);
6350 NDFA_to_DFA (automaton);
6354 count_states_and_arcs (automaton, &states_num, &arcs_num);
6355 automaton->DFA_states_num = states_num;
6356 automaton->DFA_arcs_num = arcs_num;
6362 if (automaton->corresponding_automaton_decl == NULL)
6366 automaton->corresponding_automaton_decl->name);
6368 minimize_DFA (automaton);
6372 count_states_and_arcs (automaton, &states_num, &arcs_num);
6373 automaton->minimal_DFA_states_num = states_num;
6374 automaton->minimal_DFA_arcs_num = arcs_num;
6381 /* The page contains code for enumeration of all states of an automaton. */
6383 /* Variable used for enumeration of all states of an automaton. Its
6384 value is current number of automaton states. */
6396 /* The function enumerates all states of AUTOMATON. */
6398 enumerate_states (automaton_t automaton)
6401 pass_states (automaton, set_order_state_num);
6402 automaton->achieved_states_num = curr_state_order_num;
6408 /* The page contains code for finding equivalent automaton insns
6494 /* The function searches for equivalent ainsns of AUTOMATON. */
6496 set_insn_equiv_classes (automaton_t automaton)
6507 for (ainsn = automaton->ainsn_list; ainsn != NULL; ainsn = ainsn->next_ainsn)
6512 pass_states (automaton, process_state_for_insn_equiv_partition);
6514 for (ainsn = automaton->ainsn_list; ainsn != NULL; ainsn = ainsn->next_ainsn)
6518 for (ainsn = automaton->ainsn_list; ainsn != NULL; ainsn = ainsn->next_ainsn)
6537 automaton->insn_equiv_classes_num = equiv_classes_num;
6548 estimating an automaton bound. The value should be less DBL_MAX on
6649 /* The functions creates automaton insns for each automata. Automaton
6650 insn is simply insn for given automaton which makes reservation
6651 only of units of the automaton. */
6653 create_ainsns (automaton_t automaton)
6677 automaton->advance_ainsn = curr_ainsn;
6679 automaton->collapse_ainsn = curr_ainsn;
6683 automaton->ainsn_list = first_ainsn;
6702 /* Distribute to the first automaton. */
6730 curr_automaton = XCREATENODE (struct automaton);
6751 curr_automaton = XCREATENODE (struct automaton);
6768 curr_automaton = XCREATENODE (struct automaton);
6791 fprintf (stderr, "Prepare anonymous automaton creation ... ");
6793 fprintf (stderr, "Prepare automaton `%s' creation...",
6982 output_chip_member_name (FILE *f, automaton_t automaton)
6984 if (automaton->corresponding_automaton_decl == NULL)
6985 fprintf (f, "automaton_state_%d", automaton->automaton_order_num);
6988 automaton->corresponding_automaton_decl->name);
6994 output_temp_chip_member_name (FILE *f, automaton_t automaton)
6997 output_chip_member_name (f, automaton);
7006 /* Output name of translate vector for given automaton. */
7008 output_translate_vect_name (FILE *f, automaton_t automaton)
7010 if (automaton->corresponding_automaton_decl == NULL)
7011 fprintf (f, "translate_%d", automaton->automaton_order_num);
7013 fprintf (f, "%s_translate", automaton->corresponding_automaton_decl->name);
7018 output_trans_full_vect_name (FILE *f, automaton_t automaton)
7020 if (automaton->corresponding_automaton_decl == NULL)
7021 fprintf (f, "transitions_%d", automaton->automaton_order_num);
7024 automaton->corresponding_automaton_decl->name);
7028 automaton. */
7030 output_trans_comb_vect_name (FILE *f, automaton_t automaton)
7032 if (automaton->corresponding_automaton_decl == NULL)
7033 fprintf (f, "transitions_%d", automaton->automaton_order_num);
7036 automaton->corresponding_automaton_decl->name);
7040 automaton. */
7042 output_trans_check_vect_name (FILE *f, automaton_t automaton)
7044 if (automaton->corresponding_automaton_decl == NULL)
7045 fprintf (f, "check_%d", automaton->automaton_order_num);
7047 fprintf (f, "%s_check", automaton->corresponding_automaton_decl->name);
7051 automaton. */
7053 output_trans_base_vect_name (FILE *f, automaton_t automaton)
7055 if (automaton->corresponding_automaton_decl == NULL)
7056 fprintf (f, "base_%d", automaton->automaton_order_num);
7058 fprintf (f, "%s_base", automaton->corresponding_automaton_decl->name);
7063 output_min_issue_delay_vect_name (FILE *f, automaton_t automaton)
7065 if (automaton->corresponding_automaton_decl == NULL)
7066 fprintf (f, "min_issue_delay_%d", automaton->automaton_order_num);
7069 automaton->corresponding_automaton_decl->name);
7072 /* Output name of deadlock vector for given automaton. */
7074 output_dead_lock_vect_name (FILE *f, automaton_t automaton)
7076 if (automaton->corresponding_automaton_decl == NULL)
7077 fprintf (f, "dead_lock_%d", automaton->automaton_order_num);
7079 fprintf (f, "%s_dead_lock", automaton->corresponding_automaton_decl->name);
7082 /* Output name of reserved units table for AUTOMATON into file F. */
7084 output_reserved_units_table_name (FILE *f, automaton_t automaton)
7086 if (automaton->corresponding_automaton_decl == NULL)
7087 fprintf (f, "reserved_units_%d", automaton->automaton_order_num);
7090 automaton->corresponding_automaton_decl->name);
7185 of AUTOMATON. */
7187 output_state_member_type (FILE *f, automaton_t automaton)
7189 output_range_type (f, 0, automaton->achieved_states_num);
7197 automaton_t automaton;
7200 for (automaton = description->first_automaton;
7201 automaton != NULL;
7202 automaton = automaton->next_automaton)
7205 output_state_member_type (output_file, automaton);
7207 output_chip_member_name (output_file, automaton);
7221 output_translate_vect (automaton_t automaton)
7231 translate_vect.quick_push (automaton->insn_equiv_classes_num);
7233 for (ainsn = automaton->ainsn_list; ainsn != NULL; ainsn = ainsn->next_ainsn)
7240 output_range_type (output_file, 0, automaton->insn_equiv_classes_num);
7242 output_translate_vect_name (output_file, automaton);
7263 /* The following function creates new table for AUTOMATON. */
7265 create_state_ainsn_table (automaton_t automaton)
7272 tab->automaton = automaton;
7278 tab->base_vect.safe_grow (automaton->achieved_states_num, true);
7280 full_vect_length = (automaton->insn_equiv_classes_num
7281 * automaton->achieved_states_num);
7309 (*output_full_vect_name_func) (output_file, tab->automaton);
7321 (*output_comb_vect_name_func) (output_file, tab->automaton);
7327 output_range_type (output_file, 0, tab->automaton->achieved_states_num);
7329 (*output_check_vect_name_func) (output_file, tab->automaton);
7338 (*output_base_vect_name_func) (output_file, tab->automaton);
7365 real_vect_length = tab->automaton->insn_equiv_classes_num;
7368 size_t full_base = tab->automaton->insn_equiv_classes_num * vect_num;
7479 no_state_value = tab->automaton->achieved_states_num;
7563 /* This is for forming vector of states of an automaton. */
7575 representing transition table of AUTOMATON. */
7577 output_trans_table (automaton_t automaton)
7583 undefined_vect_el_value = automaton->achieved_states_num;
7584 automaton->trans_table = create_state_ainsn_table (automaton);
7588 pass_states (automaton, add_states_vect_el);
7603 add_vect (automaton->trans_table,
7608 (automaton->trans_table, "state transitions",
7617 AUTOMATON. The table is state x ainsn -> minimal issue delay of
7620 output_min_issue_delay_table (automaton_t automaton)
7633 pass_states (automaton, add_states_vect_el);
7636 * automaton->insn_equiv_classes_num);
7641 automaton->max_min_delay = 0;
7660 * automaton->insn_equiv_classes_num
7669 for (k = 0; k < automaton->insn_equiv_classes_num; k++)
7675 * automaton->insn_equiv_classes_num
7678 * automaton->insn_equiv_classes_num
7699 automaton->max_min_delay = 0;
7701 for (ainsn = automaton->ainsn_list; ainsn; ainsn = ainsn->next_ainsn)
7708 * automaton->insn_equiv_classes_num
7712 if (automaton->max_min_delay < x)
7713 automaton->max_min_delay = x;
7721 output_range_type (output_file, 0, automaton->max_min_delay);
7723 output_min_issue_delay_vect_name (output_file, automaton);
7726 if (automaton->max_min_delay < 2)
7728 else if (automaton->max_min_delay < 4)
7730 else if (automaton->max_min_delay < 16)
7734 automaton->min_issue_delay_table_compression_factor = cfactor;
7759 AUTOMATON. */
7761 output_dead_lock_vect (automaton_t automaton)
7770 automaton->locked_states = 0;
7772 pass_states (automaton, add_states_vect_el);
7785 automaton->locked_states++;
7790 if (automaton->locked_states == 0)
7797 output_dead_lock_vect_name (output_file, automaton);
7806 AUTOMATON. */
7808 output_reserved_units_table (automaton_t automaton)
7821 pass_states (automaton, add_states_vect_el);
7851 output_reserved_units_table_name (output_file, automaton);
7866 automaton_t automaton;
7868 for (automaton = description->first_automaton;
7869 automaton != NULL;
7870 automaton = automaton->next_automaton)
7872 output_translate_vect (automaton);
7873 output_trans_table (automaton);
7874 output_min_issue_delay_table (automaton);
7875 output_dead_lock_vect (automaton);
7876 output_reserved_units_table (automaton);
7965 automaton_t automaton;
7969 automaton = el->automaton;
7971 output_min_issue_delay_vect_name (output_file, automaton);
7973 (automaton->min_issue_delay_table_compression_factor != 1
7975 output_translate_vect_name (output_file, automaton);
7978 output_chip_member_name (output_file, automaton);
7979 fprintf (output_file, " * %d", automaton->insn_equiv_classes_num);
7980 if (automaton->min_issue_delay_table_compression_factor == 1)
7985 automaton->min_issue_delay_table_compression_factor);
7988 output_translate_vect_name (output_file, automaton);
7991 output_chip_member_name (output_file, automaton);
7992 fprintf (output_file, " * %d)", automaton->insn_equiv_classes_num);
7995 automaton->min_issue_delay_table_compression_factor,
7996 8 / automaton->min_issue_delay_table_compression_factor,
7997 (1 << (8 / automaton->min_issue_delay_table_compression_factor))
8048 output_state_member_type (output_file, el->automaton);
8050 output_temp_chip_member_name (output_file, el->automaton);
8054 if (comb_vect_p (el->automaton->trans_table))
8057 output_trans_base_vect_name (output_file, el->automaton);
8059 output_chip_member_name (output_file, el->automaton);
8061 output_translate_vect_name (output_file, el->automaton);
8064 output_trans_check_vect_name (output_file, el->automaton);
8067 output_chip_member_name (output_file, el->automaton);
8075 output_temp_chip_member_name (output_file, el->automaton);
8079 output_chip_member_name (output_file, el->automaton);
8082 output_trans_comb_vect_name (output_file, el->automaton);
8088 output_trans_full_vect_name (output_file, el->automaton);
8090 output_translate_vect_name (output_file, el->automaton);
8093 output_chip_member_name (output_file, el->automaton);
8095 el->automaton->insn_equiv_classes_num);
8097 TEMPORARY_VARIABLE_NAME, el->automaton->achieved_states_num);
8103 output_temp_chip_member_name (output_file, el->automaton);
8107 output_chip_member_name (output_file, el->automaton);
8118 output_chip_member_name (output_file, el->automaton);
8120 output_temp_chip_member_name (output_file, el->automaton);
8267 automaton_t automaton;
8272 for (automaton = description->first_automaton;
8273 automaton != NULL;
8274 automaton = automaton->next_automaton)
8275 if (automaton->locked_states)
8278 output_dead_lock_vect_name (output_file, automaton);
8280 output_chip_member_name (output_file, automaton);
8683 automaton_t automaton;
8693 for (automaton = description->first_automaton;
8694 automaton != NULL;
8695 automaton = automaton->next_automaton)
8698 output_reserved_units_table_name (output_file, automaton);
8700 output_chip_member_name (output_file, automaton);
8917 /* The function outputs name of AUTOMATON. */
8919 output_automaton_name (FILE *f, automaton_t automaton)
8921 if (automaton->corresponding_automaton_decl == NULL)
8922 fprintf (f, "#%d", automaton->automaton_order_num);
8924 fprintf (f, "`%s'", automaton->corresponding_automaton_decl->name);
8931 /* The function outputs units name belonging to AUTOMATON. */
8933 output_automaton_units (automaton_t automaton)
8950 == automaton->automaton_order_num))
9098 automaton_t automaton;
9100 for (automaton = description->first_automaton;
9101 automaton != NULL;
9102 automaton = automaton->next_automaton)
9105 output_automaton_name (output_description_file, automaton);
9107 output_automaton_units (automaton);
9108 pass_states (automaton, output_state);
9123 automaton_t automaton;
9132 for (automaton = description->first_automaton;
9133 automaton != NULL;
9134 automaton = automaton->next_automaton)
9137 output_automaton_name (f, automaton);
9139 automaton->NDFA_states_num, automaton->NDFA_arcs_num);
9141 automaton->DFA_states_num, automaton->DFA_arcs_num);
9142 states_num = automaton->DFA_states_num;
9146 automaton->minimal_DFA_states_num,
9147 automaton->minimal_DFA_arcs_num);
9148 states_num = automaton->minimal_DFA_states_num;
9151 description->insns_num, automaton->insn_equiv_classes_num);
9152 fprintf (f, " %d locked states\n", automaton->locked_states);
9156 (long) automaton->trans_table->comb_vect.length (),
9157 (long) automaton->trans_table->full_vect.length (),
9158 (comb_vect_p (automaton->trans_table)
9162 (long) states_num * automaton->insn_equiv_classes_num,
9163 automaton->min_issue_delay_table_compression_factor);
9165 += automaton->trans_table->comb_vect.length ();
9167 += automaton->trans_table->full_vect.length ();
9169 += states_num * automaton->insn_equiv_classes_num;
9171 += automaton->locked_states;
9204 fprintf (f, "\n all automaton generation: ");
9211 /* The function generates DFA (deterministic finite state automaton)
9336 automaton_t automaton;
9339 for (automaton = description->first_automaton;
9340 automaton != NULL;
9341 automaton = automaton->next_automaton)
9343 for (ainsn = automaton->ainsn_list;
9347 && ainsn != automaton->collapse_ainsn)
9352 if (automaton->corresponding_automaton_decl != NULL)
9355 error ("Automaton `%s': Insn `%s' will never be issued",
9356 automaton->corresponding_automaton_decl->name,
9359 warning ("Automaton `%s': Insn `%s' will never be issued",
9360 automaton->corresponding_automaton_decl->name,
9393 automaton_t automaton;
9402 for (automaton = description->first_automaton;
9403 automaton != NULL;
9404 automaton = automaton->next_automaton)
9407 pass_states (automaton, add_automaton_state);
9433 for (automaton = description->first_automaton;
9434 automaton != NULL;
9435 automaton = automaton->next_automaton)
9436 for (ainsn = automaton->ainsn_list;
9442 automata_list_add (automaton);
9707 "/* There is no automaton, but ISO C forbids empty\n"